DBA Data[Home] [Help]

PACKAGE BODY: APPS.PN_LEASE_PVT

Source


1 PACKAGE BODY PN_LEASE_PVT AS
2 /* $Header: PNLSPVTB.pls 120.6.12020000.4 2013/04/05 14:09:14 ppenumar ship $ */
3 
4    g_pkg_name             CONSTANT VARCHAR2 (30)                       := 'PN_LEASE_PVT';
5    g_table_name           CONSTANT VARCHAR2 (40)                       := 'PN_LEASES_ALL';
6    g_tl_table_name        CONSTANT VARCHAR2 (40)                       := 'NONE';
7    g_resp_appl_id         CONSTANT NUMBER                              := fnd_global.resp_appl_id;
8    g_resp_id              CONSTANT NUMBER                              := fnd_global.resp_id;
9    g_user_id              CONSTANT NUMBER                              := fnd_global.user_id;
10    g_login_id             CONSTANT NUMBER                              := fnd_global.login_id;
11    g_org_id               CONSTANT NUMBER                              := fnd_profile.VALUE ('ORG_ID');
12    -- Variables to hold the lookup_types
13    l_leasetype_lookup_type         fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASE_TYPE';
14    l_leaseclass_lookup_type        fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASE_CLASS';
15    l_status_lookup_type            fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASE_STATUS_TYPE';
16    l_lease_status_lookup_type      fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASESTATUS_TYPE';
17    l_proration_rule_lookup_type    fnd_lookup_types.lookup_type%TYPE   := 'PN_PRORATION_RULE';
18    l_lease_role_lookup_type        fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASE_ROLE_TYPE';
19    l_lease_tenancy_usage_lookup    fnd_lookup_types.lookup_type%TYPE   := 'PN_TENANCY_USAGE_TYPE';
20    l_tenancy_recovery_lookup_type  fnd_lookup_types.lookup_type%TYPE   := 'PN_RECOVERY_TYPE';
21    l_recovery_space_std_lkp_type   fnd_lookup_types.lookup_type%TYPE   := 'PN_RECOVERY_SPACE_STD_TYPE';
22 
23    l_pn_payment_term_type          fnd_lookup_types.lookup_type%TYPE   := 'PN_PAYMENT_TERM_TYPE';
24    l_pn_payment_purpose_type       fnd_lookup_types.lookup_type%TYPE   := 'PN_PAYMENT_PURPOSE_TYPE';
25    l_pn_term_source_module         fnd_lookup_types.lookup_type%TYPE   := 'PN_TERM_SOURCE_MODULE';
26    l_pn_payment_frequency_type     fnd_lookup_types.lookup_type%TYPE   := 'PN_PAYMENT_FREQUENCY_TYPE';
27    l_pn_note_type                  fnd_lookup_types.lookup_type%TYPE   := 'PN_NOTE_TYPE';
28    l_pn_rights_type                fnd_lookup_types.lookup_type%TYPE   := 'PN_RIGHTS_TYPE';
29    l_pn_right_status_type          fnd_lookup_types.lookup_type%TYPE   := 'PN_RIGHT_STATUS_TYPE';
30    l_pn_status                     fnd_lookup_types.lookup_type%TYPE   := 'PN_STATUS';
31    l_pn_landlord_service_type      fnd_lookup_types.lookup_type%TYPE   := 'PN_LANDLORD_SERVICE_TYPE';
32    l_pn_obligation_resp_type       fnd_lookup_types.lookup_type%TYPE   := 'PN_OBLIGATION_RESP_TYPE';
33    l_pn_obligation_fin_resp_type   fnd_lookup_types.lookup_type%TYPE   := 'PN_OBLIGATION_FIN_RESP_PARTY';
34    l_pn_insurance_type             fnd_lookup_types.lookup_type%TYPE   := 'PN_INSURANCE_TYPE';
35    l_pn_units_of_measures          fnd_lookup_types.lookup_type%TYPE   := 'PN_UNITS_OF_MEASURE';
36    l_pn_lease_option_type          fnd_lookup_types.lookup_type%TYPE   := 'PN_LEASE_OPTION_TYPE';
37    l_pn_option_status_type         fnd_lookup_types.lookup_type%TYPE   := 'PN_OPTION_STATUS_TYPE';
38    l_pn_yes_no                     fnd_lookup_types.lookup_type%TYPE   := 'PN_YES_NO';
39    l_pn_milestones_type            fnd_lookup_types.lookup_type%TYPE   := 'PN_MILESTONES_TYPE';
40 
41    l_param_milestone_type          VARCHAR2 (30)                       := 'P_MILESTONE_TYPE';
42    l_param_milestone_user_name     VARCHAR2 (30)                       := 'P_MILESTONE_USER_NAME';
43    l_param_notice_given_type       VARCHAR2 (30)                       := 'P_NOTICE_GIVEN_TYPE';
44    l_param_uom_type                VARCHAR2 (30)                       := 'P_UOM_TYPE';
45    l_param_start_end_options_date  VARCHAR2 (30)                       := 'P_START_END_OPTIONS_DATE';
46    l_param_exercise_dates          VARCHAR2 (30)                       := 'P_EXERCISE_DATES';
47    l_param_status_type             VARCHAR2 (30)                       := 'P_STATUS_TYPE';
48    l_param_option_type             VARCHAR2 (30)                       := 'P_OPTION_TYPE';
49    l_param_start_end_date          VARCHAR2 (30)                       := 'P_INSURANCE_START_END_DATE';
50    l_param_insurance_type          VARCHAR2 (30)                       := 'P_INSURANCE_TYPE';
51    l_param_obligation_date         VARCHAR2 (30)                       := 'P_OBLIGATION_DATE';
52    l_param_service_type            VARCHAR2 (30)                       := 'P_SERVICE_TYPE';
53    l_param_financial_resp_party    VARCHAR2 (30)                       := 'P_FINANCIAL_RESP_PARTY';
54    l_param_company                 VARCHAR2 (30)                       := 'P_COMPANY';
55    l_param_responsibility          VARCHAR2 (30)                       := 'P_RESPONSIBILITY';
56    l_param_obligation_status       VARCHAR2 (30)                       := 'P_OBLIGATION_STATUS';
57    l_param_right_type              VARCHAR2 (30)                       := 'P_RIGHTS_TYPE';
58    l_param_right_status            VARCHAR2 (30)                       := 'P_RIGHT_STATUS';
59    l_param_note_type               VARCHAR2 (30)                       := 'P_NOTE_TYPE';
60    l_param_payment_purpose         VARCHAR2 (30)                       := 'P_PAYMENT_PURPOSE';
61    l_param_payment_type            VARCHAR2 (30)                       := 'P_PAYMENT_TYPE';
62    l_param_payment_frequency       VARCHAR2 (30)                       := 'P_PAYMENT_FREQUENCY';
63    l_param_payment_source          VARCHAR2 (30)                       := 'P_PAYMENT_SOURCE';
64    l_param_payment_dates           VARCHAR2 (30)                       := 'P_PAYMENT_DATES';
65    l_param_vendor_name             VARCHAR2 (30)                       := 'P_VENDOR_NAME';
66    l_param_vendor_site             VARCHAR2 (30)                       := 'P_VENDOR_SITE';
67    l_param_customer_name           VARCHAR2 (30)                       := 'P_CUSTOMER_NAME';
68    l_param_customer_site           VARCHAR2 (30)                       := 'P_CUSTOMER_SITE';
69    l_param_term_template           VARCHAR2 (30)                       := 'P_TERM_TEMPLATE';
70    l_param_location_code           VARCHAR2 (30)                       := 'P_LOCATION_CODE';
71    l_param_lease_type              VARCHAR2 (30)                       := 'P_LEASE_TYPE';
72    l_param_lease_class             VARCHAR2 (30)                       := 'P_LEASE_CLASS';
73    l_param_master_lease            VARCHAR2 (30)                       := 'P_MASTER_LEASE';
74    l_param_lease_customer          VARCHAR2 (30)                       := 'P_LEASE_CUSTOMER';
75    l_param_tenancy_customer        VARCHAR2 (30)                       := 'P_TENANCY_CUSTOMER';
76    l_param_abstracted_by           VARCHAR2 (30)                       := 'P_ABSTRACTED_BY';
77    l_param_status                  VARCHAR2 (30)                       := 'P_APPROVAL_STATUS';
78    l_param_lease_status            VARCHAR2 (30)                       := 'P_LEASE_STATUS';
79    l_param_lease_dates             VARCHAR2 (30)                       := 'P_LEASE_LOCATION';
80    l_param_lease_location          VARCHAR2 (30)                       := 'P_LEASE_LOCATION';
81    l_param_reponsible_user         VARCHAR2 (30)                       := 'P_RESPONSIBLE_USER';
82    l_param_propration_rule         VARCHAR2 (30)                       := 'P_PRORATION_RULE';
83    l_param_lease_template          VARCHAR2 (30)                       := 'P_LEASE_TEMPLATE';
84    l_param_lease_grouping_rule     VARCHAR2 (30)                       := 'P_LEASE_INV_GROUPING_RULE';
85    l_param_lease_cal_start         VARCHAR2 (30)                       := 'P_LEASE_CAL_START_DATE';
86    l_param_exp_rev_acct            VARCHAR2 (30)                       := 'P_EXPENSE_REVENUE_ACCT';
87    l_param_accrual_acct            VARCHAR2 (30)                       := 'P_ACCRUAL_ACCT';
88    l_param_liab_rvbl_acct          VARCHAR2 (30)                       := 'P_LIABILITY_RECVBL_ACCT';
89    l_param_contact_role            VARCHAR2 (30)                       := 'P_CONTACT_ROLE';
90    l_param_company_id              VARCHAR2 (30)                       := 'P_COMPANY_ID';
91    l_param_company_site_id         VARCHAR2 (30)                       := 'P_COMPANY_SITE';
92    l_param_tenancy_location        VARCHAR2 (30)                       := 'P_TENANCY_LOCATION';
93    l_param_tenancy_usage           VARCHAR2 (30)                       := 'P_TENANCY_USAGE';
94    l_param_tenancy_dates           VARCHAR2 (30)                       := 'P_TENANCY_DATES';
95    l_param_desc_flex_name          VARCHAR2 (30)                       := 'P_PN_LEASE_DETAILS';
96    l_param_create_mode_operation   VARCHAR2 (30)                       := 'CREATE_LEASE';
97    l_param_tenancy_recovery_type   VARCHAR2 (30)                       := 'P_TENANCY_RECOVERY_TYPE';
98    l_param_recovery_space_std      VARCHAR2 (30)                       := 'P_TENANCY_RECOVERY_SPACE_STD';
99    l_param_oblig_end_date          VARCHAR2 (30)                       := 'P_TENANCY_OBLIG_END_DATE';
100 
101    g_status                       VARCHAR2(10):=NULL;
102    g_lease_change_id              NUMBER      := NULL;
103    g_lease_context                VARCHAR2(50):=NULL;
104 
105    --g_class_code                   VARCHAR2(100):=NULL;
106 
107    g_debug       VARCHAR2 (255) := NVL (fnd_profile.VALUE ('PN_DEBUG_MODE'), 'N');
108    g_module_name VARCHAR2(2) := 'PN';
109 
110    /*   PROCEDURE pvt_debug (p_log_message              IN       VARCHAR2
111                          , p_log_level                IN       NUMBER
112                           );*/
113  FUNCTION get_miss_char_decode ( p_parameter VARCHAR2)
114  RETURN VARCHAR2;
115 
116  FUNCTION get_miss_num_decode ( p_parameter NUMBER)
117  RETURN NUMBER;
118 
119   FUNCTION get_miss_date_decode ( p_parameter DATE)
120  RETURN DATE;
121 
122  FUNCTION get_attribute_status( p_desc_name VARCHAR2)
123  RETURN NUMBER;
124 
125  PROCEDURE get_attribute_mandatory_status( p_desc_name   IN            VARCHAR2
126                                          ,p_attribute1  IN            VARCHAR2
127                                          ,p_attribute2  IN            VARCHAR2
128                                          ,p_attribute3  IN            VARCHAR2
129                                          ,p_attribute4  IN            VARCHAR2
130                                          ,p_attribute5  IN            VARCHAR2
131                                          ,p_attribute6  IN            VARCHAR2
132                                          ,p_attribute7  IN            VARCHAR2
133                                          ,p_attribute8  IN            VARCHAR2
134                                          ,p_attribute9  IN            VARCHAR2
135                                          ,p_attribute10 IN            VARCHAR2
136                                          ,p_attribute11 IN            VARCHAR2
137                                          ,p_attribute12 IN            VARCHAR2
138                                          ,p_attribute13 IN            VARCHAR2
139                                          ,p_attribute14 IN            VARCHAR2
140                                          ,p_attribute15 IN            VARCHAR2
141                                          ,x_return_status OUT NOCOPY VARCHAR2
142                                        );
143  PROCEDURE insert_tenancies_row (
144       p_lease_tenancies_rec      IN OUT NOCOPY  lease_tenancies_rec
145     , p_lease_rec                IN       lease_rec
146     , p_lease_context            IN       VARCHAR2
147     , x_return_status            OUT NOCOPY VARCHAR2
148     );
149  PROCEDURE validate_contacts_tbl (
150       p_lease_contacts_tbl       IN OUT NOCOPY     lease_contacts_tbl
151     , p_lease_rec                IN          lease_rec
152     , p_validate                 IN          VARCHAR2
153     , p_lease_context            IN          VARCHAR2
154     , p_operation                IN          VARCHAR2
155     , x_return_status            OUT NOCOPY  VARCHAR2)
156     ;
157 PROCEDURE INITIALIZE_RIGHTS_REC( p_right_rec       IN OUT NOCOPY lease_right_rec
158                             , p_lease_context   IN          VARCHAR2
159                             , x_return_status   OUT NOCOPY VARCHAR2
160                             );
161 PROCEDURE INITIALIZE_OBLIGATIONS_REC( p_obligation_rec       IN OUT NOCOPY lease_obligation_rec
162                                     , p_lease_context   IN          VARCHAR2
163                                     , x_return_status   OUT NOCOPY VARCHAR2
164                             );
165 PROCEDURE INITIALIZE_OPTIONS_REC( p_option_rec       IN OUT NOCOPY lease_option_rec
166                                     , p_lease_context   IN          VARCHAR2
167                                     , x_return_status   OUT NOCOPY VARCHAR2
168                             );
169   PROCEDURE INITIALIZE_INSURANCE_REC( p_insurance_rec       IN OUT NOCOPY lease_insurance_rec
170                                , p_lease_context   IN          VARCHAR2
171                                , x_return_status   OUT NOCOPY VARCHAR2
172                                );
173    PROCEDURE INITIALIZE_MILESTONE_REC( p_milestone_rec       IN OUT NOCOPY lease_milestone_rec
174                                , p_lease_context   IN          VARCHAR2
175                                , x_return_status   OUT NOCOPY VARCHAR2
176                                );
177    PROCEDURE INIT_CONTACTS_REC( p_lease_contacts_rec IN OUT  NOCOPY     lease_contacts_rec
178                               , p_lease_context      IN            VARCHAR2
179                               , x_return_status         OUT NOCOPY VARCHAR2
180                               );
181      PROCEDURE INIT_TENANCIES_REC( p_lease_tenancies_rec IN OUT NOCOPY      lease_tenancies_rec
182                                , p_lease_context       IN            VARCHAR2
183                                , x_return_status          OUT NOCOPY VARCHAR2
184                                );
185 PROCEDURE INITIALIZE_NOTES_REC( p_notes_rec       IN OUT NOCOPY pn_lease_note_rec
186                                  , p_lease_context   IN          VARCHAR2
187                                  , x_return_status   OUT NOCOPY VARCHAR2
188                                  );
189 PROCEDURE FINALIZE_RECORD( p_lease_id              NUMBER
190                               ,p_lease_commencement_date DATE
191                               ,p_lease_context           VARCHAR2
192                               ,p_org_id                  NUMBER
193                               ,p_api_name_full           VARCHAR2
194                               ,p_mode                    VARCHAR2
195                               ,x_request_id              OUT NOCOPY NUMBER
196                              );
197 
198  Cursor c_loc(p_tenancy_id Number) IS
199  Select customer_id,
200         location_id,
201         customer_site_use_id,
202         occupancy_date,
203         estimated_occupancy_date,
204         expiration_date,
205         recovery_space_std_code,
206         recovery_type_code,
207         fin_oblig_end_date,
208         allocated_area_pct
209  From pn_tenancies_all
210  Where tenancy_id = p_tenancy_id;
211  c_loc_rec c_loc%ROWTYPE;
212 
213  PROCEDURE Create_Space_Assign( p_lease_tenancies_rec      IN lease_tenancies_rec
214                               , x_return_status            OUT NOCOPY VARCHAR2
215     )
216  IS
217 
218  l_assign_count             NUMBER       := 0;
219  l_dup_assign_count         NUMBER       := 0;
220  l_create_space_assign      VARCHAR2(1)  := 'N';
221  l_automatic_distrubution   VARCHAR2(30) := NULL;
222  l_message                  VARCHAR2(30) := NULL;
223  l_action                   VARCHAR2(30) := NULL;
224 
225  BEGIN
226 
227  pvt_debug(g_pkg_name||'-Create_Space_Assign Begin',3);
228  x_return_status := fnd_api.g_ret_sts_success;
229 
230  l_automatic_distrubution := NVL(pn_mo_cache_utils.get_profile_value('PN_AUTOMATIC_SPACE_DISTRIBUTION'
231                                                                     , p_lease_tenancies_rec.org_id)
232                                                                     ,'N');
233 
234  pvt_debug('-l_automatic_distrubution '|| l_automatic_distrubution,3);
235  pvt_debug('-p_cust_acnt_id  '|| p_lease_tenancies_rec.customer_id,3);
236  pvt_debug('-p_loc_id '|| p_lease_tenancies_rec.location_id,3);
237  pvt_debug('-p_assgn_str_dt '|| NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date) ,3);
238  pvt_debug('-p_assgn_end_dt '|| p_lease_tenancies_rec.expiration_date,3);
239 
240  pvt_debug(g_pkg_name||'-Calling get_dup_cust_assign_count Begin',3);
241  pn_space_assign_cust_pkg.get_dup_cust_assign_count
242       (
243       p_cust_acnt_id                  => p_lease_tenancies_rec.customer_id
244      ,p_loc_id                        => p_lease_tenancies_rec.location_id
245      ,p_assgn_str_dt                  => NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date)
246      ,p_assgn_end_dt                  => p_lease_tenancies_rec.expiration_date
247      ,p_assign_count                  => l_assign_count
248      ,p_dup_assign_count              => l_dup_assign_count
249      );
250  pvt_debug(g_pkg_name||'-Calling get_dup_cust_assign_count End',3);
251 
252   IF NVL(l_assign_count, 0) = 0 THEN
253       l_create_space_assign := 'Y';
254 
255   ELSIF NVL(l_assign_count, 0) >= 1 AND NVL(l_dup_assign_count, 0) = 0 THEN
256 
257       IF l_automatic_distrubution = 'Y' THEN
258 
259          IF p_lease_tenancies_rec.allow_overlap_space_asg = 'Y' THEN
260             l_create_space_assign := 'Y';
261 
262          ELSIF p_lease_tenancies_rec.allow_overlap_space_asg = 'N' THEN  -- No
263             l_create_space_assign := 'N';
264             fnd_message.set_name('PN', 'PN_SHARE_OVRLAP_CUST_SPASGN');
265             fnd_msg_pub.ADD;
266             RAISE fnd_api.g_exc_error;
267          END IF;
268 
269       ELSE
270          l_create_space_assign := 'Y';
271       END IF;
272 
273   ELSIF NVL(l_dup_assign_count, 0) >= 1 THEN
274 
275       IF p_lease_tenancies_rec.allow_dup_space_asg = 'Y' THEN
276          l_create_space_assign := 'Y';
277       ELSE
278          l_create_space_assign := 'N';
279          fnd_message.set_name('PN', 'PN_DUP_SPC_ASSIGN');
280          fnd_msg_pub.ADD;
281          RAISE fnd_api.g_exc_error;
282       END IF;
283 
284   END IF;
285 
286   IF l_create_space_assign = 'Y' THEN
287 
288     pvt_debug(g_pkg_name||'-Calling create_auto_space_assign Begin',3);
289     pn_tenancies_pkg.create_auto_space_assign
290       (
291       p_location_id                   => p_lease_tenancies_rec.location_id
292      ,p_lease_id                      => p_lease_tenancies_rec.lease_id
293      ,p_customer_id                   => p_lease_tenancies_rec.customer_id
294      ,p_cust_site_use_id              => p_lease_tenancies_rec.customer_site_use_id
295      ,p_cust_assign_start_dt          => NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date)
296      ,p_cust_assign_end_dt            => p_lease_tenancies_rec.expiration_date
297      ,p_recovery_space_std_code       => p_lease_tenancies_rec.recovery_space_std_code
298      ,p_recovery_type_code            => p_lease_tenancies_rec.recovery_type_code
299      ,p_fin_oblig_end_date            => p_lease_tenancies_rec.fin_oblig_end_date
300      ,p_allocated_pct                 => p_lease_tenancies_rec.allocated_area_pct
301      ,p_tenancy_id                    => p_lease_tenancies_rec.tenancy_id
302      ,p_org_id                        => p_lease_tenancies_rec.org_id
303      ,p_action                        => l_action
304      ,p_msg                           => l_message
305    );
306     pvt_debug(g_pkg_name||'-Calling create_auto_space_assign End',3);
307 
308    IF l_action = 'OVERLAP' THEN  --Stop
309       fnd_message.set_name('PN', 'PN_TEN_OVERLAP_EXISTING_ASSIGN');
310       fnd_msg_pub.ADD;
311       RAISE fnd_api.g_exc_error;
312 
313    ELSIF l_action = 'NOVACANT' THEN  --Stop
314 
315       IF p_lease_tenancies_rec.allow_zero_space_asg = 'N' THEN
316          fnd_message.set_name('PN', 'PN_ALL_SPACE_ASSIGNED');
317          fnd_msg_pub.ADD;
318          RAISE fnd_api.g_exc_error;
319       END IF;
320 
321    ELSIF l_action = 'DUP_ASSIGN' THEN  --Stop
322       fnd_message.set_name('PN', 'PN_SPASGN_CUSTOMER_OVRLAP_MSG');
323       fnd_msg_pub.ADD;
324       RAISE fnd_api.g_exc_error;
325    END IF;
326 
327   END IF;
328   pvt_debug(g_pkg_name||'-Create_Space_Assign End',3);
329 
330   EXCEPTION
331           WHEN fnd_api.g_exc_error THEN
332             x_return_status := fnd_api.g_ret_sts_error;
333             pvt_debug(g_pkg_name||'-Create_Space_Assign.G_EXC_ERROR'||SQLERRM,3);
334 
335           WHEN fnd_api.g_exc_unexpected_error THEN
336             x_return_status := fnd_api.g_ret_sts_unexp_error;
337             pvt_debug(g_pkg_name||'-Create_Space_assign.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
338 
339           WHEN OTHERS THEN
340              x_return_status := fnd_api.g_ret_sts_error;
341              pvt_debug(g_pkg_name||'-Create_Space_Assign :When Others '||SQLERRM,3);
342  END Create_Space_Assign;
343 
344  PROCEDURE Update_Space_Assign( p_lease_tenancies_rec      IN lease_tenancies_rec
345                               , x_return_status            OUT NOCOPY VARCHAR2
346     )
347  IS
348 
349  l_assign_count             NUMBER       := 0;
350  l_dup_assign_count         NUMBER       := 0;
351  l_message                  VARCHAR2(30) := NULL;
352  l_action                   VARCHAR2(30) := NULL;
353 
354  BEGIN
355 
356  pvt_debug(g_pkg_name||'-Update_Space_Assign Begin',3);
357  x_return_status := fnd_api.g_ret_sts_success;
358 
359  pvt_debug('-p_cust_acnt_id  '|| p_lease_tenancies_rec.customer_id,3);
360  pvt_debug('-p_loc_id '       || p_lease_tenancies_rec.location_id,3);
361  pvt_debug('-p_assgn_str_dt ' || NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date) ,3);
362  pvt_debug('-p_assgn_end_dt  '|| p_lease_tenancies_rec.expiration_date,3);
363 
364  pvt_debug(g_pkg_name||'-Calling get_dup_cust_assign_count Begin',3);
365  pn_space_assign_cust_pkg.get_dup_cust_assign_count
366       (
367       p_cust_acnt_id                  => p_lease_tenancies_rec.customer_id
368      ,p_loc_id                        => p_lease_tenancies_rec.location_id
369      ,p_assgn_str_dt                  => NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date)
370      ,p_assgn_end_dt                  => p_lease_tenancies_rec.expiration_date
371      ,p_assign_count                  => l_assign_count
372      ,p_dup_assign_count              => l_dup_assign_count
373      );
374  pvt_debug(g_pkg_name||'-Calling get_dup_cust_assign_count End',3);
375 
376   IF p_lease_tenancies_rec.customer_id IS NOT NULL and p_lease_tenancies_rec.customer_id <> pn_lease_utils.g_pn_miss_num AND
377      p_lease_tenancies_rec.customer_id <> NVL(c_loc_rec.customer_id,-9999) AND
378      p_lease_tenancies_rec.allow_dup_space_asg = 'N' AND
379      NVL(l_dup_assign_count, 0) > 1 THEN
380          fnd_message.set_name('PN', 'PN_DUP_SPC_ASSIGN');
381          fnd_msg_pub.ADD;
382          RAISE fnd_api.g_exc_error;
383   END IF;
384 
385     pvt_debug(g_pkg_name||'-Calling Update_auto_space_assign Begin',3);
386 
387    pn_tenancies_pkg.update_auto_space_assign
388    (
389       p_location_id                   => p_lease_tenancies_rec.location_id
390      ,p_lease_id                      => p_lease_tenancies_rec.lease_id
391      ,p_customer_id                   => p_lease_tenancies_rec.customer_id
392      ,p_cust_site_use_id              => p_lease_tenancies_rec.customer_site_use_id
393      ,p_cust_assign_start_dt          => NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date)
394      ,p_cust_assign_end_dt            => p_lease_tenancies_rec.expiration_date
395      ,p_recovery_space_std_code       => p_lease_tenancies_rec.recovery_space_std_code
396      ,p_recovery_type_code            => p_lease_tenancies_rec.recovery_type_code
397      ,p_fin_oblig_end_date            => p_lease_tenancies_rec.fin_oblig_end_date
398      ,p_allocated_pct                 => p_lease_tenancies_rec.allocated_area_pct
399      ,p_tenancy_id                    => p_lease_tenancies_rec.tenancy_id
400      ,p_org_id                        => p_lease_tenancies_rec.org_id
401      ,p_location_id_old               => c_loc_rec.location_id
402      ,p_customer_id_old               => c_loc_rec.customer_id
403      ,p_cust_site_use_id_old          => c_loc_rec.customer_site_use_id
404      ,p_cust_assign_start_dt_old      => NVL(c_loc_rec.Occupancy_Date,c_loc_rec.Estimated_Occupancy_Date)
405      ,p_cust_assign_end_dt_old        => c_loc_rec.Expiration_Date
406      ,p_recovery_space_std_code_old   => c_loc_rec.recovery_space_std_code
407      ,p_recovery_type_code_old        => c_loc_rec.recovery_type_code
408      ,p_fin_oblig_end_date_old        => c_loc_rec.Fin_Oblig_End_Date
409      ,p_allocated_pct_old             => c_loc_rec.allocated_area_pct
410      ,p_action                        => l_action
411      ,p_msg                           => l_message
412    );
413     pvt_debug(g_pkg_name||'-Calling updaate_auto_space_assign End',3);
414 
415    IF l_action = 'R' THEN  --Regenerate
416       fnd_message.set_name('PN', 'PN_REC_AUTO_SPC_AREA_CLS_REG');
417       fnd_msg_pub.ADD;
418 
419    ELSIF l_action = 'S' THEN  --Stop
420       fnd_message.set_name('PN', 'PN_REC_AUTO_SPC_NO_CHG_DATES');
421       fnd_msg_pub.ADD;
422       RAISE fnd_api.g_exc_error;
423 
424    ELSIF l_action = 'OVERLAP' THEN  --Stop
425       fnd_message.set_name('PN', 'PN_TEN_OVERLAP_EXISTING_ASSIGN');
426       fnd_msg_pub.ADD;
427       RAISE fnd_api.g_exc_error;
428 
429    ELSIF l_action = 'NOVACANT' THEN  --Stop
430 
431       IF p_lease_tenancies_rec.allow_zero_space_asg = 'N' THEN
432       fnd_message.set_name('PN', 'PN_ALL_SPACE_ASSIGNED');
433       fnd_msg_pub.ADD;
434       RAISE fnd_api.g_exc_error;
435       END IF;
436 
437    ELSIF l_action = 'DUP_ASSIGN' THEN  --Stop
438       fnd_message.set_name('PN', 'PN_SPASGN_CUSTOMER_OVRLAP_MSG');
439       fnd_msg_pub.ADD;
440       RAISE fnd_api.g_exc_error;
441    END IF;
442 
443   pvt_debug(g_pkg_name||'-Update_Space_Assign End',3);
444 
445   EXCEPTION
446           WHEN fnd_api.g_exc_error THEN
447             x_return_status := fnd_api.g_ret_sts_error;
448             pvt_debug(g_pkg_name||'-Update_Space_Assign.G_EXC_ERROR'||SQLERRM,3);
449 
450           WHEN fnd_api.g_exc_unexpected_error THEN
451             x_return_status := fnd_api.g_ret_sts_unexp_error;
452             pvt_debug(g_pkg_name||'-Update_Space_assign.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
453 
454           WHEN OTHERS THEN
455              x_return_status := fnd_api.g_ret_sts_error;
456              pvt_debug(g_pkg_name||'-Update_Space_Assign :When Others '||SQLERRM,3);
457  END Update_Space_Assign;
458 
459      PROCEDURE validate_tenancies_tbl (
460       p_lease_tenancies_tbl      IN OUT NOCOPY    lease_tenancies_tbl
461     , p_lease_rec                IN         lease_rec
462     , p_validate                 IN         VARCHAR2
463 --    , p_lease_class_code         IN       VARCHAR2
464 --    , p_lease_commencement_date  IN       DATE
465 --    , p_lease_termination_date   IN       DATE
466 --    , p_parent_lease_id          IN       NUMBER
467     , p_lease_context            IN         VARCHAR2
468     , p_operation                IN         VARCHAR2
469     , x_return_status            OUT NOCOPY VARCHAR2)
470    IS
471       l_tenancy_record_cnt                  NUMBER              := pn_lease_utils.g_pn_miss_num;
472       l_lease_tenancies_rec                 lease_tenancies_rec;
473       l_return_status                       VARCHAR2 (30)       := NULL;
474       l_api_name                   CONSTANT VARCHAR2 (30)       := p_operation;
475       l_api_name_full              CONSTANT VARCHAR2 (61)       := g_pkg_name|| '.'|| l_api_name;
476       l_err_msg                             VARCHAR2 (30);
477       l_asgn_mode                           VARCHAR2 (30);
478       l_disp_msg                            VARCHAR2(1);
479       l_future                              VARCHAR2(1);
480       l_available_vacant_area               BOOLEAN             := FALSE;
481       l_loc_check_end_date                  DATE;
482       l_error_flag                          VARCHAR2(1);
483    BEGIN
484      ----------------------dbms_output.put_line('In VALIDATE_TENANCIES_TBL procedure of PVT package');--Rupak
485      pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Procedure Begin',3);
486 
487       -- Standard start of API savepoint
488       SAVEPOINT validate_tenancies_tbl;
489       -- Initialize the return status.
490       x_return_status                      := fnd_api.g_ret_sts_success;
491       l_tenancy_record_cnt                 := p_lease_tenancies_tbl.COUNT;
492       IF l_tenancy_record_cnt>0
493       THEN
494 
495          FOR i IN 1 .. l_tenancy_record_cnt
496          LOOP
497           BEGIN
498             l_error_flag:='N';
499             p_lease_tenancies_tbl (i).error_flag:='N';
500             --Tenancy Usage Type
501             IF (   (    p_lease_tenancies_tbl (i).tenancy_usage_lookup_code IS NOT NULL
502                     AND p_lease_tenancies_tbl (i).tenancy_usage_lookup_code <>
503                                                                           pn_lease_utils.g_pn_miss_char)
504                 OR (    p_lease_tenancies_tbl (i).tenancy_usage_lookup_name IS NOT NULL
505                     AND p_lease_tenancies_tbl (i).tenancy_usage_lookup_name <>
506                                                                           pn_lease_utils.g_pn_miss_char)
507                )
508             THEN
509                pn_lease_utils.get_lookup_code
510                             (p_parameter_name              => l_param_tenancy_usage
511                            , p_operation                   => p_operation
512                            , p_lookup_meaning              => p_lease_tenancies_tbl (i).tenancy_usage_lookup_name
513                            , p_lookup_type                 => l_lease_tenancy_usage_lookup
514                            , x_lookup_type_code            => p_lease_tenancies_tbl (i).tenancy_usage_lookup_code
515                            , x_return_status               => x_return_status);
516 
517                ----------------------dbms_output.put_line('TENANCY_USAGE_LOOKUP_CODE:' ||p_lease_tenancies_tbl(i).tenancy_usage_lookup_code);--Rupak
518                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:TENANCY_USAGE_LOOKUP_CODE:'||p_lease_tenancies_tbl(i).tenancy_usage_lookup_code,3);
519 
520                IF (x_return_status = fnd_api.g_ret_sts_error)
521                THEN
522                   l_error_flag:='Y';
523                   p_lease_tenancies_tbl (i).error_flag:='Y';
524                   fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
525                   fnd_message.set_token ('LOOKUP_TYPE', l_lease_tenancy_usage_lookup);
526                   fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_tenancies_tbl (i).tenancy_usage_lookup_name));
527                   fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_tenancies_tbl (i).tenancy_usage_lookup_code));
528                   fnd_msg_pub.ADD;
529                   RAISE fnd_api.g_exc_error;
530                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
531                THEN
532                   l_error_flag:='Y';
533                   p_lease_tenancies_tbl (i).error_flag:='Y';
534                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
535                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_tenancy_usage,3));
536                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
537                   fnd_msg_pub.ADD;
538                   RAISE fnd_api.g_exc_unexpected_error;
539                END IF;
540             ELSE
541              IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
542               /* pn_lease_utils.add_null_parameter_msg
543                                             (p_token_apiname               => l_api_name_full
544                                            , p_token_nullparam             => 'Tenancy_Usage');*/
545                l_error_flag:='Y';
546                p_lease_tenancies_tbl (i).error_flag:='Y';
547                fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
548                fnd_message.set_token ('API_NAME', l_api_name_full);
549                fnd_message.set_token ('NULL_PARAM', 'Tenancy_Usage');
550                fnd_msg_pub.ADD;
551                RAISE fnd_api.g_exc_error;
552              END IF;
553            END IF;
554 
555 
556 
557             --Validation 2: Location Code
558             --Lease Location
559             IF (   (    p_lease_tenancies_tbl (i).location_code IS NOT NULL
560                     AND p_lease_tenancies_tbl (i).location_code <> pn_lease_utils.g_pn_miss_char)
561                 OR (    p_lease_tenancies_tbl (i).location_id IS NOT NULL
562                     AND p_lease_tenancies_tbl (i).location_id <> pn_lease_utils.g_pn_miss_num)
563                )
564             THEN
565 
566                pn_lease_utils.get_location_id
567                                            (p_parameter_name              => l_param_tenancy_location
568                                           , p_location_code               => p_lease_tenancies_tbl (i).location_code
569                                           , p_operation                   => p_operation
570                                           , p_org_id                      => p_lease_tenancies_tbl (i).org_id
571                                           , p_lease_class_code            => p_lease_rec.lease_class_code
572                                           , p_parent_lease_id             => p_lease_rec.parent_lease_id
573                                           , p_lease_comm_date             => p_lease_rec.lease_commencement_date
574                                           , p_lease_term_date             => p_lease_rec.lease_termination_date
575                                           , x_return_status               => l_return_status
576                                           , x_location_id                 => p_lease_tenancies_tbl (i).location_id);
577 
578                ----------------------dbms_output.put_line('LOCATION_ID:' ||p_lease_tenancies_tbl(i).location_id);--Rupak
579                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:LOCATION_ID:'||p_lease_tenancies_tbl(i).location_id,3);
580 
581                IF (l_return_status = fnd_api.g_ret_sts_error)
582                THEN
583                   l_error_flag:='Y';
584                   p_lease_tenancies_tbl (i).error_flag:='Y';
585                   fnd_message.set_name ('PN', 'PN_INVALID_LOCATION');
586                   fnd_message.set_token ('LOC_ID', get_miss_num_decode(p_lease_tenancies_tbl (i).location_id));
587                   fnd_message.set_token ('LOC_CODE',get_miss_char_decode(p_lease_tenancies_tbl (i).location_code));
588                   fnd_msg_pub.ADD;
589                   RAISE fnd_api.g_exc_error;
590                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
591                THEN
592                   l_error_flag:='Y';
593                   p_lease_tenancies_tbl (i).error_flag:='Y';
594                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
595                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_tenancy_location,3));
596                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
597                   fnd_msg_pub.ADD;
598                   RAISE fnd_api.g_exc_unexpected_error;
599                END IF;
600             ELSE
601              IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
602                /*pn_lease_utils.add_null_parameter_msg
603                                             (p_token_apiname               => l_api_name_full
604                                            , p_token_nullparam             => 'Tenancy_Location');*/
605                l_error_flag:='Y';
606                p_lease_tenancies_tbl (i).error_flag:='Y';
607                fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
608                fnd_message.set_token ('API_NAME', l_api_name_full);
609                fnd_message.set_token ('NULL_PARAM', 'Tenancy_Location');
610                fnd_msg_pub.ADD;
611                RAISE fnd_api.g_exc_error;
612               END IF;
613             END IF;
614 
615 
616    --------- LOCATION Gaps Check
617 
618             IF p_lease_rec.lease_class_code <> 'DIRECT'
619             THEN
620                l_asgn_mode := 'CUST';
621             ELSE
622                l_asgn_mode := 'NONE';
623             END IF;
624 
625             IF ( ( (p_lease_rec.lease_commencement_date IS NOT NULL AND  p_lease_rec.lease_commencement_date <> pn_lease_utils.g_pn_miss_date)
626                AND (p_lease_rec.lease_termination_date IS NOT NULL  AND  p_lease_rec.lease_termination_date <> pn_lease_utils.g_pn_miss_date)
627                  )
628               AND
629                  ( p_lease_tenancies_tbl (i).location_id IS NOT NULL AND p_lease_tenancies_tbl (i).location_id <> pn_lease_utils.g_pn_miss_num)
630               )
631 
632             THEN
633                pnt_locations_pkg.Check_Location_Gaps(
634                          p_loc_id     => p_lease_tenancies_tbl (i).location_id
635                         ,p_str_dt     => p_lease_rec.lease_commencement_date
636                         ,p_end_dt     => p_lease_rec.lease_termination_date
637                         ,p_asgn_mode  => l_asgn_mode
638                         ,p_err_msg    => l_err_msg
639                         );
640 
641                IF l_err_msg IS NOT NULL THEN
642                   fnd_message.set_name('PN','PN_LOC_DATES_NOT_CONT_EXIST');
643                   fnd_message.set_token('LOCATION_CODE',get_miss_char_decode(p_lease_tenancies_tbl (i).location_code));
644                   fnd_message.set_token('START_DATE',get_miss_date_decode(p_lease_rec.lease_commencement_date));
645                   fnd_message.set_token('END_DATE',get_miss_date_decode(p_lease_rec.lease_termination_date));
646                   l_error_flag:='Y';
647                   p_lease_tenancies_tbl (i).error_flag:='Y';
648                   fnd_msg_pub.ADD;
649                   RAISE fnd_api.g_exc_error;
650                END IF;
651 
652           END IF;
653 
654 
655 
656 
657         IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
658             IF  p_lease_tenancies_tbl (i).location_id = pn_lease_utils.g_pn_miss_num
659             THEN
660                p_lease_tenancies_tbl (i).location_id := NULL;
661             END IF;
662         END IF;
663 
664             IF (   (    p_lease_tenancies_tbl (i).estimated_occupancy_date IS NOT NULL
665                     AND p_lease_tenancies_tbl (i).estimated_occupancy_date <> pn_lease_utils.g_pn_miss_date)
666                 OR (   p_lease_tenancies_tbl (i).expiration_date IS NOT NULL
667                     AND p_lease_tenancies_tbl (i).expiration_date <> pn_lease_utils.g_pn_miss_date)
668                )
669             THEN
670 
671                pn_lease_utils.validate_tenancy_dates
672                             (p_parameter_name              => l_param_tenancy_dates
673                            , p_operation                   => p_operation
674                            , p_estimated_occ_date          => p_lease_tenancies_tbl (i).estimated_occupancy_date
675                            , p_actual_occ_date             => p_lease_tenancies_tbl (i).occupancy_date
676                            , p_tenancy_exp_date            => p_lease_tenancies_tbl (i).expiration_date
677                            , p_lease_comm_date             => p_lease_rec.lease_commencement_date
678                            , p_lease_term_date             => p_lease_rec.lease_termination_date
679                            , x_return_status               => x_return_status
680                            );
681 
682                --------------dbms_output.put_line('   x_return_status after pn_lease_utils.validate_tenancy_dates ' || x_return_status);--Rupak
683                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:X_RETURN_STATUS for pn_lease_utils.VALIDATE_TENANCY_DATES '||x_return_status,3);
684 
685                IF (x_return_status = fnd_api.g_ret_sts_error)
686                THEN
687                   ----------------------dbms_output.put_line('H:fnd_api.g_ret_sts_error' || x_return_status);--Rupak
688                   l_error_flag:='Y';
689                   p_lease_tenancies_tbl (i).error_flag:='Y';
690                   fnd_message.set_name ('PN', 'PN_INV_ESTOCC_DATE');
691                   fnd_message.set_token ('ESTOCC_DATE',get_miss_date_decode(p_lease_tenancies_tbl (i).estimated_occupancy_date));
692                   fnd_message.set_token ('OCCP_DATE',get_miss_date_decode(p_lease_tenancies_tbl (i).occupancy_date));
693                   fnd_message.set_token ('TRMN_DATE',get_miss_date_decode(p_lease_tenancies_tbl (i).expiration_date));
694                   fnd_msg_pub.ADD;
695                   RAISE fnd_api.g_exc_error;
696                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
697                THEN
698                      l_error_flag:='Y';
699                      p_lease_tenancies_tbl (i).error_flag:='Y';
700                      fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
701                      fnd_message.set_token ('COLUMN', SUBSTR(l_param_tenancy_dates,3));
702                      fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
703                      fnd_msg_pub.ADD;
704                      RAISE fnd_api.g_exc_unexpected_error;
705                 END IF;
706             ELSE
707              IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
708               /* pn_lease_utils.add_null_parameter_msg(p_token_apiname               => l_api_name_full
709                                                    , p_token_nullparam             => 'Tenancy_Dates'
710                                                     );*/
711                l_error_flag:='Y';
712                p_lease_tenancies_tbl (i).error_flag:='Y';
713                fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
714                fnd_message.set_token ('API_NAME', l_api_name_full);
715                fnd_message.set_token ('NULL_PARAM', 'Tenancy_Dates');
716                fnd_msg_pub.ADD;
717                RAISE fnd_api.g_exc_error;
718              /*ELSIF(p_lease_tenancies_tbl (i).occupancy_date IS NULL AND trim(p_operation) = 'UPDATE_TENANCY') THEN
719                 --------------dbms_output.put_line('Inside Occ:'||p_lease_tenancies_tbl (i).occupancy_date);
720                  p_lease_tenancies_tbl (i).occupancy_date := NULL;*/
721              END IF;
722            END IF;
723 
724           -- VALIDATE customer_id
725             IF p_lease_rec.lease_class_code <> 'DIRECT'
726             THEN
727 
728                IF (   (    p_lease_tenancies_tbl (i).customer_name IS NOT NULL
729                       AND p_lease_tenancies_tbl (i).customer_name <> pn_lease_utils.g_pn_miss_char)
730                   OR (    p_lease_tenancies_tbl (i).customer_id IS NOT NULL
731                       AND p_lease_tenancies_tbl (i).customer_id <> pn_lease_utils.g_pn_miss_num)
732                --   OR (    p_lease_tenancies_tbl (i).customer_site_use_id IS NOT NULL
733                --       AND p_lease_tenancies_tbl (i).customer_site_use_id <>
734                --                                                           pn_lease_utils.g_pn_miss_num)
735 
736                  )
737                THEN
738 
739                   pn_lease_utils.get_tenancy_cust_id(
740                                                   p_parameter_name           => l_param_tenancy_customer
741                                                 , p_operation                => p_operation
742                                                 , p_customer_name            => p_lease_tenancies_tbl (i).customer_name
743                                                 , p_org_id                   => g_org_id--p_lease_tenancies_tbl (i).org_id
744                                                 , x_customer_id              => p_lease_tenancies_tbl (i).customer_id
745                                                 , x_customer_site_use_id     => p_lease_tenancies_tbl (i).customer_site_use_id
746                                                 , x_return_status            => x_return_status
747                                                 );
748                   ----------------------dbms_output.put_line('   p_lease_tenancies_tbl (i).customer_id :'||p_lease_tenancies_tbl (i).customer_id||x_return_status );--Rupak
749                   pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Tenancy Customer ID Returned:'||p_lease_tenancies_tbl (i).customer_id,3);
750 
751                   IF (x_return_status = fnd_api.g_ret_sts_error)
752                   THEN
753                       l_error_flag:='Y';
754                       p_lease_tenancies_tbl (i).error_flag:='Y';
755                       fnd_message.set_name ('PN', 'PN_TENANCY_CUSTOMER');
756                       fnd_message.set_token ('CUSTOMER_NAME', get_miss_char_decode(p_lease_tenancies_tbl (i).customer_name));
757                       fnd_message.set_token ('CUSTOMER_ID', get_miss_num_decode(p_lease_tenancies_tbl (i).customer_id));
758                       fnd_msg_pub.ADD;
759                       RAISE fnd_api.g_exc_error;
760                   ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
761                   THEN
762                      l_error_flag:='Y';
763                      p_lease_tenancies_tbl (i).error_flag:='Y';
764                      fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
765                      fnd_message.set_token ('COLUMN', SUBSTR(l_param_tenancy_customer,3));
766                      fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
767                      fnd_msg_pub.ADD;
768                      RAISE fnd_api.g_exc_unexpected_error;
769                   END IF;
770                --ELSE
771                 /*IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
772                    l_error_flag:='Y';
773                    fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
774                    fnd_message.set_token ('API_NAME', l_api_name_full);
775                    fnd_message.set_token ('NULL_PARAM', 'Tenancy_Customer_id');
776                    fnd_msg_pub.ADD;
777                    RAISE fnd_api.g_exc_error;
778                 END IF;*/
779 
780             END IF;
781                ----------------------dbms_output.put_line('Validate : Tenancy:1');--Rupak
782                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:After Tenancy Customer ID validation',3);
783                IF (   (    p_lease_tenancies_tbl (i).recovery_type_code IS NOT NULL
784                       AND p_lease_tenancies_tbl (i).recovery_type_code <> pn_lease_utils.g_pn_miss_char)
785                   OR (    p_lease_tenancies_tbl (i).recovery_type_meaning IS NOT NULL
786                       AND p_lease_tenancies_tbl (i).recovery_type_meaning <> pn_lease_utils.g_pn_miss_char)
787                   ) THEN
788 
789                   -- Validate Tenancy Lookup Code
790                   pn_lease_utils.get_lookup_code (
791                                          p_parameter_name              => l_param_tenancy_recovery_type
792                                        , p_operation                   => p_operation
793                                        , p_lookup_meaning              => p_lease_tenancies_tbl (i).recovery_type_meaning
794                                        , p_lookup_type                 => l_tenancy_recovery_lookup_type
795                                        , x_lookup_type_code            => p_lease_tenancies_tbl (i).recovery_type_code
796                                        , x_return_status               => x_return_status
797                                        );
798                   pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:RECOVERY_TYPE_CODE:'|| p_lease_tenancies_tbl (i).recovery_type_code,3);
799                    IF (x_return_status = fnd_api.g_ret_sts_error) THEN
800                        l_error_flag:='Y';
801                        p_lease_tenancies_tbl (i).error_flag:='Y';
802                        fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
803                        fnd_message.set_token ('LOOKUP_TYPE', l_tenancy_recovery_lookup_type);
804                        fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_tenancies_tbl (i).recovery_type_meaning));
805                        fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_tenancies_tbl (i).recovery_type_code));
806                        fnd_msg_pub.ADD;
807                        RAISE fnd_api.g_exc_error;
808                     ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
809                        l_error_flag:='Y';
810                        p_lease_tenancies_tbl (i).error_flag:='Y';
811                        fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
812                        fnd_message.set_token ('COLUMN', SUBSTR(l_param_tenancy_recovery_type,3));
813                        fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
814                        fnd_msg_pub.ADD;
815                        RAISE fnd_api.g_exc_unexpected_error;
816                     END IF;
817                /*ELSE
818                 IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
819                    l_error_flag:='Y';
820                    fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
821                    fnd_message.set_token ('API_NAME', l_api_name_full);
822                    fnd_message.set_token ('NULL_PARAM', 'Tenancy_Recovery_type');
823                    fnd_msg_pub.ADD;
824                    RAISE fnd_api.g_exc_error;
825                 END IF;*/
826                END IF;
827              ----------------------dbms_output.put_line('Validate : Tenancy:2');--Rupak
828                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:After Validating RECOVERY_TYPE_CODE',3);
829 
830                IF (   (    p_lease_tenancies_tbl (i).recovery_space_std_code IS NOT NULL
831                       AND p_lease_tenancies_tbl (i).recovery_space_std_code <> pn_lease_utils.g_pn_miss_char)
832                   OR (    p_lease_tenancies_tbl (i).recovery_space_std_meaning IS NOT NULL
833                       AND p_lease_tenancies_tbl (i).recovery_space_std_meaning <> pn_lease_utils.g_pn_miss_char)
834                    )
835                THEN
836 
837                   -- Validate Tenancy Recovery Space Std Lookup Code
838                   pn_lease_utils.get_lookup_code (
839                                          p_parameter_name              => l_param_recovery_space_std
840                                        , p_operation                   => p_operation
841                                        , p_lookup_meaning              => p_lease_tenancies_tbl (i).recovery_space_std_meaning
842                                        , p_lookup_type                 => l_recovery_space_std_lkp_type
843                                        , x_lookup_type_code            => p_lease_tenancies_tbl (i).recovery_space_std_code
844                                        , x_return_status               => x_return_status
845                                        );
846                         ----------------------dbms_output.put_line (   'RECOVERY_SPACE_STD_CODE: '|| p_lease_tenancies_tbl (i).recovery_space_std_code);--Rupak
847                           pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:RECOVERY_SPACE_STD_CODE:'|| p_lease_tenancies_tbl (i).recovery_space_std_code,3);
848                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
849                           l_error_flag:='Y';
850                           p_lease_tenancies_tbl (i).error_flag:='Y';
851                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
852                           fnd_message.set_token ('LOOKUP_TYPE', l_recovery_space_std_lkp_type);
853                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_tenancies_tbl (i).recovery_space_std_meaning));
854                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_tenancies_tbl (i).recovery_space_std_code));
855                           fnd_msg_pub.ADD;
856                           RAISE fnd_api.g_exc_error;
857                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
858                            l_error_flag:='Y';
859                            p_lease_tenancies_tbl (i).error_flag:='Y';
860                            fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
861                            fnd_message.set_token ('COLUMN', SUBSTR(l_param_recovery_space_std,3));
862                            fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'||SQLERRM);
863                            fnd_msg_pub.ADD;
864                            RAISE fnd_api.g_exc_unexpected_error;
865                       END IF;
866                /*ELSE
867                  IF (trim(p_operation) <> 'UPDATE_TENANCY') THEN
868                     l_error_flag:='Y';
869                     fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
870                     fnd_message.set_token ('API_NAME', l_api_name_full);
871                     fnd_message.set_token ('NULL_PARAM', 'Tenancy_Recovery_Space_Std');
872                     fnd_msg_pub.ADD;
873                     RAISE fnd_api.g_exc_error;
874                  END IF;*/
875                END IF;
876              ----------------------dbms_output.put_line('Validate : Tenancy:3');--Rupak
877 
878            ELSE
879               p_lease_tenancies_tbl (i).customer_name            := NULL;
880               p_lease_tenancies_tbl (i).customer_id              := NULL;
881               p_lease_tenancies_tbl (i).customer_site_use_id     := NULL;
882               p_lease_tenancies_tbl (i).recovery_type_code       := NULL;
883               p_lease_tenancies_tbl (i).recovery_space_std_code  := NULL;
884               p_lease_tenancies_tbl (i).fin_oblig_end_date       := NULL;
885            END IF;
886    ----------------------dbms_output.put_line('Validate : Tenancy:4');--Rupak
887    /*****************************/
888             IF p_lease_rec.lease_class_code <> 'DIRECT'
889             THEN
890 
891                ----------------------dbms_output.put_line('Before calling pnp_util_func.validate_vacant_area' );
892                pnp_util_func.validate_vacant_area(
893                                           p_location_id            => p_lease_tenancies_tbl (i).location_id
894                                         , p_st_date                => NVL(p_lease_tenancies_tbl (i).occupancy_date,p_lease_tenancies_tbl (i).estimated_occupancy_date)
895                                         , p_end_dt                 => p_lease_tenancies_tbl (i).expiration_date
896                                         , p_assignable_area        => p_lease_tenancies_tbl (i).lease_assignable_area
897                                         , p_old_allocated_area     => p_lease_tenancies_tbl (i).lease_assignable_area
898                                         , p_new_allocated_area     => p_lease_tenancies_tbl (i).allocated_area
899                                         , p_old_allocated_area_pct => p_lease_tenancies_tbl (i).lease_assignable_area
900                                         , p_new_allocated_area_pct => p_lease_tenancies_tbl (i).allocated_area_pct
901                                         , p_display_message        => l_disp_msg
902                                         , p_future                 => l_future
903                                         , p_available_vacant_area  => l_available_vacant_area
904                                         );
905 
906                ----------------------dbms_output.put_line('After calling pnp_util_func.validate_vacant_area l_disp_msg:'||l_disp_msg );--Rupak
907                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:After calling pnp_util_func.validate_vacant_area l_disp_msg:'||l_disp_msg,3);
908 
909                   IF NOT l_available_vacant_area THEN
910                      fnd_message.set_name ('PN', 'PN_COMM_SPACE_ASSIGN');
911                      fnd_message.set_token('LOCATION_CODE',get_miss_char_decode(p_lease_tenancies_tbl(i).location_code));
912                      l_error_flag:='Y';
913                      p_lease_tenancies_tbl (i).error_flag:='Y';
914                      fnd_msg_pub.ADD;
915                      RAISE fnd_api.g_exc_error;
916                   END IF;
917 
918             END IF;
919 
920                ----------------------dbms_output.put_line('Validating fin_oblig_end_date' );--Rupak
921                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:To Validate the  FIN_OBLIG_END_DATE and expiration_date',3);
922 
923                IF (p_lease_tenancies_tbl (i).expiration_date IS NOT NULL AND p_lease_tenancies_tbl (i).expiration_date <> pn_lease_utils.g_pn_miss_date)
924                  AND (p_lease_tenancies_tbl (i).fin_oblig_end_date  IS NOT NULL AND  p_lease_tenancies_tbl (i).fin_oblig_end_date <> pn_lease_utils.g_pn_miss_date)
925                  AND (p_lease_tenancies_tbl (i).expiration_date > p_lease_tenancies_tbl (i).fin_oblig_end_date )
926                 THEN
927                   pn_lease_utils.validate_fin_oblig_end_date (  p_parameter_name     => l_param_oblig_end_date
928                                                               , p_operation          => p_operation
929                                                               , p_fin_oblig_end_date => p_lease_tenancies_tbl (i).fin_oblig_end_date
930                                                               , p_tenancy_exp_date   => p_lease_tenancies_tbl (i).expiration_date
931                                                               , x_return_status      => x_return_status
932                                                              );
933                   ----------------------dbms_output.put_line (   'FIN_OBLIG_END_DATE: '|| p_lease_tenancies_tbl (i).fin_oblig_end_date);--Rupak
934                   pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:FIN_OBLIG_END_DATE:'||p_lease_tenancies_tbl (i).fin_oblig_end_date,3);
935                   pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:EXPIRATION_DATE:'||p_lease_tenancies_tbl (i).expiration_date,3);
936 
937                  IF (x_return_status = fnd_api.g_ret_sts_error) THEN
938                      l_error_flag:='Y';
939                      p_lease_tenancies_tbl (i).error_flag:='Y';
940                      fnd_message.set_name ('PN', 'PN_FIN_OBLIGATION_DATE');
941                      fnd_message.set_token ('FIN_OBLIGATION_DATE', get_miss_date_decode(p_lease_tenancies_tbl (i).fin_oblig_end_date));
942                      fnd_message.set_token ('EXPIRE_DATE', get_miss_date_decode(p_lease_tenancies_tbl (i).expiration_date));
943                      fnd_msg_pub.ADD;
944                      RAISE fnd_api.g_exc_error;
945                  ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
946                      l_error_flag:='Y';
947                      p_lease_tenancies_tbl (i).error_flag:='Y';
948                      fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
949                      fnd_message.set_token ('COLUMN', SUBSTR(l_param_oblig_end_date,3));
950                      fnd_message.set_token ('P_TEXT', l_api_name_full||'-'||SQLERRM);
951                      fnd_msg_pub.ADD;
952                      RAISE fnd_api.g_exc_unexpected_error;
953                  END IF;
954                END IF;
955 
956 
957             IF p_lease_tenancies_tbl (i).expiration_date >= NVL(p_lease_tenancies_tbl (i).fin_oblig_end_date, p_lease_tenancies_tbl (i).expiration_date) THEN
958                  l_loc_check_end_date := p_lease_tenancies_tbl (i).expiration_date;
959             ELSE
960                l_loc_check_end_date := p_lease_tenancies_tbl (i).fin_oblig_end_date;
961             END IF;
962 
963             IF p_lease_rec.lease_class_code <> 'DIRECT'
964             THEN
965                l_asgn_mode := 'CUST';
966             ELSE
967                l_asgn_mode := 'NONE';
968             END IF;
969 
970             pnt_locations_pkg.Check_Location_Gaps(
971                             p_loc_id     => p_lease_tenancies_tbl (i).location_id
972                            ,p_str_dt     => p_lease_tenancies_tbl (i).estimated_occupancy_date --l_est_occupancy_date
973                            ,p_end_dt     => l_loc_check_end_date
974                            ,p_asgn_mode  => l_asgn_mode
975                            ,p_err_msg    => l_err_msg
976                            );
977            pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:PNT_LOCATIONS_PKG.CHECK_LOCATION_GAPS Returned Status',3);
978 
979             IF l_err_msg IS NOT NULL THEN
980                l_error_flag:='Y';
981                p_lease_tenancies_tbl (i).error_flag:='Y';
982                fnd_message.set_name('PN','PN_LOC_DATES_NOT_CONT_EXIST');
983                fnd_message.set_token('LOCATION_CODE',get_miss_char_decode(p_lease_tenancies_tbl (i).location_code));
984                fnd_message.set_token('START_DATE',get_miss_date_decode(p_lease_tenancies_tbl (i).estimated_occupancy_date));
985                fnd_message.set_token('END_DATE',l_loc_check_end_date);
986                fnd_msg_pub.ADD;
987                RAISE fnd_api.g_exc_error;
988             END IF;
989    /*******************************/
990       IF (RTRIM(LTRIM(p_operation)) = 'CREATE_TENANCIES') THEN
991                 ----------------------dbms_output.put_line('Validate : Tenancy:6');--Rupak
992                 pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Check for the Tenancy Atributes',3);
993             -- Validate the descriptive flexfields IN CREATE TENANCIES
994             /*IF NOT (    (p_lease_tenancies_tbl (i).attribute_category = pn_lease_utils.g_pn_miss_char)
995                     AND (p_lease_tenancies_tbl (i).attribute1 = pn_lease_utils.g_pn_miss_char)
996                     AND (p_lease_tenancies_tbl (i).attribute2 = pn_lease_utils.g_pn_miss_char)
997                     AND (p_lease_tenancies_tbl (i).attribute3 = pn_lease_utils.g_pn_miss_char)
998                     AND (p_lease_tenancies_tbl (i).attribute4 = pn_lease_utils.g_pn_miss_char)
999                     AND (p_lease_tenancies_tbl (i).attribute5 = pn_lease_utils.g_pn_miss_char)
1000                     AND (p_lease_tenancies_tbl (i).attribute6 = pn_lease_utils.g_pn_miss_char)
1001                     AND (p_lease_tenancies_tbl (i).attribute7 = pn_lease_utils.g_pn_miss_char)
1002                     AND (p_lease_tenancies_tbl (i).attribute8 = pn_lease_utils.g_pn_miss_char)
1003                     AND (p_lease_tenancies_tbl (i).attribute9 = pn_lease_utils.g_pn_miss_char)
1004                     AND (p_lease_tenancies_tbl (i).attribute10 = pn_lease_utils.g_pn_miss_char)
1005                     AND (p_lease_tenancies_tbl (i).attribute11 = pn_lease_utils.g_pn_miss_char)
1006                     AND (p_lease_tenancies_tbl (i).attribute12 = pn_lease_utils.g_pn_miss_char)
1007                     AND (p_lease_tenancies_tbl (i).attribute13 = pn_lease_utils.g_pn_miss_char)
1008                     AND (p_lease_tenancies_tbl (i).attribute14 = pn_lease_utils.g_pn_miss_char)
1009                     AND (p_lease_tenancies_tbl (i).attribute15 = pn_lease_utils.g_pn_miss_char))
1010             THEN*/
1011                ----------------------dbms_output.put_line('IN TENANCY ATTRIBUTES');--Rupak
1012                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Inside Tenancy Attributes',3);
1013                IF (p_lease_tenancies_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char)
1014                THEN
1015                   p_lease_tenancies_tbl(i).attribute_category := NULL;
1016               -- ELSE
1017                  -- p_lease_tenancies_tbl(i).attribute_category :=p_lease_tenancies_tbl (i).attribute_category;
1018                END IF;
1019 
1020                IF (p_lease_tenancies_tbl (i).attribute1 = pn_lease_utils.g_pn_miss_char)
1021                THEN
1022                   p_lease_tenancies_tbl(i).attribute1     := NULL;
1023              --  ELSE
1024                  -- l_lease_tenancies_rec.attribute1     := p_lease_tenancies_tbl (i).attribute1;
1025                END IF;
1026 
1027                IF (p_lease_tenancies_tbl (i).attribute2 = pn_lease_utils.g_pn_miss_char)
1028                THEN
1029                   p_lease_tenancies_tbl(i).attribute2     := NULL;
1030               -- ELSE
1031                --   l_lease_tenancies_rec.attribute2     := p_lease_tenancies_tbl (i).attribute2;
1032                END IF;
1033 
1034                IF (p_lease_tenancies_tbl (i).attribute3 = pn_lease_utils.g_pn_miss_char)
1035                THEN
1036                   p_lease_tenancies_tbl(i).attribute3     := NULL;
1037               -- ELSE
1038                --   l_lease_tenancies_rec.attribute3     := p_lease_tenancies_tbl (i).attribute3;
1039                END IF;
1040 
1041                IF (p_lease_tenancies_tbl (i).attribute4 = pn_lease_utils.g_pn_miss_char)
1042                THEN
1043                   p_lease_tenancies_tbl(i).attribute4     := NULL;
1044               -- ELSE
1045                  -- l_lease_tenancies_rec.attribute4     := p_lease_tenancies_tbl (i).attribute4;
1046                END IF;
1047 
1048                IF (p_lease_tenancies_tbl (i).attribute5 = pn_lease_utils.g_pn_miss_char)
1049                THEN
1050                   p_lease_tenancies_tbl(i).attribute5     := NULL;
1051              --  ELSE
1052                  -- l_lease_tenancies_rec.attribute5     := p_lease_tenancies_tbl (i).attribute5;
1053                END IF;
1054 
1055                IF (p_lease_tenancies_tbl (i).attribute6 = pn_lease_utils.g_pn_miss_char)
1056                THEN
1057                   p_lease_tenancies_tbl(i).attribute6     := NULL;
1058               -- ELSE
1059                  -- l_lease_tenancies_rec.attribute6     := p_lease_tenancies_tbl (i).attribute6;
1060                END IF;
1061 
1062                IF (p_lease_tenancies_tbl (i).attribute7 = pn_lease_utils.g_pn_miss_char)
1063                THEN
1064                   p_lease_tenancies_tbl(i).attribute7     := NULL;
1065              --  ELSE
1066                  -- l_lease_tenancies_rec.attribute7     := p_lease_tenancies_tbl (i).attribute7;
1067                END IF;
1068 
1069                IF (p_lease_tenancies_tbl (i).attribute8 = pn_lease_utils.g_pn_miss_char)
1070                THEN
1071                   p_lease_tenancies_tbl(i).attribute8     := NULL;
1072              --  ELSE
1073                   --l_lease_tenancies_rec.attribute8     := p_lease_tenancies_tbl (i).attribute8;
1074                END IF;
1075 
1076                IF (p_lease_tenancies_tbl (i).attribute9 = pn_lease_utils.g_pn_miss_char)
1077                THEN
1078                   p_lease_tenancies_tbl(i).attribute9     := NULL;
1079               -- ELSE
1080                 --  l_lease_tenancies_rec.attribute9     := p_lease_tenancies_tbl (i).attribute9;
1081                END IF;
1082 
1083                IF (p_lease_tenancies_tbl (i).attribute10 = pn_lease_utils.g_pn_miss_char)
1084                THEN
1085                   p_lease_tenancies_tbl(i).attribute10    := NULL;
1086               -- ELSE
1087                 --  l_lease_tenancies_rec.attribute10    := p_lease_tenancies_tbl (i).attribute10;
1088                END IF;
1089 
1090                IF (p_lease_tenancies_tbl (i).attribute11 = pn_lease_utils.g_pn_miss_char)
1091                THEN
1092                   p_lease_tenancies_tbl(i).attribute11    := NULL;
1093               -- ELSE
1094                 --  l_lease_tenancies_rec.attribute11    := p_lease_tenancies_tbl (i).attribute11;
1095                END IF;
1096 
1097                IF (p_lease_tenancies_tbl (i).attribute12 = pn_lease_utils.g_pn_miss_char)
1098                THEN
1099                   p_lease_tenancies_tbl(i).attribute12    := NULL;
1100              --  ELSE
1101                  -- l_lease_tenancies_rec.attribute12    := p_lease_tenancies_tbl (i).attribute12;
1102                END IF;
1103 
1104                IF (p_lease_tenancies_tbl (i).attribute13 = pn_lease_utils.g_pn_miss_char)
1105                THEN
1106                   p_lease_tenancies_tbl(i).attribute13    := NULL;
1107               -- ELSE
1108                  -- l_lease_tenancies_rec.attribute13    := p_lease_tenancies_tbl (i).attribute13;
1109                END IF;
1110 
1111                IF (p_lease_tenancies_tbl (i).attribute14 = pn_lease_utils.g_pn_miss_char)
1112                THEN
1113                   p_lease_tenancies_tbl(i).attribute14    := NULL;
1114              --  ELSE
1115                  -- l_lease_tenancies_rec.attribute14    := p_lease_tenancies_tbl (i).attribute14;
1116                END IF;
1117 
1118                IF (p_lease_tenancies_tbl (i).attribute15 = pn_lease_utils.g_pn_miss_char)
1119                THEN
1120                   p_lease_tenancies_tbl(i).attribute15    := NULL;
1121              --  ELSE
1122                  -- l_lease_tenancies_rec.attribute15    := p_lease_tenancies_tbl (i).attribute15;
1123                END IF;
1124         IF (get_attribute_status('PN_LOCATIONS') > 0) THEN
1125             /* get_attribute_mandatory_status('PN_LOCATIONS'
1126                                              ,p_lease_tenancies_tbl(i).attribute1
1127                                              ,p_lease_tenancies_tbl(i).attribute2
1128                                              ,p_lease_tenancies_tbl(i).attribute3
1129                                              ,p_lease_tenancies_tbl(i).attribute4
1130                                              ,p_lease_tenancies_tbl(i).attribute5
1131                                              ,p_lease_tenancies_tbl(i).attribute6
1132                                              ,p_lease_tenancies_tbl(i).attribute7
1133                                              ,p_lease_tenancies_tbl(i).attribute8
1134                                              ,p_lease_tenancies_tbl(i).attribute9
1135                                              ,p_lease_tenancies_tbl(i).attribute10
1136                                              ,p_lease_tenancies_tbl(i).attribute11
1137                                              ,p_lease_tenancies_tbl(i).attribute12
1138                                              ,p_lease_tenancies_tbl(i).attribute13
1139                                              ,p_lease_tenancies_tbl(i).attribute14
1140                                              ,p_lease_tenancies_tbl(i).attribute15
1141                                              ,x_return_status
1142                                             );
1143           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
1144               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
1145               fnd_message.set_token ('API_NAME', l_api_name_full);
1146               fnd_message.set_token ('NULL_PARAM','Required attribute in Locations/Tenancies is NULL');
1147               fnd_msg_pub.ADD;
1148               RAISE fnd_api.g_exc_error;
1149           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
1150               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
1151               fnd_message.set_token ('API_NAME', l_api_name_full);
1152               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Locations/Tenancies is NULL');
1153               fnd_msg_pub.ADD;
1154               RAISE fnd_api.g_exc_unexpected_error;
1155           ELSE*/
1156           IF NOT ((p_lease_tenancies_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute_category IS NULL)
1157                                         AND (p_lease_tenancies_tbl(i).attribute1 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute1 IS NULL)
1158                                         AND (p_lease_tenancies_tbl(i).attribute2 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute2 IS NULL)
1159                                         AND (p_lease_tenancies_tbl(i).attribute3 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute3 IS NULL)
1160                                         AND (p_lease_tenancies_tbl(i).attribute4 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute4 IS NULL)
1161                                         AND (p_lease_tenancies_tbl(i).attribute5 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute5 IS NULL)
1162                                         AND (p_lease_tenancies_tbl(i).attribute6 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute6 IS NULL)
1163                                         AND (p_lease_tenancies_tbl(i).attribute7 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute7 IS NULL)
1164                                         AND (p_lease_tenancies_tbl(i).attribute8 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute8 IS NULL)
1165                                         AND (p_lease_tenancies_tbl(i).attribute9 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute9 IS NULL)
1166                                         AND (p_lease_tenancies_tbl(i).attribute10 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute10 IS NULL)
1167                                         AND (p_lease_tenancies_tbl(i).attribute11 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute11 IS NULL)
1168                                         AND (p_lease_tenancies_tbl(i).attribute12 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute12 IS NULL)
1169                                         AND (p_lease_tenancies_tbl(i).attribute13 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute13 IS NULL)
1170                                         AND (p_lease_tenancies_tbl(i).attribute14 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute14 IS NULL)
1171                                         AND (p_lease_tenancies_tbl(i).attribute15 = pn_lease_utils.g_pn_miss_char OR p_lease_tenancies_tbl(i).attribute15 IS NULL)
1172                                 ) THEN
1173                pn_lease_utils.validate_desc_flex
1174                                            (p_api_name                    =>    'PN_LEASE_PVT'|| '.'|| 'CREATE_TENANCIES'
1175                                           , p_application_short_name      => 'PN'
1176                                           , p_desc_flex_name              => 'PN_LOCATIONS'
1177                                           , p_desc_segment1               => p_lease_tenancies_tbl(i).attribute1
1178                                           , p_desc_segment2               => p_lease_tenancies_tbl(i).attribute2
1179                                           , p_desc_segment3               => p_lease_tenancies_tbl(i).attribute3
1180                                           , p_desc_segment4               => p_lease_tenancies_tbl(i).attribute4
1181                                           , p_desc_segment5               => p_lease_tenancies_tbl(i).attribute5
1182                                           , p_desc_segment6               => p_lease_tenancies_tbl(i).attribute6
1183                                           , p_desc_segment7               => p_lease_tenancies_tbl(i).attribute7
1184                                           , p_desc_segment8               => p_lease_tenancies_tbl(i).attribute8
1185                                           , p_desc_segment9               => p_lease_tenancies_tbl(i).attribute9
1186                                           , p_desc_segment10              => p_lease_tenancies_tbl(i).attribute10
1187                                           , p_desc_segment11              => p_lease_tenancies_tbl(i).attribute11
1188                                           , p_desc_segment12              => p_lease_tenancies_tbl(i).attribute12
1189                                           , p_desc_segment13              => p_lease_tenancies_tbl(i).attribute13
1190                                           , p_desc_segment14              => p_lease_tenancies_tbl(i).attribute14
1191                                           , p_desc_segment15              => p_lease_tenancies_tbl(i).attribute15
1192                                           , p_desc_context                => p_lease_tenancies_tbl(i).attribute_category
1193                                           , p_resp_appl_id                => fnd_global.resp_appl_id
1194                                           , p_resp_id                     => fnd_global.resp_id
1195                                           , p_return_status               => x_return_status
1196                                           );
1197 
1198                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
1199                   p_lease_tenancies_tbl (i).error_flag:='Y';
1200                   fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
1201                   fnd_message.set_token ('API_NAME', l_api_name_full);
1202                   fnd_message.set_token ('NULL_PARAM','Required attribute in Tenancies/Locations is NULL');
1203                   fnd_msg_pub.ADD;
1204                   RAISE fnd_api.g_exc_error;
1205                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
1206                   p_lease_tenancies_tbl (i).error_flag:='Y';
1207                   fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
1208                   fnd_message.set_token ('API_NAME', l_api_name_full);
1209                   fnd_message.set_token ('NULL_PARAM','Required attribute in Tenancies/Locations is NULL');
1210                   fnd_msg_pub.ADD;
1211                   RAISE fnd_api.g_exc_unexpected_error;
1212                END IF;
1213             END IF;                                  -- End of attributes valitions in create tenancies
1214       END IF;
1215      END IF;
1216                ----------------------dbms_output.put_line('Validate : Tenancy:7');--Rupak
1217             IF RTRIM(LTRIM(p_operation))       = 'CREATE_TENANCIES'
1218               AND          l_error_flag        <>'Y'
1219               AND         NVL( p_validate,'F') <>'T'
1220             THEN
1221                -- CALL INSERT_TENANCIES_ROW TO INSERT TENANCY RECORD
1222                ----------------------dbms_output.put_line('B4 Insert Tenancies Row');
1223                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Calling Insert Tenancies Row',3);
1224                pn_lease_pvt.insert_tenancies_row (p_lease_tenancies_rec         => p_lease_tenancies_tbl(i)
1225                                                 , p_lease_rec                   => p_lease_rec
1226                                                 , p_lease_context               => p_lease_context
1227                                                 , x_return_status               => x_return_status);
1228 
1229                IF (x_return_status = fnd_api.g_ret_sts_success AND
1230                    p_lease_rec.lease_class_code IS NOT NULL AND
1231                    p_lease_rec.lease_class_code <> pn_lease_utils.g_pn_miss_char AND
1232                    p_lease_rec.lease_class_code <> 'DIRECT' AND
1233                    p_lease_tenancies_tbl(i).customer_id IS NOT NULL AND
1234                    p_lease_tenancies_tbl(i).customer_id <> pn_lease_utils.g_pn_miss_num)
1235                THEN
1236                       pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Calling Create_Space_Assign Begin',3);
1237                       pn_lease_pvt.Create_Space_Assign( p_lease_tenancies_rec  => p_lease_tenancies_tbl(i)
1238                                                       , x_return_status        => x_return_status);
1239                       pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:Calling Create_Space_Assign End with Status '|| x_return_status,3);
1240                END IF;
1241 
1242                IF (x_return_status = fnd_api.g_ret_sts_error)
1243                THEN
1244                   l_error_flag:='Y';
1245                   RAISE fnd_api.g_exc_error;
1246                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
1247                THEN
1248                   l_error_flag:='Y';
1249                   RAISE fnd_api.g_exc_unexpected_error;
1250                END IF;
1251             END IF;
1252             --x_return_status := fnd_api.g_ret_sts_success;
1253           EXCEPTION
1254           WHEN fnd_api.g_exc_error THEN
1255             x_return_status := fnd_api.g_ret_sts_error;
1256              -----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);--Rupak
1257             pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
1258           WHEN fnd_api.g_exc_unexpected_error THEN
1259           x_return_status := fnd_api.g_ret_sts_unexp_error;
1260              ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
1261             pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:LOOOPING:EXCEPTION:FND_API.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
1262           WHEN OTHERS THEN
1263             ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);--Rupak
1264              pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:LOOOPING:EXCEPTION:'||SQLERRM,3);
1265              x_return_status := fnd_api.g_ret_sts_error;
1266          END;
1267         END LOOP;
1268       ELSE
1269          x_return_status := fnd_api.g_ret_sts_error;
1270       END IF;
1271    END validate_tenancies_tbl;
1272 
1273 
1274    PROCEDURE update_tenancies_row (
1275       p_lease_tenancies_rec      IN OUT NOCOPY  lease_tenancies_rec
1276     , p_lease_id                 IN       NUMBER
1277     , p_lease_context            IN       VARCHAR2
1278     , x_return_status            OUT NOCOPY VARCHAR2)
1279    IS
1280       l_tenancy_ovelap_wrn       VARCHAR2 (30) := NULL;
1281       l_mutiple_lease            VARCHAR2(30)  := NULL;
1282       l_automatic_distrubution   VARCHAR2(30)  := NULL;
1283       l_overlap_tenancy          VARCHAR2(30)  := NULL;
1284       l_allocated_pct            NUMBER;
1285       l_min_pct                  NUMBER;
1286       l_loc_code                 VARCHAR2(30)  := NULL;
1287       l_loc_area                 NUMBER;
1288       l_location_code            PN_LOCATIONS.LOCATION_CODE%TYPE := p_lease_tenancies_rec.location_code;
1289 
1290       -- Get the details of Allocated area percentage
1291       CURSOR cur_alloc_pct(p_tenancy_id number) IS
1292       SELECT nvl(min(allocated_area_pct),0) allocated_area_pct
1293       FROM pn_space_assign_cust_all
1294       WHERE tenancy_id = p_tenancy_id;
1295    BEGIN
1296       ----------------------dbms_output.put_line (   'p_lease_tenancies_rec.tenancy_id'|| p_lease_tenancies_rec.tenancy_id);--Rupak
1297       pvt_debug(g_pkg_name||'-UPDATE_TENANCIES_ROW:Tenancy ID'||p_lease_tenancies_rec.tenancy_id,3);
1298       -- Initialize the return status.
1299       x_return_status                      := fnd_api.g_ret_sts_success;
1300 
1301       IF p_lease_tenancies_rec.org_id IS NULL OR NVL(pn_mo_cache_utils.check_valid_org(p_lease_tenancies_rec.org_id), 'N') <> 'Y' THEN
1302          fnd_message.set_name('MO', 'MO_ORG_INVALID');
1303          fnd_msg_pub.ADD;
1304          RAISE fnd_api.g_exc_error;
1305       END IF;
1306 
1307       l_mutiple_lease          := NVL(pn_mo_cache_utils.get_profile_value('PN_MULTIPLE_LEASE_FOR_LOCATION'
1308                                                                          , p_lease_tenancies_rec.org_id)
1309                                                                          ,'N');
1310       l_automatic_distrubution := NVL(pn_mo_cache_utils.get_profile_value('PN_AUTOMATIC_SPACE_DISTRIBUTION'
1311                                                                          , p_lease_tenancies_rec.org_id)
1312                                                                          ,'N');
1313       l_overlap_tenancy        := nvl(pn_mo_cache_utils.get_profile_value('PN_MULT_TNC_SAME_LEASE'
1314                                                                          , p_lease_tenancies_rec.org_id)
1315                                                                          ,'N');
1316 
1317       IF l_automatic_distrubution = 'N' AND (l_mutiple_lease <> 'N' OR l_overlap_tenancy <>'N') THEN
1318 
1319         pn_tenancies_pkg.get_loc_info(p_lease_tenancies_rec.location_id,
1320                                    NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
1321                                        p_lease_tenancies_rec.expiration_date,
1322                                        l_loc_code);
1323 
1324         pn_tenancies_pkg.get_allocated_area(NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
1325                                                 p_lease_tenancies_rec.expiration_date,
1326                                                 p_lease_tenancies_rec.allocated_area_pct,
1327                                                 l_loc_area
1328                                                 );
1329 
1330         pn_tenancies_pkg.Availaible_Space (p_lease_tenancies_rec.location_id,
1331                                        NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
1332                                            p_lease_tenancies_rec.expiration_date,
1333                                            l_min_pct);
1334 
1335         FOR rec_cur_alloc_pct IN cur_alloc_pct(p_lease_tenancies_rec.tenancy_id)
1336         LOOP
1337             l_allocated_pct := rec_cur_alloc_pct.allocated_area_pct;
1338         END LOOP;
1339 
1340         IF p_lease_tenancies_rec.ALLOCATED_AREA_PCT> l_min_pct + l_allocated_pct THEN
1341 
1342                 fnd_message.set_name('PN', 'PN_LOC_VACANT_AREA_LESSER');
1343                 fnd_message.set_token('LOCATION_CODE',l_location_code);
1344                 fnd_message.set_token('MAX_AREA',l_min_pct + l_allocated_pct);
1345                 fnd_msg_pub.ADD;
1346                 RAISE fnd_api.g_exc_error;
1347 
1348         END IF;
1349         p_lease_tenancies_rec.allocated_area         := l_loc_area;
1350       END IF;
1351 
1352       INIT_TENANCIES_REC( p_lease_tenancies_rec  =>  p_lease_tenancies_rec
1353                         , p_lease_context        =>  p_lease_context
1354                         , x_return_status        =>  x_return_status
1355                         );
1356 
1357       c_loc_rec := null;
1358       OPEN c_loc(p_lease_tenancies_rec.tenancy_id);
1359       FETCH c_loc into c_loc_rec;
1360       CLOSE c_loc;
1361 
1362       pn_tenancies_pkg.update_row
1363                 (x_tenancy_id                  => p_lease_tenancies_rec.tenancy_id
1364                , x_location_id                 => p_lease_tenancies_rec.location_id
1365                , x_lease_id                    => p_lease_id
1366                , x_lease_change_id             => p_lease_tenancies_rec.lease_change_id
1367                , x_tenancy_usage_lookup_code   => p_lease_tenancies_rec.tenancy_usage_lookup_code
1368                , x_primary_flag                => p_lease_tenancies_rec.primary_flag
1369                , x_estimated_occupancy_date    => p_lease_tenancies_rec.estimated_occupancy_date
1370                , x_occupancy_date              => p_lease_tenancies_rec.occupancy_date
1371                , x_expiration_date             => p_lease_tenancies_rec.expiration_date
1372                , x_assignable_flag             => p_lease_tenancies_rec.assignable_flag
1373                , x_subleaseable_flag           => p_lease_tenancies_rec.subleaseable_flag
1374                , x_tenants_proportionate_share => p_lease_tenancies_rec.tenants_proportionate_share
1375                , x_allocated_area_pct          => p_lease_tenancies_rec.allocated_area_pct
1376                , x_allocated_area              => p_lease_tenancies_rec.allocated_area
1377                , x_status                      => p_lease_tenancies_rec.status
1378                , x_attribute_category          => p_lease_tenancies_rec.attribute_category
1379                , x_attribute1                  => p_lease_tenancies_rec.attribute1
1380                , x_attribute2                  => p_lease_tenancies_rec.attribute2
1381                , x_attribute3                  => p_lease_tenancies_rec.attribute3
1382                , x_attribute4                  => p_lease_tenancies_rec.attribute4
1383                , x_attribute5                  => p_lease_tenancies_rec.attribute5
1384                , x_attribute6                  => p_lease_tenancies_rec.attribute6
1385                , x_attribute7                  => p_lease_tenancies_rec.attribute7
1386                , x_attribute8                  => p_lease_tenancies_rec.attribute8
1387                , x_attribute9                  => p_lease_tenancies_rec.attribute9
1388                , x_attribute10                 => p_lease_tenancies_rec.attribute10
1389                , x_attribute11                 => p_lease_tenancies_rec.attribute11
1390                , x_attribute12                 => p_lease_tenancies_rec.attribute12
1391                , x_attribute13                 => p_lease_tenancies_rec.attribute13
1392                , x_attribute14                 => p_lease_tenancies_rec.attribute14
1393                , x_attribute15                 => p_lease_tenancies_rec.attribute15
1394                , x_last_update_date            => SYSDATE
1395                , x_last_updated_by             => g_user_id
1396                , x_last_update_login           => fnd_global.login_id
1397                , x_tenancy_ovelap_wrn          => l_tenancy_ovelap_wrn
1398                , x_recovery_type_code          => p_lease_tenancies_rec.recovery_type_code
1399                , x_recovery_space_std_code     => p_lease_tenancies_rec.recovery_space_std_code
1400                , x_fin_oblig_end_date          => p_lease_tenancies_rec.fin_oblig_end_date
1401                , x_customer_id                 => p_lease_tenancies_rec.customer_id
1402                , x_customer_site_use_id        => p_lease_tenancies_rec.customer_site_use_id
1403                , x_lease_rentable_area         => p_lease_tenancies_rec.lease_rentable_area
1404                , x_lease_usable_area           => p_lease_tenancies_rec.lease_usable_area
1405                , x_lease_assignable_area       => p_lease_tenancies_rec.lease_assignable_area
1406                , x_lease_load_factor           => p_lease_tenancies_rec.lease_load_factor
1407                , x_location_rentable_area      => p_lease_tenancies_rec.location_rentable_area
1408                , x_location_usable_area        => p_lease_tenancies_rec.location_usable_area
1409                , x_location_assignable_area    => p_lease_tenancies_rec.location_assignable_area
1410                , x_location_load_factor        => p_lease_tenancies_rec.location_load_factor);
1411       ----------------------dbms_output.put_line ('end of tenancies_UPDATE_ROW procedure of PVT package');--Rupak
1412       pvt_debug(g_pkg_name||'-UPDATE_TENANCIES_ROW:After Updating the Tenancy Record'||p_lease_tenancies_rec.tenancy_id,3);
1413    EXCEPTION
1414       WHEN OTHERS
1415       THEN
1416          ----------------------dbms_output.put_line (   'at l_LEASE tenancies EXCEPTION: '|| SQLERRM);--Rupak
1417          x_return_status := fnd_api.g_ret_sts_error;
1418          pvt_debug(g_pkg_name||'-UPDATE_TENANCIES_ROW:Exception while updating:'||SQLERRM,3);
1419    END update_tenancies_row;
1420 
1421 
1422    PROCEDURE update_contacts_row (
1423       p_lease_contacts_rec       IN OUT NOCOPY  lease_contacts_rec
1424     , p_lease_id                 IN       NUMBER
1425     , p_lease_context            IN       VARCHAR2
1426     , x_return_status            OUT NOCOPY VARCHAR2)
1427    IS
1428    BEGIN
1429      pvt_debug(g_pkg_name||'-UPDATE_CONTACTS_ROW:Contact Assignment ID'||p_lease_contacts_rec.contact_assignment_id,3);
1430       pn_contact_assignments_pkg.update_row
1431                             (x_contact_assignment_id       => p_lease_contacts_rec.contact_assignment_id
1432                            , x_last_update_date            => SYSDATE
1433                            , x_last_updated_by             => g_user_id
1434                            , x_last_update_login           => fnd_global.login_id
1435                            , x_company_id                  => p_lease_contacts_rec.company_id
1436                            , x_company_site_id             => p_lease_contacts_rec.company_site_id
1437                            , x_lease_id                    => p_lease_contacts_rec.lease_id
1438                            , x_lease_change_id             => p_lease_contacts_rec.lease_change_id
1439                            , x_location_id                 => p_lease_contacts_rec.location_id
1440                            , x_status                      => p_lease_contacts_rec.status
1441                            , x_attribute_category          => p_lease_contacts_rec.attribute_category
1442                            , x_attribute1                  => p_lease_contacts_rec.attribute1
1443                            , x_attribute2                  => p_lease_contacts_rec.attribute2
1444                            , x_attribute3                  => p_lease_contacts_rec.attribute3
1445                            , x_attribute4                  => p_lease_contacts_rec.attribute4
1446                            , x_attribute5                  => p_lease_contacts_rec.attribute5
1447                            , x_attribute6                  => p_lease_contacts_rec.attribute6
1448                            , x_attribute7                  => p_lease_contacts_rec.attribute7
1449                            , x_attribute8                  => p_lease_contacts_rec.attribute8
1450                            , x_attribute9                  => p_lease_contacts_rec.attribute9
1451                            , x_attribute10                 => p_lease_contacts_rec.attribute10
1452                            , x_attribute11                 => p_lease_contacts_rec.attribute11
1453                            , x_attribute12                 => p_lease_contacts_rec.attribute12
1454                            , x_attribute13                 => p_lease_contacts_rec.attribute13
1455                            , x_attribute14                 => p_lease_contacts_rec.attribute14
1456                            , x_attribute15                 => p_lease_contacts_rec.attribute15
1457                            );
1458    ------------------------dbms_output.put_line('end of LEASE_UPDATE_ROW procedure of PVT package');
1459        pvt_debug(g_pkg_name||'-UPDATE_CONTACTS_ROW:Update of the Contact Record Successful'||p_lease_contacts_rec.contact_assignment_id,3);
1460    EXCEPTION
1461       WHEN OTHERS
1462       THEN
1463          NULL;
1464          ----------------------dbms_output.put_line (   'at l_LEASE CONTACTS EXCEPTION: '|| SQLERRM);
1465          pvt_debug(g_pkg_name||'-UPDATE_CONTACTS_ROW:Exception in update of the Contact Record'||SQLERRM,3);
1466    END update_contacts_row;
1467 
1468 
1469    PROCEDURE update_tenancies (
1470       p_api_version              IN       NUMBER
1471     , p_init_msg_list            IN       VARCHAR2 := fnd_api.g_false
1472     , p_commit                   IN       VARCHAR2 := fnd_api.g_false
1473     , p_validate                 IN       VARCHAR2 := fnd_api.g_false
1474     , p_lease_tenancies_tbl      IN OUT NOCOPY   lease_tenancies_tbl
1475     , p_lease_id                 IN       NUMBER
1476     , p_lease_change_id          IN       NUMBER
1477     , p_lease_context            IN       VARCHAR2
1478     , x_return_status            OUT NOCOPY VARCHAR2
1479       )
1480    IS
1481       CURSOR cur_tenancies_details (
1482          p_tenancy_id                          NUMBER)
1483       IS
1484          SELECT *
1485          FROM   pn_tenancies_all
1486          WHERE  tenancy_id = p_tenancy_id;
1487 
1488       l_api_version      CONSTANT NUMBER              := 1.0;
1489       l_api_name         CONSTANT VARCHAR2 (30)       := 'Update_Tenancies';
1490       l_api_name_full    CONSTANT VARCHAR2 (61)       :=    g_pkg_name
1491                                                          || '.'
1492                                                          || l_api_name;
1493       l_tenancies                 lease_tenancies_tbl;
1494       l_tenancies_index           BINARY_INTEGER;
1495       l_return_status             VARCHAR2 (1);
1496       l_lease_class_code          VARCHAR2 (30);
1497       l_lease_commencement_date   DATE;
1498       l_lease_termination_date    DATE;
1499       l_parent_lease_id           NUMBER;
1500       l_assign_flag               VARCHAR2 (1)        := 'N';
1501       l_lease_id                  NUMBER;
1502       l_tenancies_record_cnt      NUMBER;
1503 
1504       l_lease_rec lease_rec;
1505 
1506       l_error_count_uerr NUMBER:=0;
1507       l_error_count_err  NUMBER:=0;
1508       p NUMBER:=NULL;
1509 
1510       p_lease_tenancies_tbl_tmp lease_tenancies_tbl;
1511       p_lease_tenancies_tbl_update lease_tenancies_tbl;
1512       q NUMBER:=NULL;
1513    BEGIN
1514     pvt_debug(g_pkg_name||'-UPDATE_TENANCIES_TBL:Procedure Begin',3);
1515 
1516       -- Standard start of API savepoint
1517       -- Initialize the return status.
1518       x_return_status                      := fnd_api.g_ret_sts_success;
1519 
1520    l_lease_rec.lease_id := p_lease_id;
1521    l_lease_rec.lease_change_id := p_lease_change_id;
1522    --------------------------------------------------
1523 -- Make sure the Lease Number or Lease Id is not null
1524    ------ -------------------------------------------
1525       IF p_lease_id IS NULL
1526       THEN
1527          pn_lease_utils.add_null_parameter_msg (p_token_apiname               => l_api_name_full
1528                                               , p_token_nullparam             => 'LEASE_ID_NULL');
1529          RAISE fnd_api.g_exc_error;
1530       ELSE
1531          BEGIN
1532             SELECT pla.lease_class_code
1533                  , pld.lease_commencement_date
1534                  , pld.lease_termination_date
1535                  , pla.parent_lease_id
1536             INTO   l_lease_rec.lease_class_code
1537                  , l_lease_rec.lease_commencement_date
1538                  , l_lease_rec.lease_termination_date
1539                  , l_lease_rec.parent_lease_id
1540             FROM   pn_leases_all pla
1541                  , pn_lease_details_all pld
1542             WHERE  pla.lease_id = p_lease_id
1543             AND    pla.lease_id = pld.lease_id
1544             AND    pld.org_id = g_org_id
1545             AND    pla.org_id = g_org_id;
1546          EXCEPTION
1547             WHEN OTHERS
1548             THEN
1549                fnd_message.set_name ('PN', 'PN_INV_DRVLEASED');
1550                fnd_message.set_token ('API_NAME', l_api_name_full);
1551                fnd_message.set_token ('LEASE_ID', p_lease_id);
1552                fnd_message.set_token ('SQLERRM', SQLERRM);
1553                fnd_msg_pub.ADD;
1554                RAISE fnd_api.g_exc_error;
1555          END;
1556       END IF;
1557 
1558       ----------------------dbms_output.put_line('In Update_Tenancies:B4 validate_tenancies_tbl'||p_lease_tenancies_tbl(1).location_id);--Rupak
1559       pvt_debug(g_pkg_name||'-UPDATE_TENANCIES:Before Validating the tenancy table records',3);
1560 
1561      q:=1;
1562      FOR i IN 1..p_lease_tenancies_tbl.COUNT
1563      LOOP
1564        IF(p_lease_tenancies_tbl (i).tenancy_id IS NOT NULL OR p_lease_tenancies_tbl (i).tenancy_id <> pn_lease_utils.g_pn_miss_num) THEN
1565          pvt_debug(g_pkg_name||'-update_contacts:Assigning the tenancy table values to other table',3);
1566           p_lease_tenancies_tbl_update(q) := p_lease_tenancies_tbl (i);
1567           q:= q+1;
1568        END IF;
1569      END LOOP;
1570   IF (p_lease_tenancies_tbl_update.COUNT > 0) THEN
1571       validate_tenancies_tbl (p_lease_tenancies_tbl         => p_lease_tenancies_tbl_update
1572                             , p_lease_rec                   => l_lease_rec
1573                             , p_validate                    => p_validate
1574                             , p_lease_context               => p_lease_context
1575                             , p_operation                   => 'UPDATE_TENANCY'
1576                             , x_return_status               => x_return_status
1577                             );
1578 
1579       l_tenancies_record_cnt               := p_lease_tenancies_tbl.COUNT;
1580       l_lease_id                           := p_lease_id;
1581 
1582       FOR i IN p_lease_tenancies_tbl_update.FIRST .. p_lease_tenancies_tbl_update.LAST
1583       LOOP
1584       IF(p_lease_tenancies_tbl_update (i).tenancy_id IS NOT NULL OR p_lease_tenancies_tbl_update (i).tenancy_id <> pn_lease_utils.g_pn_miss_num) THEN
1585          l_assign_flag                        := 'N';
1586        IF (p_lease_tenancies_tbl_update(i).error_flag = 'N') THEN
1587          ----------------------dbms_output.put_line('In Update tenancies:in TABLE TYPE:p_lease_id'||p_lease_id);--Rupak
1588          pvt_debug(g_pkg_name||'-UPDATE_TENANCIES:In Table Type',3);
1589          FOR r_tenancies_details IN cur_tenancies_details (p_lease_tenancies_tbl_update (i).tenancy_id)
1590          LOOP
1591            BEGIN
1592             ----------------------dbms_output.put_line('r_tenancies_details.location_id'||r_tenancies_details.location_id);--Rupak
1593             pvt_debug(g_pkg_name||'-UPDATE_TENANCIES:R_TENANCIES_DETAILS.LOCATION_ID'||r_tenancies_details.location_id,3);
1594 
1595             IF (    (r_tenancies_details.tenancy_id = p_lease_tenancies_tbl_update (i).tenancy_id)
1596                 AND (l_assign_flag = 'N'))
1597             THEN
1598                ----------------------dbms_output.put_line('In Update Tenancy:in IF CONDITION:p_lease_id'||p_lease_id);--Rupak
1599 
1600                IF (   p_lease_tenancies_tbl_update (i).location_id IS NULL
1601                    OR p_lease_tenancies_tbl_update (i).location_id = pn_lease_utils.g_pn_miss_num)
1602                THEN
1603                   p_lease_tenancies_tbl_update (i).location_id := r_tenancies_details.location_id;
1604                END IF;
1605 
1606                IF (   p_lease_tenancies_tbl_update (i).tenancy_usage_lookup_code IS NULL
1607                    OR p_lease_tenancies_tbl_update (i).tenancy_usage_lookup_code = pn_lease_utils.g_pn_miss_char)
1608                THEN
1609                   p_lease_tenancies_tbl_update (i).tenancy_usage_lookup_code := r_tenancies_details.tenancy_usage_lookup_code;
1610                END IF;
1611 
1612                IF (   p_lease_tenancies_tbl_update (i).primary_flag IS NULL
1613                    OR p_lease_tenancies_tbl_update (i).primary_flag = pn_lease_utils.g_pn_miss_char)
1614                THEN
1615                   p_lease_tenancies_tbl_update (i).primary_flag := r_tenancies_details.primary_flag;
1616                END IF;
1617 
1618                IF (   p_lease_tenancies_tbl_update (i).estimated_occupancy_date IS NULL
1619                    OR p_lease_tenancies_tbl_update (i).estimated_occupancy_date = pn_lease_utils.g_pn_miss_date)
1620                THEN
1621                   p_lease_tenancies_tbl_update (i).estimated_occupancy_date := r_tenancies_details.estimated_occupancy_date;
1622                END IF;
1623 
1624                IF (   p_lease_tenancies_tbl_update (i).occupancy_date IS NULL
1625                    OR p_lease_tenancies_tbl_update (i).occupancy_date = pn_lease_utils.g_pn_miss_date)
1626                THEN
1627                   p_lease_tenancies_tbl_update (i).occupancy_date := r_tenancies_details.occupancy_date;
1628                END IF;
1629 
1630                IF (   p_lease_tenancies_tbl_update (i).expiration_date IS NULL
1631                    OR p_lease_tenancies_tbl_update (i).expiration_date = pn_lease_utils.g_pn_miss_date)
1632                THEN
1633                   p_lease_tenancies_tbl_update (i).expiration_date := r_tenancies_details.expiration_date;
1634                END IF;
1635 
1636                IF (   p_lease_tenancies_tbl_update (i).assignable_flag IS NULL
1637                    OR p_lease_tenancies_tbl_update (i).assignable_flag = pn_lease_utils.g_pn_miss_char)
1638                THEN
1639                   p_lease_tenancies_tbl_update (i).assignable_flag := r_tenancies_details.assignable_flag;
1640                END IF;
1641 
1642                IF (   p_lease_tenancies_tbl_update (i).subleaseable_flag IS NULL
1643                    OR p_lease_tenancies_tbl_update (i).subleaseable_flag = pn_lease_utils.g_pn_miss_char)
1644                THEN
1645                   p_lease_tenancies_tbl_update (i).subleaseable_flag := r_tenancies_details.subleaseable_flag;
1646                END IF;
1647 
1648                IF (   p_lease_tenancies_tbl_update (i).tenants_proportionate_share IS NULL
1649                    OR p_lease_tenancies_tbl_update (i).tenants_proportionate_share = pn_lease_utils.g_pn_miss_num)
1650                THEN
1651                   p_lease_tenancies_tbl_update (i).tenants_proportionate_share := r_tenancies_details.tenants_proportionate_share;
1652                END IF;
1653 
1654                IF (   p_lease_tenancies_tbl_update (i).status IS NULL
1655                    OR p_lease_tenancies_tbl_update (i).status = pn_lease_utils.g_pn_miss_char)
1656                THEN
1657                   p_lease_tenancies_tbl_update (i).status     := r_tenancies_details.status;
1658                END IF;
1659 
1660                IF (   p_lease_tenancies_tbl_update (i).recovery_type_code IS NULL
1661                    OR p_lease_tenancies_tbl_update (i).recovery_type_code = pn_lease_utils.g_pn_miss_char)
1662                THEN
1663                   p_lease_tenancies_tbl_update (i).recovery_type_code := r_tenancies_details.recovery_type_code;
1664                END IF;
1665 
1666                IF (   p_lease_tenancies_tbl_update (i).recovery_space_std_code IS NULL
1667                    OR p_lease_tenancies_tbl_update (i).recovery_space_std_code = pn_lease_utils.g_pn_miss_char)
1668                THEN
1669                   p_lease_tenancies_tbl_update (i).recovery_space_std_code := r_tenancies_details.recovery_space_std_code;
1670                END IF;
1671 
1672                IF (   p_lease_tenancies_tbl_update (i).fin_oblig_end_date IS NULL
1673                    OR p_lease_tenancies_tbl_update (i).fin_oblig_end_date = pn_lease_utils.g_pn_miss_date)
1674                THEN
1675                   p_lease_tenancies_tbl_update (i).fin_oblig_end_date := r_tenancies_details.fin_oblig_end_date;
1676                END IF;
1677 
1678                IF (   p_lease_tenancies_tbl_update (i).customer_site_use_id IS NULL
1679                    OR p_lease_tenancies_tbl_update (i).customer_site_use_id = pn_lease_utils.g_pn_miss_num)
1680                THEN
1681                   p_lease_tenancies_tbl_update (i).customer_site_use_id := r_tenancies_details.customer_site_use_id;
1682                END IF;
1683 
1684                IF (   p_lease_tenancies_tbl_update (i).lease_rentable_area IS NULL
1685                    OR p_lease_tenancies_tbl_update (i).lease_rentable_area = pn_lease_utils.g_pn_miss_num)
1686                THEN
1687                   p_lease_tenancies_tbl_update (i).lease_rentable_area := r_tenancies_details.lease_rentable_area;
1688                END IF;
1689 
1690                IF (   p_lease_tenancies_tbl_update (i).lease_usable_area IS NULL
1691                    OR p_lease_tenancies_tbl_update (i).lease_usable_area = pn_lease_utils.g_pn_miss_num)
1692                THEN
1693                   p_lease_tenancies_tbl_update (i).lease_usable_area := r_tenancies_details.lease_usable_area;
1694                END IF;
1695 
1696                IF (   p_lease_tenancies_tbl_update (i).lease_assignable_area IS NULL
1697                    OR p_lease_tenancies_tbl_update (i).lease_assignable_area = pn_lease_utils.g_pn_miss_num)
1698                THEN
1699                   p_lease_tenancies_tbl_update (i).lease_assignable_area := r_tenancies_details.lease_assignable_area;
1700                END IF;
1701 
1702                IF (   p_lease_tenancies_tbl_update (i).lease_load_factor IS NULL
1703                    OR p_lease_tenancies_tbl_update (i).lease_load_factor = pn_lease_utils.g_pn_miss_num)
1704                THEN
1705                   p_lease_tenancies_tbl_update (i).lease_load_factor :=  r_tenancies_details.lease_load_factor;
1706                END IF;
1707 
1708                IF (   p_lease_tenancies_tbl_update (i).location_rentable_area IS NULL
1709                    OR p_lease_tenancies_tbl_update (i).location_rentable_area =  pn_lease_utils.g_pn_miss_num)
1710                THEN
1711                   p_lease_tenancies_tbl_update (i).location_rentable_area := r_tenancies_details.location_rentable_area;
1712                END IF;
1713 
1714                IF (   p_lease_tenancies_tbl_update (i).location_usable_area IS NULL
1715                    OR p_lease_tenancies_tbl_update (i).location_usable_area = pn_lease_utils.g_pn_miss_num)
1716                THEN
1717                   p_lease_tenancies_tbl_update (i).location_usable_area := r_tenancies_details.location_usable_area;
1718                END IF;
1719 
1720                IF (   p_lease_tenancies_tbl_update (i).location_assignable_area IS NULL
1721                    OR p_lease_tenancies_tbl_update (i).location_assignable_area = pn_lease_utils.g_pn_miss_num)
1722                THEN
1723                   p_lease_tenancies_tbl_update (i).location_assignable_area := r_tenancies_details.location_assignable_area;
1724                END IF;
1725 
1726                IF (   p_lease_tenancies_tbl_update (i).location_load_factor IS NULL
1727                    OR p_lease_tenancies_tbl_update (i).location_load_factor = pn_lease_utils.g_pn_miss_num)
1728                THEN
1729                   p_lease_tenancies_tbl_update (i).location_load_factor := r_tenancies_details.location_load_factor;
1730                END IF;
1731 
1732                IF (   p_lease_tenancies_tbl_update (i).allocated_area IS NULL
1733                    OR p_lease_tenancies_tbl_update (i).allocated_area = pn_lease_utils.g_pn_miss_num)
1734                THEN
1735                   p_lease_tenancies_tbl_update (i).allocated_area := r_tenancies_details.allocated_area;
1736                END IF;
1737 
1738                IF (   p_lease_tenancies_tbl_update (i).allocated_area_pct IS NULL
1739                    OR p_lease_tenancies_tbl_update (i).allocated_area_pct = pn_lease_utils.g_pn_miss_num)
1740                THEN
1741                   p_lease_tenancies_tbl_update (i).allocated_area_pct := r_tenancies_details.allocated_area_pct;
1742                END IF;
1743 
1744                IF (   p_lease_tenancies_tbl_update (i).lease_change_id IS NULL
1745                    OR p_lease_tenancies_tbl_update (i).lease_change_id = pn_lease_utils.g_pn_miss_num)
1746                THEN
1747                   p_lease_tenancies_tbl_update (i).lease_change_id := r_tenancies_details.lease_change_id;
1748                END IF;
1749 
1750                ------------------------dbms_output.put_line('IN TENANCY ATTRIBUTES');
1751 
1752         IF NOT ((p_lease_tenancies_tbl_update(i).attribute_category = pn_lease_utils.g_pn_miss_char)
1753                       AND (p_lease_tenancies_tbl_update(i).attribute1 = pn_lease_utils.g_pn_miss_char)
1754                       AND (p_lease_tenancies_tbl_update(i).attribute2 = pn_lease_utils.g_pn_miss_char)
1755                       AND (p_lease_tenancies_tbl_update(i).attribute3 = pn_lease_utils.g_pn_miss_char)
1756                       AND (p_lease_tenancies_tbl_update(i).attribute4 = pn_lease_utils.g_pn_miss_char)
1757                       AND (p_lease_tenancies_tbl_update(i).attribute5 = pn_lease_utils.g_pn_miss_char)
1758                       AND (p_lease_tenancies_tbl_update(i).attribute6 = pn_lease_utils.g_pn_miss_char)
1759                       AND (p_lease_tenancies_tbl_update(i).attribute7 = pn_lease_utils.g_pn_miss_char)
1760                       AND (p_lease_tenancies_tbl_update(i).attribute8 = pn_lease_utils.g_pn_miss_char)
1761                       AND (p_lease_tenancies_tbl_update(i).attribute9 = pn_lease_utils.g_pn_miss_char)
1762                       AND (p_lease_tenancies_tbl_update(i).attribute10 = pn_lease_utils.g_pn_miss_char)
1763                       AND (p_lease_tenancies_tbl_update(i).attribute11 = pn_lease_utils.g_pn_miss_char)
1764                       AND (p_lease_tenancies_tbl_update(i).attribute12 = pn_lease_utils.g_pn_miss_char)
1765                       AND (p_lease_tenancies_tbl_update(i).attribute13 = pn_lease_utils.g_pn_miss_char)
1766                       AND (p_lease_tenancies_tbl_update(i).attribute14 = pn_lease_utils.g_pn_miss_char)
1767                       AND (p_lease_tenancies_tbl_update(i).attribute15 = pn_lease_utils.g_pn_miss_char)
1768                      )
1769                  THEN
1770                IF (p_lease_tenancies_tbl_update (i).attribute_category = pn_lease_utils.g_pn_miss_char)
1771                THEN
1772                  p_lease_tenancies_tbl_update (i).attribute_category := r_tenancies_details.attribute_category;
1773                END IF;
1774 
1775                IF (p_lease_tenancies_tbl_update (i).attribute1 = pn_lease_utils.g_pn_miss_char)
1776                THEN
1777                  p_lease_tenancies_tbl_update (i).attribute1 := r_tenancies_details.attribute1;
1778                END IF;
1779                IF (p_lease_tenancies_tbl_update (i).attribute2 = pn_lease_utils.g_pn_miss_char)
1780                THEN
1781                  p_lease_tenancies_tbl_update (i).attribute2 := r_tenancies_details.attribute2;
1782                END IF;
1783                IF (p_lease_tenancies_tbl_update (i).attribute3 = pn_lease_utils.g_pn_miss_char)
1784                THEN
1785                  p_lease_tenancies_tbl_update (i).attribute3 := r_tenancies_details.attribute3;
1786                END IF;
1787                IF (p_lease_tenancies_tbl_update (i).attribute4 = pn_lease_utils.g_pn_miss_char)
1788                THEN
1789                  p_lease_tenancies_tbl_update (i).attribute4 := r_tenancies_details.attribute4;
1790                END IF;
1791                IF (p_lease_tenancies_tbl_update (i).attribute5 = pn_lease_utils.g_pn_miss_char)
1792                THEN
1793                  p_lease_tenancies_tbl_update (i).attribute5 := r_tenancies_details.attribute5;
1794                END IF;
1795                IF (p_lease_tenancies_tbl_update (i).attribute6 = pn_lease_utils.g_pn_miss_char)
1796                THEN
1797                  p_lease_tenancies_tbl_update (i).attribute6 := r_tenancies_details.attribute6;
1798                END IF;
1799                IF (p_lease_tenancies_tbl_update (i).attribute7 = pn_lease_utils.g_pn_miss_char)
1800                THEN
1801                  p_lease_tenancies_tbl_update (i).attribute7 := r_tenancies_details.attribute7;
1802                END IF;
1803                IF (p_lease_tenancies_tbl_update (i).attribute8 = pn_lease_utils.g_pn_miss_char)
1804                THEN
1805                  p_lease_tenancies_tbl_update (i).attribute8 := r_tenancies_details.attribute8;
1806                END IF;
1807                IF (p_lease_tenancies_tbl_update (i).attribute9 = pn_lease_utils.g_pn_miss_char)
1808                THEN
1809                  p_lease_tenancies_tbl_update (i).attribute9 := r_tenancies_details.attribute9;
1810                END IF;
1811                IF (p_lease_tenancies_tbl_update (i).attribute10 = pn_lease_utils.g_pn_miss_char)
1812                THEN
1813                  p_lease_tenancies_tbl_update (i).attribute10 := r_tenancies_details.attribute10;
1814                END IF;
1815                IF (p_lease_tenancies_tbl_update (i).attribute11 = pn_lease_utils.g_pn_miss_char)
1816                THEN
1817                  p_lease_tenancies_tbl_update (i).attribute11 := r_tenancies_details.attribute11;
1818                END IF;
1819                IF (p_lease_tenancies_tbl_update (i).attribute12 = pn_lease_utils.g_pn_miss_char)
1820                THEN
1821                  p_lease_tenancies_tbl_update (i).attribute12 := r_tenancies_details.attribute12;
1822                END IF;
1823                IF (p_lease_tenancies_tbl_update (i).attribute13 = pn_lease_utils.g_pn_miss_char)
1824                THEN
1825                  p_lease_tenancies_tbl_update (i).attribute13 := r_tenancies_details.attribute13;
1826                END IF;
1827                IF (p_lease_tenancies_tbl_update (i).attribute14 = pn_lease_utils.g_pn_miss_char)
1828                THEN
1829                  p_lease_tenancies_tbl_update (i).attribute14 := r_tenancies_details.attribute14;
1830                END IF;
1831 
1832                IF (p_lease_tenancies_tbl_update (i).attribute15 = pn_lease_utils.g_pn_miss_char)
1833                THEN
1834                  p_lease_tenancies_tbl_update (i).attribute15 := r_tenancies_details.attribute15;
1835                END IF;
1836 
1837 
1838                pn_lease_utils.validate_desc_flex
1839                                      (p_api_name                    => l_api_name_full
1840                                     , p_application_short_name      => 'PN'
1841                                     , p_desc_flex_name              => 'PN_LOCATIONS'
1842                                     , p_desc_segment1               => p_lease_tenancies_tbl_update (i).attribute1
1843                                     , p_desc_segment2               => p_lease_tenancies_tbl_update (i).attribute2
1844                                     , p_desc_segment3               => p_lease_tenancies_tbl_update (i).attribute3
1845                                     , p_desc_segment4               => p_lease_tenancies_tbl_update (i).attribute4
1846                                     , p_desc_segment5               => p_lease_tenancies_tbl_update (i).attribute5
1847                                     , p_desc_segment6               => p_lease_tenancies_tbl_update (i).attribute6
1848                                     , p_desc_segment7               => p_lease_tenancies_tbl_update (i).attribute7
1849                                     , p_desc_segment8               => p_lease_tenancies_tbl_update (i).attribute8
1850                                     , p_desc_segment9               => p_lease_tenancies_tbl_update (i).attribute9
1851                                     , p_desc_segment10              => p_lease_tenancies_tbl_update (i).attribute10
1852                                     , p_desc_segment11              => p_lease_tenancies_tbl_update (i).attribute11
1853                                     , p_desc_segment12              => p_lease_tenancies_tbl_update (i).attribute12
1854                                     , p_desc_segment13              => p_lease_tenancies_tbl_update (i).attribute13
1855                                     , p_desc_segment14              => p_lease_tenancies_tbl_update (i).attribute14
1856                                     , p_desc_segment15              => p_lease_tenancies_tbl_update (i).attribute15
1857                                     , p_desc_context                => p_lease_tenancies_tbl_update (i).attribute_category
1858                                     , p_resp_appl_id                => fnd_global.resp_appl_id
1859                                     , p_resp_id                     => fnd_global.resp_id
1860                                     , p_return_status               => x_return_status
1861                                     );
1862 
1863                IF (x_return_status = fnd_api.g_ret_sts_error)
1864                THEN
1865                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
1866                  fnd_message.set_token ('COLUMN', 'PN_TENANCIES_DESC_FILEDS');
1867                  fnd_message.set_token ('P_TEXT', 'PN_TENANCIES'|| '-'|| SQLERRM);
1868                  fnd_msg_pub.ADD;
1869                  RAISE fnd_api.g_exc_error;
1870                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
1871                fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
1872                  fnd_message.set_token ('COLUMN', 'PN_TENANCIES_DESC_FILEDS');
1873                  fnd_message.set_token ('P_TEXT', 'PN_TENANCIES'|| '-'|| SQLERRM);
1874                   fnd_msg_pub.ADD;
1875                   RAISE fnd_api.g_exc_unexpected_error;
1876                END IF;
1877       END IF;
1878 
1879              ----------------------dbms_output.put_line('In Update tenancies B4 Update tenancy');--Rupak
1880               pvt_debug(g_pkg_name||'-UPDATE_TENANCIES:Calling UPDATE_TENANCIES_ROW',3);
1881                update_tenancies_row (p_lease_tenancies_rec         => p_lease_tenancies_tbl_update (i)
1882                                    , p_lease_id                    => p_lease_id
1883                                    , p_lease_context               => p_lease_context
1884                                    , x_return_status               => x_return_status
1885                                    );
1886 
1887                IF (x_return_status = fnd_api.g_ret_sts_success) THEN
1888 
1889                       IF l_lease_rec.lease_class_code <> 'DIRECT' AND
1890                         (nvl(p_lease_tenancies_tbl_update(i).location_id,-99)             <> nvl(c_loc_rec.location_id,-99) OR
1891                         (nvl(p_lease_tenancies_tbl_update(i).occupancy_date,p_lease_tenancies_tbl_update(i).estimated_occupancy_date) <>
1892                          nvl(c_loc_rec.occupancy_date,c_loc_rec.estimated_occupancy_date)) OR
1893                          nvl(p_lease_tenancies_tbl_update(i).expiration_date,sysdate)     <> nvl(c_loc_rec.expiration_date,sysdate) OR
1894                          nvl(p_lease_tenancies_tbl_update(i).customer_id,-99)             <> nvl(c_loc_rec.customer_id,-99) OR
1895                          nvl(p_lease_tenancies_tbl_update(i).customer_site_use_id,-99)    <> nvl(c_loc_rec.customer_site_use_id,-99) OR
1896                          nvl(p_lease_tenancies_tbl_update(i).recovery_type_code,' ')      <> nvl(c_loc_rec.recovery_type_code,' ') OR
1897                          nvl(p_lease_tenancies_tbl_update(i).recovery_space_std_code,' ') <> nvl(c_loc_rec.recovery_space_std_code,' ') OR
1898                          nvl(p_lease_tenancies_tbl_update(i).fin_oblig_end_date,sysdate)  <> nvl(c_loc_rec.fin_oblig_end_date,sysdate) OR
1899                          nvl(p_lease_tenancies_tbl_update(i).allocated_area_pct,-99)      <> nvl(c_loc_rec.allocated_area_pct,-99)) THEN
1900 
1901                              pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES:Calling Update_Space_Assign Begin',3);
1902                              pn_lease_pvt.Update_Space_Assign( p_lease_tenancies_rec  => p_lease_tenancies_tbl_update(i)
1903                                                              , x_return_status        => x_return_status);
1904                              pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES:Calling Update_Space_Assign End with Status '|| x_return_status,3);
1905                       END IF;
1906                END IF;
1907 
1908                IF (x_return_status = fnd_api.g_ret_sts_error)
1909                THEN
1910                   RAISE fnd_api.g_exc_error;
1911                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
1912                THEN
1913                   RAISE fnd_api.g_exc_unexpected_error;
1914                END IF;
1915 
1916                l_assign_flag                        := 'Y';
1917             END IF;
1918           EXCEPTION
1919           WHEN fnd_api.g_exc_error THEN
1920             x_return_status := fnd_api.g_ret_sts_error;
1921             pvt_debug(g_pkg_name||'-update_tenancies:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
1922           WHEN OTHERS THEN
1923              x_return_status := fnd_api.g_ret_sts_unexp_error;
1924              pvt_debug(g_pkg_name||'-update_tenancies:LOOOPING:EXCEPTION:'||SQLERRM,3);
1925            END;
1926 
1927          END LOOP;
1928         END IF;--Error Flag Check
1929        END IF; --ID NULL CHECK
1930       END LOOP;
1931   END IF;
1932     --If Tenancy ID is not given
1933      p:=1;
1934      FOR i IN 1..p_lease_tenancies_tbl.COUNT
1935      LOOP
1936        IF(p_lease_tenancies_tbl (i).tenancy_id IS NULL OR p_lease_tenancies_tbl (i).tenancy_id = pn_lease_utils.g_pn_miss_num) THEN
1937          pvt_debug(g_pkg_name||'-update_contacts:Assigning the tenancy table values to other table',3);
1938           p_lease_tenancies_tbl_tmp(p) := p_lease_tenancies_tbl (i);
1939           p:= p+1;
1940        END IF;
1941      END LOOP;
1942 
1943      pvt_debug(g_pkg_name||'-update_contacts:Inserting the values of tenancy record as ID is not passed for this record',3);
1944 
1945      IF(p_lease_tenancies_tbl_tmp.COUNT > 0) THEN
1946        validate_tenancies_tbl (p_lease_tenancies_tbl         => p_lease_tenancies_tbl_tmp
1947                             , p_lease_rec                   => l_lease_rec
1948                             , p_validate                    => p_validate
1949                             , p_lease_context               => p_lease_context
1950                             , p_operation                   => 'CREATE_TENANCIES'
1951                             , x_return_status               => x_return_status
1952                             );
1953         pvt_debug(g_pkg_name||'-update_tenancies:Inserting the values of tenancy record return Status'||x_return_status,3);
1954      ELSE
1955        pvt_debug(g_pkg_name||'-update_tenancies:the temperory table is with out any records',3);
1956      END IF;
1957      EXCEPTION
1958        WHEN OTHERS THEN
1959           pvt_debug(g_pkg_name||'-update_tenancies:MAIN:EXCEPTION'||SQLERRM,3);
1960           x_return_status := fnd_api.g_ret_sts_error;
1961    END update_tenancies;
1962 
1963 
1964    PROCEDURE update_contacts (
1965       p_api_version              IN       NUMBER
1966     , p_init_msg_list            IN       VARCHAR2 := fnd_api.g_false
1967     , p_commit                   IN       VARCHAR2 := fnd_api.g_false
1968     , p_validate                 IN       VARCHAR2 := fnd_api.g_false
1969     , p_lease_contacts_tbl       IN OUT NOCOPY  lease_contacts_tbl
1970     , p_lease_id                 IN       NUMBER
1971     , p_lease_change_id          IN       NUMBER
1972     , p_lease_context            IN       VARCHAR2
1973     , x_return_status            OUT NOCOPY VARCHAR2
1974     , x_msg_count                OUT NOCOPY NUMBER
1975     , x_msg_data                 OUT NOCOPY VARCHAR2)
1976    IS
1977       CURSOR cur_contacts_details (l_lease_id NUMBER)
1978       IS
1979          SELECT *
1980          FROM   pn_contact_assignments_all
1981          WHERE  lease_id = p_lease_id;
1982 
1983       l_assign_flag              VARCHAR2 (1)  := 'N';
1984       l_contact_record_cnt       NUMBER        := pn_lease_utils.g_pn_miss_num;
1985       x_conct_return_status      VARCHAR2 (1);
1986       l_return_status            VARCHAR2 (1);
1987       l_lease_id                 NUMBER;
1988       l_api_version     CONSTANT NUMBER        := 1.0;
1989       l_api_name        CONSTANT VARCHAR2 (30) := 'UPDATE_CONTACTS';
1990       l_api_name_full   CONSTANT VARCHAR2 (61) :=    g_pkg_name|| '.'|| l_api_name;
1991 
1992       l_lease_rec lease_rec;
1993       p_lease_contacts_tbl_tmp lease_contacts_tbl;
1994       p_lease_contacts_tbl_update lease_contacts_tbl;
1995       p NUMBER:=NULL;
1996       q NUMBER:=NULL;
1997    BEGIN
1998     l_lease_rec.lease_id := p_lease_id;
1999     l_lease_rec.lease_change_id := p_lease_change_id;
2000       ------------------------dbms_output.put_line('In Update Contacts:B4 VALIDATE_CONTACTS_TBL Calling;p_lease_id:'||p_lease_id);
2001       pvt_debug(g_pkg_name||'-UPDATE_CONTACTS:Calling VALIDATE_CONTACTS_TBL',3);
2002 
2003      q:=1;
2004      FOR i IN 1..p_lease_contacts_tbl.COUNT
2005      LOOP
2006        IF(p_lease_contacts_tbl (i).contact_assignment_id IS NOT NULL OR p_lease_contacts_tbl (i).contact_assignment_id <> pn_lease_utils.g_pn_miss_num) THEN
2007          pvt_debug(g_pkg_name||'-update_contacts:Assigning the contact table values to other table',3);
2008           p_lease_contacts_tbl_update(q) := p_lease_contacts_tbl (i);
2009           q:= q+1;
2010        END IF;
2011      END LOOP;
2012 
2013    IF(p_lease_contacts_tbl_update.COUNT > 0) THEN
2014       validate_contacts_tbl (p_lease_contacts_tbl          => p_lease_contacts_tbl_update
2015                            , p_lease_rec                   => l_lease_rec
2016                            , p_validate                    => p_validate
2017                            , p_lease_context               => p_lease_context
2018                            , p_operation                   => 'UPDATE_CONTACTS'
2019                            , x_return_status               => x_return_status);
2020       ------------------------dbms_output.put_line('In Update Contacts:After VALIDATE_CONTACTS_TBL Calling'||p_lease_contacts_tbl_update(1).role);
2021       ------------------------dbms_output.put_line('In Update Contacts:After VALIDATE_CONTACTS_TBL Calling'||p_lease_contacts_tbl_update(1).company_id);
2022       l_contact_record_cnt                 := p_lease_contacts_tbl_update.COUNT;
2023       l_lease_id                           := p_lease_id;
2024 
2025     FOR i IN p_lease_contacts_tbl_update.FIRST .. p_lease_contacts_tbl_update.LAST
2026     LOOP
2027     IF(p_lease_contacts_tbl_update (i).contact_assignment_id IS NOT NULL OR p_lease_contacts_tbl_update (i).contact_assignment_id <> pn_lease_utils.g_pn_miss_num) THEN
2028          l_assign_flag                        := 'N';
2029        IF (p_lease_contacts_tbl_update (i).error_flag = 'N') THEN
2030          ------------------------dbms_output.put_line('In Update Contacts:in TABLE TYPE:p_lease_id'||p_lease_id);
2031          FOR r_contact_details IN cur_contacts_details (l_lease_id)
2032          LOOP
2033             ------------------------dbms_output.put_line('r_contact_details.company_id;'||r_contact_details.company_id);
2034           BEGIN
2035             IF ((r_contact_details.contact_assignment_id =p_lease_contacts_tbl_update (i).contact_assignment_id) AND (l_assign_flag = 'N')) THEN
2036                ----------------------dbms_output.put_line (   'In Update Contacts:in IF CONDITION:p_lease_id'|| p_lease_id);
2037 
2038                IF (   p_lease_contacts_tbl_update (i).company_id IS NULL
2039                    OR p_lease_contacts_tbl_update (i).company_id = pn_lease_utils.g_pn_miss_num)
2040                THEN
2041                   p_lease_contacts_tbl_update (i).company_id  := r_contact_details.company_id;
2042                END IF;
2043 
2044                IF (   p_lease_contacts_tbl_update (i).company_site_id IS NULL
2045                    OR p_lease_contacts_tbl_update (i).company_site_id = pn_lease_utils.g_pn_miss_num)
2046                THEN
2047                   p_lease_contacts_tbl_update (i).company_site_id := r_contact_details.company_site_id;
2048                END IF;
2049 
2050                IF (   p_lease_contacts_tbl_update (i).location_id IS NULL
2051                    OR p_lease_contacts_tbl_update (i).location_id = pn_lease_utils.g_pn_miss_num)
2052                THEN
2053                   p_lease_contacts_tbl_update (i).location_id := r_contact_details.location_id;
2054                END IF;
2055 
2056                IF (   p_lease_contacts_tbl_update (i).status IS NULL
2057                    OR p_lease_contacts_tbl_update (i).status = pn_lease_utils.g_pn_miss_char)
2058                THEN
2059                   p_lease_contacts_tbl_update (i).status      := r_contact_details.status;
2060                END IF;
2061 
2062                IF (   p_lease_contacts_tbl_update (i).lease_change_id IS NULL
2063                    OR p_lease_contacts_tbl_update (i).lease_change_id = pn_lease_utils.g_pn_miss_num)
2064                THEN
2065                   p_lease_contacts_tbl_update (i).lease_change_id := r_contact_details.lease_change_id;
2066                END IF;
2067 
2068                p_lease_contacts_tbl_update (i).lease_id    := p_lease_id;
2069 
2070                ------------------------dbms_output.put_line(' p_lease_contacts_tbl_update(i).lease_id'|| p_lease_contacts_tbl_update(i).lease_id);
2071 
2072                IF NOT ((p_lease_contacts_tbl_update(i).attribute_category = pn_lease_utils.g_pn_miss_char)
2073                       AND (p_lease_contacts_tbl_update(i).attribute1 = pn_lease_utils.g_pn_miss_char)
2074                       AND (p_lease_contacts_tbl_update(i).attribute2 = pn_lease_utils.g_pn_miss_char)
2075                       AND (p_lease_contacts_tbl_update(i).attribute3 = pn_lease_utils.g_pn_miss_char)
2076                       AND (p_lease_contacts_tbl_update(i).attribute4 = pn_lease_utils.g_pn_miss_char)
2077                       AND (p_lease_contacts_tbl_update(i).attribute5 = pn_lease_utils.g_pn_miss_char)
2078                       AND (p_lease_contacts_tbl_update(i).attribute6 = pn_lease_utils.g_pn_miss_char)
2079                       AND (p_lease_contacts_tbl_update(i).attribute7 = pn_lease_utils.g_pn_miss_char)
2080                       AND (p_lease_contacts_tbl_update(i).attribute8 = pn_lease_utils.g_pn_miss_char)
2081                       AND (p_lease_contacts_tbl_update(i).attribute9 = pn_lease_utils.g_pn_miss_char)
2082                       AND (p_lease_contacts_tbl_update(i).attribute10 = pn_lease_utils.g_pn_miss_char)
2083                       AND (p_lease_contacts_tbl_update(i).attribute11 = pn_lease_utils.g_pn_miss_char)
2084                       AND (p_lease_contacts_tbl_update(i).attribute12 = pn_lease_utils.g_pn_miss_char)
2085                       AND (p_lease_contacts_tbl_update(i).attribute13 = pn_lease_utils.g_pn_miss_char)
2086                       AND (p_lease_contacts_tbl_update(i).attribute14 = pn_lease_utils.g_pn_miss_char)
2087                       AND (p_lease_contacts_tbl_update(i).attribute15 = pn_lease_utils.g_pn_miss_char)
2088                      )
2089                  THEN
2090                ------------------------dbms_output.put_line('IN CONTACT ATTRIBUTES');
2091                IF (p_lease_contacts_tbl_update (i).attribute_category = pn_lease_utils.g_pn_miss_char)
2092                THEN
2093                   p_lease_contacts_tbl_update (i).attribute_category := NULL;
2094                ELSE
2095                   p_lease_contacts_tbl_update (i).attribute_category := r_contact_details.attribute_category;
2096                END IF;
2097 
2098                IF (p_lease_contacts_tbl_update (i).attribute1 = pn_lease_utils.g_pn_miss_char)
2099                THEN
2100                   p_lease_contacts_tbl_update (i).attribute1  := NULL;
2101                   NULL;
2102                ELSE
2103                   p_lease_contacts_tbl_update (i).attribute1  := r_contact_details.attribute1;
2104                END IF;
2105 
2106                IF (p_lease_contacts_tbl_update (i).attribute2 = pn_lease_utils.g_pn_miss_char)
2107                THEN
2108                   p_lease_contacts_tbl_update (i).attribute2  := NULL;
2109                ELSE
2110                   p_lease_contacts_tbl_update (i).attribute2  := r_contact_details.attribute2;
2111                END IF;
2112 
2113                IF (p_lease_contacts_tbl_update (i).attribute3 = pn_lease_utils.g_pn_miss_char)
2114                THEN
2115                   p_lease_contacts_tbl_update (i).attribute3  := NULL;
2116                ELSE
2117                   p_lease_contacts_tbl_update (i).attribute3  := r_contact_details.attribute3;
2118                END IF;
2119 
2120                IF (p_lease_contacts_tbl_update (i).attribute4 = pn_lease_utils.g_pn_miss_char)
2121                THEN
2122                   p_lease_contacts_tbl_update (i).attribute4  := NULL;
2123                ELSE
2124                   p_lease_contacts_tbl_update (i).attribute4  := r_contact_details.attribute4;
2125                END IF;
2126 
2127                IF (p_lease_contacts_tbl_update (i).attribute5 = pn_lease_utils.g_pn_miss_char)
2128                THEN
2129                   p_lease_contacts_tbl_update (i).attribute5  := NULL;
2130                ELSE
2131                   p_lease_contacts_tbl_update (i).attribute5  := r_contact_details.attribute5;
2132                END IF;
2133 
2134                IF (p_lease_contacts_tbl_update (i).attribute6 = pn_lease_utils.g_pn_miss_char)
2135                THEN
2136                   p_lease_contacts_tbl_update (i).attribute6  := NULL;
2137                ELSE
2138                   p_lease_contacts_tbl_update (i).attribute6  := r_contact_details.attribute6;
2139                END IF;
2140 
2141                IF (p_lease_contacts_tbl_update (i).attribute7 = pn_lease_utils.g_pn_miss_char)
2142                THEN
2143                   p_lease_contacts_tbl_update (i).attribute7  := NULL;
2144                ELSE
2145                   p_lease_contacts_tbl_update (i).attribute7  := r_contact_details.attribute7;
2146                END IF;
2147 
2148                IF (p_lease_contacts_tbl_update (i).attribute8 = pn_lease_utils.g_pn_miss_char)
2149                THEN
2150                   p_lease_contacts_tbl_update (i).attribute8  := NULL;
2151                ELSE
2152                   p_lease_contacts_tbl_update (i).attribute8  := r_contact_details.attribute8;
2153                END IF;
2154 
2155                IF (p_lease_contacts_tbl_update (i).attribute9 = pn_lease_utils.g_pn_miss_char)
2156                THEN
2157                   p_lease_contacts_tbl_update (i).attribute9  := NULL;
2158                ELSE
2159                   p_lease_contacts_tbl_update (i).attribute9  := r_contact_details.attribute9;
2160                END IF;
2161 
2162                IF (p_lease_contacts_tbl_update (i).attribute10 = pn_lease_utils.g_pn_miss_char)
2163                THEN
2164                   p_lease_contacts_tbl_update (i).attribute10 := NULL;
2165                ELSE
2166                   p_lease_contacts_tbl_update (i).attribute10 := r_contact_details.attribute10;
2167                END IF;
2168 
2169                IF (p_lease_contacts_tbl_update (i).attribute11 = pn_lease_utils.g_pn_miss_char)
2170                THEN
2171                   p_lease_contacts_tbl_update (i).attribute11 := NULL;
2172                ELSE
2173                   p_lease_contacts_tbl_update (i).attribute11 := r_contact_details.attribute11;
2174                END IF;
2175 
2176                IF (p_lease_contacts_tbl_update (i).attribute12 = pn_lease_utils.g_pn_miss_char)
2177                THEN
2178                   p_lease_contacts_tbl_update (i).attribute12 := NULL;
2179                ELSE
2180                   p_lease_contacts_tbl_update (i).attribute12 := r_contact_details.attribute12;
2181                END IF;
2182 
2183                IF (p_lease_contacts_tbl_update (i).attribute13 = pn_lease_utils.g_pn_miss_char)
2184                THEN
2185                   p_lease_contacts_tbl_update (i).attribute13 := NULL;
2186                ELSE
2187                   p_lease_contacts_tbl_update (i).attribute13 := r_contact_details.attribute13;
2188                END IF;
2189 
2190                IF (p_lease_contacts_tbl_update (i).attribute14 = pn_lease_utils.g_pn_miss_char)
2191                THEN
2192                   p_lease_contacts_tbl_update (i).attribute14 := NULL;
2193                ELSE
2194                   p_lease_contacts_tbl_update (i).attribute14 := r_contact_details.attribute14;
2195                END IF;
2196 
2197                IF (p_lease_contacts_tbl_update (i).attribute15 = pn_lease_utils.g_pn_miss_char)
2198                THEN
2199                   p_lease_contacts_tbl_update (i).attribute15 := NULL;
2200                ELSE
2201                   p_lease_contacts_tbl_update (i).attribute15 := r_contact_details.attribute15;
2202                END IF;
2203 
2204                pn_lease_utils.validate_desc_flex
2205                                       (p_api_name                    => l_api_name_full
2206                                      , p_application_short_name      => 'PN'
2207                                      , p_desc_flex_name              => 'PN_CONTACT_ASSIGNMENTS'
2208                                      , p_desc_segment1               => p_lease_contacts_tbl_update (i).attribute1
2209                                      , p_desc_segment2               => p_lease_contacts_tbl_update (i).attribute2
2210                                      , p_desc_segment3               => p_lease_contacts_tbl_update (i).attribute3
2211                                      , p_desc_segment4               => p_lease_contacts_tbl_update (i).attribute4
2212                                      , p_desc_segment5               => p_lease_contacts_tbl_update (i).attribute5
2213                                      , p_desc_segment6               => p_lease_contacts_tbl_update (i).attribute6
2214                                      , p_desc_segment7               => p_lease_contacts_tbl_update (i).attribute7
2215                                      , p_desc_segment8               => p_lease_contacts_tbl_update (i).attribute8
2216                                      , p_desc_segment9               => p_lease_contacts_tbl_update (i).attribute9
2217                                      , p_desc_segment10              => p_lease_contacts_tbl_update (i).attribute10
2218                                      , p_desc_segment11              => p_lease_contacts_tbl_update (i).attribute11
2219                                      , p_desc_segment12              => p_lease_contacts_tbl_update (i).attribute12
2220                                      , p_desc_segment13              => p_lease_contacts_tbl_update (i).attribute13
2221                                      , p_desc_segment14              => p_lease_contacts_tbl_update (i).attribute14
2222                                      , p_desc_segment15              => p_lease_contacts_tbl_update (i).attribute15
2223                                      , p_desc_context                => p_lease_contacts_tbl_update (i).attribute_category
2224                                      , p_resp_appl_id                => fnd_global.resp_appl_id
2225                                      ,p_resp_id                     => fnd_global.resp_id
2226                                      , p_return_status               => x_return_status
2227                                      );
2228                        IF (x_return_status = fnd_api.g_ret_sts_error)THEN
2229                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
2230                           fnd_message.set_token ('COLUMN','PN_CONTACT_ASSIGNMENTS_DESC_FIELDS');
2231                           fnd_message.set_token ('P_TEXT', 'PN_CONTACT_ASSIGNMENTS'|| '-'|| SQLERRM);
2232                           fnd_msg_pub.ADD;
2233                           RAISE fnd_api.g_exc_error;
2234                        ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
2235                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
2236                           fnd_message.set_token ('COLUMN','PN_CONTACT_ASSIGNMENTS_DESC_FIELDS');
2237                           fnd_message.set_token ('P_TEXT', 'PN_CONTACT_ASSIGNMENTS'|| '-'|| SQLERRM);
2238                           fnd_msg_pub.ADD;
2239                           RAISE fnd_api.g_exc_unexpected_error;
2240                        END IF;
2241                END IF;
2242                  ----------------------dbms_output.put_line('B4 Update Contact Row');--Rupak
2243                  pvt_debug(g_pkg_name||'-UPDATE_CONTACTS:Initialize the values to NULL and Call the UPDATE_CONTACTS_ROW',3);
2244                  INIT_CONTACTS_REC( p_lease_contacts_rec => p_lease_contacts_tbl_update(i)
2245                                   , p_lease_context      => p_lease_context
2246                                   , x_return_status      => x_return_status
2247                                   );
2248                update_contacts_row (p_lease_contacts_rec          => p_lease_contacts_tbl_update (i)
2249                                   , p_lease_id                    => p_lease_id
2250                                   , p_lease_context               => p_lease_context
2251                                   , x_return_status               => x_return_status);
2252 
2253                IF (x_return_status = fnd_api.g_ret_sts_error)
2254                THEN
2255                   RAISE fnd_api.g_exc_error;
2256                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
2257                THEN
2258                   RAISE fnd_api.g_exc_unexpected_error;
2259                END IF;
2260 
2261                l_assign_flag                        := 'Y';
2262             ELSE
2263                NULL;
2264             ------------------------dbms_output.put_line('In Update Contacts:ELSE PART :p_lease_contacts_tbl_update(i).contact_assignment_id'||p_lease_contacts_tbl_update(i).contact_assignment_id);
2265             ------------------------dbms_output.put_line('In Update Contacts:ELSE PART :r_contact_details.contact_assignment_id'||r_contact_details.contact_assignment_id);
2266             END IF;
2267            EXCEPTION
2268           WHEN fnd_api.g_exc_error THEN
2269             --l_error_count_err := l_error_count_err+1;
2270             x_return_status := fnd_api.g_ret_sts_error;
2271             pvt_debug(g_pkg_name||'-update_contacts:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
2272           WHEN OTHERS THEN
2273              --l_error_count_uerr := l_error_count_uerr+1;
2274              x_return_status := fnd_api.g_ret_sts_unexp_error;
2275              pvt_debug(g_pkg_name||'-update_contacts:LOOOPING:EXCEPTION:'||SQLERRM,3);
2276            END;
2277          END LOOP;
2278        ELSE
2279           NULL;
2280        END IF;--Error Flag Check
2281       END IF;
2282     END LOOP;
2283    --------dbms_output.put_line('Contacts:ID NOT GIVEN');
2284     --If Contact Assignment ID is not given
2285      p:=1;
2286      FOR i IN 1..p_lease_contacts_tbl.COUNT
2287      LOOP
2288        IF(p_lease_contacts_tbl (i).contact_assignment_id IS NULL OR p_lease_contacts_tbl (i).contact_assignment_id = pn_lease_utils.g_pn_miss_num) THEN
2289          pvt_debug(g_pkg_name||'-update_contacts:Assigning the contact table values to other table',3);
2290           p_lease_contacts_tbl_tmp(p) := p_lease_contacts_tbl (i);
2291           p_lease_contacts_tbl_tmp(p).lease_change_id:=g_lease_change_id;
2292           p:= p+1;
2293        END IF;
2294      END LOOP;
2295   END IF;
2296      pvt_debug(g_pkg_name||'-update_contacts:Inserting the values of contact record as ID is not passed for this record',3);
2297 
2298    IF(p_lease_contacts_tbl_tmp.COUNT >0 )THEN
2299        validate_contacts_tbl (p_lease_contacts_tbl          => p_lease_contacts_tbl_tmp
2300                             , p_lease_rec                   => l_lease_rec
2301                             , p_validate                    => p_validate
2302                             , p_lease_context               => p_lease_context
2303                             , p_operation                   => l_param_create_mode_operation
2304                             , x_return_status               => x_return_status
2305                             );
2306         pvt_debug(g_pkg_name||'-update_contacts:Inserting the values of contact record return Status'||x_return_status,3);
2307     END IF;
2308      EXCEPTION
2309        WHEN OTHERS THEN
2310           pvt_debug(g_pkg_name||'-update_contacts:MAIN:EXCEPTION'||SQLERRM,3);
2311    END update_contacts;
2312 
2313    /* Update Lease API*/
2314    PROCEDURE direct_update_lease (
2315       p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
2316     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
2317     , x_return_status            OUT NOCOPY VARCHAR2
2318     , x_msg_count                OUT NOCOPY NUMBER
2319     , x_msg_data                 OUT NOCOPY VARCHAR2
2320     , p_lease_id                 IN       NUMBER
2321     , p_lease_detail_id          IN       NUMBER
2322     , p_lease_change_id          IN       NUMBER
2323     , p_name                     IN       VARCHAR2
2324     , p_lease_num                IN       VARCHAR2
2325     , p_parent_lease_id          IN       NUMBER
2326     , p_lease_type_code          IN       VARCHAR2
2327     , p_lease_class_code         IN       VARCHAR2
2328     , p_payment_term_proration_rule IN    NUMBER
2329     , p_abstracted_by_user       IN       NUMBER
2330     , p_status                   IN       VARCHAR2
2331     , p_lease_status             IN       VARCHAR2
2332     , p_last_update_date         IN       DATE
2333     , p_last_updated_by          IN       NUMBER
2334     , p_last_update_login        IN       NUMBER
2335     , p_responsible_user         IN       NUMBER
2336     , p_expense_account_id       IN       NUMBER
2337     , p_accrual_account_id       IN       NUMBER
2338     , p_receivable_account_id    IN       NUMBER
2339     , p_term_template_id         IN       NUMBER
2340     , p_lease_commencement_date  IN       DATE
2341     , p_lease_termination_date   IN       DATE
2342     , p_lease_execution_date     IN       DATE
2343     , p_cal_start                IN       VARCHAR2
2344     , p_attribute_category       IN       VARCHAR2
2345     , p_attribute1               IN       VARCHAR2
2346     , p_attribute2               IN       VARCHAR2
2347     , p_attribute3               IN       VARCHAR2
2348     , p_attribute4               IN       VARCHAR2
2349     , p_attribute5               IN       VARCHAR2
2350     , p_attribute6               IN       VARCHAR2
2351     , p_attribute7               IN       VARCHAR2
2352     , p_attribute8               IN       VARCHAR2
2353     , p_attribute9               IN       VARCHAR2
2354     , p_attribute10              IN       VARCHAR2
2355     , p_attribute11              IN       VARCHAR2
2356     , p_attribute12              IN       VARCHAR2
2357     , p_attribute13              IN       VARCHAR2
2358     , p_attribute14              IN       VARCHAR2
2359     , p_attribute15              IN       VARCHAR2
2360     , p_location_id              IN       NUMBER
2361     , p_customer_id              IN       NUMBER
2362     , p_grouping_rule_id         IN       NUMBER DEFAULT NULL
2363     , p_lease_extension_end_date IN       DATE)
2364    AS
2365       l_leasecommencementdate   DATE                                    := NULL;
2366       l_leaseterminationdate    DATE                                    := NULL;
2367       l_leaseexecutiondate      DATE                                    := NULL;
2368       l_lastupdatedate          DATE                                    := NULL;
2369       l_leaseextensionenddate   DATE                                    := NULL;
2370       l_leasechangeid           pn_lease_details.lease_change_id%TYPE;
2371    BEGIN
2372       -- Standard start of API savepoint
2373       SAVEPOINT update_lease_pvt;
2374 
2375       -- Initialize message list if p_init_msg_list is set to TRUE
2376       IF fnd_api.to_boolean (p_init_msg_list)
2377       THEN
2378          fnd_msg_pub.initialize;
2379       END IF;
2380 
2381 
2382       pvt_debug(g_pkg_name||'-DIRECT_UPDATE_LEASE:Updating the Lease Record by calling the standard Package',3);
2383       -- Initialize the return status.
2384       x_return_status                      := fnd_api.g_ret_sts_success;
2385       l_lastupdatedate                     := p_last_update_date;
2386       l_leasecommencementdate              := p_lease_commencement_date;
2387       l_leaseterminationdate               := p_lease_termination_date;
2388       l_leaseexecutiondate                 := p_lease_execution_date;
2389       --Logic to be added later
2390       l_leaseextensionenddate              := p_lease_extension_end_date;
2391       --Logic to be added later
2392       -- Lease Number/Name change enhancement Changes.
2393       l_leasechangeid                      := p_lease_change_id;
2394       pn_leases_pkg.update_row (x_lease_id                    => p_lease_id
2395                               , x_lease_detail_id             => p_lease_detail_id
2396                               , x_lease_change_id             => l_leasechangeid
2397                               , x_name                        => p_name
2398                               , x_lease_num                   => p_lease_num
2399                               , x_parent_lease_id             => p_parent_lease_id
2400                               , x_lease_type_code             => p_lease_type_code
2401                               , x_lease_class_code            => p_lease_class_code
2402                               , x_payment_term_proration_rule => p_payment_term_proration_rule
2403                               , x_abstracted_by_user          => p_abstracted_by_user
2404                               , x_status                      => p_status
2405                               , x_lease_status                => p_lease_status
2406                               , x_last_update_date            => sysdate
2407                               , x_last_updated_by             => fnd_global.user_id
2408                               , x_last_update_login           => fnd_global.login_id
2409                               , x_responsible_user            => p_responsible_user
2410                               , x_expense_account_id          => p_expense_account_id
2411                               , x_accrual_account_id          => p_accrual_account_id
2412                               , x_receivable_account_id       => p_receivable_account_id
2413                               , x_term_template_id            => p_term_template_id
2414                               , x_lease_commencement_date     => l_leasecommencementdate
2415                               , x_lease_termination_date      => l_leaseterminationdate
2416                               , x_lease_execution_date        => l_leaseexecutiondate
2417                               , x_lease_extension_end_date    => l_leaseextensionenddate
2418                               , x_calendar_year_start_date    => p_cal_start
2419                               , x_attribute_category          => p_attribute_category
2420                               , x_attribute1                  => p_attribute1
2421                               , x_attribute2                  => p_attribute2
2422                               , x_attribute3                  => p_attribute3
2423                               , x_attribute4                  => p_attribute4
2424                               , x_attribute5                  => p_attribute5
2425                               , x_attribute6                  => p_attribute6
2426                               , x_attribute7                  => p_attribute7
2427                               , x_attribute8                  => p_attribute8
2428                               , x_attribute9                  => p_attribute9
2429                               , x_attribute10                 => p_attribute10
2430                               , x_attribute11                 => p_attribute11
2431                               , x_attribute12                 => p_attribute12
2432                               , x_attribute13                 => p_attribute13
2433                               , x_attribute14                 => p_attribute14
2434                               , x_attribute15                 => p_attribute15
2435                               , x_location_id                 => p_location_id
2436                               , x_customer_id                 => p_customer_id
2437                               , x_grouping_rule_id            => p_grouping_rule_id
2438                               );
2439 
2440       pvt_debug(g_pkg_name||'-DIRECT_UPDATE_LEASE:Update of the Record Successful',3);
2441    EXCEPTION
2442       WHEN fnd_api.g_exc_error
2443       THEN
2444          ROLLBACK TO update_lease_pvt;
2445          x_return_status                      := fnd_api.g_ret_sts_error;
2446       WHEN OTHERS
2447       THEN
2448          ROLLBACK TO update_lease_pvt;
2449          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
2450          fnd_message.set_token ('P_TEXT', 'pn_lease_pvt.direct_update_lease'|| SQLERRM);
2451          fnd_msg_pub.ADD;
2452          x_return_status                      := fnd_api.g_ret_sts_unexp_error;
2453    END direct_update_lease;
2454 
2455    /*Amend Lease*/
2456    PROCEDURE amend_lease (
2457       p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
2458     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
2459     , x_return_status            OUT NOCOPY VARCHAR2
2460     , x_msg_count                OUT NOCOPY NUMBER
2461     , x_msg_data                 OUT NOCOPY VARCHAR2
2462     , p_lease_name               IN       VARCHAR2
2463     , p_lease_id                 IN       NUMBER
2464     , p_creation_date            IN       DATE DEFAULT SYSDATE
2465     , p_org_id                   IN       NUMBER
2466     , p_lease_commencement_date  IN       DATE
2467     , p_lease_termination_date   IN       DATE
2468     , p_lease_execution_date     IN       DATE
2469     , p_responsible_user         IN       NUMBER
2470     , p_abstracted_by_user       IN       NUMBER
2471     , p_attribute_category       IN       VARCHAR2
2472     , p_attribute1               IN       VARCHAR2
2473     , p_attribute2               IN       VARCHAR2
2474     , p_attribute3               IN       VARCHAR2
2475     , p_attribute4               IN       VARCHAR2
2476     , p_attribute5               IN       VARCHAR2
2477     , p_attribute6               IN       VARCHAR2
2478     , p_attribute7               IN       VARCHAR2
2479     , p_attribute8               IN       VARCHAR2
2480     , p_attribute9               IN       VARCHAR2
2481     , p_attribute10              IN       VARCHAR2
2482     , p_attribute11              IN       VARCHAR2
2483     , p_attribute12              IN       VARCHAR2
2484     , p_attribute13              IN       VARCHAR2
2485     , p_attribute14              IN       VARCHAR2
2486     , p_attribute15              IN       VARCHAR2
2487     , p_last_update_date         IN       DATE DEFAULT SYSDATE
2488     , p_user_id                  IN       NUMBER
2489     , x_lease_change_id          OUT NOCOPY NUMBER
2490     , x_lease_change_num         OUT NOCOPY NUMBER)
2491    IS
2492       l_rowid                    VARCHAR2 (18) := NULL;
2493       l_leasechangeid            NUMBER        := NULL;
2494       l_lastupdatedate           DATE          := p_last_update_date;
2495       l_creationdate             DATE          := p_creation_date;
2496       l_leasechangenumber        NUMBER        := NULL;
2497       l_org_id                   NUMBER;
2498       l_changecommencementdate   DATE          := NULL;
2499       l_changeterminationdate    DATE          := NULL;
2500       l_changeexecutiondate      DATE          := NULL;
2501    BEGIN
2502       -- Standard start of API savepoint
2503       SAVEPOINT amend_lease_pvt;
2504 
2505       -- Initialize message list if p_init_msg_list is set to TRUE
2506       IF fnd_api.to_boolean (p_init_msg_list)
2507       THEN
2508          fnd_msg_pub.initialize;
2509       END IF;
2510      ----------------------dbms_output.put_line('IN AMEND PROC'||p_lease_name);
2511        pvt_debug(g_pkg_name||'-AMEND_LEASE:Inerting into the Lease Changes Package',3);
2512       -- Initialize the return status.
2513       x_return_status                      := fnd_api.g_ret_sts_success;
2514       l_org_id                             := p_org_id;
2515       l_lastupdatedate                     := p_last_update_date;
2516       l_creationdate                       := p_creation_date;
2517       l_changecommencementdate             := p_lease_commencement_date;
2518       l_changeterminationdate              := p_lease_termination_date;
2519       l_changeexecutiondate                := p_lease_execution_date;
2520       pn_lease_changes_pkg.insert_row (x_rowid                       => l_rowid
2521                                      , x_lease_change_id             => l_leasechangeid
2522                                      , x_lease_id                    => p_lease_id
2523                                      , x_lease_change_number         => l_leasechangenumber
2524                                      , x_lease_change_name           => p_lease_name
2525                                      , x_responsible_user            => p_responsible_user
2526                                      , x_change_commencement_date    => l_changecommencementdate
2527                                      , x_change_termination_date     => l_changeterminationdate
2528                                      , x_change_type_lookup_code     => 'AMEND'
2529                                      , x_change_execution_date       => l_changeexecutiondate
2530                                      , x_attribute_category          => p_attribute_category
2531                                      , x_attribute1                  => p_attribute1
2532                                      , x_attribute2                  => p_attribute2
2533                                      , x_attribute3                  => p_attribute3
2534                                      , x_attribute4                  => p_attribute4
2535                                      , x_attribute5                  => p_attribute5
2536                                      , x_attribute6                  => p_attribute6
2537                                      , x_attribute7                  => p_attribute7
2538                                      , x_attribute8                  => p_attribute8
2539                                      , x_attribute9                  => p_attribute9
2540                                      , x_attribute10                 => p_attribute10
2541                                      , x_attribute11                 => p_attribute11
2542                                      , x_attribute12                 => p_attribute12
2543                                      , x_attribute13                 => p_attribute13
2544                                      , x_attribute14                 => p_attribute14
2545                                      , x_attribute15                 => p_attribute15
2546                                      , x_abstracted_by_user          => p_abstracted_by_user
2547                                      , x_creation_date               => l_creationdate
2548                                      , x_created_by                  => p_user_id
2549                                      , x_last_update_date            => l_lastupdatedate
2550                                      , x_last_updated_by             => p_user_id
2551                                      , x_last_update_login           => fnd_global.login_id
2552                                      , x_org_id                      => l_org_id
2553                                      , x_cutoff_date                 => NULL);
2554             pvt_debug(g_pkg_name||'-AMEND_LEASE:Insertion into the table successful',3);
2555       x_lease_change_id                    := l_leasechangeid;
2556       x_lease_change_num                   := l_leasechangenumber;
2557    EXCEPTION
2558       WHEN fnd_api.g_exc_error
2559       THEN
2560          ROLLBACK TO amend_lease_pvt;
2561          x_return_status                      := fnd_api.g_ret_sts_error;
2562       WHEN OTHERS
2563       THEN
2564          ROLLBACK TO amend_lease_pvt;
2565          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
2566          fnd_message.set_token ('P_TEXT', 'pn_lease_pvt.amend_lease'|| SQLERRM);
2567          fnd_msg_pub.ADD;
2568          x_return_status                      := fnd_api.g_ret_sts_unexp_error;
2569    END amend_lease;
2570 
2571    /*Edit Lease*/
2572    PROCEDURE edit_lease (
2573       p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
2574     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
2575     , x_return_status            OUT NOCOPY VARCHAR2
2576     , x_msg_count                OUT NOCOPY NUMBER
2577     , x_msg_data                 OUT NOCOPY VARCHAR2
2578     , p_lease_id                 IN       NUMBER
2579     , p_creation_date            IN       DATE DEFAULT SYSDATE
2580     , p_org_id                   IN       NUMBER
2581     , p_last_update_date         IN       DATE DEFAULT SYSDATE
2582     , x_lease_change_id          OUT NOCOPY NUMBER
2583     , x_lease_change_num         OUT NOCOPY NUMBER)
2584    IS
2585       l_rowid               VARCHAR2 (18) := NULL;
2586       l_leasechangeid       NUMBER        := NULL;
2587       l_lastupdatedate      DATE          := p_last_update_date;
2588       l_creationdate        DATE          := p_creation_date;
2589       l_leasechangenumber   NUMBER        := NULL;
2590       l_org_id              NUMBER;
2591    BEGIN
2592       -- Standard start of API savepoint
2593       SAVEPOINT edit_lease_pvt;
2594 
2595       -- Initialize message list if p_init_msg_list is set to TRUE
2596       IF fnd_api.to_boolean (p_init_msg_list)
2597       THEN
2598          fnd_msg_pub.initialize;
2599       END IF;
2600       pvt_debug(g_pkg_name||'-EDIT_LEASE:Inerting into the Lease Changes Package',3);
2601       -- Initialize the return status.
2602       x_return_status                      := fnd_api.g_ret_sts_success;
2603       l_org_id                             := p_org_id;
2604       pn_lease_changes_pkg.insert_row (x_rowid                       => l_rowid
2605                                      , x_lease_change_id             => l_leasechangeid
2606                                      , x_lease_id                    => p_lease_id
2607                                      , x_lease_change_number         => l_leasechangenumber
2608                                      , x_lease_change_name           => 'EDIT'
2609                                      , x_responsible_user            => NULL
2610                                      , x_change_commencement_date    => NULL
2611                                      , x_change_termination_date     => NULL
2612                                      , x_change_type_lookup_code     => 'EDIT'
2613                                      , x_change_execution_date       => NULL
2614                                      , x_attribute_category          => NULL
2615                                      , x_attribute1                  => NULL
2616                                      , x_attribute2                  => NULL
2617                                      , x_attribute3                  => NULL
2618                                      , x_attribute4                  => NULL
2619                                      , x_attribute5                  => NULL
2620                                      , x_attribute6                  => NULL
2621                                      , x_attribute7                  => NULL
2622                                      , x_attribute8                  => NULL
2623                                      , x_attribute9                  => NULL
2624                                      , x_attribute10                 => NULL
2625                                      , x_attribute11                 => NULL
2626                                      , x_attribute12                 => NULL
2627                                      , x_attribute13                 => NULL
2628                                      , x_attribute14                 => NULL
2629                                      , x_attribute15                 => NULL
2630                                      , x_abstracted_by_user          => NULL
2631                                      , x_creation_date               => l_creationdate
2632                                      , x_created_by                  => fnd_global.user_id
2633                                      , x_last_update_date            => l_lastupdatedate
2634                                      , x_last_updated_by             => fnd_global.user_id
2635                                      , x_last_update_login           => fnd_global.login_id
2636                                      , x_org_id                      => l_org_id);
2637        pvt_debug(g_pkg_name||'-EDIT_LEASE:Insertion into the table successful',3);
2638        x_return_status                      := fnd_api.g_ret_sts_success;
2639       x_lease_change_id                    := l_leasechangeid;
2640       x_lease_change_num                   := l_leasechangenumber;
2641    EXCEPTION
2642       WHEN fnd_api.g_exc_error
2643       THEN
2644          ROLLBACK TO edit_lease_pvt;
2645          x_return_status                      := fnd_api.g_ret_sts_error;
2646       WHEN OTHERS
2647       THEN
2648          ROLLBACK TO edit_lease_pvt;
2649          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
2650          fnd_message.set_token ('P_TEXT', 'pn_lease_pvt.edit_lease'
2651                                  || SQLERRM);
2652          fnd_msg_pub.ADD;
2653          x_return_status                      := fnd_api.g_ret_sts_unexp_error;
2654    END edit_lease;
2655 
2656    PROCEDURE INIT_TENANCIES_REC( p_lease_tenancies_rec IN OUT NOCOPY      lease_tenancies_rec
2657                                , p_lease_context       IN            VARCHAR2
2658                                , x_return_status          OUT NOCOPY VARCHAR2
2659                                )
2660    IS
2661 
2662    BEGIN
2663       pvt_debug(g_pkg_name||'-Inside INIT_TENANCIES_REC',3);
2664       -- Initialize the return status.
2665       x_return_status                      := fnd_api.g_ret_sts_success;
2666       IF  p_lease_tenancies_rec.tenancy_id = pn_lease_utils.g_pn_miss_num
2667       THEN
2668          p_lease_tenancies_rec.tenancy_id:= NULL;
2669       END IF;
2670 
2671 
2672       IF  p_lease_tenancies_rec.last_update_date = pn_lease_utils.g_pn_miss_date
2673       THEN
2674          p_lease_tenancies_rec.last_update_date:= NULL;
2675       END IF;
2676 
2677       IF  p_lease_tenancies_rec.last_updated_by = pn_lease_utils.g_pn_miss_num
2678       THEN
2679          p_lease_tenancies_rec.last_updated_by:= NULL;
2680       END IF;
2681 
2682       IF  p_lease_tenancies_rec.creation_date = pn_lease_utils.g_pn_miss_date
2683       THEN
2684          p_lease_tenancies_rec.creation_date:= NULL;
2685       END IF;
2686 
2687       IF  p_lease_tenancies_rec.created_by = pn_lease_utils.g_pn_miss_num
2688       THEN
2689          p_lease_tenancies_rec.created_by:= NULL;
2690       END IF;
2691 
2692       IF  p_lease_tenancies_rec.last_update_login = pn_lease_utils.g_pn_miss_num
2693       THEN
2694          p_lease_tenancies_rec.last_update_login:= NULL;
2695       END IF;
2696 
2697       IF  p_lease_tenancies_rec.location_id = pn_lease_utils.g_pn_miss_num
2698       THEN
2699          p_lease_tenancies_rec.location_id:= NULL;
2700       END IF;
2701 
2702 
2703       IF  p_lease_tenancies_rec.lease_id = pn_lease_utils.g_pn_miss_num
2704       THEN
2705          p_lease_tenancies_rec.lease_id:= NULL;
2706       END IF;
2707 
2708       IF  p_lease_tenancies_rec.lease_change_id = pn_lease_utils.g_pn_miss_num
2709       THEN
2710          p_lease_tenancies_rec.lease_change_id:= NULL;
2711       END IF;
2712 
2713       IF  p_lease_tenancies_rec.tenancy_usage_lookup_code = pn_lease_utils.g_pn_miss_char
2714       THEN
2715          p_lease_tenancies_rec.tenancy_usage_lookup_code:= NULL;
2716       END IF;
2717 
2718       IF  p_lease_tenancies_rec.primary_flag = pn_lease_utils.g_pn_miss_char
2719       THEN
2720          p_lease_tenancies_rec.primary_flag:= 'N';
2721       END IF;
2722 
2723       IF  p_lease_tenancies_rec.estimated_occupancy_date = pn_lease_utils.g_pn_miss_date
2724       THEN
2725          p_lease_tenancies_rec.estimated_occupancy_date:= NULL;
2726       END IF;
2727 
2728       IF  p_lease_tenancies_rec.occupancy_date = pn_lease_utils.g_pn_miss_date
2729       THEN
2730          p_lease_tenancies_rec.occupancy_date:= NULL;
2731       END IF;
2732 
2733       IF  p_lease_tenancies_rec.expiration_date = pn_lease_utils.g_pn_miss_date
2734       THEN
2735          p_lease_tenancies_rec.expiration_date:= NULL;
2736       END IF;
2737 
2738       IF  p_lease_tenancies_rec.assignable_flag = pn_lease_utils.g_pn_miss_char
2739       THEN
2740          p_lease_tenancies_rec.assignable_flag:= NULL;
2741       END IF;
2742 
2743       IF  p_lease_tenancies_rec.subleaseable_flag = pn_lease_utils.g_pn_miss_char
2744       THEN
2745          p_lease_tenancies_rec.subleaseable_flag:= NULL;
2746       END IF;
2747 
2748       IF  p_lease_tenancies_rec.tenants_proportionate_share = pn_lease_utils.g_pn_miss_num
2749       THEN
2750          p_lease_tenancies_rec.tenants_proportionate_share:= NULL;
2751       END IF;
2752 
2753       IF  p_lease_tenancies_rec.status = pn_lease_utils.g_pn_miss_char
2754       THEN
2755          p_lease_tenancies_rec.status:= 'A';
2756       END IF;
2757 
2758       IF  p_lease_tenancies_rec.attribute_category = pn_lease_utils.g_pn_miss_char
2759       THEN
2760          p_lease_tenancies_rec.attribute_category:= NULL;
2761       END IF;
2762 
2763       IF  p_lease_tenancies_rec.attribute1 = pn_lease_utils.g_pn_miss_char
2764       THEN
2765          p_lease_tenancies_rec.attribute1:= NULL;
2766       END IF;
2767 
2768       IF  p_lease_tenancies_rec.attribute2 = pn_lease_utils.g_pn_miss_char
2769       THEN
2770          p_lease_tenancies_rec.attribute2:= NULL;
2771       END IF;
2772 
2773       IF  p_lease_tenancies_rec.attribute3 = pn_lease_utils.g_pn_miss_char
2774       THEN
2775          p_lease_tenancies_rec.attribute3:= NULL;
2776       END IF;
2777 
2778       IF  p_lease_tenancies_rec.attribute4 = pn_lease_utils.g_pn_miss_char
2779       THEN
2780          p_lease_tenancies_rec.attribute4:= NULL;
2781       END IF;
2782 
2783       IF  p_lease_tenancies_rec.attribute5 = pn_lease_utils.g_pn_miss_char
2784       THEN
2785          p_lease_tenancies_rec.attribute5:= NULL;
2786       END IF;
2787 
2788       IF  p_lease_tenancies_rec.attribute6 = pn_lease_utils.g_pn_miss_char
2789       THEN
2790          p_lease_tenancies_rec.attribute6:= NULL;
2791       END IF;
2792 
2793       IF  p_lease_tenancies_rec.attribute7 = pn_lease_utils.g_pn_miss_char
2794       THEN
2795          p_lease_tenancies_rec.attribute7:= NULL;
2796       END IF;
2797 
2798       IF  p_lease_tenancies_rec.attribute8 = pn_lease_utils.g_pn_miss_char
2799       THEN
2800          p_lease_tenancies_rec.attribute8:= NULL;
2801       END IF;
2802 
2803       IF  p_lease_tenancies_rec.attribute9 = pn_lease_utils.g_pn_miss_char
2804       THEN
2805          p_lease_tenancies_rec.attribute9:= NULL;
2806       END IF;
2807 
2808       IF  p_lease_tenancies_rec.attribute10 = pn_lease_utils.g_pn_miss_char
2809       THEN
2810          p_lease_tenancies_rec.attribute10:= NULL;
2811       END IF;
2812 
2813       IF  p_lease_tenancies_rec.attribute11 = pn_lease_utils.g_pn_miss_char
2814       THEN
2815          p_lease_tenancies_rec.attribute11:= NULL;
2816       END IF;
2817 
2818       IF  p_lease_tenancies_rec.attribute12 = pn_lease_utils.g_pn_miss_char
2819       THEN
2820          p_lease_tenancies_rec.attribute12:= NULL;
2821       END IF;
2822 
2823       IF  p_lease_tenancies_rec.attribute13 = pn_lease_utils.g_pn_miss_char
2824       THEN
2825          p_lease_tenancies_rec.attribute13:= NULL;
2826       END IF;
2827 
2828       IF  p_lease_tenancies_rec.attribute14 = pn_lease_utils.g_pn_miss_char
2829       THEN
2830          p_lease_tenancies_rec.attribute14:= NULL;
2831       END IF;
2832 
2833       IF  p_lease_tenancies_rec.attribute15 = pn_lease_utils.g_pn_miss_char
2834       THEN
2835          p_lease_tenancies_rec.attribute15:= NULL;
2836       END IF;
2837 
2838       IF  p_lease_tenancies_rec.org_id = pn_lease_utils.g_pn_miss_num
2839       THEN
2840          p_lease_tenancies_rec.org_id:= NULL;
2841       END IF;
2842 
2843       IF  p_lease_tenancies_rec.recovery_type_code = pn_lease_utils.g_pn_miss_char
2844       THEN
2845          p_lease_tenancies_rec.recovery_type_code:= NULL;
2846       END IF;
2847 
2848       IF  p_lease_tenancies_rec.recovery_space_std_code = pn_lease_utils.g_pn_miss_char
2849       THEN
2850          p_lease_tenancies_rec.recovery_space_std_code:= NULL;
2851       END IF;
2852 
2853       IF  p_lease_tenancies_rec.fin_oblig_end_date  = pn_lease_utils.g_pn_miss_date
2854       THEN
2855          p_lease_tenancies_rec.fin_oblig_end_date := NULL;
2856       END IF;
2857 
2858       IF  p_lease_tenancies_rec.customer_id = pn_lease_utils.g_pn_miss_num
2859       THEN
2860          p_lease_tenancies_rec.customer_id:= NULL;
2861       END IF;
2862 
2863       IF  p_lease_tenancies_rec.customer_site_use_id = pn_lease_utils.g_pn_miss_num
2864       THEN
2865          p_lease_tenancies_rec.customer_site_use_id:= NULL;
2866       END IF;
2867 
2868       IF  p_lease_tenancies_rec.lease_rentable_area = pn_lease_utils.g_pn_miss_num
2869       THEN
2870          p_lease_tenancies_rec.lease_rentable_area:= NULL;
2871       END IF;
2872 
2873       IF  p_lease_tenancies_rec.lease_usable_area = pn_lease_utils.g_pn_miss_num
2874       THEN
2875          p_lease_tenancies_rec.lease_usable_area:= NULL;
2876       END IF;
2877 
2878       IF  p_lease_tenancies_rec.lease_assignable_area = pn_lease_utils.g_pn_miss_num
2879       THEN
2880          p_lease_tenancies_rec.lease_assignable_area:= NULL;
2881       END IF;
2882 
2883       IF  p_lease_tenancies_rec.lease_load_factor = pn_lease_utils.g_pn_miss_num
2884       THEN
2885          p_lease_tenancies_rec.lease_load_factor:= NULL;
2886       END IF;
2887 
2888 
2889       IF  p_lease_tenancies_rec.location_rentable_area = pn_lease_utils.g_pn_miss_num
2890       THEN
2891          p_lease_tenancies_rec.location_rentable_area:= NULL;
2892       END IF;
2893 
2894       IF  p_lease_tenancies_rec.location_usable_area = pn_lease_utils.g_pn_miss_num
2895       THEN
2896          p_lease_tenancies_rec.location_usable_area:= NULL;
2897       END IF;
2898 
2899       IF  p_lease_tenancies_rec.location_assignable_area = pn_lease_utils.g_pn_miss_num
2900       THEN
2901          p_lease_tenancies_rec.location_assignable_area:= NULL;
2902       END IF;
2903 
2904       IF  p_lease_tenancies_rec.location_load_factor  = pn_lease_utils.g_pn_miss_num
2905       THEN
2906          p_lease_tenancies_rec.location_load_factor := NULL;
2907       END IF;
2908 
2909       IF  p_lease_tenancies_rec.allocated_area  = pn_lease_utils.g_pn_miss_num
2910       THEN
2911          p_lease_tenancies_rec.allocated_area := NULL;
2912       END IF;
2913       IF  p_lease_tenancies_rec.allocated_area_pct   = pn_lease_utils.g_pn_miss_num
2914       THEN
2915          p_lease_tenancies_rec.allocated_area_pct  := NULL;
2916       END IF;
2917       IF  p_lease_tenancies_rec.error_flag = pn_lease_utils.g_pn_miss_char
2918       THEN
2919          p_lease_tenancies_rec.error_flag:= NULL;
2920       END IF;
2921    EXCEPTION
2922       WHEN OTHERS
2923       THEN
2924          x_return_status := fnd_api.g_ret_sts_error;
2925          pvt_debug(g_pkg_name||'- INIT_TENANCIES_REC:Exception in INIT_TENANCIES_REC'||SQLERRM,3);
2926    END INIT_TENANCIES_REC;
2927 
2928    PROCEDURE insert_tenancies_row (
2929       p_lease_tenancies_rec      IN OUT NOCOPY  lease_tenancies_rec
2930     , p_lease_rec                IN       lease_rec
2931     , p_lease_context            IN       VARCHAR2
2932     , x_return_status            OUT NOCOPY VARCHAR2
2933     )
2934    IS
2935       l_rowid                VARCHAR2 (18) := NULL;
2936       --PN_LEASE_UTILS.G_PN_MISS_CHAR;
2937       x_tenancy_ovelap_wrn   VARCHAR2 (30) := pn_lease_utils.g_pn_miss_char;
2938 
2939 --   l_rowId                    VARCHAR2(18) := NULL;
2940 --   l_tenancyId                NUMBER       := NULL;
2941 --   l_estimatedOccupancyDate   DATE         := NULL;
2942 --   l_occupancyDate            DATE         := NULL;
2943 --   l_expirationDate           DATE         := NULL;
2944 --   l_lastUpdateDate           DATE         := NULL;
2945 --   l_creationDate             DATE         := NULL;
2946 --   l_tenancy_ovelap_wrn       VARCHAR2(30) := NULL;
2947 --   l_message                  VARCHAR2(30) := NULL; --CAM
2948 --   l_location_id              pn_tenancies_all.location_id%TYPE;
2949 --   l_customer_id              pn_tenancies_all.customer_id%TYPE;
2950 --   l_customer_site_use_id     pn_tenancies_all.customer_site_use_id%TYPE;
2951 --   l_org_id                   NUMBER;
2952 --   l_allocated_area           NUMBER;
2953      l_loc_area                 NUMBER;
2954      l_min_pct                  NUMBER;
2955 --   l_answer                   NUMBER;
2956 --   l_location_code            PN_LOCATIONS.LOCATION_CODE%TYPE := NAME_IN('tenancy_fdr_blk.location_code'); /* Bug#7162821 */
2957 --   l_allocated_pct            NUMBER;
2958    l_loc_code                 VARCHAR2(30)  := NULL;
2959    l_mutiple_lease            VARCHAR2(30)  := NULL;
2960    l_automatic_distrubution   VARCHAR2(30)  := NULL;
2961    l_overlap_tenancy          VARCHAR2(30)  := NULL;
2962 
2963    BEGIN
2964       ----------------------dbms_output.put_line ('In Insert INSERT_TENNANCIES_ROW');
2965    -- Initialize the return status.
2966       x_return_status                      := fnd_api.g_ret_sts_success;
2967 /*********************************************************************************************************************************************/
2968    IF p_lease_tenancies_rec.org_id IS NULL OR
2969       NVL(pn_mo_cache_utils.check_valid_org(p_lease_tenancies_rec.org_id), 'N') <> 'Y'
2970    THEN
2971       fnd_message.set_name('MO', 'MO_ORG_INVALID');
2972       fnd_msg_pub.ADD;
2973       RAISE fnd_api.g_exc_error;
2974    END IF;
2975 
2976    pvt_debug(g_pkg_name||'-Inside INSERT_TENANCIES_ROW',3);
2977    l_mutiple_lease          := NVL(pn_mo_cache_utils.get_profile_value('PN_MULTIPLE_LEASE_FOR_LOCATION'
2978                                                                       , p_lease_tenancies_rec.org_id)
2979                                                                       ,'N');
2980    l_automatic_distrubution := NVL(pn_mo_cache_utils.get_profile_value('PN_AUTOMATIC_SPACE_DISTRIBUTION'
2981                                                                       , p_lease_tenancies_rec.org_id)
2982                                                                       ,'N');
2983    l_overlap_tenancy        := nvl(pn_mo_cache_utils.get_profile_value('PN_MULT_TNC_SAME_LEASE'
2984 
2985                                                                       , p_lease_tenancies_rec.org_id)
2986                                                                       ,'N');
2987 
2988    IF l_mutiple_lease = 'N'  AND l_overlap_tenancy = 'N' THEN
2989          p_lease_tenancies_rec.allocated_area_pct:=100;
2990    END IF;
2991 
2992    IF l_automatic_distrubution = 'N' AND (l_mutiple_lease <> 'N' OR l_overlap_tenancy <>'N') THEN
2993         pn_tenancies_pkg.get_loc_info(
2994                                  p_lease_tenancies_rec.location_id,
2995                                  NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
2996                                  p_lease_tenancies_rec.expiration_date,
2997                                  l_loc_code);
2998 
2999         pn_tenancies_pkg.get_allocated_area(
3000                                        NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
3001                                        p_lease_tenancies_rec.expiration_date,
3002                                        p_lease_tenancies_rec.allocated_area_pct,
3003                                        l_loc_area
3004                                        );
3005 
3006         pn_tenancies_pkg.Availaible_Space
3007                         (
3008                                 p_lease_tenancies_rec.location_id,
3009                                 NVL(p_lease_tenancies_rec.occupancy_date,p_lease_tenancies_rec.estimated_occupancy_date),
3010                                 p_lease_tenancies_rec.expiration_date,
3011                                 l_min_pct
3012                         );
3013 
3014         IF p_lease_tenancies_rec.ALLOCATED_AREA_PCT> l_min_pct THEN
3015 
3016          IF l_min_pct = 0  THEN
3017                 fnd_message.set_name('PN', 'PN_LOC_VACANT_AREA_ZERO');
3018                 fnd_message.set_token('LOCATION_CODE',p_lease_tenancies_rec.location_code);
3019                 --l_answer := fnd_message.question(NAME_IN('parameter.pn_option_yes'),
3020                 --                                  NAME_IN('parameter.pn_option_cancel'),
3021                 --                                  NULL);
3022                 --IF(l_answer = 1) THEN
3023                 --   copy(0,'tenancy_fdr_blk.allocated_area_pct');
3024                 --   l_loc_area := 0;
3025                 --ELSIF l_answer = 2   THEN  -- Cancel
3026                 --   Raise Form_trigger_failure;
3027                 --END IF;
3028                 fnd_msg_pub.ADD;
3029                 RAISE fnd_api.g_exc_error;
3030 
3031          ELSIF l_min_pct > 0 THEN
3032                 fnd_message.set_name('PN', 'PN_LOC_VACANT_AREA_LESSER');
3033                 fnd_message.set_token('LOCATION_CODE',p_lease_tenancies_rec.location_code);
3034                 fnd_message.set_token('MAX_AREA',nvl(l_min_pct,0));
3035                 fnd_msg_pub.ADD;
3036                 RAISE fnd_api.g_exc_error;
3037 
3038          END IF;
3039         END IF;
3040       p_lease_tenancies_rec.allocated_area         := l_loc_area;
3041    END IF;
3042 
3043       pvt_debug(g_pkg_name||'-INSERT_TENANCIES_ROW:Before Calling Standard tenancies package:insert_row',3);
3044 
3045 /*********************************************************************************************************************************************/
3046       INIT_TENANCIES_REC( p_lease_tenancies_rec  =>  p_lease_tenancies_rec
3047                         , p_lease_context        =>  p_lease_context
3048                         , x_return_status        =>  x_return_status
3049                         );
3050       p_lease_tenancies_rec.lease_id        := p_lease_rec.lease_id;
3051       p_lease_tenancies_rec.lease_change_id := p_lease_rec.lease_id;
3052 
3053       ----------------------dbms_output.put_line('p_lease_tenancies_rec.lease_id BEFORE CALLING pn_tenancies_pkg.insert_row: '||p_lease_tenancies_rec.lease_id );
3054       ------------------------dbms_output.put_line('p_lease_tenancies_rec.lease_change_id BEFORE CALLING pn_tenancies_pkg.insert_row: '||p_lease_tenancies_rec.lease_change_id );
3055       pn_tenancies_pkg.insert_row
3056                 (x_rowid                       => l_rowid
3057                , x_tenancy_id                  => p_lease_tenancies_rec.tenancy_id
3058                , x_location_id                 => p_lease_tenancies_rec.location_id
3059                , x_lease_id                    => p_lease_tenancies_rec.lease_id
3060                , x_lease_change_id             => p_lease_tenancies_rec.lease_change_id
3061                , x_tenancy_usage_lookup_code   => p_lease_tenancies_rec.tenancy_usage_lookup_code
3062                , x_primary_flag                => p_lease_tenancies_rec.primary_flag
3063                , x_estimated_occupancy_date    => p_lease_tenancies_rec.estimated_occupancy_date
3064                , x_occupancy_date              => p_lease_tenancies_rec.occupancy_date
3065                , x_expiration_date             => p_lease_tenancies_rec.expiration_date
3066                , x_assignable_flag             => p_lease_tenancies_rec.assignable_flag
3067                , x_subleaseable_flag           => p_lease_tenancies_rec.subleaseable_flag
3068                , x_tenants_proportionate_share => p_lease_tenancies_rec.tenants_proportionate_share
3069                , x_allocated_area_pct          => p_lease_tenancies_rec.allocated_area_pct
3070                , x_allocated_area              => p_lease_tenancies_rec.allocated_area
3071                , x_status                      => p_lease_tenancies_rec.status
3072                , x_attribute_category          => p_lease_tenancies_rec.attribute_category
3073                , x_attribute1                  => p_lease_tenancies_rec.attribute1
3074                , x_attribute2                  => p_lease_tenancies_rec.attribute2
3075                , x_attribute3                  => p_lease_tenancies_rec.attribute3
3076                , x_attribute4                  => p_lease_tenancies_rec.attribute4
3077                , x_attribute5                  => p_lease_tenancies_rec.attribute5
3078                , x_attribute6                  => p_lease_tenancies_rec.attribute6
3079                , x_attribute7                  => p_lease_tenancies_rec.attribute7
3080                , x_attribute8                  => p_lease_tenancies_rec.attribute8
3081                , x_attribute9                  => p_lease_tenancies_rec.attribute9
3082                , x_attribute10                 => p_lease_tenancies_rec.attribute10
3083                , x_attribute11                 => p_lease_tenancies_rec.attribute11
3084                , x_attribute12                 => p_lease_tenancies_rec.attribute12
3085                , x_attribute13                 => p_lease_tenancies_rec.attribute13
3086                , x_attribute14                 => p_lease_tenancies_rec.attribute14
3087                , x_attribute15                 => p_lease_tenancies_rec.attribute15
3088                , x_creation_date               => NVL (p_lease_tenancies_rec.creation_date, SYSDATE)
3089                , x_created_by                  => NVL (p_lease_tenancies_rec.created_by, fnd_global.user_id)
3090                , x_last_update_date            => NVL (p_lease_tenancies_rec.last_update_date, SYSDATE)
3091                , x_last_updated_by             => NVL (p_lease_tenancies_rec.last_updated_by, fnd_global.user_id)
3092                , x_last_update_login           => NVL (p_lease_tenancies_rec.last_update_login, fnd_global.login_id)
3093                , x_org_id                      => p_lease_tenancies_rec.org_id
3094                , x_tenancy_ovelap_wrn          => x_tenancy_ovelap_wrn
3095                , x_recovery_type_code          => p_lease_tenancies_rec.recovery_type_code
3096                , x_recovery_space_std_code     => p_lease_tenancies_rec.recovery_space_std_code
3097                , x_fin_oblig_end_date          => p_lease_tenancies_rec.fin_oblig_end_date
3098                , x_customer_id                 => p_lease_tenancies_rec.customer_id
3099                , x_customer_site_use_id        => p_lease_tenancies_rec.customer_site_use_id
3100                , x_lease_rentable_area         => p_lease_tenancies_rec.lease_rentable_area
3101                , x_lease_usable_area           => p_lease_tenancies_rec.lease_usable_area
3102                , x_lease_assignable_area       => p_lease_tenancies_rec.lease_assignable_area
3103                , x_lease_load_factor           => p_lease_tenancies_rec.lease_load_factor
3104                , x_location_rentable_area      => p_lease_tenancies_rec.location_rentable_area
3105                , x_location_usable_area        => p_lease_tenancies_rec.location_usable_area
3106                , x_location_assignable_area    => p_lease_tenancies_rec.location_assignable_area
3107                , x_location_load_factor        => p_lease_tenancies_rec.location_load_factor
3108                );
3109            pvt_debug(g_pkg_name||'- INSERT_TENANCIES_ROW:Insertion into tenancies table successful',3);
3110 
3111      -- --------------------dbms_output.put_line('p_lease_tenancies_rec.lease_id after pn_tenancies_pkg.insert_row: '||p_lease_tenancies_rec.lease_id );--Rupak
3112       ----------------------dbms_output.put_line('p_lease_tenancies_rec.lease_change_id after pn_tenancies_pkg.insert_row: '||p_lease_tenancies_rec.lease_change_id );--Rupak
3113    EXCEPTION
3114       WHEN OTHERS
3115       THEN
3116         NULL;
3117          x_return_status := fnd_api.g_ret_sts_error;
3118          ----------------------dbms_output.put_line (   'IN INSERT_TENANCIES_ROW EXCEPTION: '|| SQLERRM);--Rupak
3119          pvt_debug(g_pkg_name||'- INSERT_TENANCIES_ROW:Exception in Insertion into tenancies table'||SQLERRM,3);
3120 
3121    END insert_tenancies_row;
3122 
3123 
3124 
3125 
3126 
3127 
3128    PROCEDURE INIT_CONTACTS_REC( p_lease_contacts_rec IN OUT  NOCOPY     lease_contacts_rec
3129                               , p_lease_context      IN            VARCHAR2
3130                               , x_return_status         OUT NOCOPY VARCHAR2
3131                               )
3132    IS
3133 
3134    BEGIN
3135       pvt_debug(g_pkg_name||'- Inside INIT_CONTACTS_REC',3);
3136       IF  p_lease_contacts_rec.contact_assignment_id = pn_lease_utils.g_pn_miss_num
3137       THEN
3138          p_lease_contacts_rec.contact_assignment_id := NULL;
3139       END IF;
3140 
3141       IF  p_lease_contacts_rec.created_by = pn_lease_utils.g_pn_miss_num
3142       THEN
3143          p_lease_contacts_rec.created_by := NULL;
3144       END IF;
3145 
3146       IF  p_lease_contacts_rec.last_updated_by = pn_lease_utils.g_pn_miss_num
3147       THEN
3148          p_lease_contacts_rec.last_updated_by := NULL;
3149       END IF;
3150 
3151       IF  p_lease_contacts_rec.last_update_login = pn_lease_utils.g_pn_miss_num
3152       THEN
3153          p_lease_contacts_rec.last_update_login := NULL;
3154       END IF;
3155 
3156 
3157       IF  p_lease_contacts_rec.creation_date = pn_lease_utils.g_pn_miss_date
3158       THEN
3159          p_lease_contacts_rec.creation_date := NULL;
3160       END IF;
3161 
3162       IF  p_lease_contacts_rec.last_update_date = pn_lease_utils.g_pn_miss_date
3163       THEN
3164          p_lease_contacts_rec.last_update_date := NULL;
3165       END IF;
3166 
3167       IF  p_lease_contacts_rec.company_id = pn_lease_utils.g_pn_miss_num
3168       THEN
3169          p_lease_contacts_rec.company_id := NULL;
3170       END IF;
3171 
3172       IF  p_lease_contacts_rec.company_site_id = pn_lease_utils.g_pn_miss_num
3173       THEN
3174          p_lease_contacts_rec.company_site_id := NULL;
3175       END IF;
3176 
3177       IF  p_lease_contacts_rec.lease_id = pn_lease_utils.g_pn_miss_num
3178       THEN
3179          p_lease_contacts_rec.lease_id := NULL;
3180       END IF;
3181 
3182       IF  p_lease_contacts_rec.lease_change_id = pn_lease_utils.g_pn_miss_num
3183       THEN
3184          p_lease_contacts_rec.lease_change_id := NULL;
3185       END IF;
3186 
3187       IF  p_lease_contacts_rec.location_id = pn_lease_utils.g_pn_miss_num
3188       THEN
3189          p_lease_contacts_rec.location_id := NULL;
3190       END IF;
3191 
3192       IF  p_lease_contacts_rec.status = pn_lease_utils.g_pn_miss_char
3193       THEN
3194          p_lease_contacts_rec.status := NULL;
3195       END IF;
3196 
3197       IF  p_lease_contacts_rec.attribute_category = pn_lease_utils.g_pn_miss_char
3198       THEN
3199          p_lease_contacts_rec.attribute_category:= NULL;
3200       END IF;
3201 
3202       IF  p_lease_contacts_rec.attribute1 = pn_lease_utils.g_pn_miss_char
3203       THEN
3204          p_lease_contacts_rec.attribute1:= NULL;
3205       END IF;
3206 
3207       IF  p_lease_contacts_rec.attribute2 = pn_lease_utils.g_pn_miss_char
3208       THEN
3209          p_lease_contacts_rec.attribute2:= NULL;
3210       END IF;
3211 
3212       IF  p_lease_contacts_rec.attribute3 = pn_lease_utils.g_pn_miss_char
3213       THEN
3214          p_lease_contacts_rec.attribute3:= NULL;
3215       END IF;
3216 
3217       IF  p_lease_contacts_rec.attribute4 = pn_lease_utils.g_pn_miss_char
3218       THEN
3219          p_lease_contacts_rec.attribute4:= NULL;
3220       END IF;
3221 
3222       IF  p_lease_contacts_rec.attribute5 = pn_lease_utils.g_pn_miss_char
3223       THEN
3224          p_lease_contacts_rec.attribute5:= NULL;
3225       END IF;
3226 
3227       IF  p_lease_contacts_rec.attribute6 = pn_lease_utils.g_pn_miss_char
3228       THEN
3229          p_lease_contacts_rec.attribute6:= NULL;
3230       END IF;
3231 
3232       IF  p_lease_contacts_rec.attribute7 = pn_lease_utils.g_pn_miss_char
3233       THEN
3234          p_lease_contacts_rec.attribute7:= NULL;
3235       END IF;
3236 
3237       IF  p_lease_contacts_rec.attribute8 = pn_lease_utils.g_pn_miss_char
3238       THEN
3239          p_lease_contacts_rec.attribute8:= NULL;
3240       END IF;
3241 
3242       IF  p_lease_contacts_rec.attribute9 = pn_lease_utils.g_pn_miss_char
3243       THEN
3244          p_lease_contacts_rec.attribute9:= NULL;
3245       END IF;
3246 
3247       IF  p_lease_contacts_rec.attribute10 = pn_lease_utils.g_pn_miss_char
3248       THEN
3249          p_lease_contacts_rec.attribute10:= NULL;
3250       END IF;
3251 
3252       IF  p_lease_contacts_rec.attribute11 = pn_lease_utils.g_pn_miss_char
3253       THEN
3254          p_lease_contacts_rec.attribute11:= NULL;
3255       END IF;
3256 
3257       IF  p_lease_contacts_rec.attribute12 = pn_lease_utils.g_pn_miss_char
3258       THEN
3259          p_lease_contacts_rec.attribute12:= NULL;
3260       END IF;
3261 
3262       IF  p_lease_contacts_rec.attribute13 = pn_lease_utils.g_pn_miss_char
3263       THEN
3264          p_lease_contacts_rec.attribute13:= NULL;
3265       END IF;
3266 
3267       IF  p_lease_contacts_rec.attribute14 = pn_lease_utils.g_pn_miss_char
3268       THEN
3269          p_lease_contacts_rec.attribute14:= NULL;
3270       END IF;
3271 
3272       IF  p_lease_contacts_rec.attribute15 = pn_lease_utils.g_pn_miss_char
3273       THEN
3274          p_lease_contacts_rec.attribute15:= NULL;
3275       END IF;
3276 
3277       IF  p_lease_contacts_rec.org_id = pn_lease_utils.g_pn_miss_num
3278       THEN
3279          p_lease_contacts_rec.org_id:= NULL;
3280       END IF;
3281       IF  p_lease_contacts_rec.error_flag = pn_lease_utils.g_pn_miss_char
3282       THEN
3283          p_lease_contacts_rec.error_flag:= NULL;
3284       END IF;
3285    END  INIT_CONTACTS_REC;
3286 
3287    PROCEDURE insert_contacts_row (
3288       p_lease_contacts_rec       IN OUT NOCOPY    lease_contacts_rec
3289     , p_lease_rec                IN         lease_rec
3290     , p_lease_context            IN         VARCHAR2
3291     , x_return_status            OUT NOCOPY VARCHAR2)
3292    IS
3293       l_rowid   VARCHAR2 (18) := NULL;
3294    BEGIN
3295      -- ----------------------dbms_output.put_line('In Insert Contacts ROW');
3296       ----------------------dbms_output.put_line('p_lease_id in insert contacts row'||p_lease_rec.lease_id);
3297      pvt_debug(g_pkg_name||'- INSERT_CONTACTS_ROW:Calling INIT_CONTACTS_REC',3);
3298       INIT_CONTACTS_REC( p_lease_contacts_rec => p_lease_contacts_rec
3299                        , p_lease_context      => p_lease_context
3300                        , x_return_status      => x_return_status
3301                          );
3302 
3303       p_lease_contacts_rec.lease_id:=p_lease_rec.lease_id;
3304       p_lease_contacts_rec.lease_change_id:=p_lease_rec.lease_change_id;
3305 ----------------------dbms_output.put_line('In Contacts Assignment Inserrow');--Rupak
3306       pvt_debug(g_pkg_name||'- INSERT_CONTACTS_ROW:Calling PN_CONTACT_ASSIGNMENTS_PKG.INSERT_ROW',3);
3307       pn_contact_assignments_pkg.insert_row
3308                             (x_rowid                       => l_rowid
3309                            , x_contact_assignment_id       => p_lease_contacts_rec.contact_assignment_id
3310                            , x_last_update_date            => NVL
3311                                                                  (p_lease_contacts_rec.last_update_date
3312                                                                 , SYSDATE)
3313                            , x_last_updated_by             => NVL
3314                                                                  (p_lease_contacts_rec.last_updated_by
3315                                                                 , fnd_global.user_id)
3316                            , x_creation_date               => NVL
3317                                                                  (p_lease_contacts_rec.creation_date
3318                                                                 , SYSDATE)
3319                            , x_created_by                  => NVL (p_lease_contacts_rec.created_by
3320                                                                  , fnd_global.user_id)
3321                            , x_last_update_login           => NVL
3322                                                                  (p_lease_contacts_rec.last_update_login
3323                                                                 , fnd_global.login_id)
3324                            , x_company_id                  => p_lease_contacts_rec.company_id
3325                            , x_company_site_id             => p_lease_contacts_rec.company_site_id
3326                            , x_lease_id                    => p_lease_contacts_rec.lease_id
3327                            , x_lease_change_id             => p_lease_contacts_rec.lease_change_id
3328                            , x_location_id                 => p_lease_contacts_rec.location_id
3329                            , x_status                      => p_lease_contacts_rec.status
3330                            , x_attribute_category          => p_lease_contacts_rec.attribute_category
3331                            , x_attribute1                  => p_lease_contacts_rec.attribute1
3332                            , x_attribute2                  => p_lease_contacts_rec.attribute2
3333                            , x_attribute3                  => p_lease_contacts_rec.attribute3
3334                            , x_attribute4                  => p_lease_contacts_rec.attribute4
3335                            , x_attribute5                  => p_lease_contacts_rec.attribute5
3336                            , x_attribute6                  => p_lease_contacts_rec.attribute6
3337                            , x_attribute7                  => p_lease_contacts_rec.attribute7
3338                            , x_attribute8                  => p_lease_contacts_rec.attribute8
3339                            , x_attribute9                  => p_lease_contacts_rec.attribute9
3340                            , x_attribute10                 => p_lease_contacts_rec.attribute10
3341                            , x_attribute11                 => p_lease_contacts_rec.attribute11
3342                            , x_attribute12                 => p_lease_contacts_rec.attribute12
3343                            , x_attribute13                 => p_lease_contacts_rec.attribute13
3344                            , x_attribute14                 => p_lease_contacts_rec.attribute14
3345                            , x_attribute15                 => p_lease_contacts_rec.attribute15
3346                            , x_org_id                      => p_lease_contacts_rec.org_id);
3347 
3348    ----------------------dbms_output.put_line('END OF LEASE_INSERT_ROW contact_assignment_id: '|| p_lease_contacts_rec.contact_assignment_id);--Rupak
3349      pvt_debug(g_pkg_name||'- INSERT_CONTACTS_ROW:PN_CONTACT_ASSIGNMENTS_PKG.INSERT_ROW Successful',3);
3350 
3351    EXCEPTION
3352       WHEN OTHERS
3353       THEN
3354         NULL;
3355          ----------------------dbms_output.put_line (   'IN LEASE CONTACTS INSERT EXCEPTION: '|| SQLERRM);--Rupak
3356          pvt_debug(g_pkg_name||'- INSERT_CONTACTS_ROW:Exception:PN_CONTACT_ASSIGNMENTS_PKG.INSERT_ROW'||SQLERRM,3);
3357    END insert_contacts_row;
3358 
3359  PROCEDURE validate_contacts_tbl (
3360       p_lease_contacts_tbl       IN OUT  NOCOPY    lease_contacts_tbl
3361     , p_lease_rec                IN          lease_rec
3362     , p_validate                 IN          VARCHAR2
3363     , p_lease_context            IN          VARCHAR2
3364     , p_operation                IN          VARCHAR2
3365     , x_return_status            OUT NOCOPY  VARCHAR2)
3366    IS
3367       l_lease_contacts_rec                   lease_contacts_rec;
3368       l_return_status                        VARCHAR2 (30) := NULL;
3369       l_contact_record_cnt                   NUMBER        := pn_lease_utils.g_pn_miss_num;
3370       l_api_name                   CONSTANT VARCHAR2 (30)  := p_operation;
3371       l_api_name_full              CONSTANT VARCHAR2 (61)  := g_pkg_name || '.'|| l_api_name;
3372       l_error_flag                          VARCHAR2 (1);
3373       l_err_contact_count NUMBER := 0;
3374    BEGIN
3375 
3376       -- Standard start of API savepoint
3377       SAVEPOINT validate_contacts_tbl;
3378 
3379       -- Initialize message list if p_init_msg_list is set to TRUE
3380       --     IF fnd_api.to_boolean (p_init_msg_list)
3381       --     THEN
3382       --        FND_MSG_PUB.INITIALIZE;
3383       --     END IF;
3384 
3385       -- Initialize the return status.
3386       x_return_status                      := fnd_api.g_ret_sts_success;
3387       l_contact_record_cnt                 := p_lease_contacts_tbl.COUNT;
3388       IF l_contact_record_cnt >0
3389       THEN
3390       ----------------------dbms_output.put_line('Private Contacts:1');--Rupak
3391         pvt_debug(g_pkg_name||'- Inside VALIDATE_CONTACTS_TBL',3);
3392          FOR i IN 1 .. l_contact_record_cnt
3393          LOOP
3394            BEGIN
3395             l_error_flag:='N';
3396             p_lease_contacts_tbl (i).error_flag := 'N';
3397           ----------------------dbms_output.put_line('Private Contacts:2');--Rupak
3398             pvt_debug(g_pkg_name||'- VALIDATE_CONTACTS_TBL:',3);
3399             -- Validate Role
3400             IF (   (    p_lease_contacts_tbl (i).role IS NOT NULL
3401                     AND p_lease_contacts_tbl (i).role <> pn_lease_utils.g_pn_miss_char)
3402                 OR (    p_lease_contacts_tbl (i).role_code IS NOT NULL
3403                     AND p_lease_contacts_tbl (i).role_code<> pn_lease_utils.g_pn_miss_char))
3404             THEN
3405               ----------------------dbms_output.put_line('Private Contacts:2.1');--Rupak
3406                pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_contact_role
3407                                              , p_operation                   => p_operation
3408                                              , p_lookup_meaning              => p_lease_contacts_tbl (i).role
3409                                              , p_lookup_type                 => l_lease_role_lookup_type
3410                                              , x_lookup_type_code            => p_lease_contacts_tbl (i).role_code
3411                                              , x_return_status               => x_return_status
3412                                              );
3413 
3414 
3415                ----------------------dbms_output.put_line (   'Contact Role: ' || p_lease_contacts_tbl (i).role_code);--Rupak
3416                pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Contact Role:'||p_lease_contacts_tbl (i).role_code,3);
3417                IF (x_return_status = fnd_api.g_ret_sts_error)
3418                THEN
3419                   ----------------------dbms_output.put_line (   'Contact Role:fnd_api.g_ret_sts_error ' || p_lease_contacts_tbl (i).role_code);--Rupak
3420                   l_error_flag:='Y';
3421                   p_lease_contacts_tbl (i).error_flag := 'Y';
3422                   fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
3423                   fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_lease_role_lookup_type));
3424                   fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_contacts_tbl (i).role));
3425                   fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_contacts_tbl (i).role_code));
3426                   fnd_msg_pub.ADD;
3427                   RAISE fnd_api.g_exc_error;
3428                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3429                THEN
3430                ----------------------dbms_output.put_line (   'Contact Role:fnd_api.g_ret_sts_unexp_error ' || p_lease_contacts_tbl (i).role_code);--Rupak
3431                   l_error_flag:='Y';
3432                   p_lease_contacts_tbl (i).error_flag := 'Y';
3433                   fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
3434                   fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_lease_role_lookup_type));
3435                   fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_contacts_tbl (i).role));
3436                   fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_contacts_tbl (i).role_code));
3437                   fnd_msg_pub.ADD;
3438                   RAISE fnd_api.g_exc_unexpected_error;
3439                END IF;
3440 
3441             ELSE
3442               IF (trim(p_operation) <> 'UPDATE_CONTACTS') THEN
3443                pn_lease_utils.add_null_parameter_msg
3444                                                (p_token_apiname               => l_api_name_full
3445                                               , p_token_nullparam             => 'CONTACT_ROLE');
3446                l_error_flag:='Y';
3447                RAISE fnd_api.g_exc_error;
3448               END IF;
3449             END IF;
3450 
3451            IF (trim(p_operation) = 'UPDATE_CONTACTS' AND ( (p_lease_contacts_tbl (i).role_code IS NULL OR p_lease_contacts_tbl (i).role_code = pn_lease_utils.g_pn_miss_char)
3452                                                          AND(p_lease_contacts_tbl (i).role IS NULL OR p_lease_contacts_tbl (i).role = pn_lease_utils.g_pn_miss_char)
3453                                                          )
3454               ) THEN
3455               BEGIN
3456                 SELECT lease_role,lease_role_type
3457                 INTO   p_lease_contacts_tbl (i).role,p_lease_contacts_tbl (i).role_code
3458                 FROM   pn_contact_assignments_v
3459                 WHERE  contact_assignment_id =  p_lease_contacts_tbl (i).contact_assignment_id;
3460               EXCEPTION
3461                WHEN OTHERS THEN
3462                  ----------------------dbms_output.put_line('Exception: No Data Retrived for the role');--Rupak
3463                  pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Exception:No Data Retrived for the role'||SQLERRM,3);
3464                  NULL;
3465               END;
3466             END IF;
3467 
3468 
3469                ----------------------dbms_output.put_line('Private Contacts:3');--Rupak
3470             IF (   (    p_lease_contacts_tbl (i).company_id IS NOT NULL
3471                     AND p_lease_contacts_tbl (i).company_id <> pn_lease_utils.g_pn_miss_num)
3472                 OR (    p_lease_contacts_tbl (i).company_name IS NOT NULL
3473                     AND p_lease_contacts_tbl (i).company_name <> pn_lease_utils.g_pn_miss_char))
3474             THEN
3475              ----------------------dbms_output.put_line('Private Contacts:4');--Rupak
3476 
3477                pn_lease_utils.get_company_id (p_parameter_name              => l_param_company_id
3478                                             , p_operation                   => p_operation
3479                                             , p_lease_role_type             => p_lease_contacts_tbl (i).role_code
3480                                             , p_company_name                => p_lease_contacts_tbl (i).company_name
3481                                             , x_return_status               => x_return_status
3482                                             , x_company_id                  => p_lease_contacts_tbl (i).company_id);
3483 
3484                ------------------dbms_output.put_line (   'Contacts Private:Company Id: ' || p_lease_contacts_tbl (i).company_id||'-'||x_return_status);--Rupak
3485                  pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Company ID'||p_lease_contacts_tbl (i).company_id,3);
3486 
3487 
3488                IF (x_return_status = fnd_api.g_ret_sts_error)
3489                THEN
3490                   l_error_flag:='Y';
3491                   fnd_message.set_name ('PN', 'PN_INVALID_COMPANY');
3492                   fnd_message.set_token ('COMPANY_NAME', get_miss_char_decode(p_lease_contacts_tbl (i).company_name));
3493                   fnd_message.set_token ('COMPANY_ID', get_miss_num_decode(p_lease_contacts_tbl (i).company_id));
3494                   fnd_msg_pub.ADD;
3495                   p_lease_contacts_tbl (i).error_flag := 'Y';
3496                   RAISE fnd_api.g_exc_error;
3497                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3498                THEN
3499                   l_error_flag:='Y';
3500                   fnd_message.set_name ('PN', 'PN_INVALID_COMPANY');
3501                   fnd_message.set_token ('COMPANY_NAME', get_miss_char_decode(p_lease_contacts_tbl (i).company_name));
3502                   fnd_message.set_token ('COMPANY_ID', get_miss_num_decode(p_lease_contacts_tbl (i).company_id));
3503                   fnd_msg_pub.ADD;
3504                   p_lease_contacts_tbl (i).error_flag := 'Y';
3505                   RAISE fnd_api.g_exc_unexpected_error;
3506                END IF;
3507 
3508             ELSE
3509              IF (trim(p_operation) <> 'UPDATE_CONTACTS') THEN
3510               ----------------------dbms_output.put_line('Private Contacts:5');--Rupak
3511                /*pn_lease_utils.add_null_parameter_msg
3512                                                (p_token_apiname               => l_api_name_full
3513                                               , p_token_nullparam             => 'CONTACT_CUSTOMER');*/
3514                l_error_flag:='Y';
3515                fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
3516                fnd_message.set_token ('API_NAME', l_api_name_full);
3517                fnd_message.set_token ('NULL_PARAM', 'CONTACT_CUSTOMER');
3518                fnd_msg_pub.ADD;
3519                RAISE fnd_api.g_exc_error;
3520              END IF;
3521             END IF;
3522             ----------------------dbms_output.put_line('Private Contacts:6');--Rupak
3523             IF (   (    p_lease_contacts_tbl (i).company_site_id IS NOT NULL
3524                     AND p_lease_contacts_tbl (i).company_site_id <> pn_lease_utils.g_pn_miss_num)
3525                 OR (    p_lease_contacts_tbl (i).company_site_name IS NOT NULL
3526                     AND p_lease_contacts_tbl (i).company_site_name <> pn_lease_utils.g_pn_miss_char))
3527             THEN
3528                pn_lease_utils.get_company_site_id
3529                                         (p_parameter_name              => l_param_company_site_id
3530                                        , p_operation                   => p_operation
3531                                        , p_company_id                  => p_lease_contacts_tbl (i).company_id
3532                                        , p_company_site_name           => p_lease_contacts_tbl (i).company_site_name
3533                                        , x_return_status               => x_return_status
3534                                        , x_company_site_id             => p_lease_contacts_tbl (i).company_site_id
3535                                        );
3536               ----------------------dbms_output.put_line (   'Company site Id: '|| p_lease_contacts_tbl (i).company_site_id);
3537                 pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Company Site ID'||p_lease_contacts_tbl (i).company_site_id,3);
3538                IF (x_return_status = fnd_api.g_ret_sts_error)
3539                THEN
3540                   l_error_flag:='Y';
3541                   fnd_message.set_name ('PN', 'PN_INVALID_COMPANY_SITE');
3542                   fnd_message.set_token ('COMPANY_SITE_NAME', get_miss_char_decode(p_lease_contacts_tbl (i).company_site_name));
3543                   fnd_message.set_token ('COMPANY_SITE_ID', get_miss_num_decode(p_lease_contacts_tbl (i).company_site_id));
3544                   fnd_msg_pub.ADD;
3545                   p_lease_contacts_tbl (i).error_flag := 'Y';
3546                   RAISE fnd_api.g_exc_error;
3547                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3548                THEN
3549                   l_error_flag:='Y';
3550                   fnd_message.set_name ('PN', 'PN_INVALID_COMPANY_SITE');
3551                   fnd_message.set_token ('COMPANY_SITE_NAME', get_miss_char_decode(p_lease_contacts_tbl (i).company_site_name));
3552                   fnd_message.set_token ('COMPANY_SITE_ID', get_miss_num_decode(p_lease_contacts_tbl (i).company_site_id));
3553                   fnd_msg_pub.ADD;
3554                   p_lease_contacts_tbl (i).error_flag := 'Y';
3555                   RAISE fnd_api.g_exc_unexpected_error;
3556                END IF;
3557 
3558             ELSE
3559              IF (trim(p_operation) <> 'UPDATE_CONTACTS') THEN
3560                /*pn_lease_utils.add_null_parameter_msg
3561                                                (p_token_apiname               => l_api_name_full
3562                                               , p_token_nullparam             => 'CONTACT_CUSTOMER_SITE');*/
3563               l_error_flag:='Y';
3564               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
3565               fnd_message.set_token ('API_NAME', l_api_name_full);
3566               fnd_message.set_token ('NULL_PARAM', 'CONTACT_CUSTOMER_SITE');
3567               fnd_msg_pub.ADD;
3568               RAISE fnd_api.g_exc_error;
3569               END IF;
3570             END IF;
3571           IF(RTRIM(LTRIM(p_operation)) = 'CREATE_LEASE') THEN
3572                ----------------------dbms_output.put_line('Private Contacts:7');--Rupak
3573             -- Validate the descriptive flexfields IN CREATE CONTACTS
3574             /*IF NOT (    (p_lease_contacts_tbl (i).attribute_category = pn_lease_utils.g_pn_miss_char)
3575                     AND (p_lease_contacts_tbl (i).attribute1 = pn_lease_utils.g_pn_miss_char)
3576                     AND (p_lease_contacts_tbl (i).attribute2 = pn_lease_utils.g_pn_miss_char)
3577                     AND (p_lease_contacts_tbl (i).attribute3 = pn_lease_utils.g_pn_miss_char)
3578                     AND (p_lease_contacts_tbl (i).attribute4 = pn_lease_utils.g_pn_miss_char)
3579                     AND (p_lease_contacts_tbl (i).attribute5 = pn_lease_utils.g_pn_miss_char)
3580                     AND (p_lease_contacts_tbl (i).attribute6 = pn_lease_utils.g_pn_miss_char)
3581                     AND (p_lease_contacts_tbl (i).attribute7 = pn_lease_utils.g_pn_miss_char)
3582                     AND (p_lease_contacts_tbl (i).attribute8 = pn_lease_utils.g_pn_miss_char)
3583                     AND (p_lease_contacts_tbl (i).attribute9 = pn_lease_utils.g_pn_miss_char)
3584                     AND (p_lease_contacts_tbl (i).attribute10 = pn_lease_utils.g_pn_miss_char)
3585                     AND (p_lease_contacts_tbl (i).attribute11 = pn_lease_utils.g_pn_miss_char)
3586                     AND (p_lease_contacts_tbl (i).attribute12 = pn_lease_utils.g_pn_miss_char)
3587                     AND (p_lease_contacts_tbl (i).attribute13 = pn_lease_utils.g_pn_miss_char)
3588                     AND (p_lease_contacts_tbl (i).attribute14 = pn_lease_utils.g_pn_miss_char)
3589                     AND (p_lease_contacts_tbl (i).attribute15 = pn_lease_utils.g_pn_miss_char))
3590             THEN*/
3591                ----------------------dbms_output.put_line ('IN ATTRIBUTES:CONTACT');--Rupak
3592                pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Validating the Contact Attributes',3);
3593                IF (p_lease_contacts_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
3594                   p_lease_contacts_tbl(i).attribute_category := NULL;
3595                END IF;
3596 
3597                IF (p_lease_contacts_tbl(i).attribute1 = pn_lease_utils.g_pn_miss_char)
3598                THEN
3599                  p_lease_contacts_tbl(i).attribute1 := NULL;
3600                --ELSE
3601                  -- l_lease_contacts_rec.attribute1      := p_lease_contacts_tbl (i).attribute1;
3602                END IF;
3603 
3604                IF (p_lease_contacts_tbl (i).attribute2 = pn_lease_utils.g_pn_miss_char)
3605                THEN
3606                   p_lease_contacts_tbl(i).attribute2      := NULL;
3607               -- ELSE
3608                  -- l_lease_contacts_rec.attribute2      := p_lease_contacts_tbl (i).attribute2;
3609                END IF;
3610 
3611                IF (p_lease_contacts_tbl (i).attribute3 = pn_lease_utils.g_pn_miss_char)
3612                THEN
3613                   p_lease_contacts_tbl(i).attribute3      := NULL;
3614                --ELSE
3615                  -- l_lease_contacts_rec.attribute3      := p_lease_contacts_tbl (i).attribute3;
3616                END IF;
3617 
3618                IF (p_lease_contacts_tbl (i).attribute4 = pn_lease_utils.g_pn_miss_char)
3619                THEN
3620                   p_lease_contacts_tbl(i).attribute4      := NULL;
3621               -- ELSE
3622                  -- l_lease_contacts_rec.attribute4      := p_lease_contacts_tbl (i).attribute4;
3623                END IF;
3624 
3625                IF (p_lease_contacts_tbl (i).attribute5 = pn_lease_utils.g_pn_miss_char)
3626                THEN
3627                   p_lease_contacts_tbl(i).attribute5      := NULL;
3628                --ELSE
3629                  -- l_lease_contacts_rec.attribute5      := p_lease_contacts_tbl (i).attribute5;
3630                END IF;
3631 
3632                IF (p_lease_contacts_tbl (i).attribute6 = pn_lease_utils.g_pn_miss_char)
3633                THEN
3634                   p_lease_contacts_tbl(i).attribute6      := NULL;
3635               -- ELSE
3636                  -- l_lease_contacts_rec.attribute6      := p_lease_contacts_tbl (i).attribute6;
3637                END IF;
3638 
3639                IF (p_lease_contacts_tbl (i).attribute7 = pn_lease_utils.g_pn_miss_char)
3640                THEN
3641                   p_lease_contacts_tbl(i).attribute7      := NULL;
3642               -- ELSE
3643                  -- l_lease_contacts_rec.attribute7      := p_lease_contacts_tbl (i).attribute7;
3644                END IF;
3645 
3646                IF (p_lease_contacts_tbl (i).attribute8 = pn_lease_utils.g_pn_miss_char)
3647                THEN
3648                   p_lease_contacts_tbl(i).attribute8      := NULL;
3649                --ELSE
3650                  -- l_lease_contacts_rec.attribute8      := p_lease_contacts_tbl (i).attribute8;
3651                END IF;
3652 
3653                IF (p_lease_contacts_tbl (i).attribute9 = pn_lease_utils.g_pn_miss_char)
3654                THEN
3655                   p_lease_contacts_tbl(i).attribute9      := NULL;
3656               -- ELSE
3657                   --l_lease_contacts_rec.attribute9      := p_lease_contacts_tbl (i).attribute9;
3658                END IF;
3659 
3660                IF (p_lease_contacts_tbl (i).attribute10 = pn_lease_utils.g_pn_miss_char)
3661                THEN
3662                   p_lease_contacts_tbl(i).attribute10     := NULL;
3663               -- ELSE
3664                 --  l_lease_contacts_rec.attribute10     := p_lease_contacts_tbl (i).attribute10;
3665                END IF;
3666 
3667                IF (p_lease_contacts_tbl (i).attribute11 = pn_lease_utils.g_pn_miss_char)
3668                THEN
3669                   p_lease_contacts_tbl(i).attribute11     := NULL;
3670               -- ELSE
3671                  -- l_lease_contacts_rec.attribute11     := p_lease_contacts_tbl (i).attribute11;
3672                END IF;
3673 
3674                IF (p_lease_contacts_tbl (i).attribute12 = pn_lease_utils.g_pn_miss_char)
3675                THEN
3676                   p_lease_contacts_tbl(i).attribute12     := NULL;
3677                --ELSE
3678                 --  l_lease_contacts_rec.attribute12     := p_lease_contacts_tbl (i).attribute12;
3679                END IF;
3680 
3681                IF (p_lease_contacts_tbl (i).attribute13 = pn_lease_utils.g_pn_miss_char)
3682                THEN
3683                   p_lease_contacts_tbl(i).attribute13     := NULL;
3684                --ELSE
3685                 --  l_lease_contacts_rec.attribute13     := p_lease_contacts_tbl (i).attribute13;
3686                END IF;
3687 
3688                IF (p_lease_contacts_tbl (i).attribute14 = pn_lease_utils.g_pn_miss_char)
3689                THEN
3690                   p_lease_contacts_tbl(i).attribute14     := NULL;
3691               -- ELSE
3692                 --  l_lease_contacts_rec.attribute14     := p_lease_contacts_tbl (i).attribute14;
3693                END IF;
3694 
3695                IF (p_lease_contacts_tbl (i).attribute15 = pn_lease_utils.g_pn_miss_char)
3696                THEN
3697                   p_lease_contacts_tbl(i).attribute15     := NULL;
3698               -- ELSE
3699                 --  l_lease_contacts_rec.attribute15     := p_lease_contacts_tbl (i).attribute15;
3700                END IF;
3701       IF (get_attribute_status('PN_CONTACT_ASSIGNMENTS') > 0) THEN
3702              /*get_attribute_mandatory_status('PN_CONTACT_ASSIGNMENTS'
3703                                              ,p_lease_contacts_tbl(i).attribute1
3704                                              ,p_lease_contacts_tbl(i).attribute2
3705                                              ,p_lease_contacts_tbl(i).attribute3
3706                                              ,p_lease_contacts_tbl(i).attribute4
3707                                              ,p_lease_contacts_tbl(i).attribute5
3708                                              ,p_lease_contacts_tbl(i).attribute6
3709                                              ,p_lease_contacts_tbl(i).attribute7
3710                                              ,p_lease_contacts_tbl(i).attribute8
3711                                              ,p_lease_contacts_tbl(i).attribute9
3712                                              ,p_lease_contacts_tbl(i).attribute10
3713                                              ,p_lease_contacts_tbl(i).attribute11
3714                                              ,p_lease_contacts_tbl(i).attribute12
3715                                              ,p_lease_contacts_tbl(i).attribute13
3716                                              ,p_lease_contacts_tbl(i).attribute14
3717                                              ,p_lease_contacts_tbl(i).attribute15
3718                                              ,x_return_status
3719                                             );
3720           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
3721               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
3722               fnd_message.set_token ('API_NAME', l_api_name_full);
3723               fnd_message.set_token ('NULL_PARAM','Required attribute in Contacts is NULL');
3724               fnd_msg_pub.ADD;
3725               RAISE fnd_api.g_exc_error;
3726           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
3727               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
3728               fnd_message.set_token ('API_NAME', l_api_name_full);
3729               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Contacts is NULL');
3730               fnd_msg_pub.ADD;
3731               RAISE fnd_api.g_exc_unexpected_error;
3732           ELSE*/
3733     IF NOT ((p_lease_contacts_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute_category IS NULL)
3734                                         AND (p_lease_contacts_tbl(i).attribute1 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute1 IS NULL)
3735                                         AND (p_lease_contacts_tbl(i).attribute2 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute2 IS NULL)
3736                                         AND (p_lease_contacts_tbl(i).attribute3 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute3 IS NULL)
3737                                         AND (p_lease_contacts_tbl(i).attribute4 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute4 IS NULL)
3738                                         AND (p_lease_contacts_tbl(i).attribute5 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute5 IS NULL)
3739                                         AND (p_lease_contacts_tbl(i).attribute6 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute6 IS NULL)
3740                                         AND (p_lease_contacts_tbl(i).attribute7 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute7 IS NULL)
3741                                         AND (p_lease_contacts_tbl(i).attribute8 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute8 IS NULL)
3742                                         AND (p_lease_contacts_tbl(i).attribute9 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute9 IS NULL)
3743                                         AND (p_lease_contacts_tbl(i).attribute10 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute10 IS NULL)
3744                                         AND (p_lease_contacts_tbl(i).attribute11 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute11 IS NULL)
3745                                         AND (p_lease_contacts_tbl(i).attribute12 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute12 IS NULL)
3746                                         AND (p_lease_contacts_tbl(i).attribute13 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute13 IS NULL)
3747                                         AND (p_lease_contacts_tbl(i).attribute14 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute14 IS NULL)
3748                                         AND (p_lease_contacts_tbl(i).attribute15 = pn_lease_utils.g_pn_miss_char OR p_lease_contacts_tbl(i).attribute15 IS NULL)
3749                                 ) THEN
3750                pn_lease_utils.validate_desc_flex
3751                                             (p_api_name                    => 'PN_LEASE_PVT'||'.'||'CONTACTS'
3752                                            , p_application_short_name      => 'PN'
3753                                            , p_desc_flex_name              => 'PN_CONTACT_ASSIGNMENTS'--l_param_desc_flex_name
3754                                            , p_desc_segment1               => p_lease_contacts_tbl(i).attribute1
3755                                            , p_desc_segment2               => p_lease_contacts_tbl(i).attribute2
3756                                            , p_desc_segment3               => p_lease_contacts_tbl(i).attribute3
3757                                            , p_desc_segment4               => p_lease_contacts_tbl(i).attribute4
3758                                            , p_desc_segment5               => p_lease_contacts_tbl(i).attribute5
3759                                            , p_desc_segment6               => p_lease_contacts_tbl(i).attribute6
3760                                            , p_desc_segment7               => p_lease_contacts_tbl(i).attribute7
3761                                            , p_desc_segment8               => p_lease_contacts_tbl(i).attribute8
3762                                            , p_desc_segment9               => p_lease_contacts_tbl(i).attribute9
3763                                            , p_desc_segment10              => p_lease_contacts_tbl(i).attribute10
3764                                            , p_desc_segment11              => p_lease_contacts_tbl(i).attribute11
3765                                            , p_desc_segment12              => p_lease_contacts_tbl(i).attribute12
3766                                            , p_desc_segment13              => p_lease_contacts_tbl(i).attribute13
3767                                            , p_desc_segment14              => p_lease_contacts_tbl(i).attribute14
3768                                            , p_desc_segment15              => p_lease_contacts_tbl(i).attribute15
3769                                            , p_desc_context                => p_lease_contacts_tbl(i).attribute_category
3770                                            , p_resp_appl_id                => fnd_global.resp_appl_id
3771                                            , p_resp_id                     => fnd_global.resp_id
3772                                            , p_return_status               => x_return_status
3773                                            );
3774 
3775                IF (x_return_status = fnd_api.g_ret_sts_error)
3776                THEN
3777                   --l_error_flag:='Y';
3778                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
3779                  fnd_message.set_token ('COLUMN', 'PN_CONTACT_ASSIGNMENTS_DESC_FIELDS');
3780                  fnd_message.set_token ('P_TEXT', 'PN_CONTACT_ASSIGNMENTS'|| '-'|| SQLERRM);
3781                  fnd_msg_pub.ADD;
3782                   RAISE fnd_api.g_exc_error;
3783                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3784                THEN
3785                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
3786                  fnd_message.set_token ('COLUMN', 'PN_CONTACT_ASSIGNMENTS_DESC_FIELDS');
3787                  fnd_message.set_token ('P_TEXT', 'PN_CONTACT_ASSIGNMENTS'|| '-'|| SQLERRM);
3788                  fnd_msg_pub.ADD;
3789                  RAISE fnd_api.g_exc_unexpected_error;
3790                END IF;
3791             END IF;                                   -- End of attributes valitions in create contacts
3792         END IF;
3793       END IF;
3794 
3795             IF (   (    p_lease_contacts_tbl(i).status  IS  NULL
3796                      OR  p_lease_contacts_tbl(i).status  = pn_lease_utils.g_pn_miss_char
3797                    )
3798                )
3799             THEN
3800                p_lease_contacts_tbl(i).status:='A';
3801             END IF;
3802 
3803             ----------------------dbms_output.put_line('BEFORE calling insert_contacts_row');
3804 
3805 
3806 
3807           IF   (RTRIM(LTRIM(p_operation)) = ('CREATE_LEASE') AND l_error_flag<>'Y' AND   NVL( P_VALIDATE,'F')<>'T') THEN
3808               pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Calling the INSERT_CONTACTS_ROW',3);
3809                pn_lease_pvt.insert_contacts_row (p_lease_contacts_rec          => p_lease_contacts_tbl(i)
3810                                                , p_lease_rec                   => p_lease_rec
3811                                                , p_lease_context               => p_lease_context
3812                                                , x_return_status               => x_return_status);
3813                ----------------------dbms_output.put_line('pn_lease_pvt.insert_contacts_row RETURN STATUS: '||x_return_status);
3814                 pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Return Status of the INSERT_CONTACTS_ROW'||x_return_status,3);
3815                IF (x_return_status = fnd_api.g_ret_sts_error)
3816                THEN
3817                   l_error_flag:='Y';
3818 
3819                   RAISE fnd_api.g_exc_error;
3820                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3821                THEN
3822                   l_error_flag:='Y';
3823 
3824                   RAISE fnd_api.g_exc_unexpected_error;
3825                END IF;
3826             END IF;
3827         EXCEPTION
3828           WHEN fnd_api.g_exc_error THEN
3829              ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
3830              l_err_contact_count := l_err_contact_count +1;
3831             pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
3832           WHEN fnd_api.g_exc_unexpected_error THEN
3833              ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
3834              l_err_contact_count := l_err_contact_count +1;
3835                pvt_debug(g_pkg_name||'-VALIDATE_TENANCIES_TBL:LOOOPING:EXCEPTION:FND_API.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
3836           WHEN OTHERS THEN
3837             ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
3838             l_err_contact_count := l_err_contact_count +1;
3839              pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM,3);
3840         END;
3841             ----------------------dbms_output.put_line('Private Contacts:13');--Rupak
3842          END LOOP;
3843 
3844       ELSE
3845          -- Retrun error status when table has no records
3846          --x_return_status := fnd_api.g_ret_sts_error;
3847          pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:No Contacts Records Passed'||SQLERRM,3);
3848       END IF;
3849        IF(l_err_contact_count = 0) THEN
3850          x_return_status := fnd_api.g_ret_sts_success;
3851        ELSE
3852         x_return_status := fnd_api.g_ret_sts_error;
3853        END IF;
3854    EXCEPTION
3855      WHEN OTHERS THEN
3856         pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:Exception'||SQLERRM,3);
3857         x_return_status := fnd_api.g_ret_sts_error;
3858    END validate_contacts_tbl;
3859 
3860 
3861 
3862    PROCEDURE validate_lease_rec (
3863       p_lease_rec                   IN OUT   NOCOPY     lease_rec
3864     , p_validate                    IN            VARCHAR2
3865     , p_lease_exp_rev_accounts_rec  IN OUT  NOCOPY      lease_account_rec
3866     , p_lease_accrual_account_rec   IN OUT  NOCOPY      lease_account_rec
3867     , p_lease_liab_rcvl_account_rec IN OUT  NOCOPY      lease_account_rec
3868     , p_operation                   IN            VARCHAR2
3869     , p_lease_context               IN            VARCHAR2
3870     , x_return_status                  OUT NOCOPY VARCHAR2)
3871    IS
3872       l_lease_rec                                 lease_rec;
3873       l_return_status                             VARCHAR2 (30)               := NULL;
3874       l_org_id                                    NUMBER                      := g_org_id;--pn_mo_cache_utils.get_profile_value('org_id');--pn_mo_cache_utils.get_current_org_id;
3875       l_term_template_type   pn_term_templates_all.term_template_type%TYPE;
3876       l_api_name                     CONSTANT     VARCHAR2 (30)               := p_operation;
3877       l_api_name_full                CONSTANT     VARCHAR2 (61)               := g_pkg_name || '.'|| l_api_name;
3878       l_error_flag                                VARCHAR2(1);
3879       l_tcc_status                                VARCHAR2(30);
3880       l_pro_rule                                  VARCHAR2(100);
3881    BEGIN
3882      ----------------------dbms_output.put_line ('In VALIDATE_LEASE_REC procedure of PVT package');--Rupak
3883        pvt_debug(g_pkg_name||'-Inside VALIDATE_LEASE_REC:'||x_return_status,3);
3884       -- Standard start of API savepoint
3885       SAVEPOINT validate_lease_rec;
3886       -- Initialize message list if p_init_msg_list is set to TRUE
3887       --     IF fnd_api.to_boolean (p_init_msg_list)
3888       --     THEN
3889       --        FND_MSG_PUB.INITIALIZE;
3890       --     END IF;
3891       -- Initialize the return status.
3892       x_return_status                      := fnd_api.g_ret_sts_success;
3893       -- Validate Lease Number
3894       pn_leases_pkg.check_unique_lease_number (x_return_status
3895                                              , p_lease_rec.lease_id
3896                                              , p_lease_rec.lease_num
3897                                              , l_org_id);
3898 
3899       IF (x_return_status = fnd_api.g_ret_sts_error)
3900       THEN
3901           --l_error_flag:='Y';
3902           fnd_message.set_name ('PN','PN_DUP_LEASE_NUMBER');
3903           fnd_message.set_token('LEASE_NUMBER', p_lease_rec.lease_num);
3904           fnd_msg_pub.ADD;
3905          RAISE fnd_api.g_exc_error;
3906       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3907       THEN
3908          --l_error_flag:='Y';
3909           fnd_message.set_name ('PN','PN_DUP_LEASE_NUMBER');
3910           fnd_message.set_token('LEASE_NUMBER', p_lease_rec.lease_num);
3911           fnd_msg_pub.ADD;
3912          RAISE fnd_api.g_exc_unexpected_error;
3913       END IF;
3914 
3915 -----------------------------------------------------------------------------------
3916 /*      -- Validate Lease name
3917       PN_LEASE_UTILS.CHECK_LEASE_NAME
3918          ( p_parameter_name   =>  'P_LEASE_NAME'
3919          , p_operation        =>  'CREATE_LEASE'
3920          , x_lease_name       =>   p_lease_rec.lease_name
3921          , x_return_status    =>   x_return_status
3922         );
3923 
3924 
3925       ----------------------dbms_output.put_line('Lease_name: '|| p_lease_rec.lease_name);
3926       ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
3927 
3928       IF (x_return_status = fnd_api.g_ret_sts_error)
3929       THEN
3930          RAISE FND_API.G_EXC_ERROR;
3931       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3932       THEN
3933          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3934       END IF;
3935 */
3936 
3937       -- Validate Lease Type
3938       pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_lease_type
3939                                     , p_operation                   => p_operation
3940                                     , p_lookup_meaning              => p_lease_rec.lease_type
3941                                     , p_lookup_type                 => l_leasetype_lookup_type
3942                                     , x_lookup_type_code            => p_lease_rec.lease_type_code
3943                                     , x_return_status               => x_return_status);
3944         ----------------------dbms_output.put_line (   'Lease_TYPE: '|| p_lease_rec.lease_type_code);--Rupak
3945         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Lease Type Code:'||p_lease_rec.lease_type_code,3);
3946 
3947       IF (x_return_status = fnd_api.g_ret_sts_error)
3948       THEN
3949          l_error_flag:='Y';
3950          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
3951          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_leasetype_lookup_type));
3952          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.lease_type));
3953          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.lease_type_code));
3954          fnd_msg_pub.ADD;
3955          RAISE fnd_api.g_exc_error;
3956       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3957       THEN
3958          l_error_flag:='Y';
3959          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
3960          fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_type,3));
3961          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
3962          RAISE fnd_api.g_exc_unexpected_error;
3963       END IF;
3964       -- Validate Lease Class
3965       pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_lease_class
3966                                     , p_operation                   => p_operation
3967                                     , p_lookup_meaning              => p_lease_rec.lease_class
3968                                     , p_lookup_type                 => l_leaseclass_lookup_type
3969                                     , x_lookup_type_code            => p_lease_rec.lease_class_code
3970                                     , x_return_status               => x_return_status);
3971 
3972       ----------------------dbms_output.put_line (   'Lease_CLASS: '|| p_lease_rec.lease_class_code);--Rupak
3973         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Lease Class Code:'||p_lease_rec.lease_class_code,3);
3974       ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
3975       IF (x_return_status = fnd_api.g_ret_sts_error)
3976       THEN
3977          l_error_flag:='Y';
3978          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
3979          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_leaseclass_lookup_type));
3980          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.lease_class));
3981          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.lease_class_code));
3982          fnd_msg_pub.ADD;
3983          RAISE fnd_api.g_exc_error;
3984       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
3985       THEN
3986          l_error_flag:='Y';
3987          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
3988          fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_class,3));
3989          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
3990          fnd_msg_pub.ADD;
3991          RAISE fnd_api.g_exc_unexpected_error;
3992       END IF;
3993 
3994       -- Validate Master_Lease
3995       IF p_lease_rec.lease_class_code = 'SUB_LEASE'
3996       THEN
3997          pn_lease_utils.get_masterlease_id (p_parameter_name              => l_param_master_lease
3998                                           , p_master_lease                => p_lease_rec.parent_lease_name
3999                                           , p_operation                   => p_operation
4000                                           , p_org_id                      => g_org_id
4001                                           , p_lease_id                    => p_lease_rec.lease_id
4002                                           , x_return_status               => x_return_status
4003                                           , x_master_lease_id             => p_lease_rec.parent_lease_id
4004                                           );
4005 
4006          ----------------------dbms_output.put_line (   'GET_MASTERLEASE_ID: '|| p_lease_rec.parent_lease_id);--Rupak
4007            pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Master Lease ID:'||p_lease_rec.parent_lease_id,3);
4008          IF (x_return_status = fnd_api.g_ret_sts_error)
4009          THEN
4010             l_error_flag:='Y';
4011             fnd_message.set_name ('PN', 'PN_INVALID_MASTERLEASE');
4012             fnd_message.set_token ('MASTER_LEASE_ID',get_miss_num_decode(p_lease_rec.parent_lease_id));
4013             fnd_message.set_token ('MASTER_LEASE_NAME', get_miss_char_decode(p_lease_rec.parent_lease_name));
4014             fnd_msg_pub.ADD;
4015             RAISE fnd_api.g_exc_error;
4016          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4017          THEN
4018             l_error_flag:='Y';
4019             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4020             fnd_message.set_token ('COLUMN', SUBSTR(l_param_master_lease,3));
4021             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4022             fnd_msg_pub.ADD;
4023             RAISE fnd_api.g_exc_unexpected_error;
4024          END IF;
4025       ELSE
4026          p_lease_rec.parent_lease_name        := NULL;
4027          p_lease_rec.parent_lease_id          := NULL;
4028       END IF;
4029 
4030       --IF  p_lease_rec.parent_lease_id = pn_lease_utils.g_pn_miss_num
4031       --THEN
4032       --   p_lease_rec.parent_lease_id := NULL;
4033 
4034       --END IF;
4035 
4036 
4037       -- Validate Customer Id
4038       IF p_lease_rec.lease_class_code <> 'DIRECT'
4039       THEN
4040        IF (  ( p_lease_rec.customer_name IS NOT NULL AND p_lease_rec.customer_name <> pn_lease_utils.g_pn_miss_char)
4041            OR(p_lease_rec.customer_id IS NOT NULL AND p_lease_rec.customer_id <> pn_lease_utils.g_pn_miss_num)
4042           ) THEN
4043          pn_lease_utils.get_customer_id (p_parameter_name              => l_param_lease_customer
4044                                        , p_operation                   => p_operation
4045                                        , p_customer_name               => p_lease_rec.customer_name
4046                                        , x_customer_id                 => p_lease_rec.customer_id
4047                                        , x_return_status               => x_return_status
4048                                        );
4049 
4050          ----------------dbms_output.put_line (   'GET_CUSTOMER_ID: '|| p_lease_rec.customer_id);--Rupak
4051           pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Customer ID:'||p_lease_rec.customer_id,3);
4052          IF (x_return_status = fnd_api.g_ret_sts_error)
4053          THEN
4054             --l_error_flag:='Y';
4055             ----------------------dbms_output.put_line ('PVT:1');--Rupak
4056             fnd_message.set_name ('PN', 'PN_INVALID_CUSTOMER');
4057             fnd_message.set_token ('CUSTOMER_NAME', get_miss_char_decode(p_lease_rec.customer_name));
4058             fnd_message.set_token ('CUSTOMER_ID', get_miss_num_decode(p_lease_rec.customer_id));
4059             fnd_msg_pub.ADD;
4060             RAISE fnd_api.g_exc_error;
4061          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4062          THEN
4063             --l_error_flag:='Y';
4064             /*--------------------dbms_output.put_line ('PVT:2');--Rupak*/
4065             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4066             fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_customer,3));
4067             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4068             fnd_msg_pub.ADD;
4069             RAISE fnd_api.g_exc_unexpected_error;
4070          END IF;
4071        END IF;
4072       ELSE
4073          p_lease_rec.customer_name            := NULL;
4074          p_lease_rec.customer_id              := NULL;
4075       END IF;
4076 
4077 
4078       --IF  p_lease_rec.customer_id = pn_lease_utils.g_pn_miss_num
4079       --THEN
4080       --   p_lease_rec.customer_id := NULL;
4081 
4082       --END IF;
4083 
4084 
4085       -- Validate Abstracted By
4086       pn_lease_utils.get_user_id (p_parameter_name              => l_param_abstracted_by
4087                                 , p_operation                   => p_operation
4088                                 , p_user_name                   => p_lease_rec.abstracted_by_user
4089                                 , x_user_id                     => p_lease_rec.abstracted_by_user_id
4090                                 , x_return_status               => x_return_status);
4091 
4092       ----------------------dbms_output.put_line (   'ABSTRACTED BY: ' || p_lease_rec.abstracted_by_user_id);--Rupak
4093       pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Abstracted By:'||p_lease_rec.abstracted_by_user_id,3);
4094       IF (x_return_status = fnd_api.g_ret_sts_error)
4095       THEN
4096          l_error_flag:='Y';
4097          fnd_message.set_name ('PN', 'PN_INVALID_USER');
4098          fnd_message.set_token ('USER_NAME',get_miss_char_decode(p_lease_rec.abstracted_by_user));
4099          fnd_message.set_token ('USER_ID', get_miss_num_decode(p_lease_rec.abstracted_by_user_id));
4100          fnd_msg_pub.ADD;
4101          RAISE fnd_api.g_exc_error;
4102       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4103       THEN
4104             l_error_flag:='Y';
4105             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4106             fnd_message.set_token ('COLUMN', SUBSTR(l_param_abstracted_by,3));
4107             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4108             fnd_msg_pub.ADD;
4109             RAISE fnd_api.g_exc_unexpected_error;
4110       END IF;
4111 
4112       --IF  p_lease_rec.abstracted_by_user_id = PN_LEASE_UTILS.G_PN_MISS_NUM
4113       --THEN
4114       --   p_lease_rec.abstracted_by_user_id := NULL;
4115 
4116       --END IF;
4117 
4118       -- Validate approval status
4119       pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_status
4120                                     , p_operation                   => p_operation
4121                                     , p_lookup_meaning              => p_lease_rec.status
4122                                     , p_lookup_type                 => l_status_lookup_type
4123                                     , x_lookup_type_code            => p_lease_rec.status_code
4124                                     , x_return_status               => x_return_status);
4125 
4126       ----------------------dbms_output.put_line (   'APPROVAL STATUS: '|| p_lease_rec.status_code);--Rupak
4127        pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Approval Status Code:'||p_lease_rec.status_code,3);
4128       IF (x_return_status = fnd_api.g_ret_sts_error)
4129       THEN
4130          l_error_flag:='Y';
4131          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
4132          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_status_lookup_type));
4133          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.status));
4134          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.status_code));
4135          fnd_msg_pub.ADD;
4136          RAISE fnd_api.g_exc_error;
4137       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4138       THEN
4139          l_error_flag:='Y';
4140          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4141          fnd_message.set_token ('COLUMN', SUBSTR(l_param_status,3));
4142          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4143          fnd_msg_pub.ADD;
4144          RAISE fnd_api.g_exc_unexpected_error;
4145       END IF;
4146 
4147       -- Validate Lease status
4148       pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_lease_status
4149                                     , p_operation                   => p_operation
4150                                     , p_lookup_meaning              => p_lease_rec.lease_status
4151                                     , p_lookup_type                 => l_lease_status_lookup_type
4152                                     , x_lookup_type_code            => p_lease_rec.lease_status_code
4153                                     , x_return_status               => x_return_status);
4154 
4155       ----------------------dbms_output.put_line (   'LEASE STATUS: '|| p_lease_rec.lease_status_code);--Rupak
4156        pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Lease Status Code:'||p_lease_rec.lease_status_code,3);
4157       IF (x_return_status = fnd_api.g_ret_sts_error)
4158       THEN
4159          l_error_flag:='Y';
4160          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
4161          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_status_lookup_type));
4162          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.status));
4163          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.status_code));
4164          fnd_msg_pub.ADD;
4165          RAISE fnd_api.g_exc_error;
4166       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4167       THEN
4168          l_error_flag:='Y';
4169          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4170          fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_status,3));
4171          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4172          fnd_msg_pub.ADD;
4173          RAISE fnd_api.g_exc_unexpected_error;
4174       END IF;
4175 
4176       -- Validate Lease Execution, Commencement and Termination dates
4177       pn_lease_utils.crossval_leasedates (p_parameter_name              => l_param_lease_dates
4178                                         , p_operation                   => p_operation
4179                                         , p_lease_exec_date             => p_lease_rec.lease_execution_date
4180                                         , p_lease_comm_date             => p_lease_rec.lease_commencement_date
4181                                         , p_lease_term_date             => p_lease_rec.lease_termination_date
4182                                         , x_return_status               => x_return_status);
4183 
4184 
4185       ----------------------dbms_output.put_line('CROSSVAL_LEASEDATES x_return_status: '|| x_return_status);--Rupak
4186       pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Cross Val Lease Dates Status:'||x_return_status,3);
4187       IF (x_return_status = fnd_api.g_ret_sts_error)
4188       THEN
4189          l_error_flag:='Y';
4190          fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
4191          fnd_message.set_token ('TERMINATION_DATE', p_lease_rec.lease_termination_date);
4192          fnd_message.set_token ('COMMENCEMENT_DATE', p_lease_rec.lease_commencement_date);
4193          fnd_msg_pub.ADD;
4194          RAISE fnd_api.g_exc_error;
4195       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4196       THEN
4197          l_error_flag:='Y';
4198          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4199          fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_dates,3));
4200          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4201          fnd_msg_pub.ADD;
4202          RAISE fnd_api.g_exc_unexpected_error;
4203       END IF;
4204 
4205       -- Validate Location_id
4206       IF (   (    p_lease_rec.location_id IS NOT NULL
4207              AND p_lease_rec.location_id <> pn_lease_utils.g_pn_miss_num)
4208           OR (    p_lease_rec.location_code IS NOT NULL
4209               AND p_lease_rec.location_code <> pn_lease_utils.g_pn_miss_char))
4210       THEN
4211          pn_lease_utils.get_location_id (p_parameter_name              => l_param_lease_location
4212                                        , p_location_code               => p_lease_rec.location_code
4213                                        , p_operation                   => p_operation
4214                                        , p_org_id                      => p_lease_rec.org_id
4215                                        , p_lease_class_code            => p_lease_rec.lease_class_code
4216                                        , p_parent_lease_id             => p_lease_rec.parent_lease_id
4217                                        , p_lease_comm_date             => p_lease_rec.lease_commencement_date
4218                                        , p_lease_term_date             => p_lease_rec.lease_termination_date
4219                                        , x_return_status               => x_return_status
4220                                        , x_location_id                 => p_lease_rec.location_id);
4221 
4222 
4223          ----------------------dbms_output.put_line('get_location_id x_return_status: '|| x_return_status);--Rupak
4224            pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Location ID Return Status:'||x_return_status,3);
4225          IF (x_return_status = fnd_api.g_ret_sts_error)
4226          THEN
4227             l_error_flag:='Y';
4228             fnd_message.set_name ('PN', 'PN_INVALID_LOCATION');
4229             fnd_message.set_token ('LOC_ID', get_miss_num_decode(p_lease_rec.location_id));
4230             fnd_message.set_token ('LOC_CODE', get_miss_char_decode(p_lease_rec.location_code));
4231             fnd_msg_pub.ADD;
4232             RAISE fnd_api.g_exc_error;
4233 
4234          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4235          THEN
4236             l_error_flag:='Y';
4237             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4238             fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_location,3));
4239             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4240             fnd_msg_pub.ADD;
4241             RAISE fnd_api.g_exc_unexpected_error;
4242          END IF;
4243       END IF;
4244 
4245      -- IF  p_lease_rec.location_id = pn_lease_utils.g_pn_miss_num
4246      -- THEN
4247      --    p_lease_rec.location_id := NULL;
4248      -- END IF;
4249 
4250       -- Validate User Responsible
4251       pn_lease_utils.get_user_id (p_parameter_name              => l_param_reponsible_user
4252                                 , p_operation                   => p_operation
4253                                 , p_user_name                   => p_lease_rec.responsible_user
4254                                 , x_user_id                     => p_lease_rec.responsible_user_id
4255                                 , x_return_status               => x_return_status);
4256 
4257      ----------------------dbms_output.put_line (   'USER RESPONSIBLE: '|| p_lease_rec.responsible_user);--Rupak
4258        pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:User Responsible:'||p_lease_rec.responsible_user,3);
4259 
4260       IF (x_return_status = fnd_api.g_ret_sts_error)
4261       THEN
4262          l_error_flag:='Y';
4263          fnd_message.set_name ('PN', 'PN_INVALID_USER');
4264          fnd_message.set_token ('USER_NAME',get_miss_char_decode(p_lease_rec.responsible_user));
4265          fnd_message.set_token ('USER_ID', get_miss_num_decode(p_lease_rec.responsible_user_id));
4266          fnd_msg_pub.ADD;
4267          RAISE fnd_api.g_exc_error;
4268       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4269       THEN
4270             l_error_flag:='Y';
4271             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4272             fnd_message.set_token ('COLUMN', SUBSTR(l_param_reponsible_user,3));
4273             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4274             fnd_msg_pub.ADD;
4275             RAISE fnd_api.g_exc_unexpected_error;
4276       END IF;
4277 
4278 
4279       --IF  p_lease_rec.responsible_user_id = pn_lease_utils.g_pn_miss_num
4280       --THEN
4281       --   p_lease_rec.responsible_user_id := NULL;
4282 
4283       --END IF;
4284 
4285 
4286 
4287       -- Validate Proration Rule
4288       IF ( ( p_lease_rec.pymt_term_pro_rule IS NOT NULL AND p_lease_rec.pymt_term_pro_rule <> pn_lease_utils.g_pn_miss_char)
4289         OR(p_lease_rec.pymt_term_pro_rule_id IS NOT NULL AND p_lease_rec.pymt_term_pro_rule_id <> pn_lease_utils.g_pn_miss_char)
4290          ) THEN
4291       pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_propration_rule
4292                                     , p_operation                   => p_operation
4293                                     , p_lookup_meaning              => p_lease_rec.pymt_term_pro_rule
4294                                     , p_lookup_type                 => l_proration_rule_lookup_type
4295                                     , x_lookup_type_code            => p_lease_rec.pymt_term_pro_rule_id
4296                                     , x_return_status               => x_return_status
4297                                     );
4298 
4299       ----------------------dbms_output.put_line (   '_PRORATION_RULE: ' || p_lease_rec.pymt_term_pro_rule_id||x_return_status);--Rupak
4300         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:PRORATION_RULE:'||p_lease_rec.pymt_term_pro_rule_id,3);
4301       IF (x_return_status = fnd_api.g_ret_sts_error)
4302       THEN
4303          l_error_flag:='Y';
4304          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
4305          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_proration_rule_lookup_type));
4306          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.pymt_term_pro_rule));
4307          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.pymt_term_pro_rule_id));
4308          fnd_msg_pub.ADD;
4309          RAISE fnd_api.g_exc_error;
4310       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4311       THEN
4312          l_error_flag:='Y';
4313          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4314          fnd_message.set_token ('COLUMN', SUBSTR(l_param_reponsible_user,3));
4315          fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4316          fnd_msg_pub.ADD;
4317          RAISE fnd_api.g_exc_unexpected_error;
4318       END IF;
4319      END IF;
4320 
4321      ----------------------dbms_output.put_line (   'After proration rule');--Rupak
4322       -- Validate Term Template id
4323       IF    p_lease_rec.lease_class_code = 'DIRECT'
4324          OR p_lease_rec.lease_class = 'Expense'
4325       THEN
4326          l_term_template_type                 := 'PAYMENT';
4327           ----------------------dbms_output.put_line (   'Test Payment');--Rupak
4328       ELSE
4329          --IF p_lease_rec.lease_class_code='THIRD_PARTY' OR p_lease_rec.lease_class='Revenue'
4330          --THEN
4331          --  l_term_template_type :='BILLING';
4332          --ELSE
4333          --   NULL;
4334          --END IF;
4335          l_term_template_type                 := 'BILLING';
4336           ----------------------dbms_output.put_line (   'Test BILLING');--Rupak
4337           pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Billing Mode:',3);
4338       END IF;
4339 
4340       IF (   (    p_lease_rec.term_template_id IS NOT NULL
4341               AND p_lease_rec.term_template_id <> pn_lease_utils.g_pn_miss_num)
4342           OR (    p_lease_rec.term_template_name IS NOT NULL
4343               AND p_lease_rec.term_template_name <> pn_lease_utils.g_pn_miss_char))
4344       THEN
4345          pn_lease_utils.get_term_template_id (p_parameter_name              => l_param_lease_template
4346                                             , p_termtemp_name               => p_lease_rec.term_template_name
4347                                             , p_operation                   => p_operation
4348                                             , p_termtemp_type               => l_term_template_type
4349                                             , p_org_id                      => l_org_id
4350                                             , x_return_status               => x_return_status
4351                                             , x_termtemp_id                 => p_lease_rec.term_template_id);
4352 
4353          ----------------------dbms_output.put_line ('GET_TERM_TEMPLATE_ID: '||p_lease_rec.term_template_id);--Rupak
4354          pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Deriving Template ID:'||p_lease_rec.term_template_id,3);
4355          ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
4356          IF (x_return_status = fnd_api.g_ret_sts_error)
4357          THEN
4358             --l_error_flag:='Y';
4359             fnd_message.set_name ('PN', 'PN_INVALID_TERM_TEMPLATE');
4360             fnd_message.set_token ('TERM_TEMPLATE_ID', get_miss_num_decode(p_lease_rec.term_template_id));
4361             fnd_message.set_token ('TERM_TEMPLATE',  get_miss_char_decode(p_lease_rec.term_template_name));
4362             fnd_msg_pub.ADD;
4363             RAISE fnd_api.g_exc_error;
4364          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4365          THEN
4366             --l_error_flag:='Y';
4367             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4368             fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_template,3));
4369             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4370             fnd_msg_pub.ADD;
4371             RAISE fnd_api.g_exc_unexpected_error;
4372          END IF;
4373 
4374          IF x_return_status = fnd_api.g_ret_sts_success
4375          THEN
4376             IF pn_r12_util_pkg.is_r12
4377             THEN
4378 
4379                l_tcc_status := pn_r12_util_pkg.check_tax_upgrade (p_lease_rec.term_template_id);
4380                IF l_tcc_status = 'PN_NO_TCC_FOUND' THEN
4381                   fnd_message.set_name('PN','PN_NO_TCC_FOUND');
4382                   fnd_message.set_token ('API_NAME', l_api_name_full);
4383                   fnd_message.set_token ('R12_FLAG', p_lease_rec.term_template_id);
4384                   fnd_msg_pub.ADD;
4385 
4386                   l_error_flag:='Y';
4387                   RAISE fnd_api.g_exc_error;
4388                ELSIF l_tcc_status = 'PN_UPG_TCC' THEN
4389                   fnd_message.set_name('PN','PN_UPG_TCC_FOUND');
4390                   fnd_message.set_token ('API_NAME', l_api_name_full);
4391                   fnd_message.set_token ('R12_FLAG', p_lease_rec.term_template_id);
4392                   fnd_msg_pub.ADD;
4393             END IF;
4394 
4395             END IF;
4396 
4397          END IF;
4398 
4399       END IF;
4400 
4401      ----------------------dbms_output.put_line ('Test 1');--Rupak
4402 
4403 /******************************************************************************************
4404 ************************************************************************************************/
4405 
4406       --IF  p_lease_rec.term_template_id = pn_lease_utils.g_pn_miss_num
4407       --THEN
4408       --   p_lease_rec.term_template_id := NULL;
4409       --END IF;
4410 
4411       -- Validate GET_INVOICE_GROUP_RULE
4412       IF    p_lease_rec.lease_class_code = 'DIRECT'
4413       THEN
4414 
4415          IF (   (    p_lease_rec.grouping_rule_id IS NOT NULL
4416                  AND p_lease_rec.grouping_rule_id <> pn_lease_utils.g_pn_miss_num)
4417              OR (    p_lease_rec.grouping_rule_name IS NOT NULL
4418                  AND p_lease_rec.grouping_rule_name <> pn_lease_utils.g_pn_miss_char))
4419          THEN
4420             ----------------------dbms_output.put_line ('Before calling PN_LEASE_UTILS.GET_INVOICE_GROUPING_RULE');--Rupak
4421             pn_lease_utils.get_invoice_grouping_rule(
4422                                       p_parameter_name     =>   l_param_lease_grouping_rule
4423                                     , p_grouping_rule      =>   p_lease_rec.grouping_rule_name
4424                                     , p_operation          =>   p_operation
4425                                     , x_return_status      =>   x_return_status
4426                                     , x_grouping_rule_id   =>   p_lease_rec.grouping_rule_id
4427                                     );
4428             ----------------------dbms_output.put_line ('GET_GROUPING_RULE: '||p_lease_rec.grouping_rule_id);--Rupak
4429               pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Grouping Rule ID:'||p_lease_rec.grouping_rule_id,3);
4430 
4431             IF (x_return_status = fnd_api.g_ret_sts_error)
4432             THEN
4433                --l_error_flag:='Y';
4434                fnd_message.set_name ('PN', 'PN_INVOICE_GROUPING_RULE');
4435                fnd_message.set_token ('GROUPING_ID', get_miss_num_decode(p_lease_rec.grouping_rule_id));
4436                fnd_message.set_token ('GROUPING_RULE', get_miss_char_decode(p_lease_rec.grouping_rule_name));
4437                fnd_msg_pub.ADD;
4438                RAISE fnd_api.g_exc_error;
4439            ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4440            THEN
4441                --l_error_flag:='Y';
4442                fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4443                fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_grouping_rule,3));
4444                fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4445                fnd_msg_pub.ADD;
4446                RAISE fnd_api.g_exc_unexpected_error;
4447            END IF;
4448          END IF;
4449       END IF;
4450 
4451 
4452       --IF  p_lease_rec.grouping_rule_id = pn_lease_utils.g_pn_miss_num
4453       --THEN
4454       --   p_lease_rec.grouping_rule_id:= NULL;
4455       --END IF;
4456 
4457 
4458       -- Validate GET_CAL_START_DATE
4459       IF (  (    p_lease_rec.cal_start IS NOT NULL
4460              AND p_lease_rec.cal_start <> pn_lease_utils.g_pn_miss_char
4461              )
4462          )
4463       THEN
4464          ----------------------dbms_output.put_line ('Before calling PN_LEASE_UTILS.GET_CAL_START_DATE  ');
4465 
4466          pn_lease_utils.get_cal_start_date ( p_parameter_name   =>   l_param_lease_cal_start
4467                                            , x_cal_start        =>   p_lease_rec.cal_start
4468                                            , p_operation        =>   p_operation
4469                                            , x_return_status    =>   x_return_status
4470                                            );
4471          ----------------------dbms_output.put_line ('p_lease_rec.cal_start: '||p_lease_rec.cal_start);--Rupak
4472            pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Cal Start Date:'||p_lease_rec.cal_start,3);
4473          ----------------------dbms_output.put_line('PN_LEASE_UTILS.GET_CAL_START_DATE x_return_status: '|| x_return_status);
4474 
4475          IF (x_return_status = fnd_api.g_ret_sts_error)
4476          THEN
4477                --l_error_flag:='Y';
4478                fnd_message.set_name ('PN', 'PN_CAL_INVALID_DATE');
4479                fnd_msg_pub.ADD;
4480                RAISE fnd_api.g_exc_error;
4481          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4482          THEN
4483                --l_error_flag:='Y';
4484                fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
4485                fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_cal_start,3));
4486                fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
4487                fnd_msg_pub.ADD;
4488                RAISE fnd_api.g_exc_unexpected_error;
4489          END IF;
4490       END IF;
4491 
4492 
4493       --IF  p_lease_rec.cal_start = pn_lease_utils.g_pn_miss_char
4494       --THEN
4495       --   p_lease_rec.cal_start := NULL;
4496       --
4497       --END IF;
4498 
4499 
4500       -- Validate Account Id, Segment and concatenated segments
4501       IF (   (    p_lease_exp_rev_accounts_rec.account_id IS NOT NULL
4502               AND p_lease_exp_rev_accounts_rec.account_id <> pn_lease_utils.g_pn_miss_num)
4503           OR (    p_lease_exp_rev_accounts_rec.account_conc_segs IS NOT NULL
4504               AND p_lease_exp_rev_accounts_rec.account_conc_segs <> pn_lease_utils.g_pn_miss_char)
4505           OR (   (    (p_lease_exp_rev_accounts_rec.account_segment1 IS NOT NULL)
4506                   AND (p_lease_exp_rev_accounts_rec.account_segment1 <>
4507                                                                        pn_lease_utils.g_pn_miss_char))
4508               OR (    (p_lease_exp_rev_accounts_rec.account_segment2 IS NOT NULL)
4509                   AND (p_lease_exp_rev_accounts_rec.account_segment2 <>
4510                                                                        pn_lease_utils.g_pn_miss_char))
4511               OR (    (p_lease_exp_rev_accounts_rec.account_segment3 IS NOT NULL)
4512                   AND (p_lease_exp_rev_accounts_rec.account_segment3 <>
4513                                                                        pn_lease_utils.g_pn_miss_char))
4514               OR (    (p_lease_exp_rev_accounts_rec.account_segment4 IS NOT NULL)
4515                   AND (p_lease_exp_rev_accounts_rec.account_segment4 <>
4516                                                                        pn_lease_utils.g_pn_miss_char))
4517               OR (    (p_lease_exp_rev_accounts_rec.account_segment5 IS NOT NULL)
4518                   AND (p_lease_exp_rev_accounts_rec.account_segment5 <>
4519                                                                        pn_lease_utils.g_pn_miss_char))
4520               OR (    (p_lease_exp_rev_accounts_rec.account_segment6 IS NOT NULL)
4521                   AND (p_lease_exp_rev_accounts_rec.account_segment6 <>
4522                                                                        pn_lease_utils.g_pn_miss_char))
4523               OR (    (p_lease_exp_rev_accounts_rec.account_segment7 IS NOT NULL)
4524                   AND (p_lease_exp_rev_accounts_rec.account_segment7 <>
4525                                                                        pn_lease_utils.g_pn_miss_char))
4526               OR (    (p_lease_exp_rev_accounts_rec.account_segment8 IS NOT NULL)
4527                   AND (p_lease_exp_rev_accounts_rec.account_segment8 <>
4528                                                                        pn_lease_utils.g_pn_miss_char))
4529               OR (    (p_lease_exp_rev_accounts_rec.account_segment9 IS NOT NULL)
4530                   AND (p_lease_exp_rev_accounts_rec.account_segment9 <>
4531                                                                        pn_lease_utils.g_pn_miss_char))
4532               OR (    (p_lease_exp_rev_accounts_rec.account_segment10 IS NOT NULL)
4533                   AND (p_lease_exp_rev_accounts_rec.account_segment10 <>
4534                                                                        pn_lease_utils.g_pn_miss_char))
4535               OR (    (p_lease_exp_rev_accounts_rec.account_segment11 IS NOT NULL)
4536                   AND (p_lease_exp_rev_accounts_rec.account_segment11 <>
4537                                                                        pn_lease_utils.g_pn_miss_char))
4538               OR (    (p_lease_exp_rev_accounts_rec.account_segment12 IS NOT NULL)
4539                   AND (p_lease_exp_rev_accounts_rec.account_segment12 <>
4540                                                                        pn_lease_utils.g_pn_miss_char))
4541               OR (    (p_lease_exp_rev_accounts_rec.account_segment13 IS NOT NULL)
4542                   AND (p_lease_exp_rev_accounts_rec.account_segment13 <>
4543                                                                        pn_lease_utils.g_pn_miss_char))
4544               OR (    (p_lease_exp_rev_accounts_rec.account_segment14 IS NOT NULL)
4545                   AND (p_lease_exp_rev_accounts_rec.account_segment14 <>
4546                                                                        pn_lease_utils.g_pn_miss_char))
4547               OR (    (p_lease_exp_rev_accounts_rec.account_segment15 IS NOT NULL)
4548                   AND (p_lease_exp_rev_accounts_rec.account_segment15 <>
4549                                                                        pn_lease_utils.g_pn_miss_char))
4550               OR (    (p_lease_exp_rev_accounts_rec.account_segment16 IS NOT NULL)
4551                   AND (p_lease_exp_rev_accounts_rec.account_segment16 <>
4552                                                                        pn_lease_utils.g_pn_miss_char))
4553               OR (    (p_lease_exp_rev_accounts_rec.account_segment17 IS NOT NULL)
4554                   AND (p_lease_exp_rev_accounts_rec.account_segment17 <>
4555                                                                        pn_lease_utils.g_pn_miss_char))
4556               OR (    (p_lease_exp_rev_accounts_rec.account_segment18 IS NOT NULL)
4557                   AND (p_lease_exp_rev_accounts_rec.account_segment18 <>
4558                                                                        pn_lease_utils.g_pn_miss_char))
4559               OR (    (p_lease_exp_rev_accounts_rec.account_segment19 IS NOT NULL)
4560                   AND (p_lease_exp_rev_accounts_rec.account_segment19 <>
4561                                                                        pn_lease_utils.g_pn_miss_char))
4562               OR (    (p_lease_exp_rev_accounts_rec.account_segment20 IS NOT NULL)
4563                   AND (p_lease_exp_rev_accounts_rec.account_segment20 <>
4564                                                                        pn_lease_utils.g_pn_miss_char))))
4565       THEN
4566          ----------------------dbms_output.put_line (   'Before calling GET_EXP_REC_ACCOUNT_ID: '  );
4567          pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:To Get the Account ID for Expense-Revenue',3);
4568          pn_lease_utils.get_account_id
4569                             (p_parameter_name              => l_param_exp_rev_acct
4570                            , p_operation                   => p_operation
4571                            , p_account_id                  => p_lease_exp_rev_accounts_rec.account_id
4572                            , p_account_conc_segs           => p_lease_exp_rev_accounts_rec.account_conc_segs
4573                            , p_account_segment1            => p_lease_exp_rev_accounts_rec.account_segment1
4574                            , p_account_segment2            => p_lease_exp_rev_accounts_rec.account_segment2
4575                            , p_account_segment3            => p_lease_exp_rev_accounts_rec.account_segment3
4576                            , p_account_segment4            => p_lease_exp_rev_accounts_rec.account_segment4
4577                            , p_account_segment5            => p_lease_exp_rev_accounts_rec.account_segment5
4578                            , p_account_segment6            => p_lease_exp_rev_accounts_rec.account_segment6
4579                            , p_account_segment7            => p_lease_exp_rev_accounts_rec.account_segment7
4580                            , p_account_segment8            => p_lease_exp_rev_accounts_rec.account_segment8
4581                            , p_account_segment9            => p_lease_exp_rev_accounts_rec.account_segment9
4582                            , p_account_segment10           => p_lease_exp_rev_accounts_rec.account_segment10
4583                            , p_account_segment11           => p_lease_exp_rev_accounts_rec.account_segment11
4584                            , p_account_segment12           => p_lease_exp_rev_accounts_rec.account_segment12
4585                            , p_account_segment13           => p_lease_exp_rev_accounts_rec.account_segment13
4586                            , p_account_segment14           => p_lease_exp_rev_accounts_rec.account_segment14
4587                            , p_account_segment15           => p_lease_exp_rev_accounts_rec.account_segment15
4588                            , p_account_segment16           => p_lease_exp_rev_accounts_rec.account_segment16
4589                            , p_account_segment17           => p_lease_exp_rev_accounts_rec.account_segment17
4590                            , p_account_segment18           => p_lease_exp_rev_accounts_rec.account_segment18
4591                            , p_account_segment19           => p_lease_exp_rev_accounts_rec.account_segment19
4592                            , p_account_segment20           => p_lease_exp_rev_accounts_rec.account_segment20
4593                            , x_return_status               => x_return_status
4594                            );
4595          ----------------------dbms_output.put_line (   'GET_EXP_REC_ACCOUNT_ID: '|| p_lease_exp_rev_accounts_rec.account_id);
4596            pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Expense-Revenue Account ID'||p_lease_exp_rev_accounts_rec.account_id,3);
4597            ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
4598          IF (x_return_status = fnd_api.g_ret_sts_error)
4599          THEN
4600             l_error_flag:='Y';
4601             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4602             fnd_message.set_token ('ACCOUNT_ID', p_lease_exp_rev_accounts_rec.account_id);
4603             fnd_msg_pub.ADD;
4604             RAISE fnd_api.g_exc_error;
4605          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4606          THEN
4607             l_error_flag:='Y';
4608             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4609             fnd_message.set_token ('ACCOUNT_ID', p_lease_exp_rev_accounts_rec.account_id);
4610             fnd_msg_pub.ADD;
4611             RAISE fnd_api.g_exc_unexpected_error;
4612          END IF;
4613       END IF;
4614 
4615      -- IF  p_lease_exp_rev_accounts_rec.account_id = pn_lease_utils.g_pn_miss_num
4616      -- THEN
4617      --    p_lease_exp_rev_accounts_rec.account_id:= NULL;
4618      -- END IF;
4619 
4620 
4621       IF (   (    p_lease_accrual_account_rec.account_id IS NOT NULL
4622               AND p_lease_accrual_account_rec.account_id <> pn_lease_utils.g_pn_miss_num)
4623           OR (    p_lease_accrual_account_rec.account_conc_segs IS NOT NULL
4624               AND p_lease_accrual_account_rec.account_conc_segs <> pn_lease_utils.g_pn_miss_char)
4625           OR (   (    (p_lease_accrual_account_rec.account_segment1 IS NOT NULL)
4626                   AND (p_lease_accrual_account_rec.account_segment1 <> pn_lease_utils.g_pn_miss_char))
4627               OR (    (p_lease_accrual_account_rec.account_segment2 IS NOT NULL)
4628                   AND (p_lease_accrual_account_rec.account_segment2 <> pn_lease_utils.g_pn_miss_char))
4629               OR (    (p_lease_accrual_account_rec.account_segment3 IS NOT NULL)
4630                   AND (p_lease_accrual_account_rec.account_segment3 <> pn_lease_utils.g_pn_miss_char))
4631               OR (    (p_lease_accrual_account_rec.account_segment4 IS NOT NULL)
4632                   AND (p_lease_accrual_account_rec.account_segment4 <> pn_lease_utils.g_pn_miss_char))
4633               OR (    (p_lease_accrual_account_rec.account_segment5 IS NOT NULL)
4634                   AND (p_lease_accrual_account_rec.account_segment5 <> pn_lease_utils.g_pn_miss_char))
4635               OR (    (p_lease_accrual_account_rec.account_segment6 IS NOT NULL)
4636                   AND (p_lease_accrual_account_rec.account_segment6 <> pn_lease_utils.g_pn_miss_char))
4637               OR (    (p_lease_accrual_account_rec.account_segment7 IS NOT NULL)
4638                   AND (p_lease_accrual_account_rec.account_segment7 <> pn_lease_utils.g_pn_miss_char))
4639               OR (    (p_lease_accrual_account_rec.account_segment8 IS NOT NULL)
4640                   AND (p_lease_accrual_account_rec.account_segment8 <> pn_lease_utils.g_pn_miss_char))
4641               OR (    (p_lease_accrual_account_rec.account_segment9 IS NOT NULL)
4642                   AND (p_lease_accrual_account_rec.account_segment9 <> pn_lease_utils.g_pn_miss_char))
4643               OR (    (p_lease_accrual_account_rec.account_segment10 IS NOT NULL)
4644                   AND (p_lease_accrual_account_rec.account_segment10 <>
4645                                                                        pn_lease_utils.g_pn_miss_char))
4646               OR (    (p_lease_accrual_account_rec.account_segment11 IS NOT NULL)
4647                   AND (p_lease_accrual_account_rec.account_segment11 <>
4648                                                                        pn_lease_utils.g_pn_miss_char))
4649               OR (    (p_lease_accrual_account_rec.account_segment12 IS NOT NULL)
4650                   AND (p_lease_accrual_account_rec.account_segment12 <>
4651                                                                        pn_lease_utils.g_pn_miss_char))
4652               OR (    (p_lease_accrual_account_rec.account_segment13 IS NOT NULL)
4653                   AND (p_lease_accrual_account_rec.account_segment13 <>
4654                                                                        pn_lease_utils.g_pn_miss_char))
4655               OR (    (p_lease_accrual_account_rec.account_segment14 IS NOT NULL)
4656                   AND (p_lease_accrual_account_rec.account_segment14 <>
4657                                                                        pn_lease_utils.g_pn_miss_char))
4658               OR (    (p_lease_accrual_account_rec.account_segment15 IS NOT NULL)
4659                   AND (p_lease_accrual_account_rec.account_segment15 <>
4660                                                                        pn_lease_utils.g_pn_miss_char))
4661               OR (    (p_lease_accrual_account_rec.account_segment16 IS NOT NULL)
4662                   AND (p_lease_accrual_account_rec.account_segment16 <>
4663                                                                        pn_lease_utils.g_pn_miss_char))
4664               OR (    (p_lease_accrual_account_rec.account_segment17 IS NOT NULL)
4665                   AND (p_lease_accrual_account_rec.account_segment17 <>
4666                                                                        pn_lease_utils.g_pn_miss_char))
4667               OR (    (p_lease_accrual_account_rec.account_segment18 IS NOT NULL)
4668                   AND (p_lease_accrual_account_rec.account_segment18 <>
4669                                                                        pn_lease_utils.g_pn_miss_char))
4670               OR (    (p_lease_accrual_account_rec.account_segment19 IS NOT NULL)
4671                   AND (p_lease_accrual_account_rec.account_segment19 <>
4672                                                                        pn_lease_utils.g_pn_miss_char))
4673               OR (    (p_lease_accrual_account_rec.account_segment20 IS NOT NULL)
4674                   AND (p_lease_accrual_account_rec.account_segment20 <>
4675                                                                        pn_lease_utils.g_pn_miss_char))))
4676       THEN
4677         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:To Get the Account ID for Accrual',3);
4678          pn_lease_utils.get_account_id
4679                              (p_parameter_name              => l_param_accrual_acct
4680                             , p_operation                   => p_operation
4681                             , p_account_id                  => p_lease_accrual_account_rec.account_id
4682                             , p_account_conc_segs           => p_lease_accrual_account_rec.account_conc_segs
4683                             , p_account_segment1            => p_lease_accrual_account_rec.account_segment1
4684                             , p_account_segment2            => p_lease_accrual_account_rec.account_segment2
4685                             , p_account_segment3            => p_lease_accrual_account_rec.account_segment3
4686                             , p_account_segment4            => p_lease_accrual_account_rec.account_segment4
4687                             , p_account_segment5            => p_lease_accrual_account_rec.account_segment5
4688                             , p_account_segment6            => p_lease_accrual_account_rec.account_segment6
4689                             , p_account_segment7            => p_lease_accrual_account_rec.account_segment7
4690                             , p_account_segment8            => p_lease_accrual_account_rec.account_segment8
4691                             , p_account_segment9            => p_lease_accrual_account_rec.account_segment9
4692                             , p_account_segment10           => p_lease_accrual_account_rec.account_segment10
4693                             , p_account_segment11           => p_lease_accrual_account_rec.account_segment11
4694                             , p_account_segment12           => p_lease_accrual_account_rec.account_segment12
4695                             , p_account_segment13           => p_lease_accrual_account_rec.account_segment13
4696                             , p_account_segment14           => p_lease_accrual_account_rec.account_segment14
4697                             , p_account_segment15           => p_lease_accrual_account_rec.account_segment15
4698                             , p_account_segment16           => p_lease_accrual_account_rec.account_segment16
4699                             , p_account_segment17           => p_lease_accrual_account_rec.account_segment17
4700                             , p_account_segment18           => p_lease_accrual_account_rec.account_segment18
4701                             , p_account_segment19           => p_lease_accrual_account_rec.account_segment19
4702                             , p_account_segment20           => p_lease_accrual_account_rec.account_segment20
4703                             , x_return_status               => x_return_status);
4704 
4705          ----------------------dbms_output.put_line (   'GET_ACCRLC_ACCOUNT_ID: '|| p_lease_accrual_account_rec.account_id);
4706             pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Accrual Account ID'||p_lease_accrual_account_rec.account_id,3);
4707 
4708          IF (x_return_status = fnd_api.g_ret_sts_error)
4709          THEN
4710             l_error_flag:='Y';
4711             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4712             fnd_message.set_token ('ACCOUNT_ID', p_lease_accrual_account_rec.account_id);
4713             fnd_msg_pub.ADD;
4714             RAISE fnd_api.g_exc_error;
4715          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4716          THEN
4717             l_error_flag:='Y';
4718             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4719             fnd_message.set_token ('ACCOUNT_ID', p_lease_accrual_account_rec.account_id);
4720             fnd_msg_pub.ADD;
4721             RAISE fnd_api.g_exc_unexpected_error;
4722          END IF;
4723       END IF;
4724 
4725 
4726      -- IF  p_lease_accrual_account_rec.account_id = pn_lease_utils.g_pn_miss_num
4727      -- THEN
4728      --    p_lease_accrual_account_rec.account_id:= NULL;
4729      -- END IF;
4730 
4731       IF (   (    p_lease_liab_rcvl_account_rec.account_id IS NOT NULL
4732               AND p_lease_liab_rcvl_account_rec.account_id <> pn_lease_utils.g_pn_miss_num)
4733           OR (    p_lease_liab_rcvl_account_rec.account_conc_segs IS NOT NULL
4734               AND p_lease_liab_rcvl_account_rec.account_conc_segs <> pn_lease_utils.g_pn_miss_char)
4735           OR (   (    (p_lease_liab_rcvl_account_rec.account_segment1 IS NOT NULL)
4736                   AND (p_lease_liab_rcvl_account_rec.account_segment1 <>
4737                                                                        pn_lease_utils.g_pn_miss_char))
4738               OR (    (p_lease_liab_rcvl_account_rec.account_segment2 IS NOT NULL)
4739                   AND (p_lease_liab_rcvl_account_rec.account_segment2 <>
4740                                                                        pn_lease_utils.g_pn_miss_char))
4741               OR (    (p_lease_liab_rcvl_account_rec.account_segment3 IS NOT NULL)
4742                   AND (p_lease_liab_rcvl_account_rec.account_segment3 <>
4743                                                                        pn_lease_utils.g_pn_miss_char))
4744               OR (    (p_lease_liab_rcvl_account_rec.account_segment4 IS NOT NULL)
4745                   AND (p_lease_liab_rcvl_account_rec.account_segment4 <>
4746                                                                        pn_lease_utils.g_pn_miss_char))
4747               OR (    (p_lease_liab_rcvl_account_rec.account_segment5 IS NOT NULL)
4748                   AND (p_lease_liab_rcvl_account_rec.account_segment5 <>
4749                                                                        pn_lease_utils.g_pn_miss_char))
4750               OR (    (p_lease_liab_rcvl_account_rec.account_segment6 IS NOT NULL)
4751                   AND (p_lease_liab_rcvl_account_rec.account_segment6 <>
4752                                                                        pn_lease_utils.g_pn_miss_char))
4753               OR (    (p_lease_liab_rcvl_account_rec.account_segment7 IS NOT NULL)
4754                   AND (p_lease_liab_rcvl_account_rec.account_segment7 <>
4755                                                                        pn_lease_utils.g_pn_miss_char))
4756               OR (    (p_lease_liab_rcvl_account_rec.account_segment8 IS NOT NULL)
4757                   AND (p_lease_liab_rcvl_account_rec.account_segment8 <>
4758                                                                        pn_lease_utils.g_pn_miss_char))
4759               OR (    (p_lease_liab_rcvl_account_rec.account_segment9 IS NOT NULL)
4760                   AND (p_lease_liab_rcvl_account_rec.account_segment9 <>
4761                                                                        pn_lease_utils.g_pn_miss_char))
4762               OR (    (p_lease_liab_rcvl_account_rec.account_segment10 IS NOT NULL)
4763                   AND (p_lease_liab_rcvl_account_rec.account_segment10 <>
4764                                                                        pn_lease_utils.g_pn_miss_char))
4765               OR (    (p_lease_liab_rcvl_account_rec.account_segment11 IS NOT NULL)
4766                   AND (p_lease_liab_rcvl_account_rec.account_segment11 <>
4767                                                                        pn_lease_utils.g_pn_miss_char))
4768               OR (    (p_lease_liab_rcvl_account_rec.account_segment12 IS NOT NULL)
4769                   AND (p_lease_liab_rcvl_account_rec.account_segment12 <>
4770                                                                        pn_lease_utils.g_pn_miss_char))
4771               OR (    (p_lease_liab_rcvl_account_rec.account_segment13 IS NOT NULL)
4772                   AND (p_lease_liab_rcvl_account_rec.account_segment13 <>
4773                                                                        pn_lease_utils.g_pn_miss_char))
4774               OR (    (p_lease_liab_rcvl_account_rec.account_segment14 IS NOT NULL)
4775                   AND (p_lease_liab_rcvl_account_rec.account_segment14 <>
4776                                                                        pn_lease_utils.g_pn_miss_char))
4777               OR (    (p_lease_liab_rcvl_account_rec.account_segment15 IS NOT NULL)
4778                   AND (p_lease_liab_rcvl_account_rec.account_segment15 <>
4779                                                                        pn_lease_utils.g_pn_miss_char))
4780               OR (    (p_lease_liab_rcvl_account_rec.account_segment16 IS NOT NULL)
4781                   AND (p_lease_liab_rcvl_account_rec.account_segment16 <>
4782                                                                        pn_lease_utils.g_pn_miss_char))
4783               OR (    (p_lease_liab_rcvl_account_rec.account_segment17 IS NOT NULL)
4784                   AND (p_lease_liab_rcvl_account_rec.account_segment17 <>
4785                                                                        pn_lease_utils.g_pn_miss_char))
4786               OR (    (p_lease_liab_rcvl_account_rec.account_segment18 IS NOT NULL)
4787                   AND (p_lease_liab_rcvl_account_rec.account_segment18 <>
4788                                                                        pn_lease_utils.g_pn_miss_char))
4789               OR (    (p_lease_liab_rcvl_account_rec.account_segment19 IS NOT NULL)
4790                   AND (p_lease_liab_rcvl_account_rec.account_segment19 <>
4791                                                                        pn_lease_utils.g_pn_miss_char))
4792               OR (    (p_lease_liab_rcvl_account_rec.account_segment20 IS NOT NULL)
4793                   AND (p_lease_liab_rcvl_account_rec.account_segment20 <>
4794                                                                        pn_lease_utils.g_pn_miss_char))))
4795       THEN
4796           pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:To Get the Account ID for Liability-Receivable',3);
4797          pn_lease_utils.get_account_id
4798                            (p_parameter_name              => l_param_liab_rvbl_acct
4799                           , p_operation                   => p_operation
4800                           , p_account_id                  => p_lease_liab_rcvl_account_rec.account_id
4801                           , p_account_conc_segs           => p_lease_liab_rcvl_account_rec.account_conc_segs
4802                           , p_account_segment1            => p_lease_liab_rcvl_account_rec.account_segment1
4803                           , p_account_segment2            => p_lease_liab_rcvl_account_rec.account_segment2
4804                           , p_account_segment3            => p_lease_liab_rcvl_account_rec.account_segment3
4805                           , p_account_segment4            => p_lease_liab_rcvl_account_rec.account_segment4
4806                           , p_account_segment5            => p_lease_liab_rcvl_account_rec.account_segment5
4807                           , p_account_segment6            => p_lease_liab_rcvl_account_rec.account_segment6
4808                           , p_account_segment7            => p_lease_liab_rcvl_account_rec.account_segment7
4809                           , p_account_segment8            => p_lease_liab_rcvl_account_rec.account_segment8
4810                           , p_account_segment9            => p_lease_liab_rcvl_account_rec.account_segment9
4811                           , p_account_segment10           => p_lease_liab_rcvl_account_rec.account_segment10
4812                           , p_account_segment11           => p_lease_liab_rcvl_account_rec.account_segment11
4813                           , p_account_segment12           => p_lease_liab_rcvl_account_rec.account_segment12
4814                           , p_account_segment13           => p_lease_liab_rcvl_account_rec.account_segment13
4815                           , p_account_segment14           => p_lease_liab_rcvl_account_rec.account_segment14
4816                           , p_account_segment15           => p_lease_liab_rcvl_account_rec.account_segment15
4817                           , p_account_segment16           => p_lease_liab_rcvl_account_rec.account_segment16
4818                           , p_account_segment17           => p_lease_liab_rcvl_account_rec.account_segment17
4819                           , p_account_segment18           => p_lease_liab_rcvl_account_rec.account_segment18
4820                           , p_account_segment19           => p_lease_liab_rcvl_account_rec.account_segment19
4821                           , p_account_segment20           => p_lease_liab_rcvl_account_rec.account_segment20
4822                           , x_return_status               => x_return_status);
4823 
4824          ----------------------dbms_output.put_line (   'GET_LIAB_RVCL_ACCOUNT_ID: '|| p_lease_liab_rcvl_account_rec.account_id);
4825            pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Liability-Receivable Account ID'||p_lease_liab_rcvl_account_rec.account_id,3);
4826 
4827          IF (x_return_status = fnd_api.g_ret_sts_error)
4828          THEN
4829             l_error_flag:='Y';
4830             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4831             fnd_message.set_token ('ACCOUNT_ID', p_lease_liab_rcvl_account_rec.account_id);
4832             fnd_msg_pub.ADD;
4833             RAISE fnd_api.g_exc_error;
4834          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
4835          THEN
4836             l_error_flag:='Y';
4837             fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
4838             fnd_message.set_token ('ACCOUNT_ID', p_lease_liab_rcvl_account_rec.account_id);
4839             fnd_msg_pub.ADD;
4840             RAISE fnd_api.g_exc_unexpected_error;
4841          END IF;
4842       END IF;
4843 
4844      -- IF  p_lease_liab_rcvl_account_rec.account_id = pn_lease_utils.g_pn_miss_num
4845      -- THEN
4846      --    p_lease_liab_rcvl_account_rec.account_id := NULL;
4847      -- END IF;
4848 
4849 ----------------------------------------------------------------
4850 -- DESCRIPTIVE FLEXSFIELDS VALIDATION
4851 ----------------------------------------------------------------
4852 
4853       ----------------------dbms_output.put_line('p_lease_rec.attribute_category'||p_lease_rec.attribute_category);
4854       ----------------------dbms_output.put_line('p_lease_rec.attribute1'||p_lease_rec.attribute1);
4855       ----------------------dbms_output.put_line('p_lease_rec.attribute2'||p_lease_rec.attribute2);
4856       ----------------------dbms_output.put_line('p_lease_rec.attribute3'||p_lease_rec.attribute3);
4857       ----------------------dbms_output.put_line('p_lease_rec.attribute4'||p_lease_rec.attribute4);
4858       ----------------------dbms_output.put_line('p_lease_rec.attribute5'||p_lease_rec.attribute5);
4859             -- Validate the descriptive flexfields
4860 --
4861             /*IF NOT (    (p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char)
4862                     AND (p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char)
4863                     AND (p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char)
4864                     AND (p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char)
4865                     AND (p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char)
4866                     AND (p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char)
4867                     AND (p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char)
4868                     AND (p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char)
4869                     AND (p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char)
4870                     AND (p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char)
4871                     AND (p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char)
4872                     AND (p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char)
4873                     AND (p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char)
4874                     AND (p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char)
4875                     AND (p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char)
4876                     AND (p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char))
4877             THEN*/
4878                --------------------dbms_output.put_line ('IN ATTRIBUTES');
4879 
4880                IF (p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char)
4881                THEN
4882                   p_lease_rec.attribute_category       := NULL;
4883               -- ELSE
4884                 --  l_lease_rec.attribute_category       := p_lease_rec.attribute_category;
4885                END IF;
4886 
4887                IF (p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char)
4888                THEN
4889                   p_lease_rec.attribute1               := NULL;
4890                --ELSE
4891                  -- l_lease_rec.attribute1               := p_lease_rec.attribute1;
4892                END IF;
4893 
4894                IF (p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char)
4895                THEN
4896                   p_lease_rec.attribute2               := NULL;
4897               -- ELSE
4898                 --  l_lease_rec.attribute2               := p_lease_rec.attribute2;
4899                END IF;
4900 
4901                IF (p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char)
4902                THEN
4903                   p_lease_rec.attribute3               := NULL;
4904              --  ELSE
4905               --    l_lease_rec.attribute3               := p_lease_rec.attribute3;
4906                END IF;
4907 
4908                IF (p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char)
4909                THEN
4910                   p_lease_rec.attribute4               := NULL;
4911              --  ELSE
4912               --    l_lease_rec.attribute4               := p_lease_rec.attribute4;
4913                END IF;
4914 
4915                IF (p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char)
4916                THEN
4917                   p_lease_rec.attribute5               := NULL;
4918              --  ELSE
4919              --     l_lease_rec.attribute5               := p_lease_rec.attribute5;
4920                END IF;
4921 
4922                IF (p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char)
4923                THEN
4924                   p_lease_rec.attribute6               := NULL;
4925              --  ELSE
4926              --     l_lease_rec.attribute6               := p_lease_rec.attribute6;
4927                END IF;
4928 
4929                IF (p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char)
4930                THEN
4931                   p_lease_rec.attribute7               := NULL;
4932              --  ELSE
4933              --     l_lease_rec.attribute7               := p_lease_rec.attribute7;
4934                END IF;
4935 
4936                IF (p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char)
4937                THEN
4938                   p_lease_rec.attribute8               := NULL;
4939              --  ELSE
4940              --     l_lease_rec.attribute8               := p_lease_rec.attribute8;
4941                END IF;
4942 
4943                IF (p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char)
4944                THEN
4945                   p_lease_rec.attribute9               := NULL;
4946             --   ELSE
4947                --   l_lease_rec.attribute9               := p_lease_rec.attribute9;
4948                END IF;
4949 
4950                IF (p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char)
4951                THEN
4952                   p_lease_rec.attribute10              := NULL;
4953              --  ELSE
4954              --     l_lease_rec.attribute10              := p_lease_rec.attribute10;
4955                END IF;
4956 
4957                IF (p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char)
4958                THEN
4959                   p_lease_rec.attribute11              := NULL;
4960              --  ELSE
4961              --     l_lease_rec.attribute11              := p_lease_rec.attribute11;
4962                END IF;
4963 
4964                IF (p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char)
4965                THEN
4966                   p_lease_rec.attribute12              := NULL;
4967              --  ELSE
4968              --     l_lease_rec.attribute12              := p_lease_rec.attribute12;
4969                END IF;
4970 
4971                IF (p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char)
4972                THEN
4973                   p_lease_rec.attribute13              := NULL;
4974              --  ELSE
4975                --   l_lease_rec.attribute13              := p_lease_rec.attribute13;
4976                END IF;
4977 
4978                IF (p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char)
4979                THEN
4980                   p_lease_rec.attribute14              := NULL;
4981                --ELSE
4982                  -- l_lease_rec.attribute14              := p_lease_rec.attribute14;
4983                END IF;
4984 
4985                IF (p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char)
4986                THEN
4987                   p_lease_rec.attribute15              := NULL;
4988                --ELSE
4989                  -- l_lease_rec.attribute15              := p_lease_rec.attribute15;
4990                END IF;
4991 
4992 
4993       IF (get_attribute_status('PN_LEASE_DETAILS') > 0) THEN
4994             /* get_attribute_mandatory_status('PN_LEASE_DETAILS'
4995                                             , p_lease_rec.attribute1
4996                                             , p_lease_rec.attribute2
4997                                             , p_lease_rec.attribute3
4998                                             , p_lease_rec.attribute4
4999                                             , p_lease_rec.attribute5
5000                                             , p_lease_rec.attribute6
5001                                             , p_lease_rec.attribute7
5002                                             , p_lease_rec.attribute8
5003                                             , p_lease_rec.attribute9
5004                                             , p_lease_rec.attribute10
5005                                             , p_lease_rec.attribute11
5006                                             , p_lease_rec.attribute12
5007                                             , p_lease_rec.attribute13
5008                                             , p_lease_rec.attribute14
5009                                             , p_lease_rec.attribute15
5010                                             ,x_return_status
5011                                             );
5012           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
5013               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5014               fnd_message.set_token ('API_NAME', l_api_name_full);
5015               fnd_message.set_token ('NULL_PARAM','Required attribute in Lease is NULL');
5016               fnd_msg_pub.ADD;
5017               RAISE fnd_api.g_exc_error;
5018           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
5019               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5020               fnd_message.set_token ('API_NAME', l_api_name_full);
5021               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Lease is NULL');
5022               fnd_msg_pub.ADD;
5023               RAISE fnd_api.g_exc_unexpected_error;
5024           ELSE*/
5025           IF NOT ((p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute_category IS NULL)
5026                                         AND (p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute1 IS NULL)
5027                                         AND (p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute2 IS NULL)
5028                                         AND (p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute3 IS NULL)
5029                                         AND (p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute4 IS NULL)
5030                                         AND (p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute5 IS NULL)
5031                                         AND (p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute6 IS NULL)
5032                                         AND (p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute7 IS NULL)
5033                                         AND (p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute8 IS NULL)
5034                                         AND (p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute9 IS NULL)
5035                                         AND (p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute10 IS NULL)
5036                                         AND (p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute11 IS NULL)
5037                                         AND (p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute12 IS NULL)
5038                                         AND (p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute13 IS NULL)
5039                                         AND (p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute14 IS NULL)
5040                                         AND (p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char OR p_lease_rec.attribute15 IS NULL)
5041                                 ) THEN
5042                pn_lease_utils.validate_desc_flex (p_api_name                    => l_api_name_full
5043                                                 , p_application_short_name      => 'PN'
5044                                                 , p_desc_flex_name              => 'PN_LEASE_DETAILS'
5045                                                 , p_desc_segment1               => p_lease_rec.attribute1
5046                                                 , p_desc_segment2               => p_lease_rec.attribute2
5047                                                 , p_desc_segment3               => p_lease_rec.attribute3
5048                                                 , p_desc_segment4               => p_lease_rec.attribute4
5049                                                 , p_desc_segment5               => p_lease_rec.attribute5
5050                                                 , p_desc_segment6               => p_lease_rec.attribute6
5051                                                 , p_desc_segment7               => p_lease_rec.attribute7
5052                                                 , p_desc_segment8               => p_lease_rec.attribute8
5053                                                 , p_desc_segment9               => p_lease_rec.attribute9
5054                                                 , p_desc_segment10              => p_lease_rec.attribute10
5055                                                 , p_desc_segment11              => p_lease_rec.attribute11
5056                                                 , p_desc_segment12              => p_lease_rec.attribute12
5057                                                 , p_desc_segment13              => p_lease_rec.attribute13
5058                                                 , p_desc_segment14              => p_lease_rec.attribute14
5059                                                 , p_desc_segment15              => p_lease_rec.attribute15
5060                                                 , p_desc_context                => p_lease_rec.attribute_category
5061                                                 , p_resp_appl_id                => fnd_global.resp_appl_id
5062                                                 , p_resp_id                     => fnd_global.resp_id
5063                                                 , p_return_status               => x_return_status
5064                                                  );
5065          IF (x_return_status = fnd_api.g_ret_sts_error)
5066                THEN
5067                   fnd_message.set_name ('PN', 'PN_API_LEASE_DETAILS_DESC_FLEX_ERR');
5068                   fnd_message.set_token ('API_NAME',l_api_name_full);
5069                   fnd_message.set_token ('DESC_FLEX_MSG', 'Lease Details Descriptive Fields Error');
5070                   fnd_msg_pub.ADD;
5071                   RAISE fnd_api.g_exc_error;
5072                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
5073                THEN
5074                   fnd_message.set_name ('PN', 'PN_API_LEASE_DETAILS_DESC_FLEX_ERR');
5075                   fnd_message.set_token ('API_NAME',l_api_name_full);
5076                   fnd_message.set_token ('DESC_FLEX_MSG', 'Lease Details Descriptive Fields Error');
5077                   fnd_msg_pub.ADD;
5078                   RAISE fnd_api.g_exc_unexpected_error;
5079                END IF;
5080         END IF;
5081       END IF; -- End of attributes valitions in create lease
5082 
5083 
5084    EXCEPTION
5085       WHEN fnd_api.g_exc_error THEN
5086         x_return_status := fnd_api.g_ret_sts_error;
5087         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:FND_API.G_RET_STS_ERROR:Exception:'||SQLERRM,3);
5088       WHEN OTHERS
5089       THEN
5090         x_return_status := fnd_api.g_ret_sts_unexp_error;
5091         pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC;Exception:'||SQLERRM,3);
5092    END validate_lease_rec;
5093 
5094    PROCEDURE INIT_LEASE_REC( p_lease_rec      IN OUT  NOCOPY      lease_rec
5095                            , p_lease_context  IN            VARCHAR2
5096                            , x_return_status     OUT NOCOPY VARCHAR2
5097                            )
5098    IS
5099 
5100    BEGIN
5101      pvt_debug(g_pkg_name||'-Inside INIT_LEASE_REC',3);
5102 ----------------------dbms_output.put_line('INIT_LEASE_REC:1');--Rupak
5103      x_return_status                      := fnd_api.g_ret_sts_success;
5104       IF  p_lease_rec.lease_id = pn_lease_utils.g_pn_miss_num
5105       THEN
5106          p_lease_rec.lease_id:= NULL;
5107       END IF;
5108 
5109       IF  p_lease_rec.lease_change_id = pn_lease_utils.g_pn_miss_num
5110       THEN
5111          p_lease_rec.lease_change_id:= NULL;
5112       END IF;
5113 
5114       IF  p_lease_rec.lease_detail_id = pn_lease_utils.g_pn_miss_num
5115       THEN
5116          p_lease_rec.lease_detail_id:= NULL;
5117       END IF;
5118 
5119       IF  p_lease_rec.lease_name = pn_lease_utils.g_pn_miss_char
5120       THEN
5121          p_lease_rec.lease_name:= NULL;
5122       END IF;
5123 ----------------------dbms_output.put_line('INIT_LEASE_REC:2');--Rupak
5124       IF  p_lease_rec.lease_num = pn_lease_utils.g_pn_miss_char
5125       THEN
5126          p_lease_rec.lease_num:= NULL;
5127       END IF;
5128 
5129       IF  p_lease_rec.parent_lease_id = pn_lease_utils.g_pn_miss_num
5130       THEN
5131          p_lease_rec.parent_lease_id := NULL;
5132       END IF;
5133 ----------------------dbms_output.put_line('INIT_LEASE_REC:3');--Rupak
5134       IF  p_lease_rec.lease_type_code = pn_lease_utils.g_pn_miss_char
5135       THEN
5136          p_lease_rec.lease_type_code:= NULL;
5137       END IF;
5138 
5139       IF  p_lease_rec.lease_class_code = pn_lease_utils.g_pn_miss_char
5140       THEN
5141          p_lease_rec.lease_class_code:= NULL;
5142       END IF;
5143 ----------------------dbms_output.put_line('INIT_LEASE_REC:4');--Rupak
5144       IF  p_lease_rec.pymt_term_pro_rule_id = pn_lease_utils.g_pn_miss_char
5145       THEN
5146          p_lease_rec.pymt_term_pro_rule_id := NULL;
5147 
5148       END IF;
5149 
5150       IF  p_lease_rec.abstracted_by_user_id = pn_lease_utils.g_pn_miss_num
5151       THEN
5152          p_lease_rec.abstracted_by_user_id := NULL;
5153 
5154       END IF;
5155 ----------------------dbms_output.put_line('INIT_LEASE_REC:5');--Rupak
5156       IF  p_lease_rec.lease_status_code = pn_lease_utils.g_pn_miss_char
5157       THEN
5158          p_lease_rec.lease_status_code:= NULL;
5159       END IF;
5160 
5161       IF  p_lease_rec.creation_date = pn_lease_utils.g_pn_miss_date
5162       THEN
5163          p_lease_rec.creation_date:= NULL;
5164       END IF;
5165 
5166       IF  p_lease_rec.created_by = pn_lease_utils.g_pn_miss_num
5167       THEN
5168          p_lease_rec.created_by:= NULL;
5169       END IF;
5170 ----------------------dbms_output.put_line('INIT_LEASE_REC:6');--Rupak
5171       IF  p_lease_rec.last_update_date = pn_lease_utils.g_pn_miss_date
5172       THEN
5173          p_lease_rec.last_update_date:= NULL;
5174       END IF;
5175 
5176       IF  p_lease_rec.last_updated_by = pn_lease_utils.g_pn_miss_num
5177       THEN
5178          p_lease_rec.last_updated_by:= NULL;
5179       END IF;
5180 
5181       IF  p_lease_rec.last_update_login = pn_lease_utils.g_pn_miss_num
5182       THEN
5183          p_lease_rec.last_update_login:= NULL;
5184       END IF;
5185 ----------------------dbms_output.put_line('INIT_LEASE_REC:7');--Rupak
5186       IF  p_lease_rec.responsible_user_id = pn_lease_utils.g_pn_miss_num
5187       THEN
5188          p_lease_rec.responsible_user_id := NULL;
5189 
5190       END IF;
5191 
5192       IF  p_lease_rec.term_template_id = pn_lease_utils.g_pn_miss_num
5193       THEN
5194          p_lease_rec.term_template_id := NULL;
5195       END IF;
5196 
5197       IF  p_lease_rec.lease_commencement_date = pn_lease_utils.g_pn_miss_date
5198       THEN
5199          p_lease_rec.lease_commencement_date := NULL;
5200       END IF;
5201 ----------------------dbms_output.put_line('INIT_LEASE_REC:8');--Rupak
5202       IF  p_lease_rec.lease_termination_date = pn_lease_utils.g_pn_miss_date
5203       THEN
5204          p_lease_rec.lease_termination_date := NULL;
5205       END IF;
5206 
5207       IF  p_lease_rec.lease_execution_date = pn_lease_utils.g_pn_miss_date
5208       THEN
5209          p_lease_rec.lease_execution_date := NULL;
5210       END IF;
5211 
5212       IF  p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char
5213       THEN
5214          p_lease_rec.attribute_category:= NULL;
5215       END IF;
5216 ----------------------dbms_output.put_line('INIT_LEASE_REC:9');--Rupak
5217       IF  p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char
5218       THEN
5219          p_lease_rec.attribute1:= NULL;
5220       END IF;
5221 
5222       IF  p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char
5223       THEN
5224          p_lease_rec.attribute2:= NULL;
5225       END IF;
5226 
5227       IF  p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char
5228       THEN
5229          p_lease_rec.attribute3:= NULL;
5230       END IF;
5231 ----------------------dbms_output.put_line('INIT_LEASE_REC:10');--Rupak
5232       IF  p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char
5233       THEN
5234          p_lease_rec.attribute4:= NULL;
5235       END IF;
5236 
5237       IF  p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char
5238       THEN
5239          p_lease_rec.attribute5:= NULL;
5240       END IF;
5241 
5242       IF  p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char
5243       THEN
5244          p_lease_rec.attribute6:= NULL;
5245       END IF;
5246 
5247       IF  p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char
5248       THEN
5249          p_lease_rec.attribute7:= NULL;
5250       END IF;
5251 
5252       IF  p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char
5253       THEN
5254          p_lease_rec.attribute8:= NULL;
5255       END IF;
5256 ----------------------dbms_output.put_line('INIT_LEASE_REC:11');--Rupak
5257       IF  p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char
5258       THEN
5259          p_lease_rec.attribute9:= NULL;
5260       END IF;
5261 
5262       IF  p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char
5263       THEN
5264          p_lease_rec.attribute10:= NULL;
5265       END IF;
5266 
5267       IF  p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char
5268       THEN
5269          p_lease_rec.attribute11:= NULL;
5270       END IF;
5271 
5272       IF  p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char
5273       THEN
5274          p_lease_rec.attribute12:= NULL;
5275       END IF;
5276 ----------------------dbms_output.put_line('INIT_LEASE_REC:12');--Rupak
5277       IF  p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char
5278       THEN
5279          p_lease_rec.attribute13:= NULL;
5280       END IF;
5281 
5282       IF  p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char
5283       THEN
5284          p_lease_rec.attribute14:= NULL;
5285       END IF;
5286 
5287       IF  p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char
5288       THEN
5289          p_lease_rec.attribute15:= NULL;
5290       END IF;
5291 
5292       IF  p_lease_rec.customer_id = pn_lease_utils.g_pn_miss_num
5293       THEN
5294          p_lease_rec.customer_id := NULL;
5295 
5296       END IF;
5297 
5298       IF  p_lease_rec.location_id = pn_lease_utils.g_pn_miss_num
5299       THEN
5300          p_lease_rec.location_id := NULL;
5301       END IF;
5302 ----------------------dbms_output.put_line('INIT_LEASE_REC:13');--Rupak
5303       IF  p_lease_rec.grouping_rule_id = pn_lease_utils.g_pn_miss_num
5304       THEN
5305          p_lease_rec.grouping_rule_id:= NULL;
5306       END IF;
5307 
5308       IF  p_lease_rec.cal_start = pn_lease_utils.g_pn_miss_char
5309       THEN
5310          p_lease_rec.cal_start := NULL;
5311 
5312       END IF;
5313 ----------------------dbms_output.put_line('INIT_LEASE_REC:14');--Rupak
5314       IF  p_lease_rec.org_id = pn_lease_utils.g_pn_miss_num
5315       THEN
5316          p_lease_rec.org_id:= NULL;
5317       END IF;
5318 
5319     EXCEPTION
5320      WHEN OTHERS THEN
5321        ----------------------dbms_output.put_line('IN EXCEPTION:INIT_LEASE_REC PROC'||SQLERRM);
5322        pvt_debug(g_pkg_name||'-Exception:INIT_LEASE_REC'||SQLERRM,3);
5323        x_return_status                      := fnd_api.g_ret_sts_error;
5324    END INIT_LEASE_REC;
5325 
5326    PROCEDURE lease_insert_row (
5327       p_lease_rec                   IN OUT  NOCOPY      lease_rec
5328     , p_lease_exp_rev_accounts_rec  IN OUT  NOCOPY      lease_account_rec
5329     , p_lease_accrual_account_rec   IN OUT  NOCOPY      lease_account_rec
5330     , p_lease_liab_rcvl_account_rec IN OUT  NOCOPY      lease_account_rec
5331     , p_location_exist              IN            VARCHAR2 := fnd_api.g_false
5332     , p_lease_context               IN            VARCHAR2
5333     , x_return_status                  OUT NOCOPY VARCHAR2)
5334    IS
5335       l_rowid   VARCHAR2 (18) := NULL;
5336    BEGIN
5337       pvt_debug(g_pkg_name||'-Inside LEASE_INSERT_ROW',3);
5338       INIT_LEASE_REC( p_lease_rec       => p_lease_rec
5339                     , p_lease_context   => p_lease_context
5340                     , x_return_status   => x_return_status
5341                     );
5342       IF  p_lease_exp_rev_accounts_rec.account_id = pn_lease_utils.g_pn_miss_num
5343       THEN
5344          p_lease_exp_rev_accounts_rec.account_id := NULL;
5345 
5346       END IF;
5347 
5348       IF  p_lease_accrual_account_rec.account_id = pn_lease_utils.g_pn_miss_num
5349       THEN
5350          p_lease_accrual_account_rec.account_id := NULL;
5351 
5352       END IF;
5353 
5354       IF  p_lease_liab_rcvl_account_rec.account_id = pn_lease_utils.g_pn_miss_num
5355       THEN
5356          p_lease_liab_rcvl_account_rec.account_id := NULL;
5357 
5358       END IF;
5359 
5360 /*
5361 ----------------------dbms_output.put_line('l_rowid'||l_rowid);
5362 ----------------------dbms_output.put_line('p_lease_rec.lease_id'||p_lease_rec.lease_id);
5363 
5364 ----------------------dbms_output.put_line('p_lease_rec.lease_change_id'||p_lease_rec.lease_change_id);
5365 ----------------------dbms_output.put_line('p_lease_rec.lease_detail_id'||p_lease_rec.lease_detail_id);
5366 ----------------------dbms_output.put_line('p_lease_rec.lease_name'||p_lease_rec.lease_name);
5367 ----------------------dbms_output.put_line('p_lease_rec.lease_num'||p_lease_rec.lease_num);
5368 ----------------------dbms_output.put_line('p_lease_rec.parent_lease_id'||p_lease_rec.parent_lease_id);
5369 ----------------------dbms_output.put_line('p_lease_rec.lease_type_code'||p_lease_rec.lease_type_code);
5370 ----------------------dbms_output.put_line('p_lease_rec.lease_class_code'||p_lease_rec.lease_class_code);
5371 ----------------------dbms_output.put_line('p_lease_rec.pymt_term_pro_rule_id'||p_lease_rec.pymt_term_pro_rule_id);
5372 
5373 ----------------------dbms_output.put_line('p_lease_rec.abstracted_by_user_id'||p_lease_rec.abstracted_by_user_id);
5374 ----------------------dbms_output.put_line('p_lease_rec.responsible_user_id'||p_lease_rec.responsible_user_id);
5375 ----------------------dbms_output.put_line('p_lease_exp_rev_accounts_rec.account_id'||p_lease_exp_rev_accounts_rec.account_id);
5376 ----------------------dbms_output.put_line('p_lease_accrual_account_rec.account_id'||p_lease_accrual_account_rec.account_id);
5377 ----------------------dbms_output.put_line('p_lease_liab_rcvl_account_rec.account_id'||p_lease_liab_rcvl_account_rec.account_id);
5378 ----------------------dbms_output.put_line('p_lease_rec.term_template_id'||p_lease_rec.term_template_id);
5379 ----------------------dbms_output.put_line('p_lease_rec.lease_commencement_date'||p_lease_rec.lease_commencement_date);
5380 ----------------------dbms_output.put_line('p_lease_rec.lease_termination_date'||p_lease_rec.lease_termination_date);
5381 ----------------------dbms_output.put_line('p_lease_rec.lease_execution_date'||p_lease_rec.lease_execution_date);
5382 ----------------------dbms_output.put_line(' p_lease_rec.attribute_category'|| p_lease_rec.attribute_category);
5383 
5384 ----------------------dbms_output.put_line('p_lease_rec.attribute1'||p_lease_rec.attribute1);
5385 ----------------------dbms_output.put_line('p_lease_rec.attribute2'||p_lease_rec.attribute2);
5386 ----------------------dbms_output.put_line('p_lease_rec.attribute3'||p_lease_rec.attribute3);
5387 ----------------------dbms_output.put_line('p_lease_rec.attribute4'||p_lease_rec.attribute4);
5388 ----------------------dbms_output.put_line('p_lease_rec.attribute5'||p_lease_rec.attribute5);
5389 ----------------------dbms_output.put_line('p_lease_rec.attribute6' ||p_lease_rec.attribute6);
5390 ----------------------dbms_output.put_line('p_lease_rec.attribute7'||p_lease_rec.attribute7);
5391 ----------------------dbms_output.put_line('p_lease_rec.attribute8'||p_lease_rec.attribute8);
5392 ----------------------dbms_output.put_line('p_lease_rec.attribute9'||p_lease_rec.attribute9);
5393 ----------------------dbms_output.put_line('p_lease_rec.attribute10'||p_lease_rec.attribute10);
5394 
5395 ----------------------dbms_output.put_line('p_lease_rec.attribute11'||p_lease_rec.attribute11);
5396 ----------------------dbms_output.put_line('p_lease_rec.attribute12'||p_lease_rec.attribute12);
5397 ----------------------dbms_output.put_line('p_lease_rec.attribute13'||p_lease_rec.attribute13);
5398 ----------------------dbms_output.put_line('p_lease_rec.attribute14'||p_lease_rec.attribute14);
5399 ----------------------dbms_output.put_line('p_lease_rec.attribute15'||p_lease_rec.attribute15);
5400 
5401 ----------------------dbms_output.put_line('p_lease_rec.org_id'||p_lease_rec.org_id);
5402 ----------------------dbms_output.put_line('p_lease_rec.location_id'||p_lease_rec.location_id);
5403 ----------------------dbms_output.put_line('p_lease_rec.customer_id'||p_lease_rec.customer_id);
5404 ----------------------dbms_output.put_line('p_lease_rec.grouping_rule_id'||p_lease_rec.grouping_rule_id);
5405 ----------------------dbms_output.put_line('p_lease_rec.cal_start'||p_lease_rec.cal_start);
5406 
5407 */
5408        pvt_debug(g_pkg_name||'-LEASE_INSERT_ROW:Calling Insert Row of the Lease:PN_LEASES_PKG.INSERT_ROW',3);
5409       pn_leases_pkg.insert_row
5410                               (x_rowid                       => l_rowid
5411                              , x_lease_id                    => p_lease_rec.lease_id
5412                              , x_lease_change_id             => p_lease_rec.lease_change_id
5413                              , x_lease_detail_id             => p_lease_rec.lease_detail_id
5414                              , x_name                        => p_lease_rec.lease_name
5415                              , x_lease_num                   => p_lease_rec.lease_num
5416                              , x_parent_lease_id             => p_lease_rec.parent_lease_id
5417                              , x_lease_type_code             => p_lease_rec.lease_type_code
5418                              , x_lease_class_code            => p_lease_rec.lease_class_code
5419                              , x_payment_term_proration_rule => p_lease_rec.pymt_term_pro_rule_id
5420                              , x_abstracted_by_user          => p_lease_rec.abstracted_by_user_id
5421                              , x_status                      => p_lease_rec.status_code
5422                              , x_lease_status                => p_lease_rec.lease_status_code
5423                              , x_creation_date               =>  SYSDATE
5424                              , x_created_by                  =>  fnd_global.user_id
5425                              , x_last_update_date            => p_lease_rec.last_update_date
5426                              , x_last_updated_by             => fnd_global.user_id
5427                              , x_last_update_login           => fnd_global.login_id
5428                              , x_responsible_user            => p_lease_rec.responsible_user_id
5429                              , x_expense_account_id          => p_lease_exp_rev_accounts_rec.account_id
5430                              , x_accrual_account_id          => p_lease_accrual_account_rec.account_id
5431                              , x_receivable_account_id       => p_lease_liab_rcvl_account_rec.account_id
5432                              , x_term_template_id            => p_lease_rec.term_template_id
5433                              , x_lease_commencement_date     => p_lease_rec.lease_commencement_date
5434                              , x_lease_termination_date      => p_lease_rec.lease_termination_date
5435                              , x_lease_execution_date        => p_lease_rec.lease_execution_date
5436                              , x_attribute_category          => p_lease_rec.attribute_category
5437                              , x_attribute1                  => p_lease_rec.attribute1
5438                              , x_attribute2                  => p_lease_rec.attribute2
5439                              , x_attribute3                  => p_lease_rec.attribute3
5440                              , x_attribute4                  => p_lease_rec.attribute4
5441                              , x_attribute5                  => p_lease_rec.attribute5
5442                              , x_attribute6                  => p_lease_rec.attribute6
5443                              , x_attribute7                  => p_lease_rec.attribute7
5444                              , x_attribute8                  => p_lease_rec.attribute8
5445                              , x_attribute9                  => p_lease_rec.attribute9
5446                              , x_attribute10                 => p_lease_rec.attribute10
5447                              , x_attribute11                 => p_lease_rec.attribute11
5448                              , x_attribute12                 => p_lease_rec.attribute12
5449                              , x_attribute13                 => p_lease_rec.attribute13
5450                              , x_attribute14                 => p_lease_rec.attribute14
5451                              , x_attribute15                 => p_lease_rec.attribute15
5452                              , x_org_id                      => g_org_id--p_lease_rec.org_id
5453                              , x_location_id                 => p_lease_rec.location_id
5454                              , x_customer_id                 => p_lease_rec.customer_id
5455                              , x_grouping_rule_id            => p_lease_rec.grouping_rule_id
5456                              , x_calendar_year_start_date    => p_lease_rec.cal_start
5457                            );
5458           x_return_status := fnd_api.g_ret_sts_success;
5459    ----------------------dbms_output.put_line('p_lease_rec.lease_id'||p_lease_rec.lease_id);--Rupak
5460      pvt_debug(g_pkg_name||'-LEASE_INSERT_ROW:PN_LEASES_PKG.INSERT_ROW Successful',3);
5461    EXCEPTION
5462       WHEN OTHERS
5463       THEN
5464         --NULL;
5465          ----------------------dbms_output.put_line (   'In LEASE INSERT EXCEPTION: '|| SQLERRM);
5466           x_return_status  := fnd_api.g_ret_sts_error;
5467          pvt_debug(g_pkg_name||'-LEASE_INSERT_ROW:Exception'||SQLERRM,3);
5468    END lease_insert_row;
5469 
5470 /*-----------------------------------------SUNITHA Begins----------------------------*/
5471 
5472 
5473         PROCEDURE VALIDATE_NOTE_FOR_CREATE ( p_note_tbl     IN OUT NOCOPY    lease_note_tbl_type
5474                                         ,x_tbl          OUT   NOCOPY  temp_tbl_type
5475                                         ,x_return_status    IN OUT NOCOPY VARCHAR2
5476 
5477         )
5478         IS
5479         l_return_status                             VARCHAR2(1)    := fnd_api.g_ret_sts_success;
5480         l_index                                     BINARY_INTEGER;
5481         l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
5482         l_lookup_code                               PN_NOTE_HEADERS.NOTE_TYPE_LOOKUP_CODE%TYPE  := pn_lease_utils.g_pn_miss_char;
5483         l_cur_id                                    NUMBER;
5484         l_tbl_index                                 BINARY_INTEGER;
5485         l_tbl_flag                                  NUMBER       :=  1;
5486         l_tbl                                       temp_tbl_type;
5487         l_api_name                                  VARCHAR2(30)  :=  'CREATE_NOTES';
5488         l_err_note_count                            NUMBER:=0;
5489         BEGIN
5490         ----------------------dbms_output.put_line('VALIDATION FOR NOTES CREATION STARTED');
5491            x_return_status := fnd_api.g_ret_sts_success;
5492           pvt_debug(g_pkg_name||'-Inside VALIDATE_NOTE_FOR_CREATE',3);
5493               for l_index in p_note_tbl.FIRST.. p_note_tbl.LAST   LOOP
5494                BEGIN
5495                 l_tbl_flag      :=      1;
5496                 ----------------------dbms_output.put_line('VALIDATION FOR :  '||l_index ||'  RECORD');
5497                         l_tbl_index      :=      l_index;
5498                         INITIALIZE_NOTES_REC(p_note_tbl(l_index),'CREATE_NOTES',x_return_status);
5499                         IF (p_note_tbl(l_index).note_date IS NULL OR p_note_tbl(l_index).note_date = pn_lease_utils.g_pn_miss_date)THEN
5500                             l_tbl_flag  :=      0;
5501                         /* PN_LEASE_UTILS.ADD_NULL_PARAMETER_MSG (
5502                                                  p_token_apiname         =>         l_api_name
5503                                                , p_token_nullparam       =>        'NOTE DATE'
5504                                                                   );*/
5505                             pvt_debug(g_pkg_name||'-VALIDATE_NOTE_FOR_CREATE:NOTE DATE IS NULL',3);
5506                             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5507                             fnd_message.set_token ('API_NAME', l_api_name);
5508                             fnd_message.set_token ('NULL_PARAM', 'NOTE DATE');
5509                             fnd_msg_pub.ADD;
5510                             RAISE fnd_api.g_exc_error;
5511                         END IF;
5512 
5513 
5514                         -------------------------------------------------------------------------------------------------
5515                       IF (  (p_note_tbl(l_index).note_type IS NOT NULL AND p_note_tbl(l_index).note_type <> pn_lease_utils.g_pn_miss_char)
5516                           OR(p_note_tbl(l_index).note_type_lookup_code IS NOT NULL AND p_note_tbl(l_index).note_type_lookup_code <> pn_lease_utils.g_pn_miss_char)
5517                          ) THEN
5518                          pn_lease_utils.get_lookup_code(p_parameter_name      =>  l_param_note_type--'NOTE TYPE'
5519                                                       , p_lookup_meaning      =>   p_note_tbl(l_index).note_type
5520                                                       , p_operation           =>  'CREATE_NOTE'
5521                                                        , p_lookup_type        =>  l_pn_note_type--'PN_NOTE_TYPE'
5522                                                        , x_return_status      =>   x_return_status
5523                                                        , x_lookup_type_code   =>   p_note_tbl(l_index).note_type_lookup_code
5524                                                       );
5525                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
5526                           --p_lease_contacts_tbl (i).error_flag := 'Y';
5527                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
5528                           fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_pn_note_type));
5529                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_note_tbl(l_index).note_type));
5530                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_note_tbl(l_index).note_type_lookup_code));
5531                           fnd_msg_pub.ADD;
5532                           RAISE fnd_api.g_exc_error;
5533                        ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
5534                           --p_lease_contacts_tbl (i).error_flag := 'Y';
5535                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
5536                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_note_type,3));
5537                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
5538                           fnd_msg_pub.ADD;
5539                           RAISE fnd_api.g_exc_unexpected_error;
5540                        END IF;
5541                       ELSE
5542                             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5543                             fnd_message.set_token ('API_NAME', l_api_name);
5544                             fnd_message.set_token ('NULL_PARAM', l_pn_note_type);
5545                             fnd_msg_pub.ADD;
5546                             RAISE fnd_api.g_exc_error;
5547                       END IF;
5548 
5549 
5550                     --  dff validations
5551 
5552 
5553            IF (get_attribute_status('PN_NOTE_HEADERS') > 0) THEN
5554               ----------dbms_output.put_line('NOTE HEADER:1');
5555              /*get_attribute_mandatory_status('PN_NOTE_HEADERS'
5556                                              ,p_note_tbl(l_index).attribute1
5557                                              ,p_note_tbl(l_index).attribute2
5558                                              ,p_note_tbl(l_index).attribute3
5559                                              ,p_note_tbl(l_index).attribute4
5560                                              ,p_note_tbl(l_index).attribute5
5561                                              ,p_note_tbl(l_index).attribute6
5562                                              ,p_note_tbl(l_index).attribute7
5563                                              ,p_note_tbl(l_index).attribute8
5564                                              ,p_note_tbl(l_index).attribute9
5565                                              ,p_note_tbl(l_index).attribute10
5566                                              ,p_note_tbl(l_index).attribute11
5567                                              ,p_note_tbl(l_index).attribute12
5568                                              ,p_note_tbl(l_index).attribute13
5569                                              ,p_note_tbl(l_index).attribute14
5570                                              ,p_note_tbl(l_index).attribute15
5571                                              ,x_return_status
5572                                             );
5573                 ----------dbms_output.put_line('NOTE HEADER:2'||x_return_status);
5574           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
5575               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5576               fnd_message.set_token ('API_NAME', l_api_name);
5577               fnd_message.set_token ('NULL_PARAM','Required attribute in Notes is NULL');
5578               fnd_msg_pub.ADD;
5579               RAISE fnd_api.g_exc_error;
5580           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
5581               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5582               fnd_message.set_token ('API_NAME', l_api_name);
5583               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Notes is NULL');
5584               fnd_msg_pub.ADD;
5585               RAISE fnd_api.g_exc_unexpected_error;
5586           ELSE*/
5587            IF NOT ((p_note_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute_category IS NULL)
5588                                         AND (p_note_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute1 IS NULL)
5589                                         AND (p_note_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute2 IS NULL)
5590                                         AND (p_note_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute3 IS NULL)
5591                                         AND (p_note_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute4 IS NULL)
5592                                         AND (p_note_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute5 IS NULL)
5593                                         AND (p_note_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute6 IS NULL)
5594                                         AND (p_note_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute7 IS NULL)
5595                                         AND (p_note_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute8 IS NULL)
5596                                         AND (p_note_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute9 IS NULL)
5597                                         AND (p_note_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute10 IS NULL)
5598                                         AND (p_note_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute11 IS NULL)
5599                                         AND (p_note_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute12 IS NULL)
5600                                         AND (p_note_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute13 IS NULL)
5601                                         AND (p_note_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute14 IS NULL)
5602                                         AND (p_note_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char OR p_note_tbl(l_index).attribute15 IS NULL)
5603                                 ) THEN
5604                                 PN_LEASE_UTILS.validate_desc_flex (
5605                                                  p_api_name => 'PN_NOTE_HEADERS'--l_api_name_full
5606                                                , p_application_short_name => 'PN'
5607                                                , p_desc_flex_name => 'PN_NOTE_HEADERS'
5608                                                , p_desc_segment1 => p_note_tbl(l_index).attribute1
5609                                                , p_desc_segment2 => p_note_tbl(l_index).attribute2
5610                                                , p_desc_segment3 => p_note_tbl(l_index).attribute3
5611                                                , p_desc_segment4 => p_note_tbl(l_index).attribute4
5612                                                , p_desc_segment5 => p_note_tbl(l_index).attribute5
5613                                                , p_desc_segment6 => p_note_tbl(l_index).attribute6
5614                                                , p_desc_segment7 => p_note_tbl(l_index).attribute7
5615                                                , p_desc_segment8 => p_note_tbl(l_index).attribute8
5616                                                , p_desc_segment9 => p_note_tbl(l_index).attribute9
5617                                                , p_desc_segment10 =>p_note_tbl(l_index).attribute10
5618                                                , p_desc_segment11 =>p_note_tbl(l_index).attribute11
5619                                                , p_desc_segment12 =>p_note_tbl(l_index).attribute12
5620                                                , p_desc_segment13 =>p_note_tbl(l_index).attribute13
5621                                                , p_desc_segment14 =>p_note_tbl(l_index).attribute14
5622                                                , p_desc_segment15 =>p_note_tbl(l_index).attribute15
5623                                                , p_desc_context => p_note_tbl(l_index).attribute_category
5624                                                , p_resp_appl_id => fnd_global.resp_appl_id
5625                                                , p_resp_id      => fnd_global.resp_id
5626                                                , p_return_status=> x_return_status
5627                                                 );
5628                                      ----------dbms_output.put_line('NOTE HDR:x_return_status'||x_return_status);
5629                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
5630                                              ----------dbms_output.put_line('NOTES:1'||x_return_status);
5631                                              l_tbl_flag  :=  0;
5632                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
5633                                              fnd_message.set_token ('COLUMN', 'PN_NOTE_HEADERS_DESC_FIELDS');
5634                                              fnd_message.set_token ('P_TEXT', 'PN_NOTE_HEADERS'|| '-'|| SQLERRM);
5635                                              fnd_msg_pub.ADD;
5636                                              RAISE fnd_api.g_exc_error;
5637                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
5638                                             ----------dbms_output.put_line('NOTES:2'||x_return_status);
5639                                              l_tbl_flag  :=  0;
5640                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
5641                                              fnd_message.set_token ('COLUMN', 'PN_NOTE_HEADERS_DESC_FIELDS');
5642                                              fnd_message.set_token ('P_TEXT', 'PN_NOTE_HEADERS'|| '-'|| SQLERRM);
5643                                              fnd_msg_pub.ADD;
5644                                              RAISE fnd_api.g_exc_unexpected_error;
5645                                         END IF;
5646                             END IF;
5647               END IF;
5648                               l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
5649             EXCEPTION
5650               WHEN fnd_api.g_exc_error THEN
5651                   l_err_note_count := l_err_note_count+1;
5652                   --pvt_debug(g_pkg_name||'-VALIDATE_NOTE_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
5653               WHEN fnd_api.g_exc_unexpected_error THEN
5654                  l_err_note_count := l_err_note_count+1;
5655               WHEN OTHERS THEN
5656                  l_err_note_count := l_err_note_count+1;
5657             END;
5658       END LOOP;
5659         IF (l_err_note_count = 0 ) THEN
5660             x_return_status :=  fnd_api.g_ret_sts_success;
5661         ELSE
5662              x_return_status :=  fnd_api.g_ret_sts_error;
5663         END IF;
5664 
5665         x_tbl           :=      l_tbl;
5666 
5667         ----------------------dbms_output.put_line('VALIDATION FOR NOTE CREATION COMPLETED');
5668     EXCEPTION
5669     WHEN fnd_api.g_exc_error THEN
5670        x_return_status      :=      fnd_api.g_ret_sts_error;
5671     WHEN fnd_api.g_exc_unexpected_error THEN
5672           x_return_status      :=      fnd_api.g_ret_sts_unexp_error;
5673       ----------------------dbms_output.put_line('NOTE VALIDATION  FAILED');
5674       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
5675          pvt_debug(g_pkg_name||'-Unexpected:Exception:VALIDATE_NOTE_FOR_CREATE'||SQLERRM,3);
5676     WHEN OTHERS THEN
5677          x_return_status      :=      fnd_api.g_ret_sts_unexp_error;
5678       ----------------------dbms_output.put_line('NOTE VALIDATION  FAILED');
5679       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
5680         pvt_debug(g_pkg_name||'-OTHERS:Exception:VALIDATE_NOTE_FOR_CREATE'||SQLERRM,3);
5681     END VALIDATE_NOTE_FOR_CREATE;
5682 
5683 
5684 
5685    PROCEDURE NOTE_INSERT_ROW(p_note_tbl        IN OUT  NOCOPY     lease_note_tbl_type
5686                             , p_lease_id        IN           PN_LEASES_ALL.lease_id%type
5687                             , x_return_status   OUT    NOCOPY      VARCHAR2
5688                             , p_tbl             IN           temp_tbl_type
5689                             , p_commit          IN           VARCHAR2
5690                              )
5691     IS
5692         l_index                                 BINARY_INTEGER;
5693         l_hdr_row_id                            VARCHAR2(100)            ;
5694         l_dt_row_id                             VARCHAR2(100)            ;
5695         l_note_header_tbl                       lease_note_tbl_type    :=          p_note_tbl;
5696         l_note_header_id                        PN_NOTE_HEADERS.NOTE_HEADER_ID%TYPE;
5697         l_note_detail_id                        PN_NOTE_DETAILS.NOTE_DETAIL_ID%TYPE;
5698     BEGIN
5699          ----------------------dbms_output.put_line('PVT INSERT PROCEDURE FOR NOTE HEADER:STARTING'||p_note_tbl(1).note_date);--Rupak
5700          pvt_debug(g_pkg_name||'-Inside NOTE_INSERT_ROW',3);
5701             for l_index in p_note_tbl.FIRST..p_note_tbl.LAST LOOP
5702                ----------------------dbms_output.put_line('PVT INSERT PROCEDURE FOR NOTE HEADER:IN FOR LOOP OUTSIDE IF'||p_note_tbl(1).note_date);--Rupak
5703                  --  IF  p_tbl(l_index).temp_flag = 1 THEN --Commented Rupak
5704                    l_hdr_row_id                 :=  NULL;
5705                    l_note_header_id             :=  NULL;
5706                    -- --------------------dbms_output.put_line('PVT INSERT PROCEDURE FOR NOTE HEADER:   '||l_index||'  RECORD');--Rupak
5707                        pvt_debug(g_pkg_name||'-NOTE_INSERT_ROW:Calling PN_NOTE_HEADERS_PKG.INSERT_ROW',3);
5708                               pn_note_headers_pkg.insert_row (
5709                                       x_rowid                         =>                  l_hdr_row_id
5710                                     , x_note_header_id                =>                  l_note_header_id
5711                                     , x_lease_id                      =>                  p_lease_id
5712                                     , x_note_type_lookup_code         =>                  l_note_header_tbl(l_index).note_type_lookup_code
5713                                     , x_note_date                     =>                  trunc(l_note_header_tbl(l_index).note_date)
5714                                     , x_creation_date                 =>                  sysdate
5715                                     , x_created_by                    =>                  fnd_global.user_id
5716                                     , x_last_update_date              =>                  sysdate
5717                                     , x_last_updated_by               =>                  fnd_global.user_id
5718                                     , x_last_update_login             =>                  fnd_global.user_id
5719                                     , x_attribute_category            =>                  l_note_header_tbl(l_index).attribute_category
5720                                     , x_attribute1                    =>                  l_note_header_tbl(l_index).attribute1
5721                                     , x_attribute2                    =>                  l_note_header_tbl(l_index).attribute2
5722                                     , x_attribute3                    =>                  l_note_header_tbl(l_index).attribute3
5723                                     , x_attribute4                    =>                  l_note_header_tbl(l_index).attribute4
5724                                     , x_attribute5                    =>                  l_note_header_tbl(l_index).attribute5
5725                                     , x_attribute6                    =>                  l_note_header_tbl(l_index).attribute6
5726                                     , x_attribute7                    =>                  l_note_header_tbl(l_index).attribute7
5727                                     , x_attribute8                    =>                  l_note_header_tbl(l_index).attribute8
5728                                     , x_attribute9                    =>                  l_note_header_tbl(l_index).attribute9
5729                                     , x_attribute10                   =>                  l_note_header_tbl(l_index).attribute10
5730                                     , x_attribute11                   =>                  l_note_header_tbl(l_index).attribute11
5731                                     , x_attribute12                   =>                  l_note_header_tbl(l_index).attribute12
5732                                     , x_attribute13                   =>                  l_note_header_tbl(l_index).attribute13
5733                                     , x_attribute14                   =>                  l_note_header_tbl(l_index).attribute14
5734                                     , x_attribute15                   =>                  l_note_header_tbl(l_index).attribute15
5735                                      );
5736 
5737                                 pvt_debug(g_pkg_name||'-NOTE_INSERT_ROW:PN_NOTE_HEADERS_PKG.INSERT_ROW Successful',3);
5738                             IF l_note_header_id is NOT NULL THEN
5739                                 ----------------------dbms_output.put_line('NOTE HEADER CREATED WITH NOTE HEADER ID:  '||l_note_header_id);--Rupak
5740                                 l_note_header_tbl(l_index).note_header_id       :=       l_note_header_id;
5741                                 l_note_detail_id    :=      NULL;
5742                                 IF l_note_header_tbl(l_index).text IS NOT NULL OR l_note_header_tbl(l_index).text  <> pn_lease_utils.g_pn_miss_char THEN
5743                                    pvt_debug(g_pkg_name||'-NOTE_INSERT_ROW:Calling PN_NOTE_DETAILS_PKG.INSERT_ROW',3);
5744                                    ------------------dbms_output.put_line('Inside Details'||l_note_header_tbl(l_index).note_header_id);--OOPS
5745 
5746                                   pn_note_details_pkg.insert_row (
5747                                       x_rowid                         => l_dt_row_id
5748                                     , x_note_detail_id                => l_note_detail_id
5749                                     , x_note_header_id                => l_note_header_tbl(l_index).note_header_id
5750                                     , x_text                          => l_note_header_tbl(l_index).text
5751                                     , x_creation_date                 => sysdate
5752                                     , x_created_by                    => fnd_global.user_id
5753                                     , x_last_update_date              => sysdate
5754                                     , x_last_updated_by               => fnd_global.user_id
5755                                     , x_last_update_login             => fnd_global.user_id
5756                                   );
5757 
5758                                    pvt_debug(g_pkg_name||'-NOTE_INSERT_ROW:PN_NOTE_DETAILS_PKG.INSERT_ROW Succesful',3);
5759                                    ------------------dbms_output.put_line('After calling note details'||l_note_detail_id);
5760                                     IF l_note_detail_id IS NOT NULL THEN
5761                                         l_note_header_tbl(l_index).note_detail_id   :=  l_note_detail_id;
5762                                      ------------------dbms_output.put_line('NOTE DETAIL CREATED');
5763                                     END IF;
5764 
5765                                 END IF;
5766                         END IF;
5767                    -- END IF; --Commented Rupak
5768           END loop;
5769             x_return_status :=  fnd_api.g_ret_sts_success;
5770          EXCEPTION
5771             WHEN OTHERS THEN
5772             ROLLBACK;
5773             x_return_status := fnd_api.g_ret_sts_unexp_error;
5774             ----------------------dbms_output.put_line('INSERT FOR NOTE CREATION FAILED') ;
5775             ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
5776     END NOTE_INSERT_ROW;
5777 
5778 
5779     PROCEDURE CREATE_NOTE (
5780                               p_lease_id          IN          NUMBER
5781                             , p_commit            IN          VARCHAR2
5782                             , p_validate          IN          VARCHAR2
5783                             , p_note_tbl          IN OUT NOCOPY     lease_note_tbl_type
5784                             , x_return_status     OUT  NOCOPY       VARCHAR2
5785                    --         , x_msg_count         OUT         NUMBER
5786                    --         , x_msg_data          OUT         VARCHAR2
5787             )
5788             IS
5789             l_return_status     VARCHAR2(1)                         :=          fnd_api.g_ret_sts_success;
5790 
5791             x_out_tbl           temp_tbl_type;
5792             l_api_name          VARCHAR2(100):='NOTES CREATION';
5793           BEGIN
5794             ----------------------dbms_output.put_line('CREATE NOTE PROCESS STARTED');--Rupak
5795             pvt_debug(g_pkg_name||'-Inside CREATE_NOTE',3);
5796             VALIDATE_NOTE_FOR_CREATE(p_note_tbl                 =>  p_note_tbl
5797                                     ,x_tbl                      =>  x_out_tbl
5798                                     ,x_return_status            =>  x_return_status
5799                                     );
5800                        pvt_debug(g_pkg_name||'-CREATE_NOTE:Cal to VALIDATE_NOTE_FOR_CREATE Status:'||x_return_status,3);
5801              IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
5802                ----------------------dbms_output.put_line('In Create_Note:3');--Rupak
5803                pvt_debug(g_pkg_name||'-CREATE_NOTE:Calling NOTE_INSERT_ROW',3);
5804                 NOTE_INSERT_ROW( p_note_tbl         =>  p_note_tbl
5805                                 ,p_lease_id         =>  p_lease_id
5806                                 ,x_return_status    =>  x_return_status
5807                                 ,p_tbl              =>  x_out_tbl
5808                                 ,p_commit           =>  p_commit
5809                                  );
5810                      pvt_debug(g_pkg_name||'-CREATE_NOTE:Call to NOTE_INSERT_ROW Succesful',3);
5811                   IF(x_return_status = fnd_api.g_ret_sts_error) THEN
5812                      RAISE fnd_api.g_exc_error;
5813                   ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
5814                      RAISE fnd_api.g_exc_unexpected_error;
5815                   END IF;
5816 
5817               ELSE
5818                  ----------------------dbms_output.put_line('In Create_Note:5');--Rupak
5819                   RAISE fnd_api.g_exc_error;
5820              END IF;
5821 
5822              --x_return_status    :=  l_return_status;
5823           EXCEPTION
5824             WHEN fnd_api.g_exc_error THEN
5825               x_return_status :=  fnd_api.g_ret_sts_error;
5826               --------------------dbms_output.put_line('NOTES CREATION FAILED'||SQLERRM); --Rupak
5827             WHEN OTHERS THEN
5828             x_return_status     :=      fnd_api.g_ret_sts_unexp_error;
5829             pvt_debug(g_pkg_name||'-CREATE_NOTE:Exception:NOTE_INSERT_ROW',3);
5830           END CREATE_NOTE;
5831 
5832     PROCEDURE VALIDATE_NOTE_FOR_UPDATE(
5833                                 p_note_tbl      IN OUT NOCOPY lease_note_tbl_type
5834                                ,p_lease_id      PN_LEASES_ALL.LEASE_ID%TYPE
5835                                ,x_tbl           OUT  NOCOPY   temp_tbl_type
5836                                ,x_return_status IN OUT NOCOPY VARCHAR2
5837 
5838         )
5839     IS
5840     l_return_status                             VARCHAR2(1)     := fnd_api.g_ret_sts_success;
5841     l_index                                     BINARY_INTEGER;
5842     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
5843     l_lookup_code                               PN_NOTE_HEADERS.NOTE_TYPE_LOOKUP_CODE%TYPE  := pn_lease_utils.g_pn_miss_char;
5844     l_cur_id                                    NUMBER;
5845     l_tbl_index                                 BINARY_INTEGER;
5846     l_tbl_flag                                  NUMBER ;
5847     l_tbl                                       temp_tbl_type;
5848     l_api_name                                  VARCHAR2(30)  :=  'UPDATE_NOTES';
5849     CURSOR c_note (
5850            l_cur_id NUMBER
5851       )
5852       IS
5853          SELECT note_header_id
5854               , note_date
5855               , last_updated_by
5856               , last_update_date
5857               , last_update_login
5858               , created_by
5859               , creation_date
5860               , note_type_lookup_code
5861               , lease_id
5862               , attribute_category
5863               , attribute1
5864               , attribute2
5865               , attribute3
5866               , attribute4
5867               , attribute5
5868               , attribute6
5869               , attribute7
5870               , attribute8
5871               , attribute9
5872               , attribute10
5873               , attribute11
5874               , attribute12
5875               , attribute13
5876               , attribute14
5877               , attribute15
5878            FROM pn_note_headers
5879           WHERE note_header_id = l_cur_id;
5880 lcu_note_hdr_rec           c_note%ROWTYPE;
5881 BEGIN
5882         l_return_status          := fnd_api.g_ret_sts_success ;
5883          -- --------------------dbms_output.put_line('In Note Validate PROC'||p_note_tbl(1).note_header_id);--Rupak
5884          pvt_debug(g_pkg_name||'-Inside VALIDATE_NOTE_FOR_UPDATE',3);
5885       for l_index IN 1..p_note_tbl.COUNT  --in p_note_tbl.FIRST..p_note_tbl.LAST loop
5886       LOOP
5887         BEGIN
5888                            l_tbl_index :=  l_index;
5889 
5890               ----------------------dbms_output.put_line('In For loop');--Rupak
5891 
5892              IF ( p_note_tbl(l_index).note_header_id IS NULL OR p_note_tbl(l_index).note_header_id = pn_lease_utils.g_pn_miss_num)THEN
5893                   l_tbl_flag  :=  0;
5894                   fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5895                   fnd_message.set_token ('API_NAME', l_api_name);
5896                   fnd_message.set_token ('NULL_PARAM', 'NOTE ID');
5897                   fnd_msg_pub.ADD;
5898                   RAISE fnd_api.g_exc_error;
5899              ELSE
5900                           l_tbl_flag  :=  2;
5901                            pvt_debug(g_pkg_name||'-Validation:VALIDATE_NOTE_FOR_UPDATE',3);
5902                             l_cur_id        :=      p_note_tbl(l_index).note_header_id;
5903                             OPEN c_note(l_cur_id);
5904                             FETCH c_note INTO lcu_note_hdr_rec;
5905 
5906                              IF  lcu_note_hdr_rec.lease_id   <> p_lease_id  THEN
5907                                 l_tbl_flag  :=  0;
5908                                 ----------------------dbms_output.put_line('LEASE ID INVALID');--Rupak
5909                                 pvt_debug(g_pkg_name||'-VALIDATE_NOTE_FOR_UPDATE:Lease ID Invalid',3);
5910                             END IF;
5911                             IF (p_note_tbl(l_index).note_date = pn_lease_utils.g_pn_miss_date) THEN
5912                                 p_note_tbl(l_index).note_date  :=  lcu_note_hdr_rec.note_date;
5913                             ELSIF(p_note_tbl(l_index).note_date IS NULL) THEN
5914                                   l_tbl_flag  :=  0;
5915                                   fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
5916                                   fnd_message.set_token ('API_NAME', l_api_name);
5917                                   fnd_message.set_token ('NULL_PARAM', 'NOTE DATE : NULL');
5918                                   fnd_msg_pub.ADD;
5919                                   RAISE fnd_api.g_exc_error;
5920                             END IF;
5921 
5922                       IF (  (p_note_tbl(l_index).note_type IS NOT NULL AND p_note_tbl(l_index).note_type <> pn_lease_utils.g_pn_miss_char)
5923                           OR(p_note_tbl(l_index).note_type_lookup_code IS NOT NULL AND p_note_tbl(l_index).note_type_lookup_code <> pn_lease_utils.g_pn_miss_char)
5924                          ) THEN
5925                          pn_lease_utils.get_lookup_code(p_parameter_name      =>  l_param_note_type--'NOTE TYPE'
5926                                                       , p_lookup_meaning      =>   p_note_tbl(l_index).note_type
5927                                                       , p_operation           =>  'UPDATE_NOTE'
5928                                                        , p_lookup_type        =>  l_pn_note_type--'PN_NOTE_TYPE'
5929                                                        , x_return_status      =>   x_return_status
5930                                                        , x_lookup_type_code   =>   p_note_tbl(l_index).note_type_lookup_code
5931                                                       );
5932                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
5933                           --p_lease_contacts_tbl (i).error_flag := 'Y';
5934                           l_tbl_flag  :=  0;
5935                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
5936                           fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_pn_note_type));
5937                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_note_tbl(l_index).note_type));
5938                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_note_tbl(l_index).note_type_lookup_code));
5939                           fnd_msg_pub.ADD;
5940                           RAISE fnd_api.g_exc_error;
5941                        ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
5942                           --p_lease_contacts_tbl (i).error_flag := 'Y';
5943                           l_tbl_flag  :=  0;
5944                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
5945                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_note_type,3));
5946                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
5947                           fnd_msg_pub.ADD;
5948                           RAISE fnd_api.g_exc_unexpected_error;
5949                        END IF;
5950                       ELSIF(p_note_tbl(l_index).note_type IS  NULL OR p_note_tbl(l_index).note_type_lookup_code IS NULL) THEN
5951                         p_note_tbl(l_index).note_type_lookup_code := NULL;
5952                       ELSE
5953                          p_note_tbl(l_index).note_type_lookup_code := lcu_note_hdr_rec.note_type_lookup_code;
5954                       END IF;
5955 
5956 
5957 --------------------------------------------------------------------------------------------------------------------------------
5958                              /*IF NOT (       (p_note_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
5959                                         AND (p_note_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
5960                                         AND (p_note_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
5961                                         AND (p_note_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
5962                                         AND (p_note_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
5963                                         AND (p_note_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
5964                                         AND (p_note_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
5965                                         AND (p_note_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
5966                                         AND (p_note_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
5967                                         AND (p_note_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
5968                                         AND (p_note_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
5969                                         AND (p_note_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
5970                                         AND (p_note_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
5971                                         AND (p_note_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
5972                                         AND (p_note_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
5973                                         AND (p_note_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
5974                                 ) THEN*/
5975                                      IF (p_note_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
5976                                         p_note_tbl(l_index).attribute_category  :=      lcu_note_hdr_rec.attribute_category;
5977                                      END IF;
5978                                      IF (p_note_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
5979                                         p_note_tbl(l_index).attribute1          :=      lcu_note_hdr_rec.attribute1;
5980                                      END IF;
5981                                       IF (p_note_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
5982                                         p_note_tbl(l_index).attribute2          :=      lcu_note_hdr_rec.attribute2;
5983                                      END IF;
5984                                       IF (p_note_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
5985                                         p_note_tbl(l_index).attribute3          :=      lcu_note_hdr_rec.attribute3;
5986                                      END IF;
5987                                       IF (p_note_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
5988                                         p_note_tbl(l_index).attribute4          :=      lcu_note_hdr_rec.attribute4;
5989                                      END IF;
5990                                       IF (p_note_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
5991                                         p_note_tbl(l_index).attribute5          :=      lcu_note_hdr_rec.attribute5;
5992                                      END IF;
5993                                       IF (p_note_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
5994                                         p_note_tbl(l_index).attribute6          :=      lcu_note_hdr_rec.attribute6;
5995                                      END IF;
5996                                       IF (p_note_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
5997                                         p_note_tbl(l_index).attribute7          :=      lcu_note_hdr_rec.attribute7;
5998                                      END IF;
5999                                       IF (p_note_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
6000                                         p_note_tbl(l_index).attribute8          :=      lcu_note_hdr_rec.attribute8;
6001                                      END IF;
6002                                       IF (p_note_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
6003                                         p_note_tbl(l_index).attribute9          :=      lcu_note_hdr_rec.attribute9;
6004                                      END IF;
6005                                       IF (p_note_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
6006                                         p_note_tbl(l_index).attribute10          :=      lcu_note_hdr_rec.attribute10;
6007                                      END IF;
6008                                       IF (p_note_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
6009                                         p_note_tbl(l_index).attribute11          :=      lcu_note_hdr_rec.attribute11;
6010                                      END IF;
6011                                       IF (p_note_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
6012                                         p_note_tbl(l_index).attribute12          :=      lcu_note_hdr_rec.attribute12;
6013                                      END IF;
6014                                       IF (p_note_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
6015                                         p_note_tbl(l_index).attribute13          :=      lcu_note_hdr_rec.attribute13;
6016                                      END IF;
6017                                       IF (p_note_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
6018                                         p_note_tbl(l_index).attribute14          :=      lcu_note_hdr_rec.attribute14;
6019                                      END IF;
6020                                       IF (p_note_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
6021                                         p_note_tbl(l_index).attribute15          :=      lcu_note_hdr_rec.attribute15;
6022                                      END IF;
6023                                 PN_LEASE_UTILS.validate_desc_flex (
6024                                                  p_api_name => 'PN_API'--l_api_name_full
6025                                                , p_application_short_name => 'PN'
6026                                                , p_desc_flex_name => 'PN_NOTE_HEADERS'
6027                                                , p_desc_segment1 => p_note_tbl(l_index).attribute1
6028                                                , p_desc_segment2 => p_note_tbl(l_index).attribute2
6029                                                , p_desc_segment3 => p_note_tbl(l_index).attribute3
6030                                                , p_desc_segment4 => p_note_tbl(l_index).attribute4
6031                                                , p_desc_segment5 => p_note_tbl(l_index).attribute5
6032                                                , p_desc_segment6 => p_note_tbl(l_index).attribute6
6033                                                , p_desc_segment7 => p_note_tbl(l_index).attribute7
6034                                                , p_desc_segment8 => p_note_tbl(l_index).attribute8
6035                                                , p_desc_segment9 => p_note_tbl(l_index).attribute9
6036                                                , p_desc_segment10 =>p_note_tbl(l_index).attribute10
6037                                                , p_desc_segment11 =>p_note_tbl(l_index).attribute11
6038                                                , p_desc_segment12 =>p_note_tbl(l_index).attribute12
6039                                                , p_desc_segment13 =>p_note_tbl(l_index).attribute13
6040                                                , p_desc_segment14 =>p_note_tbl(l_index).attribute14
6041                                                , p_desc_segment15 =>p_note_tbl(l_index).attribute15
6042                                                , p_desc_context => p_note_tbl(l_index).attribute_category
6043                                                , p_resp_appl_id => fnd_global.RESP_APPL_ID
6044                                                , p_resp_id => fnd_global.RESP_ID
6045                                                , p_return_status => l_return_status
6046                                                 );
6047                                        ----------------------dbms_output.put_line('dff validated');
6048                                         IF (l_return_status = fnd_api.g_ret_sts_error)
6049                                         THEN
6050                                         l_tbl_flag  :=  0;
6051                                         ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6052                                         THEN
6053                                          l_tbl_flag  :=  0;
6054                                         RAISE fnd_api.g_exc_unexpected_error;
6055                                         END IF;
6056                        -- END IF;
6057                         CLOSE c_note;
6058 
6059                END IF;
6060                          l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
6061         EXCEPTION
6062               WHEN fnd_api.g_exc_error THEN
6063                 ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
6064                   pvt_debug(g_pkg_name||'-VALIDATE_NOTE_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
6065               WHEN OTHERS THEN
6066                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
6067                    pvt_debug(g_pkg_name||'-VALIDATE_NOTE_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
6068             END;
6069             ----------------------dbms_output.put_line('Private Contacts:13');--Rupak
6070          END LOOP;
6071 
6072           --------------------dbms_output.put_line('Outside For Loop');
6073            x_tbl        :=      l_tbl;
6074            x_return_status     :=      fnd_api.g_ret_sts_success;
6075     EXCEPTION
6076         WHEN OTHERS THEN
6077          x_return_status := fnd_api.g_ret_sts_unexp_error;
6078      ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
6079      pvt_debug(g_pkg_name||'-Exception:VALIDATE_NOTE_FOR_UPDATE'||SQLERRM,3);
6080     END VALIDATE_NOTE_FOR_UPDATE;
6081 
6082 
6083  PROCEDURE NOTE_UPDATE_ROW (     p_note_tbl        IN OUT  NOCOPY    lease_note_tbl_type
6084                                 ,p_lease_id        IN           PN_LEASES_ALL.LEASE_ID%TYPE
6085                                 ,x_return_status   OUT   NOCOPY       VARCHAR2
6086                                 ,p_tbl             IN           temp_tbl_type
6087                                 ,p_commit          IN           VARCHAR2
6088                             )
6089     IS
6090                             l_return_status     VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
6091                             l_index             BINARY_INTEGER;
6092                             l_dt_row_id         VARCHAR2(100);
6093                             l_note_detail_id    PN_NOTE_DETAILS.NOTE_DETAIL_ID%TYPE;
6094                             l_err_note_count NUMBER:=0;
6095    l_flag VARCHAR(1) := 'N';
6096     BEGIN
6097        ----------------dbms_output.put_line('IN UPDATE NOTE:0');
6098         pvt_debug(g_pkg_name||'-Inside NOTE_UPDATE_ROW',3);
6099         for l_index in p_note_tbl.FIRST..p_note_tbl.LAST LOOP
6100     BEGIN
6101         ----------------dbms_output.put_line('IN UPDATE NOTE:1'||p_tbl(l_index).temp_flag);
6102            l_flag := 'N';
6103         IF p_tbl(l_index).temp_flag =   2 THEN
6104               pvt_debug(g_pkg_name||'-NOTE_UPDATE_ROW:Calling PN_NOTE_HEADERS_PKG.UPDATE_ROW',3);
6105              pn_note_headers_pkg.update_row (
6106                                       x_note_header_id           => p_note_tbl(l_index).note_header_id
6107                                     , x_lease_id                 => p_lease_id
6108                                     , x_note_type_lookup_code    => p_note_tbl(l_index).note_type_lookup_code
6109                                     , x_note_date                => trunc(p_note_tbl(l_index).note_date)
6110                                     , x_last_update_date         => sysdate
6111                                     , x_last_updated_by          => fnd_global.user_id
6112                                     , x_last_update_login        => fnd_global.user_id
6113                                     , x_attribute_category       => p_note_tbl(l_index).attribute_category
6114                                     , x_attribute1               => p_note_tbl(l_index).attribute1
6115                                     , x_attribute2               => p_note_tbl(l_index).attribute2
6116                                     , x_attribute3               => p_note_tbl(l_index).attribute3
6117                                     , x_attribute4               => p_note_tbl(l_index).attribute4
6118                                     , x_attribute5               => p_note_tbl(l_index).attribute5
6119                                     , x_attribute6               => p_note_tbl(l_index).attribute6
6120                                     , x_attribute7               => p_note_tbl(l_index).attribute7
6121                                     , x_attribute8               => p_note_tbl(l_index).attribute8
6122                                     , x_attribute9               => p_note_tbl(l_index).attribute9
6123                                     , x_attribute10              => p_note_tbl(l_index).attribute10
6124                                     , x_attribute11              => p_note_tbl(l_index).attribute11
6125                                     , x_attribute12              => p_note_tbl(l_index).attribute12
6126                                     , x_attribute13              => p_note_tbl(l_index).attribute13
6127                                     , x_attribute14              => p_note_tbl(l_index).attribute14
6128                                     , x_attribute15              => p_note_tbl(l_index).attribute15
6129                                      );
6130                                --x_return_status:=fnd_api.g_ret_sts_success;
6131 
6132                                l_flag := 'Y';
6133                                      ----------------------dbms_output.put_line('NOTE  HEADER UPDATED WITH NOTE HEADER ID : '||p_note_tbl(l_index).note_header_id );--Rupak
6134                       pvt_debug(g_pkg_name||'-NOTE_UPDATE_ROW:Calling PN_NOTE_HEADERS_PKG.UPDATE_ROW Succesful',3);
6135                       ----------------dbms_output.put_line('Note Details:123'||p_note_tbl(l_index).note_detail_id);
6136                IF (p_note_tbl(l_index).note_detail_id IS NULL OR p_note_tbl(l_index).note_detail_id = pn_lease_utils.g_pn_miss_num) THEN
6137                    BEGIN
6138                       SELECT note_detail_id
6139                       INTO   p_note_tbl(l_index).note_detail_id
6140                       FROM   pn_note_details
6141                       WHERE  note_header_id = p_note_tbl(l_index).note_header_id
6142                       AND    LANGUAGE       = 'US';--userenv('lang');
6143                       ----------------dbms_output.put_line('Note Details:'||p_note_tbl(l_index).note_detail_id);
6144                    EXCEPTION
6145                      WHEN NO_DATA_FOUND THEN
6146                        p_note_tbl(l_index).note_detail_id:= NULL;
6147                      WHEN OTHERS THEN
6148                        p_note_tbl(l_index).note_detail_id:= NULL;
6149                    END;
6150               END IF;
6151                 pvt_debug(g_pkg_name||'-NOTE_UPDATE_ROW:NOTE_DETAIL_ID'||p_note_tbl(l_index).note_detail_id,3);
6152                     IF  (( p_note_tbl(l_index).note_detail_id IS NOT NULL AND p_note_tbl(l_index).note_detail_id <> pn_lease_utils.g_pn_miss_num )
6153                        OR(p_note_tbl(l_index).text IS NOT NULL OR  p_note_tbl(l_index).text <> pn_lease_utils.g_pn_miss_char )
6154                        )
6155                     THEN
6156                             ----------------------dbms_output.put_line('NOTE DETAIL update');--Rupak
6157                                 pn_note_details_pkg.update_row (
6158                                               x_note_detail_id      =>      p_note_tbl(l_index).note_detail_id
6159                                             , x_text                =>      p_note_tbl(l_index).text
6160                                             , x_last_update_date    =>      sysdate
6161                                             , x_last_updated_by     =>      fnd_global.user_id
6162                                             , x_last_update_login   =>      fnd_global.user_id
6163                                                 );
6164 
6165                                       IF (l_flag = 'Y') THEN
6166                                         x_return_status:=fnd_api.g_ret_sts_success;
6167                                       END IF;
6168 
6169                             pvt_debug(g_pkg_name||'-NOTE_UPDATE_ROW:NOTE DETAIL UPDATED WITH NOTE DETAIL ID'||p_note_tbl(l_index).note_detail_id,3);
6170                             ----------------------dbms_output.put_line('NOTE DETAIL UPDATED WITH NOTE DETAIL ID : '||p_note_tbl(l_index).note_detail_id);--Rupak
6171                     ELSIF(( p_note_tbl(l_index).note_detail_id IS NULL AND p_note_tbl(l_index).text is NOT NULL)
6172                         OR (p_note_tbl(l_index).note_detail_id = pn_lease_utils.g_pn_miss_num AND p_note_tbl(l_index).text <> pn_lease_utils.g_pn_miss_char )
6173                          )
6174                     THEN
6175                                               l_note_detail_id      :=  NULL;
6176                          ----------------------dbms_output.put_line('NOTE DETAIL INSERT:');--Rupak
6177                             pn_note_details_pkg.insert_row (
6178                                       x_rowid                         => l_dt_row_id
6179                                     , x_note_detail_id                => l_note_detail_id
6180                                     , x_note_header_id                => p_note_tbl(l_index).note_header_id
6181                                     , x_text                          => p_note_tbl(l_index).text
6182                                     , x_creation_date                 => sysdate
6183                                     , x_created_by                    => fnd_global.user_id
6184                                     , x_last_update_date              => sysdate
6185                                     , x_last_updated_by               => fnd_global.user_id
6186                                     , x_last_update_login             => fnd_global.user_id
6187                                   );
6188 
6189                                   IF (l_flag = 'Y') THEN
6190                                         x_return_status:=fnd_api.g_ret_sts_success;
6191                                       END IF;
6192                              ----------------------dbms_output.put_line('NOTE DETAIL CREATED WITH NOTE DETAIL ID :'||l_note_detail_id);--Rupak
6193                                pvt_debug(g_pkg_name||'-NOTE_UPDATE_ROW:PN_NOTE_DETAILS_PKG.INSERT_ROW Succesful'||l_note_detail_id,3);
6194                     END IF;
6195             END IF;
6196     EXCEPTION
6197        WHEN OTHERS THEN
6198          l_err_note_count := l_err_note_count+1;
6199     END;
6200     END loop;
6201 
6202             IF (l_err_note_count = 0) THEN
6203             x_return_status := fnd_api.g_ret_sts_success;
6204             ELSE
6205              x_return_status := fnd_api.g_ret_sts_error;
6206             END IF;
6207     EXCEPTION
6208     WHEN OTHERS THEN
6209      x_return_status := fnd_api.g_ret_sts_unexp_error;
6210     ------------------dbms_output.put_line('NOTE UPDATION FAILED'||SQLERRM);
6211     END NOTE_UPDATE_ROW;
6212 
6213     PROCEDURE UPDATE_NOTE (
6214                           p_lease_id          IN          PN_LEASES_ALL.LEASE_ID%TYPE
6215                         , p_commit            IN          VARCHAR2
6216                         , p_validate          IN          VARCHAR2
6217                         , p_note_tbl          IN OUT NOCOPY     lease_note_tbl_type
6218                         , x_return_status     OUT  NOCOPY       VARCHAR2
6219                     --   , x_msg_count         OUT         NUMBER
6220                     --   , x_msg_data          OUT         VARCHAR2
6221                 )
6222         IS
6223             l_return_status                             VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
6224         --  x_msg_count                                 NUMBER                                      ;
6225           -- x_msg_data                                  VARCHAR2(2000)                              ;
6226             x_out_tbl                                   temp_tbl_type;
6227             l_api_name                                  VARCHAR2(30)                        :=  'UPDATE NOTES';
6228 
6229             p_note_tbl_create      lease_note_tbl_type;
6230             p_note_tbl_update      lease_note_tbl_type;
6231             m NUMBER;
6232             n NUMBER;
6233             l_err_notes_cnt NUMBER:=0;
6234     BEGIN
6235       x_return_status  :=    fnd_api.g_ret_sts_success;
6236        pvt_debug(g_pkg_name||'-Inside UPDATE_NOTE',3);
6237 
6238             m:=1;
6239             n:=1;
6240            FOR i IN 1..p_note_tbl.COUNT
6241            LOOP
6242              IF(p_note_tbl(i).note_header_id IS NOT NULL AND p_note_tbl(i).note_header_id <> pn_lease_utils.g_pn_miss_num) THEN
6243 
6244                   --p_note_tbl(i).p_null_id := 'N';
6245                   p_note_tbl_update(n):=p_note_tbl(i);
6246                   n:=n+1;
6247              ELSE
6248 
6249                 --p_note_tbl(i).p_null_id := 'Y';
6250                 p_note_tbl_create(m):=p_note_tbl(i);
6251                 m:=m+1;
6252              END IF;
6253            END LOOP;
6254   IF(p_note_tbl_update.COUNT > 0) THEN
6255     VALIDATE_NOTE_FOR_UPDATE(p_note_tbl =>      p_note_tbl_update
6256                         ,p_lease_id     =>      p_lease_id
6257                         ,x_tbl          =>      x_out_tbl
6258                         ,x_return_status    =>  x_return_status
6259                         );
6260           ----------------dbms_output.put_line('In UPDATE_NOTE:0'||x_return_status);--OOPS
6261            pvt_debug(g_pkg_name||'-UPDATE_NOTE:VALIDATE_NOTE_FOR_UPDATE Return Status:'||x_return_status,3);
6262               IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
6263                 --------------------dbms_output.put_line('In Note Update:2 IN IF'||p_note_tbl(1).note_header_id);--Rupak
6264                 NOTE_UPDATE_ROW(
6265                 p_note_tbl                     =>          p_note_tbl_update
6266               , p_lease_id                     =>          p_lease_id
6267               , x_return_status                =>          x_return_status
6268               , p_tbl                          =>          x_out_tbl
6269               , p_commit                       =>          p_commit
6270                    );
6271                 pvt_debug(g_pkg_name||'-UPDATE_NOTE:NOTE_UPDATE_ROW Return Status:'||x_return_status,3);
6272             ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6273            --x_return_status := fnd_api.g_ret_sts_unexp_error;
6274                 l_err_notes_cnt := l_err_notes_cnt + 1;
6275             ELSE
6276           --x_return_status := fnd_api.g_ret_sts_error;
6277                l_err_notes_cnt := l_err_notes_cnt + 1;
6278             END IF;
6279    END IF;
6280 
6281    IF(p_note_tbl_create.COUNT > 0) THEN
6282 
6283             VALIDATE_NOTE_FOR_CREATE(p_note_tbl                 =>  p_note_tbl_create
6284                                     ,x_tbl                      =>  x_out_tbl
6285                                     ,x_return_status            =>  x_return_status
6286                                     );
6287                        pvt_debug(g_pkg_name||'-CREATE_NOTE:Cal to VALIDATE_NOTE_FOR_CREATE Status:'||x_return_status,3);
6288              IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
6289                ----------------------dbms_output.put_line('In Create_Note:3');--Rupak
6290                pvt_debug(g_pkg_name||'-CREATE_NOTE:Calling NOTE_INSERT_ROW',3);
6291                 NOTE_INSERT_ROW( p_note_tbl         =>  p_note_tbl_create
6292                                 ,p_lease_id         =>  p_lease_id
6293                                 ,x_return_status    =>  x_return_status
6294                                 ,p_tbl              =>  x_out_tbl
6295                                 ,p_commit           =>  p_commit
6296                                  );
6297                      pvt_debug(g_pkg_name||'-CREATE_NOTE:Call to NOTE_INSERT_ROW Succesful',3);
6298                   IF(x_return_status = fnd_api.g_ret_sts_error) THEN
6299                      l_err_notes_cnt := l_err_notes_cnt + 1;
6300                   ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
6301                      l_err_notes_cnt := l_err_notes_cnt + 1;
6302                   END IF;
6303 
6304             ELSE
6305                  ----------------------dbms_output.put_line('In Create_Note:5');--Rupak
6306                   l_err_notes_cnt := l_err_notes_cnt + 1;
6307             END IF;
6308    END IF;
6309 
6310         IF(l_err_notes_cnt = 0) THEN
6311           x_return_status := fnd_api.g_ret_sts_success;
6312         ELSE
6313           x_return_status := fnd_api.g_ret_sts_error;
6314         END IF;
6315 
6316     EXCEPTION
6317     WHEN fnd_api.g_exc_error THEN
6318         x_return_status     :=  fnd_api.g_ret_sts_error;
6319     WHEN OTHERS THEN
6320          x_return_status     :=  fnd_api.g_ret_sts_unexp_error;
6321     ----------------------dbms_output.put_line ('NOTES UPDATION FAILED');--Rupak
6322         ----------------dbms_output.put_line('In UPDATE_NOTE:2'||x_return_status||SQLERRM);--OOPS
6323          pvt_debug(g_pkg_name||'-UPDATE_NOTE:Unexpected Exception:'||SQLERRM,3);
6324     END UPDATE_NOTE;
6325 
6326 
6327     PROCEDURE VALIDATE_RIGHT_FOR_CREATE (p_right_tbl IN OUT NOCOPY lease_right_tbl_type
6328                                         ,x_tbl       OUT  NOCOPY  temp_tbl_type
6329                                         ,x_return_status    IN OUT NOCOPY VARCHAR2
6330     )IS
6331     l_return_status                             VARCHAR2(1) := fnd_api.g_ret_sts_success;
6332     l_index                                     BINARY_INTEGER;
6333     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
6334     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
6335     l_cur_id                                    NUMBER;
6336     l_tbl_index                                 BINARY_INTEGER;
6337     l_tbl_flag                                  NUMBER                                      :=  1;
6338     l_tbl                                       temp_tbl_type;
6339     l_api_name                                  VARCHAR2(30)    :=  'CREATE RIGHT';
6340     BEGIN
6341    ----------------------dbms_output.put_line('VALIDATIONS FOR RIGHT CREATION STARTED');
6342         pvt_debug(g_pkg_name||'-Inside VALIDATE_RIGHT_FOR_CREATE',3);
6343         for l_index in p_right_tbl.FIRST.. p_right_tbl.LAST   LOOP
6344            BEGIN
6345                             INITIALIZE_RIGHTS_REC(p_right_tbl(l_index),'CREATE_RIGHTS',x_return_status);
6346                             l_tbl_index      :=      l_index;
6347 -------------------------------------------------------------------------------------------------
6348                  IF (  (p_right_tbl(l_index).right_type IS NOT NULL AND p_right_tbl(l_index).right_type <> pn_lease_utils.g_pn_miss_char)
6349                      OR(p_right_tbl(l_index).right_type_code IS NOT NULL AND p_right_tbl(l_index).right_type_code <> pn_lease_utils.g_pn_miss_char)
6350                     ) THEN
6351                             pn_lease_utils.get_lookup_code(
6352                                                            p_parameter_name     =>       l_param_right_type
6353                                                          , p_lookup_meaning     =>       p_right_tbl(l_index).right_type
6354                                                          , p_operation          =>       'CREATE_RIGHT'
6355                                                          , p_lookup_type        =>       l_pn_rights_type
6356                                                          , x_return_status      =>       x_return_status
6357                                                          , x_lookup_type_code   =>       p_right_tbl(l_index).right_type_code
6358                                                         );
6359                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
6360                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
6361                           fnd_message.set_token ('LOOKUP_TYPE', l_pn_rights_type);
6362                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_right_tbl(l_index).right_type));
6363                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode( p_right_tbl(l_index).right_type_code));
6364                           fnd_msg_pub.ADD;
6365                           RAISE fnd_api.g_exc_error;
6366                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6367                           --l_error_flag:='Y';
6368                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6369                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_right_type,3));
6370                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
6371                           fnd_msg_pub.ADD;
6372                           RAISE fnd_api.g_exc_unexpected_error;
6373                       END IF;
6374                  ELSE
6375                    fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6376                    fnd_message.set_token ('API_NAME', l_api_name);
6377                    fnd_message.set_token ('NULL_PARAM', l_pn_rights_type);
6378                    fnd_msg_pub.ADD;
6379                    RAISE fnd_api.g_exc_error;
6380                  END IF;
6381 
6382 
6383 
6384 
6385 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6386 
6387                     IF (  (p_right_tbl(l_index).right_status IS NOT NULL AND p_right_tbl(l_index).right_status <> pn_lease_utils.g_pn_miss_char)
6388                      OR(p_right_tbl(l_index).right_status_code IS NOT NULL AND p_right_tbl(l_index).right_status_code <> pn_lease_utils.g_pn_miss_char)
6389                     ) THEN
6390                             pn_lease_utils.get_lookup_code(
6391                                                            p_parameter_name     =>       l_param_right_status
6392                                                          , p_lookup_meaning     =>       p_right_tbl(l_index).right_status
6393                                                          , p_operation          =>       'CREATE_RIGHT'
6394                                                          , p_lookup_type        =>       l_pn_right_status_type
6395                                                          , x_return_status      =>       x_return_status
6396                                                          , x_lookup_type_code   =>       p_right_tbl(l_index).right_status_code
6397                                                         );
6398                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
6399                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
6400                           fnd_message.set_token ('LOOKUP_TYPE', l_pn_right_status_type);
6401                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_right_tbl(l_index).right_status));
6402                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_right_tbl(l_index).right_status_code));
6403                           fnd_msg_pub.ADD;
6404                           RAISE fnd_api.g_exc_error;
6405                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6406                           --l_error_flag:='Y';
6407                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6408                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_right_status,3));
6409                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
6410                           fnd_msg_pub.ADD;
6411                           RAISE fnd_api.g_exc_unexpected_error;
6412                       END IF;
6413                  ELSE
6414                    fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6415                    fnd_message.set_token ('API_NAME', l_api_name);
6416                    fnd_message.set_token ('NULL_PARAM', l_pn_right_status_type);
6417                    fnd_msg_pub.ADD;
6418                    RAISE fnd_api.g_exc_error;
6419                  END IF;
6420 
6421 
6422 
6423 
6424 
6425                   --  dff validations
6426 
6427          IF (get_attribute_status('PN_RIGHTS') > 0) THEN
6428              /*get_attribute_mandatory_status('PN_RIGHTS'
6429                                              ,p_right_tbl(l_index).attribute1
6430                                              ,p_right_tbl(l_index).attribute2
6431                                              ,p_right_tbl(l_index).attribute3
6432                                              ,p_right_tbl(l_index).attribute4
6433                                              ,p_right_tbl(l_index).attribute5
6434                                              ,p_right_tbl(l_index).attribute6
6435                                              ,p_right_tbl(l_index).attribute7
6436                                              ,p_right_tbl(l_index).attribute8
6437                                              ,p_right_tbl(l_index).attribute9
6438                                              ,p_right_tbl(l_index).attribute10
6439                                              ,p_right_tbl(l_index).attribute11
6440                                              ,p_right_tbl(l_index).attribute12
6441                                              ,p_right_tbl(l_index).attribute13
6442                                              ,p_right_tbl(l_index).attribute14
6443                                              ,p_right_tbl(l_index).attribute15
6444                                              ,x_return_status
6445                                             );
6446           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
6447               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6448               fnd_message.set_token ('API_NAME', l_api_name);
6449               fnd_message.set_token ('NULL_PARAM','Required attribute in Rights is NULL');
6450               fnd_msg_pub.ADD;
6451               RAISE fnd_api.g_exc_error;
6452           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
6453               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6454               fnd_message.set_token ('API_NAME', l_api_name);
6455               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Rights is NULL');
6456               fnd_msg_pub.ADD;
6457               RAISE fnd_api.g_exc_unexpected_error;
6458           ELSE*/
6459           IF NOT ((p_right_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute_category IS NULL)
6460                                         AND (p_right_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute1 IS NULL)
6461                                         AND (p_right_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute2 IS NULL)
6462                                         AND (p_right_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute3 IS NULL)
6463                                         AND (p_right_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute4 IS NULL)
6464                                         AND (p_right_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute5 IS NULL)
6465                                         AND (p_right_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute6 IS NULL)
6466                                         AND (p_right_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute7 IS NULL)
6467                                         AND (p_right_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute8 IS NULL)
6468                                         AND (p_right_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute9 IS NULL)
6469                                         AND (p_right_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute10 IS NULL)
6470                                         AND (p_right_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute11 IS NULL)
6471                                         AND (p_right_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute12 IS NULL)
6472                                         AND (p_right_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute13 IS NULL)
6473                                         AND (p_right_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute14 IS NULL)
6474                                         AND (p_right_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char OR p_right_tbl(l_index).attribute15 IS NULL)
6475                                 ) THEN
6476                                 PN_LEASE_UTILS.validate_desc_flex (
6477                                                  p_api_name => 'PN_API'--l_api_name_full
6478                                                , p_application_short_name => 'PN'
6479                                                , p_desc_flex_name => 'PN_RIGHTS'
6480                                                , p_desc_segment1 => p_right_tbl(l_index).attribute1
6481                                                , p_desc_segment2 => p_right_tbl(l_index).attribute2
6482                                                , p_desc_segment3 => p_right_tbl(l_index).attribute3
6483                                                , p_desc_segment4 => p_right_tbl(l_index).attribute4
6484                                                , p_desc_segment5 => p_right_tbl(l_index).attribute5
6485                                                , p_desc_segment6 => p_right_tbl(l_index).attribute6
6486                                                , p_desc_segment7 => p_right_tbl(l_index).attribute7
6487                                                , p_desc_segment8 => p_right_tbl(l_index).attribute8
6488                                                , p_desc_segment9 => p_right_tbl(l_index).attribute9
6489                                                , p_desc_segment10 =>p_right_tbl(l_index).attribute10
6490                                                , p_desc_segment11 =>p_right_tbl(l_index).attribute11
6491                                                , p_desc_segment12 =>p_right_tbl(l_index).attribute12
6492                                                , p_desc_segment13 =>p_right_tbl(l_index).attribute13
6493                                                , p_desc_segment14 =>p_right_tbl(l_index).attribute14
6494                                                , p_desc_segment15 =>p_right_tbl(l_index).attribute15
6495                                                , p_desc_context   => p_right_tbl(l_index).attribute_category
6496                                                , p_resp_appl_id   => fnd_global.RESP_APPL_ID
6497                                                , p_resp_id        => fnd_global.RESP_ID
6498                                                , p_return_status  => x_return_status
6499                                                 );
6500                                         IF (x_return_status = fnd_api.g_ret_sts_error)
6501                                         THEN
6502                                             l_tbl_flag  :=  0;
6503                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6504                                             fnd_message.set_token ('COLUMN', 'PN_RIGHTS_DESC_FIELDS');
6505                                             fnd_message.set_token ('P_TEXT', 'PN_RIGHTS'|| '-'|| SQLERRM);
6506                                             fnd_msg_pub.ADD;
6507                                             RAISE fnd_api.g_exc_error;
6508                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
6509                                         THEN
6510                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6511                                             fnd_message.set_token ('COLUMN', 'PN_RIGHTS_DESC_FIELDS');
6512                                             fnd_message.set_token ('P_TEXT', 'PN_RIGHTS'|| '-'|| SQLERRM);
6513                                             fnd_msg_pub.ADD;
6514                                             RAISE fnd_api.g_exc_unexpected_error;
6515                                         END IF;
6516                    END IF;
6517               END IF;
6518                             l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
6519                     EXCEPTION
6520                         WHEN fnd_api.g_exc_error THEN
6521                             pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
6522                         WHEN OTHERS THEN
6523                             pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM,3);
6524                     END;
6525                  END LOOP;
6526                        ----------------------dbms_output.put_line('VALIDATIONS FOR RIGHTS CREATION COMPLETED');
6527         x_tbl       :=      l_tbl;
6528         x_return_status :=  fnd_api.g_ret_sts_success;
6529 
6530     EXCEPTION
6531     WHEN OTHERS THEN
6532       x_return_status := fnd_api.g_ret_sts_unexp_error;
6533       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
6534       pvt_debug(g_pkg_name||'-VALIDATE_RIGHT_FOR_CREATE:Exception'||SQLERRM,3);
6535     END VALIDATE_RIGHT_FOR_CREATE;
6536 
6537     PROCEDURE RIGHT_INSERT_ROW(p_right_tbl        IN OUT  NOCOPY     lease_right_tbl_type
6538                             , p_lease_id          IN           PN_LEASES_ALL.lease_id%type
6539                             , p_lease_change_id   IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
6540                             , x_return_status     OUT  NOCOPY        VARCHAR2
6541                             , p_tbl               IN           temp_tbl_type
6542                             , p_commit            IN           VARCHAR2
6543                              )
6544         IS
6545         l_index                                 BINARY_INTEGER;
6546         t_index                                 BINARY_INTEGER;
6547         l_row_id                                VARCHAR2(100)            ;
6548         l_right_id                              PN_RIGHTS_ALL.RIGHT_ID%TYPE;
6549     BEGIN
6550       ----------------------dbms_output.put_line('IN INSERT PROCEDURE FOR RIGHTS');--Rupak
6551         pvt_debug(g_pkg_name||'-Inside RIGHT_INSERT_ROW',3);
6552             for l_index in p_right_tbl.FIRST..p_right_tbl.LAST loop
6553                        -- IF  p_tbl(l_index).temp_flag = 1 THEN
6554                      ----------------------dbms_output.put_line('INSERT PROCEDURE FOR RIGHTS  IN IF :RECORD   :'||l_index||'  STARTED');--Rupak
6555                         l_right_id      :=  NULL;
6556                BEGIN
6557                  pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW:Calling INITIALIZE_RIGHTS_REC',3);
6558        INITIALIZE_RIGHTS_REC( p_right_rec => p_right_tbl(l_index)
6559                             , p_lease_context   => 'CREATE_RIGHTS'
6560                             , x_return_status   => x_return_status
6561                             );
6562                   pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW:Calling PN_RIGHTS_PKG.INSERT_ROW',3);
6563                   pn_rights_pkg.insert_row(
6564                          x_rowid                       =>   l_row_id
6565                        , x_right_id                    =>   l_right_id
6566                        , x_right_num                   =>   p_right_tbl(l_index).right_num
6567                        , x_lease_id                    =>   p_lease_id
6568                        , x_lease_change_id             =>   p_lease_change_id
6569                        , x_right_type_code             =>   p_right_tbl(l_index).right_type_code
6570                        , x_right_status_code           =>   p_right_tbl(l_index).right_status_code
6571                        , x_right_reference             =>   p_right_tbl(l_index).right_reference
6572                        , x_start_date                  =>   null
6573                        , x_expiration_date             =>   null
6574                        , x_right_comments              =>   p_right_tbl(l_index).right_comments
6575                        , x_attribute_category          =>   p_right_tbl(l_index).attribute_category
6576                        , x_attribute1                  =>   p_right_tbl(l_index).attribute1
6577                        , x_attribute2                  =>   p_right_tbl(l_index).attribute2
6578                        , x_attribute3                  =>   p_right_tbl(l_index).attribute3
6579                        , x_attribute4                  =>   p_right_tbl(l_index).attribute4
6580                        , x_attribute5                  =>   p_right_tbl(l_index).attribute5
6581                        , x_attribute6                  =>   p_right_tbl(l_index).attribute6
6582                        , x_attribute7                  =>   p_right_tbl(l_index).attribute7
6583                        , x_attribute8                  =>   p_right_tbl(l_index).attribute8
6584                        , x_attribute9                  =>   p_right_tbl(l_index).attribute9
6585                        , x_attribute10                 =>   p_right_tbl(l_index).attribute10
6586                        , x_attribute11                 =>   p_right_tbl(l_index).attribute11
6587                        , x_attribute12                 =>   p_right_tbl(l_index).attribute12
6588                        , x_attribute13                 =>   p_right_tbl(l_index).attribute13
6589                        , x_attribute14                 =>   p_right_tbl(l_index).attribute14
6590                        , x_attribute15                 =>   p_right_tbl(l_index).attribute15
6591                        , x_creation_date               =>   sysdate
6592                        , x_created_by                  =>   fnd_global.user_id
6593                        , x_last_update_date            =>   sysdate
6594                        , x_last_updated_by             =>   fnd_global.user_id
6595                        , x_last_update_login           =>   fnd_global.user_id
6596                        , x_org_id                      =>   fnd_global.org_id
6597                      );
6598 
6599                      ----------------------dbms_output.put_line('RECORD FOR RIGHTS CREATED WITH RIGHT ID:  '|| l_right_id);--Rupak
6600                      pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW:PN_RIGHTS_PKG.INSERT_ROW Successful',3);
6601                      p_right_tbl(l_index).right_id  :=  l_right_id;
6602            EXCEPTION
6603              WHEN OTHERS THEN
6604                 --NULL
6605                 ----------------------dbms_output.put_line('Exception In Insert RIGHTS'||SQLERRM);
6606                 pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW:PN_RIGHTS_PKG.INSERT_ROW:Exception'||SQLERRM,3);
6607             END;
6608                 -- END IF;
6609          END loop;
6610 
6611          x_return_status    :=  fnd_api.g_ret_sts_success;
6612          ----------------------dbms_output.put_line('INSERT OF RIGHTS COMPLETED');
6613          p_right_tbl    :=  p_right_tbl;
6614 
6615         EXCEPTION
6616             WHEN OTHERS THEN
6617             x_return_status := fnd_api.g_ret_sts_unexp_error;
6618             ----------------------dbms_output.put_line('INSERT PROCEDURE FAILED FOR RIGHTS CREATION') ;
6619             ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
6620              pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW::Exception'||SQLERRM,3);
6621      END RIGHT_INSERT_ROW;
6622 
6623     PROCEDURE CREATE_RIGHT (
6624                           p_lease_id          IN          PN_LEASES_ALL.lease_id%type
6625                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.lease_change_id%type
6626                         , p_commit            IN          VARCHAR2
6627                         , p_validate          IN          VARCHAR2
6628                         , p_right_tbl         IN OUT  NOCOPY    lease_right_tbl_type
6629                         , x_return_status     OUT    NOCOPY     VARCHAR2
6630                    --     , x_msg_count         OUT         NUMBER
6631                    --     , x_msg_data          OUT         VARCHAR2
6632     )
6633     IS
6634         l_return_status     VARCHAR2(1) :=  fnd_api.g_ret_sts_success;
6635         x_out_tbl           temp_tbl_type;
6636     BEGIN
6637         ----------------------dbms_output.put_line('CREATION OF RIGHT PROCESS STARTED');--Rupak
6638         pvt_debug(g_pkg_name||'-Inside CREATE_RIGHT',3);
6639         VALIDATE_RIGHT_FOR_CREATE(p_right_tbl       =>  p_right_tbl
6640                                 ,x_tbl              =>  x_out_tbl
6641                                 ,x_return_status    =>  x_return_status
6642                                 );
6643          IF NVL(p_validate,'F') <>'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
6644             RIGHT_INSERT_ROW(p_right_tbl            =>  p_right_tbl
6645                             ,p_lease_id             =>  p_lease_id
6646                             ,p_lease_change_id      =>  p_lease_change_id
6647                             ,x_return_status        =>  x_return_status
6648                             ,p_tbl                  =>  x_out_tbl
6649                             ,p_commit               =>  p_commit
6650                             );
6651               pvt_debug(g_pkg_name||'-CREATE_RIGHT:RIGHT_INSERT_ROW Return Status:'||l_return_status,3);
6652         ELSE
6653            RAISE fnd_api.g_exc_error;
6654         END IF;
6655 
6656         --x_return_status :=  l_return_status;
6657         ----------------------dbms_output.put_line('CREATION OF RIGHT PROCESS COMPLETED');
6658         EXCEPTION
6659         WHEN OTHERS THEN
6660         x_return_status :=  fnd_api.g_ret_sts_unexp_error;
6661         ----------------------dbms_output.put_line('CREATION OF RIGHTS FAILED');
6662         pvt_debug(g_pkg_name||'-CREATE_RIGHT:Exception'||SQLERRM,3);
6663     END CREATE_RIGHT;
6664 
6665 
6666 
6667      PROCEDURE VALIDATE_RIGHT_FOR_UPDATE(
6668                                 p_right_tbl     IN OUT NOCOPY lease_right_tbl_type
6669                                ,p_lease_id      IN PN_LEASES_ALL.LEASE_ID%TYPE
6670                                ,p_lease_change_id IN PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
6671                                ,x_tbl           OUT  NOCOPY   temp_tbl_type
6672                                ,x_return_status IN OUT NOCOPY VARCHAR2
6673                                ,p_commit        IN      VARCHAR2
6674         )
6675     IS
6676     l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
6677     l_index                                     BINARY_INTEGER;
6678     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
6679     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
6680     l_cur_id                                    NUMBER;
6681     l_tbl_index                                 BINARY_INTEGER;
6682     l_tbl_flag                                  NUMBER                                      ;
6683     l_tbl                                       temp_tbl_type;
6684     l_api_name                                  VARCHAR2(30)                    :=      'UPDATE_RIGHTS';
6685     CURSOR c_right (
6686            p_right_id NUMBER
6687       )
6688       IS
6689          SELECT right_id
6690               , lease_id
6691               , lease_change_id
6692               , right_num
6693               , right_type_code
6694               , right_status_code
6695               , right_reference
6696               , right_comments
6697               , attribute_category
6698               , attribute1
6699               , attribute2
6700               , attribute3
6701               , attribute4
6702               , attribute5
6703               , attribute6
6704               , attribute7
6705               , attribute8
6706               , attribute9
6707               , attribute10
6708               , attribute11
6709               , attribute12
6710               , attribute13
6711               , attribute14
6712               , attribute15
6713               , org_id
6714            FROM pn_rights_all
6715           WHERE right_id = p_right_id;
6716         lcu_right_rec           c_right%ROWTYPE;
6717     BEGIN
6718                     l_return_status          := fnd_api.g_ret_sts_success ;
6719 
6720              FOR l_index in p_right_tbl.FIRST..p_right_tbl.LAST LOOP
6721              BEGIN
6722                             l_tbl_index          :=              l_index;
6723                   IF (p_right_tbl(l_index).right_id IS NULL OR p_right_tbl(l_index).right_id = pn_lease_utils.g_pn_miss_num) THEN
6724                               l_tbl_flag      :=      1;
6725                               pvt_debug(g_pkg_name||'-Inside VALIDATE_RIGHT_FOR_UPDATE',3);
6726                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6727                               fnd_message.set_token ('API_NAME', l_api_name);
6728                               fnd_message.set_token ('NULL_PARAM', 'RIGHT ID IS NULL');
6729                               fnd_msg_pub.ADD;
6730                               RAISE fnd_api.g_exc_error;
6731                    ELSE
6732                         --------------------dbms_output.put_line ('VALIDATIONS FOR RIGHT UPDATE STARTEDIN ELSE');--Rupak
6733                           pvt_debug(g_pkg_name||'-VALIDATE_RIGHT_FOR_UPDATE:ELSE Part',3);
6734                             l_tbl_flag       :=      2;
6735                             l_cur_id        :=      p_right_tbl(l_index).right_id;
6736 
6737                             OPEN c_right(l_cur_id);
6738                             --------------------dbms_output.put_line('cursor opened for update');
6739                             FETCH c_right INTO lcu_right_rec;
6740 
6741                             /*IF ( p_right_tbl(l_index).right_num IS NOT NULL AND p_right_tbl(l_index).right_num <> pn_lease_utils.g_pn_miss_num)
6742                               THEN
6743                                IF p_right_tbl(l_index).right_num  <>  lcu_right_rec.right_num THEN
6744                                  --------------------dbms_output.put_line ('right num :' ||p_right_tbl(l_index).right_num );--Rupak
6745                                  l_tbl_flag   :=  0;
6746                                END IF;
6747                             ELSE*/
6748                             IF (p_right_tbl(l_index).right_num = pn_lease_utils.g_pn_miss_num) THEN
6749                               p_right_tbl(l_index).right_num  :=  lcu_right_rec.right_num;
6750                             END IF;
6751 
6752                             IF (p_right_tbl(l_index).right_reference = pn_lease_utils.g_pn_miss_char)THEN
6753                                 p_right_tbl(l_index).right_reference  :=  lcu_right_rec.right_reference;
6754                             END IF;
6755 
6756                             IF (p_right_tbl(l_index).right_comments = pn_lease_utils.g_pn_miss_char) THEN
6757                                   p_right_tbl(l_index).right_comments  :=  lcu_right_rec.right_comments;
6758                             END IF;
6759 
6760 
6761 
6762 
6763                  IF (  (p_right_tbl(l_index).right_type IS NOT NULL AND p_right_tbl(l_index).right_type <> pn_lease_utils.g_pn_miss_char)
6764                      OR(p_right_tbl(l_index).right_type_code IS NOT NULL AND p_right_tbl(l_index).right_type_code <> pn_lease_utils.g_pn_miss_char)
6765                     ) THEN
6766                             pn_lease_utils.get_lookup_code(
6767                                                            p_parameter_name     =>       l_param_right_type
6768                                                          , p_lookup_meaning     =>       p_right_tbl(l_index).right_type
6769                                                          , p_operation          =>       'CREATE_RIGHT'
6770                                                          , p_lookup_type        =>       l_pn_rights_type
6771                                                          , x_return_status      =>       x_return_status
6772                                                          , x_lookup_type_code   =>       p_right_tbl(l_index).right_type_code
6773                                                         );
6774                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
6775                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
6776                           fnd_message.set_token ('LOOKUP_TYPE', l_pn_rights_type);
6777                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_right_tbl(l_index).right_type));
6778                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode( p_right_tbl(l_index).right_type_code));
6779                           fnd_msg_pub.ADD;
6780                           RAISE fnd_api.g_exc_error;
6781                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6782                           --l_error_flag:='Y';
6783                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6784                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_right_type,3));
6785                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
6786                           fnd_msg_pub.ADD;
6787                           RAISE fnd_api.g_exc_unexpected_error;
6788                       END IF;
6789                    ELSIF(p_right_tbl(l_index).right_type IS NULL OR p_right_tbl(l_index).right_type_code IS NULL) THEN
6790                          fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6791                          fnd_message.set_token ('API_NAME', l_api_name);
6792                          fnd_message.set_token ('NULL_PARAM', 'RIGHT_TYPE AND RIGHT_TYPE_CODE CANNOT BE NULL');
6793                          fnd_msg_pub.ADD;
6794                          RAISE fnd_api.g_exc_error;
6795                    ELSE
6796                      p_right_tbl(l_index).right_type_code := lcu_right_rec.right_type_code;
6797                    END IF;
6798 -------------------------------------------------------------------------------------------------------------------------------------------------------------
6799 
6800                  IF (  (p_right_tbl(l_index).right_status IS NOT NULL AND p_right_tbl(l_index).right_status <> pn_lease_utils.g_pn_miss_char)
6801                      OR(p_right_tbl(l_index).right_status_code IS NOT NULL AND p_right_tbl(l_index).right_status_code <> pn_lease_utils.g_pn_miss_char)
6802                     ) THEN
6803                             pn_lease_utils.get_lookup_code(
6804                                                            p_parameter_name     =>       l_param_right_status
6805                                                          , p_lookup_meaning     =>       p_right_tbl(l_index).right_status
6806                                                          , p_operation          =>       'CREATE_RIGHT'
6807                                                          , p_lookup_type        =>       l_pn_right_status_type
6808                                                          , x_return_status      =>       x_return_status
6809                                                          , x_lookup_type_code   =>       p_right_tbl(l_index).right_status_code
6810                                                         );
6811                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
6812                           fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
6813                           fnd_message.set_token ('LOOKUP_TYPE', l_pn_right_status_type);
6814                           fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_right_tbl(l_index).right_status));
6815                           fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_right_tbl(l_index).right_status_code));
6816                           fnd_msg_pub.ADD;
6817                           RAISE fnd_api.g_exc_error;
6818                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6819                           --l_error_flag:='Y';
6820                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6821                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_right_status,3));
6822                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
6823                           fnd_msg_pub.ADD;
6824                           RAISE fnd_api.g_exc_unexpected_error;
6825                       END IF;
6826                  ELSIF(p_right_tbl(l_index).right_status IS NULL OR p_right_tbl(l_index).right_status_code IS NULL) THEN
6827                          fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6828                          fnd_message.set_token ('API_NAME', l_api_name);
6829                          fnd_message.set_token ('NULL_PARAM', 'RIGHT_STATUS AND RIGHT_STATUS_CODE CANNOT BE NULL');
6830                          fnd_msg_pub.ADD;
6831                          RAISE fnd_api.g_exc_error;
6832                  ELSE
6833                     p_right_tbl(l_index).right_status_code := lcu_right_rec.right_status_code;
6834                  END IF;
6835 
6836 
6837 
6838 -----------------------------------------------------------------------------------------------------------------------
6839                                -- --------------dbms_output.put_line('lcu_right_rec.attribute_category:1'||lcu_right_rec.attribute_category||l_index);
6840                               --  --------------dbms_output.put_line('lcu_right_rec.attribute_category:'||p_right_tbl(l_index).attribute_category);
6841                     -- Dff validations
6842                      /*IF NOT ( (p_right_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
6843                                         AND (p_right_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
6844                                         AND (p_right_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
6845                                         AND (p_right_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
6846                                         AND (p_right_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
6847                                         AND (p_right_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
6848                                         AND (p_right_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
6849                                         AND (p_right_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
6850                                         AND (p_right_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
6851                                         AND (p_right_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
6852                                         AND (p_right_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
6853                                         AND (p_right_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
6854                                         AND (p_right_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
6855                                         AND (p_right_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
6856                                         AND (p_right_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
6857                                         AND (p_right_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
6858                                 ) THEN*/
6859                                      IF (p_right_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
6860                                             ----------------dbms_output.put_line('lcu_right_rec.attribute_category;'||lcu_right_rec.attribute_category);
6861                                        p_right_tbl(l_index).attribute_category  := lcu_right_rec.attribute_category;
6862                                      ELSIF(p_right_tbl(l_index).attribute_category IS NULL) THEN
6863                                          p_right_tbl(l_index).attribute1 := NULL;
6864                                      END IF;
6865                                      IF (p_right_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
6866                                          p_right_tbl(l_index).attribute1  := lcu_right_rec.attribute1;
6867                                      ELSIF(p_right_tbl(l_index).attribute1 IS NULL) THEN
6868                                          p_right_tbl(l_index).attribute1 := NULL;
6869                                      END IF;
6870 
6871                                      IF (p_right_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
6872                                          p_right_tbl(l_index).attribute2  := lcu_right_rec.attribute2;
6873                                      ELSIF(p_right_tbl(l_index).attribute2 IS NULL) THEN
6874                                          p_right_tbl(l_index).attribute2 := NULL;
6875                                      END IF;
6876                                      IF (p_right_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
6877                                          p_right_tbl(l_index).attribute3  := lcu_right_rec.attribute3;
6878                                      ELSIF(p_right_tbl(l_index).attribute3 IS NULL) THEN
6879                                          p_right_tbl(l_index).attribute3 := NULL;
6880                                      END IF;
6881                                      IF (p_right_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
6882                                          p_right_tbl(l_index).attribute4  := lcu_right_rec.attribute4;
6883                                      ELSIF(p_right_tbl(l_index).attribute4 IS NULL) THEN
6884                                          p_right_tbl(l_index).attribute4 := NULL;
6885                                      END IF;
6886                                      IF (p_right_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
6887                                          p_right_tbl(l_index).attribute5  := lcu_right_rec.attribute5;
6888                                      ELSIF(p_right_tbl(l_index).attribute5 IS NULL) THEN
6889                                          p_right_tbl(l_index).attribute5 := NULL;
6890                                      END IF;
6891                                      IF (p_right_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
6892                                          p_right_tbl(l_index).attribute6  := lcu_right_rec.attribute6;
6893                                      ELSIF(p_right_tbl(l_index).attribute6 IS NULL) THEN
6894                                          p_right_tbl(l_index).attribute6 := NULL;
6895                                      END IF;
6896                                      IF (p_right_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
6897                                          p_right_tbl(l_index).attribute7  := lcu_right_rec.attribute7;
6898                                      ELSIF(p_right_tbl(l_index).attribute7 IS NULL) THEN
6899                                          p_right_tbl(l_index).attribute7 := NULL;
6900                                      END IF;
6901                                      IF (p_right_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
6902                                          p_right_tbl(l_index).attribute8  := lcu_right_rec.attribute8;
6903                                      ELSIF(p_right_tbl(l_index).attribute8 IS NULL) THEN
6904                                          p_right_tbl(l_index).attribute8 := NULL;
6905                                      END IF;
6906                                      IF (p_right_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
6907                                          p_right_tbl(l_index).attribute9  := lcu_right_rec.attribute9;
6908                                      ELSIF(p_right_tbl(l_index).attribute9 IS NULL) THEN
6909                                          p_right_tbl(l_index).attribute9 := NULL;
6910                                      END IF;
6911                                      IF (p_right_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
6912                                          p_right_tbl(l_index).attribute10  := lcu_right_rec.attribute10;
6913                                      ELSIF(p_right_tbl(l_index).attribute10 IS NULL) THEN
6914                                          p_right_tbl(l_index).attribute10 := NULL;
6915                                      END IF;
6916                                      IF (p_right_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
6917                                          p_right_tbl(l_index).attribute11  := lcu_right_rec.attribute11;
6918                                      ELSIF(p_right_tbl(l_index).attribute11 IS NULL) THEN
6919                                          p_right_tbl(l_index).attribute11 := NULL;
6920                                      END IF;
6921                                      IF (p_right_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
6922                                          p_right_tbl(l_index).attribute12  := lcu_right_rec.attribute12;
6923                                      ELSIF(p_right_tbl(l_index).attribute12 IS NULL) THEN
6924                                          p_right_tbl(l_index).attribute12 := NULL;
6925                                      END IF;
6926                                      IF (p_right_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
6927                                          p_right_tbl(l_index).attribute13  := lcu_right_rec.attribute13;
6928                                      ELSIF(p_right_tbl(l_index).attribute13 IS NULL) THEN
6929                                          p_right_tbl(l_index).attribute13 := NULL;
6930                                      END IF;
6931                                      IF (p_right_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
6932                                          p_right_tbl(l_index).attribute14  := lcu_right_rec.attribute14;
6933                                      ELSIF(p_right_tbl(l_index).attribute14 IS NULL) THEN
6934                                          p_right_tbl(l_index).attribute14 := NULL;
6935                                      END IF;
6936                                      IF (p_right_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
6937                                          p_right_tbl(l_index).attribute15  := lcu_right_rec.attribute15;
6938                                      ELSIF(p_right_tbl(l_index).attribute15 IS NULL) THEN
6939                                          p_right_tbl(l_index).attribute15 := NULL;
6940                                      END IF;
6941 
6942                                 PN_LEASE_UTILS.validate_desc_flex (
6943                                                  p_api_name => 'PN_RIGHTS'--l_api_name_full
6944                                                , p_application_short_name => 'PN'
6945                                                , p_desc_flex_name => 'PN_RIGHTS'
6946                                                , p_desc_segment1 => p_right_tbl(l_index).attribute1
6947                                                , p_desc_segment2 => p_right_tbl(l_index).attribute2
6948                                                , p_desc_segment3 => p_right_tbl(l_index).attribute3
6949                                                , p_desc_segment4 => p_right_tbl(l_index).attribute4
6950                                                , p_desc_segment5 => p_right_tbl(l_index).attribute5
6951                                                , p_desc_segment6 => p_right_tbl(l_index).attribute6
6952                                                , p_desc_segment7 => p_right_tbl(l_index).attribute7
6953                                                , p_desc_segment8 => p_right_tbl(l_index).attribute8
6954                                                , p_desc_segment9 => p_right_tbl(l_index).attribute9
6955                                                , p_desc_segment10 =>p_right_tbl(l_index).attribute10
6956                                                , p_desc_segment11 =>p_right_tbl(l_index).attribute11
6957                                                , p_desc_segment12 =>p_right_tbl(l_index).attribute12
6958                                                , p_desc_segment13 =>p_right_tbl(l_index).attribute13
6959                                                , p_desc_segment14 =>p_right_tbl(l_index).attribute14
6960                                                , p_desc_segment15 =>p_right_tbl(l_index).attribute15
6961                                                , p_desc_context => p_right_tbl(l_index).attribute_category
6962                                                , p_resp_appl_id => fnd_global.resp_appl_id
6963                                                , p_resp_id => fnd_global.resp_id
6964                                                , p_return_status => x_return_status
6965                                                 );
6966                                        --------------------dbms_output.put_line('dff validated');
6967                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
6968                                              l_tbl_flag  :=  0;
6969                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6970                                              fnd_message.set_token ('COLUMN', 'PN_RIGHTS_DESC_FIELDS');
6971                                              fnd_message.set_token ('P_TEXT', 'PN_RIGHTS'|| '-'|| SQLERRM);
6972                                              fnd_msg_pub.ADD;
6973                                              RAISE fnd_api.g_exc_error;
6974                                         ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6975                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
6976                                             fnd_message.set_token ('COLUMN', 'PN_RIGHTS_DESC_FIELDS');
6977                                             fnd_message.set_token ('P_TEXT', 'PN_RIGHTS'|| '-'|| SQLERRM);
6978                                             fnd_msg_pub.ADD;
6979                                             RAISE fnd_api.g_exc_unexpected_error;
6980                                        END IF;
6981                             -- END IF;
6982                                      CLOSE c_right;
6983                         ------------------dbms_output.put_line ('VALIDATIONS FOR RIGHT UPDATE COMPLETED');--Rupak
6984                  END IF;
6985                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
6986              EXCEPTION
6987                         WHEN fnd_api.g_exc_error THEN
6988                             pvt_debug(g_pkg_name||'-VALIDATE_RIGHT_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
6989                         WHEN OTHERS THEN
6990                             pvt_debug(g_pkg_name||'-VALIDATE_RIGHT_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
6991              END;
6992           END LOOP;
6993            x_tbl        :=      l_tbl;
6994            x_return_status     :=      fnd_api.g_ret_sts_success;
6995     EXCEPTION
6996      WHEN OTHERS THEN
6997               x_return_status := fnd_api.g_ret_sts_unexp_error;
6998      --------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
6999     END VALIDATE_RIGHT_FOR_UPDATE;
7000 
7001     PROCEDURE RIGHT_UPDATE_ROW(  p_right_tbl        IN OUT  NOCOPY    lease_right_tbl_type
7002                                 ,p_lease_id        IN           PN_LEASES_ALL.LEASE_ID%type
7003                                 ,p_lease_change_id IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
7004                                 ,x_return_status   OUT   NOCOPY       VARCHAR2
7005                                 ,p_tbl             IN           temp_tbl_type
7006                                 ,p_commit          IN           VARCHAR2
7007                             )
7008     IS
7009                                 l_return_status     VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
7010                                 l_index             BINARY_INTEGER;
7011                                 l_right_count NUMBER:=0;
7012      BEGIN
7013           ----------------------dbms_output.put_line (' RIGHT_UPDATE_ROW :RIGHT_UPDATE_ROW');--Rupak
7014            pvt_debug(g_pkg_name||'-Inside RIGHT_UPDATE_ROW',3);
7015 
7016         For l_index in p_right_tbl.FIRST..p_right_tbl.LAST loop
7017           ----------------------dbms_output.put_line (' RIGHT_UPDATE_ROW :IN FOR'||p_tbl(l_index).temp_flag);--Rupak
7018        BEGIN
7019         IF p_tbl(l_index).temp_flag =   2 THEN
7020          ----------------------dbms_output.put_line (' RIGHT_UPDATE_ROW:IN IF RRECORD UPDATION STARTED FOR RIGHTS');--Rupak
7021          pvt_debug(g_pkg_name||'-RIGHT_UPDATE_ROW:Calling PN_RIGHTS_PKG.UPDATE_ROW',3);
7022 
7023         pn_rights_pkg.update_row(
7024                          x_right_id                    =>   p_right_tbl(l_index).right_id
7025                        , x_lease_id                    =>   p_lease_id
7026                        , x_lease_change_id             =>   p_lease_change_id
7027                        , x_right_num                   =>   p_right_tbl(l_index).right_num
7028                        , x_right_type_code             =>   p_right_tbl(l_index).right_type_code
7029                        , x_right_status_code           =>   p_right_tbl(l_index).right_status_code
7030                        , x_right_reference             =>   p_right_tbl(l_index).right_reference
7031                        , x_start_date                  =>   NULL
7032                        , x_expiration_date             =>   NULL
7033                        , x_right_comments              =>   p_right_tbl(l_index).right_comments
7034                        , x_attribute_category          =>   p_right_tbl(l_index).attribute_category
7035                        , x_attribute1                  =>   p_right_tbl(l_index).attribute1
7036                        , x_attribute2                  =>   p_right_tbl(l_index).attribute2
7037                        , x_attribute3                  =>   p_right_tbl(l_index).attribute3
7038                        , x_attribute4                  =>   p_right_tbl(l_index).attribute4
7039                        , x_attribute5                  =>   p_right_tbl(l_index).attribute5
7040                        , x_attribute6                  =>   p_right_tbl(l_index).attribute6
7041                        , x_attribute7                  =>   p_right_tbl(l_index).attribute7
7042                        , x_attribute8                  =>   p_right_tbl(l_index).attribute8
7043                        , x_attribute9                  =>   p_right_tbl(l_index).attribute9
7044                        , x_attribute10                 =>   p_right_tbl(l_index).attribute10
7045                        , x_attribute11                 =>   p_right_tbl(l_index).attribute11
7046                        , x_attribute12                 =>   p_right_tbl(l_index).attribute12
7047                        , x_attribute13                 =>   p_right_tbl(l_index).attribute13
7048                        , x_attribute14                 =>   p_right_tbl(l_index).attribute14
7049                        , x_attribute15                 =>   p_right_tbl(l_index).attribute15
7050                        , x_last_update_date            =>   sysdate
7051                        , x_last_updated_by             =>   fnd_global.user_id
7052                        , x_last_update_login           =>   fnd_global.user_id
7053                          );
7054 
7055 
7056             ----------------------dbms_output.put_line ('RECORD UPDATION COMPLETED FOR RIGHTS');--Rupak
7057             pvt_debug(g_pkg_name||'-RIGHT_UPDATE_ROW:PN_RIGHTS_PKG.UPDATE_ROW Successful',3);
7058 
7059          END IF;
7060          EXCEPTION
7061              WHEN OTHERS THEN
7062                 l_right_count := l_right_count+1;
7063                 pvt_debug(g_pkg_name||'-RIGHT_INSERT_ROW:PN_RIGHTS_PKG.INSERT_ROW:Exception'||SQLERRM,3);
7064             END;
7065       END LOOP;
7066        IF l_right_count = 0 THEN
7067            x_return_status     :=  fnd_api.g_ret_sts_success;
7068       ELSE
7069           x_return_status     :=  fnd_api.g_ret_sts_error;
7070       END IF;
7071          EXCEPTION
7072       WHEN OTHERS THEN
7073       x_return_status := fnd_api.g_ret_sts_unexp_error;
7074       ----------------------dbms_output.put_line ('RECORD NOT UPDATED FOR RIGHTS');
7075       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
7076          pvt_debug(g_pkg_name||'-RIGHT_UPDATE_ROW:Exception'||SQLERRM,3);
7077     END RIGHT_UPDATE_ROW;
7078 
7079      PROCEDURE UPDATE_RIGHT (
7080                           p_lease_id          IN          PN_LEASES_ALL.LEASE_ID%TYPE
7081                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
7082                         , p_commit            IN          VARCHAR2
7083                         , p_validate          IN          VARCHAR2
7084                         , p_right_tbl         IN OUT NOCOPY    lease_right_tbl_type
7085                         , x_return_status     OUT    NOCOPY     VARCHAR2
7086              --           , x_msg_count         OUT         NUMBER
7087              --           , x_msg_data          OUT         VARCHAR2
7088                 )
7089         IS
7090             l_return_status                             VARCHAR2 (1)  :=    fnd_api.g_ret_sts_success;
7091             l_msg_count                                 NUMBER;
7092             l_msg_data                                  VARCHAR2(2000) ;
7093             x_out_tbl                                   temp_tbl_type;
7094 
7095             p_right_tbl_create      lease_right_tbl_type;
7096             p_right_tbl_update      lease_right_tbl_type;
7097             m NUMBER;
7098             n NUMBER;
7099             l_err_right_cnt NUMBER:=0;
7100 BEGIN
7101      x_return_status  :=    fnd_api.g_ret_sts_success;
7102      pvt_debug(g_pkg_name||'-Inside UPDATE_RIGHT:Calling VALIDATE_RIGHT_FOR_UPDATE',3);
7103       m:=1;
7104       n:=1;
7105 
7106            FOR i IN 1..p_right_tbl.COUNT
7107            LOOP
7108              IF(p_right_tbl(i).right_id IS NOT NULL AND p_right_tbl(i).right_id <> pn_lease_utils.g_pn_miss_num) THEN
7109 
7110                   --p_right_tbl(i).p_null_id := 'N';
7111                   p_right_tbl_update(n):=p_right_tbl(i);
7112                   n:=n+1;
7113              ELSE
7114 
7115                 --p_right_tbl(i).p_null_id := 'Y';
7116                 p_right_tbl_create(m):=p_right_tbl(i);
7117                 m:=m+1;
7118              END IF;
7119            END LOOP;
7120 
7121   IF(p_right_tbl_update.COUNT > 0) THEN
7122 
7123     VALIDATE_RIGHT_FOR_UPDATE(p_right_tbl =>    p_right_tbl_update
7124                         ,p_lease_id     =>      p_lease_id
7125                         ,p_lease_change_id  =>  p_lease_change_id
7126                         ,x_tbl          =>      x_out_tbl
7127                         ,x_return_status    =>  x_return_status
7128                         ,p_commit        =>      p_commit
7129                         );
7130 
7131           IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
7132 
7133               ----------------------dbms_output.put_line ('CALLING UPDATE PROCEDURE OF RIGHTS:p_lease_change_id'||p_lease_change_id);--Rupak
7134               pvt_debug(g_pkg_name||'-Inside UPDATE_RIGHT:Calling RIGHT_UPDATE_ROW',3);
7135 
7136                 RIGHT_UPDATE_ROW(
7137                 p_right_tbl                     =>          p_right_tbl_update
7138               , p_lease_id                     =>           p_lease_id
7139               , p_lease_change_id               =>          p_lease_change_id
7140               , x_return_status                =>          x_return_status
7141               , p_tbl                          =>          x_out_tbl
7142               , p_commit                       =>          p_commit
7143                 );
7144                 pvt_debug(g_pkg_name||'-UPDATE_RIGHT:RIGHT_UPDATE_ROW Successful',3);
7145 
7146          ELSIF  (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7147            --x_return_status := fnd_api.g_ret_sts_unexp_error;
7148            l_err_right_cnt := l_err_right_cnt + 1;
7149          ELSE
7150           --x_return_status := fnd_api.g_ret_sts_error;
7151             l_err_right_cnt := l_err_right_cnt + 1;
7152         END IF;
7153    END IF;
7154 
7155    IF(p_right_tbl_create.COUNT > 0) THEN
7156 
7157         pvt_debug(g_pkg_name||'-Inside CREATE_RIGHT',3);
7158         VALIDATE_RIGHT_FOR_CREATE(p_right_tbl       =>  p_right_tbl_create
7159                                 ,x_tbl              =>  x_out_tbl
7160                                 ,x_return_status    =>  x_return_status
7161                                 );
7162          IF NVL(p_validate,'F') <>'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
7163             RIGHT_INSERT_ROW(p_right_tbl            =>  p_right_tbl_create
7164                             ,p_lease_id             =>  p_lease_id
7165                             ,p_lease_change_id      =>  p_lease_change_id
7166                             ,x_return_status        =>  x_return_status
7167                             ,p_tbl                  =>  x_out_tbl
7168                             ,p_commit               =>  p_commit
7169                             );
7170               pvt_debug(g_pkg_name||'-CREATE_RIGHT:RIGHT_INSERT_ROW Return Status:'||l_return_status,3);
7171               IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
7172                    --RAISE fnd_api.g_exc_error;
7173                  l_err_right_cnt := l_err_right_cnt + 1;
7174               END IF;
7175           ELSE
7176              --RAISE fnd_api.g_exc_error;
7177              l_err_right_cnt := l_err_right_cnt + 1;
7178            END IF;
7179     END IF;
7180 
7181         IF(l_err_right_cnt = 0) THEN
7182           x_return_status := fnd_api.g_ret_sts_success;
7183         ELSE
7184           x_return_status := fnd_api.g_ret_sts_error;
7185         END IF;
7186 
7187         EXCEPTION
7188         WHEN OTHERS THEN
7189          x_return_status :=  fnd_api.g_ret_sts_unexp_error;
7190         ----------------------dbms_output.put_line('UPDATION OF RIGHTS FAILED'||SQLERRM);--Rupak
7191         pvt_debug(g_pkg_name||'-UPDATE_RIGHT:Exception:'||SQLERRM,3);
7192 END UPDATE_RIGHT;
7193 
7194 
7195    PROCEDURE  VALIDATE_OBLIGATION_FOR_CREATE(
7196                                        p_obligation_tbl        IN OUT   NOCOPY    lease_obligation_tbl_type
7197                                       ,p_lease_id        IN           PN_LEASES_ALL.LEASE_ID%type
7198                                       ,p_lease_change_id IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
7199                                       ,x_tbl             OUT   NOCOPY       temp_tbl_type
7200                                       ,x_return_status   IN OUT NOCOPY      VARCHAR2
7201         )
7202     IS
7203     l_return_status                             VARCHAR2(1)                                                     :=  fnd_api.g_ret_sts_success;
7204     l_index                                     BINARY_INTEGER                                                                              ;
7205     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE                                                                    ;
7206     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE                                                                ;
7207     l_company_id                                NUMBER                                                                                      ;
7208     l_tbl_index                                 BINARY_INTEGER                                                                              ;
7209     l_tbl_flag                                  NUMBER                                                          :=  1                       ;
7210     l_tbl                                       temp_tbl_type                                                                               ;
7211     l_api_name                                  VARCHAR2(30)                                                    := 'CREATE OBLIGATION'      ;
7212 
7213 
7214     BEGIN
7215     ----------------------dbms_output.put_line('VALIDATIONS TO CREATE OBLIGATIONS STARTED');--Rupak
7216       pvt_debug(g_pkg_name||'-Inside VALIDATE_OBLIGATION_FOR_CREATE',3);
7217               FOR l_index in p_obligation_tbl.FIRST.. p_obligation_tbl.LAST
7218                LOOP
7219                   BEGIN
7220                           INITIALIZE_OBLIGATIONS_REC (p_obligation_tbl(l_index),'CREATE_OBLIGATIONS', x_return_status);
7221                         l_tbl_index      :=      l_index;
7222 
7223                        IF  (p_obligation_tbl(l_index).start_date IS NOT NULL AND p_obligation_tbl(l_index).end_date IS NOT NULL) THEN
7224                          pn_lease_utils.crossval_leasedates ( p_parameter_name           =>   l_param_obligation_date --'START AND END DATE'
7225                                                             , p_operation              =>   'CREATE_OBLIGATION'
7226                                                             , p_lease_exec_date        =>    NULL
7227                                                             , p_lease_comm_date        =>   p_obligation_tbl(l_index).start_date
7228                                                             , p_lease_term_date        =>   p_obligation_tbl(l_index).end_date
7229                                                             , x_return_status          =>   x_return_status
7230                                                             );
7231                                 IF (x_return_status  = fnd_api.g_ret_sts_error) THEN
7232                                      l_tbl_flag  :=  0;
7233                                      fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
7234                                      fnd_message.set_token ('COMMENCEMENT_DATE',get_miss_date_decode(p_obligation_tbl(l_index).start_date));
7235                                      fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_obligation_tbl(l_index).end_date));
7236                                      fnd_msg_pub.ADD;
7237                                      RAISE fnd_api.g_exc_error;
7238                                 END IF;
7239                         ELSE
7240                                  l_tbl_flag := 0;
7241                                  fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7242                                  fnd_message.set_token ('API_NAME', l_api_name);
7243                                  fnd_message.set_token ('NULL_PARAM', 'START DATE END DATE NULL');
7244                                  fnd_msg_pub.ADD;
7245                                  RAISE fnd_api.g_exc_error;
7246 
7247                        END IF;
7248 
7249                   IF (p_obligation_tbl(l_index).status IS NULL AND p_obligation_tbl(l_index).status NOT IN ('A','I','n')) THEN
7250                       l_tbl_flag  :=      0;
7251                       pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_CREATE:STATUS AND STATUS CODE:NULL',3);
7252                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7253                       fnd_message.set_token ('API_NAME', l_api_name);
7254                       fnd_message.set_token ('NULL_PARAM', l_pn_status);
7255                       fnd_msg_pub.ADD;
7256                       RAISE fnd_api.g_exc_error;
7257                   END IF;
7258 
7259 
7260 
7261 ------------------------------------------------------------------------------------------------------------------------------------------------------
7262 
7263                   IF (( p_obligation_tbl(l_index).service_type IS NOT NULL OR p_obligation_tbl(l_index).service_type_lookup_code IS NOT NULL)
7264                       ) THEN
7265                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_service_type
7266                                                     , p_lookup_meaning      =>       p_obligation_tbl(l_index).service_type
7267                                                     , p_operation           =>      'CREATE_OBLIGATION'
7268                                                     , p_lookup_type         =>      l_pn_landlord_service_type
7269                                                     , x_return_status       =>      x_return_status
7270                                                     , x_lookup_type_code    =>      p_obligation_tbl(l_index).service_type_lookup_code
7271                                                     );
7272                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7273                           --l_error_flag:='Y';
7274                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7275                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_landlord_service_type);
7276                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).service_type));
7277                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).service_type_lookup_code));
7278                            fnd_msg_pub.ADD;
7279                            RAISE fnd_api.g_exc_error;
7280                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7281                           --l_error_flag:='Y';
7282                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7283                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_service_type,3));
7284                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7285                             fnd_msg_pub.ADD;
7286                             RAISE fnd_api.g_exc_unexpected_error;
7287                       END IF;
7288                   ELSE
7289                       l_tbl_flag  :=  0;
7290                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7291                       fnd_message.set_token ('API_NAME', l_api_name);
7292                       fnd_message.set_token ('NULL_PARAM', l_pn_landlord_service_type);
7293                       fnd_msg_pub.ADD;
7294                       RAISE fnd_api.g_exc_error;
7295                   END IF;
7296 
7297 
7298 --------------------------------------------------------------------------------------------------------------------------------------------------------------
7299                  IF (( p_obligation_tbl(l_index).responsibility IS NOT NULL OR p_obligation_tbl(l_index).responsibility_code IS NOT NULL)
7300                       ) THEN
7301                       pn_lease_utils.get_lookup_code(p_parameter_name      =>   l_param_responsibility
7302                                                     ,p_lookup_meaning      =>   p_obligation_tbl(l_index).responsibility
7303                                                     ,p_operation           =>   'CREATE_OBLIGATION'
7304                                                     ,p_lookup_type         =>   l_pn_obligation_resp_type
7305                                                     ,x_return_status       =>   x_return_status
7306                                                     ,x_lookup_type_code    =>   p_obligation_tbl(l_index).responsibility_code
7307                                                     );
7308                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7309                           --l_error_flag:='Y';
7310                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7311                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_obligation_resp_type);
7312                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).responsibility));
7313                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).responsibility_code));
7314                            fnd_msg_pub.ADD;
7315                            RAISE fnd_api.g_exc_error;
7316                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7317                           --l_error_flag:='Y';
7318                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7319                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_responsibility,3));
7320                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7321                             fnd_msg_pub.ADD;
7322                             RAISE fnd_api.g_exc_unexpected_error;
7323                       END IF;
7324                   /*ELSE
7325                       l_tbl_flag  :=      0;
7326                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7327                       fnd_message.set_token ('API_NAME', l_api_name);
7328                       fnd_message.set_token ('NULL_PARAM', l_pn_obligation_resp_type);
7329                       fnd_msg_pub.ADD;
7330                       RAISE fnd_api.g_exc_error;*/
7331                   END IF;
7332 
7333 
7334 ------------------------------------------------------------------------------------------------------------------------------------------------------------
7335                 IF (( p_obligation_tbl(l_index).financial_resp_party IS NOT NULL OR p_obligation_tbl(l_index).financial_resp_party_code IS NOT NULL)
7336                       ) THEN
7337                        pn_lease_utils.get_lookup_code( p_parameter_name   => l_param_financial_resp_party
7338                                                      , p_lookup_meaning   => p_obligation_tbl(l_index).financial_resp_party
7339                                                      , p_operation        => 'CREATE_OBLIGATION'
7340                                                      , p_lookup_type      => l_pn_obligation_fin_resp_type
7341                                                      , x_return_status    => x_return_status
7342                                                      , x_lookup_type_code => p_obligation_tbl(l_index).financial_resp_party_code
7343                                                     );
7344                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7345                           --l_error_flag:='Y';
7346                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7347                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_obligation_fin_resp_type);
7348                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).financial_resp_party));
7349                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).financial_resp_party_code));
7350                            fnd_msg_pub.ADD;
7351                            RAISE fnd_api.g_exc_error;
7352                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7353                           --l_error_flag:='Y';
7354                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7355                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_financial_resp_party,3));
7356                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7357                             fnd_msg_pub.ADD;
7358                             RAISE fnd_api.g_exc_unexpected_error;
7359                       END IF;
7360                   /*ELSE
7361                       l_tbl_flag  :=      0;
7362                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7363                       fnd_message.set_token ('API_NAME', l_api_name);
7364                       fnd_message.set_token ('NULL_PARAM', l_pn_obligation_fin_resp_type);
7365                       fnd_msg_pub.ADD;
7366                       RAISE fnd_api.g_exc_error;*/
7367                   END IF;
7368 
7369 
7370 
7371  ----------------------------------------------------------------------------------------------------------------------------------------
7372 
7373                IF (p_obligation_tbl(l_index).company_name IS NOT NULL OR p_obligation_tbl(l_index).company_id IS NOT NULL) THEN
7374                     pn_lease_utils.validate_company_id(p_company_name    => p_obligation_tbl(l_index).company_name
7375                                                      , x_company_id      => p_obligation_tbl(l_index).company_id
7376                                                      , x_return_status   => x_return_status
7377                                                       );
7378                      IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7379                           --l_error_flag:='Y';
7380                             fnd_message.set_name ('PN', 'PN_INVALID_COMPANY');
7381                             fnd_message.set_token ('COMPANY_NAME', get_miss_char_decode(p_obligation_tbl(l_index).company_name));
7382                             fnd_message.set_token ('COMPANY_ID', get_miss_num_decode(p_obligation_tbl(l_index).company_id));
7383                             fnd_msg_pub.ADD;
7384                            --p_lease_contacts_tbl (i).error_flag := 'Y';
7385                             RAISE fnd_api.g_exc_error;
7386                      ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7387                           --l_error_flag:='Y';
7388                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7389                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_company,3));
7390                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7391                             fnd_msg_pub.ADD;
7392                             RAISE fnd_api.g_exc_unexpected_error;
7393                      END IF;
7394                   /*ELSE
7395                       l_tbl_flag  :=      0;
7396                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7397                       fnd_message.set_token ('API_NAME', l_api_name);
7398                       fnd_message.set_token ('NULL_PARAM', l_param_company);
7399                       fnd_msg_pub.ADD;
7400                       RAISE fnd_api.g_exc_error;*/
7401                   END IF;
7402 
7403 
7404 --------------------------------------------------------------------------------------------------------------------------------------------------------------
7405                     --  dff validations
7406                                   /* IF NOT ( (p_obligation_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
7407                                         AND (p_obligation_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
7408                                         AND (p_obligation_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
7409                                         AND (p_obligation_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
7410                                         AND (p_obligation_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
7411                                         AND (p_obligation_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
7412                                         AND (p_obligation_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
7413                                         AND (p_obligation_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
7414                                         AND (p_obligation_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
7415                                         AND (p_obligation_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
7416                                         AND (p_obligation_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
7417                                         AND (p_obligation_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
7418                                         AND (p_obligation_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
7419                                         AND (p_obligation_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
7420                                         AND (p_obligation_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
7421                                         AND (p_obligation_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
7422                                 ) THEN*/
7423             IF (get_attribute_status('PN_LANDLORD_SERVICES') > 0) THEN
7424              /*get_attribute_mandatory_status('PN_LANDLORD_SERVICES'
7425                                              ,p_obligation_tbl(l_index).attribute1
7426                                              ,p_obligation_tbl(l_index).attribute2
7427                                              ,p_obligation_tbl(l_index).attribute3
7428                                              ,p_obligation_tbl(l_index).attribute4
7429                                              ,p_obligation_tbl(l_index).attribute5
7430                                              ,p_obligation_tbl(l_index).attribute6
7431                                              ,p_obligation_tbl(l_index).attribute7
7432                                              ,p_obligation_tbl(l_index).attribute8
7433                                              ,p_obligation_tbl(l_index).attribute9
7434                                              ,p_obligation_tbl(l_index).attribute10
7435                                              ,p_obligation_tbl(l_index).attribute11
7436                                              ,p_obligation_tbl(l_index).attribute12
7437                                              ,p_obligation_tbl(l_index).attribute13
7438                                              ,p_obligation_tbl(l_index).attribute14
7439                                              ,p_obligation_tbl(l_index).attribute15
7440                                              ,x_return_status
7441                                             );
7442           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
7443               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7444               fnd_message.set_token ('API_NAME', l_api_name);
7445               fnd_message.set_token ('NULL_PARAM','Required attribute in Obligations is NULL');
7446               fnd_msg_pub.ADD;
7447               RAISE fnd_api.g_exc_error;
7448           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
7449               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7450               fnd_message.set_token ('API_NAME', l_api_name);
7451               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Obligations is NULL');
7452               fnd_msg_pub.ADD;
7453               RAISE fnd_api.g_exc_unexpected_error;
7454           ELSE*/
7455             IF NOT ((p_obligation_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute_category IS NULL)
7456                                         AND (p_obligation_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute1 IS NULL)
7457                                         AND (p_obligation_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute2 IS NULL)
7458                                         AND (p_obligation_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute3 IS NULL)
7459                                         AND (p_obligation_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute4 IS NULL)
7460                                         AND (p_obligation_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute5 IS NULL)
7461                                         AND (p_obligation_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute6 IS NULL)
7462                                         AND (p_obligation_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute7 IS NULL)
7463                                         AND (p_obligation_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute8 IS NULL)
7464                                         AND (p_obligation_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute9 IS NULL)
7465                                         AND (p_obligation_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute10 IS NULL)
7466                                         AND (p_obligation_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute11 IS NULL)
7467                                         AND (p_obligation_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute12 IS NULL)
7468                                         AND (p_obligation_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute13 IS NULL)
7469                                         AND (p_obligation_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute14 IS NULL)
7470                                         AND (p_obligation_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char OR p_obligation_tbl(l_index).attribute15 IS NULL)
7471                                 ) THEN
7472                                 PN_LEASE_UTILS.validate_desc_flex (
7473                                                  p_api_name => 'PN_LANDLORD_SERVICES'--l_api_name_full
7474                                                , p_application_short_name => 'PN'
7475                                                , p_desc_flex_name => 'PN_LANDLORD_SERVICES'
7476                                                , p_desc_segment1 => p_obligation_tbl(l_index).attribute1
7477                                                , p_desc_segment2 => p_obligation_tbl(l_index).attribute2
7478                                                , p_desc_segment3 => p_obligation_tbl(l_index).attribute3
7479                                                , p_desc_segment4 => p_obligation_tbl(l_index).attribute4
7480                                                , p_desc_segment5 => p_obligation_tbl(l_index).attribute5
7481                                                , p_desc_segment6 => p_obligation_tbl(l_index).attribute6
7482                                                , p_desc_segment7 => p_obligation_tbl(l_index).attribute7
7483                                                , p_desc_segment8 => p_obligation_tbl(l_index).attribute8
7484                                                , p_desc_segment9 => p_obligation_tbl(l_index).attribute9
7485                                                , p_desc_segment10 =>p_obligation_tbl(l_index).attribute10
7486                                                , p_desc_segment11 =>p_obligation_tbl(l_index).attribute11
7487                                                , p_desc_segment12 =>p_obligation_tbl(l_index).attribute12
7488                                                , p_desc_segment13 =>p_obligation_tbl(l_index).attribute13
7489                                                , p_desc_segment14 =>p_obligation_tbl(l_index).attribute14
7490                                                , p_desc_segment15 =>p_obligation_tbl(l_index).attribute15
7491                                                , p_desc_context => p_obligation_tbl(l_index).attribute_category
7492                                                , p_resp_appl_id => fnd_global.resp_appl_id
7493                                                , p_resp_id => fnd_global.resp_id
7494                                                , p_return_status => x_return_status
7495                                                 );
7496                                        ----------------------dbms_output.put_line('dff validated');
7497                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7498                                              l_tbl_flag  :=  0;
7499                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7500                                              fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
7501                                              fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
7502                                              fnd_msg_pub.ADD;
7503                                              RAISE fnd_api.g_exc_error;
7504                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7505                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7506                                             fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
7507                                             fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
7508                                             fnd_msg_pub.ADD;
7509                                             RAISE fnd_api.g_exc_unexpected_error;
7510                                         END IF;
7511               END IF;
7512          END IF;
7513                             l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
7514                   EXCEPTION
7515                       WHEN fnd_api.g_exc_error THEN
7516                          pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_CREATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
7517                       WHEN OTHERS THEN
7518                          pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_CREATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
7519                   END;
7520                 END LOOP;
7521                 x_tbl       :=      l_tbl;
7522                 x_return_status     :=    fnd_api.g_ret_sts_success;
7523 
7524     EXCEPTION
7525     WHEN fnd_api.g_exc_error THEN
7526         x_return_status := fnd_api.g_ret_sts_error;
7527         ----------------------dbms_output.put_line('OBLIGATION VALIDATION  FAILED');
7528     WHEN OTHERS THEN
7529        x_return_status := fnd_api.g_ret_sts_unexp_error;
7530        pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_CREATE:OTHERS:EXCEPTION:'||SQLERRM,3);
7531   END VALIDATE_OBLIGATION_FOR_CREATE;
7532 
7533  PROCEDURE OBLIGATION_INSERT_ROW(p_obligation_tbl  IN OUT NOCOPY   LEASE_OBLIGATION_TBL_TYPE
7534                             ,p_lease_id   IN        PN_LEASES_ALL.LEASE_ID%TYPE
7535                             ,p_lease_change_id  IN  PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
7536                             ,x_return_status    IN OUT NOCOPY VARCHAR2
7537                             ,p_tbl              IN OUT NOCOPY TEMP_TBL_TYPE
7538                             ,p_commit           IN  VARCHAR2
7539     )
7540     IS
7541         --l_index                                 NUMBER;
7542         l_row_id                                VARCHAR2(100)            ;
7543         l_landlord_service_id                   PN_LANDLORD_SERVICES.LANDLORD_SERVICE_ID%TYPE;
7544     BEGIN
7545 
7546       pvt_debug(g_pkg_name||'-Inside OBLIGATION_INSERT_ROW',3);
7547     ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:P_LEASE_ID'||p_lease_id);--Rupak
7548 
7549     ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_lease_change_id'||p_lease_change_id);--Rupak
7550        ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_obligation_tbl'||p_obligation_tbl.FIRST);--Rupak
7551        ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_obligation_tbl'||p_obligation_tbl.LAST);--Rupak
7552        ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_obligation_tbl(status)'||p_obligation_tbl(1).STATUS);--Rupak
7553       ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_obligation_tbl(service_type)'||p_obligation_tbl(1).service_type);--Rupak
7554         --IF p_obligation_tbl.count  > 0 THEN
7555         ----------------------dbms_output.put_line('Inside If Count '||p_obligation_tbl.count);--Rupak
7556             for l_index in p_obligation_tbl.FIRST..p_obligation_tbl.LAST LOOP
7557           --l_index := 1;
7558             ----------------------dbms_output.put_line('In OBLIGATION_INSERT_ROW:p_obligation_tblIN FOR OUTSIDE IF'||p_obligation_tbl(l_index).temp_flag);--Rupak
7559                         IF  p_tbl(l_index).temp_flag = 1 THEN
7560                         ----------------------dbms_output.put_line ('INSERT ROW INTO PN_LANDLORD_SERVICES_ALL STARTED FOR OBLIGATIONS');--Rupak
7561                          pvt_debug(g_pkg_name||'-OBLIGATION_INSERT_ROW:Calling PN_LANDLORD_SERVICES_PKG.INSERT_ROW',3);
7562                         l_landlord_service_id   :=  NULL;
7563                         PN_LANDLORD_SERVICES_PKG.insert_row(
7564                                     X_ROWID                                     =>       l_row_id,
7565                                     X_LANDLORD_SERVICE_ID                       =>       l_landlord_service_id,
7566                                     X_LEASE_ID                                  =>       p_lease_id,
7567                                     X_LEASE_CHANGE_ID                           =>       p_lease_change_id,
7568                                     X_SERVICE_TYPE_LOOKUP_CODE                  =>       p_obligation_tbl(l_index).service_type_lookup_code,
7569                                     X_START_DATE                                =>       p_obligation_tbl(l_index).start_date,
7570                                     X_END_DATE                                  =>       p_obligation_tbl(l_index).end_date,
7571                                     X_STATUS                                    =>       p_obligation_tbl(l_index).status,
7572                                     X_ATTRIBUTE_CATEGORY                        =>       p_obligation_tbl(l_index).attribute_category,
7573                                     X_ATTRIBUTE1                                =>       p_obligation_tbl(l_index).attribute1,
7574                                     X_ATTRIBUTE2                                =>       p_obligation_tbl(l_index).attribute1,
7575                                     X_ATTRIBUTE3                                =>       p_obligation_tbl(l_index).attribute1,
7576                                     X_ATTRIBUTE4                                =>       p_obligation_tbl(l_index).attribute1,
7577                                     X_ATTRIBUTE5                                =>       p_obligation_tbl(l_index).attribute1,
7578                                     X_ATTRIBUTE6                                =>       p_obligation_tbl(l_index).attribute1,
7579                                     X_ATTRIBUTE7                                =>       p_obligation_tbl(l_index).attribute1,
7580                                     X_ATTRIBUTE8                                =>       p_obligation_tbl(l_index).attribute1,
7581                                     X_ATTRIBUTE9                                =>       p_obligation_tbl(l_index).attribute1,
7582                                     X_ATTRIBUTE10                               =>       p_obligation_tbl(l_index).attribute1,
7583                                     X_ATTRIBUTE11                               =>       p_obligation_tbl(l_index).attribute1,
7584                                     X_ATTRIBUTE12                               =>       p_obligation_tbl(l_index).attribute1,
7585                                     X_ATTRIBUTE13                               =>       p_obligation_tbl(l_index).attribute1,
7586                                     X_ATTRIBUTE14                               =>       p_obligation_tbl(l_index).attribute1,
7587                                     X_ATTRIBUTE15                               =>       p_obligation_tbl(l_index).attribute1,
7588                                     X_CREATION_DATE                             =>       sysdate,
7589                                     X_CREATED_BY                                =>       fnd_global.user_id,
7590                                     X_LAST_UPDATE_DATE                          =>       sysdate,
7591                                     X_LAST_UPDATED_BY                           =>       fnd_global.user_id,
7592                                     X_LAST_UPDATE_LOGIN                         =>       fnd_global.user_id,
7593                                     X_OBLIGATION_NUM                            =>       p_obligation_tbl(l_index).obligation_num,
7594                                     X_RESPONSIBILITY_CODE                       =>       p_obligation_tbl(l_index).responsibility_code,
7595                                     X_COMMON_AREA_RESP                          =>       p_obligation_tbl(l_index).common_area_resp,
7596                                     X_FINANCIAL_RESP_PARTY_CODE                 =>       p_obligation_tbl(l_index).financial_resp_party_code,
7597                                     X_FINANCIAL_PCT_RESP                        =>       p_obligation_tbl(l_index).financial_pct_resp,
7598                                     X_RESPONSIBILITY_MAINT                      =>       p_obligation_tbl(l_index).responsibility_maint,
7599                                     X_COMPANY_ID                                =>       p_obligation_tbl(l_index).company_id,
7600                                     X_OBLIGATION_REFERENCE                      =>       p_obligation_tbl(l_index).obligation_reference,
7601                                     X_OBLIGATION_COMMENTS                       =>       p_obligation_tbl(l_index).obligation_comments,
7602                                     X_org_id                                    =>       fnd_global.org_id
7603                             );
7604                              pvt_debug(g_pkg_name||'-OBLIGATION_INSERT_ROW:PN_LANDLORD_SERVICES_PKG.INSERT_ROW Successful',3);
7605                             ----------------------dbms_output.put_line (' RECORD : '||l_index|| ' WITH  landlord_service_id:  '||l_landlord_service_id||' INSERTED');
7606                             p_obligation_tbl(l_index).landlord_service_id      :=  p_obligation_tbl(l_index).landlord_service_id;
7607                        END IF;
7608 
7609             END loop;
7610          -- END IF;
7611          EXCEPTION
7612             WHEN OTHERS THEN
7613              x_return_status := fnd_api.g_ret_sts_unexp_error;
7614             ----------------------dbms_output.put_line('INSERT INTO OBLIGATIONS FAILED') ;
7615             ----------------------dbms_output.put_line('In OBLIGATION INSERT ROW PROC:sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);--Rupak
7616               pvt_debug(g_pkg_name||'-OBLIGATION_INSERT_ROW:Exception:PN_LANDLORD_SERVICES_PKG.INSERT_ROW',3);
7617     END OBLIGATION_INSERT_ROW;
7618 
7619     PROCEDURE CREATE_OBLIGATION (
7620                                       p_lease_id          IN          NUMBER
7621                                     , p_lease_change_id   IN          NUMBER
7622                                     , p_commit            IN          VARCHAR2
7623                                     , p_validate          IN          VARCHAR2
7624                                     , p_obligation_tbl          IN OUT  NOCOPY    lease_obligation_tbl_type
7625                                     , x_return_status     OUT    NOCOPY     VARCHAR2
7626                           --          , x_msg_count         OUT         NUMBER
7627                           --          , x_msg_data          OUT         VARCHAR2
7628     )
7629     IS
7630         l_return_status     VARCHAR2(1)                     :=                          fnd_api.g_ret_sts_success;
7631         l_msg_count         NUMBER                                                                              ;
7632         l_msg_data          VARCHAR2(2000)                                                                      ;
7633         x_out_tbl           temp_tbl_type                                                         ;
7634     BEGIN
7635      ----------------------dbms_output.put_line('In Create Obligation:PVT');--Rupak
7636      pvt_debug(g_pkg_name||'-Inside CREATE_OBLIGATION',3);
7637         VALIDATE_OBLIGATION_FOR_CREATE(
7638                                  p_obligation_tbl   =>      p_obligation_tbl
7639                                 ,p_lease_id         =>      p_lease_id
7640                                 ,p_lease_change_id  =>      p_lease_change_id
7641                                 ,x_tbl              =>      x_out_tbl
7642                                 ,x_return_status    =>  x_return_status
7643                                       );
7644                                 IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
7645                                     OBLIGATION_INSERT_ROW(
7646                                                     p_obligation_tbl  =>  p_obligation_tbl
7647                                                     ,p_lease_id =>  p_lease_id
7648                                                     ,p_lease_change_id  =>  p_lease_change_id
7649                                                     ,x_return_status    =>  x_return_status
7650                                                     ,p_tbl      =>  x_out_tbl
7651                                                     ,p_commit   =>  p_commit
7652                                                     );
7653                                 ELSE
7654                                   RAISE fnd_api.g_exc_error;
7655                                END IF;
7656                      ----------------------dbms_output.put_line('In Create Obligation:PVT After OBLIGATION_INSERT_ROW');--Rupak
7657                      pvt_debug(g_pkg_name||'-CREATE_OBLIGATION:VALIDATE_OBLIGATION_FOR_CREATE Return Status:'||l_return_status,3);
7658      EXCEPTION
7659        WHEN fnd_api.g_exc_error THEN
7660          x_return_status :=  fnd_api.g_ret_sts_error;
7661         WHEN OTHERS THEN
7662         x_return_status :=  fnd_api.g_ret_sts_unexp_error;
7663         ----------------------dbms_output.put_line('CREATION OF RIGHTS FAILED');
7664         pvt_debug(g_pkg_name||'-CREATE_OBLIGATION:Exception'||SQLERRM,3);
7665     END CREATE_OBLIGATION;
7666 
7667 
7668       PROCEDURE VALIDATE_OBLIGATION_FOR_UPDATE(
7669                                 p_obligation_tbl          IN OUT NOCOPY lease_obligation_tbl_type
7670                                ,p_lease_id          IN PN_LEASES_ALL.LEASE_ID%TYPE
7671                                ,p_lease_change_id   IN PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
7672                                ,x_tbl               OUT  NOCOPY   temp_tbl_type
7673                                ,x_return_status     IN OUT NOCOPY VARCHAR2
7674         )
7675     IS
7676     l_return_status                             VARCHAR2(1)                                             := fnd_api.g_ret_sts_success;
7677     l_index                                     BINARY_INTEGER;
7678     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
7679     l_landlord_service_id                       PN_LANDLORD_SERVICES_ALL.LANDLORD_SERVICE_ID%TYPE;
7680     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
7681     l_company_id                                PN_LANDLORD_SERVICES_ALL.company_id%type                ;
7682     l_cur_id                                    NUMBER;
7683     l_tbl_index                                 BINARY_INTEGER;
7684     l_tbl_flag                                  NUMBER;
7685     l_tbl                                       temp_tbl_type;
7686     l_api_name                                  VARCHAR2(30)   :=  'UPDATE_OBLIGATIONS';
7687     CURSOR c_oblg (
7688            p_landlord_service_id NUMBER
7689       )
7690       IS
7691          SELECT landlord_service_id
7692               , lease_id
7693               , lease_change_id
7694               , status
7695               , service_type_lookup_code
7696               , start_date
7697               , end_date
7698               , obligation_comments
7699               , obligation_reference
7700               , company_id
7701               , responsibility_maint
7702               , financial_pct_resp
7703               , financial_resp_party_code
7704               , common_area_resp
7705               , responsibility_code
7706               , org_id
7707               , obligation_num
7708               , attribute_category
7709               , attribute1
7710               , attribute2
7711               , attribute3
7712               , attribute4
7713               , attribute5
7714               , attribute6
7715               , attribute7
7716               , attribute8
7717               , attribute9
7718               , attribute10
7719               , attribute11
7720               , attribute12
7721               , attribute13
7722               , attribute14
7723               , attribute15
7724               FROM pn_landlord_services_all
7725               WHERE landlord_service_id = p_landlord_service_id;
7726               lcu_oblg_rec           c_oblg%ROWTYPE;
7727     BEGIN
7728                 l_return_status          := fnd_api.g_ret_sts_success ;
7729 
7730          pvt_debug(g_pkg_name||'-Inside VALIDATE_OBLIGATION_FOR_UPDATE',3);
7731          for l_index in p_obligation_tbl.FIRST..p_obligation_tbl.LAST LOOP
7732          BEGIN
7733                             l_tbl_index          :=              l_index;
7734 
7735                 --INITIALIZE_OBLIGATIONS_REC (p_obligation_tbl(l_index),'UPDATE_OBLIGATIONS', x_return_status);
7736                 IF (p_obligation_tbl(l_index).landlord_service_id IS NULL OR p_obligation_tbl(l_index).landlord_service_id = pn_lease_utils.g_pn_miss_num)THEN
7737                               l_tbl_flag      :=      1;
7738                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7739                               fnd_message.set_token ('API_NAME', l_api_name);
7740                               fnd_message.set_token ('NULL_PARAM', 'OBLIATION_ID NULL');
7741                               fnd_msg_pub.ADD;
7742                               RAISE fnd_api.g_exc_error;
7743                     pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_UPDATE:landlord_service_id IS NULL',3);
7744                 ELSE
7745                                  l_tbl_flag       :=      2;
7746                                  l_lookup_code  :=  NULL;
7747                              l_cur_id        :=      p_obligation_tbl(l_index).landlord_service_id;
7748                             OPEN c_oblg(l_cur_id);
7749 
7750                             FETCH c_oblg INTO lcu_oblg_rec;
7751 
7752 
7753                             IF  (p_obligation_tbl(l_index).obligation_num = pn_lease_utils.g_pn_miss_char) THEN
7754                                 p_obligation_tbl(l_index).obligation_num  :=  lcu_oblg_rec.obligation_num ;
7755                             END IF;
7756 
7757                             IF  (p_obligation_tbl(l_index).obligation_comments = pn_lease_utils.g_pn_miss_char) THEN
7758                                 p_obligation_tbl(l_index).obligation_comments :=  lcu_oblg_rec.obligation_comments;
7759                                 --------------------dbms_output.put_line('OBLIGATION COMMENTS VALIDATED IN EXISTING RECORD');
7760                             END IF;
7761                             IF  ( p_obligation_tbl(l_index).obligation_reference = pn_lease_utils.g_pn_miss_char) THEN
7762                                 p_obligation_tbl(l_index).obligation_reference :=  lcu_oblg_rec.obligation_reference;
7763                                 --------------------dbms_output.put_line('OBLIGATION REFERENCE VALIDATED IN EXISTING RECORD');
7764                             END IF;
7765 
7766                             IF (p_obligation_tbl(l_index).responsibility_maint = pn_lease_utils.g_pn_miss_char) THEN
7767                                 p_obligation_tbl(l_index).responsibility_maint :=  lcu_oblg_rec.responsibility_maint;
7768                             END IF;
7769                             IF(p_obligation_tbl(l_index).common_area_resp = pn_lease_utils.g_pn_miss_char) THEN
7770                                 p_obligation_tbl(l_index).common_area_resp :=  lcu_oblg_rec.common_area_resp;
7771                             END IF;
7772 
7773                             IF(p_obligation_tbl(l_index).financial_pct_resp = pn_lease_utils.g_pn_miss_char) THEN
7774                                p_obligation_tbl(l_index).financial_pct_resp :=  lcu_oblg_rec.financial_pct_resp;
7775                                 --------------------dbms_output.put_line('FINANCIAL PCT RESP VALIDATED IN EXISTING RECORD');
7776                             END IF;
7777 
7778 ----------------------------------------------------------------------------------------------------------------------
7779                       IF  (  (p_obligation_tbl(l_index).start_date IS NOT NULL AND p_obligation_tbl(l_index).start_date <> pn_lease_utils.g_pn_miss_date)
7780                           AND(p_obligation_tbl(l_index).end_date   IS NOT NULL AND p_obligation_tbl(l_index).end_date   <> pn_lease_utils.g_pn_miss_date)
7781                           ) THEN
7782                          pn_lease_utils.crossval_leasedates ( p_parameter_name           =>   l_param_obligation_date --'START AND END DATE'
7783                                                             , p_operation              =>   'UPADATE_OBLIGATION'
7784                                                             , p_lease_exec_date        =>    NULL
7785                                                             , p_lease_comm_date        =>   p_obligation_tbl(l_index).start_date
7786                                                             , p_lease_term_date        =>   p_obligation_tbl(l_index).end_date
7787                                                             , x_return_status          =>   x_return_status
7788                                                             );
7789                                 IF (x_return_status  = fnd_api.g_ret_sts_error) THEN
7790                                      l_tbl_flag  :=  0;
7791                                      fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
7792                                      fnd_message.set_token ('COMMENCEMENT_DATE',get_miss_date_decode(p_obligation_tbl(l_index).start_date));
7793                                      fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_obligation_tbl(l_index).end_date));
7794                                      fnd_msg_pub.ADD;
7795                                      RAISE fnd_api.g_exc_error;
7796                                 END IF;
7797                        ELSE
7798                          p_obligation_tbl(l_index).start_date :=  lcu_oblg_rec.start_date;
7799                          p_obligation_tbl(l_index).end_date :=  lcu_oblg_rec.end_date;
7800                        END IF;
7801 
7802   --------------------------------------------------------------------------------------------------------------------------------------
7803                         IF( (p_obligation_tbl(l_index).company_name IS NOT NULL AND p_obligation_tbl(l_index).company_name <>  pn_lease_utils.g_pn_miss_char)
7804                           OR
7805                           (p_obligation_tbl(l_index).company_id IS NOT NULL AND p_obligation_tbl(l_index).company_id  <>  pn_lease_utils.g_pn_miss_num)
7806                           ) THEN
7807                     --------------------dbms_output.put_line (' COMPANY NAME AND COMPANY ID ARE NOT NULL');
7808                     --------------------dbms_output.put_line (' COMPANY NAME      :'||p_obligation_tbl(l_index).company_name);
7809                     --------------------dbms_output.put_line (' COMPANY ID :'||p_obligation_tbl(l_index).company_id);
7810 
7811                           PN_LEASE_UTILS.VALIDATE_COMPANY_ID ( p_company_name    =>    p_obligation_tbl(l_index).company_name
7812                                                             , x_company_id      =>    p_obligation_tbl(l_index).company_id
7813                                                             , x_return_status   =>    x_return_status
7814                                                         );
7815                             IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7816                                RAISE fnd_api.g_exc_error;
7817                             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7818                                RAISE fnd_api.g_exc_unexpected_error;
7819                            END IF;
7820                       ELSIF (p_obligation_tbl(l_index).company_name IS NULL OR p_obligation_tbl(l_index).company_id IS NULL) THEN
7821                         p_obligation_tbl(l_index).company_id := NULL;
7822                      ELSE
7823                         p_obligation_tbl(l_index).company_id   :=  lcu_oblg_rec.company_id;
7824                      END IF;
7825 
7826 ---------------------------------------------------------------------------------------------------------------------------
7827                      /*IF p_obligation_tbl(l_index).company_id IS NULL AND p_obligation_tbl(l_index).company_name IS NULL THEN
7828                            p_obligation_tbl(l_index).company_id   :=  lcu_oblg_rec.company_id;
7829                      END IF;*/
7830 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7831                       IF(p_obligation_tbl(l_index).status = PN_LEASE_UTILS.g_pn_miss_char OR p_obligation_tbl(l_index).status NOT IN ('A','I','n'))THEN
7832                           p_obligation_tbl(l_index).status:= lcu_oblg_rec.status;
7833                       ELSIF(p_obligation_tbl(l_index).status IS NULL) THEN
7834                           p_obligation_tbl(l_index).status := 'I';
7835                       END IF;
7836     --------------------------------------------------------------------------------------------------------------------------------------------------------------
7837 
7838 
7839                         IF ( (p_obligation_tbl(l_index).service_type <> pn_lease_utils.g_pn_miss_char AND p_obligation_tbl(l_index).service_type IS NOT NULL)
7840                         OR (p_obligation_tbl(l_index).service_type_lookup_code <> pn_lease_utils.g_pn_miss_char AND p_obligation_tbl(l_index).service_type_lookup_code IS NOT NULL)
7841                          ) THEN
7842                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_service_type
7843                                                     , p_lookup_meaning      =>       p_obligation_tbl(l_index).service_type
7844                                                     , p_operation           =>      'UPDATE_OBLIGATION'
7845                                                     , p_lookup_type         =>      l_pn_landlord_service_type
7846                                                     , x_return_status       =>      x_return_status
7847                                                     , x_lookup_type_code    =>      p_obligation_tbl(l_index).service_type_lookup_code
7848                                                     );
7849                                              ------------------dbms_output.put_line('In Resp:1'||x_return_status);
7850                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7851                           --l_error_flag:='Y';
7852                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7853                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_landlord_service_type);
7854                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).service_type));
7855                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).service_type_lookup_code));
7856                            fnd_msg_pub.ADD;
7857                            RAISE fnd_api.g_exc_error;
7858                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7859                           --l_error_flag:='Y';
7860                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7861                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_service_type,3));
7862                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7863                             fnd_msg_pub.ADD;
7864                             RAISE fnd_api.g_exc_unexpected_error;
7865                       END IF;
7866                   ELSIF(p_obligation_tbl(l_index).service_type IS NULL OR p_obligation_tbl(l_index).service_type_lookup_code IS NULL) THEN
7867                          fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
7868                          fnd_message.set_token ('API_NAME', l_api_name);
7869                          fnd_message.set_token ('NULL_PARAM', 'SERVICE_TYPE AND SERVICE_TYPE_LOOKUP_CODE CANNOT BE NULL');
7870                          fnd_msg_pub.ADD;
7871                          RAISE fnd_api.g_exc_error;
7872                   ELSE
7873                       p_obligation_tbl(l_index).service_type_lookup_code := lcu_oblg_rec.service_type_lookup_code;
7874                   END IF;
7875 
7876                      --------------------------------------------------------------------------------------------------------------
7877                          IF ( ( p_obligation_tbl(l_index).responsibility IS NOT NULL    AND p_obligation_tbl(l_index).responsibility <> pn_lease_utils.g_pn_miss_char)
7878                           OR (p_obligation_tbl(l_index).responsibility_code IS NOT NULL AND p_obligation_tbl(l_index).responsibility_code <> pn_lease_utils.g_pn_miss_char)
7879                            ) THEN
7880                       pn_lease_utils.get_lookup_code(p_parameter_name      =>   l_param_responsibility
7881                                                     ,p_lookup_meaning      =>   p_obligation_tbl(l_index).responsibility
7882                                                     ,p_operation           =>   'UPDATE_OBLIGATION'
7883                                                     ,p_lookup_type         =>   l_pn_obligation_resp_type
7884                                                     ,x_return_status       =>   x_return_status
7885                                                     ,x_lookup_type_code    =>   p_obligation_tbl(l_index).responsibility_code
7886                                                     );
7887                        ----------------dbms_output.put_line('In Resp:123'||x_return_status);
7888                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7889                           --l_error_flag:='Y';
7890                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7891                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_obligation_resp_type);
7892                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).responsibility));
7893                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).responsibility_code));
7894                            fnd_msg_pub.ADD;
7895                            RAISE fnd_api.g_exc_error;
7896                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7897                           --l_error_flag:='Y';
7898                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7899                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_responsibility,3));
7900                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7901                             fnd_msg_pub.ADD;
7902                             RAISE fnd_api.g_exc_unexpected_error;
7903                       END IF;
7904                    ELSIF(p_obligation_tbl(l_index).responsibility IS NULL OR p_obligation_tbl(l_index).responsibility_code IS NULL) THEN
7905                         p_obligation_tbl(l_index).responsibility_code := NULL;
7906                    ELSE
7907                        p_obligation_tbl(l_index).responsibility_code := lcu_oblg_rec.responsibility_code;
7908                     END IF;
7909 
7910 
7911 -------------------------------------------------------------------------------------------------------------------------------------------------------------------
7912                   IF (  ( p_obligation_tbl(l_index).financial_resp_party IS NOT NULL AND p_obligation_tbl(l_index).financial_resp_party <>pn_lease_utils.g_pn_miss_char)
7913                      OR ( p_obligation_tbl(l_index).financial_resp_party_code IS NOT NULL AND p_obligation_tbl(l_index).financial_resp_party_code <>pn_lease_utils.g_pn_miss_char)
7914                       ) THEN
7915                        pn_lease_utils.get_lookup_code( p_parameter_name   => l_param_financial_resp_party
7916                                                      , p_lookup_meaning   => p_obligation_tbl(l_index).financial_resp_party
7917                                                      , p_operation        => 'UPDATE_OBLIGATION'
7918                                                      , p_lookup_type      => l_pn_obligation_fin_resp_type
7919                                                      , x_return_status    => x_return_status
7920                                                      , x_lookup_type_code => p_obligation_tbl(l_index).financial_resp_party_code
7921                                                     );
7922                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7923                           --l_error_flag:='Y';
7924                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
7925                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_obligation_fin_resp_type);
7926                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_obligation_tbl(l_index).financial_resp_party));
7927                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_obligation_tbl(l_index).financial_resp_party_code));
7928                            fnd_msg_pub.ADD;
7929                            RAISE fnd_api.g_exc_error;
7930                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7931                           --l_error_flag:='Y';
7932                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
7933                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_financial_resp_party,3));
7934                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
7935                             fnd_msg_pub.ADD;
7936                             RAISE fnd_api.g_exc_unexpected_error;
7937                       END IF;
7938                    ELSIF(p_obligation_tbl(l_index).financial_resp_party IS NULL OR p_obligation_tbl(l_index).financial_resp_party_code IS NULL) THEN
7939                           p_obligation_tbl(l_index).financial_resp_party_code := NULL;
7940                    ELSE
7941                         p_obligation_tbl(l_index).financial_resp_party_code := lcu_oblg_rec.financial_resp_party_code;
7942                    END IF;
7943 
7944 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
7945                 /* IF NOT ( (p_obligation_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
7946                                         AND (p_obligation_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
7947                                         AND (p_obligation_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
7948                                         AND (p_obligation_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
7949                                         AND (p_obligation_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
7950                                         AND (p_obligation_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
7951                                         AND (p_obligation_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
7952                                         AND (p_obligation_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
7953                                         AND (p_obligation_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
7954                                         AND (p_obligation_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
7955                                         AND (p_obligation_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
7956                                         AND (p_obligation_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
7957                                         AND (p_obligation_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
7958                                         AND (p_obligation_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
7959                                         AND (p_obligation_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
7960                                         AND (p_obligation_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
7961                                 ) THEN*/
7962                                      IF (p_obligation_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
7963                                        p_obligation_tbl(l_index).attribute_category  := lcu_oblg_rec.attribute_category;
7964                                      ELSIF(p_obligation_tbl(l_index).attribute_category IS NULL) THEN
7965                                          p_obligation_tbl(l_index).attribute1 := NULL;
7966                                      END IF;
7967                                      IF (p_obligation_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
7968                                          p_obligation_tbl(l_index).attribute1  := lcu_oblg_rec.attribute1;
7969                                      ELSIF(p_obligation_tbl(l_index).attribute1 IS NULL) THEN
7970                                          p_obligation_tbl(l_index).attribute1 := NULL;
7971                                      END IF;
7972 
7973                                      IF (p_obligation_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
7974                                          p_obligation_tbl(l_index).attribute2  := lcu_oblg_rec.attribute2;
7975                                      ELSIF(p_obligation_tbl(l_index).attribute2 IS NULL) THEN
7976                                          p_obligation_tbl(l_index).attribute2 := NULL;
7977                                      END IF;
7978                                      IF (p_obligation_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
7979                                          p_obligation_tbl(l_index).attribute3  := lcu_oblg_rec.attribute3;
7980                                      ELSIF(p_obligation_tbl(l_index).attribute3 IS NULL) THEN
7981                                          p_obligation_tbl(l_index).attribute3 := NULL;
7982                                      END IF;
7983                                      IF (p_obligation_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
7984                                          p_obligation_tbl(l_index).attribute4  := lcu_oblg_rec.attribute4;
7985                                      ELSIF(p_obligation_tbl(l_index).attribute4 IS NULL) THEN
7986                                          p_obligation_tbl(l_index).attribute4 := NULL;
7987                                      END IF;
7988                                      IF (p_obligation_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
7989                                          p_obligation_tbl(l_index).attribute5  := lcu_oblg_rec.attribute5;
7990                                      ELSIF(p_obligation_tbl(l_index).attribute5 IS NULL) THEN
7991                                          p_obligation_tbl(l_index).attribute5 := NULL;
7992                                      END IF;
7993                                      IF (p_obligation_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
7994                                          p_obligation_tbl(l_index).attribute6  := lcu_oblg_rec.attribute6;
7995                                      ELSIF(p_obligation_tbl(l_index).attribute6 IS NULL) THEN
7996                                          p_obligation_tbl(l_index).attribute6 := NULL;
7997                                      END IF;
7998                                      IF (p_obligation_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
7999                                          p_obligation_tbl(l_index).attribute7  := lcu_oblg_rec.attribute7;
8000                                      ELSIF(p_obligation_tbl(l_index).attribute7 IS NULL) THEN
8001                                          p_obligation_tbl(l_index).attribute7 := NULL;
8002                                      END IF;
8003                                      IF (p_obligation_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
8004                                          p_obligation_tbl(l_index).attribute8  := lcu_oblg_rec.attribute8;
8005                                      ELSIF(p_obligation_tbl(l_index).attribute8 IS NULL) THEN
8006                                          p_obligation_tbl(l_index).attribute8 := NULL;
8007                                      END IF;
8008                                      IF (p_obligation_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
8009                                          p_obligation_tbl(l_index).attribute9  := lcu_oblg_rec.attribute9;
8010                                      ELSIF(p_obligation_tbl(l_index).attribute9 IS NULL) THEN
8011                                          p_obligation_tbl(l_index).attribute9 := NULL;
8012                                      END IF;
8013                                      IF (p_obligation_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
8014                                          p_obligation_tbl(l_index).attribute10  := lcu_oblg_rec.attribute10;
8015                                      ELSIF(p_obligation_tbl(l_index).attribute10 IS NULL) THEN
8016                                          p_obligation_tbl(l_index).attribute10 := NULL;
8017                                      END IF;
8018                                      IF (p_obligation_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
8019                                          p_obligation_tbl(l_index).attribute11  := lcu_oblg_rec.attribute11;
8020                                      ELSIF(p_obligation_tbl(l_index).attribute11 IS NULL) THEN
8021                                          p_obligation_tbl(l_index).attribute11 := NULL;
8022                                      END IF;
8023                                      IF (p_obligation_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
8024                                          p_obligation_tbl(l_index).attribute12  := lcu_oblg_rec.attribute12;
8025                                      ELSIF(p_obligation_tbl(l_index).attribute12 IS NULL) THEN
8026                                          p_obligation_tbl(l_index).attribute12 := NULL;
8027                                      END IF;
8028                                      IF (p_obligation_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
8029                                          p_obligation_tbl(l_index).attribute13  := lcu_oblg_rec.attribute13;
8030                                      ELSIF(p_obligation_tbl(l_index).attribute13 IS NULL) THEN
8031                                          p_obligation_tbl(l_index).attribute13 := NULL;
8032                                      END IF;
8033                                      IF (p_obligation_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
8034                                          p_obligation_tbl(l_index).attribute14  := lcu_oblg_rec.attribute14;
8035                                      ELSIF(p_obligation_tbl(l_index).attribute14 IS NULL) THEN
8036                                          p_obligation_tbl(l_index).attribute14 := NULL;
8037                                      END IF;
8038                                      IF (p_obligation_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
8039                                          p_obligation_tbl(l_index).attribute15  := lcu_oblg_rec.attribute15;
8040                                      ELSIF(p_obligation_tbl(l_index).attribute15 IS NULL) THEN
8041                                          p_obligation_tbl(l_index).attribute15 := NULL;
8042                                      END IF;
8043 
8044                                 PN_LEASE_UTILS.validate_desc_flex (
8045                                                  p_api_name => 'PN_LANDLORD_SERVICES'--l_api_name_full
8046                                                , p_application_short_name => 'PN'
8047                                                , p_desc_flex_name => 'PN_LANDLORD_SERVICES'
8048                                                , p_desc_segment1 => p_obligation_tbl(l_index).attribute1
8049                                                , p_desc_segment2 => p_obligation_tbl(l_index).attribute2
8050                                                , p_desc_segment3 => p_obligation_tbl(l_index).attribute3
8051                                                , p_desc_segment4 => p_obligation_tbl(l_index).attribute4
8052                                                , p_desc_segment5 => p_obligation_tbl(l_index).attribute5
8053                                                , p_desc_segment6 => p_obligation_tbl(l_index).attribute6
8054                                                , p_desc_segment7 => p_obligation_tbl(l_index).attribute7
8055                                                , p_desc_segment8 => p_obligation_tbl(l_index).attribute8
8056                                                , p_desc_segment9 => p_obligation_tbl(l_index).attribute9
8057                                                , p_desc_segment10 =>p_obligation_tbl(l_index).attribute10
8058                                                , p_desc_segment11 =>p_obligation_tbl(l_index).attribute11
8059                                                , p_desc_segment12 =>p_obligation_tbl(l_index).attribute12
8060                                                , p_desc_segment13 =>p_obligation_tbl(l_index).attribute13
8061                                                , p_desc_segment14 =>p_obligation_tbl(l_index).attribute14
8062                                                , p_desc_segment15 =>p_obligation_tbl(l_index).attribute15
8063                                                , p_desc_context => p_obligation_tbl(l_index).attribute_category
8064                                                , p_resp_appl_id => fnd_global.resp_appl_id
8065                                                , p_resp_id      => fnd_global.resp_id
8066                                                , p_return_status=> x_return_status
8067                                                 );
8068                                        --------------------dbms_output.put_line('dff validated');
8069                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8070                                              l_tbl_flag  :=  0;
8071                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8072                                              fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
8073                                              fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
8074                                              fnd_msg_pub.ADD;
8075                                              RAISE fnd_api.g_exc_error;
8076                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8077                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8078                                             fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
8079                                             fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
8080                                             fnd_msg_pub.ADD;
8081                                             RAISE fnd_api.g_exc_unexpected_error;
8082                                         END IF;
8083                               -- END IF;
8084 
8085                                CLOSE c_oblg;
8086                 END IF;
8087                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
8088                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
8089          EXCEPTION
8090            WHEN fnd_api.g_exc_error THEN
8091                          pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
8092            WHEN OTHERS THEN
8093                         pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
8094         END;
8095      END loop;
8096            x_tbl        :=      l_tbl;
8097            x_return_status     :=      fnd_api.g_ret_sts_success;
8098     EXCEPTION
8099       WHEN fnd_api.g_exc_error THEN
8100         x_return_status := fnd_api.g_ret_sts_error;
8101         --------------------dbms_output.put_line('OBLIGATION VALIDATION  FAILED');
8102     WHEN OTHERS THEN
8103        x_return_status := fnd_api.g_ret_sts_unexp_error;
8104        pvt_debug(g_pkg_name||'-VALIDATE_OBLIGATION_FOR_UPDATE:OTHERS:EXCEPTION:'||SQLERRM,3);
8105    END VALIDATE_OBLIGATION_FOR_UPDATE;
8106 
8107    PROCEDURE OBLIGATION_UPDATE_ROW (p_obligation_tbl        IN OUT  NOCOPY    lease_obligation_tbl_type
8108                                 ,p_lease_id        IN           PN_LEASES_ALL.LEASE_ID%type
8109                                 ,p_lease_change_id IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
8110                                 ,x_return_status   OUT    NOCOPY      VARCHAR2
8111                                 ,p_tbl             IN           temp_tbl_type
8112                                 ,p_commit           IN          VARCHAR2
8113                             )
8114     IS
8115                                 l_return_status     VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
8116                                 l_index             BINARY_INTEGER;
8117                                 l_landlord_service_id          pn_landlord_services_all.LANDLORD_SERVICE_ID%TYPE;
8118                                 l_err_obg_count NUMBER:=0;
8119 
8120     BEGIN
8121           pvt_debug(g_pkg_name||'-Inside OBLIGATION_UPDATE_ROW',3);
8122         ----------------------dbms_output.put_line('RECORD UPDATE STARTED FOR OBLIGATIONS');--Rupak
8123         for l_index in p_obligation_tbl.FIRST..p_obligation_tbl.LAST LOOP
8124          BEGIN
8125           ----------------------dbms_output.put_line('RECORD UPDATE STARTED FOR OBLIGATIONSIN FOR LOOP');--Rupak
8126             IF p_tbl(l_index).temp_flag =   2 THEN
8127                 ----------------------dbms_output.put_line('RECORD UPDATE STARTED FOR OBLIGATIONSIN FOR LOOP IN IF');--Rupak
8128                 pvt_debug(g_pkg_name||'-OBLIGATION_UPDATE_ROW:Calling PN_LANDLORD_SERVICES_PKG.update_Row',3);
8129                 BEGIN
8130                     PN_LANDLORD_SERVICES_PKG.update_Row
8131                 (
8132                 X_LANDLORD_SERVICE_ID           =>     p_obligation_tbl(l_index).landlord_service_id,
8133                 X_LEASE_ID                      =>     p_lease_id,
8134                 X_LEASE_CHANGE_ID               =>     p_lease_change_id,
8135                 X_SERVICE_TYPE_LOOKUP_CODE      =>     p_obligation_tbl(l_index).service_type_lookup_code,
8136                 X_START_DATE                    =>     p_obligation_tbl(l_index).start_date,
8137                 X_END_DATE                      =>     p_obligation_tbl(l_index).end_date,
8138                 X_STATUS                        =>     p_obligation_tbl(l_index).status,
8139                 X_ATTRIBUTE_CATEGORY            =>     p_obligation_tbl(l_index).attribute_category,
8140                 X_ATTRIBUTE1                    =>     p_obligation_tbl(l_index).attribute1,
8141                 X_ATTRIBUTE2                    =>     p_obligation_tbl(l_index).attribute1,
8142                 X_ATTRIBUTE3                    =>     p_obligation_tbl(l_index).attribute1,
8143                 X_ATTRIBUTE4                    =>     p_obligation_tbl(l_index).attribute1,
8144                 X_ATTRIBUTE5                    =>     p_obligation_tbl(l_index).attribute1,
8145                 X_ATTRIBUTE6                    =>     p_obligation_tbl(l_index).attribute1,
8146                 X_ATTRIBUTE7                    =>     p_obligation_tbl(l_index).attribute1,
8147                 X_ATTRIBUTE8                    =>     p_obligation_tbl(l_index).attribute1,
8148                 X_ATTRIBUTE9                    =>     p_obligation_tbl(l_index).attribute1,
8149                 X_ATTRIBUTE10                   =>     p_obligation_tbl(l_index).attribute1,
8150                 X_ATTRIBUTE11                   =>     p_obligation_tbl(l_index).attribute1,
8151                 X_ATTRIBUTE12                   =>     p_obligation_tbl(l_index).attribute1,
8152                 X_ATTRIBUTE13                   =>     p_obligation_tbl(l_index).attribute1,
8153                 X_ATTRIBUTE14                   =>     p_obligation_tbl(l_index).attribute1,
8154                 X_ATTRIBUTE15                   =>     p_obligation_tbl(l_index).attribute1,
8155                 X_LAST_UPDATE_DATE              =>     sysdate,
8156                 X_LAST_UPDATED_BY               =>     fnd_global.user_id,
8157                 X_LAST_UPDATE_LOGIN             =>     fnd_global.user_id,
8158                 X_OBLIGATION_NUM                =>     p_obligation_tbl(l_index).obligation_num,
8159                 X_RESPONSIBILITY_CODE           =>     p_obligation_tbl(l_index).responsibility_code,
8160                 X_COMMON_AREA_RESP              =>     p_obligation_tbl(l_index).common_area_resp,
8161                 X_FINANCIAL_RESP_PARTY_CODE     =>     p_obligation_tbl(l_index).financial_resp_party_code,
8162                 X_FINANCIAL_PCT_RESP            =>     p_obligation_tbl(l_index).financial_pct_resp,
8163                 X_RESPONSIBILITY_MAINT          =>     p_obligation_tbl(l_index).responsibility_maint,
8164                 X_COMPANY_ID                    =>     p_obligation_tbl(l_index).company_id,
8165                 X_OBLIGATION_REFERENCE          =>     p_obligation_tbl(l_index).obligation_reference,
8166                 X_OBLIGATION_COMMENTS           =>     p_obligation_tbl(l_index).obligation_comments
8167                 );
8168                 ----------------------dbms_output.put_line('RECORD '||l_index||' UPDATED FOR OBLIGATIONS');--Rupak
8169                 pvt_debug(g_pkg_name||'-OBLIGATION_UPDATE_ROW:PN_LANDLORD_SERVICES_PKG.update_Row Successful',3);
8170 
8171                 EXCEPTION
8172                 WHEN OTHERS THEN
8173                   ----------------------dbms_output.put_line('EXCEPTION:UPDATE OBLIGATIONS'||SQLERRM);--Rupak
8174                   pvt_debug(g_pkg_name||'-OBLIGATION_UPDATE_ROW:Exception:PN_LANDLORD_SERVICES_PKG.update_Row'||SQLERRM,3);
8175                   null;
8176                 END;
8177               END IF;
8178        EXCEPTION
8179          WHEN fnd_api.g_exc_error THEN
8180             l_err_obg_count :=l_err_obg_count+1;
8181          WHEN OTHERS THEN
8182             l_err_obg_count :=l_err_obg_count+1;
8183        END;
8184 
8185         END LOOP;
8186 
8187        IF (l_err_obg_count = 0) THEN
8188           x_return_status:= fnd_api.g_ret_sts_success;
8189        ELSE
8190           x_return_status:= fnd_api.g_ret_sts_error;
8191        END IF;
8192 
8193 
8194     EXCEPTION
8195     WHEN OTHERS THEN
8196      x_return_status := fnd_api.g_ret_sts_unexp_error;
8197     ----------------------dbms_output.put_line ('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
8198     pvt_debug(g_pkg_name||'-OBLIGATION_UPDATE_ROW:Exception:'||SQLERRM,3);
8199     END OBLIGATION_UPDATE_ROW;
8200 
8201       PROCEDURE UPDATE_OBLIGATION (
8202                           p_lease_id          IN          PN_LEASES_ALL.LEASE_ID%TYPE
8203                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
8204                         , p_commit            IN          VARCHAR2
8205                         , p_validate          IN          VARCHAR2
8206                         , p_obligation_tbl          IN OUT  NOCOPY    lease_obligation_tbl_type
8207                         , x_return_status     OUT    NOCOPY     VARCHAR2
8208              --           , x_msg_count         OUT         NUMBER
8209              --           , x_msg_data          OUT         VARCHAR2
8210                 )
8211         IS
8212             l_return_status                             VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
8213             l_msg_count                                 NUMBER                                      ;
8214             l_msg_data                                  VARCHAR2(2000)                              ;
8215             x_out_tbl                                   temp_tbl_type;
8216 
8217             p_obligation_tbl_create      lease_obligation_tbl_type;
8218             p_obligation_tbl_update      lease_obligation_tbl_type;
8219             m NUMBER;
8220             n NUMBER;
8221             l_err_obligation_cnt NUMBER:=0;
8222 
8223        BEGIN
8224      x_return_status  :=    fnd_api.g_ret_sts_success;
8225 ----------------------dbms_output.put_line('In Obligation:1');--Rupak
8226            m:=1;
8227            n:=1;
8228            FOR i IN 1..p_obligation_tbl.COUNT
8229            LOOP
8230              IF(p_obligation_tbl(i).landlord_service_id IS NOT NULL AND p_obligation_tbl(i).landlord_service_id <> pn_lease_utils.g_pn_miss_num) THEN
8231 
8232                   --p_obligation_tbl(i).p_null_id := 'N';
8233                   p_obligation_tbl_update(n):=p_obligation_tbl(i);
8234                   n:=n+1;
8235              ELSE
8236 
8237                 --p_obligation_tbl(i).p_null_id := 'Y';
8238                 p_obligation_tbl_create(m):=p_obligation_tbl(i);
8239                 m:=m+1;
8240              END IF;
8241            END LOOP;
8242    IF(p_obligation_tbl_update.COUNT > 0) THEN
8243             VALIDATE_OBLIGATION_FOR_UPDATE(
8244                                 p_obligation_tbl    =>       p_obligation_tbl_update
8245                                ,p_lease_id          =>       p_lease_id
8246                                ,p_lease_change_id   =>       p_lease_change_id
8247                                ,x_tbl               =>       x_out_tbl
8248                                ,x_return_status     =>       x_return_status
8249                             );
8250 ----------------------dbms_output.put_line('In Obligation:2');--Rupak
8251          IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
8252              ----------------------dbms_output.put_line('In Obligation:3');--Rupak
8253                 OBLIGATION_UPDATE_ROW(
8254                 p_obligation_tbl               =>          p_obligation_tbl_update
8255               , p_lease_id                     =>          p_lease_id
8256               , p_lease_change_id              =>          p_lease_change_id
8257               , x_return_status                =>          x_return_status
8258               , p_tbl                          =>          x_out_tbl
8259               , p_commit                       =>          p_commit
8260                );
8261               pvt_debug(g_pkg_name||'-UPDATE_OBLIGATION:RETURN STATUS:'||x_return_status,3);
8262         ELSIF  (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8263            --x_return_status := fnd_api.g_ret_sts_unexp_error;
8264            l_err_obligation_cnt := l_err_obligation_cnt + 1;
8265         ELSE
8266           --x_return_status := fnd_api.g_ret_sts_error;
8267           l_err_obligation_cnt := l_err_obligation_cnt + 1;
8268         END IF;
8269    END IF;
8270 
8271      IF(p_obligation_tbl_create.COUNT > 0) THEN
8272               VALIDATE_OBLIGATION_FOR_CREATE(
8273                                  p_obligation_tbl   =>      p_obligation_tbl_create
8274                                 ,p_lease_id         =>      p_lease_id
8275                                 ,p_lease_change_id  =>      p_lease_change_id
8276                                 ,x_tbl              =>      x_out_tbl
8277                                 ,x_return_status    =>  x_return_status
8278                                  );
8279               IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
8280                                     OBLIGATION_INSERT_ROW(
8281                                                     p_obligation_tbl  =>  p_obligation_tbl_create
8282                                                     ,p_lease_id =>  p_lease_id
8283                                                     ,p_lease_change_id  =>  p_lease_change_id
8284                                                     ,x_return_status    =>  x_return_status
8285                                                     ,p_tbl      =>  x_out_tbl
8286                                                     ,p_commit   =>  p_commit
8287                                                     );
8288                       IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
8289                            --RAISE fnd_api.g_exc_error;
8290                            l_err_obligation_cnt := l_err_obligation_cnt + 1;
8291                       END IF;
8292              ELSE
8293              --RAISE fnd_api.g_exc_error;
8294                 l_err_obligation_cnt := l_err_obligation_cnt + 1;
8295              END IF;
8296 
8297       END IF;
8298         IF(l_err_obligation_cnt = 0) THEN
8299           x_return_status := fnd_api.g_ret_sts_success;
8300         ELSE
8301           x_return_status := fnd_api.g_ret_sts_error;
8302         END IF;
8303 
8304     EXCEPTION
8305       WHEN fnd_api.g_exc_unexpected_error THEN
8306           x_return_status:= fnd_api.g_ret_sts_unexp_error;
8307       WHEN OTHERS THEN
8308          x_return_status:= fnd_api.g_ret_sts_unexp_error;
8309     END UPDATE_OBLIGATION;
8310 
8311     PROCEDURE VALIDATE_MILESTONE_FOR_CREATE(
8312                                       p_milestone_tbl       IN OUT NOCOPY lease_milestone_tbl_type
8313                                      ,x_tbl                 IN OUT NOCOPY temp_tbl_type
8314                                      ,x_return_status       OUT  NOCOPY   VARCHAR2
8315 
8316 
8317     )IS
8318     l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
8319     l_index                                     BINARY_INTEGER;
8320     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
8321     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
8322     l_user_id                                   NUMBER;
8323     l_tbl_index                                 BINARY_INTEGER;
8324     l_tbl_flag                                  NUMBER                                      :=  1;
8325     l_tbl                                       temp_tbl_type;
8326     l_api_name                                  VARCHAR2(30)    :=  'CREATE MILESTONE';
8327     BEGIN
8328    ----------------------dbms_output.put_line('VALIDATIONS FOR MILESTONE CREATION STARTED');
8329          pvt_debug(g_pkg_name||'-Inside VALIDATE_MILESTONE_FOR_CREATE',3);
8330                   FOR l_index in p_milestone_tbl.FIRST.. p_milestone_tbl.LAST
8331                     LOOP
8332                      BEGIN
8333                       INITIALIZE_MILESTONE_REC(p_milestone_tbl(l_index),'CREATE_MILESTONE',x_return_status);
8334                       l_tbl_index      :=      l_index;
8335 -------------------------------------------------------------------------------------------------
8336                     IF ( (p_milestone_tbl(l_index).milestone_type IS NOT NULL OR p_milestone_tbl(l_index).milestone_type_code IS NOT NULL)
8337                        ) THEN
8338                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_milestone_type
8339                                                     , p_lookup_meaning      =>      p_milestone_tbl(l_index).milestone_type
8340                                                     , p_operation           =>      'CREATE_MILESTONE'
8341                                                     , p_lookup_type         =>      l_pn_milestones_type
8342                                                     , x_return_status       =>      x_return_status
8343                                                     , x_lookup_type_code    =>      p_milestone_tbl(l_index).milestone_type_code
8344                                                     );
8345                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8346                           --l_error_flag:='Y';
8347                            l_tbl_flag  :=  0;
8348                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
8349                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_milestones_type);
8350                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_milestone_tbl(l_index).milestone_type));
8351                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_milestone_tbl(l_index).milestone_type_code));
8352                            fnd_msg_pub.ADD;
8353                            RAISE fnd_api.g_exc_error;
8354                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8355                           --l_error_flag:='Y';
8356                             l_tbl_flag  :=  0;
8357                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8358                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_milestone_type,3));
8359                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
8360                             fnd_msg_pub.ADD;
8361                             RAISE fnd_api.g_exc_unexpected_error;
8362                       END IF;
8363                   ELSE
8364                       l_tbl_flag  :=  0;
8365                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
8366                       fnd_message.set_token ('API_NAME', l_api_name);
8367                       fnd_message.set_token ('NULL_PARAM', l_pn_milestones_type);
8368                       fnd_msg_pub.ADD;
8369                       RAISE fnd_api.g_exc_error;
8370                   END IF;
8371 
8372  ----------------------------------------------------------------------------------------------------------------------------------------------
8373 
8374                       IF (p_milestone_tbl(l_index).user_name IS NOT NULL OR p_milestone_tbl(l_index).user_id IS NOT NULL) THEN
8375                            pn_lease_utils.get_user_id ( p_parameter_name       =>  l_param_milestone_user_name
8376                                                       , p_operation            =>  'CREATE_MILESTONE'
8377                                                       , p_user_name            =>   p_milestone_tbl(l_index).user_name
8378                                                       , x_user_id              =>   p_milestone_tbl(l_index).user_id
8379                                                       , x_return_status        =>   x_return_status
8380                                                      );
8381                            IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8382                           --l_error_flag:='Y';
8383                             l_tbl_flag  :=  0;
8384                              fnd_message.set_name ('PN', 'PN_INVALID_USER');
8385                              fnd_message.set_token ('USER_NAME', p_milestone_tbl(l_index).user_name);
8386                              fnd_message.set_token ('USER_ID', p_milestone_tbl(l_index).user_id);
8387                              fnd_msg_pub.ADD;
8388                              RAISE fnd_api.g_exc_error;
8389                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8390                           --l_error_flag:='Y';
8391                             l_tbl_flag  :=  0;
8392                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8393                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_milestone_user_name,3));
8394                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
8395                             fnd_msg_pub.ADD;
8396                             RAISE fnd_api.g_exc_unexpected_error;
8397                       END IF;
8398                   ELSE
8399                       l_tbl_flag  :=  0;
8400                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
8401                       fnd_message.set_token ('API_NAME', l_api_name);
8402                       fnd_message.set_token ('NULL_PARAM', 'User Name or User ID NULL');
8403                       fnd_msg_pub.ADD;
8404                       RAISE fnd_api.g_exc_error;
8405                   END IF;
8406 
8407 
8408 ----------------------------------------------------------------------------------------------------------------------------------------------------------
8409                         IF  p_milestone_tbl(l_index).action_due_date IS NULL THEN
8410                             l_tbl_flag  :=  0;
8411                             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
8412                             fnd_message.set_token ('API_NAME', l_api_name);
8413                             fnd_message.set_token ('NULL_PARAM', 'Action Due Date:NULL');
8414                             fnd_msg_pub.ADD;
8415                             RAISE fnd_api.g_exc_error;
8416                               /*PN_LEASE_UTILS.ADD_NULL_PARAMETER_MSG  (p_token_apiname => l_api_name
8417                                                                       ,p_token_nullparam =>'ACTION DUE DATE'  );*/
8418                       END IF;
8419 ------------------------------------------------------------------------------------------------------------------------------------------------------------
8420 
8421                   --  dff validations
8422                         IF NOT (            (p_milestone_tbl(l_index).attribute_category = fnd_api.g_null_char)
8423                                         AND (p_milestone_tbl(l_index).attribute1 = fnd_api.g_null_char)
8424                                         AND (p_milestone_tbl(l_index).attribute2 = fnd_api.g_null_char)
8425                                         AND (p_milestone_tbl(l_index).attribute3 = fnd_api.g_null_char)
8426                                         AND (p_milestone_tbl(l_index).attribute4 = fnd_api.g_null_char)
8427                                         AND (p_milestone_tbl(l_index).attribute5 = fnd_api.g_null_char)
8428                                         AND (p_milestone_tbl(l_index).attribute6 = fnd_api.g_null_char)
8429                                         AND (p_milestone_tbl(l_index).attribute7 = fnd_api.g_null_char)
8430                                         AND (p_milestone_tbl(l_index).attribute8 = fnd_api.g_null_char)
8431                                         AND (p_milestone_tbl(l_index).attribute9 = fnd_api.g_null_char)
8432                                         AND (p_milestone_tbl(l_index).attribute10 = fnd_api.g_null_char)
8433                                         AND (p_milestone_tbl(l_index).attribute11 = fnd_api.g_null_char)
8434                                         AND (p_milestone_tbl(l_index).attribute12 = fnd_api.g_null_char)
8435                                         AND (p_milestone_tbl(l_index).attribute13 = fnd_api.g_null_char)
8436                                         AND (p_milestone_tbl(l_index).attribute14 = fnd_api.g_null_char)
8437                                         AND (p_milestone_tbl(l_index).attribute15 = fnd_api.g_null_char)
8438                                 ) THEN
8439                                PN_LEASE_UTILS.validate_desc_flex (
8440                                                  p_api_name => 'PN_API'--l_api_name_full
8441                                                , p_application_short_name => 'PN'
8442                                                , p_desc_flex_name => 'PN_LEASE_MILESTONES'
8443                                                , p_desc_segment1 => p_milestone_tbl(l_index).attribute1
8444                                                , p_desc_segment2 => p_milestone_tbl(l_index).attribute2
8445                                                , p_desc_segment3 => p_milestone_tbl(l_index).attribute3
8446                                                , p_desc_segment4 => p_milestone_tbl(l_index).attribute4
8447                                                , p_desc_segment5 => p_milestone_tbl(l_index).attribute5
8448                                                , p_desc_segment6 => p_milestone_tbl(l_index).attribute6
8449                                                , p_desc_segment7 => p_milestone_tbl(l_index).attribute7
8450                                                , p_desc_segment8 => p_milestone_tbl(l_index).attribute8
8451                                                , p_desc_segment9 => p_milestone_tbl(l_index).attribute9
8452                                                , p_desc_segment10 =>p_milestone_tbl(l_index).attribute10
8453                                                , p_desc_segment11 =>p_milestone_tbl(l_index).attribute11
8454                                                , p_desc_segment12 =>p_milestone_tbl(l_index).attribute12
8455                                                , p_desc_segment13 =>p_milestone_tbl(l_index).attribute13
8456                                                , p_desc_segment14 =>p_milestone_tbl(l_index).attribute14
8457                                                , p_desc_segment15 =>p_milestone_tbl(l_index).attribute15
8458                                                , p_desc_context => p_milestone_tbl(l_index).attribute_category
8459                                                , p_resp_appl_id  => fnd_global.RESP_APPL_ID
8460                                                , p_resp_id       => fnd_global.RESP_ID
8461                                                , p_return_status => x_return_status
8462                                                 );
8463                                         IF (x_return_status = fnd_api.g_ret_sts_error)
8464                                         THEN
8465                                               l_tbl_flag  :=  0;
8466                                               fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8467                                               fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
8468                                               fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
8469                                               fnd_msg_pub.ADD;
8470                                               RAISE fnd_api.g_exc_error;
8471                                           ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
8472                                         THEN
8473                                              l_tbl_flag  :=  0;
8474                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8475                                              fnd_message.set_token ('COLUMN', 'PN_LANDLORD_SERVICES_DESC_FIELDS');
8476                                              fnd_message.set_token ('P_TEXT', 'PN_LANDLORD_SERVICES'|| '-'|| SQLERRM);
8477                                              fnd_msg_pub.ADD;
8478                                              RAISE fnd_api.g_exc_unexpected_error;
8479                                         END IF;
8480                           END IF;
8481                             l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
8482             EXCEPTION
8483               WHEN fnd_api.g_exc_error THEN
8484                 ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
8485                   pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_CREATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
8486               WHEN OTHERS THEN
8487                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
8488                    pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_CREATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
8489             END;
8490             ----------------------dbms_output.put_line('Private Contacts:13');--Rupak
8491          END LOOP;
8492           x_tbl       :=      l_tbl;
8493           x_return_status :=  fnd_api.g_ret_sts_success;
8494 
8495     EXCEPTION
8496     WHEN OTHERS THEN
8497       x_return_status := fnd_api.g_ret_sts_unexp_error;
8498          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8499          fnd_message.set_token ('COLUMN', SUBSTR('MILE STONE UNEXP',3));
8500          fnd_message.set_token ('P_TEXT', 'VALIDATE_MILESTONE_FOR_CREATE'|| '-'|| SQLERRM);
8501          fnd_msg_pub.ADD;
8502       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
8503       pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_CREATE:Exception:'||SQLERRM,3);
8504     END VALIDATE_MILESTONE_FOR_CREATE;
8505 
8506 
8507     PROCEDURE MILESTONE_INSERT_ROW(
8508                              p_milestone_tbl        IN OUT NOCOPY lease_milestone_tbl_type
8509                             ,p_lease_id             IN      PN_LEASES_ALL.lease_id%type
8510                             ,p_lease_change_id      IN      PN_LEASE_CHANGES_ALL.lease_change_id%type
8511                             ,p_option_id            IN      PN_LEASE_MILESTONES_ALL.option_id%type
8512                             ,p_insurance_req_id     IN      PN_LEASE_MILESTONES_ALL.insurance_requirement_id%type
8513                             ,p_payment_term_id      IN      PN_LEASE_MILESTONES_ALL.payment_term_id%type
8514                             ,x_return_status        OUT  NOCOPY   VARCHAR2
8515                             ,p_tbl                  IN      temp_tbl_type
8516                             ,p_commit               IN      VARCHAR2
8517                             )
8518         IS
8519         l_index                                 BINARY_INTEGER;
8520         t_index                                 BINARY_INTEGER;
8521         l_row_id                                VARCHAR2(100)            ;
8522         l_milestone_id                          PN_LEASE_MILESTONES_ALL.LEASE_MILESTONE_ID%TYPE;
8523     BEGIN
8524     ----------------------dbms_output.put_line('Inside MILESTONE_INSERT_ROW');--Rupak
8525       pvt_debug(g_pkg_name||'-Inside MILESTONE_INSERT_ROW:',3);
8526             for l_index in p_milestone_tbl.FIRST..p_milestone_tbl.LAST LOOP
8527      ----------------------dbms_output.put_line('In MILESTONE_INSERT_ROW IN FOR OUT IF'||p_tbl(l_index).temp_flag);--Rupak
8528                         IF  p_tbl(l_index).temp_flag = 1 THEN
8529       ----------------------dbms_output.put_line('In MILESTONE_INSERT_ROWIN IF');--Rupak
8530          pvt_debug(g_pkg_name||'-MILESTONE_INSERT_ROW:Calling PN_LEASE_MILESTONES_PKG.INSERT_ROW:',3);
8531                         l_milestone_id      :=  NULL;
8532                         pn_lease_milestones_pkg.insert_row(
8533                        X_ROWID                         =>   l_row_id,
8534                        X_LEASE_MILESTONE_ID            =>   l_milestone_id,
8535                        X_LEASE_CHANGE_ID               =>   p_lease_change_id,
8536                        X_MILESTONE_TYPE_CODE           =>   p_milestone_tbl(l_index).milestone_type_code,
8537                        X_OPTION_ID                     =>   p_option_id,
8538                        X_INSURANCE_REQUIREMENT_ID      =>   p_insurance_req_id,
8539                        X_PAYMENT_TERM_ID               =>   p_payment_term_id,
8540                        X_LEAD_DAYS                     =>   p_milestone_tbl(l_index).lead_days,
8541                        X_EVERY_DAYS                    =>   p_milestone_tbl(l_index).frequency,
8542                        X_ACTION_TAKEN                  =>   NULL,
8543                        X_ACTION_DATE                   =>   NULL,
8544                        X_ATTRIBUTE_CATEGORY            =>   p_milestone_tbl(l_index).attribute_category,
8545                        X_ATTRIBUTE1                    =>   p_milestone_tbl(l_index).attribute1,
8546                        X_ATTRIBUTE2                    =>   p_milestone_tbl(l_index).attribute2,
8547                        X_ATTRIBUTE3                    =>   p_milestone_tbl(l_index).attribute3,
8548                        X_ATTRIBUTE4                    =>   p_milestone_tbl(l_index).attribute4,
8549                        X_ATTRIBUTE5                    =>   p_milestone_tbl(l_index).attribute5,
8550                        X_ATTRIBUTE6                    =>   p_milestone_tbl(l_index).attribute6,
8551                        X_ATTRIBUTE7                    =>   p_milestone_tbl(l_index).attribute7,
8552                        X_ATTRIBUTE8                    =>   p_milestone_tbl(l_index).attribute8,
8553                        X_ATTRIBUTE9                    =>   p_milestone_tbl(l_index).attribute9,
8554                        X_ATTRIBUTE10                   =>   p_milestone_tbl(l_index).attribute10,
8555                        X_ATTRIBUTE11                   =>   p_milestone_tbl(l_index).attribute11,
8556                        X_ATTRIBUTE12                   =>   p_milestone_tbl(l_index).attribute12,
8557                        X_ATTRIBUTE13                   =>   p_milestone_tbl(l_index).attribute13,
8558                        X_ATTRIBUTE14                   =>   p_milestone_tbl(l_index).attribute14,
8559                        X_ATTRIBUTE15                   =>   p_milestone_tbl(l_index).attribute15,
8560                        X_MILESTONE_DATE                =>   p_milestone_tbl(l_index).action_due_date,
8561                        X_USER_ID                       =>   p_milestone_tbl(l_index).user_id,
8562                        X_LEASE_ID                      =>   p_lease_id,
8563                        X_CREATION_DATE                 =>   sysdate,
8564                        X_CREATED_BY                    =>   fnd_global.user_id,
8565                        X_LAST_UPDATE_DATE              =>   sysdate,
8566                        X_LAST_UPDATED_BY               =>   fnd_global.user_id,
8567                        X_LAST_UPDATE_LOGIN             =>   fnd_global.user_id,
8568                        x_org_id                        =>   fnd_global.org_id
8569                      );
8570 
8571                      ----------------------dbms_output.put_line('RECORD FOR MILESTONE CREATED WITH MILESTONE ID:  '|| l_milestone_id);--Rupak
8572                      pvt_debug(g_pkg_name||'-MILESTONE_INSERT_ROW:Calling PN_LEASE_MILESTONES_PKG.INSERT_ROW Successful',3);
8573                      p_milestone_tbl(l_index).lease_milestone_id  :=  l_milestone_id;
8574                  END IF;
8575          END loop;
8576 
8577          x_return_status    :=  fnd_api.g_ret_sts_success;
8578 
8579          EXCEPTION
8580             WHEN OTHERS THEN
8581             x_return_status := fnd_api.g_ret_sts_unexp_error;
8582             ----------------------dbms_output.put_line('INSERT PROCEDURE FAILED FOR MILESTONE CREATION') ;
8583             ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
8584             pvt_debug(g_pkg_name||'-MILESTONE_INSERT_ROW:Exception'||SQLERRM,3);
8585      END MILESTONE_INSERT_ROW;
8586 
8587     PROCEDURE CREATE_MILESTONE (
8588                           p_milestone_tbl     IN OUT   NOCOPY       lease_milestone_tbl_type
8589                         , p_lease_id          IN          PN_LEASES_ALL.lease_id%type
8590                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.lease_change_id%type
8591                         , p_option_id           IN          PN_LEASE_MILESTONES_ALL.option_id%type
8592                         , p_insurance_req_id    IN          PN_LEASE_MILESTONES_ALL.insurance_requirement_id%type
8593                         , p_payment_term_id     IN          PN_LEASE_MILESTONES_ALL.payment_term_id%type
8594                         , p_commit            IN          VARCHAR2
8595                         , p_validate          IN          VARCHAR2
8596                         , x_return_status     OUT  NOCOPY       VARCHAR2
8597              --         , x_msg_count         OUT         NUMBER
8598              --           , x_msg_data          OUT         VARCHAR2
8599     )
8600     IS
8601         l_return_status     VARCHAR2(1)                         :=          fnd_api.g_ret_sts_success           ;
8602         l_msg_count         NUMBER                                                                              ;
8603         l_msg_data          VARCHAR2(2000)                                                                      ;
8604         x_out_tbl           temp_tbl_type                                                                       ;
8605     BEGIN
8606         VALIDATE_MILESTONE_FOR_CREATE(
8607                                       p_milestone_tbl       =>  p_milestone_tbl
8608                                      ,x_tbl                 =>  x_out_tbl
8609                                      ,x_return_status       =>  l_return_status
8610                                       );
8611                      pvt_debug(g_pkg_name||'-Inside CREATE_MILESTONE',3);
8612          IF NVL(p_validate,'F') <> 'T'  and l_return_status = fnd_api.g_ret_sts_success THEN
8613            ----------------------dbms_output.put_line('B4 MileStone insert');--Rupak
8614             MILESTONE_INSERT_ROW(p_milestone_tbl            =>  p_milestone_tbl
8615                             ,p_lease_id             =>  p_lease_id
8616                             ,p_lease_change_id      =>  p_lease_change_id
8617                             ,p_option_id            =>  p_option_id
8618                             ,p_insurance_req_id     =>  p_insurance_req_id
8619                             ,p_payment_term_id      =>  p_payment_term_id
8620                             ,x_return_status        =>  l_return_status
8621                             ,p_tbl                  =>  x_out_tbl
8622                             ,p_commit               =>  p_commit
8623                             );
8624           ----------------------dbms_output.put_line('CREATE_MILESTONE:after calling MILESTONE_INSERT_ROW');
8625         ELSIF  (l_return_status = fnd_api.g_ret_sts_unexp_error) then
8626            RAISE fnd_api.g_exc_unexpected_error;
8627         END IF;
8628 
8629         x_return_status :=  l_return_status;
8630         EXCEPTION
8631         WHEN OTHERS THEN
8632         x_return_status :=  fnd_api.g_ret_sts_unexp_error;
8633         ----------------------dbms_output.put_line('CREATION OF MILESTONES FAILED');--Rupak
8634         pvt_debug(g_pkg_name||'-CREATE_MILESTONE:Exception'||SQLERRM,3);
8635     END CREATE_MILESTONE;
8636 
8637 
8638 
8639     PROCEDURE VALIDATE_MILESTONE_FOR_UPDATE(
8640                                 p_milestone_tbl     IN OUT  NOCOPY   lease_milestone_tbl_type
8641                                ,p_lease_id          IN      PN_LEASES_ALL.LEASE_ID%TYPE
8642                                ,p_lease_change_id   IN      PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
8643                                ,p_option_id         IN       PN_LEASE_MILESTONES_ALL.OPTION_ID%TYPE
8644                                ,p_insurance_req_id  IN       PN_LEASE_MILESTONES_ALL.INSURANCE_REQUIREMENT_ID%TYPE
8645                                ,p_payment_term_id   IN       PN_LEASE_MILESTONES_ALL.PAYMENT_TERM_ID%TYPE
8646                                ,x_tbl               OUT  NOCOPY       temp_tbl_type
8647                                ,x_return_status     IN OUT NOCOPY VARCHAR2
8648                                ,p_commit            IN      VARCHAR2
8649         )
8650     IS
8651     l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
8652     l_index                                     BINARY_INTEGER;
8653     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
8654     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
8655     l_user_id                                   PN_LEASE_MILESTONES_ALL.USER_ID%TYPE;
8656     l_milestone_id                              PN_LEASE_MILESTONES_ALL.LEASE_MILESTONE_ID%TYPE;
8657     l_cur_id                                    PN_LEASE_MILESTONES_ALL.LEASE_MILESTONE_ID%TYPE;
8658     l_tbl_index                                 BINARY_INTEGER;
8659     l_tbl_flag                                  NUMBER                                      ;
8660     l_tbl                                       temp_tbl_type;
8661     l_api_name                                  VARCHAR2(30)                    :=      'UPDATE_MILESTONE';
8662     CURSOR c_milestone (
8663            p_milestone_id NUMBER
8664       )
8665       IS
8666     select LEASE_MILESTONE_ID,
8667            LEASE_CHANGE_ID,
8668            MILESTONE_TYPE_CODE,
8669            OPTION_ID,
8670            INSURANCE_REQUIREMENT_ID,
8671            PAYMENT_TERM_ID,
8672            LEAD_DAYS,
8673            EVERY_DAYS,
8674            ACTION_TAKEN,
8675            ACTION_DATE,
8676            ATTRIBUTE_CATEGORY,
8677            ATTRIBUTE1,
8678            ATTRIBUTE2,
8679            ATTRIBUTE3,
8680            ATTRIBUTE4,
8681            ATTRIBUTE5,
8682            ATTRIBUTE6,
8683            ATTRIBUTE7,
8684            ATTRIBUTE8,
8685            ATTRIBUTE9,
8686            ATTRIBUTE10,
8687            ATTRIBUTE11,
8688            ATTRIBUTE12,
8689            ATTRIBUTE13,
8690            ATTRIBUTE14,
8691            ATTRIBUTE15,
8692            MILESTONE_DATE,
8693            USER_ID,
8694            LEASE_ID
8695            from pn_lease_milestones_all
8696            where lease_milestone_id =   p_milestone_id;
8697 
8698            lcu_milestone_rec           c_milestone%ROWTYPE;
8699 
8700            l_error_count_err  NUMBER :=0;
8701            l_error_count_uerr NUMBER :=0;
8702     BEGIN
8703            x_return_status          := fnd_api.g_ret_sts_success ;
8704 
8705              For l_index in p_milestone_tbl.FIRST..p_milestone_tbl.LAST LOOP
8706                BEGIN
8707                             l_tbl_index          :=              l_index;
8708                   IF p_milestone_tbl(l_index).lease_milestone_id IS NULL THEN
8709                      l_tbl_flag      :=      1;
8710                      ----------------------dbms_output.put_line('In Mile Steone:1');
8711                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
8712                               fnd_message.set_token ('API_NAME', l_api_name);
8713                               fnd_message.set_token ('NULL_PARAM', 'MILE STONE ID : NULL');
8714                               fnd_msg_pub.ADD;
8715                               RAISE fnd_api.g_exc_error;
8716                  ELSE
8717                         -----------------------dbms_output.put_line('In Mile Steone:1');
8718                             pvt_debug(g_pkg_name||'-Inside VALIDATE_MILESTONE_FOR_UPDATE',3);
8719                             l_tbl_flag       :=      2;
8720                             l_cur_id        :=      p_milestone_tbl(l_index).lease_milestone_id;
8721 
8722                             OPEN c_milestone(l_cur_id);
8723                             ----------------------dbms_output.put_line('cursor opened for update');
8724                             FETCH c_milestone INTO lcu_milestone_rec;
8725 
8726                             IF  p_milestone_tbl(l_index).action_due_date = pn_lease_utils.g_pn_miss_date THEN
8727                                 p_milestone_tbl(l_index).action_due_date  :=  lcu_milestone_rec.milestone_date;
8728                             END IF;
8729 
8730                             IF   p_milestone_tbl(l_index).lead_days = pn_lease_utils.g_pn_miss_num THEN
8731                                  p_milestone_tbl(l_index).lead_days  :=  lcu_milestone_rec.lead_days;
8732                             ELSIF(p_milestone_tbl(l_index).lead_days IS NULL) THEN
8733                                 p_milestone_tbl(l_index).lead_days := NULL;
8734                             END IF;
8735 
8736                             IF (p_milestone_tbl(l_index).frequency = pn_lease_utils.g_pn_miss_num)THEN
8737                                  p_milestone_tbl(l_index).frequency :=  lcu_milestone_rec.every_days;
8738                             ELSIF(p_milestone_tbl(l_index).frequency IS NULL) THEN
8739                               p_milestone_tbl(l_index).frequency := NULL;
8740                             END IF;
8741 
8742   -------------------------------------------------------------------------------------------------------------------------------------------------
8743 
8744                        IF((p_milestone_tbl(l_index).milestone_type is not NULL AND p_milestone_tbl(l_index).milestone_type <> pn_lease_utils.g_pn_miss_char)
8745                           OR (p_milestone_tbl(l_index).milestone_type_code is not null AND p_milestone_tbl(l_index).milestone_type_code  <> pn_lease_utils.g_pn_miss_char)
8746                            ) THEN
8747                            ----------------------dbms_output.put_line (' MILESTONE TYPE AND MILESTONE TYPE CODE ARE NOT NULL');--Rupak
8748                            pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_UPDATE:MILESTONE TYPE AND MILESTONE TYPE CODE ARE NOT NULL',3);
8749                                           pn_lease_utils.get_lookup_code(
8750                                                            p_parameter_name     =>       l_param_milestone_type
8751                                                          , p_lookup_meaning     =>        p_milestone_tbl(l_index).milestone_type
8752                                                          , p_operation          =>        'UPDATE_MILESTONE'
8753                                                          , p_lookup_type        =>        l_pn_milestones_type
8754                                                          , x_return_status      =>         x_return_status
8755                                                          , x_lookup_type_code   =>         p_milestone_tbl(l_index).milestone_type_code
8756                                                         );
8757                                               pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_UPDATE:MILESTONE TYPE Code'||p_milestone_tbl(l_index).milestone_type_code,3);
8758                                                ----------------------dbms_output.put_line (' MILESTONE TYPE :1'||p_milestone_tbl(l_index).milestone_type_code);--Rupak
8759                                                  IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8760                                                           -----------------------dbms_output.put_line (' MILESTONE TYPE :2');--Rupak
8761                                                          fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
8762                                                          fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_pn_milestones_type));
8763                                                          fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_milestone_tbl(l_index).milestone_type));
8764                                                          fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_milestone_tbl(l_index).milestone_type_code));
8765                                                          fnd_msg_pub.ADD;
8766                                                          RAISE fnd_api.g_exc_error;
8767                                                  ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8768                                                        -- --------------------dbms_output.put_line (' MILESTONE TYPE :3');--Rupak
8769                                                          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8770                                                          fnd_message.set_token ('COLUMN', SUBSTR(l_param_milestone_type,3));
8771                                                          fnd_message.set_token ('P_TEXT', l_api_name|| '-'|| SQLERRM);
8772                                                          fnd_msg_pub.ADD;
8773                                                          RAISE fnd_api.g_exc_unexpected_error;
8774                                                  END IF;
8775                         ELSE
8776                             p_milestone_tbl(l_index).milestone_type_code := lcu_milestone_rec.milestone_type_code;
8777                         END IF;
8778 
8779 ----------------------------------------------------------------------------------------------------------------------------------------------
8780 
8781                 -- --------------------dbms_output.put_line('In MIle Stone:0'||p_milestone_tbl(l_index).user_id);
8782                         IF (( p_milestone_tbl(l_index).user_name IS NOT NULL AND p_milestone_tbl(l_index).user_name <> pn_lease_utils.g_pn_miss_char)
8783                         OR ( p_milestone_tbl(l_index).user_id IS NOT NULL AND p_milestone_tbl(l_index).user_id <> pn_lease_utils.g_pn_miss_num)
8784                             ) THEN
8785                            pn_lease_utils.get_user_id ( p_parameter_name       =>  l_param_milestone_user_name
8786                                                       , p_operation            =>  'UPDATE_MILESTONE'
8787                                                       , p_user_name            =>   p_milestone_tbl(l_index).user_name
8788                                                       , x_user_id              =>   p_milestone_tbl(l_index).user_id
8789                                                       , x_return_status        =>   x_return_status
8790                                                      );
8791                                           -- --------------------dbms_output.put_line('In MIle Stone:p_milestone_tbl(l_index).user_id'||p_milestone_tbl(l_index).user_id);
8792                                    IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8793                                   --l_error_flag:='Y';
8794                                     l_tbl_flag  :=  0;
8795                                     ----------------------dbms_output.put_line('In MIle Stone:1');
8796                                      fnd_message.set_name ('PN', 'PN_INVALID_USER');
8797                                      fnd_message.set_token ('USER_NAME', get_miss_char_decode(p_milestone_tbl(l_index).user_name));
8798                                      fnd_message.set_token ('USER_ID', get_miss_num_decode(p_milestone_tbl(l_index).user_id));
8799                                      fnd_msg_pub.ADD;
8800                                      RAISE fnd_api.g_exc_error;
8801                               ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8802                                   --l_error_flag:='Y';
8803                                     l_tbl_flag  :=  0;
8804                                     ----------------------dbms_output.put_line('In MIle Stone:2');
8805                                     fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
8806                                     fnd_message.set_token ('COLUMN', SUBSTR(l_param_milestone_user_name,3));
8807                                     fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
8808                                     fnd_msg_pub.ADD;
8809                                     RAISE fnd_api.g_exc_unexpected_error;
8810                               END IF;
8811                        ELSE
8812                            p_milestone_tbl(l_index).user_id    :=  lcu_milestone_rec.user_id;
8813                        END IF;
8814 
8815 
8816                         -- Dff validations
8817                         IF NOT ( (p_milestone_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
8818                                         AND (p_milestone_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
8819                                         AND (p_milestone_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
8820                                         AND (p_milestone_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
8821                                         AND (p_milestone_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
8822                                         AND (p_milestone_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
8823                                         AND (p_milestone_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
8824                                         AND (p_milestone_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
8825                                         AND (p_milestone_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
8826                                         AND (p_milestone_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
8827                                         AND (p_milestone_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
8828                                         AND (p_milestone_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
8829                                         AND (p_milestone_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
8830                                         AND (p_milestone_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
8831                                         AND (p_milestone_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
8832                                         AND (p_milestone_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
8833                                 ) THEN
8834                                      IF (p_milestone_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
8835                                        p_milestone_tbl(l_index).attribute_category  := lcu_milestone_rec.attribute_category;
8836                                      ELSIF(p_milestone_tbl(l_index).attribute_category IS NULL) THEN
8837                                          p_milestone_tbl(l_index).attribute_category := NULL;
8838                                      END IF;
8839                                      IF (p_milestone_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
8840                                          p_milestone_tbl(l_index).attribute1  := lcu_milestone_rec.attribute1;
8841                                      ELSIF(p_milestone_tbl(l_index).attribute1 IS NULL) THEN
8842                                          p_milestone_tbl(l_index).attribute1 := NULL;
8843                                      END IF;
8844 
8845                                      IF (p_milestone_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
8846                                          p_milestone_tbl(l_index).attribute2  := lcu_milestone_rec.attribute2;
8847                                      ELSIF(p_milestone_tbl(l_index).attribute2 IS NULL) THEN
8848                                          p_milestone_tbl(l_index).attribute2 := NULL;
8849                                      END IF;
8850                                      IF (p_milestone_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
8851                                          p_milestone_tbl(l_index).attribute3  := lcu_milestone_rec.attribute3;
8852                                      ELSIF(p_milestone_tbl(l_index).attribute3 IS NULL) THEN
8853                                          p_milestone_tbl(l_index).attribute3 := NULL;
8854                                      END IF;
8855                                      IF (p_milestone_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
8856                                          p_milestone_tbl(l_index).attribute4  := lcu_milestone_rec.attribute4;
8857                                      ELSIF(p_milestone_tbl(l_index).attribute4 IS NULL) THEN
8858                                          p_milestone_tbl(l_index).attribute4 := NULL;
8859                                      END IF;
8860                                      IF (p_milestone_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
8861                                          p_milestone_tbl(l_index).attribute5  := lcu_milestone_rec.attribute5;
8862                                      ELSIF(p_milestone_tbl(l_index).attribute5 IS NULL) THEN
8863                                          p_milestone_tbl(l_index).attribute5 := NULL;
8864                                      END IF;
8865                                      IF (p_milestone_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
8866                                          p_milestone_tbl(l_index).attribute6  := lcu_milestone_rec.attribute6;
8867                                      ELSIF(p_milestone_tbl(l_index).attribute6 IS NULL) THEN
8868                                          p_milestone_tbl(l_index).attribute6 := NULL;
8869                                      END IF;
8870                                      IF (p_milestone_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
8871                                          p_milestone_tbl(l_index).attribute7  := lcu_milestone_rec.attribute7;
8872                                      ELSIF(p_milestone_tbl(l_index).attribute7 IS NULL) THEN
8873                                          p_milestone_tbl(l_index).attribute7 := NULL;
8874                                      END IF;
8875                                      IF (p_milestone_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
8876                                          p_milestone_tbl(l_index).attribute8  := lcu_milestone_rec.attribute8;
8877                                      ELSIF(p_milestone_tbl(l_index).attribute8 IS NULL) THEN
8878                                          p_milestone_tbl(l_index).attribute8 := NULL;
8879                                      END IF;
8880                                      IF (p_milestone_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
8881                                          p_milestone_tbl(l_index).attribute9  := lcu_milestone_rec.attribute9;
8882                                      ELSIF(p_milestone_tbl(l_index).attribute9 IS NULL) THEN
8883                                          p_milestone_tbl(l_index).attribute9 := NULL;
8884                                      END IF;
8885                                      IF (p_milestone_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
8886                                          p_milestone_tbl(l_index).attribute10  := lcu_milestone_rec.attribute10;
8887                                      ELSIF(p_milestone_tbl(l_index).attribute10 IS NULL) THEN
8888                                          p_milestone_tbl(l_index).attribute10 := NULL;
8889                                      END IF;
8890                                      IF (p_milestone_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
8891                                          p_milestone_tbl(l_index).attribute11  := lcu_milestone_rec.attribute11;
8892                                      ELSIF(p_milestone_tbl(l_index).attribute11 IS NULL) THEN
8893                                          p_milestone_tbl(l_index).attribute11 := NULL;
8894                                      END IF;
8895                                      IF (p_milestone_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
8896                                          p_milestone_tbl(l_index).attribute12  := lcu_milestone_rec.attribute12;
8897                                      ELSIF(p_milestone_tbl(l_index).attribute12 IS NULL) THEN
8898                                          p_milestone_tbl(l_index).attribute12 := NULL;
8899                                      END IF;
8900                                      IF (p_milestone_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
8901                                          p_milestone_tbl(l_index).attribute13  := lcu_milestone_rec.attribute13;
8902                                      ELSIF(p_milestone_tbl(l_index).attribute13 IS NULL) THEN
8903                                          p_milestone_tbl(l_index).attribute13 := NULL;
8904                                      END IF;
8905                                      IF (p_milestone_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
8906                                          p_milestone_tbl(l_index).attribute14  := lcu_milestone_rec.attribute14;
8907                                      ELSIF(p_milestone_tbl(l_index).attribute14 IS NULL) THEN
8908                                          p_milestone_tbl(l_index).attribute14 := NULL;
8909                                      END IF;
8910                                      IF (p_milestone_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
8911                                          p_milestone_tbl(l_index).attribute15  := lcu_milestone_rec.attribute15;
8912                                      ELSIF(p_milestone_tbl(l_index).attribute15 IS NULL) THEN
8913                                          p_milestone_tbl(l_index).attribute15 := NULL;
8914                                      END IF;
8915 
8916                                 PN_LEASE_UTILS.validate_desc_flex (
8917                                                  p_api_name => 'PN_LANDLORD_SERVICES'--l_api_name_full
8918                                                , p_application_short_name => 'PN'
8919                                                , p_desc_flex_name => 'PN_LANDLORD_SERVICES'
8920                                                , p_desc_segment1 => p_milestone_tbl(l_index).attribute1
8921                                                , p_desc_segment2 => p_milestone_tbl(l_index).attribute2
8922                                                , p_desc_segment3 => p_milestone_tbl(l_index).attribute3
8923                                                , p_desc_segment4 => p_milestone_tbl(l_index).attribute4
8924                                                , p_desc_segment5 => p_milestone_tbl(l_index).attribute5
8925                                                , p_desc_segment6 => p_milestone_tbl(l_index).attribute6
8926                                                , p_desc_segment7 => p_milestone_tbl(l_index).attribute7
8927                                                , p_desc_segment8 => p_milestone_tbl(l_index).attribute8
8928                                                , p_desc_segment9 => p_milestone_tbl(l_index).attribute9
8929                                                , p_desc_segment10 =>p_milestone_tbl(l_index).attribute10
8930                                                , p_desc_segment11 =>p_milestone_tbl(l_index).attribute11
8931                                                , p_desc_segment12 =>p_milestone_tbl(l_index).attribute12
8932                                                , p_desc_segment13 =>p_milestone_tbl(l_index).attribute13
8933                                                , p_desc_segment14 =>p_milestone_tbl(l_index).attribute14
8934                                                , p_desc_segment15 =>p_milestone_tbl(l_index).attribute15
8935                                                , p_desc_context => p_milestone_tbl(l_index).attribute_category
8936                                                , p_resp_appl_id => fnd_global.resp_appl_id
8937                                                , p_resp_id      => fnd_global.resp_id
8938                                                , p_return_status=> x_return_status
8939                                                 );
8940                                        ----------------------dbms_output.put_line('dff validatedMILESTONES');--Rupak
8941                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8942                                         l_tbl_flag  :=  0;
8943                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
8944                                         THEN
8945                                         RAISE fnd_api.g_exc_unexpected_error;
8946                                         END IF;
8947                       END IF;
8948                     CLOSE c_milestone;
8949                         ----------------------dbms_output.put_line ('VALIDATIONS FOR MILESTONES UPDATE COMPLETED');
8950                  END IF;
8951                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
8952              EXCEPTION
8953               WHEN fnd_api.g_exc_error THEN
8954                 l_error_count_err := l_error_count_err+1;
8955                 pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
8956               WHEN OTHERS THEN
8957                l_error_count_uerr := l_error_count_uerr+1;
8958                 pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
8959              END;
8960           END LOOP;
8961               ----------------------dbms_output.put_line('Count Mile Stone errors'||l_error_count_err||l_error_count_uerr);--Rupak
8962           IF ( l_error_count_err <> 0 OR l_error_count_uerr <> 0) THEN
8963             x_return_status := fnd_api.g_ret_sts_error;
8964           ELSE
8965             x_return_status   :=  fnd_api.g_ret_sts_success;
8966             ----------------------dbms_output.put_line('Count Mile Stone errors:1'||x_return_status);--Rupak
8967           END IF;
8968            x_tbl        :=      l_tbl;
8969     EXCEPTION
8970      WHEN OTHERS THEN
8971               x_return_status := fnd_api.g_ret_sts_unexp_error;
8972      ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);--Rupak
8973      pvt_debug(g_pkg_name||'-VALIDATE_MILESTONE_FOR_UPDATE:Exception:'||SQLERRM,3);
8974     END VALIDATE_MILESTONE_FOR_UPDATE;
8975 
8976 
8977     PROCEDURE MILESTONE_UPDATE_ROW(
8978                                   p_milestone_tbl        IN OUT   NOCOPY   lease_milestone_tbl_type
8979                                  ,p_lease_id          IN      PN_LEASES_ALL.LEASE_ID%TYPE
8980                                  ,p_lease_change_id   IN      PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
8981                                  ,p_option_id         IN       PN_LEASE_MILESTONES_ALL.OPTION_ID%TYPE
8982                                  ,p_insurance_req_id  IN       PN_LEASE_MILESTONES_ALL.INSURANCE_REQUIREMENT_ID%TYPE
8983                                  ,p_payment_term_id   IN       PN_LEASE_MILESTONES_ALL.PAYMENT_TERM_ID%TYPE
8984                                  ,x_return_status   OUT  NOCOPY        VARCHAR2
8985                                  ,p_tbl             IN           temp_tbl_type
8986                                  ,p_commit          IN           VARCHAR2
8987                             )
8988     IS
8989                                 l_return_status     VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
8990                                 l_index             BINARY_INTEGER;
8991      BEGIN
8992 
8993 
8994         For l_index in p_milestone_tbl.FIRST..p_milestone_tbl.LAST loop
8995 
8996         IF p_tbl(l_index).temp_flag =   2 THEN
8997          ----------------------dbms_output.put_line ('RECORD UPDATION STARTED FOR MILESTONES');--Rupak
8998          ----------------------dbms_output.put_line ('MILESTONE DATE :'||p_milestone_tbl(l_index).action_due_date);
8999          ----------------------dbms_output.put_line ('p_milestone_tbl(l_index).lease_milestone_id'||p_milestone_tbl(l_index).lease_milestone_id);--Rupak
9000          ----------------------dbms_output.put_line ('p_lease_change_id'||p_lease_change_id);--Rupak
9001          ----------------------dbms_output.put_line ('p_insurance_req_id'||p_insurance_req_id);--Rupak
9002          ----------------------dbms_output.put_line ('p_milestone_tbl(l_index).lead_days'||p_milestone_tbl(l_index).lead_days);--Rupak
9003          ----------------------dbms_output.put_line ('p_milestone_tbl(l_index).frequency'||p_milestone_tbl(l_index).frequency);--Rupak
9004            pvt_debug(g_pkg_name||'-Inside MILESTONE_UPDATE_ROW',3);
9005          BEGIN
9006           pn_lease_milestones_pkg.Update_Row (
9007                        X_LEASE_MILESTONE_ID            =>   p_milestone_tbl(l_index).lease_milestone_id,
9008                        X_LEASE_CHANGE_ID               =>   p_lease_change_id,
9009                        X_MILESTONE_TYPE_CODE           =>   p_milestone_tbl(l_index).milestone_type_code,
9010                        X_OPTION_ID                     =>   p_option_id,
9011                        X_INSURANCE_REQUIREMENT_ID      =>   p_insurance_req_id,
9012                        X_PAYMENT_TERM_ID               =>   p_payment_term_id,
9013                        X_LEAD_DAYS                     =>   p_milestone_tbl(l_index).lead_days,
9014                        X_EVERY_DAYS                    =>   p_milestone_tbl(l_index).frequency,
9015                        X_ACTION_TAKEN                  =>   null,
9016                        X_ACTION_DATE                   =>   null,
9017                        X_ATTRIBUTE_CATEGORY            =>   p_milestone_tbl(l_index).attribute_category,
9018                        X_ATTRIBUTE1                    =>   p_milestone_tbl(l_index).attribute1,
9019                        X_ATTRIBUTE2                    =>   p_milestone_tbl(l_index).attribute1,
9020                        X_ATTRIBUTE3                    =>   p_milestone_tbl(l_index).attribute1,
9021                        X_ATTRIBUTE4                    =>   p_milestone_tbl(l_index).attribute1,
9022                        X_ATTRIBUTE5                    =>   p_milestone_tbl(l_index).attribute1,
9023                        X_ATTRIBUTE6                    =>   p_milestone_tbl(l_index).attribute1,
9024                        X_ATTRIBUTE7                    =>   p_milestone_tbl(l_index).attribute1,
9025                        X_ATTRIBUTE8                    =>   p_milestone_tbl(l_index).attribute1,
9026                        X_ATTRIBUTE9                    =>   p_milestone_tbl(l_index).attribute1,
9027                        X_ATTRIBUTE10                   =>   p_milestone_tbl(l_index).attribute1,
9028                        X_ATTRIBUTE11                   =>   p_milestone_tbl(l_index).attribute1,
9029                        X_ATTRIBUTE12                   =>   p_milestone_tbl(l_index).attribute1,
9030                        X_ATTRIBUTE13                   =>   p_milestone_tbl(l_index).attribute1,
9031                        X_ATTRIBUTE14                   =>   p_milestone_tbl(l_index).attribute1,
9032                        X_ATTRIBUTE15                   =>   p_milestone_tbl(l_index).attribute1,
9033                        X_MILESTONE_DATE                =>   p_milestone_tbl(l_index).action_due_date,
9034                        X_USER_ID                       =>   p_milestone_tbl(l_index).user_id,
9035                        X_LEASE_ID                      =>   p_lease_id,
9036                        X_LAST_UPDATE_DATE              =>   sysdate,
9037                        X_LAST_UPDATED_BY               =>   fnd_global.user_id,
9038                        X_LAST_UPDATE_LOGIN             =>   fnd_global.user_id
9039                      );
9040 
9041               ----------------------dbms_output.put_line ('RECORD UPDATION COMPLETED FOR MILESTONES');--Rupak
9042               pvt_debug(g_pkg_name||'-MILESTONE_UPDATE_ROW:PN_LEASE_MILESTONES_PKG.UPDATE_ROW Successful',3);
9043            EXCEPTION
9044              WHEN OTHERS THEN
9045              ----------------------dbms_output.put_line('EXCEPTION MILE STONES:'||SQLERRM);
9046                pvt_debug(g_pkg_name||'-MILESTONE_UPDATE_ROW:PN_LEASE_MILESTONES_PKG.UPDATE_ROW:Exception'||SQLERRM,3);
9047            END;
9048              END IF;
9049         END loop;
9050         x_return_status     :=  fnd_api.g_ret_sts_success;
9051         EXCEPTION
9052       WHEN OTHERS THEN
9053       x_return_status := fnd_api.g_ret_sts_unexp_error;
9054       ----------------------dbms_output.put_line ('RECORD NOT UPDATED FOR MILESTONES');
9055       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
9056       pvt_debug(g_pkg_name||'-MILESTONE_UPDATE_ROW:Exception'||SQLERRM,3);
9057     END MILESTONE_UPDATE_ROW;
9058 
9059    PROCEDURE UPDATE_MILESTONE (
9060                           p_milestone_tbl     IN OUT   NOCOPY      lease_milestone_tbl_type
9061                         , p_lease_id          IN          PN_LEASES_ALL.lease_id%type
9062                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.lease_change_id%type
9063                         , p_option_id           IN          PN_LEASE_MILESTONES_ALL.option_id%type
9064                         , p_insurance_req_id    IN          PN_LEASE_MILESTONES_ALL.insurance_requirement_id%type
9065                         , p_payment_term_id     IN          PN_LEASE_MILESTONES_ALL.payment_term_id%type
9066                         , p_commit            IN          VARCHAR2
9067                         , p_validate          IN          VARCHAR2
9068                         , x_return_status     OUT   NOCOPY      VARCHAR2
9069               --          , x_msg_count         OUT         NUMBER
9070               --          , x_msg_data          OUT         VARCHAR2
9071      )
9072         IS
9073                          l_return_status                             VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
9074                          l_msg_count                                 NUMBER                                      ;
9075                          l_msg_data                                  VARCHAR2(2000)                              ;
9076                          x_out_tbl                                   temp_tbl_type;
9077     BEGIN
9078       ----------------------dbms_output.put_line ('IN UPDATE PROCEDURE OF MILESTONE');--Rupak
9079          pvt_debug(g_pkg_name||'-Inside UPDATE_MILESTONE',3);
9080     VALIDATE_MILESTONE_FOR_UPDATE(p_milestone_tbl =>    p_milestone_tbl
9081                         ,p_lease_id     =>      p_lease_id
9082                         ,p_lease_change_id  =>  p_lease_change_id
9083                         ,p_option_id         =>  p_option_id
9084                         ,p_insurance_req_id  =>  p_insurance_req_id
9085                         ,p_payment_term_id   =>  p_payment_term_id
9086                         ,x_tbl          =>      x_out_tbl
9087                         ,x_return_status    =>  x_return_status
9088                         ,p_commit        =>      p_commit
9089                         );
9090         ----------------------dbms_output.put_line ('IN UPDATE PROCEDURE OF MILESTONE AFTER VALIDATE_MILESTONE_FOR_UPDATE'||x_return_status);--Rupak
9091            pvt_debug(g_pkg_name||'-UPDATE_MILESTONE:VALIDATE_MILESTONE_FOR_UPDATE Return Status:'||l_return_status,3);
9092               IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
9093 
9094               ----------------------dbms_output.put_line ('CALLING UPDATE PROCEDURE OF MILESTONE');--Rupak
9095               pvt_debug(g_pkg_name||'-UPDATE_MILESTONE:Calling MILESTONE_UPDATE_ROW:',3);
9096                 MILESTONE_UPDATE_ROW(
9097                 p_milestone_tbl                 =>          p_milestone_tbl
9098                ,p_lease_id                      =>   p_lease_id
9099                ,p_lease_change_id               =>  p_lease_change_id
9100                ,p_option_id                     =>  p_option_id
9101                ,p_insurance_req_id              =>  p_insurance_req_id
9102                ,p_payment_term_id               =>  p_payment_term_id
9103                ,x_return_status                 =>          x_return_status
9104                ,p_tbl                           =>          x_out_tbl
9105                ,p_commit                        =>          p_commit
9106                 );
9107                /*
9108                 MILESTONE_INSERT_ROW(
9109                                  p_milestone_tbl            =>        p_milestone_tbl
9110                                 ,p_lease_id                 =>        p_lease_id
9111                                 ,p_lease_change_id          =>        p_lease_change_id
9112                                 ,p_option_id                =>        p_option_id
9113                                 ,p_insurance_req_id         =>    p_insurance_req_id
9114                                 ,p_payment_term_id          =>        p_payment_term_id
9115                                 ,x_return_status            =>        l_return_status
9116                                 ,p_tbl                      =>        x_out_tbl
9117                                 ,p_commit                   =>        p_commit
9118                 );*/
9119                ELSIF  (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9120                 RAISE fnd_api.g_exc_unexpected_error;
9121                ELSE
9122                 RAISE fnd_api.g_exc_error;
9123                END IF;
9124 
9125         EXCEPTION
9126         WHEN fnd_api.g_exc_error THEN
9127            x_return_status := fnd_api.g_ret_sts_error;
9128         WHEN fnd_api.g_exc_unexpected_error THEN
9129                 x_return_status :=  fnd_api.g_ret_sts_unexp_error;
9130         WHEN OTHERS THEN
9131          x_return_status :=  fnd_api.g_ret_sts_unexp_error;
9132         ----------------------dbms_output.put_line('UPDATE OF MILESTONE FAILED');
9133         pvt_debug(g_pkg_name||'-UPDATE_MILESTONE:Exception'||SQLERRM,3);
9134     END UPDATE_MILESTONE;
9135 
9136 
9137     PROCEDURE VALIDATE_INSURANCE_FOR_CREATE (p_insurance_tbl IN OUT NOCOPY lease_insurance_tbl_type
9138                                         ,x_tbl       OUT NOCOPY   temp_tbl_type
9139                                         ,x_return_status    IN OUT NOCOPY VARCHAR2
9140     )IS
9141     l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
9142     l_index                                     BINARY_INTEGER;
9143     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
9144     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
9145     l_cur_id                                    NUMBER;
9146     l_tbl_index                                 BINARY_INTEGER;
9147     l_tbl_flag                                  NUMBER                                      :=  1;
9148     l_tbl                                       temp_tbl_type;
9149     l_api_name                                  VARCHAR2(30)        :=  'CREATE INSURANCE';
9150     BEGIN
9151             ----------------------dbms_output.put_line('validation for insurance creation started');--Rupak
9152             pvt_debug(g_pkg_name||'-Inside VALIDATE_INSURANCE_FOR_CREATE',3);
9153             FOR l_index in p_insurance_tbl.FIRST.. p_insurance_tbl.LAST
9154               LOOP
9155                 BEGIN
9156                        INITIALIZE_INSURANCE_REC(p_insurance_tbl(l_index),'CREATE_INSURANCE',x_return_status);
9157                         l_tbl_index      :=      l_index;
9158                         IF (p_insurance_tbl(l_index).policy_number IS NULL OR p_insurance_tbl(l_index).policy_number = pn_lease_utils.g_pn_miss_char) THEN
9159                            fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9160                            fnd_message.set_token ('API_NAME', l_api_name);
9161                            fnd_message.set_token ('NULL_PARAM', 'POLICY NUMBER IS NULL');
9162                            fnd_msg_pub.ADD;
9163                            RAISE fnd_api.g_exc_error;
9164                         END IF;
9165                         IF (p_insurance_tbl(l_index).insurer_name IS NULL OR p_insurance_tbl(l_index).insurer_name = pn_lease_utils.g_pn_miss_char) THEN
9166                            p_insurance_tbl(l_index).insurer_name := NULL;
9167                         END IF;
9168                         IF (p_insurance_tbl(l_index).insured_amount IS NULL OR p_insurance_tbl(l_index).insured_amount = pn_lease_utils.g_pn_miss_num) THEN
9169                            p_insurance_tbl(l_index).insured_amount := NULL;
9170                         END IF;
9171                         IF (p_insurance_tbl(l_index).required_amount IS NULL OR p_insurance_tbl(l_index).required_amount = pn_lease_utils.g_pn_miss_num) THEN
9172                            p_insurance_tbl(l_index).required_amount := NULL;
9173                         END IF;
9174                         IF (p_insurance_tbl(l_index).insurance_comments IS NULL OR p_insurance_tbl(l_index).insurance_comments = pn_lease_utils.g_pn_miss_char) THEN
9175                            p_insurance_tbl(l_index).insurance_comments := NULL;
9176                         END IF;
9177 
9178 -------------------------------------------------------------------------------------------------------------------------------------------------------------
9179                      IF ((p_insurance_tbl(l_index).status IS NOT NULL AND p_insurance_tbl(l_index).status <> pn_lease_utils.g_pn_miss_char)
9180                       OR (p_insurance_tbl(l_index).status_code IS NOT NULL AND p_insurance_tbl(l_index).status_code <> pn_lease_utils.g_pn_miss_char)
9181                         ) THEN
9182                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_status
9183                                                     , p_lookup_meaning      =>      p_insurance_tbl(l_index).status
9184                                                     , p_operation           =>      'CREATE_INSURANCE'
9185                                                     , p_lookup_type         =>      l_pn_status
9186                                                     , x_return_status       =>      x_return_status
9187                                                     , x_lookup_type_code    =>      p_insurance_tbl(l_index).status_code
9188                                                     );
9189                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9190                           --l_error_flag:='Y';
9191                            l_tbl_flag  :=  0;
9192                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
9193                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_status);
9194                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_insurance_tbl(l_index).status));
9195                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_insurance_tbl(l_index).status_code));
9196                            fnd_msg_pub.ADD;
9197                            RAISE fnd_api.g_exc_error;
9198                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9199                           --l_error_flag:='Y';
9200                             l_tbl_flag  :=  0;
9201                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9202                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_status,3));
9203                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
9204                             fnd_msg_pub.ADD;
9205                             RAISE fnd_api.g_exc_unexpected_error;
9206                       END IF;
9207                   ELSIF(p_insurance_tbl(l_index).status IS NOT NULL OR p_insurance_tbl(l_index).status_code IS NULL) THEN
9208                     p_insurance_tbl(l_index).status_code :='N';
9209                   ELSE
9210                       l_tbl_flag  :=  0;
9211                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9212                       fnd_message.set_token ('API_NAME', l_api_name);
9213                       fnd_message.set_token ('NULL_PARAM', l_pn_status);
9214                       fnd_msg_pub.ADD;
9215                       RAISE fnd_api.g_exc_error;
9216                   END IF;
9217 
9218             -------------------------------------------------------------------------------------------------------------------
9219 
9220                      IF((p_insurance_tbl(l_index).insurance_type IS NOT NULL AND p_insurance_tbl(l_index).insurance_type <> pn_lease_utils.g_pn_miss_char)
9221                      OR (p_insurance_tbl(l_index).insurance_type_lookup_code IS NOT NULL AND p_insurance_tbl(l_index).insurance_type_lookup_code <> pn_lease_utils.g_pn_miss_char)
9222                         ) THEN
9223                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_insurance_type
9224                                                     , p_lookup_meaning      =>      p_insurance_tbl(l_index).insurance_type
9225                                                     , p_operation           =>      'CREATE_INSURANCE'
9226                                                     , p_lookup_type         =>      l_pn_insurance_type
9227                                                     , x_return_status       =>      x_return_status
9228                                                     , x_lookup_type_code    =>      p_insurance_tbl(l_index).insurance_type_lookup_code
9229                                                     );
9230                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9231                           --l_error_flag:='Y';
9232                            l_tbl_flag  :=  0;
9233                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
9234                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_insurance_type);
9235                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_insurance_tbl(l_index).insurance_type));
9236                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_insurance_tbl(l_index).insurance_type_lookup_code));
9237                            fnd_msg_pub.ADD;
9238                            RAISE fnd_api.g_exc_error;
9239                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9240                           --l_error_flag:='Y';
9241                             l_tbl_flag  :=  0;
9242                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9243                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_insurance_type,3));
9244                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
9245                             fnd_msg_pub.ADD;
9246                             RAISE fnd_api.g_exc_unexpected_error;
9247                       END IF;
9248                   ELSIF(p_insurance_tbl(l_index).insurance_type IS NULL OR p_insurance_tbl(l_index).insurance_type_lookup_code IS NULL) THEN
9249                     p_insurance_tbl(l_index).insurance_type_lookup_code := NULL;
9250                   ELSE
9251                       l_tbl_flag  :=  0;
9252                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9253                       fnd_message.set_token ('API_NAME', l_api_name);
9254                       fnd_message.set_token ('NULL_PARAM', l_pn_insurance_type);
9255                       fnd_msg_pub.ADD;
9256                       RAISE fnd_api.g_exc_error;
9257                   END IF;
9258 
9259                          ---------------------------------------------------------------------------------------------------------------------
9260                     IF ( (p_insurance_tbl(l_index).policy_start_date IS NOT NULL AND p_insurance_tbl(l_index).policy_start_date <> pn_lease_utils.g_pn_miss_date)
9261                       OR (p_insurance_tbl(l_index).policy_expiration_date IS NOT NULL AND p_insurance_tbl(l_index).policy_expiration_date <> pn_lease_utils.g_pn_miss_date)
9262                         ) THEN
9263                       pn_lease_utils.crossval_leasedates (p_parameter_name         =>   l_param_start_end_date
9264                                                         , p_operation              =>   'CREATE INSURANCE'
9265                                                         , p_lease_exec_date        =>    NULL
9266                                                         , p_lease_comm_date        =>   p_insurance_tbl(l_index).policy_start_date
9267                                                         , p_lease_term_date        =>   p_insurance_tbl(l_index).policy_expiration_date
9268                                                         , x_return_status          =>   x_return_status
9269                                                         );
9270                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9271                          l_tbl_flag  :=  0;
9272                          fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
9273                          fnd_message.set_token ('TERMINATION_DATE', p_insurance_tbl(l_index).policy_expiration_date);
9274                          fnd_message.set_token ('COMMENCEMENT_DATE', p_insurance_tbl(l_index).policy_start_date);
9275                          fnd_msg_pub.ADD;
9276                          RAISE fnd_api.g_exc_error;
9277                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9278                          l_tbl_flag  :=  0;
9279                          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9280                          fnd_message.set_token ('COLUMN', SUBSTR(l_param_start_end_date,3));
9281                          fnd_message.set_token ('P_TEXT', l_api_name|| '-'|| SQLERRM);
9282                          fnd_msg_pub.ADD;
9283                          RAISE fnd_api.g_exc_unexpected_error;
9284                       END IF;
9285                     ELSE
9286                       l_tbl_flag  :=  0;
9287                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9288                       fnd_message.set_token ('API_NAME', l_api_name);
9289                       fnd_message.set_token ('NULL_PARAM', 'Policy Start and End Date NULL');
9290                       fnd_msg_pub.ADD;
9291                       RAISE fnd_api.g_exc_error;
9292                     END IF;
9293 
9294 ---------------------------------------------------------------------------------------------------------------------------------------------------------
9295                    --  dff validations
9296                             /* IF NOT (       (p_insurance_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
9297                                         AND (p_insurance_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
9298                                         AND (p_insurance_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
9299                                         AND (p_insurance_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
9300                                         AND (p_insurance_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
9301                                         AND (p_insurance_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
9302                                         AND (p_insurance_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
9303                                         AND (p_insurance_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
9304                                         AND (p_insurance_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
9305                                         AND (p_insurance_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
9306                                         AND (p_insurance_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
9307                                         AND (p_insurance_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
9308                                         AND (p_insurance_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
9309                                         AND (p_insurance_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
9310                                         AND (p_insurance_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
9311                                         AND (p_insurance_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
9312                                 ) THEN*/
9313         IF (get_attribute_status('PN_INSURANCE_REQUIREMNTS') > 0) THEN
9314              /*get_attribute_mandatory_status('PN_INSURANCE_REQUIREMNTS'
9315                                              ,p_insurance_tbl(l_index).attribute1
9316                                              ,p_insurance_tbl(l_index).attribute2
9317                                              ,p_insurance_tbl(l_index).attribute3
9318                                              ,p_insurance_tbl(l_index).attribute4
9319                                              ,p_insurance_tbl(l_index).attribute5
9320                                              ,p_insurance_tbl(l_index).attribute6
9321                                              ,p_insurance_tbl(l_index).attribute7
9322                                              ,p_insurance_tbl(l_index).attribute8
9323                                              ,p_insurance_tbl(l_index).attribute9
9324                                              ,p_insurance_tbl(l_index).attribute10
9325                                              ,p_insurance_tbl(l_index).attribute11
9326                                              ,p_insurance_tbl(l_index).attribute12
9327                                              ,p_insurance_tbl(l_index).attribute13
9328                                              ,p_insurance_tbl(l_index).attribute14
9329                                              ,p_insurance_tbl(l_index).attribute15
9330                                              ,x_return_status
9331                                             );
9332                           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
9333                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9334                               fnd_message.set_token ('API_NAME', l_api_name);
9335                               fnd_message.set_token ('NULL_PARAM','Required attribute in Insurance is NULL');
9336                               fnd_msg_pub.ADD;
9337                               RAISE fnd_api.g_exc_error;
9338                           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
9339                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9340                               fnd_message.set_token ('API_NAME', l_api_name);
9341                               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Insurance is NULL');
9342                               fnd_msg_pub.ADD;
9343                               RAISE fnd_api.g_exc_unexpected_error;
9344                           ELSE*/
9345        IF NOT ((p_insurance_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute_category IS NULL)
9346                                         AND (p_insurance_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute1 IS NULL)
9347                                         AND (p_insurance_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute2 IS NULL)
9348                                         AND (p_insurance_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute3 IS NULL)
9349                                         AND (p_insurance_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute4 IS NULL)
9350                                         AND (p_insurance_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute5 IS NULL)
9351                                         AND (p_insurance_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute6 IS NULL)
9352                                         AND (p_insurance_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute7 IS NULL)
9353                                         AND (p_insurance_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute8 IS NULL)
9354                                         AND (p_insurance_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute9 IS NULL)
9355                                         AND (p_insurance_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute10 IS NULL)
9356                                         AND (p_insurance_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute11 IS NULL)
9357                                         AND (p_insurance_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute12 IS NULL)
9358                                         AND (p_insurance_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute13 IS NULL)
9359                                         AND (p_insurance_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute14 IS NULL)
9360                                         AND (p_insurance_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char OR p_insurance_tbl(l_index).attribute15 IS NULL)
9361                                 ) THEN
9362                                 PN_LEASE_UTILS.validate_desc_flex (
9363                                                  p_api_name => 'PN_INSURANCE_REQUIREMNTS'--l_api_name_full
9364                                                , p_application_short_name => 'PN'
9365                                                , p_desc_flex_name => 'PN_INSURANCE_REQUIREMNTS'
9366                                                , p_desc_segment1 => p_insurance_tbl(l_index).attribute1
9367                                                , p_desc_segment2 => p_insurance_tbl(l_index).attribute2
9368                                                , p_desc_segment3 => p_insurance_tbl(l_index).attribute3
9369                                                , p_desc_segment4 => p_insurance_tbl(l_index).attribute4
9370                                                , p_desc_segment5 => p_insurance_tbl(l_index).attribute5
9371                                                , p_desc_segment6 => p_insurance_tbl(l_index).attribute6
9372                                                , p_desc_segment7 => p_insurance_tbl(l_index).attribute7
9373                                                , p_desc_segment8 => p_insurance_tbl(l_index).attribute8
9374                                                , p_desc_segment9 => p_insurance_tbl(l_index).attribute9
9375                                                , p_desc_segment10 =>p_insurance_tbl(l_index).attribute10
9376                                                , p_desc_segment11 =>p_insurance_tbl(l_index).attribute11
9377                                                , p_desc_segment12 =>p_insurance_tbl(l_index).attribute12
9378                                                , p_desc_segment13 =>p_insurance_tbl(l_index).attribute13
9379                                                , p_desc_segment14 =>p_insurance_tbl(l_index).attribute14
9380                                                , p_desc_segment15 =>p_insurance_tbl(l_index).attribute15
9381                                                , p_desc_context   => p_insurance_tbl(l_index).attribute_category
9382                                                , p_resp_appl_id   => fnd_global.resp_appl_id
9383                                                , p_resp_id        => fnd_global.resp_id
9384                                                , p_return_status  => x_return_status
9385                                                 );
9386 
9387                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9388                                             l_tbl_flag  :=  0;
9389                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9390                                             fnd_message.set_token ('COLUMN', 'PN_INSURANCE_REQUIREMENTS_DESC_FIELDS');
9391                                             fnd_message.set_token ('P_TEXT', 'PN_INSURANCE_REQUIREMENTS'|| '-'|| SQLERRM);
9392                                             fnd_msg_pub.ADD;
9393                                             RAISE fnd_api.g_exc_error;
9394                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9395                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9396                                             fnd_message.set_token ('COLUMN', 'PN_INSURANCE_REQUIREMENTS_DESC_FIELDS');
9397                                             fnd_message.set_token ('P_TEXT', 'PN_INSURANCE_REQUIREMENTS'|| '-'|| SQLERRM);
9398                                             fnd_msg_pub.ADD;
9399                                             RAISE fnd_api.g_exc_unexpected_error;
9400                                         END IF;
9401                              END IF;
9402             END IF;
9403                             l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
9404                             ----------------------dbms_output.put_line('l_tbl_flag : ---'||l_tbl_flag);
9405            EXCEPTION
9406               WHEN fnd_api.g_exc_error THEN
9407                 ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
9408                   pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_CREATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
9409               WHEN OTHERS THEN
9410                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
9411                    pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_CREATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
9412             END;
9413         END LOOP;
9414         x_tbl       :=      l_tbl;
9415         x_return_status :=  fnd_api.g_ret_sts_success;
9416         ----------------------dbms_output.put_line('validation for insurance creation completed');
9417     EXCEPTION
9418     WHEN fnd_api.g_exc_error THEN
9419        x_return_status := fnd_api.g_ret_sts_error;
9420     WHEN OTHERS THEN
9421        x_return_status := fnd_api.g_ret_sts_unexp_error;
9422       ----------------------dbms_output.put_line('INSURANCE VALIDATION  FAILED');
9423       ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
9424         pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_CREATE:Insurance Type Code'||l_lookup_code,3);
9425 -----------------------------------------------------------------------------------------------------------------------------------------------------
9426     END VALIDATE_INSURANCE_FOR_CREATE;
9427 
9428 
9429     PROCEDURE INSURANCE_INSERT_ROW (p_insurance_tbl        IN OUT  NOCOPY     lease_insurance_tbl_type
9430                             , p_lease_id          IN           PN_LEASES_ALL.lease_id%type
9431                             , p_lease_change_id   IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
9432                             , x_return_status     OUT    NOCOPY      VARCHAR2
9433                             , p_tbl               IN           temp_tbl_type
9434                             , p_commit            IN           VARCHAR2
9435                             , p_validate          IN           VARCHAR2
9436                              )
9437         IS
9438         l_index                                 BINARY_INTEGER;
9439         l_row_id                                VARCHAR2(100)            ;
9440         l_insurance_requirement_id              PN_INSURANCE_REQUIREMENTS_ALL.INSURANCE_REQUIREMENT_ID%TYPE;
9441         l_return_status                          VARCHAR2(1);
9442         x_msg_count                               NUMBER;
9443         x_msg_data                                VARCHAR2(5000);
9444     BEGIN
9445             ----------------------dbms_output.put_line('CALLING INSURANCE INSERT ROW PROC');
9446                pvt_debug(g_pkg_name||'-Inside INSURANCE_INSERT_ROW',3);
9447             for l_index in p_insurance_tbl.FIRST..p_insurance_tbl.LAST loop
9448 
9449        ----------------------dbms_output.put_line('temp flag value in insert proc: '||  p_tbl(l_index).temp_flag);
9450                         IF  p_tbl(l_index).temp_flag = 1 THEN
9451                         l_insurance_requirement_id  :=  NULL;
9452               pvt_debug(g_pkg_name||'-INSURANCE_INSERT_ROW:Calling PN_INSURANCE_REQUIREMENTS_PKG.INSERT_ROW',3);
9453                  pn_insurance_requirements_pkg.insert_row (
9454                        X_ROWID                         =>        l_row_id
9455                       ,X_INSURANCE_REQUIREMENT_ID      =>        l_insurance_requirement_id
9456                       ,X_INSURANCE_TYPE_LOOKUP_CODE    =>        p_insurance_tbl(l_index).insurance_type_lookup_code
9457                       ,X_LEASE_ID                      =>        p_lease_id
9458                       ,X_LEASE_CHANGE_ID               =>        p_lease_change_id
9459                       ,X_POLICY_START_DATE             =>        trunc(p_insurance_tbl(l_index).policy_start_date)
9460                       ,X_POLICY_EXPIRATION_DATE        =>        trunc(p_insurance_tbl(l_index).policy_expiration_date)
9461                       ,X_INSURER_NAME                  =>        p_insurance_tbl(l_index).insurer_name
9462                       ,X_POLICY_NUMBER                 =>        p_insurance_tbl(l_index).policy_number
9463                       ,X_INSURED_AMOUNT                =>        p_insurance_tbl(l_index).insured_amount
9464                       ,X_REQUIRED_AMOUNT               =>        p_insurance_tbl(l_index).required_amount
9465                       ,X_STATUS                        =>        p_insurance_tbl(l_index).status_code
9466                       ,X_INSURANCE_COMMENTS            =>        p_insurance_tbl(l_index).insurance_comments
9467                       ,X_ATTRIBUTE_CATEGORY            =>        p_insurance_tbl(l_index).attribute_category
9468                       ,X_ATTRIBUTE1                    =>        p_insurance_tbl(l_index).attribute1
9469                       ,X_ATTRIBUTE2                    =>        p_insurance_tbl(l_index).attribute2
9470                       ,X_ATTRIBUTE3                    =>        p_insurance_tbl(l_index).attribute3
9471                       ,X_ATTRIBUTE4                    =>        p_insurance_tbl(l_index).attribute4
9472                       ,X_ATTRIBUTE5                    =>        p_insurance_tbl(l_index).attribute5
9473                       ,X_ATTRIBUTE6                    =>        p_insurance_tbl(l_index).attribute6
9474                       ,X_ATTRIBUTE7                    =>        p_insurance_tbl(l_index).attribute7
9475                       ,X_ATTRIBUTE8                    =>        p_insurance_tbl(l_index).attribute8
9476                       ,X_ATTRIBUTE9                    =>        p_insurance_tbl(l_index).attribute9
9477                       ,X_ATTRIBUTE10                   =>        p_insurance_tbl(l_index).attribute10
9478                       ,X_ATTRIBUTE11                   =>        p_insurance_tbl(l_index).attribute11
9479                       ,X_ATTRIBUTE12                   =>        p_insurance_tbl(l_index).attribute12
9480                       ,X_ATTRIBUTE13                   =>        p_insurance_tbl(l_index).attribute13
9481                       ,X_ATTRIBUTE14                   =>        p_insurance_tbl(l_index).attribute14
9482                       ,X_ATTRIBUTE15                   =>        p_insurance_tbl(l_index).attribute15
9483                       ,X_CREATION_DATE                 =>        sysdate
9484                       ,X_CREATED_BY                    =>        fnd_global.user_id
9485                       ,X_LAST_UPDATE_DATE              =>        sysdate
9486                       ,X_LAST_UPDATED_BY               =>        fnd_global.user_id
9487                       ,X_LAST_UPDATE_LOGIN             =>        fnd_global.user_id
9488                       ,x_org_id                        =>        g_org_id
9489                      );
9490 
9491                      --SAVEPOINT A;
9492                      ----------------------dbms_output.put_line ('INSURANCE ROW CREATED');--Rupak
9493                      pvt_debug(g_pkg_name||'-INSURANCE_INSERT_ROW:PN_INSURANCE_REQUIREMENTS_PKG.INSERT_ROW Succesful',3);
9494                      IF l_insurance_requirement_id IS NOT NULL AND p_insurance_tbl(l_index).insurance_milestone_tbl.count <> 0 THEN
9495                       ----------------------dbms_output.put_line ('--------CREATE MILESTONE------');--Rupak
9496                       pvt_debug(g_pkg_name||'-INSURANCE_INSERT_ROW:Calling CREATE_MILESTONE',3);
9497                       CREATE_MILESTONE (
9498                           p_milestone_tbl     =>    p_insurance_tbl(l_index).insurance_milestone_tbl
9499                         , p_lease_id          =>    p_lease_id
9500                         , p_lease_change_id   =>    p_lease_change_id
9501                         , p_option_id          =>   null
9502                         , p_insurance_req_id   =>   l_insurance_requirement_id
9503                         , p_payment_term_id    =>   null
9504                         , p_commit            =>    p_commit
9505                         , p_validate          =>    p_validate
9506                         , x_return_status     =>    l_return_status
9507                    --     , x_msg_count         =>    x_msg_count
9508                    --     , x_msg_data          =>    x_msg_data
9509                         );
9510 
9511                        ----------------------dbms_output.put_line('After MileStone');
9512                      END IF;
9513 
9514                  END IF;
9515          END loop;
9516 
9517          EXCEPTION
9518             WHEN OTHERS THEN
9519             x_return_status := fnd_api.g_ret_sts_unexp_error;
9520             ----------------------dbms_output.put_line('Insert procedure for insur creation failed') ;
9521             ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
9522               pvt_debug(g_pkg_name||'-INSURANCE_INSERT_ROW:Exception'||SQLERRM,3);
9523      END INSURANCE_INSERT_ROW;
9524 
9525     PROCEDURE CREATE_INSURANCE (
9526                           p_lease_id          IN          PN_LEASES_ALL.lease_id%type
9527                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.lease_change_id%type
9528                         , p_commit            IN          VARCHAR2
9529                         , p_validate          IN          VARCHAR2
9530                         , p_insurance_tbl         IN OUT  NOCOPY    lease_insurance_tbl_type
9531                         , x_return_status     OUT   NOCOPY      VARCHAR2
9532                    --     , x_msg_count         OUT         NUMBER
9533                    --     , x_msg_data          OUT         VARCHAR2
9534     )
9535     IS
9536         l_return_status     VARCHAR2(1) :=  fnd_api.g_ret_sts_success  ;
9537         l_msg_count         NUMBER;
9538         l_msg_data          VARCHAR2(4000) ;
9539         x_out_tbl           temp_tbl_type ;
9540     BEGIN
9541          ----------------------dbms_output.put_line('IN CREATE_INSURANCE');
9542          pvt_debug(g_pkg_name||'-Inside CREATE_INSURANCE',3);
9543         VALIDATE_INSURANCE_FOR_CREATE(p_insurance_tbl =>  p_insurance_tbl
9544                                 ,x_tbl                =>  x_out_tbl
9545                                 ,x_return_status      =>  x_return_status
9546                                 );
9547          IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
9548          ----------------------dbms_output.put_line('RETURN STATUS OF VALIDATION :--'||l_return_status);
9549          ----------------------dbms_output.put_line('CALLING INSURANCE INSERT ROW PROC');
9550          INSURANCE_INSERT_ROW(p_insurance_tbl       =>  p_insurance_tbl
9551                             ,p_lease_id          =>  p_lease_id
9552                             ,p_lease_change_id   =>  p_lease_change_id
9553                             ,x_return_status     =>  x_return_status
9554                             ,p_tbl               =>  x_out_tbl
9555                             ,p_commit            =>  p_commit
9556                             ,p_validate         =>   p_validate );
9557          ELSE
9558            RAISE fnd_api.g_exc_error;
9559          END IF;
9560     EXCEPTION
9561       WHEN fnd_api.g_exc_error THEN
9562          x_return_status:=fnd_api.g_ret_sts_error;
9563       WHEN OTHERS THEN
9564           x_return_status := fnd_api.g_ret_sts_unexp_error;
9565     END CREATE_INSURANCE;
9566 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9567 
9568 
9569     PROCEDURE validate_insurance_for_update (
9570                           p_insurance_tbl         IN OUT NOCOPY  lease_insurance_tbl_type,
9571                           x_tbl               OUT   NOCOPY   temp_tbl_type,
9572                           x_return_status     IN OUT NOCOPY  VARCHAR2,
9573                           p_lease_id           IN       pn_leases_all.lease_id%TYPE,
9574                           p_lease_change_id   IN        pn_lease_changes_all.lease_change_id%TYPE
9575         )
9576     IS
9577     l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
9578     l_index                                     BINARY_INTEGER;
9579     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
9580     l_api_name                                  VARCHAR2(30)                                         := 'UPDATE_INSURANCE';
9581     l_cur_id                                    NUMBER;
9582     l_tbl_index                                 BINARY_INTEGER;
9583     l_tbl_flag                                  NUMBER                                                         :=  1;
9584     l_tbl                                       temp_tbl_type;
9585     l_lookup_code                               pn_insurance_requirements_all.insurance_type_lookup_code%TYPE;
9586     CURSOR c_insur (
9587            p_insurance_req_id NUMBER
9588       )
9589       IS
9590          SELECT insurance_requirement_id,
9591                 status,
9592                 insurance_type_lookup_code,
9593                 lease_id,
9594                 lease_change_id,
9595                 policy_start_date,
9596                 policy_expiration_date,
9597                 notification_date,
9598                 insurer_name,
9599                 policy_number,
9600                 insured_amount,
9601                 required_amount,
9602                 attribute_category,
9603                 attribute1,
9604                 attribute2,
9605                 attribute3,
9606                 attribute4,
9607                 attribute5,
9608                 attribute6,
9609                 attribute7,
9610                 attribute8,
9611                 attribute9,
9612                 attribute10,
9613                 attribute11,
9614                 attribute12,
9615                 attribute13,
9616                 attribute14,
9617                 attribute15,
9618                 org_id,
9619                 insurance_comments
9620          from PN_INSURANCE_REQUIREMENTS_ALL
9621          where insurance_requirement_id = l_cur_id;
9622          lcu_insur_rec    c_insur%ROWTYPE;
9623       BEGIN
9624                         l_return_status          := fnd_api.g_ret_sts_success ;
9625                         l_tbl_flag  :=      2;
9626 
9627             pvt_debug(g_pkg_name||'-Inside VALIDATE_INSURANCE_FOR_UPDATE',3);
9628            For l_index in p_insurance_tbl.FIRST..p_insurance_tbl.LAST LOOP
9629            BEGIN
9630                --INITIALIZE_INSURANCE_REC(p_insurance_tbl(l_index),'UPDATE_INSURANCE',x_return_status);
9631                             l_tbl_index          :=              l_index;
9632                              ------------------dbms_output.put_line('In Validate Insurance:2');--Rupak
9633                       IF p_insurance_tbl(l_index).insurance_requirement_id IS NULL THEN
9634                               l_tbl_flag      :=      1;
9635                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
9636                               fnd_message.set_token ('API_NAME', l_api_name);
9637                               fnd_message.set_token ('NULL_PARAM', 'INSURANCE_ID');
9638                               fnd_msg_pub.ADD;
9639                               RAISE fnd_api.g_exc_error;
9640                       ELSE
9641                         l_cur_id        :=      p_insurance_tbl(l_index).insurance_requirement_id;
9642                             OPEN c_insur(l_cur_id);
9643                             ----------------------dbms_output.put_line('cursor opened for update');
9644                             FETCH c_insur INTO lcu_insur_rec;
9645                             l_tbl_flag       :=      2;
9646                            pvt_debug(g_pkg_name||'-Inside VALIDATE_INSURANCE_FOR_UPDATE ELSE Part',3);
9647                             IF(( p_insurance_tbl(l_index).policy_start_date IS NOT NULL and p_insurance_tbl(l_index).policy_start_date <> pn_lease_utils.g_pn_miss_date)
9648                              OR (p_insurance_tbl(l_index).policy_expiration_date IS NOT NULL and p_insurance_tbl(l_index).policy_expiration_date <> pn_lease_utils.g_pn_miss_date)
9649                              )THEN
9650                               pn_lease_utils.crossval_leasedates (
9651                                                 p_parameter_name           =>   l_param_start_end_date
9652                                                 , p_operation              =>   'UPDATE_INSURANCE'
9653                                                 , p_lease_exec_date        =>    NULL
9654                                                 , p_lease_comm_date        =>   p_insurance_tbl(l_index).policy_start_date
9655                                                 , p_lease_term_date        =>   p_insurance_tbl(l_index).policy_expiration_date
9656                                                 , x_return_status          =>   x_return_status
9657                                                    );
9658                                    pvt_debug(g_pkg_name||'-Inside VALIDATE_INSURANCE_FOR_UPDATE:CROSSVAL_LEASEDATES Return Status'||x_return_status,3);
9659                                     IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9660                                          fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
9661                                          fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_insurance_tbl(l_index).policy_expiration_date));
9662                                          fnd_message.set_token ('COMMENCEMENT_DATE', get_miss_date_decode(p_insurance_tbl(l_index).policy_start_date));
9663                                          fnd_msg_pub.ADD;
9664                                          RAISE fnd_api.g_exc_error;
9665                                     ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9666                                        fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9667                                        fnd_message.set_token ('COLUMN', SUBSTR(l_param_status,3));
9668                                        fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
9669                                        fnd_msg_pub.ADD;
9670                                        RAISE fnd_api.g_exc_unexpected_error;
9671                                     END IF;
9672                             ELSE
9673                                 p_insurance_tbl(l_index).policy_start_date  :=     lcu_insur_rec.policy_start_date;
9674                                 p_insurance_tbl(l_index).policy_expiration_date := lcu_insur_rec.policy_expiration_date;
9675                             END IF;
9676 
9677                ------------------dbms_output.put_line('In Validate Insurance:5');--Rupak
9678                             IF (p_insurance_tbl(l_index).insured_amount = pn_lease_utils.g_pn_miss_num) THEN
9679                                 p_insurance_tbl(l_index).insured_amount :=  lcu_insur_rec.insured_amount;
9680                             ELSIF(p_insurance_tbl(l_index).insured_amount IS NULL) THEN
9681                                 p_insurance_tbl(l_index).insured_amount := NULL;
9682                             END IF;
9683 
9684                             IF (p_insurance_tbl(l_index).required_amount = pn_lease_utils.g_pn_miss_num) THEN
9685                                 p_insurance_tbl(l_index).required_amount :=  lcu_insur_rec.required_amount;
9686                             ELSIF(p_insurance_tbl(l_index).required_amount IS NULL) THEN
9687                                 p_insurance_tbl(l_index).required_amount := NULL;
9688                             END IF;
9689 
9690                             IF (p_insurance_tbl(l_index).insurer_name = pn_lease_utils.g_pn_miss_char) THEN
9691                                 p_insurance_tbl(l_index).insurer_name :=  lcu_insur_rec.insurer_name;
9692                             ELSIF(p_insurance_tbl(l_index).insurer_name IS NULL) THEN
9693                                 p_insurance_tbl(l_index).insurer_name := NULL;
9694                             END IF;
9695 
9696                             IF (p_insurance_tbl(l_index).insurance_comments = pn_lease_utils.g_pn_miss_char) THEN
9697                                 p_insurance_tbl(l_index).insurance_comments :=  lcu_insur_rec.insurance_comments;
9698                             ELSIF(p_insurance_tbl(l_index).insurance_comments IS NULL) THEN
9699                                 p_insurance_tbl(l_index).insurance_comments := NULL;
9700                             END IF;
9701 
9702                             IF (p_insurance_tbl(l_index).policy_number = pn_lease_utils.g_pn_miss_char) THEN
9703                                 p_insurance_tbl(l_index).policy_number :=  lcu_insur_rec.policy_number;
9704                             ELSIF(p_insurance_tbl(l_index).policy_number IS NULL) THEN
9705                                 p_insurance_tbl(l_index).policy_number := NULL;
9706                             END IF;
9707 
9708 
9709 
9710         -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9711 
9712 
9713                       IF ((p_insurance_tbl(l_index).status IS NOT NULL AND p_insurance_tbl(l_index).status <> pn_lease_utils.g_pn_miss_char)
9714                       OR ( p_insurance_tbl(l_index).status_code IS NOT NULL AND  p_insurance_tbl(l_index).status_code <> pn_lease_utils.g_pn_miss_char)
9715                         ) THEN
9716                       --l_lookup_code       :=  NULL;
9717                       ----------------------dbms_output.put_line (' STATUS CODE AND STATUS TYPE ARE NOT NULL');
9718                                    pn_lease_utils.get_lookup_code(
9719                                           p_parameter_name                    =>           l_param_status
9720                                         , p_lookup_meaning                    =>           p_insurance_tbl(l_index).status
9721                                         , p_operation                         =>            'UPDATE_INSURANCE'
9722                                         , p_lookup_type                       =>            l_pn_status
9723                                         , x_return_status                     =>             x_return_status
9724                                        , x_lookup_type_code                   =>             p_insurance_tbl(l_index).status_code
9725                                                                   );
9726                                  pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_UPDATE:Insurance Status:'||p_insurance_tbl(l_index).status_code,3);
9727                                     IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9728                                        --l_error_flag:='Y';
9729                                            l_tbl_flag  :=  0;
9730                                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
9731                                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_status);
9732                                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_insurance_tbl(l_index).status));
9733                                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_insurance_tbl(l_index).status_code));
9734                                            fnd_msg_pub.ADD;
9735                                            RAISE fnd_api.g_exc_error;
9736                                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9737                                           --l_error_flag:='Y';
9738                                             l_tbl_flag  :=  0;
9739                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9740                                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_status,3));
9741                                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
9742                                             fnd_msg_pub.ADD;
9743                                             RAISE fnd_api.g_exc_unexpected_error;
9744                                       END IF;
9745                        ELSIF(p_insurance_tbl(l_index).status IS NULL OR p_insurance_tbl(l_index).status_code IS NULL) THEN
9746                           p_insurance_tbl(l_index).status_code := 'N';
9747                        ELSE
9748                             p_insurance_tbl(l_index).status_code   :=  lcu_insur_rec.status;
9749                         END IF;
9750 
9751 
9752                        ------------------dbms_output.put_line (' INSURANCE :123-2');--Rupak
9753                         IF (( p_insurance_tbl(l_index).insurance_type is not NULL AND p_insurance_tbl(l_index).insurance_type <> pn_lease_utils.g_pn_miss_char)
9754                         OR ( p_insurance_tbl(l_index).insurance_type_lookup_code is not NULL AND p_insurance_tbl(l_index).insurance_type_lookup_code <> pn_lease_utils.g_pn_miss_char)
9755                            ) THEN
9756                             ------------------dbms_output.put_line (' INSURANCE CODE AND INSURANCE TYPE ARE NOT NULL');--Rupak
9757 
9758                                  pn_lease_utils.get_lookup_code(
9759                                           p_parameter_name                    =>                l_param_insurance_type
9760                                         , p_lookup_meaning                    =>                p_insurance_tbl(l_index).insurance_type
9761                                         , p_operation                         =>                'UPDATE_INSURANCE'
9762                                         , p_lookup_type                       =>                l_pn_insurance_type
9763                                         , x_return_status                     =>                 x_return_status
9764                                        , x_lookup_type_code                   =>                 p_insurance_tbl(l_index).insurance_type_lookup_code
9765                                                                   );
9766                                    ------------------dbms_output.put_line (' INSURANCE CODE AND INSURANCE TYPE :'||x_return_status||p_insurance_tbl(l_index).insurance_type_lookup_code);--Rupak
9767                                         pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_UPDATE:Insurance Type:'||p_insurance_tbl(l_index).insurance_type_lookup_code,3);
9768                                     IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9769                                           --l_error_flag:='Y';
9770                                           ------------------dbms_output.put_line (' INSURANCE :HI:1');--Rupak
9771                                            l_tbl_flag  :=  0;
9772                                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
9773                                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_insurance_type);
9774                                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_insurance_tbl(l_index).insurance_type));
9775                                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_insurance_tbl(l_index).insurance_type_lookup_code));
9776                                            fnd_msg_pub.ADD;
9777                                            RAISE fnd_api.g_exc_error;
9778                                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9779                                           --l_error_flag:='Y';
9780                                             l_tbl_flag  :=  0;
9781                                               ------------------dbms_output.put_line (' INSURANCE :HI:2');--Rupak
9782                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9783                                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_insurance_type,3));
9784                                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
9785                                             fnd_msg_pub.ADD;
9786                                             RAISE fnd_api.g_exc_unexpected_error;
9787                                  END IF;
9788                         ELSIF(p_insurance_tbl(l_index).insurance_type IS NULL OR p_insurance_tbl(l_index).insurance_type_lookup_code IS NULL) THEN
9789                           p_insurance_tbl(l_index).insurance_type_lookup_code := NULL;
9790                         ELSE
9791                           p_insurance_tbl(l_index).insurance_type_lookup_code   :=  lcu_insur_rec.insurance_type_lookup_code;
9792                         END IF;
9793 
9794 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
9795 
9796                                   /* IF NOT ( (p_insurance_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
9797                                         AND (p_insurance_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
9798                                         AND (p_insurance_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
9799                                         AND (p_insurance_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
9800                                         AND (p_insurance_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
9801                                         AND (p_insurance_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
9802                                         AND (p_insurance_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
9803                                         AND (p_insurance_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
9804                                         AND (p_insurance_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
9805                                         AND (p_insurance_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
9806                                         AND (p_insurance_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
9807                                         AND (p_insurance_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
9808                                         AND (p_insurance_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
9809                                         AND (p_insurance_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
9810                                         AND (p_insurance_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
9811                                         AND (p_insurance_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
9812                                 ) THEN*/
9813                                  -- Dff validations
9814                                     IF (p_insurance_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
9815                                        p_insurance_tbl(l_index).attribute_category  := lcu_insur_rec.attribute_category;
9816                                      ELSIF(p_insurance_tbl(l_index).attribute_category IS NULL) THEN
9817                                          p_insurance_tbl(l_index).attribute_category := NULL;
9818                                      END IF;
9819                                      IF (p_insurance_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
9820                                          p_insurance_tbl(l_index).attribute1  := lcu_insur_rec.attribute1;
9821                                      ELSIF(p_insurance_tbl(l_index).attribute1 IS NULL) THEN
9822                                          p_insurance_tbl(l_index).attribute1 := NULL;
9823                                      END IF;
9824 
9825                                      IF (p_insurance_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
9826                                          p_insurance_tbl(l_index).attribute2  := lcu_insur_rec.attribute2;
9827                                      ELSIF(p_insurance_tbl(l_index).attribute2 IS NULL) THEN
9828                                          p_insurance_tbl(l_index).attribute2 := NULL;
9829                                      END IF;
9830                                      IF (p_insurance_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
9831                                          p_insurance_tbl(l_index).attribute3  := lcu_insur_rec.attribute3;
9832                                      ELSIF(p_insurance_tbl(l_index).attribute3 IS NULL) THEN
9833                                          p_insurance_tbl(l_index).attribute3 := NULL;
9834                                      END IF;
9835                                      IF (p_insurance_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
9836                                          p_insurance_tbl(l_index).attribute4  := lcu_insur_rec.attribute4;
9837                                      ELSIF(p_insurance_tbl(l_index).attribute4 IS NULL) THEN
9838                                          p_insurance_tbl(l_index).attribute4 := NULL;
9839                                      END IF;
9840                                      IF (p_insurance_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
9841                                          p_insurance_tbl(l_index).attribute5  := lcu_insur_rec.attribute5;
9842                                      ELSIF(p_insurance_tbl(l_index).attribute5 IS NULL) THEN
9843                                          p_insurance_tbl(l_index).attribute5 := NULL;
9844                                      END IF;
9845                                      IF (p_insurance_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
9846                                          p_insurance_tbl(l_index).attribute6  := lcu_insur_rec.attribute6;
9847                                      ELSIF(p_insurance_tbl(l_index).attribute6 IS NULL) THEN
9848                                          p_insurance_tbl(l_index).attribute6 := NULL;
9849                                      END IF;
9850                                      IF (p_insurance_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
9851                                          p_insurance_tbl(l_index).attribute7  := lcu_insur_rec.attribute7;
9852                                      ELSIF(p_insurance_tbl(l_index).attribute7 IS NULL) THEN
9853                                          p_insurance_tbl(l_index).attribute7 := NULL;
9854                                      END IF;
9855                                      IF (p_insurance_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
9856                                          p_insurance_tbl(l_index).attribute8  := lcu_insur_rec.attribute8;
9857                                      ELSIF(p_insurance_tbl(l_index).attribute8 IS NULL) THEN
9858                                          p_insurance_tbl(l_index).attribute8 := NULL;
9859                                      END IF;
9860                                      IF (p_insurance_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
9861                                          p_insurance_tbl(l_index).attribute9  := lcu_insur_rec.attribute9;
9862                                      ELSIF(p_insurance_tbl(l_index).attribute9 IS NULL) THEN
9863                                          p_insurance_tbl(l_index).attribute9 := NULL;
9864                                      END IF;
9865                                      IF (p_insurance_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
9866                                          p_insurance_tbl(l_index).attribute10  := lcu_insur_rec.attribute10;
9867                                      ELSIF(p_insurance_tbl(l_index).attribute10 IS NULL) THEN
9868                                          p_insurance_tbl(l_index).attribute10 := NULL;
9869                                      END IF;
9870                                      IF (p_insurance_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
9871                                          p_insurance_tbl(l_index).attribute11  := lcu_insur_rec.attribute11;
9872                                      ELSIF(p_insurance_tbl(l_index).attribute11 IS NULL) THEN
9873                                          p_insurance_tbl(l_index).attribute11 := NULL;
9874                                      END IF;
9875                                      IF (p_insurance_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
9876                                          p_insurance_tbl(l_index).attribute12  := lcu_insur_rec.attribute12;
9877                                      ELSIF(p_insurance_tbl(l_index).attribute12 IS NULL) THEN
9878                                          p_insurance_tbl(l_index).attribute12 := NULL;
9879                                      END IF;
9880                                      IF (p_insurance_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
9881                                          p_insurance_tbl(l_index).attribute13  := lcu_insur_rec.attribute13;
9882                                      ELSIF(p_insurance_tbl(l_index).attribute13 IS NULL) THEN
9883                                          p_insurance_tbl(l_index).attribute13 := NULL;
9884                                      END IF;
9885                                      IF (p_insurance_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
9886                                          p_insurance_tbl(l_index).attribute14  := lcu_insur_rec.attribute14;
9887                                      ELSIF(p_insurance_tbl(l_index).attribute14 IS NULL) THEN
9888                                          p_insurance_tbl(l_index).attribute14 := NULL;
9889                                      END IF;
9890                                      IF (p_insurance_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
9891                                          p_insurance_tbl(l_index).attribute15  := lcu_insur_rec.attribute15;
9892                                      ELSIF(p_insurance_tbl(l_index).attribute15 IS NULL) THEN
9893                                          p_insurance_tbl(l_index).attribute15 := NULL;
9894                                      END IF;
9895                                 pn_lease_utils.validate_desc_flex (
9896                                                  p_api_name => 'PN_INSURANCE_REQUIREMNTS'--l_api_name_full
9897                                                , p_application_short_name => 'PN'
9898                                                , p_desc_flex_name => 'PN_INSURANCE_REQUIREMNTS'
9899                                                , p_desc_segment1 => p_insurance_tbl(l_index).attribute1
9900                                                , p_desc_segment2 => p_insurance_tbl(l_index).attribute2
9901                                                , p_desc_segment3 => p_insurance_tbl(l_index).attribute3
9902                                                , p_desc_segment4 => p_insurance_tbl(l_index).attribute4
9903                                                , p_desc_segment5 => p_insurance_tbl(l_index).attribute5
9904                                                , p_desc_segment6 => p_insurance_tbl(l_index).attribute6
9905                                                , p_desc_segment7 => p_insurance_tbl(l_index).attribute7
9906                                                , p_desc_segment8 => p_insurance_tbl(l_index).attribute8
9907                                                , p_desc_segment9 => p_insurance_tbl(l_index).attribute9
9908                                                , p_desc_segment10 =>p_insurance_tbl(l_index).attribute10
9909                                                , p_desc_segment11 =>p_insurance_tbl(l_index).attribute11
9910                                                , p_desc_segment12 =>p_insurance_tbl(l_index).attribute12
9911                                                , p_desc_segment13 =>p_insurance_tbl(l_index).attribute13
9912                                                , p_desc_segment14 =>p_insurance_tbl(l_index).attribute14
9913                                                , p_desc_segment15 =>p_insurance_tbl(l_index).attribute15
9914                                                , p_desc_context => p_insurance_tbl(l_index).attribute_category
9915                                                , p_resp_appl_id => fnd_global.resp_appl_id
9916                                                , p_resp_id      => fnd_global.resp_id
9917                                                , p_return_status=> x_return_status
9918                                                 );
9919                                        ----------------------dbms_output.put_line('dff validated');--Rupak
9920                                            IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9921                                                 l_tbl_flag  :=  0;
9922                                                 fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9923                                                 fnd_message.set_token ('COLUMN', 'PN_INSURANCE_REQUIREMENTS_DESC_FIELDS');
9924                                                 fnd_message.set_token ('P_TEXT', 'PN_INSURANCE_REQUIREMENTS'|| '-'|| SQLERRM);
9925                                                 fnd_msg_pub.ADD;
9926                                                 RAISE fnd_api.g_exc_error;
9927                                             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9928                                                 fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
9929                                                 fnd_message.set_token ('COLUMN', 'PN_INSURANCE_REQUIREMENTS_DESC_FIELDS');
9930                                                 fnd_message.set_token ('P_TEXT', 'PN_INSURANCE_REQUIREMENTS'|| '-'|| SQLERRM);
9931                                                 fnd_msg_pub.ADD;
9932                                                 RAISE fnd_api.g_exc_unexpected_error;
9933                                             END IF;
9934                                 --END IF;
9935                      CLOSE c_insur;
9936                  END IF;
9937                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
9938             EXCEPTION
9939               WHEN fnd_api.g_exc_error THEN
9940                 ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
9941                   pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
9942               WHEN OTHERS THEN
9943                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
9944                    pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
9945             END;
9946           END LOOP;
9947            x_tbl        :=      l_tbl;
9948            x_return_status     :=      fnd_api.g_ret_sts_success;
9949            ----------------------dbms_output.put_line('VALIDATIONS FOR UPDATE OF INSURANCE COMPLETED');
9950     EXCEPTION
9951       WHEN fnd_api.g_exc_error THEN
9952           x_return_status := fnd_api.g_ret_sts_error;
9953       WHEN OTHERS THEN
9954         x_return_status := fnd_api.g_ret_sts_unexp_error;
9955         pvt_debug(g_pkg_name||'-VALIDATE_INSURANCE_FOR_UPDATE:Exception'||SQLERRM,3);
9956         ------------------dbms_output.put_line('Exception:VALIDATE_INSURANCE_FOR_UPDATE'||SQLERRM);
9957       END VALIDATE_INSURANCE_FOR_UPDATE;
9958 
9959      PROCEDURE INSURANCE_UPDATE_ROW (p_insurance_tbl           IN OUT  NOCOPY     lease_insurance_tbl_type
9960                                 ,p_lease_id                IN           PN_LEASES_ALL.LEASE_ID%type
9961                                 ,p_lease_change_id         IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
9962                                 ,x_return_status           OUT  NOCOPY        VARCHAR2
9963                                 ,p_tbl                     IN           temp_tbl_type
9964                                 ,p_commit                  IN           VARCHAR2
9965                                 ,p_validate                IN           VARCHAR2
9966                             )
9967         IS
9968                                 l_return_status             VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
9969                                 l_index                     BINARY_INTEGER;
9970                                 l_insurance_requirement_id  PN_INSURANCE_REQUIREMENTS_ALL.insurance_requirement_id%TYPE;
9971                                 x_msg_count                 NUMBER;
9972                                 x_msg_data                  VARCHAR2(5000);
9973 
9974         BEGIN
9975            ----------------------dbms_output.put_line('In INSURANCE_UPDATE_ROW:1');--Rupak
9976              pvt_debug(g_pkg_name||'-Inside INSURANCE_UPDATE_ROW:',3);
9977             For l_index in p_insurance_tbl.FIRST..p_insurance_tbl.LAST loop
9978                    ----------------------dbms_output.put_line('In INSURANCE_UPDATE_ROW:2');--Rupak
9979 
9980                 IF p_tbl(l_index).temp_flag =   2 THEN
9981                     ----------------------dbms_output.put_line('UPDATE INSURANCE PROCEDURE FOR RECORD: '||l_index ||'STARTED');--Rupak
9982                     pvt_debug(g_pkg_name||'-INSURANCE_UPDATE_ROW:'||'UPDATE INSURANCE PROCEDURE FOR RECORD: '||l_index ||'STARTED',3);
9983                     BEGIN
9984                       pn_insurance_requirements_pkg.Update_Row
9985                         (
9986                             X_INSURANCE_REQUIREMENT_ID      =>  p_insurance_tbl(l_index).insurance_requirement_id,
9987                             X_INSURANCE_TYPE_LOOKUP_CODE    =>  p_insurance_tbl(l_index).insurance_type_lookup_code,
9988                             X_LEASE_ID                      =>  p_lease_id,
9989                             X_LEASE_CHANGE_ID               =>  p_lease_change_id,
9990                             X_POLICY_START_DATE             =>  trunc(p_insurance_tbl(l_index).policy_start_date),
9991                             X_POLICY_EXPIRATION_DATE        =>  trunc(p_insurance_tbl(l_index).policy_expiration_date),
9992                             X_INSURER_NAME                  =>  p_insurance_tbl(l_index).insurer_name,
9993                             X_POLICY_NUMBER                 =>  p_insurance_tbl(l_index).policy_number,
9994                             X_INSURED_AMOUNT                =>  p_insurance_tbl(l_index).insured_amount,
9995                             X_REQUIRED_AMOUNT               =>  p_insurance_tbl(l_index).required_amount,
9996                             X_STATUS                        =>  p_insurance_tbl(l_index).status_code,
9997                             X_INSURANCE_COMMENTS            =>  p_insurance_tbl(l_index).insurance_comments,
9998                             X_ATTRIBUTE_CATEGORY            =>  p_insurance_tbl(l_index).attribute_category,
9999                             X_ATTRIBUTE1                    =>  p_insurance_tbl(l_index).attribute1,
10000                             X_ATTRIBUTE2                    =>  p_insurance_tbl(l_index).attribute2,
10001                             X_ATTRIBUTE3                    =>  p_insurance_tbl(l_index).attribute3,
10002                             X_ATTRIBUTE4                    =>  p_insurance_tbl(l_index).attribute4,
10003                             X_ATTRIBUTE5                    =>  p_insurance_tbl(l_index).attribute5,
10004                             X_ATTRIBUTE6                    =>  p_insurance_tbl(l_index).attribute6,
10005                             X_ATTRIBUTE7                    =>  p_insurance_tbl(l_index).attribute7,
10006                             X_ATTRIBUTE8                    =>  p_insurance_tbl(l_index).attribute8,
10007                             X_ATTRIBUTE9                    =>  p_insurance_tbl(l_index).attribute9,
10008                             X_ATTRIBUTE10                   =>  p_insurance_tbl(l_index).attribute10,
10009                             X_ATTRIBUTE11                   =>  p_insurance_tbl(l_index).attribute11,
10010                             X_ATTRIBUTE12                   =>  p_insurance_tbl(l_index).attribute12,
10011                             X_ATTRIBUTE13                   =>  p_insurance_tbl(l_index).attribute13,
10012                             X_ATTRIBUTE14                   =>  p_insurance_tbl(l_index).attribute14,
10013                             X_ATTRIBUTE15                   =>  p_insurance_tbl(l_index).attribute15,
10014                             X_LAST_UPDATE_DATE              =>  sysdate,
10015                             X_LAST_UPDATED_BY               =>  fnd_global.user_id,
10016                             X_LAST_UPDATE_LOGIN             =>  fnd_global.login_id
10017                             );
10018 
10019                             --SAVEPOINT A;
10020                             ----------------------dbms_output.put_line('UPDATE PROCEDURE FOR RECORD: '||l_index ||'COMPLETED');--Rupak
10021                             pvt_debug(g_pkg_name||'-INSURANCE_UPDATE_ROW:'||'UPDATE INSURANCE PROCEDURE FOR RECORD: '||l_index ||'Completed',3);
10022                             l_insurance_requirement_id      :=  p_insurance_tbl(l_index).insurance_requirement_id;
10023                        EXCEPTION
10024                          WHEN OTHERS THEN
10025                            ----------------------dbms_output.put_line('EXCEPTION:In INSURANCE_UPDATE_ROW:3'||SQLERRM);--Rupak
10026                              pvt_debug(g_pkg_name||'-INSURANCE_UPDATE_ROW:PN_INSURANCE_REQUIREMENTS_PKG.UPDATE_ROW:Exception:'||SQLERRM,3);
10027                        END;
10028                             IF p_insurance_tbl(l_index).insurance_milestone_tbl.count<>0 THEN
10029                             ----------------------dbms_output.put_line('UPDATE MILESTONE PROCEDURE FOR RECORD: '||l_index ||'STARTED');--Rupak
10030                                UPDATE_MILESTONE (
10031                                       p_milestone_tbl         =>  p_insurance_tbl(l_index).insurance_milestone_tbl
10032                                     , p_lease_id              =>  p_lease_id
10033                                     , p_lease_change_id       =>  p_lease_change_id
10034                                     , p_option_id             =>  NULL
10035                                     , p_insurance_req_id      =>  l_insurance_requirement_id
10036                                     , p_payment_term_id       =>  NULL
10037                                     , p_commit                =>  p_commit
10038                                     , p_validate              =>  'N'
10039                                     , x_return_status         =>  x_return_status
10040                             --        , x_msg_count             =>  x_msg_count
10041                             --        , x_msg_data              =>  x_msg_data
10042                                         );
10043                             END IF;
10044                    END IF;
10045              END LOOP;
10046            EXCEPTION
10047         WHEN OTHERS THEN
10048         x_return_status := fnd_api.g_ret_sts_unexp_error;
10049         pvt_debug(g_pkg_name||'-INSURANCE_UPDATE_ROW:Exception:'||SQLERRM,3);
10050         END INSURANCE_UPDATE_ROW;
10051 
10052     PROCEDURE UPDATE_INSURANCE (
10053                           p_lease_id          IN          PN_LEASES_ALL.LEASE_ID%TYPE
10054                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
10055                         , p_commit            IN          VARCHAR2
10056                         , p_validate          IN          VARCHAR2
10057                         , p_insurance_tbl          IN OUT  NOCOPY    lease_insurance_tbl_type
10058                         , x_return_status     OUT   NOCOPY      VARCHAR2
10059                    --     , x_msg_count         OUT         NUMBER
10060                    --     , x_msg_data          OUT         VARCHAR2
10061                 )
10062         IS
10063             l_return_status                             VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
10064             l_msg_count                                 NUMBER                                      ;
10065             l_msg_data                                  VARCHAR2(2000)                              ;
10066             x_out_tbl                                   temp_tbl_type;
10067 
10068             p_insurance_tbl_create      lease_insurance_tbl_type;
10069             p_insurance_tbl_update      lease_insurance_tbl_type;
10070             m NUMBER;
10071             n NUMBER;
10072             l_err_insurance_cnt NUMBER:=0;
10073 BEGIN
10074      x_return_status  :=    fnd_api.g_ret_sts_success;
10075 
10076      m:=1;
10077      n:=1;
10078            FOR i IN 1..p_insurance_tbl.COUNT
10079            LOOP
10080              IF(p_insurance_tbl(i).insurance_requirement_id IS NOT NULL AND p_insurance_tbl(i).insurance_requirement_id <> pn_lease_utils.g_pn_miss_num) THEN
10081 
10082                  -- p_insurance_tbl(i).p_null_id := 'N';
10083                   p_insurance_tbl_update(n):=p_insurance_tbl(i);
10084                   n:=n+1;
10085              ELSE
10086                --p_insurance_tbl(i).p_null_id := 'Y';
10087                p_insurance_tbl_create(m):=p_insurance_tbl(i);
10088                m:=m+1;
10089              END IF;
10090            END LOOP;
10091   IF(p_insurance_tbl_update.COUNT > 0) THEN
10092     VALIDATE_INSURANCE_FOR_UPDATE(
10093                                 p_insurance_tbl     =>       p_insurance_tbl_update
10094                                ,p_lease_id     =>       p_lease_id
10095                                ,p_lease_change_id   =>  p_lease_change_id
10096                                ,x_tbl           =>  x_out_tbl
10097                                ,x_return_status =>  x_return_status
10098                                 );
10099                ------------------dbms_output.put_line('B4 Insurance Update'||x_return_status);--Rupak
10100             pvt_debug(g_pkg_name||'-Inside UPDATE_INSURANCE:',3);
10101               IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
10102                   ------------------dbms_output.put_line('B4 Insurance Update IN IF ');--Rupak
10103                INSURANCE_UPDATE_ROW(
10104                 p_insurance_tbl                    =>      p_insurance_tbl_update--p_insurance_tbl
10105               , p_lease_id                     =>          p_lease_id
10106               , p_lease_change_id              =>          p_lease_change_id
10107               , x_return_status                =>          x_return_status
10108               , p_tbl                          =>          x_out_tbl
10109               , p_commit                       =>          p_commit
10110               , p_validate                     =>          p_validate
10111                 );
10112                 pvt_debug(g_pkg_name||'-UPDATE_INSURANCE:INSURANCE_UPDATE_ROW Return Status:'||x_return_status,3);
10113                 ------------------dbms_output.put_line('After Insurance Update:'||x_return_status);--Rupak
10114              ELSIF  (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10115                --x_return_status := fnd_api.g_ret_sts_unexp_error;
10116                l_err_insurance_cnt := l_err_insurance_cnt + 1;
10117              ELSE
10118                --x_return_status := fnd_api.g_ret_sts_error;
10119                 l_err_insurance_cnt := l_err_insurance_cnt + 1;
10120             END IF;
10121    END IF;
10122    IF(p_insurance_tbl_create.COUNT > 0) THEN
10123       VALIDATE_INSURANCE_FOR_CREATE(p_insurance_tbl =>  p_insurance_tbl_create
10124                                 ,x_tbl                =>  x_out_tbl
10125                                 ,x_return_status      =>  x_return_status
10126                                 );
10127         pvt_debug(g_pkg_name||'Inside UPDATE_INSURANCE:VALIDATE_INSURANCE_FOR_CREATE Return Status'||x_return_status,3);
10128          IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
10129          ----------------------dbms_output.put_line('RETURN STATUS OF VALIDATION :--'||l_return_status);
10130          ----------------------dbms_output.put_line('CALLING INSURANCE INSERT ROW PROC');
10131          INSURANCE_INSERT_ROW(p_insurance_tbl       =>  p_insurance_tbl_create
10132                             ,p_lease_id          =>  p_lease_id
10133                             ,p_lease_change_id   =>  p_lease_change_id
10134                             ,x_return_status     =>  x_return_status
10135                             ,p_tbl               =>  x_out_tbl
10136                             ,p_commit            =>  p_commit
10137                             ,p_validate         =>   p_validate );
10138           pvt_debug(g_pkg_name||'Inside UPDATE_INSURANCE:INSURANCE_INSERT_ROW Return Status'||x_return_status,3);
10139           IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
10140                    --RAISE fnd_api.g_exc_error;
10141              l_err_insurance_cnt := l_err_insurance_cnt + 1;
10142           END IF;
10143          ELSE
10144            l_err_insurance_cnt := l_err_insurance_cnt + 1;
10145          END IF;
10146    END IF;
10147 
10148         IF(l_err_insurance_cnt = 0) THEN
10149           x_return_status := fnd_api.g_ret_sts_success;
10150         ELSE
10151           x_return_status := fnd_api.g_ret_sts_error;
10152         END IF;
10153 
10154     EXCEPTION
10155       WHEN fnd_api.g_exc_error THEN
10156        ------------------dbms_output.put_line('In Insrance:hi:Exception:'||x_return_status);
10157          x_return_status:=fnd_api.g_ret_sts_error;
10158       WHEN OTHERS THEN
10159           x_return_status := fnd_api.g_ret_sts_unexp_error;
10160     END UPDATE_INSURANCE;
10161 
10162 
10163         PROCEDURE VALIDATE_OPTION_FOR_CREATE ( p_option_tbl     IN OUT  NOCOPY   lease_option_tbl_type
10164                                               ,x_tbl               OUT  NOCOPY   temp_tbl_type
10165                                               ,x_return_status  IN OUT NOCOPY VARCHAR2
10166 
10167         )
10168         IS
10169         l_return_status                             VARCHAR2(1)                                 := fnd_api.g_ret_sts_success;
10170         l_index                                     BINARY_INTEGER;
10171         l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
10172         l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE                := pn_lease_utils.g_pn_miss_char;
10173         l_cur_id                                    NUMBER;
10174         l_tbl_index                                 BINARY_INTEGER;
10175         l_tbl_flag                                  NUMBER                                      :=  1;
10176         l_tbl                                       temp_tbl_type;
10177         l_api_name                                  VARCHAR2(30)                                :=  'CREATE OPTION';
10178         l_err_options_count    NUMBER:=0;
10179         BEGIN
10180         ----------------------dbms_output.put_line('VALIDATION FOR OPTION CREATION STARTED');--Rupak
10181            pvt_debug(g_pkg_name||'-Inside VALIDATE_OPTION_FOR_CREATE:',3);
10182               FOR l_index in p_option_tbl.FIRST.. p_option_tbl.LAST
10183                LOOP
10184                 BEGIN
10185                    IF (  ( p_option_tbl(l_index).option_notice_reqd_type = pn_lease_utils.g_pn_miss_char) OR( p_option_tbl(l_index).option_notice_reqd = pn_lease_utils.g_pn_miss_char)
10186                       ) THEN
10187                       IF ( p_option_tbl(l_index).option_notice_reqd_type = pn_lease_utils.g_pn_miss_char) THEN
10188                            p_option_tbl(l_index).option_notice_reqd_type := 'No';
10189                       ELSIF( p_option_tbl(l_index).option_notice_reqd = pn_lease_utils.g_pn_miss_char) THEN
10190                              p_option_tbl(l_index).option_notice_reqd := 'N';
10191                       END IF;
10192                    --NULL;
10193                    END IF;
10194                     INITIALIZE_OPTIONS_REC(p_option_tbl(l_index),'CREATE_OPTIONS',x_return_status);
10195                     l_tbl_flag      :=      1;
10196                     l_tbl_index      :=      l_index;
10197 
10198                   IF (( p_option_tbl(l_index).option_type IS NOT NULL OR p_option_tbl(l_index).option_type_code IS NOT NULL)
10199                       ) THEN
10200                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_option_type
10201                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_type
10202                                                     , p_operation           =>      'CREATE_OPTIONS'
10203                                                     , p_lookup_type         =>      l_pn_lease_option_type
10204                                                     , x_return_status       =>      x_return_status
10205                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_type_code
10206                                                     );
10207                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10208                           --l_error_flag:='Y';
10209                            l_tbl_flag  :=  0;
10210                            --------------------dbms_output.put_line('In :1 '||x_return_status);
10211                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10212                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_lease_option_type);
10213                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_type));
10214                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_type_code));
10215                            fnd_msg_pub.ADD;
10216                            RAISE fnd_api.g_exc_error;
10217                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10218                           --l_error_flag:='Y';
10219                             l_tbl_flag  :=  0;
10220                             --------------------dbms_output.put_line('In :2 '||x_return_status);
10221                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10222                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_option_type,3));
10223                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10224                             fnd_msg_pub.ADD;
10225                             RAISE fnd_api.g_exc_unexpected_error;
10226                       END IF;
10227                   ELSE
10228                       l_tbl_flag  :=  0;
10229                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10230                       fnd_message.set_token ('API_NAME', l_api_name);
10231                       fnd_message.set_token ('NULL_PARAM', l_param_option_type);
10232                       fnd_msg_pub.ADD;
10233                       RAISE fnd_api.g_exc_error;
10234                   END IF;
10235 
10236 -----------------------------------------------------------------------------------------------------------------------------------------------
10237                     IF (( p_option_tbl(l_index).option_status_type IS NOT NULL OR p_option_tbl(l_index).option_status_lookup_code IS NOT NULL)
10238                        ) THEN
10239                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_status_type
10240                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_status_type
10241                                                     , p_operation           =>      'CREATE_OPTIONS'
10242                                                     , p_lookup_type         =>      l_pn_option_status_type
10243                                                     , x_return_status       =>      x_return_status
10244                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_status_lookup_code
10245                                                     );
10246                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10247                           --l_error_flag:='Y';
10248                            l_tbl_flag  :=  0;
10249                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10250                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_option_status_type);
10251                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_status_type));
10252                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_status_lookup_code));
10253                            fnd_msg_pub.ADD;
10254                            RAISE fnd_api.g_exc_error;
10255                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10256                           --l_error_flag:='Y';
10257                             l_tbl_flag  :=  0;
10258                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10259                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_status_type,3));
10260                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10261                             fnd_msg_pub.ADD;
10262                             RAISE fnd_api.g_exc_unexpected_error;
10263                       END IF;
10264                   ELSE
10265                       l_tbl_flag  :=  0;
10266                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10267                       fnd_message.set_token ('API_NAME', l_api_name);
10268                       fnd_message.set_token ('NULL_PARAM', l_pn_option_status_type);
10269                       fnd_msg_pub.ADD;
10270                       RAISE fnd_api.g_exc_error;
10271                   END IF;
10272 
10273  ---------------------------------------------------------------------------------------------------------------------------------------------
10274 
10275                      IF (( p_option_tbl(l_index).option_notice_reqd_type IS NOT NULL OR p_option_tbl(l_index).option_notice_reqd IS NOT NULL)
10276                        ) THEN
10277                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_notice_given_type
10278                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_notice_reqd_type
10279                                                     , p_operation           =>      'CREATE_OPTIONS'
10280                                                     , p_lookup_type         =>      l_pn_yes_no
10281                                                     , x_return_status       =>      x_return_status
10282                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_notice_reqd
10283                                                     );
10284                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10285                           --l_error_flag:='Y';
10286                            l_tbl_flag  :=  0;
10287                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10288                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_yes_no);
10289                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_notice_reqd_type));
10290                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_notice_reqd));
10291                            fnd_msg_pub.ADD;
10292                            RAISE fnd_api.g_exc_error;
10293                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10294                           --l_error_flag:='Y';
10295                             l_tbl_flag  :=  0;
10296                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10297                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_notice_given_type,3));
10298                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10299                             fnd_msg_pub.ADD;
10300                             RAISE fnd_api.g_exc_unexpected_error;
10301                       END IF;
10302                   ELSE
10303                       l_tbl_flag  :=  0;
10304                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10305                       fnd_message.set_token ('API_NAME', l_api_name);
10306                       fnd_message.set_token ('NULL_PARAM', l_pn_yes_no);
10307                       fnd_msg_pub.ADD;
10308                       RAISE fnd_api.g_exc_error;
10309                   END IF;
10310 
10311  --------------------------------------------------------------------------------------------------------------------------------
10312 
10313                        IF (( p_option_tbl(l_index).uom_type IS NOT NULL OR p_option_tbl(l_index).uom_code IS NOT NULL)
10314                           ) THEN
10315                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_uom_type
10316                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).uom_type
10317                                                     , p_operation           =>      'CREATE_OPTIONS'
10318                                                     , p_lookup_type         =>      l_pn_units_of_measures
10319                                                     , x_return_status       =>      x_return_status
10320                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).uom_code
10321                                                     );
10322                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10323                           --l_error_flag:='Y';
10324                            l_tbl_flag  :=  0;
10325                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10326                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_units_of_measures);
10327                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).uom_type));
10328                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).uom_code));
10329                            fnd_msg_pub.ADD;
10330                            RAISE fnd_api.g_exc_error;
10331                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10332                           --l_error_flag:='Y';
10333                             l_tbl_flag  :=  0;
10334                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10335                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_uom_type,3));
10336                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10337                             fnd_msg_pub.ADD;
10338                             RAISE fnd_api.g_exc_unexpected_error;
10339                       END IF;
10340                    END IF;
10341                  /* ELSE
10342                       l_tbl_flag  :=  0;
10343                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10344                       fnd_message.set_token ('API_NAME', l_api_name);
10345                       fnd_message.set_token ('NULL_PARAM', l_pn_units_of_measures);
10346                       fnd_msg_pub.ADD;
10347                       RAISE fnd_api.g_exc_error;
10348                   END IF;*/
10349 
10350 ----------------------------------------------------------------------------------------------------------------------------------------
10351                        IF  p_option_tbl(l_index).start_date IS NOT NULL AND p_option_tbl(l_index).expiration_date IS NOT NULL THEN
10352                          pn_lease_utils.crossval_leasedates ( p_parameter_name         =>   l_param_start_end_options_date
10353                                                             , p_operation              =>   'CREATE OPTION'
10354                                                             , p_lease_exec_date        =>    NULL
10355                                                             , p_lease_comm_date        =>   p_option_tbl(l_index).start_date
10356                                                             , p_lease_term_date        =>   p_option_tbl(l_index).expiration_date
10357                                                             , x_return_status          =>   x_return_status
10358                                                             );
10359                                       pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:Validate Cross Lease dates Return Status'||x_return_status,3);
10360                                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10361                                           l_tbl_flag      :=      0;
10362                                           fnd_message.set_name ('PN','PN_INVALID_TERMINATION_DT');
10363                                           fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_option_tbl(l_index).expiration_date));
10364                                           fnd_message.set_token ('COMMENCEMENT_DATE', get_miss_date_decode(p_option_tbl(l_index).start_date));
10365                                           fnd_msg_pub.ADD;
10366                                           RAISE fnd_api.g_exc_error;
10367                                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10368                                           l_tbl_flag  :=  0;
10369                                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10370                                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_start_end_options_date,3));
10371                                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10372                                           fnd_msg_pub.ADD;
10373                                           RAISE fnd_api.g_exc_unexpected_error;
10374                                       END IF;
10375                        /*ELSE
10376                               l_tbl_flag  :=  0;
10377                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10378                               fnd_message.set_token ('API_NAME', l_api_name);
10379                               fnd_message.set_token ('NULL_PARAM', 'Options Start And End Dates NULL');
10380                               fnd_msg_pub.ADD;
10381                               RAISE fnd_api.g_exc_error;*/
10382                        END IF;
10383 
10384 
10385 
10386  ---------------------------------------------------------------------------------------------------------------------------------------
10387                       IF  p_option_tbl(l_index).option_exer_start_date IS NOT NULL AND p_option_tbl(l_index).option_exer_end_date IS NOT NULL THEN
10388                          pn_lease_utils.crossval_leasedates ( p_parameter_name         =>   l_param_exercise_dates
10389                                                             , p_operation              =>   'CREATE OPTION'
10390                                                             , p_lease_exec_date        =>    NULL
10391                                                             , p_lease_comm_date        =>   p_option_tbl(l_index).option_exer_start_date
10392                                                             , p_lease_term_date        =>   p_option_tbl(l_index).option_exer_end_date
10393                                                             , x_return_status          =>   x_return_status
10394                                                             );
10395                                       pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:Validate Excercise Cross Lease dates Return Status'||x_return_status,3);
10396                                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10397                                           l_tbl_flag      :=      0;
10398                                           fnd_message.set_name ('PN','PN_INVALID_TERMINATION_DT');
10399                                           fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_option_tbl(l_index).option_exer_end_date));
10400                                           fnd_message.set_token ('COMMENCEMENT_DATE', get_miss_date_decode(p_option_tbl(l_index).option_exer_start_date));
10401                                           fnd_msg_pub.ADD;
10402                                           RAISE fnd_api.g_exc_error;
10403                                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10404                                           l_tbl_flag  :=  0;
10405                                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10406                                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_exercise_dates,3));
10407                                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10408                                           fnd_msg_pub.ADD;
10409                                           RAISE fnd_api.g_exc_unexpected_error;
10410                                       END IF;
10411                        /*ELSE
10412                               l_tbl_flag  :=  0;
10413                               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10414                               fnd_message.set_token ('API_NAME', l_api_name);
10415                               fnd_message.set_token ('NULL_PARAM', 'Exercise Options Start And End Dates NULL');
10416                               fnd_msg_pub.ADD;
10417                               RAISE fnd_api.g_exc_error;*/
10418                        END IF;
10419 
10420 ---------------------------------------------------------------------------------------------------------------------------------------
10421                     --  dff validations
10422 
10423         IF (get_attribute_status('PN_OPTIONS') > 0) THEN
10424                /*get_attribute_mandatory_status('PN_OPTIONS'
10425                                              ,p_option_tbl(l_index).attribute1
10426                                              ,p_option_tbl(l_index).attribute2
10427                                              ,p_option_tbl(l_index).attribute3
10428                                              ,p_option_tbl(l_index).attribute4
10429                                              ,p_option_tbl(l_index).attribute5
10430                                              ,p_option_tbl(l_index).attribute6
10431                                              ,p_option_tbl(l_index).attribute7
10432                                              ,p_option_tbl(l_index).attribute8
10433                                              ,p_option_tbl(l_index).attribute9
10434                                              ,p_option_tbl(l_index).attribute10
10435                                              ,p_option_tbl(l_index).attribute11
10436                                              ,p_option_tbl(l_index).attribute12
10437                                              ,p_option_tbl(l_index).attribute13
10438                                              ,p_option_tbl(l_index).attribute14
10439                                              ,p_option_tbl(l_index).attribute15
10440                                              ,x_return_status
10441                                             );
10442           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
10443               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10444               fnd_message.set_token ('API_NAME', l_api_name);
10445               fnd_message.set_token ('NULL_PARAM','Required attribute in Options is NULL');
10446               fnd_msg_pub.ADD;
10447               RAISE fnd_api.g_exc_error;
10448           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
10449               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10450               fnd_message.set_token ('API_NAME', l_api_name);
10451               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Options is NULL');
10452               fnd_msg_pub.ADD;
10453               RAISE fnd_api.g_exc_unexpected_error;
10454           ELSE*/
10455            IF NOT ((p_option_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute_category IS NULL)
10456                                         AND (p_option_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute1 IS NULL)
10457                                         AND (p_option_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute2 IS NULL)
10458                                         AND (p_option_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute3 IS NULL)
10459                                         AND (p_option_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute4 IS NULL)
10460                                         AND (p_option_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute5 IS NULL)
10461                                         AND (p_option_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute6 IS NULL)
10462                                         AND (p_option_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute7 IS NULL)
10463                                         AND (p_option_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute8 IS NULL)
10464                                         AND (p_option_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute9 IS NULL)
10465                                         AND (p_option_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute10 IS NULL)
10466                                         AND (p_option_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute11 IS NULL)
10467                                         AND (p_option_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute12 IS NULL)
10468                                         AND (p_option_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute13 IS NULL)
10469                                         AND (p_option_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute14 IS NULL)
10470                                         AND (p_option_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).attribute15 IS NULL)
10471                                 ) THEN
10472                                 PN_LEASE_UTILS.validate_desc_flex (
10473                                                  p_api_name => 'PN_OPTIONS'--l_api_name_full
10474                                                , p_application_short_name => 'PN'
10475                                                , p_desc_flex_name => 'PN_OPTIONS'
10476                                                , p_desc_segment1 => p_option_tbl(l_index).attribute1
10477                                                , p_desc_segment2 => p_option_tbl(l_index).attribute2
10478                                                , p_desc_segment3 => p_option_tbl(l_index).attribute3
10479                                                , p_desc_segment4 => p_option_tbl(l_index).attribute4
10480                                                , p_desc_segment5 => p_option_tbl(l_index).attribute5
10481                                                , p_desc_segment6 => p_option_tbl(l_index).attribute6
10482                                                , p_desc_segment7 => p_option_tbl(l_index).attribute7
10483                                                , p_desc_segment8 => p_option_tbl(l_index).attribute8
10484                                                , p_desc_segment9 => p_option_tbl(l_index).attribute9
10485                                                , p_desc_segment10 =>p_option_tbl(l_index).attribute10
10486                                                , p_desc_segment11 =>p_option_tbl(l_index).attribute11
10487                                                , p_desc_segment12 =>p_option_tbl(l_index).attribute12
10488                                                , p_desc_segment13 =>p_option_tbl(l_index).attribute13
10489                                                , p_desc_segment14 =>p_option_tbl(l_index).attribute14
10490                                                , p_desc_segment15 =>p_option_tbl(l_index).attribute15
10491                                                , p_desc_context   => p_option_tbl(l_index).attribute_category
10492                                                , p_resp_appl_id   => fnd_global.resp_appl_id
10493                                                , p_resp_id        => fnd_global.resp_id
10494                                                , p_return_status  => x_return_status
10495                                                 );
10496                                       ----------------------dbms_output.put_line('DFF VALIDATED');
10497                                         IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10498                                            l_tbl_flag  :=  0;
10499                                            fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10500                                            fnd_message.set_token ('COLUMN', 'PN_OPTIONS_DESC_FIELDS');
10501                                            fnd_message.set_token ('P_TEXT', 'PN_OPTIONS'|| '-'|| SQLERRM);
10502                                            fnd_msg_pub.ADD;
10503                                            RAISE fnd_api.g_exc_error;
10504                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10505                                            l_tbl_flag  :=  0;
10506                                            fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10507                                            fnd_message.set_token ('COLUMN', 'PN_OPTIONS_DESC_FIELDS');
10508                                            fnd_message.set_token ('P_TEXT', 'PN_OPTIONS'|| '-'|| SQLERRM);
10509                                            fnd_msg_pub.ADD;
10510                                            RAISE fnd_api.g_exc_unexpected_error;
10511                                         END IF;
10512           END IF;
10513       END IF;
10514                             l_tbl(l_tbl_index).temp_flag   :=  l_tbl_flag;
10515           EXCEPTION
10516               WHEN fnd_api.g_exc_error THEN
10517                 ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
10518                 l_err_options_count := l_err_options_count +1;
10519                   --pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
10520               WHEN OTHERS THEN
10521                    l_err_options_count := l_err_options_count +1;
10522                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
10523                   -- pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
10524             END;
10525             ----------------------dbms_output.put_line('Private Contacts:13');--Rupak
10526          END LOOP;
10527        IF (l_err_options_count = 0) THEN
10528           x_return_status :=  fnd_api.g_ret_sts_success;
10529        ELSE
10530           x_return_status :=  fnd_api.g_ret_sts_error;
10531        END IF;
10532         x_tbl       :=      l_tbl;
10533 
10534   EXCEPTION
10535     WHEN fnd_api.g_exc_unexpected_error THEN
10536          x_return_status :=  fnd_api.g_ret_sts_unexp_error;
10537          pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:Exception:'||SQLERRM,3);
10538     END VALIDATE_OPTION_FOR_CREATE;
10539 
10540 
10541         PROCEDURE OPTION_INSERT_ROW(
10542                         p_option_tbl        IN OUT   NOCOPY    lease_option_tbl_type
10543                       , p_lease_id          IN           PN_LEASES_ALL.lease_id%type
10544                       , p_lease_change_id   IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
10545                       , x_return_status     OUT    NOCOPY      VARCHAR2
10546                       , p_tbl               IN           temp_tbl_type
10547                       , p_commit            IN           VARCHAR2
10548                       , p_validate          IN           VARCHAR2
10549                         )
10550     IS
10551         l_index                                 BINARY_INTEGER;
10552         t_index                                 BINARY_INTEGER;
10553         l_row_id                                VARCHAR2(100)            ;
10554         l_option_id                             PN_OPTIONS_ALL.option_id%type;
10555         l_return_status                         VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
10556         x_msg_count                             NUMBER                                      ;
10557         x_msg_data                              VARCHAR2(2000)                              ;
10558     BEGIN
10559           pvt_debug(g_pkg_name||'-Inside OPTION_INSERT_ROW',3);
10560             for l_index in p_option_tbl.FIRST..p_option_tbl.LAST loop
10561                         IF  p_tbl(l_index).temp_flag = 1 THEN
10562 ----------------------dbms_output.put_line('Options:Insert Row'); --Rupak
10563               pvt_debug(g_pkg_name||'OPTION_INSERT_ROW:Calling pn_options_pkg.insert_row',3);
10564                         l_option_id      :=  NULL;
10565 BEGIN
10566                     pn_options_pkg.insert_row (
10567                                  x_rowid                    =>          l_row_id
10568                                , x_option_id                =>          l_option_id
10569                                , x_attribute14              =>          p_option_tbl(l_index).attribute14
10570                                , x_attribute15              =>          p_option_tbl(l_index).attribute15
10571                                , x_lease_id                 =>          p_lease_id
10572                                , x_lease_change_id          =>          p_lease_change_id
10573                                , x_option_num               =>          p_option_tbl(l_index).option_num
10574                                , x_option_type_code         =>          p_option_tbl(l_index).option_type_code
10575                                , x_start_date               =>          p_option_tbl(l_index).start_date
10576                                , x_expiration_date          =>          p_option_tbl(l_index).expiration_date
10577                                , x_option_size              =>          p_option_tbl(l_index).option_size
10578                                , x_uom_code                 =>          p_option_tbl(l_index).uom_code
10579                                , x_option_status_lookup_code=>          p_option_tbl(l_index).option_status_lookup_code
10580                                , x_attribute_category       =>          p_option_tbl(l_index).attribute_category
10581                                , x_attribute1               =>          p_option_tbl(l_index).attribute1
10582                                , x_attribute2               =>          p_option_tbl(l_index).attribute2
10583                                , x_attribute3               =>          p_option_tbl(l_index).attribute3
10584                                , x_attribute4               =>          p_option_tbl(l_index).attribute4
10585                                , x_attribute5               =>          p_option_tbl(l_index).attribute5
10586                                , x_attribute6               =>          p_option_tbl(l_index).attribute6
10587                                , x_attribute7               =>          p_option_tbl(l_index).attribute7
10588                                , x_attribute8               =>          p_option_tbl(l_index).attribute8
10589                                , x_attribute9               =>          p_option_tbl(l_index).attribute9
10590                                , x_attribute10              =>          p_option_tbl(l_index).attribute10
10591                                , x_attribute11              =>          p_option_tbl(l_index).attribute11
10592                                , x_attribute12              =>          p_option_tbl(l_index).attribute12
10593                                , x_attribute13              =>          p_option_tbl(l_index).attribute13
10594                                , x_creation_date            =>          sysdate
10595                                , x_created_by               =>          fnd_global.user_id
10596                                , x_last_update_date         =>          sysdate
10597                                , x_last_updated_by          =>          fnd_global.user_id
10598                                , x_last_update_login        =>          fnd_global.login_id
10599                                , x_option_exer_start_date   =>          p_option_tbl(l_index).option_exer_start_date
10600                                , x_option_exer_end_date     =>          p_option_tbl(l_index).option_exer_end_date
10601                                , x_option_action_date       =>          p_option_tbl(l_index).option_action_date
10602                                , x_option_cost              =>          p_option_tbl(l_index).option_cost
10603                                , x_option_area_change       =>          p_option_tbl(l_index).option_area_change
10604                                , x_option_reference         =>          p_option_tbl(l_index).option_reference
10605                                , x_option_notice_reqd       =>          p_option_tbl(l_index).option_notice_reqd
10606                                , x_option_comments          =>          p_option_tbl(l_index).comments
10607                                , x_org_id                   =>          fnd_global.org_id
10608                                 );
10609 
10610                                 ----------------------dbms_output.put_line('Options:AFter Insert Row');--Rupak
10611                                 pvt_debug(g_pkg_name||'OPTION_INSERT_ROW:Calling PN_OPTIONS_PKG.INSERT_ROW Successful',3);
10612 EXCEPTION
10613 WHEN OTHERS THEN
10614    --NULL
10615     ----------------------dbms_output.put_line('ERROR IN OPTIONS INSERTION:'||SQLERRM);
10616     pvt_debug(g_pkg_name||'OPTION_INSERT_ROW:Exception:PN_OPTIONS_PKG.INSERT_ROW',3);
10617 END;
10618                                 --SAVEPOINT A;
10619                                 IF l_option_id IS NOT NULL AND p_option_tbl(l_index).option_milestone_tbl.count <> 0 THEN
10620                       ----------------------dbms_output.put_line ('--------CREATE MILESTONE------');
10621                       CREATE_MILESTONE (
10622                           p_milestone_tbl     =>    p_option_tbl(l_index).option_milestone_tbl
10623                         , p_lease_id          =>    p_lease_id
10624                         , p_lease_change_id   =>    p_lease_change_id
10625                         , p_option_id          =>   l_option_id
10626                         , p_insurance_req_id   =>   null
10627                         , p_payment_term_id    =>   null
10628                         , p_commit            =>    p_commit
10629                         , p_validate          =>    p_validate
10630                         , x_return_status     =>    l_return_status
10631                --         , x_msg_count         =>    x_msg_count
10632                --         , x_msg_data          =>    x_msg_data
10633                         );
10634                         pvt_debug(g_pkg_name||'OPTION_INSERT_ROW:CREATE_MILESTONE Return Status:'||l_return_status,3);
10635                      END IF;
10636 
10637            ----------------------dbms_output.put_line('RECORD FOR OPTIONS CREATED WITH OPTION ID:  '|| l_option_id);
10638                      p_option_tbl(l_index).option_id  :=  l_option_id;
10639                  END IF;
10640          END loop;
10641 
10642          x_return_status    :=  fnd_api.g_ret_sts_success;
10643          p_option_tbl    :=  p_option_tbl;
10644 
10645 
10646         EXCEPTION
10647             WHEN OTHERS THEN
10648             x_return_status := fnd_api.g_ret_sts_unexp_error;
10649             ----------------------dbms_output.put_line('INSERT PROCEDURE FAILED FOR OPTIONS CREATION') ;
10650             ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
10651             pvt_debug(g_pkg_name||'OPTION_INSERT_ROW:CREATE_MILESTONE:Exception:'||SQLERRM,3);
10652      END OPTION_INSERT_ROW;
10653 
10654 
10655         PROCEDURE CREATE_OPTION (
10656                           p_lease_id          IN          PN_LEASES_ALL.lease_id%type
10657                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.lease_change_id%type
10658                         , p_commit            IN          VARCHAR2
10659                         , p_validate          IN          VARCHAR2
10660                         , p_option_tbl        IN OUT  NOCOPY    lease_option_tbl_type
10661                         , x_return_status     OUT   NOCOPY      VARCHAR2
10662                  --       , x_msg_count         OUT         NUMBER
10663                  --       , x_msg_data          OUT         VARCHAR2
10664         )
10665         IS
10666         l_return_status     VARCHAR2(1)                         :=          fnd_api.g_ret_sts_success           ;
10667         l_msg_count         NUMBER                                                                              ;
10668         l_msg_data          VARCHAR2(2000)                                                                      ;
10669         x_out_tbl           temp_tbl_type                                                                       ;
10670         l_api_name          VARCHAR2(100)                       :=          'NOTES CREATION'                    ;
10671         BEGIN
10672         ----------------------dbms_output.put_line('CREATE OPTION PROCESS STARTED');
10673         VALIDATE_OPTION_FOR_CREATE(p_option_tbl               =>  p_option_tbl
10674                                   ,x_tbl                      =>  x_out_tbl
10675                                   ,x_return_status            =>  x_return_status
10676                                 );
10677           pvt_debug(g_pkg_name||'Inside CREATE_OPTION:VALIDATE_OPTION_FOR_CREATE Return Status'||x_return_status,3);
10678           --------------------dbms_output.put_line('OPTIONS:x_return_status'||x_return_status);--OOPS
10679          IF (NVL(p_validate,'F') <> 'T'  AND x_return_status = fnd_api.g_ret_sts_success)THEN
10680           OPTION_INSERT_ROW( p_option_tbl      =>  p_option_tbl
10681                             ,p_lease_id         =>  p_lease_id
10682                             ,p_lease_change_id  =>  p_lease_change_id
10683                             ,x_return_status    =>  x_return_status
10684                             ,p_tbl              =>  x_out_tbl
10685                             ,p_commit           =>  p_commit
10686                             ,p_validate         =>  p_validate
10687                              );
10688                    pvt_debug(g_pkg_name||'Inside CREATE_OPTION:OPTION_INSERT_ROW Return Status'||x_return_status,3);
10689                    --------------------dbms_output.put_line('OPTIONS:x_return_status:OPTION_INSERT_ROW:'||x_return_status);--OOPS
10690               IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
10691                    RAISE fnd_api.g_exc_error;
10692               END IF;
10693          ELSE
10694              RAISE fnd_api.g_exc_error;
10695          END IF;
10696 
10697     EXCEPTION
10698           WHEN fnd_api.g_exc_error THEN
10699              x_return_status := fnd_api.g_ret_sts_error;
10700           WHEN fnd_api.g_exc_unexpected_error THEN
10701              x_return_status := fnd_api.g_ret_sts_unexp_error;
10702           WHEN OTHERS THEN
10703              x_return_status  := fnd_api.g_ret_sts_unexp_error;
10704     END CREATE_OPTION;
10705 
10706 
10707 
10708     PROCEDURE VALIDATE_OPTION_FOR_UPDATE(
10709                                 p_option_tbl     IN OUT NOCOPY lease_option_tbl_type
10710                                ,p_lease_id      IN PN_LEASES_ALL.LEASE_ID%TYPE
10711                                ,p_lease_change_id IN PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
10712                                ,x_tbl           OUT  NOCOPY   temp_tbl_type
10713                                ,x_return_status IN OUT NOCOPY VARCHAR2
10714                                ,p_commit        IN      VARCHAR2
10715         )
10716     IS
10717     l_return_status                             VARCHAR2(1)    := fnd_api.g_ret_sts_success;
10718     l_index                                     BINARY_INTEGER;
10719     l_lookup_meaning                            FND_LOOKUPS.MEANING%TYPE;
10720     l_lookup_code                               FND_LOOKUPS.LOOKUP_CODE%TYPE;
10721     l_cur_id                                    NUMBER;
10722     l_tbl_index                                 BINARY_INTEGER;
10723     l_tbl_flag                                  NUMBER;
10724     l_tbl                                       temp_tbl_type;
10725     l_api_name                                  VARCHAR2(30):= 'UPDATE OPTIONS';
10726 
10727     l_error_count_err NUMBER:=0;
10728     l_error_count_uerr NUMBER:=0;
10729 
10730     CURSOR c_option (
10731            p_option_id NUMBER
10732       )
10733       IS
10734          SELECT
10735              option_id,
10736              lease_id,
10737              lease_change_id,
10738              option_num,
10739              option_type_code,
10740              option_status_lookup_code,
10741              start_date,
10742              expiration_date,
10743              option_size,
10744              uom_code,
10745              attribute_category,
10746              attribute1,
10747              attribute2,
10748              attribute3,
10749              attribute4,
10750              attribute5,
10751              attribute6,
10752              attribute7,
10753              attribute8,
10754              attribute9,
10755              attribute10,
10756              attribute11,
10757              attribute12,
10758              attribute13,
10759              attribute14,
10760              attribute15,
10761              org_id,
10762              option_exer_start_date,
10763              option_exer_end_date,
10764              option_action_date,
10765              option_cost,
10766              option_area_change,
10767              option_reference,
10768              option_notice_reqd,
10769              option_comments
10770           FROM PN_OPTIONS_ALL
10771           where option_id = p_option_id;
10772           lcu_option_rec           c_option%ROWTYPE;
10773     BEGIN
10774              l_return_status          := fnd_api.g_ret_sts_success ;
10775            pvt_debug(g_pkg_name||'Inside VALIDATE_OPTION_FOR_UPDATE',3);
10776           For l_index in p_option_tbl.FIRST..p_option_tbl.LAST LOOP
10777                BEGIN
10778                      l_tbl_index          :=              l_index;
10779                      IF p_option_tbl(l_index).option_id IS NULL THEN
10780                                l_tbl_flag      :=      1;
10781                                pvt_debug(g_pkg_name||'VALIDATE_OPTION_FOR_UPDATE:OPTION_ID IS NULL',3);
10782                                fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10783                                fnd_message.set_token ('API_NAME', l_api_name);
10784                                fnd_message.set_token ('NULL_PARAM', 'OPTION ID: NULL');
10785                                fnd_msg_pub.ADD;
10786                                RAISE fnd_api.g_exc_error;
10787                      ELSE
10788                             l_tbl_flag       :=      2;
10789                             l_cur_id        :=      p_option_tbl(l_index).option_id;
10790 
10791                             OPEN c_option(l_cur_id);
10792                             ----------------------dbms_output.put_line('cursor opened for update');--Rupak
10793                             FETCH c_option INTO lcu_option_rec;
10794                             IF  lcu_option_rec.lease_id   <> p_lease_id  THEN
10795                                 l_tbl_flag  :=  0;
10796                             END IF;
10797 
10798                             IF  (p_option_tbl(l_index).option_num = pn_lease_utils.g_pn_miss_char) THEN
10799                                 p_option_tbl(l_index).option_num  :=  lcu_option_rec.option_num;
10800                             END IF;
10801                             ----------------------dbms_output.put_line('Validate Options:0.3');--Rupak
10802                             IF  (p_option_tbl(l_index).option_reference = pn_lease_utils.g_pn_miss_char) THEN
10803                                 p_option_tbl(l_index).option_reference  :=  lcu_option_rec.option_reference;
10804                             END IF;
10805                                ----------------------dbms_output.put_line('Validate Options:0.3');--Rupak
10806                             IF  ( p_option_tbl(l_index).comments = pn_lease_utils.g_pn_miss_char) THEN
10807                                  p_option_tbl(l_index).comments  :=  lcu_option_rec.option_comments;
10808                             END IF;
10809                             ----------------------dbms_output.put_line('Validate Options:0.4');--Rupak
10810                             IF (p_option_tbl(l_index).start_date = pn_lease_utils.g_pn_miss_date) THEN
10811                                 p_option_tbl(l_index).start_date  :=  lcu_option_rec.start_date;
10812                             END IF;
10813                             IF (p_option_tbl(l_index).expiration_date = pn_lease_utils.g_pn_miss_date) THEN
10814                                 p_option_tbl(l_index).expiration_date  :=  lcu_option_rec.expiration_date;
10815                             END IF;
10816                             ----------------------dbms_output.put_line('Validate Options:0.5');--Rupak
10817                             IF (p_option_tbl(l_index).option_exer_start_date = pn_lease_utils.g_pn_miss_date) THEN
10818                                 p_option_tbl(l_index).option_exer_start_date  :=  lcu_option_rec.option_exer_start_date;
10819                             END IF;
10820                             ----------------------dbms_output.put_line('Validate Options:0.6');--Rupak
10821                             IF (p_option_tbl(l_index).option_action_date = pn_lease_utils.g_pn_miss_date) THEN
10822                                  p_option_tbl(l_index).option_action_date  :=  lcu_option_rec.option_action_date;
10823                             END IF;
10824                             IF (p_option_tbl(l_index).option_cost = pn_lease_utils.g_pn_miss_char) THEN
10825                                 p_option_tbl(l_index).option_cost  :=  lcu_option_rec.option_cost;
10826                             END IF;
10827                             ----------------------dbms_output.put_line('Validate Options:0.7');--Rupak
10828                             IF ( p_option_tbl(l_index).option_area_change = pn_lease_utils.g_pn_miss_num) THEN
10829                                 p_option_tbl(l_index).option_area_change :=  lcu_option_rec.option_area_change;
10830                             END IF;
10831 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
10832                            ----------------------dbms_output.put_line('Validate Options:1');--Rupak
10833 
10834 
10835 
10836                      IF ( ( p_option_tbl(l_index).option_type IS NOT NULL AND p_option_tbl(l_index).option_type <> pn_lease_utils.g_pn_miss_char)
10837                        OR (p_option_tbl(l_index).option_type_code IS NOT NULL AND p_option_tbl(l_index).option_type_code <> pn_lease_utils.g_pn_miss_char)
10838                        ) THEN
10839                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_option_type
10840                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_type
10841                                                     , p_operation           =>      'CREATE_OPTIONS'
10842                                                     , p_lookup_type         =>      l_pn_lease_option_type
10843                                                     , x_return_status       =>      x_return_status
10844                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_type_code
10845                                                     );
10846 
10847                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10848                           --l_error_flag:='Y';
10849                            l_tbl_flag  :=  0;
10850                            ----------------------dbms_output.put_line('In :1 '||x_return_status);
10851                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10852                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_lease_option_type);
10853                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_type));
10854                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_type_code));
10855                            fnd_msg_pub.ADD;
10856                            RAISE fnd_api.g_exc_error;
10857                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10858                           --l_error_flag:='Y';
10859                             l_tbl_flag  :=  0;
10860                             --------------------dbms_output.put_line('In :2 '||x_return_status);
10861                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10862                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_option_type,3));
10863                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10864                             fnd_msg_pub.ADD;
10865                             RAISE fnd_api.g_exc_unexpected_error;
10866                       END IF;
10867                   ELSIF(p_option_tbl(l_index).option_type IS NULL OR p_option_tbl(l_index).option_type_code IS NULL) THEN
10868                       l_tbl_flag  :=  0;
10869                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10870                       fnd_message.set_token ('API_NAME', l_api_name);
10871                       fnd_message.set_token ('NULL_PARAM', l_param_option_type);
10872                       fnd_msg_pub.ADD;
10873                       RAISE fnd_api.g_exc_error;
10874                   ELSE
10875                      p_option_tbl(l_index).option_type_code := lcu_option_rec.option_type_code;
10876                   END IF;
10877 -----------------------------------------------------------------------------------------------------------------------------------------------
10878                      IF (( p_option_tbl(l_index).option_status_type IS NOT NULL AND p_option_tbl(l_index).option_status_type <> pn_lease_utils.g_pn_miss_char)
10879                        OR( p_option_tbl(l_index).option_status_lookup_code IS NOT NULL AND p_option_tbl(l_index).option_status_lookup_code <> pn_lease_utils.g_pn_miss_char)
10880                         ) THEN
10881                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_status_type
10882                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_status_type
10883                                                     , p_operation           =>      'CREATE_OPTIONS'
10884                                                     , p_lookup_type         =>      l_pn_option_status_type
10885                                                     , x_return_status       =>      x_return_status
10886                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_status_lookup_code
10887                                                     );
10888                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10889                           --l_error_flag:='Y';
10890                            l_tbl_flag  :=  0;
10891                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10892                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_option_status_type);
10893                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_status_type));
10894                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_status_lookup_code));
10895                            fnd_msg_pub.ADD;
10896                            RAISE fnd_api.g_exc_error;
10897                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10898                           --l_error_flag:='Y';
10899                             l_tbl_flag  :=  0;
10900                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10901                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_status_type,3));
10902                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10903                             fnd_msg_pub.ADD;
10904                             RAISE fnd_api.g_exc_unexpected_error;
10905                       END IF;
10906                   ELSIF(p_option_tbl(l_index).option_status_type IS NULL OR p_option_tbl(l_index).option_status_lookup_code IS NULL) THEN
10907                       l_tbl_flag  :=  0;
10908                       fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
10909                       fnd_message.set_token ('API_NAME', l_api_name);
10910                       fnd_message.set_token ('NULL_PARAM', l_pn_option_status_type);
10911                       fnd_msg_pub.ADD;
10912                       RAISE fnd_api.g_exc_error;
10913                   ELSE
10914                    p_option_tbl(l_index).option_status_lookup_code:= lcu_option_rec.option_status_lookup_code;
10915                   END IF;
10916  ---------------------------------------------------------------------------------------------------------------------------------------------
10917                    IF ( p_option_tbl(l_index).option_notice_reqd_type = pn_lease_utils.g_pn_miss_char OR  p_option_tbl(l_index).option_notice_reqd_type IS NULL) THEN
10918                       p_option_tbl(l_index).option_notice_reqd_type := 'No';
10919                    END IF;
10920                    IF ( p_option_tbl(l_index).option_notice_reqd = pn_lease_utils.g_pn_miss_char OR p_option_tbl(l_index).option_notice_reqd IS NULL) THEN
10921                       p_option_tbl(l_index).option_notice_reqd := 'N';
10922                    END IF;
10923 
10924                    IF (( p_option_tbl(l_index).option_notice_reqd_type IS NOT NULL AND p_option_tbl(l_index).option_notice_reqd_type <> pn_lease_utils.g_pn_miss_char)
10925                       OR( p_option_tbl(l_index).option_notice_reqd IS NOT NULL AND p_option_tbl(l_index).option_notice_reqd <> pn_lease_utils.g_pn_miss_char)
10926                        ) THEN
10927                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_notice_given_type
10928                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).option_notice_reqd_type
10929                                                     , p_operation           =>      'CREATE_OPTIONS'
10930                                                     , p_lookup_type         =>      l_pn_yes_no
10931                                                     , x_return_status       =>      x_return_status
10932                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).option_notice_reqd
10933                                                     );
10934                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10935                           --l_error_flag:='Y';
10936                            l_tbl_flag  :=  0;
10937                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10938                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_yes_no);
10939                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).option_notice_reqd_type));
10940                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).option_notice_reqd));
10941                            fnd_msg_pub.ADD;
10942                            RAISE fnd_api.g_exc_error;
10943                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10944                           --l_error_flag:='Y';
10945                             l_tbl_flag  :=  0;
10946                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10947                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_notice_given_type,3));
10948                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10949                             fnd_msg_pub.ADD;
10950                             RAISE fnd_api.g_exc_unexpected_error;
10951                       END IF;
10952                   ELSIF(p_option_tbl(l_index).option_notice_reqd_type IS NULL OR p_option_tbl(l_index).option_notice_reqd IS NULL) THEN
10953                        p_option_tbl(l_index).option_notice_reqd := NULL;
10954                   ELSE
10955                     p_option_tbl(l_index).option_notice_reqd := lcu_option_rec.option_notice_reqd;
10956                   END IF;
10957  --------------------------------------------------------------------------------------------------------------------------------
10958                      IF ( ( p_option_tbl(l_index).uom_type IS NOT NULL AND p_option_tbl(l_index).uom_type <> pn_lease_utils.g_pn_miss_char)
10959                         OR(p_option_tbl(l_index).uom_code IS NOT NULL  AND p_option_tbl(l_index).uom_code <> pn_lease_utils.g_pn_miss_char)
10960                           ) THEN
10961                       pn_lease_utils.get_lookup_code( p_parameter_name      =>      l_param_uom_type
10962                                                     , p_lookup_meaning      =>      p_option_tbl(l_index).uom_type
10963                                                     , p_operation           =>      'CREATE_OPTIONS'
10964                                                     , p_lookup_type         =>      l_pn_units_of_measures
10965                                                     , x_return_status       =>      x_return_status
10966                                                     , x_lookup_type_code    =>      p_option_tbl(l_index).uom_code
10967                                                     );
10968                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
10969                           --l_error_flag:='Y';
10970                            l_tbl_flag  :=  0;
10971                            fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
10972                            fnd_message.set_token ('LOOKUP_TYPE', l_pn_units_of_measures);
10973                            fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_option_tbl(l_index).uom_type));
10974                            fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_option_tbl(l_index).uom_code));
10975                            fnd_msg_pub.ADD;
10976                            RAISE fnd_api.g_exc_error;
10977                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10978                           --l_error_flag:='Y';
10979                             l_tbl_flag  :=  0;
10980                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
10981                             fnd_message.set_token ('COLUMN', SUBSTR(l_param_uom_type,3));
10982                             fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
10983                             fnd_msg_pub.ADD;
10984                             RAISE fnd_api.g_exc_unexpected_error;
10985                       END IF;
10986                   ELSIF( p_option_tbl(l_index).uom_type IS NULL OR p_option_tbl(l_index).uom_code IS NULL) THEN
10987                      p_option_tbl(l_index).uom_code := NULL;
10988                   ELSE
10989                      p_option_tbl(l_index).uom_code := lcu_option_rec.uom_code;
10990                   END IF;
10991 ----------------------------------------------------------------------------------------------------------------------------------------
10992 
10993 
10994                   IF   ( p_option_tbl(l_index).start_date IS NOT NULL AND p_option_tbl(l_index).start_date <> pn_lease_utils.g_pn_miss_date)
10995                     OR ( p_option_tbl(l_index).expiration_date IS NOT NULL AND p_option_tbl(l_index).expiration_date <> pn_lease_utils.g_pn_miss_date)
10996                     THEN
10997                          pn_lease_utils.crossval_leasedates ( p_parameter_name         =>   l_param_start_end_options_date
10998                                                             , p_operation              =>   'CREATE_OPTION'
10999                                                             , p_lease_exec_date        =>    NULL
11000                                                             , p_lease_comm_date        =>   p_option_tbl(l_index).start_date
11001                                                             , p_lease_term_date        =>   p_option_tbl(l_index).expiration_date
11002                                                             , x_return_status          =>   x_return_status
11003                                                             );
11004                                       pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_CREATE:Validate Cross Lease dates Return Status'||x_return_status,3);
11005                                       IF (x_return_status = fnd_api.g_ret_sts_error) THEN
11006                                           l_tbl_flag      :=      0;
11007                                           fnd_message.set_name ('PN','PN_INVALID_TERMINATION_DT');
11008                                           fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_option_tbl(l_index).expiration_date));
11009                                           fnd_message.set_token ('COMMENCEMENT_DATE', get_miss_date_decode(p_option_tbl(l_index).start_date));
11010                                           fnd_msg_pub.ADD;
11011                                           RAISE fnd_api.g_exc_error;
11012                                       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
11013                                           l_tbl_flag  :=  0;
11014                                           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
11015                                           fnd_message.set_token ('COLUMN', SUBSTR(l_param_start_end_options_date,3));
11016                                           fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
11017                                           fnd_msg_pub.ADD;
11018                                           RAISE fnd_api.g_exc_unexpected_error;
11019                                       END IF;
11020                       ELSIF(p_option_tbl(l_index).start_date IS NULL OR p_option_tbl(l_index).expiration_date IS NULL ) THEN
11021                          p_option_tbl(l_index).start_date       := NULL;
11022                          p_option_tbl(l_index).expiration_date  := NULL;
11023                        ELSE
11024                                p_option_tbl(l_index).start_date := lcu_option_rec.start_date;
11025                                p_option_tbl(l_index).expiration_date := lcu_option_rec.expiration_date;
11026                        END IF;
11027 
11028 
11029                       ----------------------dbms_output.put_line('Validate Options:7');--Rupak
11030                                     -- Dff validations
11031                                    /*IF NOT ( (p_option_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char)
11032                                         AND (p_option_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)
11033                                         AND (p_option_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)
11034                                         AND (p_option_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)
11035                                         AND (p_option_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)
11036                                         AND (p_option_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)
11037                                         AND (p_option_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)
11038                                         AND (p_option_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)
11039                                         AND (p_option_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)
11040                                         AND (p_option_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)
11041                                         AND (p_option_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)
11042                                         AND (p_option_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)
11043                                         AND (p_option_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)
11044                                         AND (p_option_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)
11045                                         AND (p_option_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)
11046                                         AND (p_option_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)
11047                                 ) THEN*/
11048                                      IF (p_option_tbl(l_index).attribute_category = pn_lease_utils.g_pn_miss_char) THEN
11049                                        p_option_tbl(l_index).attribute_category  := lcu_option_rec.attribute_category;
11050                                      ELSIF(p_option_tbl(l_index).attribute_category IS NULL) THEN
11051                                          p_option_tbl(l_index).attribute_category := NULL;
11052                                      END IF;
11053                                      IF (p_option_tbl(l_index).attribute1 = pn_lease_utils.g_pn_miss_char)  THEN
11054                                          p_option_tbl(l_index).attribute1  := lcu_option_rec.attribute1;
11055                                      ELSIF(p_option_tbl(l_index).attribute1 IS NULL) THEN
11056                                          p_option_tbl(l_index).attribute1 := NULL;
11057                                      END IF;
11058 
11059                                      IF (p_option_tbl(l_index).attribute2 = pn_lease_utils.g_pn_miss_char)  THEN
11060                                          p_option_tbl(l_index).attribute2  := lcu_option_rec.attribute2;
11061                                      ELSIF(p_option_tbl(l_index).attribute2 IS NULL) THEN
11062                                          p_option_tbl(l_index).attribute2 := NULL;
11063                                      END IF;
11064                                      IF (p_option_tbl(l_index).attribute3 = pn_lease_utils.g_pn_miss_char)  THEN
11065                                          p_option_tbl(l_index).attribute3  := lcu_option_rec.attribute3;
11066                                      ELSIF(p_option_tbl(l_index).attribute3 IS NULL) THEN
11067                                          p_option_tbl(l_index).attribute3 := NULL;
11068                                      END IF;
11069                                      IF (p_option_tbl(l_index).attribute4 = pn_lease_utils.g_pn_miss_char)  THEN
11070                                          p_option_tbl(l_index).attribute4  := lcu_option_rec.attribute4;
11071                                      ELSIF(p_option_tbl(l_index).attribute4 IS NULL) THEN
11072                                          p_option_tbl(l_index).attribute4 := NULL;
11073                                      END IF;
11074                                      IF (p_option_tbl(l_index).attribute5 = pn_lease_utils.g_pn_miss_char)  THEN
11075                                          p_option_tbl(l_index).attribute5  := lcu_option_rec.attribute5;
11076                                      ELSIF(p_option_tbl(l_index).attribute5 IS NULL) THEN
11077                                          p_option_tbl(l_index).attribute5 := NULL;
11078                                      END IF;
11079                                      IF (p_option_tbl(l_index).attribute6 = pn_lease_utils.g_pn_miss_char)  THEN
11080                                          p_option_tbl(l_index).attribute6  := lcu_option_rec.attribute6;
11081                                      ELSIF(p_option_tbl(l_index).attribute6 IS NULL) THEN
11082                                          p_option_tbl(l_index).attribute6 := NULL;
11083                                      END IF;
11084                                      IF (p_option_tbl(l_index).attribute7 = pn_lease_utils.g_pn_miss_char)  THEN
11085                                          p_option_tbl(l_index).attribute7  := lcu_option_rec.attribute7;
11086                                      ELSIF(p_option_tbl(l_index).attribute7 IS NULL) THEN
11087                                          p_option_tbl(l_index).attribute7 := NULL;
11088                                      END IF;
11089                                      IF (p_option_tbl(l_index).attribute8 = pn_lease_utils.g_pn_miss_char)  THEN
11090                                          p_option_tbl(l_index).attribute8  := lcu_option_rec.attribute8;
11091                                      ELSIF(p_option_tbl(l_index).attribute8 IS NULL) THEN
11092                                          p_option_tbl(l_index).attribute8 := NULL;
11093                                      END IF;
11094                                      IF (p_option_tbl(l_index).attribute9 = pn_lease_utils.g_pn_miss_char)  THEN
11095                                          p_option_tbl(l_index).attribute9  := lcu_option_rec.attribute9;
11096                                      ELSIF(p_option_tbl(l_index).attribute9 IS NULL) THEN
11097                                          p_option_tbl(l_index).attribute9 := NULL;
11098                                      END IF;
11099                                      IF (p_option_tbl(l_index).attribute10 = pn_lease_utils.g_pn_miss_char)  THEN
11100                                          p_option_tbl(l_index).attribute10  := lcu_option_rec.attribute10;
11101                                      ELSIF(p_option_tbl(l_index).attribute10 IS NULL) THEN
11102                                          p_option_tbl(l_index).attribute10 := NULL;
11103                                      END IF;
11104                                      IF (p_option_tbl(l_index).attribute11 = pn_lease_utils.g_pn_miss_char)  THEN
11105                                          p_option_tbl(l_index).attribute11  := lcu_option_rec.attribute11;
11106                                      ELSIF(p_option_tbl(l_index).attribute11 IS NULL) THEN
11107                                          p_option_tbl(l_index).attribute11 := NULL;
11108                                      END IF;
11109                                      IF (p_option_tbl(l_index).attribute12 = pn_lease_utils.g_pn_miss_char)  THEN
11110                                          p_option_tbl(l_index).attribute12  := lcu_option_rec.attribute12;
11111                                      ELSIF(p_option_tbl(l_index).attribute12 IS NULL) THEN
11112                                          p_option_tbl(l_index).attribute12 := NULL;
11113                                      END IF;
11114                                      IF (p_option_tbl(l_index).attribute13 = pn_lease_utils.g_pn_miss_char)  THEN
11115                                          p_option_tbl(l_index).attribute13  := lcu_option_rec.attribute13;
11116                                      ELSIF(p_option_tbl(l_index).attribute13 IS NULL) THEN
11117                                          p_option_tbl(l_index).attribute13 := NULL;
11118                                      END IF;
11119                                      IF (p_option_tbl(l_index).attribute14 = pn_lease_utils.g_pn_miss_char)  THEN
11120                                          p_option_tbl(l_index).attribute14  := lcu_option_rec.attribute14;
11121                                      ELSIF(p_option_tbl(l_index).attribute14 IS NULL) THEN
11122                                          p_option_tbl(l_index).attribute14 := NULL;
11123                                      END IF;
11124                                      IF (p_option_tbl(l_index).attribute15 = pn_lease_utils.g_pn_miss_char)  THEN
11125                                          p_option_tbl(l_index).attribute15  := lcu_option_rec.attribute15;
11126                                      ELSIF(p_option_tbl(l_index).attribute15 IS NULL) THEN
11127                                          p_option_tbl(l_index).attribute15 := NULL;
11128                                      END IF;
11129                                 PN_LEASE_UTILS.validate_desc_flex (
11130                                                  p_api_name => 'PN_OPTIONS'--l_api_name_full
11131                                                , p_application_short_name => 'PN'
11132                                                , p_desc_flex_name => 'PN_OPTIONS'
11133                                                , p_desc_segment1 => p_option_tbl(l_index).attribute1
11134                                                , p_desc_segment2 => p_option_tbl(l_index).attribute2
11135                                                , p_desc_segment3 => p_option_tbl(l_index).attribute3
11136                                                , p_desc_segment4 => p_option_tbl(l_index).attribute4
11137                                                , p_desc_segment5 => p_option_tbl(l_index).attribute5
11138                                                , p_desc_segment6 => p_option_tbl(l_index).attribute6
11139                                                , p_desc_segment7 => p_option_tbl(l_index).attribute7
11140                                                , p_desc_segment8 => p_option_tbl(l_index).attribute8
11141                                                , p_desc_segment9 => p_option_tbl(l_index).attribute9
11142                                                , p_desc_segment10 =>p_option_tbl(l_index).attribute10
11143                                                , p_desc_segment11 =>p_option_tbl(l_index).attribute11
11144                                                , p_desc_segment12 =>p_option_tbl(l_index).attribute12
11145                                                , p_desc_segment13 =>p_option_tbl(l_index).attribute13
11146                                                , p_desc_segment14 =>p_option_tbl(l_index).attribute14
11147                                                , p_desc_segment15 =>p_option_tbl(l_index).attribute15
11148                                                , p_desc_context => p_option_tbl(l_index).attribute_category
11149                                                , p_resp_appl_id => fnd_global.resp_appl_id
11150                                                , p_resp_id => fnd_global.resp_id
11151                                                , p_return_status => x_return_status
11152                                                 );
11153                                        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
11154                                              l_tbl_flag  :=  0;
11155                                              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
11156                                              fnd_message.set_token ('COLUMN', 'PN_OPTIONS_DESC_FIELDS');
11157                                              fnd_message.set_token ('P_TEXT', 'PN_OPTIONS'|| '-'|| SQLERRM);
11158                                              fnd_msg_pub.ADD;
11159                                              RAISE fnd_api.g_exc_error;
11160                                         ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
11161                                             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
11162                                             fnd_message.set_token ('COLUMN', 'PN_OPTIONS_DESC_FIELDS');
11163                                             fnd_message.set_token ('P_TEXT', 'PN_OPTIONS'|| '-'|| SQLERRM);
11164                                             fnd_msg_pub.ADD;
11165                                             RAISE fnd_api.g_exc_unexpected_error;
11166                                         END IF;
11167                               -- END IF;
11168                                                CLOSE c_option;
11169                         ----------------------dbms_output.put_line ('VALIDATIONS FOR option UPDATE COMPLETED');--Rupak
11170                  END IF;
11171                       l_tbl(l_tbl_index).temp_flag          :=  l_tbl_flag;
11172          EXCEPTION
11173           WHEN fnd_api.g_exc_error THEN
11174              l_error_count_err := l_error_count_err+1;
11175              ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
11176             pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_UPDATE:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
11177           WHEN OTHERS THEN
11178               l_error_count_uerr := l_error_count_uerr+1;
11179             ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
11180              pvt_debug(g_pkg_name||'-VALIDATE_OPTION_FOR_UPDATE:LOOOPING:EXCEPTION:'||SQLERRM,3);
11181          END;
11182       END LOOP;
11183           IF ( l_error_count_err <> 0 OR l_error_count_uerr <> 0) THEN
11184             x_return_status := fnd_api.g_ret_sts_error;
11185           ELSE
11186             x_return_status   :=  fnd_api.g_ret_sts_success;
11187           END IF;
11188            x_tbl        :=      l_tbl;
11189 
11190     EXCEPTION
11191      WHEN OTHERS THEN
11192               x_return_status := fnd_api.g_ret_sts_unexp_error;
11193      ----------------------dbms_output.put_line('sqlcode:    '||sqlcode||'and  sqlerrm:  '||sqlerrm);
11194       pvt_debug(g_pkg_name||'VALIDATE_OPTION_FOR_UPDATE:Exception:'||SQLERRM,3);
11195     END VALIDATE_OPTION_FOR_UPDATE;
11196 
11197         PROCEDURE OPTION_UPDATE_ROW(
11198                                  p_option_tbl        IN OUT  NOCOPY    lease_option_tbl_type
11199                                 ,p_lease_id        IN           PN_LEASES_ALL.LEASE_ID%type
11200                                 ,p_lease_change_id IN           PN_LEASE_CHANGES_ALL.lease_change_id%type
11201                                 ,x_return_status   OUT    NOCOPY      VARCHAR2
11202                                 ,p_tbl             IN           temp_tbl_type
11203                                 ,p_commit          IN           VARCHAR2
11204                                 ,p_validate        IN           VARCHAR2
11205                             )
11206     IS
11207                                 l_return_status     VARCHAR2(1)     :=      fnd_api.g_ret_sts_success;
11208                                 l_index             BINARY_INTEGER;
11209                                 l_option_id         PN_OPTIONS_ALL.OPTION_ID%type;
11210                                 x_msg_count         NUMBER ;
11211                                 x_msg_data          VARCHAR2(2000)  ;
11212 
11213    l_error_count_uerr NUMBER := 0;
11214    l_error_count_err  NUMBER := 0;
11215      BEGIN
11216            For l_index in p_option_tbl.FIRST..p_option_tbl.LAST LOOP
11217     BEGIN
11218          IF p_tbl(l_index).temp_flag =   2 THEN
11219          ----------------------dbms_output.put_line ('RECORD UPDATION STARTED FOR OPTIONS');--Rupak
11220 
11221 
11222               pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:Calling PN_OPTIONS_PKG.UPDATE_ROW',3);
11223                      pn_options_pkg.update_row (
11224                                  x_option_id            =>       p_option_tbl(l_index).option_id
11225                                , x_lease_id             =>       p_lease_id
11226                                , x_lease_change_id      =>       p_lease_change_id
11227                                , x_option_num           =>       p_option_tbl(l_index).option_num
11228                                , x_option_type_code     =>       p_option_tbl(l_index).option_type_code
11229                                , x_start_date           =>       p_option_tbl(l_index).start_date
11230                                , x_expiration_date      =>       p_option_tbl(l_index).expiration_date
11231                                , x_option_size          =>       p_option_tbl(l_index).option_size
11232                                , x_uom_code             =>       p_option_tbl(l_index).uom_code
11233                                , x_option_status_lookup_code =>  p_option_tbl(l_index).option_status_lookup_code
11234                                , x_attribute_category   =>       p_option_tbl(l_index).attribute_category
11235                                , x_attribute1           =>       p_option_tbl(l_index).attribute1
11236                                , x_attribute2           =>       p_option_tbl(l_index).attribute2
11237                                , x_attribute3           =>       p_option_tbl(l_index).attribute3
11238                                , x_attribute4           =>       p_option_tbl(l_index).attribute4
11239                                , x_attribute5           =>       p_option_tbl(l_index).attribute5
11240                                , x_attribute6           =>       p_option_tbl(l_index).attribute6
11241                                , x_attribute7           =>       p_option_tbl(l_index).attribute7
11242                                , x_attribute8           =>       p_option_tbl(l_index).attribute8
11243                                , x_attribute9           =>       p_option_tbl(l_index).attribute9
11244                                , x_attribute10          =>       p_option_tbl(l_index).attribute10
11245                                , x_attribute11          =>       p_option_tbl(l_index).attribute11
11246                                , x_attribute12          =>       p_option_tbl(l_index).attribute12
11247                                , x_attribute13          =>       p_option_tbl(l_index).attribute13
11248                                , x_attribute14          =>       p_option_tbl(l_index).attribute14
11249                                , x_attribute15          =>       p_option_tbl(l_index).attribute15
11250                                , x_last_update_date     =>       sysdate
11251                                , x_last_updated_by      =>       fnd_global.user_id
11252                                , x_last_update_login    =>       fnd_global.login_id
11253                                , x_option_exer_start_date =>     p_option_tbl(l_index).option_exer_start_date
11254                                , x_option_exer_end_date   =>     p_option_tbl(l_index).option_exer_end_date
11255                                , x_option_action_date     =>     p_option_tbl(l_index).option_action_date
11256                                , x_option_cost          =>       p_option_tbl(l_index).option_cost
11257                                , x_option_area_change   =>       p_option_tbl(l_index).option_area_change
11258                                , x_option_reference     =>       p_option_tbl(l_index).option_reference
11259                                , x_option_notice_reqd   =>       p_option_tbl(l_index).option_notice_reqd
11260                                , x_option_comments      =>       p_option_tbl(l_index).comments
11261                                 );
11262 ----------------------dbms_output.put_line ('RECORD UPDATION COMPLETED FOR OPTIONS');--Rupak
11263                  pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:PN_OPTIONS_PKG.UPDATE_ROW Successful',3);
11264 
11265                                -- SAVEPOINT A;
11266                             ----------------------dbms_output.put_line('UPDATE PROCEDURE FOR RECORD: '||l_index ||'COMPLETED');--Rupak
11267                             pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:PN_OPTIONS_PKG.UPDATE_ROW;Exception'||SQLERRM,3);
11268                             l_option_id      :=  p_option_tbl(l_index).option_id;
11269 
11270                             IF p_option_tbl(l_index).option_milestone_tbl.count<>0 THEN
11271                             ----------------------dbms_output.put_line('UPDATE MILESTONE PROCEDURE FOR RECORD: '||l_index ||'STARTED');
11272                             pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:Calling UPDATE_MILESTONE',3);
11273                                UPDATE_MILESTONE (
11274                                       p_milestone_tbl         =>  p_option_tbl(l_index).option_milestone_tbl
11275                                     , p_lease_id              =>  p_lease_id
11276                                     , p_lease_change_id       =>  p_lease_change_id
11277                                     , p_option_id             =>  l_option_id
11278                                     , p_insurance_req_id      =>  NULL
11279                                     , p_payment_term_id       =>  NULL
11280                                     , p_commit                =>  p_commit
11281                                     , p_validate              =>  'N'
11282                                     , x_return_status         =>  x_return_status
11283                                --     , x_msg_count             =>  x_msg_count
11284                                --     , x_msg_data              =>  x_msg_data
11285                                         );
11286                               ----------------------dbms_output.put_line('UPDATE_MILESTONE:BA'||x_return_status);
11287                              pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:Update Mile Stone Successful',3);
11288 
11289                             END IF;
11290 
11291            END IF;
11292            EXCEPTION
11293               WHEN fnd_api.g_exc_error THEN
11294                   l_error_count_err := l_error_count_err+1;
11295                   pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
11296                WHEN OTHERS THEN
11297                   l_error_count_uerr := l_error_count_uerr+1;
11298                  ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
11299                  pvt_debug(g_pkg_name||'-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM,3);
11300            END;
11301         END LOOP;
11302           IF ( l_error_count_err <> 0 OR l_error_count_uerr <> 0) THEN
11303            --------------------dbms_output.put_line('OPTION_UPDATE_ROW:COUNT:'||l_error_count_err||l_error_count_uerr);
11304             x_return_status := fnd_api.g_ret_sts_error;
11305           ELSE
11306             x_return_status   :=  fnd_api.g_ret_sts_success;
11307           END IF;
11308 
11309 
11310         EXCEPTION
11311           WHEN OTHERS THEN
11312              x_return_status := fnd_api.g_ret_sts_unexp_error;
11313              pvt_debug(g_pkg_name||'OPTION_UPDATE_ROW:Exception:'||SQLERRM,3);
11314     END OPTION_UPDATE_ROW;
11315 
11316       PROCEDURE UPDATE_OPTION (
11317                           p_lease_id          IN          PN_LEASES_ALL.LEASE_ID%TYPE
11318                         , p_lease_change_id   IN          PN_LEASE_CHANGES_ALL.LEASE_CHANGE_ID%TYPE
11319                         , p_commit            IN          VARCHAR2
11320                         , p_validate          IN          VARCHAR2
11321                         , p_option_tbl         IN OUT  NOCOPY    lease_option_tbl_type
11322                         , x_return_status     OUT    NOCOPY     VARCHAR2
11323                  --       , x_msg_count         OUT         NUMBER
11324                  --       , x_msg_data          OUT         VARCHAR2
11325                 )
11326         IS
11327             l_return_status                             VARCHAR2 (1)                                :=    fnd_api.g_ret_sts_success;
11328             l_msg_count                                 NUMBER                                      ;
11329             l_msg_data                                  VARCHAR2(2000)                              ;
11330             x_out_tbl                                   temp_tbl_type;
11331             p_option_tbl_create      lease_option_tbl_type;
11332             p_option_tbl_update      lease_option_tbl_type;
11333             m NUMBER;
11334             n NUMBER;
11335             l_err_option_cnt NUMBER:=0;
11336     BEGIN
11337      x_return_status  :=    fnd_api.g_ret_sts_success;
11338       ----------------------dbms_output.put_line('In UPDATE_OPTION:1');--Rupak
11339    m:=1;
11340    n:=1;
11341            FOR i IN 1..p_option_tbl.COUNT
11342            LOOP
11343              IF(p_option_tbl(i).option_id IS NOT NULL AND p_option_tbl(i).option_id <> pn_lease_utils.g_pn_miss_num) THEN
11344 
11345                   --p_option_tbl(i).p_null_id := 'N';
11346                   p_option_tbl_update(n):=p_option_tbl(i);
11347                   n:=n+1;
11348              ELSE
11349 
11350                 --p_option_tbl(i).p_null_id := 'Y';
11351                 p_option_tbl_create(m):=p_option_tbl(i);
11352                 m:=m+1;
11353              END IF;
11354            END LOOP;
11355 --OOPS-RHIA
11356 
11357    IF(p_option_tbl_update.COUNT > 0) THEN
11358 
11359      VALIDATE_OPTION_FOR_UPDATE(
11360                          p_option_tbl        =>       p_option_tbl_update--p_option_tbl
11361                         ,p_lease_id          =>       p_lease_id
11362                         ,p_lease_change_id   =>       p_lease_change_id
11363                         ,x_tbl               =>       x_out_tbl
11364                         ,x_return_status     =>       x_return_status
11365                         ,p_commit            =>       p_commit
11366                         );
11367          ----------------------dbms_output.put_line('In UPDATE_OPTION:2'||x_return_status||p_validate);--Rupak
11368          IF NVL(p_validate,'F') <> 'T'  and x_return_status = fnd_api.g_ret_sts_success THEN
11369 
11370               ----------------------dbms_output.put_line ('CALLING UPDATE PROCEDURE OF OPTIONS');--Rupak
11371               pvt_debug(g_pkg_name||'Inside UPDATE_OPTION',3);
11372                 OPTION_UPDATE_ROW(
11373                 p_option_tbl                  =>          p_option_tbl_update--p_option_tbl
11374               , p_lease_id                    =>          p_lease_id
11375               , p_lease_change_id             =>          p_lease_change_id
11376               , x_return_status               =>          x_return_status
11377               , p_tbl                         =>          x_out_tbl
11378               , p_commit                      =>          p_commit
11379               , p_validate                    =>          p_validate
11380                 );
11381                 pvt_debug(g_pkg_name||'UPDATE_OPTION:OPTION_UPDATE_ROW Return Status:'||x_return_status,3);
11382                 ----------------------dbms_output.put_line('In UPDATE_OPTION:3'||x_return_status);--Rupak
11383 
11384         ELSIF  (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
11385            --x_return_status := fnd_api.g_ret_sts_unexp_error;
11386            l_err_option_cnt := l_err_option_cnt + 1;
11387         ELSE
11388           --x_return_status := fnd_api.g_ret_sts_error;
11389           l_err_option_cnt := l_err_option_cnt + 1;
11390         END IF;
11391    END IF;
11392    IF(p_option_tbl_create.COUNT > 0) THEN
11393         --------dbms_output.put_line('OPTIONS:5');
11394         VALIDATE_OPTION_FOR_CREATE(p_option_tbl                  =>  p_option_tbl_create
11395                                   ,x_tbl                      =>  x_out_tbl
11396                                   ,x_return_status            =>  x_return_status
11397                                 );
11398 
11399           pvt_debug(g_pkg_name||'Inside UPUDATE_OPTION:VALIDATE_OPTION_FOR_CREATE Return Status'||x_return_status,3);
11400           --------------------dbms_output.put_line('OPTIONS:x_return_status'||x_return_status);--OOPS
11401          IF (NVL(p_validate,'F') <> 'T'  AND x_return_status = fnd_api.g_ret_sts_success)THEN
11402           OPTION_INSERT_ROW( p_option_tbl       =>  p_option_tbl_create
11403                             ,p_lease_id         =>  p_lease_id
11404                             ,p_lease_change_id  =>  p_lease_change_id
11405                             ,x_return_status    =>  x_return_status
11406                             ,p_tbl              =>  x_out_tbl
11407                             ,p_commit           =>  p_commit
11408                             ,p_validate         =>  p_validate
11409                              );
11410                    pvt_debug(g_pkg_name||'Inside UPDATE_OPTION:OPTION_INSERT_ROW Return Status'||x_return_status,3);
11411                    --------------------dbms_output.put_line('OPTIONS:x_return_status:OPTION_INSERT_ROW:'||x_return_status);--OOPS
11412               IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11413                    --RAISE fnd_api.g_exc_error;
11414                    l_err_option_cnt := l_err_option_cnt + 1;
11415               END IF;
11416            ELSE
11417              --RAISE fnd_api.g_exc_error;
11418              l_err_option_cnt := l_err_option_cnt + 1;
11419            END IF;
11420 
11421    END IF;
11422         IF(l_err_option_cnt = 0) THEN
11423           x_return_status := fnd_api.g_ret_sts_success;
11424         ELSE
11425           x_return_status := fnd_api.g_ret_sts_error;
11426         END IF;
11427    EXCEPTION
11428      WHEN OTHERS THEN
11429        x_return_status :=  fnd_api.g_ret_sts_unexp_error;
11430          pvt_debug(g_pkg_name||'UPDATE_OPTION:Exception:'||SQLERRM,3);
11431         ----------------------dbms_output.put_line('CREATION OF OPTION FAILED');
11432     END UPDATE_OPTION;
11433 
11434 ----------------------------------------------SUNITHA END --------------------------------------------
11435 
11436 
11437    PROCEDURE create_lease (
11438       p_commit                       IN             VARCHAR2
11439     , p_validate                     IN             VARCHAR2
11440     , p_lease_rec                    IN OUT  NOCOPY lease_rec
11441     , p_lease_exp_rev_accounts_rec   IN OUT  NOCOPY lease_account_rec
11442     , p_lease_accrual_account_rec    IN OUT  NOCOPY lease_account_rec
11443     , p_lease_liab_rcvl_account_rec  IN OUT  NOCOPY lease_account_rec
11444     , p_contacts_tbl                 IN OUT  NOCOPY lease_contacts_tbl
11445     , p_tenancies_tbl                IN OUT  NOCOPY lease_tenancies_tbl
11446     , p_insurance_tbl                IN OUT  NOCOPY lease_insurance_tbl_type
11447     , p_right_tbl                    IN OUT  NOCOPY lease_right_tbl_type
11448     , p_obligation_tbl               IN OUT  NOCOPY lease_obligation_tbl_type
11449     , p_option_tbl                   IN OUT  NOCOPY lease_option_tbl_type
11450     , p_lease_payment_term_tbl       IN OUT  NOCOPY lease_terms_tbl --Rupak
11451     , p_note_tbl                     IN OUT  NOCOPY lease_note_tbl_type
11452     , x_msg_count                       OUT  NOCOPY NUMBER
11453     , x_msg_data                        OUT  NOCOPY VARCHAR2
11454     , x_return_status                   OUT  NOCOPY VARCHAR2
11455     , p_lease_context                IN       VARCHAR2
11456     ) IS
11457 p_api_version  VARCHAR2(10):= '1.0';
11458 l_error_count NUMBER:=0;
11459 
11460    BEGIN
11461 
11462  --------------------dbms_output.put_line('In Private: Create Lease:B4 validate_lease_rec');--Rupak
11463     pvt_debug(g_pkg_name||'In CREATE_LEASE',3);
11464       validate_lease_rec (p_lease_rec                   => p_lease_rec
11465                         , p_validate                    => p_validate
11466                         , p_lease_exp_rev_accounts_rec  => p_lease_exp_rev_accounts_rec
11467                         , p_lease_accrual_account_rec   => p_lease_accrual_account_rec
11468                         , p_lease_liab_rcvl_account_rec => p_lease_liab_rcvl_account_rec
11469                         , p_operation                   => l_param_create_mode_operation
11470                         , p_lease_context               => p_lease_context
11471                         , x_return_status               => x_return_status);
11472         pvt_debug(g_pkg_name||'-CREATE_LEASE:VALIDATE_LEASE_REC Return Status:'||x_return_status,3);
11473 ----------------------dbms_output.put_line('In Private: Create Lease:After validate_lease_rec'||x_return_status);--Rupak
11474       IF (x_return_status = fnd_api.g_ret_sts_error)
11475       THEN
11476          l_error_count := l_error_count+1;
11477          RAISE fnd_api.g_exc_error;
11478       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11479       THEN
11480          l_error_count := l_error_count+1;
11481          RAISE fnd_api.g_exc_unexpected_error;
11482       END IF;
11483       --g_class_code := p_lease_rec.lease_class_code;
11484       IF   x_return_status=fnd_api.g_ret_sts_success
11485         AND NVL(p_validate,'F')<>'T'
11486       THEN
11487          ----------------------dbms_output.put_line('In Create lease procedure before calling LEASE_INSERT_ROW');--Rupak
11488 
11489          lease_insert_row ( p_lease_rec                   => p_lease_rec
11490                           , p_lease_exp_rev_accounts_rec  => p_lease_exp_rev_accounts_rec
11491                           , p_lease_accrual_account_rec   => p_lease_accrual_account_rec
11492                           , p_lease_liab_rcvl_account_rec => p_lease_liab_rcvl_account_rec
11493                           , p_location_exist              => fnd_api.g_false
11494                           , p_lease_context               => p_lease_context
11495                           , x_return_status               => x_return_status);
11496              pvt_debug(g_pkg_name||'-CREATE_LEASE:LEASE_INSERT_ROW Return Status:'||x_return_status,3);
11497          IF (x_return_status = fnd_api.g_ret_sts_error)
11498          THEN
11499             RAISE fnd_api.g_exc_error;
11500          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11501          THEN
11502             RAISE fnd_api.g_exc_unexpected_error;
11503          END IF;
11504       END IF;
11505 
11506 --BEGIN
11507       --------------------dbms_output.put_line('Before calling validate_contacts_tbl');--Rupak
11508     IF p_contacts_tbl.count<>0 THEN
11509       validate_contacts_tbl (p_lease_contacts_tbl          => p_contacts_tbl
11510                            , p_lease_rec                   => p_lease_rec
11511                            , p_validate                    => p_validate
11512                            , p_lease_context               => p_lease_context
11513                            , p_operation                   => l_param_create_mode_operation
11514                            , x_return_status               => x_return_status
11515                            );
11516           ----------------------dbms_output.put_line('After calling validate_contacts_tbl'||x_return_status);--Rupak
11517           pvt_debug(g_pkg_name||'-CREATE_LEASE:VALIDATE_CONTACTS_TBL Return Status:'||x_return_status,3);
11518 
11519       IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11520          l_error_count := l_error_count+1;
11521       END IF;
11522     END IF;
11523        /*ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN--RHIA
11524          /*--------------------dbms_output.put_line('After calling validate_contacts_tbl:fnd_api.g_ret_sts_error:'||x_return_status);--Rupak
11525           fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
11526                                    , p_count                       => x_msg_count
11527                                    , p_data                        => x_msg_data
11528                                    );
11529            --------------------dbms_output.put_line('123:contacts:x_msg_data:'||x_msg_data);--Rupak
11530            --------------------dbms_output.put_line('123:contacts:x_msg_count'||x_msg_count);--Rupak
11531         -- RAISE fnd_api.g_exc_error;
11532       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11533       THEN
11534       --------------------dbms_output.put_line('After calling validate_contacts_tbl:fnd_api.g_ret_sts_unexp_error:'||x_return_status);--Rupak
11535          RAISE fnd_api.g_exc_unexpected_error;
11536       END IF;*/
11537 /*EXCEPTION
11538  WHEN OTHERS THEN
11539     --------------------dbms_output.put_line('EXCEPTION:After calling validate_contacts_tbl'||SQLERRM);--Rupak
11540      pvt_debug(g_pkg_name||'-CREATE_LEASE:VALIDATE_CONTACTS_TBL :Exception:'||SQLERRM,3);
11541 END;*/
11542 
11543       --------------------dbms_output.put_line('Before calling validate_tenancies_tbl');--Rupak
11544     IF p_tenancies_tbl.count<>0 THEN
11545       validate_tenancies_tbl (p_lease_tenancies_tbl         => p_tenancies_tbl
11546                             , p_lease_rec                   => p_lease_rec
11547                             , p_validate                    => p_validate
11548       --                      , p_lease_class_code            => p_lease_rec.lease_class_code
11549       --                      , p_lease_commencement_date     => p_lease_rec.lease_commencement_date
11550       --                      , p_lease_termination_date      => p_lease_rec.lease_termination_date
11551       --                      , p_parent_lease_id             => p_lease_rec.parent_lease_id
11552                             , p_lease_context               => p_lease_context
11553                             , p_operation                   => 'CREATE_TENANCIES'--l_param_create_mode_operation
11554                             , x_return_status               => x_return_status
11555                             );
11556                 pvt_debug(g_pkg_name||'-CREATE_LEASE:VALIDATE_TENANCIES_TBL Return Status:'||x_return_status,3);
11557 
11558          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11559             l_error_count := l_error_count+1;
11560          END IF;
11561    END IF;
11562       /*IF (x_return_status = fnd_api.g_ret_sts_error)
11563       THEN
11564           fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
11565                                    , p_count                       => x_msg_count
11566                                    , p_data                        => x_msg_data
11567                                    );
11568            --------------------dbms_output.put_line('123:tenancies:x_msg_data:'||x_msg_data);--Rupak
11569            --------------------dbms_output.put_line('123:tenancies:x_msg_count:'||x_msg_count);--Rupak
11570          --RAISE fnd_api.g_exc_error;
11571       ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11572       THEN
11573          RAISE fnd_api.g_exc_unexpected_error;
11574       END IF;*/
11575 
11576       ----------dbms_output.put_line(' B4 Calling Create Terms'||p_lease_context);--Rupak
11577    IF p_lease_payment_term_tbl.count<>0 THEN
11578       create_terms (p_api_version                  => p_api_version
11579                   , p_init_msg_list                => NULL--p_init_msg_list
11580                   , p_commit                       => NULL--p_commit
11581                   , p_validate                     => p_validate
11582                   , p_payment_terms_tbl            => p_lease_payment_term_tbl
11583                   , p_lease_id                     => p_lease_rec.lease_id
11584                   , p_lease_context                => p_lease_context
11585                   , x_return_status                => x_return_status
11586                   , x_msg_count                    => x_msg_count
11587                   , x_msg_data                     => x_msg_data
11588                   );
11589          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11590             l_error_count := l_error_count+1;
11591          END IF;
11592 ----------------------dbms_output.put_line('After CallingCreate Terms;x_return_status'||x_return_status);--Rupak
11593    pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_TERMS Return Status:'||x_return_status,3);
11594   END IF;
11595       ---------------------------------------------------SUNITA'S CODE BEGINS --------------------
11596 
11597 ----------------------dbms_output.put_line('B4 Calling Create Note');--Rupak
11598         IF p_note_tbl.count<>0 THEN
11599                     CREATE_NOTE (
11600                           p_lease_id          =>    p_lease_rec.lease_id
11601                         , p_commit            =>    p_commit
11602                         , p_validate          =>    p_validate
11603                         , p_note_tbl          =>    p_note_tbl
11604                         , x_return_status     =>    x_return_status
11605                --         , x_msg_count       =>    x_msg_count
11606                --         , x_msg_data        =>    x_msg_data
11607         );
11608          pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_NOTE Return Status:'||x_return_status,3);
11609 
11610         IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11611             l_error_count := l_error_count+1;
11612          END IF;
11613       END IF;
11614 ----------------------dbms_output.put_line('B4 Calling Create Rights:'||p_right_tbl.count);--Rupak
11615         IF p_right_tbl.count<>0 THEN
11616                 CREATE_RIGHT (
11617                           p_lease_id          =>    p_lease_rec.lease_id
11618                         , p_lease_change_id   =>    p_lease_rec.lease_change_id
11619                         , p_commit            =>    p_commit
11620                         , p_validate          =>    p_validate
11621                         , p_right_tbl         =>    p_right_tbl
11622                         , x_return_status     =>    x_return_status
11623                    --     , x_msg_count         OUT         NUMBER
11624                    --     , x_msg_data          OUT         VARCHAR2
11625         );
11626         pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_RIGHT Return Status:'||x_return_status,3);
11627 
11628          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11629             l_error_count := l_error_count+1;
11630          END IF;
11631       END IF;
11632         ----------------------dbms_output.put_line('B4 Calling Create Obligation:'||p_obligation_tbl.count);--Rupak
11633         IF p_obligation_tbl.count<>0 THEN
11634            ----------------------dbms_output.put_line('IN Create Obligation:');--Rupak
11635              CREATE_OBLIGATION (
11636                             p_lease_id          =>  p_lease_rec.lease_id,
11637                             p_lease_change_id   =>  p_lease_rec.lease_change_id,
11638                             p_commit            =>  p_commit,
11639                             p_validate          =>  p_validate,
11640                             p_obligation_tbl    =>  p_obligation_tbl,
11641                             x_return_status     =>  x_return_status
11642                     --        x_msg_count         OUT      NUMBER,
11643                      --       x_msg_data          OUT      VARCHAR2
11644        );
11645         pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_OBLIGATION Return Status:'||x_return_status,3);
11646 
11647          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11648             l_error_count := l_error_count+1;
11649          END IF;
11650       END IF;
11651         IF p_insurance_tbl.count<>0 THEN
11652                 CREATE_INSURANCE (
11653                             p_lease_id          =>  p_lease_rec.lease_id,
11654                             p_lease_change_id   =>  p_lease_rec.lease_change_id,
11655                             p_commit            =>  p_commit,
11656                             p_validate          =>  p_validate,
11657                             p_insurance_tbl    =>   p_insurance_tbl,
11658                             x_return_status     =>  x_return_status
11659                     --        x_msg_count         OUT      NUMBER,
11660                      --       x_msg_data          OUT      VARCHAR2
11661        );
11662         pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_INSURANCE Return Status:'||x_return_status,3);
11663 
11664 
11665          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11666             l_error_count := l_error_count+1;
11667          END IF;
11668      END IF;
11669         IF p_option_tbl.count<>0 THEN
11670         CREATE_OPTION (
11671                           p_lease_id          =>  p_lease_rec.lease_id
11672                         , p_lease_change_id   =>  p_lease_rec.lease_change_id
11673                         , p_commit            =>  p_commit
11674                         , p_validate          =>  p_validate
11675                         , p_option_tbl        =>  p_option_tbl
11676                         , x_return_status     =>  x_return_status
11677                   --      , x_msg_count         OUT         NUMBER
11678                   --      , x_msg_data          OUT         VARCHAR2
11679         );
11680        pvt_debug(g_pkg_name||'-CREATE_LEASE:CREATE_OPTION Return Status:'||x_return_status,3);
11681 
11682        IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
11683             l_error_count := l_error_count+1;
11684          END IF;
11685       END IF;
11686      ------------------dbms_output.put_line('Error Count:'||l_error_count);
11687          IF (l_error_count = 0) THEN
11688              x_return_status := fnd_api.g_ret_sts_success;
11689          ELSE
11690            x_return_status := fnd_api.g_ret_sts_error;
11691          END IF;
11692       ---------------------------------------------------SUNITA'S CODE ENDS --------------------
11693 
11694 
11695 
11696    EXCEPTION
11697       WHEN OTHERS THEN
11698          x_return_status := fnd_api.g_ret_sts_unexp_error;
11699          pvt_debug(g_pkg_name||'-CREATE_LEASE:Exception:'||SQLERRM,3);
11700          RAISE;
11701    END create_lease;
11702 
11703 --------------------------Rupak BEGIN--------------------------
11704    FUNCTION submit_program (
11705       p_api_name                 IN       VARCHAR2
11706     , p_org_id                   IN       NUMBER
11707     , p_lease_id                 IN       NUMBER
11708     , p_lease_status             IN       VARCHAR2
11709     , p_lease_commencement_date  IN       DATE)
11710       RETURN NUMBER
11711    AS
11712       l_requestid   NUMBER;
11713    BEGIN
11714       pn_mo_cache_utils.fnd_req_set_org_id (p_org_id);
11715       l_requestid                          :=
11716          fnd_request.submit_request ('PN'
11717                                    , 'PNSCHITM'
11718                                    , NULL
11719                                    , NULL
11720                                    , FALSE
11721                                    , p_lease_id
11722                                    , p_lease_status
11723                                    , 'MAIN'
11724                                    , NULL
11725                                    , NULL
11726                                    , 'N'
11727                                    ,fnd_date.date_to_canonical(p_lease_commencement_date) --Bug 13462759
11728                                    , NULL
11729                                    , NULL
11730                                    , CHR (0)
11731                                    , ''
11732                                    , ''
11733                                    , ''
11734                                    , ''
11735                                    , ''
11736                                    , ''
11737                                    , ''
11738                                    , ''
11739                                    , ''
11740                                    , ''
11741                                    , ''
11742                                    , ''
11743                                    , ''
11744                                    , ''
11745                                    , ''
11746                                    , ''
11747                                    , ''
11748                                    , ''
11749                                    , ''
11750                                    , ''
11751                                    , ''
11752                                    , ''
11753                                    , ''
11754                                    , ''
11755                                    , ''
11756                                    , ''
11757                                    , ''
11758                                    , ''
11759                                    , ''
11760                                    , ''
11761                                    , ''
11762                                    , ''
11763                                    , ''
11764                                    , ''
11765                                    , ''
11766                                    , ''
11767                                    , ''
11768                                    , ''
11769                                    , ''
11770                                    , ''
11771                                    , ''
11772                                    , ''
11773                                    , ''
11774                                    , ''
11775                                    , ''
11776                                    , ''
11777                                    , ''
11778                                    , ''
11779                                    , ''
11780                                    , ''
11781                                    , ''
11782                                    , ''
11783                                    , ''
11784                                    , ''
11785                                    , ''
11786                                    , ''
11787                                    , ''
11788                                    , ''
11789                                    , ''
11790                                    , ''
11791                                    , ''
11792                                    , ''
11793                                    , ''
11794                                    , ''
11795                                    , ''
11796                                    , ''
11797                                    , ''
11798                                    , ''
11799                                    , ''
11800                                    , ''
11801                                    , ''
11802                                    , ''
11803                                    , ''
11804                                    , ''
11805                                    , ''
11806                                    , ''
11807                                    , ''
11808                                    , ''
11809                                    , ''
11810                                    , ''
11811                                    , ''
11812                                    , ''
11813                                    , ''
11814                                    , ''
11815                                    , ''
11816                                    , ''
11817                                    , ''
11818                                    , ''
11819                                    , ''
11820                                    , '');
11821            pvt_debug(g_pkg_name||'-SUBMIT_PROGRAM:Request ID'||l_requestid,3);
11822       IF (l_requestid = 0)
11823       THEN
11824          fnd_message.set_name ('PN', 'PN_SUBSCHEDULES_ERR');
11825          fnd_message.set_token ('API_NAME', p_api_name
11826                                  || '-SubmitSchedulesConcProgram');
11827          fnd_msg_pub.ADD;
11828          RAISE fnd_api.g_exc_error;
11829       END IF;
11830 
11831       RETURN l_requestid;
11832    END submit_program;
11833 
11834 --Rupak-Update
11835    /* Update Lease API*/
11836 
11837    PROCEDURE update_lease (
11838         p_api_version                 IN             NUMBER
11839       , p_init_msg_list               IN             VARCHAR2 := fnd_api.g_false
11840       , p_commit                      IN             VARCHAR2 := fnd_api.g_false
11841       , p_validate                    IN             VARCHAR2 := fnd_api.g_false
11842       , p_lease_rec                   IN OUT NOCOPY  lease_rec
11843       , p_lease_exp_rev_accounts_rec  IN OUT NOCOPY  lease_account_rec
11844       , p_lease_accrual_account_rec   IN OUT NOCOPY  lease_account_rec
11845       , p_lease_liab_rcvl_account_rec IN OUT NOCOPY  lease_account_rec
11846       , p_lease_contacts_tbl          IN OUT  NOCOPY lease_contacts_tbl
11847       , p_lease_tenancies_tbl         IN OUT NOCOPY  lease_tenancies_tbl
11848       , p_lease_context               IN             VARCHAR2 := 'UPD'
11849       , p_right_tbl                   IN OUT NOCOPY  lease_right_tbl_type
11850       , p_note_tbl                    IN OUT NOCOPY  lease_note_tbl_type
11851       , p_obligation_tbl              IN OUT NOCOPY  lease_obligation_tbl_type
11852       , p_insurance_tbl               IN OUT NOCOPY  lease_insurance_tbl_type
11853       , p_option_tbl                  IN OUT NOCOPY  lease_option_tbl_type
11854       , p_lease_payment_term_tbl       IN OUT NOCOPY lease_terms_tbl --Rupak
11855     --  , x_lease_id                       OUT NOCOPY  NUMBER
11856     -- , x_lease_number                   OUT NOCOPY  VARCHAR2
11857      -- , x_lease_name                     OUT NOCOPY  VARCHAR2
11858       , x_return_status                  OUT NOCOPY  VARCHAR2
11859       , x_msg_count                      OUT NOCOPY  NUMBER
11860       , x_msg_data                       OUT NOCOPY  VARCHAR2
11861       )
11862     AS
11863       CURSOR cur_lease_header
11864       IS
11865          SELECT lease_id
11866               , last_update_date
11867               , last_updated_by
11868               , creation_date
11869               , created_by
11870               , last_update_login
11871               , NAME
11872               , lease_num
11873               , parent_lease_id
11874               , lease_type_code
11875               , payment_term_proration_rule
11876               , abstracted_by_user
11877               , comments
11878               , status
11879               , org_id
11880               , lease_class_code
11881               , lease_status
11882               , location_id
11883               , customer_id
11884               , cal_start
11885          FROM   pn_leases_all
11886          WHERE  lease_id = p_lease_rec.lease_id;
11887 
11888       CURSOR cur_lease_details
11889       IS
11890          SELECT lease_detail_id
11891               , lease_change_id
11892               , lease_id
11893               , responsible_user
11894               , expense_account_id
11895               , lease_commencement_date
11896               , lease_termination_date
11897               , lease_execution_date
11898               , last_update_date
11899               , last_updated_by
11900               , creation_date
11901               , created_by
11902               , last_update_login
11903               , attribute_category
11904               , attribute1
11905               , attribute2
11906               , attribute3
11907               , attribute4
11908               , attribute5
11909               , attribute6
11910               , attribute7
11911               , attribute8
11912               , attribute9
11913               , attribute10
11914               , attribute11
11915               , attribute12
11916               , attribute13
11917               , attribute14
11918               , attribute15
11919               , org_id
11920               , accrual_account_id
11921               , receivable_account_id
11922               , send_entries
11923               , term_template_id
11924               , lease_extension_end_date
11925               , grouping_rule_id
11926          FROM   pn_lease_details_all
11927          WHERE  lease_id = p_lease_rec.lease_id;
11928 
11929       l_return_status                 VARCHAR2 (1);
11930       l_debug_mode                    VARCHAR2 (1);
11931       l_debug_level1         CONSTANT NUMBER                                           := 1;
11932       l_debug_level2         CONSTANT NUMBER                                           := 2;
11933       l_debug_level3         CONSTANT NUMBER                                           := 3;
11934       l_debug_level4         CONSTANT NUMBER                                           := 4;
11935       l_debug_level5         CONSTANT NUMBER                                           := 5;
11936       l_leasecommencementdate         DATE                                             := NULL;
11937       l_leaseterminationdate          DATE                                             := NULL;
11938       l_leaseexecutiondate            DATE                                             := NULL;
11939       l_lastupdatedate                DATE                                             := NULL;
11940       l_leaseextensionenddate         DATE                                             := NULL;
11941       l_lease_status                  pn_leases_all.lease_status%TYPE                  := NULL;
11942       l_leasechangeid                 pn_lease_details.lease_change_id%TYPE            := NULL;
11943       l_lease_context                 VARCHAR2 (100)  := NULL;
11944       l_abstracted_by_user            pn_leases_all.abstracted_by_user%TYPE            := NULL;
11945       l_payment_term_proration_rule   pn_leases_all.payment_term_proration_rule%TYPE   := NULL;
11946       l_requestid                     NUMBER                                           := NULL;
11947       l_cross_val_flag                VARCHAR2 (1)                                     := 'N';
11948       l_proration_rule_flag           VARCHAR2 (1)                                     := 'N';
11949       --- Cursor Variable Declaration
11950       l_lease_hdr_rec                 cur_lease_header%ROWTYPE;
11951       l_lease_dtl_rec                 cur_lease_details%ROWTYPE;
11952       -- Derived Values
11953       l_lease_rec                     lease_rec;
11954       --l_lease_detail_attribs          pn_lease_pub.lease_detail_attribs_rec_type;
11955       l_rowid                         VARCHAR2 (18)                                    := NULL;
11956       l_lease_change_num              pn_lease_changes_all.lease_change_number%TYPE;
11957       l_old_status_code               pn_leases_all.status%TYPE                        := NULL;
11958       l_api_version          CONSTANT NUMBER                                           := 1.0;
11959       l_api_name             CONSTANT VARCHAR2 (30)                                := 'UPDATE_LEASE';
11960       l_api_name_full        CONSTANT VARCHAR2 (61)               :=    g_pkg_name
11961                                                                      || '.'
11962                                                                      || l_api_name;
11963      l_error_count NUMBER :=0;
11964      l_msg_data    VARCHAR2(4000);
11965      l_msg_count   NUMBER;
11966      x_request_id NUMBER:=NULL;
11967      l_tenancy_id NUMBER:=NULL;
11968      l_status     VARCHAR2(50);
11969      l_status_new VARCHAR2(50);
11970       l_lease_status_db   pn_leases_all.lease_status%TYPE := NULL;
11971       l_lease_status_new  pn_leases_all.lease_status%TYPE := NULL;
11972    BEGIN
11973      l_lease_context := NVL(p_lease_context,'UPD');
11974      g_lease_context := l_lease_context;
11975        -- Standard start of API savepoint
11976       SAVEPOINT update_lease_pvt;
11977 
11978       -- Initialize message list if p_init_msg_list is set to TRUE
11979       IF fnd_api.to_boolean (p_init_msg_list)
11980       THEN
11981          fnd_msg_pub.initialize;
11982       END IF;
11983 
11984 
11985     BEGIN--Lease Check
11986 
11987       OPEN cur_lease_header;
11988 
11989       FETCH cur_lease_header
11990       INTO  l_lease_hdr_rec;
11991 
11992 
11993       IF (cur_lease_header%NOTFOUND)
11994       THEN
11995  ----------------------dbms_output.put_line('In Update Private 2');--Rupak
11996          fnd_message.set_name ('PN', 'PN_INVALID_LEASE');
11997          fnd_message.set_token ('API_NAME', l_api_name_full);
11998          fnd_message.set_token ('LEASE_ID', p_lease_rec.lease_id);
11999          fnd_msg_pub.ADD;
12000          x_return_status    := fnd_api.g_ret_sts_error;
12001       ELSE
12002 -- --------------------dbms_output.put_line('In Update Private 3');--Rupak
12003          l_lease_status                       := l_lease_hdr_rec.lease_status;
12004          l_payment_term_proration_rule        := l_lease_hdr_rec.payment_term_proration_rule;
12005          l_abstracted_by_user                 := l_lease_hdr_rec.abstracted_by_user;
12006          l_status := l_lease_hdr_rec.status;
12007 
12008 
12009 
12010          --Validating the Lease Name and Parent Lease ID
12011          IF (       (p_lease_rec.lease_name IS NOT NULL)
12012                 AND (p_lease_rec.lease_name <> pn_lease_utils.g_pn_miss_char)
12013             )
12014          THEN
12015             l_lease_hdr_rec.NAME                 := p_lease_rec.lease_name;
12016          END IF;
12017          /*
12018           IF (       (p_lease_rec.lease_num IS NOT NULL)
12019                 AND (p_lease_rec.lease_num <> pn_lease_utils.g_pn_miss_char)
12020             )
12021          THEN
12022             l_lease_hdr_rec.lease_num                 := p_lease_rec.lease_num;
12023          END IF;*/
12024 
12025 ----------------------dbms_output.put_line('In Update Private 4');--Rupak
12026          --Validating the Parent Lease Name and Parent Lease ID
12027          IF (       (p_lease_rec.parent_lease_name IS NOT NULL)
12028                 AND (p_lease_rec.parent_lease_name <> pn_lease_utils.g_pn_miss_char)
12029              OR     (p_lease_rec.parent_lease_id IS NOT NULL)
12030                 AND (p_lease_rec.parent_lease_id <> pn_lease_utils.g_pn_miss_num))
12031          THEN
12032             l_lease_hdr_rec.parent_lease_id      := p_lease_rec.parent_lease_id;
12033          END IF;
12034 ----------------------dbms_output.put_line('In Update Private 5');--Rupak
12035          --Validating the Lease Type Code
12036          IF (   (    (p_lease_rec.lease_type IS NOT NULL)
12037                  AND (p_lease_rec.lease_type <> pn_lease_utils.g_pn_miss_char))
12038              OR (    (p_lease_rec.lease_type_code IS NOT NULL)
12039                  AND (p_lease_rec.lease_type_code <> pn_lease_utils.g_pn_miss_char)))
12040          THEN
12041             ----------------------dbms_output.put_line('In Private:p_lease_rec.lease_type'||p_lease_rec.lease_type);--Rupak
12042             ----------------------dbms_output.put_line('In Private:p_lease_rec.lease_type_code'||p_lease_rec.lease_type_code);--Rupak
12043             l_lease_hdr_rec.lease_type_code      := p_lease_rec.lease_type_code;
12044             pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_lease_type
12045                                           , p_operation                   => 'UPDATE_LEASE'
12046                                           , p_lookup_meaning              => p_lease_rec.lease_type
12047                                           , p_lookup_type                 => l_leasetype_lookup_type
12048                                           , x_lookup_type_code            => p_lease_rec.lease_type_code--l_lease_hdr_rec.lease_type_code
12049                                           , x_return_status               => x_return_status
12050                                           );
12051              pvt_debug(g_pkg_name||'-UPDATE_LEASE:Lease Type Code'||p_lease_rec.lease_type_code,3);
12052              l_lease_hdr_rec.lease_type_code := p_lease_rec.lease_type_code;
12053             IF (x_return_status = fnd_api.g_ret_sts_error)
12054             THEN
12055                  --l_lease_hdr_rec.lease_type_code := p_lease_rec.lease_type_code;
12056                  fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
12057                  fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_leasetype_lookup_type));
12058                  fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.lease_type));
12059                  fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.lease_type_code));
12060                  fnd_msg_pub.ADD;
12061                 RAISE fnd_api.g_exc_error;
12062 
12063             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12064             THEN
12065                  --l_lease_hdr_rec.lease_type_code := p_lease_rec.lease_type_code;
12066                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12067                  fnd_message.set_token ('COLUMN', SUBSTR(l_leasetype_lookup_type,3));
12068                  fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12069                  fnd_msg_pub.ADD;
12070                  RAISE fnd_api.g_exc_unexpected_error;
12071             END IF;
12072          END IF;
12073 
12074          --Customer Validation
12075          -- Validate Customer Id
12076       IF p_lease_rec.lease_class_code <> 'DIRECT'
12077       THEN
12078        IF (  ( p_lease_rec.customer_name IS NOT NULL AND p_lease_rec.customer_name <> pn_lease_utils.g_pn_miss_char)
12079            OR(p_lease_rec.customer_id IS NOT NULL AND p_lease_rec.customer_id <> pn_lease_utils.g_pn_miss_num)
12080           ) THEN
12081          pn_lease_utils.get_customer_id (p_parameter_name              => l_param_lease_customer
12082                                        , p_operation                   => 'UPDATE_LEASE'
12083                                        , p_customer_name               => p_lease_rec.customer_name
12084                                        , x_customer_id                 => p_lease_rec.customer_id
12085                                        , x_return_status               => x_return_status
12086                                        );
12087              l_lease_hdr_rec.customer_id := p_lease_rec.customer_id;
12088          ------------------dbms_output.put_line (   'GET_CUSTOMER_ID: '|| p_lease_rec.customer_id);--Rupak
12089           pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Customer ID:'||l_lease_hdr_rec.customer_id,3);
12090          IF (x_return_status = fnd_api.g_ret_sts_error)
12091          THEN
12092             --l_error_flag:='Y';
12093             ----------------------dbms_output.put_line ('PVT:1');--Rupak
12094             fnd_message.set_name ('PN', 'PN_INVALID_CUSTOMER');
12095             fnd_message.set_token ('CUSTOMER_NAME', get_miss_char_decode(p_lease_rec.customer_name));
12096             fnd_message.set_token ('CUSTOMER_ID', get_miss_num_decode(p_lease_rec.customer_id));
12097             fnd_msg_pub.ADD;
12098             RAISE fnd_api.g_exc_error;
12099          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12100          THEN
12101             --l_error_flag:='Y';
12102             /*--------------------dbms_output.put_line ('PVT:2');--Rupak*/
12103             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12104             fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_customer,3));
12105             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
12106             fnd_msg_pub.ADD;
12107             RAISE fnd_api.g_exc_unexpected_error;
12108          END IF;
12109       ELSIF(p_lease_rec.customer_name IS NULL OR p_lease_rec.customer_id IS NULL) THEN
12110           l_lease_hdr_rec.customer_id := NULL;
12111       END IF;
12112      /* ELSE
12113          p_lease_rec.customer_name            := NULL;
12114          p_lease_rec.customer_id              := NULL;*/
12115       END IF;
12116 
12117          ----------------------dbms_output.put_line('In Update Private 5.1');--Rupak
12118    --BEGIN
12119           --Validating the Abstracted By User
12120           ----------------------dbms_output.put_line('In Private:B4 IF abstracted_by_user'||p_lease_rec.abstracted_by_user);
12121          IF (  (p_lease_rec.abstracted_by_user IS NOT NULL AND p_lease_rec.abstracted_by_user <> pn_lease_utils.g_pn_miss_char)
12122             OR (p_lease_rec.abstracted_by_user_id IS NOT NULL AND p_lease_rec.abstracted_by_user_id <> pn_lease_utils.g_pn_miss_num)
12123             )
12124          THEN
12125             ----------------------dbms_output.put_line('In Private:IN IF abstracted_by_user'||p_lease_rec.abstracted_by_user_id);--Rupak
12126             --l_lease_hdr_rec.abstracted_by_user   := p_lease_rec.abstracted_by_user;
12127             pn_lease_utils.get_user_id (p_parameter_name              => l_param_abstracted_by
12128                                       , p_operation                   => 'UPDATE_LEASE'
12129                                       , p_user_name                   => p_lease_rec.abstracted_by_user
12130                                       , x_user_id                     => p_lease_rec.abstracted_by_user_id--l_lease_hdr_rec.abstracted_by_user
12131                                       , x_return_status               => x_return_status
12132                                       );
12133              ----------------------dbms_output.put_line('-UPDATE_LEASE:ABSTRACTED_BY_USERNAME:'||p_lease_rec.abstracted_by_user_id);--Rupak
12134               pvt_debug(g_pkg_name||'-UPDATE_LEASE:ABSTRACTED_BY_USERNAME:'||p_lease_rec.abstracted_by_user_id,3);
12135               l_lease_hdr_rec.abstracted_by_user := p_lease_rec.abstracted_by_user_id;
12136             IF (x_return_status = fnd_api.g_ret_sts_error)
12137             THEN
12138                 -- --------------------dbms_output.put_line('Hi:1'||p_lease_rec.abstracted_by_user_id||x_return_status);--Rupak
12139                  fnd_message.set_name ('PN', 'PN_INVALID_USER');
12140                  fnd_message.set_token ('USER_NAME',get_miss_char_decode(p_lease_rec.abstracted_by_user));
12141                  fnd_message.set_token ('USER_ID', get_miss_num_decode(p_lease_rec.abstracted_by_user_id));
12142                  fnd_msg_pub.ADD;
12143                  RAISE fnd_api.g_exc_error;
12144             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12145             THEN
12146                  ----------------------dbms_output.put_line('Hi:2'||p_lease_rec.abstracted_by_user_id);--Rupak
12147                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12148                  fnd_message.set_token ('COLUMN', SUBSTR('LEASE ABSTARCTED BY',3));
12149                  fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12150                  fnd_msg_pub.ADD;
12151                  RAISE fnd_api.g_exc_unexpected_error;
12152             END IF;
12153          END IF;
12154  /* EXCEPTION
12155      WHEN OTHERS THEN
12156        --------------------dbms_output.put_line('Abstracted Bye User'||SQLERRM);
12157   END;*/
12158          ----------------------dbms_output.put_line('In Update Private 5.101'||p_lease_rec.cal_start );--Rupak
12159        -- Validate GET_CAL_START_DATE
12160       IF ( p_lease_rec.cal_start IS NOT NULL
12161              AND p_lease_rec.cal_start <> pn_lease_utils.g_pn_miss_char
12162              )
12163       THEN
12164          ----------------------dbms_output.put_line ('Before calling PN_LEASE_UTILS.GET_CAL_START_DATE  ');--Rupak
12165 
12166          pn_lease_utils.get_cal_start_date ( p_parameter_name   =>   l_param_lease_cal_start
12167                                            , x_cal_start        =>   p_lease_rec.cal_start
12168                                            , p_operation        =>   'UPDATE_LEASE'
12169                                            , x_return_status    =>   x_return_status
12170                                            );
12171           l_lease_hdr_rec.cal_start := p_lease_rec.cal_start;
12172           pvt_debug(g_pkg_name||'-UPDATE_LEASE:GET_CAL_START_DATE Return Status:'||x_return_status,3);
12173          IF (x_return_status = fnd_api.g_ret_sts_error)
12174          THEN
12175                fnd_message.set_name ('PN', 'PN_CAL_INVALID_DATE');
12176                fnd_msg_pub.ADD;
12177                RAISE fnd_api.g_exc_error;
12178          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12179          THEN
12180                  fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12181                  fnd_message.set_token ('COLUMN', SUBSTR('LEASE CAL START DATE',3));
12182                  fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12183                  fnd_msg_pub.ADD;
12184                  RAISE fnd_api.g_exc_unexpected_error;
12185          END IF;
12186       END IF;
12187 
12188 ----------------------dbms_output.put_line('In Update Private 5.2');--Rupak
12189 
12190 ----------------------dbms_output.put_line('In Update Private 5.2:'||p_lease_rec.location_code);--Rupak
12191 ----------------------dbms_output.put_line('In Update Private 5.2'||p_lease_rec.location_id);--Rupak
12192          --pn_lease_pub.test_lease(2,'In Private:7');
12193 
12194 ----------------------dbms_output.put_line('In Update Private 5.3');--Rupak
12195          --Validating the Proration Rule
12196          --pn_lease_pub.test_lease(2,'In Private:7');
12197          IF (       (p_lease_rec.pymt_term_pro_rule IS NOT NULL)
12198                 AND (p_lease_rec.pymt_term_pro_rule <> pn_lease_utils.g_pn_miss_char)
12199              OR     (p_lease_rec.pymt_term_pro_rule_id IS NOT NULL)
12200                 AND (p_lease_rec.pymt_term_pro_rule_id <> pn_lease_utils.g_pn_miss_char))
12201          THEN
12202            --l_lease_hdr_rec.payment_term_proration_rule := to_number(p_lease_rec.pymt_term_pro_rule_id);
12203 
12204            -- IF (    p_lease_rec.pymt_term_pro_rule IS NOT NULL
12205              --   AND p_lease_rec.pymt_term_pro_rule <> pn_lease_utils.g_pn_miss_char)
12206             --THEN
12207                --l_proration_rule_flag := 'Y';
12208                pn_lease_utils.get_lookup_code
12209                                 (p_parameter_name              => l_param_propration_rule
12210                                , p_operation                   => 'UPDATE_LEASE'
12211                                , p_lookup_meaning              => p_lease_rec.pymt_term_pro_rule
12212                                , p_lookup_type                 => l_proration_rule_lookup_type
12213                                , x_lookup_type_code            => p_lease_rec.pymt_term_pro_rule_id--l_lease_hdr_rec.payment_term_proration_rule
12214                                , x_return_status               => x_return_status
12215                                );
12216                   pvt_debug(g_pkg_name||'-UPDATE_LEASE:Proration Rule ID:'||l_lease_hdr_rec.payment_term_proration_rule,3);
12217                   l_lease_hdr_rec.payment_term_proration_rule := p_lease_rec.pymt_term_pro_rule_id;
12218                IF (x_return_status = fnd_api.g_ret_sts_error)
12219                THEN
12220                  fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
12221                  fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_proration_rule_lookup_type));
12222                  fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.pymt_term_pro_rule));
12223                  fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.pymt_term_pro_rule_id));
12224                  fnd_msg_pub.ADD;
12225                  RAISE fnd_api.g_exc_error;
12226                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
12227                THEN
12228                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12229                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_propration_rule,3));
12230                   fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12231                   fnd_msg_pub.ADD;
12232                   RAISE fnd_api.g_exc_unexpected_error;
12233                END IF;
12234             END IF;
12235 
12236              ------dbms_output.put_line('l_lease_hdr_rec.status'||l_lease_hdr_rec.status||'-l_lease_context'||l_lease_context);
12237                   IF (l_lease_hdr_rec.status = 'F' AND l_lease_context = 'UPD') THEN
12238                       fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
12239                       fnd_message.set_token('ERR_MSG', 'Lease Context must be passed as ED OR AM when the lease is in finalized State');
12240                       fnd_msg_pub.ADD;
12241                       RAISE fnd_api.g_exc_error;
12242                   END IF;
12243 
12244             IF ( ( p_lease_rec.status IS NOT NULL AND p_lease_rec.status <> pn_lease_utils.g_pn_miss_char)
12245                OR (p_lease_rec.status_code IS NOT NULL  AND p_lease_rec.status_code <> pn_lease_utils.g_pn_miss_char)
12246                ) THEN
12247                     pn_lease_utils.get_lookup_code (p_parameter_name        => l_param_status
12248                                             , p_operation                   => 'UPDATE_LEASE'
12249                                             , p_lookup_meaning              => p_lease_rec.status
12250                                             , p_lookup_type                 => l_status_lookup_type
12251                                             , x_lookup_type_code            => p_lease_rec.status_code
12252                                             , x_return_status               => x_return_status
12253                                             );
12254 
12255                   IF(l_lease_hdr_rec.status = 'F' AND p_lease_rec.status_code = 'D') THEN--OOPS
12256                       p_lease_rec.status_code := 'F';
12257                       l_lease_hdr_rec.status  :='F';
12258                       p_lease_rec.status      := 'Final';
12259                       pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Draft Lease Status upon Final cannot be honoured',3);
12260                       /*fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
12261                       fnd_message.set_token('ERR_MSG', 'You are trying to update an existing finalized lease by passing status as Draft. Please provide valid lease status');
12262                       fnd_msg_pub.ADD;*/
12263                       --RAISE fnd_api.g_exc_error;
12264                   ELSE
12265                     pvt_debug(g_pkg_name||'-VALIDATE_LEASE_REC:Approval Status Code:'||p_lease_rec.status_code,3);
12266                     l_lease_hdr_rec.status := p_lease_rec.status_code;
12267                   END IF;
12268 
12269 
12270               IF (x_return_status = fnd_api.g_ret_sts_error)
12271               THEN
12272                  --l_error_flag:='Y';
12273                  fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
12274                  fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_status_lookup_type));
12275                  fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.status));
12276                  fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.status_code));
12277                  fnd_msg_pub.ADD;
12278                  RAISE fnd_api.g_exc_error;
12279               ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12280               THEN
12281                  --l_error_flag:='Y';
12282                  fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
12283                  fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_status_lookup_type));
12284                  fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.status));
12285                  fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.status_code));
12286                  fnd_msg_pub.ADD;
12287                  RAISE fnd_api.g_exc_unexpected_error;
12288               END IF;
12289           END IF;
12290       g_status:=l_lease_hdr_rec.status;
12291 
12292 
12293 
12294          --End of Validation for header record
12295 ----------------------dbms_output.put_line('In Update Private 6');--Rupak
12296          --Opening the Details Cursor
12297          OPEN cur_lease_details;
12298 
12299          FETCH cur_lease_details
12300          INTO  l_lease_dtl_rec;
12301 
12302         ----------------------dbms_output.put_line('In Detail Cursor:1');--Rupak
12303          IF (cur_lease_details%NOTFOUND)
12304          THEN
12305             fnd_message.set_name ('PN', 'PN_INVALID_LEASE');
12306             fnd_message.set_token ('API_NAME', l_api_name_full);
12307             fnd_message.set_token ('LEASE_ID', get_miss_num_decode(p_lease_rec.lease_id));
12308             fnd_msg_pub.ADD;
12309             x_return_status                      := fnd_api.g_ret_sts_error;
12310          ELSE
12311                         --Validating the Location Code OR Location ID
12312                  IF (       (p_lease_rec.location_code IS NOT NULL)
12313                         AND (p_lease_rec.location_code <> pn_lease_utils.g_pn_miss_char)
12314                      OR     (p_lease_rec.location_id IS NOT NULL)
12315                         AND (   p_lease_rec.location_id <> pn_lease_utils.g_pn_miss_num
12316                              AND p_lease_rec.location_id <> 0))
12317                  THEN
12318                    ----------------------dbms_output.put_line('In Update Private 5.21');--Rupak
12319 
12320                     pn_lease_utils.get_location_id
12321                                              (p_parameter_name              => l_param_lease_location
12322                                             , p_location_code               => p_lease_rec.location_code
12323                                             , p_operation                   => 'UPDATE_LEASE'
12324                                             , p_org_id                      => l_lease_hdr_rec.org_id
12325                                             , p_lease_class_code            => l_lease_hdr_rec.lease_class_code
12326                                             , p_parent_lease_id             => l_lease_hdr_rec.parent_lease_id
12327                                             , p_lease_comm_date             => l_lease_dtl_rec.lease_commencement_date
12328                                             , p_lease_term_date             => l_lease_dtl_rec.lease_termination_date
12329                                             , x_return_status               => x_return_status
12330                                             , x_location_id                 => p_lease_rec.location_id--l_lease_hdr_rec.location_id
12331                                             );
12332                       pvt_debug(g_pkg_name||'-UPDATE_LEASE:PN_LEASE_UTILS.GET_LOCATION_ID Return Status:'||x_return_status,3);
12333                       ----------------------dbms_output.put_line('In Update Private 5.21-hI'||p_lease_rec.location_id||x_return_status);--Rupak
12334                        IF (p_lease_rec.location_id = pn_lease_utils.g_pn_miss_num) THEN
12335                           p_lease_rec.location_id := NULL;
12336                        END IF;
12337                         l_lease_hdr_rec.location_id := p_lease_rec.location_id;
12338                     IF (x_return_status = fnd_api.g_ret_sts_error)
12339                     THEN
12340                       ----------------------dbms_output.put_line('In Update Private 5.23');--Rupak
12341                        fnd_message.set_name ('PN', 'PN_INVALID_LOCATION');
12342                        fnd_message.set_token ('LOC_ID', get_miss_num_decode(p_lease_rec.location_id));
12343                        fnd_message.set_token ('LOC_CODE', get_miss_char_decode(p_lease_rec.location_code));
12344                        fnd_msg_pub.ADD;
12345                        RAISE fnd_api.g_exc_error;
12346                     ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12347                     THEN
12348                          ----------------------dbms_output.put_line('In Update Private 5.23');--Rupak
12349                          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12350                          fnd_message.set_token ('COLUMN', SUBSTR('LEASE LOCATION',3));
12351                          fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12352                          fnd_msg_pub.ADD;
12353                          RAISE fnd_api.g_exc_unexpected_error;
12354                     END IF;
12355                  END IF;
12356 
12357            ----------------------dbms_output.put_line('In Detail Cursor:2');--Rupak
12358             IF (    l_lease_context IN ('ED', 'AM')
12359                 AND (l_lease_hdr_rec.status <> 'D'))
12360             THEN
12361                IF (l_lease_context <> 'AM')
12362                THEN
12363                 -- --------------------dbms_output.put_line('In Detail Cursor:3.1:l_lease_dtl_rec.lease_termination_date'||l_lease_dtl_rec.lease_termination_date);--Rupak
12364                 -- --------------------dbms_output.put_line('In Detail Cursor:3.2:p_lease_rec.lease_termination_date'||p_lease_rec.lease_termination_date);--Rupak
12365                 -- --------------------dbms_output.put_line('In Detail Cursor:3.3:l_lease_hdr_rec.lease_status'||l_lease_hdr_rec.lease_status );--Rupak
12366                 -- --------------------dbms_output.put_line('In Detail Cursor:3.4:p_lease_rec.lease_status'||p_lease_rec.lease_status);--Rupak
12367                   IF (   (l_lease_dtl_rec.lease_termination_date <> p_lease_rec.lease_termination_date)
12368                       OR (l_lease_hdr_rec.lease_status <> p_lease_rec.lease_status_code))
12369                   THEN
12370                   -- --------------------dbms_output.put_line('In Detail Cursor:4');--Rupak
12371                      fnd_message.set_name ('PN', 'PN_INVALID_LEASECON');
12372                      fnd_message.set_token ('API_NAME', l_api_name_full||'-ValidateLeaseContext');
12373                      fnd_msg_pub.ADD;
12374                      RAISE fnd_api.g_exc_error;
12375                   ELSIF (l_lease_hdr_rec.lease_status <> l_lease_status)
12376                   THEN
12377                    ----------------------dbms_output.put_line('In Detail Cursor:5');--Rupak
12378                      fnd_message.set_name ('PN', 'PN_INVALID_LEASECON');
12379                      fnd_message.set_token ('API_NAME', l_api_name_full||'-ValidateLeaseContext');
12380                      fnd_msg_pub.ADD;
12381                      RAISE fnd_api.g_exc_error;
12382                   ELSIF (   (l_lease_hdr_rec.abstracted_by_user <> l_abstracted_by_user)
12383                          OR (l_payment_term_proration_rule <>l_lease_hdr_rec.payment_term_proration_rule))
12384                   THEN
12385                   ----------------------dbms_output.put_line('In Detail Cursor:6');--Rupak
12386                      fnd_message.set_name ('PN', 'PN_INVALID_LEASECON');
12387                      fnd_message.set_token ('API_NAME', l_api_name_full|| '-ValidateLeaseContext');
12388                      fnd_msg_pub.ADD;
12389                      RAISE fnd_api.g_exc_error;
12390                   END IF;
12391                END IF;
12392    ----------------------dbms_output.put_line('In Detail Cursor:7');--Rupak
12393                l_leaseextensionenddate              := p_lease_rec.lease_extension_date;
12394             ELSE
12395                ----------------------dbms_output.put_line('In Detail Cursor:8');--Rupak
12396                l_leaseextensionenddate              := NULL;
12397             END IF;
12398    ----------------------dbms_output.put_line('In Detail Cursor:9');--Rupak
12399             --End of Logic to check whether it is an amendment or Edit
12400        ----------------------dbms_output.put_line('In Update Private 7');--Rupak
12401            l_lease_status_db := l_lease_hdr_rec.lease_status;
12402             --Validating the Lease Status
12403             IF (  ( p_lease_rec.lease_status IS NOT NULL AND p_lease_rec.lease_status <> pn_lease_utils.g_pn_miss_char)
12404                OR (p_lease_rec.lease_status_code IS NOT NULL  AND p_lease_rec.lease_status_code <> pn_lease_utils.g_pn_miss_char)
12405                ) THEN
12406                 ----------------------dbms_output.put_line('In Update Private 7.1');--Rupak
12407                 pn_lease_utils.get_lookup_code (p_parameter_name              => l_param_lease_status
12408                                              , p_operation                   => 'UPDATE_LEASE'
12409                                              , p_lookup_meaning              => p_lease_rec.lease_status
12410                                              , p_lookup_type                 => l_lease_status_lookup_type
12411                                              , x_lookup_type_code            => p_lease_rec.lease_status_code--l_lease_hdr_rec.lease_status
12412                                              , x_return_status               => x_return_status
12413                                              );
12414                  ----------------------dbms_output.put_line('-UPDATE_LEASE:Lease Status:'||l_lease_hdr_rec.lease_status);
12415                  pvt_debug(g_pkg_name||'-UPDATE_LEASE:Lease Status:'||p_lease_rec.lease_status,3);
12416                  l_lease_hdr_rec.lease_status         := p_lease_rec.lease_status_code;
12417                  l_lease_status_new                   := p_lease_rec.lease_status_code;
12418                IF (x_return_status = fnd_api.g_ret_sts_error)
12419                THEN
12420                  --l_lease_hdr_rec.lease_status:=p_lease_rec.lease_status_code;
12421                  fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
12422                  fnd_message.set_token ('LOOKUP_TYPE', get_miss_char_decode(l_lease_status_lookup_type));
12423                  fnd_message.set_token ('LOOKUP_MEANING', get_miss_char_decode(p_lease_rec.lease_status));
12424                  fnd_message.set_token ('LOOKUP_CODE', get_miss_char_decode(p_lease_rec.lease_status_code ));
12425                  fnd_msg_pub.ADD;
12426                  RAISE fnd_api.g_exc_error;
12427                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12428                THEN
12429                   --l_lease_hdr_rec.lease_status:=p_lease_rec.lease_status_code;
12430                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12431                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_status,3));
12432                   fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12433                   fnd_msg_pub.ADD;
12434                   RAISE fnd_api.g_exc_unexpected_error;
12435                END IF;
12436             END IF;
12437 
12438 
12439 ----------------------dbms_output.put_line('In Update Private 8');--Rupak
12440             --Validating the Responsible User
12441             IF (  (p_lease_rec.responsible_user IS NOT NULL
12442                    AND p_lease_rec.responsible_user <> pn_lease_utils.g_pn_miss_char)
12443                 OR(p_lease_rec.responsible_user_id IS NOT NULL
12444                    AND p_lease_rec.responsible_user_id  <> pn_lease_utils.g_pn_miss_num)
12445                 )
12446             THEN
12447                --l_lease_dtl_rec.responsible_user     := p_lease_rec.responsible_user;
12448                pn_lease_utils.get_user_id (p_parameter_name              => l_param_reponsible_user
12449                                          , p_user_name                   => p_lease_rec.responsible_user--NULL
12450                                          , p_operation                   => 'UPDATE_LEASE'
12451                                          , x_return_status               => x_return_status
12452                                          , x_user_id                     => p_lease_rec.responsible_user_id--l_lease_dtl_rec.responsible_user
12453                                          );
12454                  pvt_debug(g_pkg_name||'-UPDATE_LEASE:RESPONSIBLE_USER:'||p_lease_rec.responsible_user_id,3);
12455                  l_lease_dtl_rec.responsible_user := p_lease_rec.responsible_user_id;
12456                IF (x_return_status = fnd_api.g_ret_sts_error)
12457                THEN
12458                  fnd_message.set_name ('PN', 'PN_INVALID_USER');
12459                  fnd_message.set_token ('USER_NAME',get_miss_char_decode(p_lease_rec.responsible_user));
12460                  fnd_message.set_token ('USER_ID', get_miss_num_decode(p_lease_rec.responsible_user_id));
12461                  fnd_msg_pub.ADD;
12462                  RAISE fnd_api.g_exc_error;
12463                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12464                THEN
12465                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12466                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_reponsible_user,3));
12467                   fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12468                   fnd_msg_pub.ADD;
12469                   RAISE fnd_api.g_exc_unexpected_error;
12470                END IF;
12471             END IF;
12472 ----------------------dbms_output.put_line('In Update Private 9');--Rupak
12473             --Commencement,Termination,Execution Date
12474             IF (    p_lease_rec.lease_commencement_date IS NOT NULL
12475                 AND p_lease_rec.lease_commencement_date <> pn_lease_utils.g_pn_miss_date)
12476             THEN
12477                IF (l_lease_hdr_rec.status = 'F' AND l_lease_context = 'UPD') THEN
12478                  l_lease_dtl_rec.lease_commencement_date := p_lease_rec.lease_commencement_date;
12479                END IF;
12480             END IF;
12481 
12482             IF (    p_lease_rec.lease_termination_date IS NOT NULL
12483                 AND p_lease_rec.lease_termination_date <> pn_lease_utils.g_pn_miss_date)
12484             THEN
12485                l_lease_dtl_rec.lease_termination_date := p_lease_rec.lease_termination_date;
12486             END IF;
12487 
12488             IF (    p_lease_rec.lease_execution_date IS NOT NULL
12489                 AND p_lease_rec.lease_execution_date <> pn_lease_utils.g_pn_miss_date)
12490             THEN
12491                l_lease_dtl_rec.lease_execution_date := p_lease_rec.lease_execution_date;
12492             END IF;
12493 ----------------------dbms_output.put_line('In Update Private 10');--Rupak
12494             ----------------------dbms_output.put_line('lease_commencement_date'||l_lease_dtl_rec.lease_commencement_date);--Rupak
12495             ----------------------dbms_output.put_line('lease_termination_date'||l_lease_dtl_rec.lease_termination_date);--Rupak
12496             ----------------------dbms_output.put_line('lease_execution_date'||l_lease_dtl_rec.lease_execution_date);--Rupak
12497             IF (    (    l_lease_dtl_rec.lease_commencement_date IS NOT NULL
12498                      AND l_lease_dtl_rec.lease_commencement_date <> pn_lease_utils.g_pn_miss_date)
12499                 AND (    l_lease_dtl_rec.lease_termination_date IS NOT NULL
12500                      AND l_lease_dtl_rec.lease_termination_date <> pn_lease_utils.g_pn_miss_date)
12501                 AND (    l_lease_dtl_rec.lease_execution_date IS NOT NULL
12502                      AND l_lease_dtl_rec.lease_execution_date <> pn_lease_utils.g_pn_miss_date))
12503             THEN
12504                --l_cross_val_flag := 'Y';
12505                  ----------------------dbms_output.put_line('Inside IF Condition:Dates');--Rupak
12506                pn_lease_utils.crossval_leasedates
12507                                      (p_parameter_name              => l_param_lease_dates
12508                                     , p_operation                   => 'UPDATE_LEASE'
12509                                     , p_lease_exec_date             => l_lease_dtl_rec.lease_execution_date
12510                                     , p_lease_comm_date             => l_lease_dtl_rec.lease_commencement_date
12511                                     , p_lease_term_date             => l_lease_dtl_rec.lease_termination_date
12512                                     , x_return_status               => x_return_status
12513                                     );
12514                 pvt_debug(g_pkg_name||'-UPDATE_LEASE:PN_LEASE_UTILS.CROSSVAL_LEASEDATES Return Status:'||x_return_status,3);
12515                IF (x_return_status = fnd_api.g_ret_sts_error)
12516                THEN
12517                  fnd_message.set_name ('PN', 'PN_INVALID_TERMINATION_DT');
12518                  fnd_message.set_token ('TERMINATION_DATE', get_miss_date_decode(p_lease_rec.lease_termination_date));
12519                  fnd_message.set_token ('COMMENCEMENT_DATE', get_miss_date_decode(p_lease_rec.lease_commencement_date));
12520                  fnd_msg_pub.ADD;
12521                  RAISE fnd_api.g_exc_error;
12522                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12523                THEN
12524                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12525                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_reponsible_user,3));
12526                   fnd_message.set_token ('P_TEXT', l_api_name|| '-'||SQLERRM);
12527                   fnd_msg_pub.ADD;
12528                   RAISE fnd_api.g_exc_unexpected_error;
12529                END IF;
12530             /*ELSE
12531                ----------------------dbms_output.put_line('Inside ELSE Condition:Dates');--Rupak
12532                pn_lease_utils.add_null_parameter_msg
12533                   (p_token_apiname               => l_api_name_full
12534                  , p_token_nullparam             => 'p_lease_exec_date - p_lease_comm_date - p_lease_term_date');
12535                RAISE fnd_api.g_exc_error;*/
12536             END IF;
12537 ----------------------dbms_output.put_line('In Update Private 11');--Rupak
12538             --------Validation of Key Flex Fields-----------Begin-----------
12539             IF (   (    p_lease_exp_rev_accounts_rec.account_id IS NOT NULL
12540                     AND p_lease_exp_rev_accounts_rec.account_id <> pn_lease_utils.g_pn_miss_num)
12541                 OR (    p_lease_exp_rev_accounts_rec.account_conc_segs IS NOT NULL
12542                     AND p_lease_exp_rev_accounts_rec.account_conc_segs <>
12543                                                                        pn_lease_utils.g_pn_miss_char)
12544                 OR (   (    (p_lease_exp_rev_accounts_rec.account_segment1 IS NOT NULL)
12545                         AND (p_lease_exp_rev_accounts_rec.account_segment1 <>
12546                                                                        pn_lease_utils.g_pn_miss_char))
12547                     OR (    (p_lease_exp_rev_accounts_rec.account_segment2 IS NOT NULL)
12548                         AND (p_lease_exp_rev_accounts_rec.account_segment2 <>
12549                                                                        pn_lease_utils.g_pn_miss_char))
12550                     OR (    (p_lease_exp_rev_accounts_rec.account_segment3 IS NOT NULL)
12551                         AND (p_lease_exp_rev_accounts_rec.account_segment3 <>
12552                                                                        pn_lease_utils.g_pn_miss_char))
12553                     OR (    (p_lease_exp_rev_accounts_rec.account_segment4 IS NOT NULL)
12554                         AND (p_lease_exp_rev_accounts_rec.account_segment4 <>
12555                                                                        pn_lease_utils.g_pn_miss_char))
12556                     OR (    (p_lease_exp_rev_accounts_rec.account_segment5 IS NOT NULL)
12557                         AND (p_lease_exp_rev_accounts_rec.account_segment5 <>
12558                                                                        pn_lease_utils.g_pn_miss_char))
12559                     OR (    (p_lease_exp_rev_accounts_rec.account_segment6 IS NOT NULL)
12560                         AND (p_lease_exp_rev_accounts_rec.account_segment6 <>
12561                                                                        pn_lease_utils.g_pn_miss_char))
12562                     OR (    (p_lease_exp_rev_accounts_rec.account_segment7 IS NOT NULL)
12563                         AND (p_lease_exp_rev_accounts_rec.account_segment7 <>
12564                                                                        pn_lease_utils.g_pn_miss_char))
12565                     OR (    (p_lease_exp_rev_accounts_rec.account_segment8 IS NOT NULL)
12566                         AND (p_lease_exp_rev_accounts_rec.account_segment8 <>
12567                                                                        pn_lease_utils.g_pn_miss_char))
12568                     OR (    (p_lease_exp_rev_accounts_rec.account_segment9 IS NOT NULL)
12569                         AND (p_lease_exp_rev_accounts_rec.account_segment9 <>
12570                                                                        pn_lease_utils.g_pn_miss_char))
12571                     OR (    (p_lease_exp_rev_accounts_rec.account_segment10 IS NOT NULL)
12572                         AND (p_lease_exp_rev_accounts_rec.account_segment10 <>
12573                                                                        pn_lease_utils.g_pn_miss_char))
12574                     OR (    (p_lease_exp_rev_accounts_rec.account_segment11 IS NOT NULL)
12575                         AND (p_lease_exp_rev_accounts_rec.account_segment11 <>
12576                                                                        pn_lease_utils.g_pn_miss_char))
12577                     OR (    (p_lease_exp_rev_accounts_rec.account_segment12 IS NOT NULL)
12578                         AND (p_lease_exp_rev_accounts_rec.account_segment12 <>
12579                                                                        pn_lease_utils.g_pn_miss_char))
12580                     OR (    (p_lease_exp_rev_accounts_rec.account_segment13 IS NOT NULL)
12581                         AND (p_lease_exp_rev_accounts_rec.account_segment13 <>
12582                                                                        pn_lease_utils.g_pn_miss_char))
12583                     OR (    (p_lease_exp_rev_accounts_rec.account_segment14 IS NOT NULL)
12584                         AND (p_lease_exp_rev_accounts_rec.account_segment14 <>
12585                                                                        pn_lease_utils.g_pn_miss_char))
12586                     OR (    (p_lease_exp_rev_accounts_rec.account_segment15 IS NOT NULL)
12587                         AND (p_lease_exp_rev_accounts_rec.account_segment15 <>
12588                                                                        pn_lease_utils.g_pn_miss_char))
12589                     OR (    (p_lease_exp_rev_accounts_rec.account_segment16 IS NOT NULL)
12590                         AND (p_lease_exp_rev_accounts_rec.account_segment16 <>
12591                                                                        pn_lease_utils.g_pn_miss_char))
12592                     OR (    (p_lease_exp_rev_accounts_rec.account_segment17 IS NOT NULL)
12593                         AND (p_lease_exp_rev_accounts_rec.account_segment17 <>
12594                                                                        pn_lease_utils.g_pn_miss_char))
12595                     OR (    (p_lease_exp_rev_accounts_rec.account_segment18 IS NOT NULL)
12596                         AND (p_lease_exp_rev_accounts_rec.account_segment18 <>
12597                                                                        pn_lease_utils.g_pn_miss_char))
12598                     OR (    (p_lease_exp_rev_accounts_rec.account_segment19 IS NOT NULL)
12599                         AND (p_lease_exp_rev_accounts_rec.account_segment19 <>
12600                                                                        pn_lease_utils.g_pn_miss_char))
12601                     OR (    (p_lease_exp_rev_accounts_rec.account_segment20 IS NOT NULL)
12602                         AND (p_lease_exp_rev_accounts_rec.account_segment20 <>
12603                                                                        pn_lease_utils.g_pn_miss_char))))
12604             THEN
12605                pn_lease_utils.get_account_id
12606                             (p_parameter_name              => l_param_exp_rev_acct
12607                            , p_operation                   => 'UPDATE_LEASE'
12608                            , p_account_id                  => p_lease_exp_rev_accounts_rec.account_id
12609                            , p_account_conc_segs           => p_lease_exp_rev_accounts_rec.account_conc_segs
12610                            , p_account_segment1            => p_lease_exp_rev_accounts_rec.account_segment1
12611                            , p_account_segment2            => p_lease_exp_rev_accounts_rec.account_segment2
12612                            , p_account_segment3            => p_lease_exp_rev_accounts_rec.account_segment3
12613                            , p_account_segment4            => p_lease_exp_rev_accounts_rec.account_segment4
12614                            , p_account_segment5            => p_lease_exp_rev_accounts_rec.account_segment5
12615                            , p_account_segment6            => p_lease_exp_rev_accounts_rec.account_segment6
12616                            , p_account_segment7            => p_lease_exp_rev_accounts_rec.account_segment7
12617                            , p_account_segment8            => p_lease_exp_rev_accounts_rec.account_segment8
12618                            , p_account_segment9            => p_lease_exp_rev_accounts_rec.account_segment9
12619                            , p_account_segment10           => p_lease_exp_rev_accounts_rec.account_segment10
12620                            , p_account_segment11           => p_lease_exp_rev_accounts_rec.account_segment11
12621                            , p_account_segment12           => p_lease_exp_rev_accounts_rec.account_segment12
12622                            , p_account_segment13           => p_lease_exp_rev_accounts_rec.account_segment13
12623                            , p_account_segment14           => p_lease_exp_rev_accounts_rec.account_segment14
12624                            , p_account_segment15           => p_lease_exp_rev_accounts_rec.account_segment15
12625                            , p_account_segment16           => p_lease_exp_rev_accounts_rec.account_segment16
12626                            , p_account_segment17           => p_lease_exp_rev_accounts_rec.account_segment17
12627                            , p_account_segment18           => p_lease_exp_rev_accounts_rec.account_segment18
12628                            , p_account_segment19           => p_lease_exp_rev_accounts_rec.account_segment19
12629                            , p_account_segment20           => p_lease_exp_rev_accounts_rec.account_segment20
12630                            , x_return_status               => x_return_status);
12631                l_lease_dtl_rec.expense_account_id   := p_lease_exp_rev_accounts_rec.account_id;
12632 
12633                ------------------------dbms_output.put_line('UPDATE_GET_EXP_REC_ACCOUNT_ID: '|| p_lease_exp_rev_accounts_rec.account_id );
12634                ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
12635                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
12636                     fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
12637                     fnd_message.set_token ('ACCOUNT_ID',get_miss_num_decode(p_lease_exp_rev_accounts_rec.account_id));
12638                     fnd_msg_pub.ADD;
12639                     RAISE fnd_api.g_exc_error;
12640                ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
12641                     fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12642                     fnd_message.set_token ('COLUMN', SUBSTR(l_param_exp_rev_acct,3));
12643                     fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
12644                     fnd_msg_pub.ADD;
12645                     RAISE fnd_api.g_exc_unexpected_error;
12646                END IF;
12647            END IF;
12648 
12649             IF (   (    p_lease_accrual_account_rec.account_id IS NOT NULL
12650                     AND p_lease_accrual_account_rec.account_id <> pn_lease_utils.g_pn_miss_num)
12651                 OR (    p_lease_accrual_account_rec.account_conc_segs IS NOT NULL
12652                     AND p_lease_accrual_account_rec.account_conc_segs <>
12653                                                                        pn_lease_utils.g_pn_miss_char)
12654                 OR (   (    (p_lease_accrual_account_rec.account_segment1 IS NOT NULL)
12655                         AND (p_lease_accrual_account_rec.account_segment1 <>
12656                                                                        pn_lease_utils.g_pn_miss_char))
12657                     OR (    (p_lease_accrual_account_rec.account_segment2 IS NOT NULL)
12658                         AND (p_lease_accrual_account_rec.account_segment2 <>
12659                                                                        pn_lease_utils.g_pn_miss_char))
12660                     OR (    (p_lease_accrual_account_rec.account_segment3 IS NOT NULL)
12661                         AND (p_lease_accrual_account_rec.account_segment3 <>
12662                                                                        pn_lease_utils.g_pn_miss_char))
12663                     OR (    (p_lease_accrual_account_rec.account_segment4 IS NOT NULL)
12664                         AND (p_lease_accrual_account_rec.account_segment4 <>
12665                                                                        pn_lease_utils.g_pn_miss_char))
12666                     OR (    (p_lease_accrual_account_rec.account_segment5 IS NOT NULL)
12667                         AND (p_lease_accrual_account_rec.account_segment5 <>
12668                                                                        pn_lease_utils.g_pn_miss_char))
12669                     OR (    (p_lease_accrual_account_rec.account_segment6 IS NOT NULL)
12670                         AND (p_lease_accrual_account_rec.account_segment6 <>
12671                                                                        pn_lease_utils.g_pn_miss_char))
12672                     OR (    (p_lease_accrual_account_rec.account_segment7 IS NOT NULL)
12673                         AND (p_lease_accrual_account_rec.account_segment7 <>
12674                                                                        pn_lease_utils.g_pn_miss_char))
12675                     OR (    (p_lease_accrual_account_rec.account_segment8 IS NOT NULL)
12676                         AND (p_lease_accrual_account_rec.account_segment8 <>
12677                                                                        pn_lease_utils.g_pn_miss_char))
12678                     OR (    (p_lease_accrual_account_rec.account_segment9 IS NOT NULL)
12679                         AND (p_lease_accrual_account_rec.account_segment9 <>
12680                                                                        pn_lease_utils.g_pn_miss_char))
12681                     OR (    (p_lease_accrual_account_rec.account_segment10 IS NOT NULL)
12682                         AND (p_lease_accrual_account_rec.account_segment10 <>
12683                                                                        pn_lease_utils.g_pn_miss_char))
12684                     OR (    (p_lease_accrual_account_rec.account_segment11 IS NOT NULL)
12685                         AND (p_lease_accrual_account_rec.account_segment11 <>
12686                                                                        pn_lease_utils.g_pn_miss_char))
12687                     OR (    (p_lease_accrual_account_rec.account_segment12 IS NOT NULL)
12688                         AND (p_lease_accrual_account_rec.account_segment12 <>
12689                                                                        pn_lease_utils.g_pn_miss_char))
12690                     OR (    (p_lease_accrual_account_rec.account_segment13 IS NOT NULL)
12691                         AND (p_lease_accrual_account_rec.account_segment13 <>
12692                                                                        pn_lease_utils.g_pn_miss_char))
12693                     OR (    (p_lease_accrual_account_rec.account_segment14 IS NOT NULL)
12694                         AND (p_lease_accrual_account_rec.account_segment14 <>
12695                                                                        pn_lease_utils.g_pn_miss_char))
12696                     OR (    (p_lease_accrual_account_rec.account_segment15 IS NOT NULL)
12697                         AND (p_lease_accrual_account_rec.account_segment15 <>
12698                                                                        pn_lease_utils.g_pn_miss_char))
12699                     OR (    (p_lease_accrual_account_rec.account_segment16 IS NOT NULL)
12700                         AND (p_lease_accrual_account_rec.account_segment16 <>
12701                                                                        pn_lease_utils.g_pn_miss_char))
12702                     OR (    (p_lease_accrual_account_rec.account_segment17 IS NOT NULL)
12703                         AND (p_lease_accrual_account_rec.account_segment17 <>
12704                                                                        pn_lease_utils.g_pn_miss_char))
12705                     OR (    (p_lease_accrual_account_rec.account_segment18 IS NOT NULL)
12706                         AND (p_lease_accrual_account_rec.account_segment18 <>
12707                                                                        pn_lease_utils.g_pn_miss_char))
12708                     OR (    (p_lease_accrual_account_rec.account_segment19 IS NOT NULL)
12709                         AND (p_lease_accrual_account_rec.account_segment19 <>
12710                                                                        pn_lease_utils.g_pn_miss_char))
12711                     OR (    (p_lease_accrual_account_rec.account_segment20 IS NOT NULL)
12712                         AND (p_lease_accrual_account_rec.account_segment20 <>
12713                                                                        pn_lease_utils.g_pn_miss_char))))
12714             THEN
12715                pn_lease_utils.get_account_id
12716                              (p_parameter_name              => l_param_accrual_acct
12717                             , p_operation                   => 'UPDATE_LEASE'
12718                             , p_account_id                  => p_lease_accrual_account_rec.account_id
12719                             , p_account_conc_segs           => p_lease_accrual_account_rec.account_conc_segs
12720                             , p_account_segment1            => p_lease_accrual_account_rec.account_segment1
12721                             , p_account_segment2            => p_lease_accrual_account_rec.account_segment2
12722                             , p_account_segment3            => p_lease_accrual_account_rec.account_segment3
12723                             , p_account_segment4            => p_lease_accrual_account_rec.account_segment4
12724                             , p_account_segment5            => p_lease_accrual_account_rec.account_segment5
12725                             , p_account_segment6            => p_lease_accrual_account_rec.account_segment6
12726                             , p_account_segment7            => p_lease_accrual_account_rec.account_segment7
12727                             , p_account_segment8            => p_lease_accrual_account_rec.account_segment8
12728                             , p_account_segment9            => p_lease_accrual_account_rec.account_segment9
12729                             , p_account_segment10           => p_lease_accrual_account_rec.account_segment10
12730                             , p_account_segment11           => p_lease_accrual_account_rec.account_segment11
12731                             , p_account_segment12           => p_lease_accrual_account_rec.account_segment12
12732                             , p_account_segment13           => p_lease_accrual_account_rec.account_segment13
12733                             , p_account_segment14           => p_lease_accrual_account_rec.account_segment14
12734                             , p_account_segment15           => p_lease_accrual_account_rec.account_segment15
12735                             , p_account_segment16           => p_lease_accrual_account_rec.account_segment16
12736                             , p_account_segment17           => p_lease_accrual_account_rec.account_segment17
12737                             , p_account_segment18           => p_lease_accrual_account_rec.account_segment18
12738                             , p_account_segment19           => p_lease_accrual_account_rec.account_segment19
12739                             , p_account_segment20           => p_lease_accrual_account_rec.account_segment20
12740                             , x_return_status               => x_return_status);
12741                l_lease_dtl_rec.accrual_account_id   := p_lease_accrual_account_rec.account_id;
12742 
12743                ------------------------dbms_output.put_line('ACCRUAL_GET_ACCRLC_ACCOUNT_ID: '|| p_lease_accrual_account_rec.account_id );
12744                ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
12745                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
12746                     fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
12747                     fnd_message.set_token ('ACCOUNT_ID',get_miss_num_decode( p_lease_accrual_account_rec.account_id));
12748                     fnd_msg_pub.ADD;
12749                     RAISE fnd_api.g_exc_error;
12750                ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
12751                     fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12752                     fnd_message.set_token ('COLUMN', SUBSTR(l_param_accrual_acct,3));
12753                     fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
12754                     fnd_msg_pub.ADD;
12755                     RAISE fnd_api.g_exc_unexpected_error;
12756                END IF;
12757             END IF;
12758 
12759             IF (   (    p_lease_liab_rcvl_account_rec.account_id IS NOT NULL
12760                     AND p_lease_liab_rcvl_account_rec.account_id <> pn_lease_utils.g_pn_miss_num)
12761                 OR (    p_lease_liab_rcvl_account_rec.account_conc_segs IS NOT NULL
12762                     AND p_lease_liab_rcvl_account_rec.account_conc_segs <>
12763                                                                        pn_lease_utils.g_pn_miss_char)
12764                 OR (   (    (p_lease_liab_rcvl_account_rec.account_segment1 IS NOT NULL)
12765                         AND (p_lease_liab_rcvl_account_rec.account_segment1 <>
12766                                                                        pn_lease_utils.g_pn_miss_char))
12767                     OR (    (p_lease_liab_rcvl_account_rec.account_segment2 IS NOT NULL)
12768                         AND (p_lease_liab_rcvl_account_rec.account_segment2 <>
12769                                                                        pn_lease_utils.g_pn_miss_char))
12770                     OR (    (p_lease_liab_rcvl_account_rec.account_segment3 IS NOT NULL)
12771                         AND (p_lease_liab_rcvl_account_rec.account_segment3 <>
12772                                                                        pn_lease_utils.g_pn_miss_char))
12773                     OR (    (p_lease_liab_rcvl_account_rec.account_segment4 IS NOT NULL)
12774                         AND (p_lease_liab_rcvl_account_rec.account_segment4 <>
12775                                                                        pn_lease_utils.g_pn_miss_char))
12776                     OR (    (p_lease_liab_rcvl_account_rec.account_segment5 IS NOT NULL)
12777                         AND (p_lease_liab_rcvl_account_rec.account_segment5 <>
12778                                                                        pn_lease_utils.g_pn_miss_char))
12779                     OR (    (p_lease_liab_rcvl_account_rec.account_segment6 IS NOT NULL)
12780                         AND (p_lease_liab_rcvl_account_rec.account_segment6 <>
12781                                                                        pn_lease_utils.g_pn_miss_char))
12782                     OR (    (p_lease_liab_rcvl_account_rec.account_segment7 IS NOT NULL)
12783                         AND (p_lease_liab_rcvl_account_rec.account_segment7 <>
12784                                                                        pn_lease_utils.g_pn_miss_char))
12785                     OR (    (p_lease_liab_rcvl_account_rec.account_segment8 IS NOT NULL)
12786                         AND (p_lease_liab_rcvl_account_rec.account_segment8 <>
12787                                                                        pn_lease_utils.g_pn_miss_char))
12788                     OR (    (p_lease_liab_rcvl_account_rec.account_segment9 IS NOT NULL)
12789                         AND (p_lease_liab_rcvl_account_rec.account_segment9 <>
12790                                                                        pn_lease_utils.g_pn_miss_char))
12791                     OR (    (p_lease_liab_rcvl_account_rec.account_segment10 IS NOT NULL)
12792                         AND (p_lease_liab_rcvl_account_rec.account_segment10 <>
12793                                                                        pn_lease_utils.g_pn_miss_char))
12794                     OR (    (p_lease_liab_rcvl_account_rec.account_segment11 IS NOT NULL)
12795                         AND (p_lease_liab_rcvl_account_rec.account_segment11 <>
12796                                                                        pn_lease_utils.g_pn_miss_char))
12797                     OR (    (p_lease_liab_rcvl_account_rec.account_segment12 IS NOT NULL)
12798                         AND (p_lease_liab_rcvl_account_rec.account_segment12 <>
12799                                                                        pn_lease_utils.g_pn_miss_char))
12800                     OR (    (p_lease_liab_rcvl_account_rec.account_segment13 IS NOT NULL)
12801                         AND (p_lease_liab_rcvl_account_rec.account_segment13 <>
12802                                                                        pn_lease_utils.g_pn_miss_char))
12803                     OR (    (p_lease_liab_rcvl_account_rec.account_segment14 IS NOT NULL)
12804                         AND (p_lease_liab_rcvl_account_rec.account_segment14 <>
12805                                                                        pn_lease_utils.g_pn_miss_char))
12806                     OR (    (p_lease_liab_rcvl_account_rec.account_segment15 IS NOT NULL)
12807                         AND (p_lease_liab_rcvl_account_rec.account_segment15 <>
12808                                                                        pn_lease_utils.g_pn_miss_char))
12809                     OR (    (p_lease_liab_rcvl_account_rec.account_segment16 IS NOT NULL)
12810                         AND (p_lease_liab_rcvl_account_rec.account_segment16 <>
12811                                                                        pn_lease_utils.g_pn_miss_char))
12812                     OR (    (p_lease_liab_rcvl_account_rec.account_segment17 IS NOT NULL)
12813                         AND (p_lease_liab_rcvl_account_rec.account_segment17 <>
12814                                                                        pn_lease_utils.g_pn_miss_char))
12815                     OR (    (p_lease_liab_rcvl_account_rec.account_segment18 IS NOT NULL)
12816                         AND (p_lease_liab_rcvl_account_rec.account_segment18 <>
12817                                                                        pn_lease_utils.g_pn_miss_char))
12818                     OR (    (p_lease_liab_rcvl_account_rec.account_segment19 IS NOT NULL)
12819                         AND (p_lease_liab_rcvl_account_rec.account_segment19 <>
12820                                                                        pn_lease_utils.g_pn_miss_char))
12821                     OR (    (p_lease_liab_rcvl_account_rec.account_segment20 IS NOT NULL)
12822                         AND (p_lease_liab_rcvl_account_rec.account_segment20 <>
12823                                                                        pn_lease_utils.g_pn_miss_char))))
12824             THEN
12825                pn_lease_utils.get_account_id
12826                            (p_parameter_name              => l_param_liab_rvbl_acct
12827                           , p_operation                   => 'UPDATE_LEASE'
12828                           , p_account_id                  => p_lease_liab_rcvl_account_rec.account_id
12829                           , p_account_conc_segs           => p_lease_liab_rcvl_account_rec.account_conc_segs
12830                           , p_account_segment1            => p_lease_liab_rcvl_account_rec.account_segment1
12831                           , p_account_segment2            => p_lease_liab_rcvl_account_rec.account_segment2
12832                           , p_account_segment3            => p_lease_liab_rcvl_account_rec.account_segment3
12833                           , p_account_segment4            => p_lease_liab_rcvl_account_rec.account_segment4
12834                           , p_account_segment5            => p_lease_liab_rcvl_account_rec.account_segment5
12835                           , p_account_segment6            => p_lease_liab_rcvl_account_rec.account_segment6
12836                           , p_account_segment7            => p_lease_liab_rcvl_account_rec.account_segment7
12837                           , p_account_segment8            => p_lease_liab_rcvl_account_rec.account_segment8
12838                           , p_account_segment9            => p_lease_liab_rcvl_account_rec.account_segment9
12839                           , p_account_segment10           => p_lease_liab_rcvl_account_rec.account_segment10
12840                           , p_account_segment11           => p_lease_liab_rcvl_account_rec.account_segment11
12841                           , p_account_segment12           => p_lease_liab_rcvl_account_rec.account_segment12
12842                           , p_account_segment13           => p_lease_liab_rcvl_account_rec.account_segment13
12843                           , p_account_segment14           => p_lease_liab_rcvl_account_rec.account_segment14
12844                           , p_account_segment15           => p_lease_liab_rcvl_account_rec.account_segment15
12845                           , p_account_segment16           => p_lease_liab_rcvl_account_rec.account_segment16
12846                           , p_account_segment17           => p_lease_liab_rcvl_account_rec.account_segment17
12847                           , p_account_segment18           => p_lease_liab_rcvl_account_rec.account_segment18
12848                           , p_account_segment19           => p_lease_liab_rcvl_account_rec.account_segment19
12849                           , p_account_segment20           => p_lease_liab_rcvl_account_rec.account_segment20
12850                           , x_return_status               => x_return_status);
12851                l_lease_dtl_rec.receivable_account_id := p_lease_liab_rcvl_account_rec.account_id;
12852 
12853                ------------------------dbms_output.put_line('UPDATE_GET_LIAB_RVCL_ACCOUNT_ID: '|| p_lease_liab_rcvl_account_rec.account_id );
12854                ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
12855                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
12856                     fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
12857                     fnd_message.set_token ('ACCOUNT_ID',get_miss_num_decode( p_lease_accrual_account_rec.account_id));
12858                     fnd_msg_pub.ADD;
12859                     RAISE fnd_api.g_exc_error;
12860                ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
12861                     fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
12862                     fnd_message.set_token ('COLUMN', SUBSTR(l_param_liab_rvbl_acct,3));
12863                     fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
12864                     fnd_msg_pub.ADD;
12865                     RAISE fnd_api.g_exc_unexpected_error;
12866                END IF;
12867             END IF;
12868 
12869 ----------------------------------------------------------------
12870 --End of Validation for Details
12871 ------------------------dbms_output.put_line('p_lease_rec.attribute_category'||p_lease_rec.attribute_category);
12872 ------------------------dbms_output.put_line('p_lease_rec.attribute1'||p_lease_rec.attribute1);
12873 ------------------------dbms_output.put_line('p_lease_rec.attribute2'||p_lease_rec.attribute2);
12874 ------------------------dbms_output.put_line('p_lease_rec.attribute3'||p_lease_rec.attribute3);
12875 ------------------------dbms_output.put_line('p_lease_rec.attribute4'||p_lease_rec.attribute4);
12876 ------------------------dbms_output.put_line('p_lease_rec.attribute5'||p_lease_rec.attribute5);
12877 
12878             -- Validate the descriptive flexfields
12879 --
12880             IF NOT (    (p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char)
12881                     AND (p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char)
12882                     AND (p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char)
12883                     AND (p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char)
12884                     AND (p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char)
12885                     AND (p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char)
12886                     AND (p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char)
12887                     AND (p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char)
12888                     AND (p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char)
12889                     AND (p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char)
12890                     AND (p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char)
12891                     AND (p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char)
12892                     AND (p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char)
12893                     AND (p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char)
12894                     AND (p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char)
12895                     AND (p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char))
12896             THEN
12897                --------------------dbms_output.put_line ('IN ATTRIBUTES');--Rupak
12898 
12899                IF (p_lease_rec.attribute_category = pn_lease_utils.g_pn_miss_char)
12900                THEN
12901                   l_lease_rec.attribute_category       := NULL;
12902                ELSE
12903                   l_lease_rec.attribute_category       := p_lease_rec.attribute_category;
12904                END IF;
12905 
12906                IF (p_lease_rec.attribute1 = pn_lease_utils.g_pn_miss_char)
12907                THEN
12908                   l_lease_rec.attribute1               := NULL;
12909                ELSE
12910                   l_lease_rec.attribute1               := p_lease_rec.attribute1;
12911                END IF;
12912 
12913                IF (p_lease_rec.attribute2 = pn_lease_utils.g_pn_miss_char)
12914                THEN
12915                   l_lease_rec.attribute2               := NULL;
12916                ELSE
12917                   l_lease_rec.attribute2               := p_lease_rec.attribute2;
12918                END IF;
12919 
12920                IF (p_lease_rec.attribute3 = pn_lease_utils.g_pn_miss_char)
12921                THEN
12922                   l_lease_rec.attribute3               := NULL;
12923                ELSE
12924                   l_lease_rec.attribute3               := p_lease_rec.attribute3;
12925                END IF;
12926 
12927                IF (p_lease_rec.attribute4 = pn_lease_utils.g_pn_miss_char)
12928                THEN
12929                   l_lease_rec.attribute4               := NULL;
12930                ELSE
12931                   l_lease_rec.attribute4               := p_lease_rec.attribute4;
12932                END IF;
12933 
12934                IF (p_lease_rec.attribute5 = pn_lease_utils.g_pn_miss_char)
12935                THEN
12936                   l_lease_rec.attribute5               := NULL;
12937                ELSE
12938                   l_lease_rec.attribute5               := p_lease_rec.attribute5;
12939                END IF;
12940 
12941                IF (p_lease_rec.attribute6 = pn_lease_utils.g_pn_miss_char)
12942                THEN
12943                   l_lease_rec.attribute6               := NULL;
12944                ELSE
12945                   l_lease_rec.attribute6               := p_lease_rec.attribute6;
12946                END IF;
12947 
12948                IF (p_lease_rec.attribute7 = pn_lease_utils.g_pn_miss_char)
12949                THEN
12950                   l_lease_rec.attribute7               := NULL;
12951                ELSE
12952                   l_lease_rec.attribute7               := p_lease_rec.attribute7;
12953                END IF;
12954 
12955                IF (p_lease_rec.attribute8 = pn_lease_utils.g_pn_miss_char)
12956                THEN
12957                   l_lease_rec.attribute8               := NULL;
12958                ELSE
12959                   l_lease_rec.attribute8               := p_lease_rec.attribute8;
12960                END IF;
12961 
12962                IF (p_lease_rec.attribute9 = pn_lease_utils.g_pn_miss_char)
12963                THEN
12964                   l_lease_rec.attribute9               := NULL;
12965                ELSE
12966                   l_lease_rec.attribute9               := p_lease_rec.attribute9;
12967                END IF;
12968 
12969                IF (p_lease_rec.attribute10 = pn_lease_utils.g_pn_miss_char)
12970                THEN
12971                   l_lease_rec.attribute10              := NULL;
12972                ELSE
12973                   l_lease_rec.attribute10              := p_lease_rec.attribute10;
12974                END IF;
12975 
12976                IF (p_lease_rec.attribute11 = pn_lease_utils.g_pn_miss_char)
12977                THEN
12978                   l_lease_rec.attribute11              := NULL;
12979                ELSE
12980                   l_lease_rec.attribute11              := p_lease_rec.attribute11;
12981                END IF;
12982 
12983                IF (p_lease_rec.attribute12 = pn_lease_utils.g_pn_miss_char)
12984                THEN
12985                   l_lease_rec.attribute12              := NULL;
12986                ELSE
12987                   l_lease_rec.attribute12              := p_lease_rec.attribute12;
12988                END IF;
12989 
12990                IF (p_lease_rec.attribute13 = pn_lease_utils.g_pn_miss_char)
12991                THEN
12992                   l_lease_rec.attribute13              := NULL;
12993                ELSE
12994                   l_lease_rec.attribute13              := p_lease_rec.attribute13;
12995                END IF;
12996 
12997                IF (p_lease_rec.attribute14 = pn_lease_utils.g_pn_miss_char)
12998                THEN
12999                   l_lease_rec.attribute14              := NULL;
13000                ELSE
13001                   l_lease_rec.attribute14              := p_lease_rec.attribute14;
13002                END IF;
13003 
13004                IF (p_lease_rec.attribute15 = pn_lease_utils.g_pn_miss_char)
13005                THEN
13006                   l_lease_rec.attribute15              := NULL;
13007                ELSE
13008                   l_lease_rec.attribute15              := p_lease_rec.attribute15;
13009                END IF;
13010 ----------------------dbms_output.put_line('AFTER ATRR SETTING:1');--Rupak
13011                pn_lease_utils.validate_desc_flex (p_api_name                    => l_api_name_full
13012                                                 , p_application_short_name      => 'PN'
13013                                                 , p_desc_flex_name              => 'PN_LEASE_DETAILS'
13014                                                 , p_desc_segment1               => l_lease_rec.attribute1
13015                                                 , p_desc_segment2               => l_lease_rec.attribute2
13016                                                 , p_desc_segment3               => l_lease_rec.attribute3
13017                                                 , p_desc_segment4               => l_lease_rec.attribute4
13018                                                 , p_desc_segment5               => l_lease_rec.attribute5
13019                                                 , p_desc_segment6               => l_lease_rec.attribute6
13020                                                 , p_desc_segment7               => l_lease_rec.attribute7
13021                                                 , p_desc_segment8               => l_lease_rec.attribute8
13022                                                 , p_desc_segment9               => l_lease_rec.attribute9
13023                                                 , p_desc_segment10              => l_lease_rec.attribute10
13024                                                 , p_desc_segment11              => l_lease_rec.attribute11
13025                                                 , p_desc_segment12              => l_lease_rec.attribute12
13026                                                 , p_desc_segment13              => l_lease_rec.attribute13
13027                                                 , p_desc_segment14              => l_lease_rec.attribute14
13028                                                 , p_desc_segment15              => l_lease_rec.attribute15
13029                                                 , p_desc_context                => l_lease_rec.attribute_category
13030                                                 , p_resp_appl_id                => fnd_global.resp_appl_id
13031                                                 --pn_lease_pub.g_resp_appl_id
13032                                                 , p_resp_id                     => fnd_global.resp_id
13033                                                 --pn_lease_pub.g_resp_id
13034                                                 , p_return_status               => x_return_status
13035                                                 );
13036                       pvt_debug(g_pkg_name||'UPDATE_LEASE:ATTRIBUTES: Return Status:'||x_return_status,3);
13037 
13038 ----------------------dbms_output.put_line('AFTER ATRR SETTING:2');--Rupak
13039                IF (x_return_status = fnd_api.g_ret_sts_error)
13040                THEN
13041                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
13042                   fnd_message.set_token ('COLUMN', 'PN_LEASE_DETAILS_DESC_FIELDS');
13043                   fnd_message.set_token ('P_TEXT', 'PN_LEASE_DETAILS'|| '-'|| SQLERRM);
13044                   fnd_msg_pub.ADD;
13045                   RAISE fnd_api.g_exc_error;
13046                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
13047                THEN
13048                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
13049                   fnd_message.set_token ('COLUMN', 'PN_LEASE_DETAILS_DESC_FIELDS');
13050                   fnd_message.set_token ('P_TEXT', 'PN_LEASE_DETAILS'|| '-'|| SQLERRM);
13051                   fnd_msg_pub.ADD;
13052                   RAISE fnd_api.g_exc_unexpected_error;
13053                END IF;
13054             -- pn_lease_pub.test_lease(2,'In Private:9');
13055            END IF;
13056          END IF;
13057 
13058 ----------------------dbms_output.put_line('B4 closing:cur_lease_details');--Rupak
13059          CLOSE cur_lease_details;
13060 ----------------------dbms_output.put_line('B4 closing:cur_lease_header');--Rupak
13061          --pn_lease_pub.test_lease(2,'In Private:10');
13062          CLOSE cur_lease_header;
13063       --End of assigning values to the cursor variable and validation
13064       END IF;
13065 ----------------------dbms_output.put_line('after closing:cur_lease_header');--Rupak
13066       --pn_lease_pub.test_lease(2,'In Private:11');
13067       l_lastupdatedate                     := SYSDATE;
13068 ----------------------dbms_output.put_line('B4 INIT_LEASE_REC');--Rupak
13069 --Making these values to NULL
13070    BEGIN
13071       INIT_LEASE_REC( p_lease_rec       => p_lease_rec
13072                     , p_lease_context   => p_lease_context
13073                     , x_return_status   => x_return_status
13074                     );
13075         l_lease_rec.attribute_category :=  p_lease_rec.attribute_category;
13076         l_lease_rec.attribute1         :=  p_lease_rec.attribute1;
13077         l_lease_rec.attribute2         :=  p_lease_rec.attribute2;
13078         l_lease_rec.attribute3         :=  p_lease_rec.attribute3;
13079         l_lease_rec.attribute4         :=  p_lease_rec.attribute4;
13080         l_lease_rec.attribute5         :=  p_lease_rec.attribute5;
13081         l_lease_rec.attribute6         :=  p_lease_rec.attribute6;
13082         l_lease_rec.attribute7         :=  p_lease_rec.attribute7;
13083         l_lease_rec.attribute8         :=  p_lease_rec.attribute8;
13084         l_lease_rec.attribute9         :=  p_lease_rec.attribute9;
13085         l_lease_rec.attribute10        :=  p_lease_rec.attribute10;
13086         l_lease_rec.attribute11        :=  p_lease_rec.attribute11;
13087         l_lease_rec.attribute12        :=  p_lease_rec.attribute12;
13088         l_lease_rec.attribute13        :=  p_lease_rec.attribute13;
13089         l_lease_rec.attribute14        :=  p_lease_rec.attribute14;
13090         l_lease_rec.attribute15        :=  p_lease_rec.attribute15;
13091 
13092       pvt_debug(g_pkg_name||'UPDATE_LEASE:INIT_LEASE_REC: Return Status:'||x_return_status,3);
13093     ------------dbms_output.put_line('INIT_LEASE_REC : x_return_status'||x_return_status);--Rupak
13094   EXCEPTION
13095    WHEN OTHERS THEN
13096      ----------------------dbms_output.put_line('In EXCEPTION INIT_LEASE_REC'||SQLERRM);
13097      pvt_debug(g_pkg_name||'UPDATE_LEASE:INIT_LEASE_REC: Exception:'||SQLERRM,3);
13098      --NULL;
13099   END;
13100      ----------dbms_output.put_line('B4 Edit Lease:l_lease_context'||l_lease_context||l_lease_hdr_rec.status);--Rupak
13101      ----------dbms_output.put_line('In Edit Lease:l_lease_hdr_rec.status '||l_lease_hdr_rec.status );--Rupak
13102       IF (    l_lease_context = 'ED'
13103           AND l_lease_hdr_rec.status <> 'D')
13104       THEN
13105          ----------------------dbms_output.put_line('In Edit Lease');--Rupak
13106             --Call Edit lease PVT API
13107             pvt_debug(g_pkg_name||'UPDATE_LEASE:Calling Edit Lease',3);
13108          edit_lease (p_init_msg_list               => fnd_api.g_false
13109                    , p_commit                      => fnd_api.g_false
13110                    , x_return_status               => x_return_status
13111                    , x_msg_count                   => x_msg_count
13112                    , x_msg_data                    => x_msg_data
13113                    , p_lease_id                    => l_lease_hdr_rec.lease_id
13114                    , p_creation_date               => SYSDATE
13115                    , p_org_id                      => g_org_id
13116                    , p_last_update_date            => SYSDATE
13117                    , x_lease_change_id             => l_leasechangeid
13118                    , x_lease_change_num            => l_lease_change_num);
13119                    pvt_debug(g_pkg_name||'UPDATE_LEASE:Edit Lease Return Status'||l_return_status,3);
13120       ELSIF (    l_lease_context = 'AM' AND l_lease_hdr_rec.status <> 'D') THEN
13121          --Call Amend lease PVT API
13122           ----------------------dbms_output.put_line('In Amend Lease');--Rupak
13123 
13124           --Checking for the Amend Lease name is null
13125 
13126          IF (p_lease_rec.amend_lease_name IS NULL OR p_lease_rec.amend_lease_name = pn_lease_utils.g_pn_miss_char) THEN
13127             p_lease_rec.amend_lease_name := p_lease_rec.lease_name;
13128          END IF;
13129            pvt_debug(g_pkg_name||'UPDATE_LEASE:Calling Amend Lease',3);
13130          amend_lease (p_init_msg_list               => fnd_api.g_false
13131                     , p_commit                      => fnd_api.g_false
13132                     , x_return_status               => x_return_status
13133                     , x_msg_count                   => x_msg_count
13134                     , x_msg_data                    => x_msg_data
13135                     , p_lease_name                  => p_lease_rec.amend_lease_name
13136                     , p_lease_id                    => l_lease_hdr_rec.lease_id
13137                     , p_creation_date               => SYSDATE
13138                     , p_org_id                      => g_org_id
13139                     , p_lease_commencement_date     => p_lease_rec.amend_comm_date
13140                     , p_lease_termination_date      => l_lease_dtl_rec.lease_termination_date
13141                     , p_lease_execution_date        => p_lease_rec.amend_exec_date
13142                     , p_responsible_user            => l_lease_dtl_rec.responsible_user
13143                     , p_abstracted_by_user          => l_lease_hdr_rec.abstracted_by_user
13144                     , p_attribute_category          => l_lease_rec.attribute_category
13145                     , p_attribute1                  => l_lease_rec.attribute1
13146                     , p_attribute2                  => l_lease_rec.attribute2
13147                     , p_attribute3                  => l_lease_rec.attribute3
13148                     , p_attribute4                  => l_lease_rec.attribute4
13149                     , p_attribute5                  => l_lease_rec.attribute5
13150                     , p_attribute6                  => l_lease_rec.attribute6
13151                     , p_attribute7                  => l_lease_rec.attribute7
13152                     , p_attribute8                  => l_lease_rec.attribute8
13153                     , p_attribute9                  => l_lease_rec.attribute9
13154                     , p_attribute10                 => l_lease_rec.attribute10
13155                     , p_attribute11                 => l_lease_rec.attribute11
13156                     , p_attribute12                 => l_lease_rec.attribute12
13157                     , p_attribute13                 => l_lease_rec.attribute13
13158                     , p_attribute14                 => l_lease_rec.attribute14
13159                     , p_attribute15                 => l_lease_rec.attribute15
13160                     , p_last_update_date            => SYSDATE
13161                     , p_user_id                     => g_user_id
13162                     , x_lease_change_id             => l_leasechangeid
13163                     , x_lease_change_num            => l_lease_change_num);
13164           pvt_debug(g_pkg_name||'UPDATE_LEASE:Amend Lease Return Status'||l_return_status,3);
13165           IF (x_return_status = fnd_api.g_ret_sts_error) THEN
13166             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
13167             fnd_message.set_token('ERR_MSG', 'Return Status from the Amend Lease Procedure is E');
13168             fnd_msg_pub.ADD;
13169             RAISE fnd_api.g_exc_error;
13170           ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
13171             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
13172             fnd_message.set_token('ERR_MSG', 'Return Status from the Amend Lease Procedure is U');
13173             fnd_msg_pub.ADD;
13174             RAISE fnd_api.g_exc_unexpected_error;
13175           ELSIF(x_return_status = fnd_api.g_ret_sts_success) THEN
13176                  IF( l_lease_status_new <> l_lease_status_db) THEN
13177                    BEGIN
13178                       pvt_debug(g_pkg_name||'UPDATE_LEASE:Raising the Business Event in Amend Mode',3);
13179                       pn_am_wf.raise_business_event(  p_transaction_id      => p_lease_rec.lease_id
13180                                                     , p_event_name          => 'oracle.apps.pn.lease.leasestatus'
13181                                                     , p_lease_id            => p_lease_rec.lease_id
13182                                                  -- , p_old_approval_status => l_approval_status_old        -- Commented on 22NOV2010
13183                                                  -- , p_new_approval_status => p_new_approval_status_code   -- Commented on 22NOV2010
13184                                                     , p_old_lease_status    => l_lease_status_db
13185                                                     , p_new_lease_status    => l_lease_status_new
13186                                                    );
13187                       pvt_debug(g_pkg_name||'UPDATE_LEASE:Business Event Successful',3);
13188                    EXCEPTION
13189                       WHEN OTHERS THEN
13190                          pvt_debug(g_pkg_name||'UPDATE_LEASE:Business Event Exception in Amend Mode'||SQLERRM,3);
13191                    END;
13192                   END IF;
13193           END IF;
13194       ELSE
13195          l_leasechangeid                      := l_lease_dtl_rec.lease_change_id;
13196       END IF;
13197     ----------dbms_output.put_line('l_leasechangeid'||l_leasechangeid);
13198       IF l_leasechangeid IS NOT NULL
13199       THEN
13200         -- fnd_file.put_line (fnd_file.LOG, 'Before Calling Update lease'|| l_leasechangeid);
13201          --fnd_file.put_line (fnd_file.LOG, 'Before Calling Lease Status'|| l_lease_hdr_rec.status);
13202          ----------------------dbms_output.put_line('In Update Private 9'||l_lease_hdr_rec.cal_start);--Rupak
13203 
13204          BEGIN
13205            SELECT tenancy_id
13206            INTO   l_tenancy_id
13207            FROM   pn_tenancies_all
13208            WHERE  lease_id = l_lease_hdr_rec.lease_id
13209            AND    org_id   = g_org_id;
13210 
13211              ----------dbms_output.put_line('l_tenancy_id'||l_tenancy_id||x_return_status);
13212          EXCEPTION
13213           WHEN OTHERS THEN
13214               l_tenancy_id := NULL;
13215               pvt_debug(g_pkg_name||'UPDATE_LEASE:After Direct Update Lease tenancy_id:'||l_tenancy_id||'-'||x_return_status||'-'||l_lease_hdr_rec.status||'-'||l_status,3);
13216          END;
13217 
13218          IF(l_lease_hdr_rec.status = 'F' AND l_status = 'D') THEN
13219              IF (l_tenancy_id IS NULL) THEN
13220                l_status_new := l_status;
13221              ELSE
13222                IF (NVL(fnd_profile.VALUE ('PN_LEASE_APPROVAL_WORKFLOW'),'N') ='Y') THEN
13223                  l_status_new := 'S';--l_lease_hdr_rec.status;
13224                ELSE
13225                  l_status_new := l_lease_hdr_rec.status;
13226                END IF;
13227 
13228              END IF;
13229          ELSE
13230            l_status_new := l_lease_hdr_rec.status;
13231          END IF;
13232 
13233          pvt_debug(g_pkg_name||'UPDATE_LEASE:Calling Direct Update Lease:Status'||l_status_new||'-'||l_lease_hdr_rec.status,3);
13234          direct_update_lease
13235                       (p_init_msg_list               => p_init_msg_list
13236                      , p_commit                      => p_commit
13237                      , x_return_status               => x_return_status
13238                      , x_msg_count                   => x_msg_count
13239                      , x_msg_data                    => x_msg_data
13240                      , p_lease_id                    => p_lease_rec.lease_id
13241                      , p_lease_detail_id             => l_lease_dtl_rec.lease_detail_id
13242                      , p_lease_change_id             => l_leasechangeid
13243                      , p_name                        => l_lease_hdr_rec.NAME
13244                      , p_lease_num                   => l_lease_hdr_rec.lease_num
13245                      , p_parent_lease_id             => l_lease_hdr_rec.parent_lease_id
13246                      , p_lease_type_code             => l_lease_hdr_rec.lease_type_code
13247                      , p_lease_class_code            => l_lease_hdr_rec.lease_class_code
13248                      , p_payment_term_proration_rule => l_lease_hdr_rec.payment_term_proration_rule
13249                      , p_abstracted_by_user          => l_lease_hdr_rec.abstracted_by_user
13250                      , p_status                      => l_status_new--l_lease_hdr_rec.status
13251                      , p_lease_status                => l_lease_hdr_rec.lease_status
13252                      , p_last_update_date            => l_lastupdatedate
13253                      , p_last_updated_by             => g_user_id
13254                      , p_last_update_login           => g_login_id
13255                      , p_responsible_user            => l_lease_dtl_rec.responsible_user
13256                      , p_expense_account_id          => l_lease_dtl_rec.expense_account_id
13257                      , p_accrual_account_id          => l_lease_dtl_rec.accrual_account_id
13258                      , p_receivable_account_id       => l_lease_dtl_rec.receivable_account_id
13259                      , p_term_template_id            => l_lease_dtl_rec.term_template_id
13260                      , p_lease_commencement_date     => l_lease_dtl_rec.lease_commencement_date
13261                      , p_lease_termination_date      => l_lease_dtl_rec.lease_termination_date
13262                      , p_lease_execution_date        => l_lease_dtl_rec.lease_execution_date
13263                      , p_lease_extension_end_date    => l_leaseextensionenddate
13264                      , p_cal_start                   => l_lease_hdr_rec.cal_start
13265                      , p_attribute_category          => l_lease_rec.attribute_category
13266                      , p_attribute1                  => l_lease_rec.attribute1
13267                      , p_attribute2                  => l_lease_rec.attribute2
13268                      , p_attribute3                  => l_lease_rec.attribute3
13269                      , p_attribute4                  => l_lease_rec.attribute4
13270                      , p_attribute5                  => l_lease_rec.attribute5
13271                      , p_attribute6                  => l_lease_rec.attribute6
13272                      , p_attribute7                  => l_lease_rec.attribute7
13273                      , p_attribute8                  => l_lease_rec.attribute8
13274                      , p_attribute9                  => l_lease_rec.attribute9
13275                      , p_attribute10                 => l_lease_rec.attribute10
13276                      , p_attribute11                 => l_lease_rec.attribute11
13277                      , p_attribute12                 => l_lease_rec.attribute12
13278                      , p_attribute13                 => l_lease_rec.attribute13
13279                      , p_attribute14                 => l_lease_rec.attribute14
13280                      , p_attribute15                 => l_lease_rec.attribute15
13281                      , p_location_id                 => l_lease_hdr_rec.location_id
13282                      , p_customer_id                 => l_lease_hdr_rec.customer_id
13283                      , p_grouping_rule_id            => l_lease_dtl_rec.grouping_rule_id);
13284                      pvt_debug(g_pkg_name||'UPDATE_LEASE:Direct Update Lease Return Status'||x_return_status,3);
13285             --------------------dbms_output.put_line('In Update Private 10');--Rupak
13286          --End of insert logic
13287          g_lease_change_id := l_leasechangeid;
13288 
13289 
13290          IF (x_return_status = fnd_api.g_ret_sts_error) THEN
13291             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
13292             fnd_message.set_token('ERR_MSG', 'Return Status from the Lease Procedure is E');
13293             fnd_msg_pub.ADD;
13294             RAISE fnd_api.g_exc_error;
13295          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
13296             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
13297             fnd_message.set_token('ERR_MSG', 'Return Status from the Lease Procedure is U');
13298             fnd_msg_pub.ADD;
13299             RAISE fnd_api.g_exc_unexpected_error;
13300          ELSIF(x_return_status = fnd_api.g_ret_sts_success) THEN
13301                  IF( l_lease_status_new <> l_lease_status_db) THEN
13302                    BEGIN
13303                       pvt_debug(g_pkg_name||'UPDATE_LEASE:Raising the Business Event',3);
13304                       --dbms_output.put_line('UPDATE_LEASE:Raising the Business Event');
13305                       pn_am_wf.raise_business_event(  p_transaction_id      => p_lease_rec.lease_id
13306                                                     , p_event_name          => 'oracle.apps.pn.lease.leasestatus'
13307                                                     , p_lease_id            => p_lease_rec.lease_id
13308                                                  -- , p_old_approval_status => l_approval_status_old        -- Commented on 22NOV2010
13309                                                  -- , p_new_approval_status => p_new_approval_status_code   -- Commented on 22NOV2010
13310                                                     , p_old_lease_status    => l_lease_status_db
13311                                                     , p_new_lease_status    => l_lease_status_new
13312                                                    );
13313                       pvt_debug(g_pkg_name||'UPDATE_LEASE:Business Event Successful',3);
13314                       --dbms_output.put_line('UPDATE_LEASE:Business Event Successful');
13315                    EXCEPTION
13316                       WHEN OTHERS THEN
13317                          pvt_debug(g_pkg_name||'UPDATE_LEASE:Business Event Exception'||SQLERRM,3);
13318                    END;
13319                   END IF;
13320                   --Check either to call the Work Flow or submit the program directly.
13321                   IF( l_status_new = 'S') THEN
13322                      pvt_debug(g_pkg_name||'UPDATE_LEASE:Approval Work Flow Initiated',3);
13323                      --dbms_output.put_line('UPDATE_LEASE:Approval Work Flow Initiated');
13324                      pn_am_wf.call_lease_approval_wf( p_transaction_id  => p_lease_rec.lease_id
13325                                                      ,p_lease_id        => p_lease_rec.lease_id
13326                                                      );
13327                      pvt_debug(g_pkg_name||'UPDATE_LEASE:Approval Work Flow Success',3);
13328                      --dbms_output.put_line('UPDATE_LEASE:Approval Work Flow Success');
13329                   ELSIF(l_lease_hdr_rec.lease_status = 'SGN' OR (l_lease_hdr_rec.status = 'F' AND l_status = 'D')) THEN
13330                     IF (l_tenancy_id IS NOT NULL) THEN
13331                         FINALIZE_RECORD ( p_lease_rec.lease_id,l_lease_dtl_rec.lease_commencement_date,p_lease_context,g_org_id,l_api_name_full,'U',x_request_id);
13332                        --dbms_output.put_line('UPDATE_LEASE:FINALIZE_RECORD called');
13333                       IF (x_request_id = 0) THEN
13334                         fnd_message.set_name ('PN', 'PN_SUBSCHEDULES_ERR');
13335                         fnd_message.set_token ('API_NAME', l_api_name_full|| '-SubmitSchedulesConcProgram');
13336                         fnd_msg_pub.ADD;
13337                         RAISE fnd_api.g_exc_error;
13338                       END IF;
13339                     ELSE
13340                         pvt_debug(g_pkg_name||'UPDATE_LEASE:Tenancies are needed to make the lease Final',3);
13341                         fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
13342                         fnd_message.set_token('ERR_MSG', 'Please provide the tenancies to finalize the lease');
13343                         fnd_msg_pub.ADD;
13344                         RAISE fnd_api.g_exc_error;
13345                     END IF;
13346                   END IF;
13347          END IF;
13348       ELSE
13349          fnd_message.set_name ('PN', 'PN_INVALID_CHANGEID');
13350          fnd_message.set_token ('API_NAME', l_api_name_full|| '-ValidateLeaseCHangeId');
13351          fnd_msg_pub.ADD;
13352          RAISE fnd_api.g_exc_error;
13353       END IF;
13354 
13355       -- Standard check of p_commit
13356      ----------------------dbms_output.put_line('In Update Private 11');--Rupak
13357 
13358          fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
13359                                   , p_count                       => x_msg_count
13360                                   , p_data                        => x_msg_data
13361                                    );
13362 
13363 
13364    EXCEPTION
13365       WHEN fnd_api.g_exc_error THEN
13366          fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
13367                                   , p_count                       => x_msg_count
13368                                   , p_data                        => x_msg_data
13369                                    );
13370            pvt_debug(g_pkg_name||'-CREATE_LEASE:Exception:g_exc_error:'||SQLERRM,3);
13371            l_error_count := l_error_count  + 1;
13372            x_return_status := fnd_api.g_ret_sts_error;
13373       WHEN OTHERS THEN
13374          fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
13375                                   , p_count                       => x_msg_count
13376                                   , p_data                        => x_msg_data
13377                                     );
13378           l_error_count := l_error_count  + 1;
13379           x_return_status := fnd_api.g_ret_sts_unexp_error;
13380           pvt_debug(g_pkg_name||'-CREATE_LEASE:Exception:'||SQLERRM,3);
13381 
13382    END;
13383 
13384 
13385 ------dbms_output.put_line('HELLO:LEASE_CHANGE_ID:'||l_leasechangeid);--OOPS
13386   -- ------------------dbms_output.put_line('After Update_lease:x_msg_data:'||x_msg_data);--OOPS
13387 
13388       -------------------------Calling Update Contacts-------
13389       ----------------------dbms_output.put_line(   'Before Calling Update Contacts In Update Lease Procedure:p_lease_rec.lease_id'|| p_lease_rec.lease_id);
13390     IF (p_lease_contacts_tbl.COUNT <>0) THEN
13391 
13392       update_contacts (p_api_version                 => p_api_version
13393                      , p_init_msg_list               => p_init_msg_list
13394                      , p_commit                      => p_commit
13395                      , p_validate                    => p_validate
13396                      , p_lease_contacts_tbl          => p_lease_contacts_tbl
13397                      , p_lease_id                    => p_lease_rec.lease_id
13398                      , p_lease_change_id             => l_leasechangeid
13399                      , p_lease_context               => l_lease_context
13400                      , x_return_status               => x_return_status
13401                      , x_msg_count                   => x_msg_count
13402                      , x_msg_data                    => x_msg_data
13403                      );
13404              IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13405                  l_error_count := l_error_count + 1;
13406              END IF;
13407      END IF;
13408        pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_CONTACTS Return Status'||x_return_status,3);
13409       -------------------------Calling Update Tenancies-------
13410       ----------------------dbms_output.put_line(   'Before Calling Update Tenancies In Update Lease Procedure:p_lease_rec.lease_id'|| p_lease_rec.lease_id);--Rupak
13411     IF (p_lease_tenancies_tbl.count<>0) THEN
13412       update_tenancies (p_api_version                 => p_api_version
13413                       , p_init_msg_list               => p_init_msg_list
13414                       , p_commit                      => p_commit
13415                       , p_validate                    => p_validate
13416                       , p_lease_tenancies_tbl         => p_lease_tenancies_tbl
13417                       , p_lease_id                    => p_lease_rec.lease_id
13418                       , p_lease_change_id             => l_leasechangeid
13419                       , p_lease_context               => l_lease_context
13420                       , x_return_status               => x_return_status
13421                      -- , x_msg_count                   => x_msg_count
13422                     --  , x_msg_data                    => x_msg_data
13423                       );
13424              IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13425                l_error_count := l_error_count + 1;
13426              END IF;
13427     END IF;
13428        --------------------dbms_output.put_line('After Update_lease:1:x_msg_count:'||x_msg_count);--OOPS
13429        --------------------dbms_output.put_line('After Update_lease:1:x_msg_data:'||x_msg_data);--OOPS
13430            pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_TENANCIES Return Status:'||x_return_status,3);
13431        ----------------------dbms_output.put_line(   'Before Calling Update Payments In Update Lease Procedure:p_lease_rec.lease_id'|| p_lease_rec.lease_id);--Rupak
13432 ------Calling Update Terms-------
13433     IF (p_lease_payment_term_tbl.count<>0) THEN
13434         update_terms (p_api_version                  => p_api_version
13435                     , p_init_msg_list                => NULL
13436                     , p_commit                       => NULL
13437                     , p_validate                     => p_validate
13438                     , p_payment_terms_tbl            => p_lease_payment_term_tbl
13439                     , p_lease_id                     => p_lease_rec.lease_id
13440                     , p_lease_context                => l_lease_context
13441                     , x_return_status                => x_return_status
13442                     , x_msg_count                    => x_msg_count
13443                     , x_msg_data                     => x_msg_data
13444                     );
13445              IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13446                 l_error_count := l_error_count + 1;
13447              END IF;
13448     END IF;
13449           pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_terms Return Status:'||x_return_status,3);
13450 
13451 ------------------------- Sunitha Begin ------------------------------------------
13452          IF p_note_tbl.count<>0 THEN
13453                      UPDATE_NOTE (
13454                           p_lease_id          =>    p_lease_rec.lease_id
13455                         , p_commit            =>    p_commit
13456                         , p_validate          =>    p_validate
13457                         , p_note_tbl          =>    p_note_tbl
13458                         , x_return_status     =>    x_return_status
13459                       --  , x_msg_count         =>    x_msg_count
13460                       --  , x_msg_data          =>    x_msg_data
13461                           );
13462             pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_NOTE Return Status'||x_return_status,3);
13463           IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13464                l_error_count := l_error_count + 1;
13465           END IF;
13466         END IF;
13467           ------------------dbms_output.put_line('UPDATE_LEASE:UPDATE_NOTE:Return Status:'||x_return_status);
13468 
13469         IF p_right_tbl.count<>0 THEN
13470                 UPDATE_RIGHT (
13471                           p_lease_id          =>    nvl(p_lease_rec.lease_id,l_lease_hdr_rec.lease_id)
13472                         , p_lease_change_id   =>    nvl(p_lease_rec.lease_change_id,l_lease_dtl_rec.lease_change_id)
13473                         , p_commit            =>    p_commit
13474                         , p_validate          =>    p_validate
13475                         , p_right_tbl         =>    p_right_tbl
13476                         , x_return_status     =>    x_return_status
13477                        -- , x_msg_count         =>    x_msg_count
13478                       --  , x_msg_data          =>    x_msg_data
13479                         );
13480               pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_RIGHT Return Status'||x_return_status,3);
13481          IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13482                l_error_count := l_error_count + 1;
13483           END IF;
13484        END IF;
13485        ------------------dbms_output.put_line('UPDATE_LEASE:UPDATE_RIGHT:Return Status:'||x_return_status);
13486 
13487         IF p_obligation_tbl.count<>0 THEN
13488                 UPDATE_OBLIGATION (
13489                             p_lease_id          =>  nvl(p_lease_rec.lease_id,l_lease_hdr_rec.lease_id)
13490                           , p_lease_change_id   =>  nvl(p_lease_rec.lease_change_id,l_lease_dtl_rec.lease_change_id)
13491                           , p_commit            =>  p_commit
13492                           , p_validate          =>  p_validate
13493                           , p_obligation_tbl    =>  p_obligation_tbl
13494                           , x_return_status     =>  x_return_status
13495                       --    , x_msg_count         =>    x_msg_count
13496                       --    , x_msg_data          =>    x_msg_data
13497                            );
13498           pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_OBLIGATION Return Status'||x_return_status,3);
13499           IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13500                l_error_count := l_error_count + 1;
13501           END IF;
13502         END IF;
13503         ------------------dbms_output.put_line('UPDATE_LEASE:UPDATE_OBLIATIONS:Return Status:'||x_return_status);
13504 
13505         IF p_insurance_tbl.count<>0 THEN
13506                 UPDATE_INSURANCE (
13507                             p_lease_id          => nvl(p_lease_rec.lease_id,l_lease_hdr_rec.lease_id),
13508                             p_lease_change_id   =>  nvl(p_lease_rec.lease_change_id,l_lease_dtl_rec.lease_change_id),
13509                             p_commit            =>  p_commit,
13510                             p_validate          =>  p_validate,
13511                             p_insurance_tbl     =>   p_insurance_tbl,
13512                             x_return_status     =>  x_return_status
13513                          --   x_msg_count         =>    x_msg_count,
13514                         --    x_msg_data          =>    x_msg_data
13515                               );
13516            IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13517                l_error_count := l_error_count + 1;
13518              END IF;
13519             pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_INSURANCE Return Status:'||x_return_status,3);
13520        END IF;
13521 
13522         IF p_option_tbl.count<>0 THEN
13523         UPDATE_OPTION (
13524                           p_lease_id          =>  nvl(p_lease_rec.lease_id,l_lease_hdr_rec.lease_id)
13525                         , p_lease_change_id   =>  nvl(p_lease_rec.lease_change_id,l_lease_dtl_rec.lease_change_id)
13526                         , p_commit            =>  p_commit
13527                         , p_validate          =>  p_validate
13528                         , p_option_tbl        =>  p_option_tbl
13529                         , x_return_status     =>  x_return_status
13530                      --   , x_msg_count         =>    x_msg_count
13531                       --  , x_msg_data          =>    x_msg_data
13532                      );
13533               IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
13534                l_error_count := l_error_count + 1;
13535              END IF;
13536          pvt_debug(g_pkg_name||'UPDATE_LEASE: UPDATE_OPTION Return Status:'||x_return_status,3);
13537         END IF;
13538       ----------------------- Sunitha end ------------------------------------------
13539 
13540        IF (l_error_count = 0) THEN
13541             x_return_status := fnd_api.g_ret_sts_success;
13542        ELSE
13543          x_return_status := fnd_api.g_ret_sts_error;
13544        END IF;
13545        ------------------dbms_output.put_line('Error Count:Update_lease:'||l_error_count);
13546    EXCEPTION
13547       WHEN OTHERS THEN
13548          x_return_status := fnd_api.g_ret_sts_unexp_error;
13549          pvt_debug(g_pkg_name||'-UPDATE_LEASE:Exception:'||SQLERRM,3);
13550          --RAISE;
13551    END update_lease;
13552 ------------------------------------------------------------Terms Begin---------------------------------------------------------------------------
13553 --Bug14176705
13554  PROCEDURE ADD_DIST_ACCOUNT ( p_lease_terms_rec lease_terms_rec
13555                             , p_terms_exp_rev_accounts_tbl terms_exp_rev_accounts_tbl
13556                             , l_change_account_count NUMBER DEFAULT NULL
13557                             , p_mode VARCHAR2
13558                                   )
13559   AS
13560 
13561   CURSOR cur_dist_details(l_term_id NUMBER,l_acc_code VARCHAR2)
13562   IS
13563   SELECT rowid row_id,rownum row_num,pda.*
13564   FROM   pn_distributions_all pda
13565   WHERE  pda.payment_term_id = l_term_id
13566   AND    pda.account_class   = l_acc_code
13567   AND    pda.org_id          = g_org_id
13568   AND    rownum = 1;
13569 
13570   l_max_rownum   NUMBER;
13571   l_record_count NUMBER;
13572   l_count        NUMBER;
13573 
13574   l_acc_code  VARCHAR2(30);
13575   l_term_id   NUMBER;
13576   x_rowid     VARCHAR2(18);
13577 
13578   x_distribution_id NUMBER;
13579 
13580  l_term_template_id  NUMBER;
13581  l_payment_term_id   NUMBER;
13582 
13583   BEGIN
13584 
13585      l_term_id  := p_lease_terms_rec.payment_term_id;
13586      IF (p_terms_exp_rev_accounts_tbl.count<>0) THEN
13587         l_acc_code := p_terms_exp_rev_accounts_tbl(1).account_code;
13588      END IF;
13589 
13590 
13591      --------dbms_output.put_line('IN Validate Payment terms'||l_term_id);
13592      --------dbms_output.put_line('IN Validate Payment terms'||l_acc_code);
13593      --------dbms_output.put_line('p_lease_terms_rec.payment_term_id'||p_lease_terms_rec.payment_term_id||'-'||p_lease_terms_rec.term_template_id);
13594 
13595    IF (p_mode = 'U') THEN
13596 
13597      BEGIN
13598        SELECT max(rownum)
13599        INTO l_max_rownum
13600        FROM   pn_distributions_all pda
13601        WHERE  pda.payment_term_id = l_term_id;
13602        --AND    pda.org_id          = g_org_id;
13603      EXCEPTION
13604       WHEN OTHERS THEN
13605         pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:MAX ROWNUM:Exception:'||SQLERRM,3);
13606         NULL;
13607         --------dbms_output.put_line('Exception:In getting the max rownum');
13608      END;
13609 
13610 
13611      begin
13612       SELECT count(1)
13613       INTO   l_record_count
13614       FROM   pn_distributions_all
13615       WHERE  payment_term_id = l_term_id
13616       AND    account_class   = l_acc_code
13617       AND    org_id          = g_org_id;
13618     EXCEPTION
13619       WHEN NO_DATA_FOUND THEN
13620         l_record_count :=0;
13621     end;
13622      pvt_debug(g_pkg_name||':ADD_DIST_ACCOUNT:payment_term_id:'||l_term_id,3);
13623      pvt_debug(g_pkg_name||':ADD_DIST_ACCOUNT:l_acc_code:'||l_acc_code,3);
13624      pvt_debug(g_pkg_name||':ADD_DIST_ACCOUNT:g_org_id:'||g_org_id,3);
13625 
13626         --------dbms_output.put_line('record count '||l_record_count);
13627 
13628      l_count := 1;
13629 
13630 
13631      FOR r_dist_details in cur_dist_details(l_term_id,l_acc_code)
13632       LOOP
13633 
13634         FOR i in p_terms_exp_rev_accounts_tbl.FIRST..p_terms_exp_rev_accounts_tbl.LAST
13635         LOOP
13636           IF (l_count <= l_record_count) THEN
13637             BEGIN
13638              pn_distributions_pkg.update_row( x_rowid               => r_dist_details.row_id
13639                                             , x_distribution_id     => r_dist_details.distribution_id
13640                                             , x_account_id          => NVL(p_terms_exp_rev_accounts_tbl(i).account_id,r_dist_details.account_id)
13641                                              ,x_payment_term_id     => r_dist_details.payment_term_id
13642                                              ,x_term_template_id    => r_dist_details.term_template_id
13643                                              ,x_account_class       => p_terms_exp_rev_accounts_tbl(i).account_code
13644                                              ,x_percentage          => p_terms_exp_rev_accounts_tbl(i).account_percentage
13645                                              ,x_line_number         => r_dist_details.line_number
13646                                              ,x_last_update_date    => SYSDATE
13647                                              ,x_last_updated_by     => fnd_global.user_id
13648                                              ,x_last_update_login   => fnd_global.login_id
13649                                              ,x_attribute_category  => r_dist_details.attribute_category
13650                                              ,x_attribute1          => r_dist_details.attribute1
13651                                              ,x_attribute2          => r_dist_details.attribute2
13652                                              ,x_attribute3          => r_dist_details.attribute3
13653                                              ,x_attribute4          => r_dist_details.attribute4
13654                                              ,x_attribute5          => r_dist_details.attribute5
13655                                              ,x_attribute6          => r_dist_details.attribute6
13656                                              ,x_attribute7          => r_dist_details.attribute7
13657                                              ,x_attribute8          => r_dist_details.attribute8
13658                                              ,x_attribute9          => r_dist_details.attribute9
13659                                              ,x_attribute10         => r_dist_details.attribute10
13660                                              ,x_attribute11         => r_dist_details.attribute11
13661                                              ,x_attribute12         => r_dist_details.attribute12
13662                                              ,x_attribute13         => r_dist_details.attribute13
13663                                              ,x_attribute14         => r_dist_details.attribute14
13664                                              ,x_attribute15         => r_dist_details.attribute15
13665                                              ,x_lease_change_id     => p_lease_terms_rec.lease_change_id
13666                                             );
13667                pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.UPDATE_ROW Successful',3);
13668               commit;
13669               l_count := l_count + 1;
13670               --------dbms_output.put_line('IN IF:UPDATE ROW');
13671               EXCEPTION
13672                 WHEN OTHERS THEN
13673                 NULL;
13674                   --------dbms_output.put_line('In Exception:In Update'||SQLERRM);
13675                   pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.UPDATE_ROW:Exception:'||SQLERRM,3);
13676               END;
13677           ELSE
13678           BEGIN
13679 
13680          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
13681                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
13682                                          ,x_account_id           =>  NVL(p_terms_exp_rev_accounts_tbl(i).account_id,r_dist_details.account_id)
13683                                          ,x_payment_term_id      =>  r_dist_details.payment_term_id
13684                                          ,x_term_template_id     =>  r_dist_details.term_template_id
13685                                          ,x_account_class        =>  p_terms_exp_rev_accounts_tbl(i).account_code
13686                                          ,x_percentage           =>  p_terms_exp_rev_accounts_tbl(i).account_percentage
13687                                          ,x_line_number          =>  l_max_rownum
13688                                          ,x_last_update_date     =>  SYSDATE
13689                                          ,x_last_updated_by      =>  fnd_global.user_id
13690                                          ,x_creation_date        =>  SYSDATE
13691                                          ,x_created_by           =>  fnd_global.user_id
13692                                          ,x_last_update_login    =>  fnd_global.login_id
13693                                          ,x_attribute_category   =>  NULL
13694                                          ,x_attribute1           =>  NULL
13695                                          ,x_attribute2           =>  NULL
13696                                          ,x_attribute3           =>  NULL
13697                                          ,x_attribute4           =>  NULL
13698                                          ,x_attribute5           =>  NULL
13699                                          ,x_attribute6           =>  NULL
13700                                          ,x_attribute7           =>  NULL
13701                                          ,x_attribute8           =>  NULL
13702                                          ,x_attribute9           =>  NULL
13703                                          ,x_attribute10          =>  NULL
13704                                          ,x_attribute11          =>  NULL
13705                                          ,x_attribute12          =>  NULL
13706                                          ,x_attribute13          =>  NULL
13707                                          ,x_attribute14          =>  NULL
13708                                          ,x_attribute15          =>  NULL
13709                                          ,x_org_id               =>  fnd_global.org_id
13710                                         );
13711                     pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
13712         commit;
13713         --------dbms_output.put_line('IN ELSE:INSERT ROW');
13714          EXCEPTION
13715             WHEN OTHERS THEN
13716                NULL;
13717                   --------dbms_output.put_line('In Exception:In ELSE: INSERT'||SQLERRM);
13718                   pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
13719               END;
13720         END IF;
13721        END LOOP;
13722      END LOOP;
13723     ELSE
13724 
13725       FOR i in p_terms_exp_rev_accounts_tbl.FIRST..p_terms_exp_rev_accounts_tbl.LAST
13726        LOOP
13727         x_distribution_id := NULL;
13728         l_max_rownum      := NULL;
13729         BEGIN
13730          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
13731                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
13732                                          ,x_account_id           =>  p_terms_exp_rev_accounts_tbl(i).account_id
13733                                          ,x_payment_term_id      =>  p_lease_terms_rec.payment_term_id
13734                                          ,x_term_template_id     =>  p_lease_terms_rec.term_template_id
13735                                          ,x_account_class        =>  p_terms_exp_rev_accounts_tbl(i).account_code
13736                                          ,x_percentage           =>  p_terms_exp_rev_accounts_tbl(i).account_percentage
13737                                          ,x_line_number          =>  l_max_rownum
13738                                          ,x_last_update_date     =>  SYSDATE
13739                                          ,x_last_updated_by      =>  fnd_global.user_id
13740                                          ,x_creation_date        =>  SYSDATE
13741                                          ,x_created_by           =>  fnd_global.user_id
13742                                          ,x_last_update_login    =>  fnd_global.login_id
13743                                          ,x_attribute_category   =>  NULL
13744                                          ,x_attribute1           =>  NULL
13745                                          ,x_attribute2           =>  NULL
13746                                          ,x_attribute3           =>  NULL
13747                                          ,x_attribute4           =>  NULL
13748                                          ,x_attribute5           =>  NULL
13749                                          ,x_attribute6           =>  NULL
13750                                          ,x_attribute7           =>  NULL
13751                                          ,x_attribute8           =>  NULL
13752                                          ,x_attribute9           =>  NULL
13753                                          ,x_attribute10          =>  NULL
13754                                          ,x_attribute11          =>  NULL
13755                                          ,x_attribute12          =>  NULL
13756                                          ,x_attribute13          =>  NULL
13757                                          ,x_attribute14          =>  NULL
13758                                          ,x_attribute15          =>  NULL
13759                                          ,x_org_id               =>  fnd_global.org_id
13760                                         );
13761                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
13762           COMMIT;
13763           --------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
13764           --l_max_row_num := l_max_row_num + 1;
13765         EXCEPTION
13766           WHEN OTHERS THEN
13767           pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
13768           NULL;
13769               --------dbms_output.put_line('In Exception:In ELSE:ELSE: INSERT'||SQLERRM);
13770         END;
13771     END LOOP;
13772     END IF;
13773   END ADD_DIST_ACCOUNT;
13774 
13775     PROCEDURE FINALIZE_RECORD( p_lease_id              NUMBER
13776                               ,p_lease_commencement_date DATE
13777                               ,p_lease_context           VARCHAR2
13778                               ,p_org_id                  NUMBER
13779                               ,p_api_name_full           VARCHAR2
13780                               ,p_mode                    VARCHAR2
13781                               ,x_request_id              OUT NOCOPY NUMBER
13782                              )
13783   AS
13784   l_schedule_context VARCHAR2(20);
13785   l_request_id       NUMBER;
13786   BEGIN
13787     ----------------------dbms_output.put_line('In FINALIZE_RECORD:B4 IF');
13788     l_schedule_context := 'ABS';
13789     IF (p_mode = 'C') THEN
13790       IF p_lease_context = 'ED' THEN
13791         l_schedule_context := 'ADDEDT';
13792       ELSIF p_lease_context = 'AM' THEN
13793         l_schedule_context := 'ADDAMD';
13794       END IF;
13795     ELSIF(p_mode = 'U') THEN
13796       IF p_lease_context = 'ED' THEN
13797        l_schedule_context := 'CONTERM';
13798        ELSIF p_lease_context = 'AM' THEN
13799        l_schedule_context := 'CONTERM';
13800        END IF;
13801     END IF;
13802  ----------dbms_output.put_line('In FINALIZE_RECORD:1');
13803         commit; --Bug#	12692579 Added commit so that all changes are saved before invoking the concurrent program.
13804      pn_mo_cache_utils.fnd_req_set_org_id(p_org_id);
13805 ----------dbms_output.put_line('In FINALIZE_RECORD:2');
13806             x_request_id := fnd_request.submit_request ( 'PN',
13807                                                         'PNSCHITM',
13808                                                         NULL,
13809                                                         NULL,
13810                                                         FALSE,
13811             p_lease_id ,l_schedule_context,'MAIN',
13812             null, null, 'N',fnd_date.date_to_canonical(p_lease_commencement_date),null,null,chr(0), -- Bug 13462759
13813             '',  '',  '',  '',
13814             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13815             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13816             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13817             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13818             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13819             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13820             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13821             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
13822             '',  '',  '',  '',  '',  ''
13823             );
13824             pvt_debug(g_pkg_name||'FINALIZE_RECORD:Submit Request Successful',3);
13825 
13826    ----------------------dbms_output.put_line('Submit Request Success');
13827 
13828   EXCEPTION
13829     WHEN OTHERS THEN
13830        pvt_debug(g_pkg_name||'FINALIZE_RECORD:Submit Request Failed:'||SQLERRM,3);
13831 END FINALIZE_RECORD;
13832 
13833      PROCEDURE GET_TEMPLATE_DEFAULTS ( p_lease_terms_rec IN OUT NOCOPY lease_terms_rec)
13834   AS
13835          CURSOR cur_term_template (p_term_temp_id NUMBER)
13836          IS
13837          SELECT term_template_id
13838               , NAME
13839               , set_of_books_id
13840               , currency_code
13841               , normalize
13842               , schedule_day
13843               , payment_purpose_code
13844               , payment_term_type_code
13845               , accrual_account_id
13846               , project_id
13847               , task_id
13848               , organization_id
13849               , expenditure_type
13850               , expenditure_item_date
13851               , vendor_id
13852               , vendor_site_id
13853               , customer_id
13854               , customer_site_use_id
13855               , cust_ship_site_id
13856               , ap_ar_term_id
13857               , cust_trx_type_id
13858               , tax_group_id
13859               , tax_code_id
13860               , distribution_set_id
13861               , inv_rule_id
13862               , account_rule_id
13863               , salesrep_id
13864               , tax_included
13865               , po_header_id
13866               , cust_po_number
13867               , receipt_method_id
13868               , active
13869               , description
13870               , attribute_category
13871               , attribute1
13872               , attribute2
13873               , attribute3
13874               , attribute4
13875               , attribute5
13876               , attribute6
13877               , attribute7
13878               , attribute8
13879               , attribute9
13880               , attribute10
13881               , attribute11
13882               , attribute12
13883               , attribute13
13884               , attribute14
13885               , attribute15
13886               , org_id
13887               , location_id
13888               , term_template_type
13889               , tax_classification_code
13890               , include_in_var_rent
13891            FROM pn_term_templates_all
13892            WHERE term_template_id = p_term_temp_id
13893            AND active = 'Y';
13894 
13895       l_term_defaults             cur_term_template%ROWTYPE;
13896 
13897   BEGIN
13898 
13899           OPEN cur_term_template (p_lease_terms_rec.term_template_id);
13900           LOOP
13901             FETCH cur_term_template
13902             INTO l_term_defaults;
13903 
13904             EXIT WHEN cur_term_template%NOTFOUND;
13905           END LOOP;
13906          CLOSE cur_term_template;
13907              pvt_debug(g_pkg_name||'GET_TEMPLATE_DEFAULTS:Assigning the default values',3);
13908            ----------------------dbms_output.put_line('In GET_TEMPLATE_DEFAULTS:l_term_defaults.payment_purpose_code'||l_term_defaults.payment_purpose_code||'-'||p_lease_terms_rec.payment_purpose_code);
13909      --Default Values
13910             p_lease_terms_rec.payment_purpose_code  := NVL (p_lease_terms_rec.payment_purpose_code, l_term_defaults.payment_purpose_code);
13911             p_lease_terms_rec.currency_code         := NVL (p_lease_terms_rec.currency_code, l_term_defaults.currency_code);
13912             p_lease_terms_rec.normalize             := NVL (p_lease_terms_rec.normalize, l_term_defaults.normalize);
13913             p_lease_terms_rec.schedule_day          := NVL (p_lease_terms_rec.schedule_day, l_term_defaults.schedule_day);
13914             p_lease_terms_rec.payment_term_type_code:= NVL (p_lease_terms_rec.payment_term_type_code, l_term_defaults.payment_term_type_code);
13915             p_lease_terms_rec.ap_ar_term_id         := NVL (p_lease_terms_rec.ap_ar_term_id, l_term_defaults.ap_ar_term_id);
13916             p_lease_terms_rec.normalize             := NVL (p_lease_terms_rec.normalize, l_term_defaults.normalize);
13917             p_lease_terms_rec.vendor_id             := NVL (p_lease_terms_rec.vendor_id, l_term_defaults.vendor_id);
13918             p_lease_terms_rec.vendor_site_id        := NVL (p_lease_terms_rec.vendor_site_id, l_term_defaults.vendor_site_id);
13919             p_lease_terms_rec.customer_id           := NVL (p_lease_terms_rec.customer_id, l_term_defaults.customer_id);
13920             p_lease_terms_rec.customer_site_use_id  := NVL (p_lease_terms_rec.customer_site_use_id, l_term_defaults.customer_site_use_id);
13921             p_lease_terms_rec.cust_ship_site_id     := NVL (p_lease_terms_rec.cust_ship_site_id, l_term_defaults.cust_ship_site_id);
13922             p_lease_terms_rec.cust_trx_type_id      := NVL (p_lease_terms_rec.cust_trx_type_id, l_term_defaults.cust_trx_type_id);
13923             p_lease_terms_rec.tax_included          := NVL (p_lease_terms_rec.tax_included, l_term_defaults.tax_included);
13924             p_lease_terms_rec.location_id           := NVL (p_lease_terms_rec.location_id, l_term_defaults.location_id);
13925             p_lease_terms_rec.project_id            := NVL (p_lease_terms_rec.project_id, l_term_defaults.project_id);
13926             p_lease_terms_rec.task_id               := NVL (p_lease_terms_rec.task_id, l_term_defaults.task_id);
13927             p_lease_terms_rec.organization_id       := NVL (p_lease_terms_rec.organization_id, l_term_defaults.organization_id);
13928             p_lease_terms_rec.expenditure_type      := NVL (p_lease_terms_rec.expenditure_type, l_term_defaults.expenditure_type);
13929             p_lease_terms_rec.expenditure_item_date := NVL (p_lease_terms_rec.expenditure_item_date, l_term_defaults.expenditure_item_date);
13930             p_lease_terms_rec.set_of_books_id := NVL (p_lease_terms_rec.set_of_books_id, l_term_defaults.set_of_books_id);
13931 ----------------------dbms_output.put_line('In GET_TEMPLATE_DEFAULTS:After Default Assignment');
13932   EXCEPTION
13933    WHEN OTHERS THEN
13934      NULL;
13935      ----------------------dbms_output.put_line('In GET_TEMPLATE_DEFAULTS;EXCEPTION'||SQLERRM);
13936        pvt_debug(g_pkg_name||'GET_TEMPLATE_DEFAULTS:Assigning the default values:Exception:'||SQLERRM,3);
13937   END GET_TEMPLATE_DEFAULTS;
13938 
13939 
13940    PROCEDURE insert_payment_terms_row (
13941          p_lease_terms_rec               IN  OUT   NOCOPY     lease_terms_rec
13942        , p_lease_id                      IN             NUMBER
13943        , p_change_lease_id               IN             NUMBER
13944        , p_lease_context                 IN             VARCHAR2
13945        , x_return_status                     OUT NOCOPY VARCHAR2
13946        )
13947    IS
13948    x_rowid VARCHAR2(18);
13949    BEGIN
13950      ----------------------dbms_output.put_line('IN INSERT '); --Rupak
13951 
13952 
13953 
13954        pvt_debug(g_pkg_name||'INSERT_PAYMENT_TERMS_ROW:Calling PNT_PAYMENT_TERMS_PKG.INSERT_ROW',3);
13955       pnt_payment_terms_pkg.insert_row( x_rowid                         =>  x_rowid
13956                                       , x_payment_term_id               =>  p_lease_terms_rec.payment_term_id
13957                                       , x_payment_purpose_code          =>  p_lease_terms_rec.payment_purpose_code
13958                                       , x_payment_term_type_code        =>  p_lease_terms_rec.payment_term_type_code
13959                                       , x_frequency_code                =>  p_lease_terms_rec.frequency_code
13960                                       , x_lease_id                      =>  p_lease_id--p_lease_terms_rec.lease_id
13961                                       , x_lease_change_id               =>  p_change_lease_id--p_lease_terms_rec.lease_change_id
13962                                       , x_start_date                    =>  trunc(p_lease_terms_rec.start_date)
13963                                       , x_end_date                      =>  trunc(p_lease_terms_rec.end_date)
13964                                       , x_vendor_id                     =>  p_lease_terms_rec.vendor_id
13965                                       , x_vendor_site_id                =>  p_lease_terms_rec.vendor_site_id
13966                                       , x_customer_id                   =>  p_lease_terms_rec.customer_id
13967                                       , x_customer_site_use_id          =>  p_lease_terms_rec.customer_site_use_id
13968                                       , x_target_date                   =>  trunc(p_lease_terms_rec.target_date)
13969                                       , x_actual_amount                 =>  p_lease_terms_rec.actual_amount
13970                                       , x_estimated_amount              =>  p_lease_terms_rec.estimated_amount
13971                                       , x_set_of_books_id               =>  pn_mo_cache_utils.get_profile_value('PN_SET_OF_BOOKS_ID',g_org_id)--p_lease_terms_rec.set_of_books_id
13972                                       , x_currency_code                 =>  p_lease_terms_rec.currency_code
13973                                       , x_rate                          =>  p_lease_terms_rec.rate
13974                                       , x_normalize                     =>  p_lease_terms_rec.normalize
13975                                       , x_location_id                   =>  p_lease_terms_rec.location_id
13976                                       , x_schedule_day                  =>  p_lease_terms_rec.schedule_day
13977                                       , x_cust_ship_site_id             =>  p_lease_terms_rec.cust_ship_site_id
13978                                       , x_ap_ar_term_id                 =>  p_lease_terms_rec.ap_ar_term_id
13979                                       , x_cust_trx_type_id              =>  p_lease_terms_rec.cust_trx_type_id
13980                                       , x_project_id                    =>  p_lease_terms_rec.project_id
13981                                       , x_task_id                       =>  p_lease_terms_rec.task_id
13982                                       , x_organization_id               =>  p_lease_terms_rec.organization_id
13983                                       , x_expenditure_type              =>  p_lease_terms_rec.expenditure_type
13984                                       , x_expenditure_item_date         =>  trunc(p_lease_terms_rec.expenditure_item_date)
13985                                       , x_tax_group_id                  =>  p_lease_terms_rec.tax_group_id
13986                                       , x_tax_code_id                   =>  p_lease_terms_rec.tax_code_id
13987                                       , x_tax_classification_code       =>  p_lease_terms_rec.tax_classification_code
13988                                       , x_tax_included                  =>  p_lease_terms_rec.tax_included
13989                                       , x_distribution_set_id           =>  p_lease_terms_rec.distribution_set_id
13990                                       , x_inv_rule_id                   =>  p_lease_terms_rec.inv_rule_id
13991                                       , x_account_rule_id               =>  p_lease_terms_rec.account_rule_id
13992                                       , x_salesrep_id                   =>  p_lease_terms_rec.salesrep_id
13993                                       , x_approved_by                   =>  p_lease_terms_rec.approved_by
13994                                       , x_status                        =>  p_lease_terms_rec.status
13995                                       , x_index_period_id               =>  p_lease_terms_rec.index_period_id
13996                                       , x_index_term_indicator          =>  p_lease_terms_rec.index_term_indicator
13997                                       , x_po_header_id                  =>  p_lease_terms_rec.po_header_id
13998                                       , x_cust_po_number                =>  p_lease_terms_rec.cust_po_number
13999                                       , x_receipt_method_id             =>  p_lease_terms_rec.receipt_method_id
14000                                       , x_var_rent_inv_id               =>  p_lease_terms_rec.var_rent_inv_id
14001                                       , x_var_rent_type                 =>  p_lease_terms_rec.var_rent_type
14002                                       , x_period_billrec_id             =>  p_lease_terms_rec.period_billrec_id
14003                                       , x_rec_agr_line_id               =>  p_lease_terms_rec.rec_agr_line_id
14004                                       , x_amount_type                   =>  p_lease_terms_rec.amount_type
14005                                       , x_changed_flag                  =>  p_lease_terms_rec.changed_flag
14006                                       , x_term_template_id              =>  p_lease_terms_rec.term_template_id
14007                                       , x_attribute_category            =>  p_lease_terms_rec.attribute_category
14008                                       , x_attribute1                    =>  p_lease_terms_rec.attribute1
14009                                       , x_attribute2                    =>  p_lease_terms_rec.attribute2
14010                                       , x_attribute3                    =>  p_lease_terms_rec.attribute3
14011                                       , x_attribute4                    =>  p_lease_terms_rec.attribute4
14012                                       , x_attribute5                    =>  p_lease_terms_rec.attribute5
14013                                       , x_attribute6                    =>  p_lease_terms_rec.attribute6
14014                                       , x_attribute7                    =>  p_lease_terms_rec.attribute7
14015                                       , x_attribute8                    =>  p_lease_terms_rec.attribute8
14016                                       , x_attribute9                    =>  p_lease_terms_rec.attribute9
14017                                       , x_attribute10                   =>  p_lease_terms_rec.attribute10
14018                                       , x_attribute11                   =>  p_lease_terms_rec.attribute11
14019                                       , x_attribute12                   =>  p_lease_terms_rec.attribute12
14020                                       , x_attribute13                   =>  p_lease_terms_rec.attribute13
14021                                       , x_attribute14                   =>  p_lease_terms_rec.attribute14
14022                                       , x_attribute15                   =>  p_lease_terms_rec.attribute15
14023                                       , x_project_attribute_category    =>  p_lease_terms_rec.project_attribute_category
14024                                       , x_project_attribute1            =>  p_lease_terms_rec.attribute1
14025                                       , x_project_attribute2            =>  p_lease_terms_rec.attribute2
14026                                       , x_project_attribute3            =>  p_lease_terms_rec.attribute3
14027                                       , x_project_attribute4            =>  p_lease_terms_rec.attribute4
14028                                       , x_project_attribute5            =>  p_lease_terms_rec.attribute5
14029                                       , x_project_attribute6            =>  p_lease_terms_rec.attribute6
14030                                       , x_project_attribute7            =>  p_lease_terms_rec.attribute7
14031                                       , x_project_attribute8            =>  p_lease_terms_rec.attribute8
14032                                       , x_project_attribute9            =>  p_lease_terms_rec.attribute9
14033                                       , x_project_attribute10           =>  p_lease_terms_rec.attribute10
14034                                       , x_project_attribute11           =>  p_lease_terms_rec.attribute11
14035                                       , x_project_attribute12           =>  p_lease_terms_rec.attribute12
14036                                       , x_project_attribute13           =>  p_lease_terms_rec.attribute13
14037                                       , x_project_attribute14           =>  p_lease_terms_rec.attribute14
14038                                       , x_project_attribute15           =>  p_lease_terms_rec.attribute15
14039                                       , x_creation_date                 =>  SYSDATE--p_lease_terms_rec.creation_date
14040                                       , x_created_by                    =>  fnd_global.user_id--p_lease_terms_rec.
14041                                       , x_last_update_date              =>  SYSDATE --p_lease_terms_rec.
14042                                       , x_last_updated_by               =>  fnd_global.user_id--p_lease_terms_rec.
14043                                       , x_last_update_login             =>  fnd_global.login_id--p_lease_terms_rec.
14044                                       , x_calling_form                  =>  NULL
14045                                       , x_org_id                        =>  g_org_id--p_lease_terms_rec.org_id--OOPS
14046                                       , x_lease_status                  =>  p_lease_terms_rec.lease_status
14047                                       , x_recoverable_flag              =>  p_lease_terms_rec.recoverable_flag
14048                                       , x_area_type_code                =>  p_lease_terms_rec.area_type_code
14049                                       , x_area                          =>  p_lease_terms_rec.area
14050                                       , x_grouping_rule_id              =>  p_lease_terms_rec.grouping_rule_id
14051                                       , x_term_altered_flag             =>  p_lease_terms_rec.term_altered_flag
14052                                       , x_source_code                   =>  p_lease_terms_rec.source_code
14053                                       , x_term_comments                 =>  p_lease_terms_rec.term_comments
14054                                       , x_norm_start_date               =>  p_lease_terms_rec.norm_start_date
14055                                       , x_parent_term_id                =>  p_lease_terms_rec.parent_term_id
14056                                       , x_index_norm_flag               =>  p_lease_terms_rec.index_norm_flag
14057                                       , x_include_in_var_rent           =>  p_lease_terms_rec.include_in_var_rent
14058                                       , x_recur_bb_calc_date            =>  p_lease_terms_rec.recur_bb_calc_date
14059                                       , x_opex_agr_id                   =>  p_lease_terms_rec.opex_agr_id
14060                                       , x_opex_recon_id                 =>  p_lease_terms_rec.opex_recon_id
14061                                       , x_opex_type                     =>  p_lease_terms_rec.opex_type
14062                                      );
14063                  pvt_debug(g_pkg_name||'INSERT_PAYMENT_TERMS_ROW:Calling PNT_PAYMENT_TERMS_PKG.INSERT_ROW Succesful',3);
14064 
14065           x_return_status := fnd_api.g_ret_sts_success;
14066      EXCEPTION
14067       WHEN OTHERS THEN
14068           ----------------------dbms_output.put_line('Exception:In Insert:'||SQLERRM);--Rupak
14069           pvt_debug(g_pkg_name||'INSERT_PAYMENT_TERMS_ROW:Exception:'||SQLERRM,3);
14070          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14071          fnd_message.set_token ('P_TEXT', 'pn_lease_pvt:create_payment' || SQLERRM);
14072          fnd_msg_pub.ADD;
14073          x_return_status := fnd_api.g_ret_sts_unexp_error;
14074 
14075     END insert_payment_terms_row;
14076 
14077   PROCEDURE update_payment_terms_row (
14078          p_lease_terms_rec               IN  OUT  NOCOPY      lease_terms_rec
14079        , p_lease_id                      IN             NUMBER
14080        , p_change_lease_id               IN             NUMBER
14081        , p_lease_context                 IN             VARCHAR2
14082        , x_return_status                     OUT NOCOPY VARCHAR2
14083        )
14084    IS
14085    BEGIN
14086         ----------------------dbms_output.put_line('IN UPDATE : p_lease_terms_rec.payment_term_id'||p_lease_terms_rec.payment_term_id);--Rupak
14087       x_return_status := fnd_api.g_ret_sts_success;
14088       pnt_payment_terms_pkg.update_row (x_payment_term_id            => p_lease_terms_rec.payment_term_id
14089                                       , x_payment_purpose_code       => p_lease_terms_rec.payment_purpose_code
14090                                       , x_payment_term_type_code     => p_lease_terms_rec.payment_term_type_code
14091                                       , x_frequency_code             => p_lease_terms_rec.frequency_code
14092                                       , x_lease_id                   => p_lease_terms_rec.lease_id
14093                                       , x_lease_change_id            => p_lease_terms_rec.lease_change_id
14094                                       , x_start_date                 => trunc(p_lease_terms_rec.start_date)
14095                                       , x_end_date                   => trunc(p_lease_terms_rec.end_date)
14096                                       , x_vendor_id                  => p_lease_terms_rec.vendor_id
14097                                       , x_vendor_site_id             => p_lease_terms_rec.vendor_site_id
14098                                       , x_customer_id                => p_lease_terms_rec.customer_id
14099                                       , x_customer_site_use_id       => p_lease_terms_rec.customer_site_use_id
14100                                       , x_target_date                => trunc(p_lease_terms_rec.target_date)
14101                                       , x_actual_amount              => p_lease_terms_rec.actual_amount
14102                                       , x_estimated_amount           => p_lease_terms_rec.estimated_amount
14103                                       , x_set_of_books_id            => p_lease_terms_rec.set_of_books_id
14104                                       , x_currency_code              => p_lease_terms_rec.currency_code
14105                                       , x_rate                       => p_lease_terms_rec.rate
14106                                       , x_normalize                  => p_lease_terms_rec.normalize
14107                                       , x_location_id                => p_lease_terms_rec.location_id
14108                                       , x_schedule_day               => p_lease_terms_rec.schedule_day
14109                                       , x_cust_ship_site_id          => p_lease_terms_rec.cust_ship_site_id
14110                                       , x_ap_ar_term_id              => p_lease_terms_rec.ap_ar_term_id
14111                                       , x_cust_trx_type_id           => p_lease_terms_rec.cust_trx_type_id
14112                                       , x_project_id                 => p_lease_terms_rec.project_id
14113                                       , x_task_id                    => p_lease_terms_rec.task_id
14114                                       , x_organization_id            => p_lease_terms_rec.organization_id
14115                                       , x_expenditure_type           => p_lease_terms_rec.expenditure_type
14116                                       , x_expenditure_item_date      => trunc(p_lease_terms_rec.expenditure_item_date)
14117                                       , x_tax_group_id               => p_lease_terms_rec.tax_group_id
14118                                       , x_tax_code_id                => p_lease_terms_rec.tax_code_id
14119                                       , x_tax_classification_code    => p_lease_terms_rec.tax_classification_code
14120                                       , x_tax_included               => p_lease_terms_rec.tax_included
14121                                       , x_distribution_set_id        => p_lease_terms_rec.distribution_set_id
14122                                       , x_inv_rule_id                => p_lease_terms_rec.inv_rule_id
14123                                       , x_account_rule_id            => p_lease_terms_rec.account_rule_id
14124                                       , x_salesrep_id                => p_lease_terms_rec.salesrep_id
14125                                       , x_approved_by                => p_lease_terms_rec.approved_by
14126                                       , x_status                     => p_lease_terms_rec.status
14127                                       , x_index_period_id            => p_lease_terms_rec.index_period_id
14128                                       , x_index_term_indicator       => p_lease_terms_rec.index_term_indicator
14129                                       , x_po_header_id               => p_lease_terms_rec.po_header_id
14130                                       , x_cust_po_number             => p_lease_terms_rec.cust_po_number
14131                                       , x_receipt_method_id          => p_lease_terms_rec.receipt_method_id
14132                                       , x_var_rent_inv_id            => p_lease_terms_rec.var_rent_inv_id
14133                                       , x_var_rent_type              => p_lease_terms_rec.var_rent_type
14134                                       , x_changed_flag               => p_lease_terms_rec.changed_flag
14135                                       , x_attribute_category         => p_lease_terms_rec.attribute_category
14136                                       , x_attribute1                 => p_lease_terms_rec.attribute1
14137                                       , x_attribute2                 => p_lease_terms_rec.attribute2
14138                                       , x_attribute3                 => p_lease_terms_rec.attribute3
14139                                       , x_attribute4                 => p_lease_terms_rec.attribute4
14140                                       , x_attribute5                 => p_lease_terms_rec.attribute5
14141                                       , x_attribute6                 => p_lease_terms_rec.attribute6
14142                                       , x_attribute7                 => p_lease_terms_rec.attribute7
14143                                       , x_attribute8                 => p_lease_terms_rec.attribute8
14144                                       , x_attribute9                 => p_lease_terms_rec.attribute9
14145                                       , x_attribute10                => p_lease_terms_rec.attribute10
14146                                       , x_attribute11                => p_lease_terms_rec.attribute11
14147                                       , x_attribute12                => p_lease_terms_rec.attribute12
14148                                       , x_attribute13                => p_lease_terms_rec.attribute13
14149                                       , x_attribute14                => p_lease_terms_rec.attribute14
14150                                       , x_attribute15                => p_lease_terms_rec.attribute15
14151                                       , x_project_attribute_category => p_lease_terms_rec.project_attribute_category
14152                                       , x_project_attribute1         => p_lease_terms_rec.project_attribute1
14153                                       , x_project_attribute2         => p_lease_terms_rec.project_attribute2
14154                                       , x_project_attribute3         => p_lease_terms_rec.project_attribute3
14155                                       , x_project_attribute4         => p_lease_terms_rec.project_attribute4
14156                                       , x_project_attribute5         => p_lease_terms_rec.project_attribute5
14157                                       , x_project_attribute6         => p_lease_terms_rec.project_attribute6
14158                                       , x_project_attribute7         => p_lease_terms_rec.project_attribute7
14159                                       , x_project_attribute8         => p_lease_terms_rec.project_attribute8
14160                                       , x_project_attribute9         => p_lease_terms_rec.project_attribute9
14161                                       , x_project_attribute10        => p_lease_terms_rec.project_attribute10
14162                                       , x_project_attribute11        => p_lease_terms_rec.project_attribute11
14163                                       , x_project_attribute12        => p_lease_terms_rec.project_attribute12
14164                                       , x_project_attribute13        => p_lease_terms_rec.project_attribute13
14165                                       , x_project_attribute14        => p_lease_terms_rec.project_attribute14
14166                                       , x_project_attribute15        => p_lease_terms_rec.project_attribute15
14167                                       , x_last_update_date           => SYSDATE
14168                                       , x_last_updated_by            => p_lease_terms_rec.last_updated_by
14169                                       , x_last_update_login          => p_lease_terms_rec.last_update_login
14170                                       , x_recoverable_flag           => p_lease_terms_rec.recoverable_flag
14171                                       , x_area_type_code             => p_lease_terms_rec.area_type_code
14172                                       , x_area                       => p_lease_terms_rec.area
14173                                       , x_grouping_rule_id           => p_lease_terms_rec.grouping_rule_id
14174                                       , x_term_altered_flag          => p_lease_terms_rec.term_altered_flag
14175                                       , x_source_code                => p_lease_terms_rec.source_code
14176                                       , x_term_comments              => p_lease_terms_rec.term_comments
14177                                       , x_include_in_var_rent        => p_lease_terms_rec.include_in_var_rent
14178                                       , x_opex_agr_id                => p_lease_terms_rec.opex_agr_id
14179                                       , x_opex_recon_id              => p_lease_terms_rec.opex_recon_id
14180                                       , x_opex_type                  => p_lease_terms_rec.opex_type
14181                                       , x_term_template_id           => p_lease_terms_rec.term_template_id
14182                                    );
14183 
14184         ----------------------dbms_output.put_line('After Update Row:Payment');--Rupak
14185         pvt_debug(g_pkg_name||'UPDATE_PAYMENT_TERMS_ROW:PNT_PAYMENT_TERMS_PKG.UPDATE_ROW Sucessful',3);
14186     EXCEPTION
14187       WHEN OTHERS THEN
14188          fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14189          fnd_message.set_token ('P_TEXT', 'pn_lease_pvt.update_payment' || SQLERRM);
14190          fnd_msg_pub.ADD;
14191          x_return_status := fnd_api.g_ret_sts_unexp_error;
14192          pvt_debug(g_pkg_name||'UPDATE_PAYMENT_TERMS_ROW:PNT_PAYMENT_TERMS_PKG.UPDATE_ROW:Exception'||SQLERRM,3);
14193   END update_payment_terms_row;
14194 
14195     PROCEDURE validate_payment_terms_tbl
14196       ( p_api_name_full              IN             VARCHAR2
14197       , p_payment_terms_tbl          IN OUT NOCOPY  lease_terms_tbl
14198       , p_lease_id                   IN             NUMBER
14199       , p_lease_class_code           IN             VARCHAR2
14200       , p_lease_commencement_date    IN             DATE
14201       , p_lease_termination_date     IN             DATE
14202       , p_termtemp_type              IN             VARCHAR2
14203       , p_parent_lease_id            IN             NUMBER
14204       , p_lease_change_id            IN             NUMBER
14205       , p_lease_status               IN             VARCHAR2
14206       , p_lease_context              IN             VARCHAR2
14207       , p_operation                  IN             VARCHAR2
14208       , x_return_status                 OUT NOCOPY  VARCHAR2
14209       )
14210    IS
14211    l_terms_record_cnt NUMBER := PN_LEASE_UTILS.G_PN_MISS_NUM;
14212    l_lease_terms_rec   lease_terms_rec;
14213    l_return_status        VARCHAR2(30) := NULL;
14214    l_default_flag VARCHAR2(1);
14215    l_error_flag   VARCHAR2(1);
14216 
14217    l_err_payment_count NUMBER :=0;
14218 
14219       l_api_name                   CONSTANT VARCHAR2 (30)       := p_operation;
14220       l_api_name_full              CONSTANT VARCHAR2 (61)       := g_pkg_name|| '.'|| l_api_name;
14221 
14222       l_exp_rev  VARCHAR2(240);
14223       l_lia_rec  VARCHAR2(240);
14224       l_accrued  VARCHAR2(240);
14225 
14226       j NUMBER:=0;
14227       k NUMBER:=0;
14228       m NUMBER:=0;
14229 
14230       l_expense_account_id      NUMBER:= NULL;
14231       l_receivable_account_id   NUMBER:= NULL;
14232       l_accrual_account_id      NUMBER:= NULL;
14233 
14234       l_terms_exp_rev_cnt      NUMBER:= NULL;
14235       l_terms_accrual_cnt      NUMBER:= NULL;
14236       l_terms_liab_rcvl_cnt    NUMBER:= NULL;
14237 
14238       l_tcc_status       VARCHAR2(30);
14239 
14240       x_table terms_exp_rev_accounts_tbl;
14241 
14242       x_distribution_id NUMBER;
14243       x_rowid           VARCHAR2(18);
14244 
14245 
14246       l_max_rownum     NUMBER;
14247       l_record_count   NUMBER;
14248       l_count          NUMBER := 0;
14249 
14250         CURSOR cur_dist_details(l_term_id NUMBER,l_acc_code VARCHAR2)
14251         IS
14252         SELECT rowid row_id,rownum row_num,pda.*
14253         FROM   pn_distributions_all pda
14254         WHERE  pda.payment_term_id = l_term_id
14255         AND    pda.account_class   = l_acc_code
14256         AND    pda.org_id          = g_org_id
14257         AND    rownum = 1;
14258 
14259         l_record_count_exp_rev    NUMBER := 0;
14260         l_record_count_liab_rcvl  NUMBER := 0;
14261         l_record_count_accrual    NUMBER := 0;
14262 
14263         l_acc_code VARCHAR2(100);
14264 
14265       l_payment_term_type_code      pn_payment_terms_all.payment_term_type_code %TYPE     := NULL;
14266       l_p_ar_term_id                pn_payment_terms_all.ap_ar_term_id%TYPE               := NULL;
14267       l_cust_trx_type_id            pn_payment_terms_all.cust_trx_type_id %TYPE           := NULL;
14268       l_payment_purpose_code        pn_payment_terms_all.payment_purpose_code%TYPE        := NULL;
14269       l_schedule_day                pn_payment_terms_all.schedule_day%TYPE                := NULL;
14270       l_currency_code               pn_payment_terms_all.currency_code%TYPE               := NULL;
14271       l_vendor_id                   pn_payment_terms_all.vendor_id%TYPE                   := NULL;
14272       l_vendor_site_id              pn_payment_terms_all.vendor_site_id%TYPE              := NULL;
14273       l_customer_id                 NUMBER                                                := NULL;
14274       l_customer_site_use_id        pn_payment_terms_all.customer_site_use_id%TYPE        := NULL;
14275 
14276       l_count_template  NUMBER := NULL;
14277       l_acc_exist_count NUMBER := NULL;
14278       l_lia_exist_count NUMBER := NULL;
14279 
14280       l_project_info VARCHAR2(1):='N';
14281       l_check VARCHAR2(1) := NULL;
14282       l_check_date DATE;
14283 
14284       l_term_project_id                pn_payment_terms_all.project_id%TYPE            := NULL;
14285       l_term_task_id                   pn_payment_terms_all.task_id%TYPE               := NULL;
14286       l_term_expenditure_type          pn_payment_terms_all.expenditure_type%TYPE      := NULL;
14287       l_term_expenditure_item_date     pn_payment_terms_all.expenditure_item_date%TYPE := NULL;
14288       l_term_organization_id           pn_payment_terms_all.organization_id%TYPE       := NULL;
14289 
14290 	  CURSOR exp_rev_account_cur(l_term_template_id NUMBER,l_account_class VARCHAR2)
14291       is
14292       select account_id,percentage
14293      from pn_distributions_all
14294      where term_template_id = l_term_template_id
14295      and account_class = l_account_class
14296      and payment_term_id is null; --Bug 16423198
14297 
14298      l_account_code   pn_distributions_all.account_class%TYPE; --Bug16423198
14299      l_act_count      number;--Bug16423198
14300 
14301 
14302    BEGIN
14303      --.put_line('In validate_payment_terms_tbl:1');--Rupak
14304     -- Standard start of API savepoint
14305         SAVEPOINT validate_payment_terms_tbl;
14306      -- Initialize the return status.
14307       x_return_status := FND_API.G_RET_STS_SUCCESS;--OOPS(RHIA)
14308 
14309       l_terms_record_cnt := p_payment_terms_tbl.COUNT;
14310   ----------------------dbms_output.put_line('In validate_payment_terms_tbl:2;l_terms_record_cnt'||l_terms_record_cnt);--Rupak
14311 
14312 
14313       FOR i in 1..l_terms_record_cnt
14314       LOOP
14315       BEGIN
14316                 l_payment_term_type_code := NULL;
14317                 l_p_ar_term_id           := NULL;
14318                 l_cust_trx_type_id       := NULL;
14319                 l_payment_purpose_code   := NULL;
14320                 l_schedule_day           := NULL;
14321                 l_currency_code          := NULL;
14322                 l_vendor_id              := NULL;
14323                 l_vendor_site_id         := NULL;
14324                 l_customer_id            := NULL;
14325                 l_customer_site_use_id   := NULL;
14326 
14327                 l_terms_exp_rev_cnt   :=0;
14328                 l_terms_liab_rcvl_cnt :=0;
14329                 l_terms_accrual_cnt   :=0;
14330 
14331                 l_exp_rev  :=NULL;
14332                 l_lia_rec  :=NULL;
14333                 l_accrued  :=NULL;
14334 
14335       -- --------------------dbms_output.put_line('Hi: I'||i);--Rupak
14336        l_default_flag := 'N';
14337        p_payment_terms_tbl(i).error_flag := 'N';
14338        k:=0; --100% for different Payment Records
14339 -----------------------------
14340 
14341    IF (  p_payment_terms_tbl(i).term_template_id IS NOT NULL OR p_payment_terms_tbl(i).term_template_name IS NOT NULL)
14342        THEN
14343          pn_lease_utils.get_term_template_id (p_parameter_name              => l_param_lease_template
14344                                             , p_termtemp_name               => p_payment_terms_tbl(i).term_template_name
14345                                             , p_operation                   => p_operation
14346                                             , p_termtemp_type               => p_termtemp_type
14347                                             , p_org_id                      => g_org_id
14348                                             , x_return_status               => x_return_status
14349                                             , x_termtemp_id                 => p_payment_terms_tbl(i).term_template_id
14350                                             );
14351 
14352          ----------------------dbms_output.put_line ('GET_TERM_TEMPLATE_ID: '||p_lease_rec.term_template_id);--Rupak
14353          pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Deriving Template ID:'||p_payment_terms_tbl(i).term_template_id,3);
14354          ------------------------dbms_output.put_line('x_return_status: '|| x_return_status);
14355          IF (x_return_status = fnd_api.g_ret_sts_error)
14356          THEN
14357             --l_error_flag:='Y';
14358             fnd_message.set_name ('PN', 'PN_INVALID_TERM_TEMPLATE');
14359             fnd_message.set_token ('TERM_TEMPLATE_ID', get_miss_num_decode(p_payment_terms_tbl(i).term_template_id));
14360             fnd_message.set_token ('TERM_TEMPLATE',  get_miss_char_decode(p_payment_terms_tbl(i).term_template_name));
14361             fnd_msg_pub.ADD;
14362             RAISE fnd_api.g_exc_error;
14363          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14364          THEN
14365             --l_error_flag:='Y';
14366             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14367             fnd_message.set_token ('COLUMN', SUBSTR(l_param_lease_template,3));
14368             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14369             RAISE fnd_api.g_exc_unexpected_error;
14370          END IF;
14371 
14372          IF x_return_status = fnd_api.g_ret_sts_success
14373          THEN
14374             IF pn_r12_util_pkg.is_r12
14375             THEN
14376 
14377                l_tcc_status := pn_r12_util_pkg.check_tax_upgrade (p_payment_terms_tbl(i).term_template_id);
14378                IF l_tcc_status = 'PN_NO_TCC_FOUND' THEN
14379                   fnd_message.set_name('PN','PN_NO_TCC_FOUND');
14380                   fnd_message.set_token ('API_NAME', l_api_name_full);
14381                   fnd_message.set_token ('R12_FLAG', p_payment_terms_tbl(i).term_template_id);
14382                   fnd_msg_pub.ADD;
14383 
14384                   l_error_flag:='Y';
14385                   RAISE fnd_api.g_exc_error;
14386                ELSIF l_tcc_status = 'PN_UPG_TCC' THEN
14387                   fnd_message.set_name('PN','PN_UPG_TCC_FOUND');
14388                   fnd_message.set_token ('API_NAME', l_api_name_full);
14389                   fnd_message.set_token ('R12_FLAG', p_payment_terms_tbl(i).term_template_id);
14390                   fnd_msg_pub.ADD;
14391                END IF;
14392 
14393             END IF;
14394 
14395          END IF;
14396 
14397       END IF;
14398      ------dbms_output.put_line('TermTemplate:HELLO:'||p_payment_terms_tbl(i).term_template_id);
14399       IF p_payment_terms_tbl(i).term_template_id IS NOT NULL THEN
14400        IF(trim(p_operation) = ('CREATE_TERMS')) THEN
14401          BEGIN
14402           ------dbms_output.put_line('TermTemplate:HELLO:2'||p_operation);
14403            SELECT   payment_term_type_code
14404                   , ap_ar_term_id
14405                   , cust_trx_type_id
14406                   , payment_purpose_code
14407                   , schedule_day
14408                   , currency_code
14409                   , vendor_id
14410                   , vendor_site_id
14411                   , customer_id
14412                   , customer_site_use_id
14413            INTO l_payment_term_type_code
14414                 ,l_p_ar_term_id
14415                 ,l_cust_trx_type_id
14416                 ,l_payment_purpose_code
14417                 ,l_schedule_day
14418                 ,l_currency_code
14419                 ,l_vendor_id
14420                 ,l_vendor_site_id
14421                 ,l_customer_id
14422                 ,l_customer_site_use_id
14423            FROM  pn_term_templates_all
14424            WHERE term_template_id = p_payment_terms_tbl(i).term_template_id;
14425 
14426          EXCEPTION
14427            WHEN OTHERS THEN
14428             p_payment_terms_tbl(i).error_flag := 'Y';
14429             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14430             fnd_message.set_token ('COLUMN', 'INVALID TEMPLATE ID');
14431             fnd_msg_pub.ADD;
14432             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14433             RAISE fnd_api.g_exc_unexpected_error;
14434          END;
14435         ELSE
14436           ------dbms_output.put_line('TermTemplate:HELLO:3'||p_operation);
14437             SELECT COUNT(1)
14438             INTO   l_count_template
14439             FROM   pn_payment_terms_all
14440             WHERE  payment_term_id = p_payment_terms_tbl(i).payment_term_id
14441             AND    term_template_id = p_payment_terms_tbl(i).term_template_id
14442             AND    org_id = g_org_id;
14443          IF(l_count_template=1) THEN
14444              pvt_debug(g_pkg_name||'VALIDATE_TERMS_TBL:Template Passed is same as the Created Template',3);
14445          ELSIF(l_count_template=0) THEN
14446              fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
14447              fnd_message.set_token('ERR_MSG', 'Template Name/ID is non-updatable in Update Mode');
14448              fnd_msg_pub.ADD;
14449              RAISE fnd_api.g_exc_error;
14450          END IF;
14451 
14452         END IF;
14453        END IF;
14454 
14455 ------------------------------
14456      IF   trim(p_operation) = trim('CREATE_TERMS') THEN--AND  p_payment_terms_tbl(i).term_template_name IS NULL THEN
14457         ----------------------dbms_output.put_line('Hello:1');
14458         IF (p_payment_terms_tbl(i).payment_term_type_code IS NULL AND p_payment_terms_tbl(i).payment_term_type IS NULL) THEN
14459           IF (l_payment_term_type_code IS NULL) THEN
14460             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14461             fnd_message.set_token ('API_NAME', p_api_name_full);
14462             fnd_message.set_token ('NULL_PARAM', 'PAYMENT_TERM_TYPE');
14463             fnd_msg_pub.ADD;
14464             RAISE fnd_api.g_exc_error;
14465           ELSE
14466             p_payment_terms_tbl(i).payment_term_type_code := l_payment_term_type_code;
14467           END IF;
14468         END IF;
14469 
14470         IF (p_payment_terms_tbl(i).ap_ar_term_id IS NULL AND p_termtemp_type <> 'PAYMENT') THEN
14471            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'PAYMENT_TERM');
14472           IF (l_p_ar_term_id IS NULL) THEN
14473             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14474             fnd_message.set_token ('API_NAME', p_api_name_full);
14475             fnd_message.set_token ('NULL_PARAM', 'PAYMENT_TERM');
14476             fnd_msg_pub.ADD;
14477             RAISE fnd_api.g_exc_error;
14478           ELSE
14479             p_payment_terms_tbl(i).ap_ar_term_id:= l_p_ar_term_id;
14480           END IF;
14481         END IF;
14482 
14483         IF (p_payment_terms_tbl(i).cust_trx_type_id IS NULL AND p_termtemp_type <> 'PAYMENT') THEN
14484            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'TRANSACTION_TYPE');
14485           IF(l_cust_trx_type_id IS NULL) THEN
14486             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14487             fnd_message.set_token ('API_NAME', p_api_name_full);
14488             fnd_message.set_token ('NULL_PARAM', 'TRANSACTION_TYPE');
14489             fnd_msg_pub.ADD;
14490             RAISE fnd_api.g_exc_error;
14491           ELSE
14492             p_payment_terms_tbl(i).cust_trx_type_id := l_cust_trx_type_id;
14493           END IF;
14494         END IF;
14495 
14496         IF (p_payment_terms_tbl(i).start_date IS NULL) THEN
14497            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'START_DATE');
14498             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14499             fnd_message.set_token ('API_NAME', p_api_name_full);
14500             fnd_message.set_token ('NULL_PARAM', 'START_DATE');
14501             fnd_msg_pub.ADD;
14502             RAISE fnd_api.g_exc_error;
14503         END IF;
14504 
14505         IF (p_payment_terms_tbl(i).end_date IS NULL)
14506         THEN
14507            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'END_DATE');
14508             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14509             fnd_message.set_token ('API_NAME', p_api_name_full);
14510             fnd_message.set_token ('NULL_PARAM', 'END_DATE');
14511             fnd_msg_pub.ADD;
14512             RAISE fnd_api.g_exc_error;
14513         END IF;
14514 
14515         IF (p_payment_terms_tbl(i).payment_purpose_code IS NULL AND p_payment_terms_tbl(i).payment_purpose IS NULL) THEN
14516           --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'PAYMENT_PURPOSE');
14517          IF(l_payment_purpose_code IS NULL) THEN
14518             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14519             fnd_message.set_token ('API_NAME', p_api_name_full);
14520             fnd_message.set_token ('NULL_PARAM', 'PAYMENT_PURPOSE');
14521             fnd_msg_pub.ADD;
14522             RAISE fnd_api.g_exc_error;
14523          ELSE
14524            p_payment_terms_tbl(i).payment_purpose_code := l_payment_purpose_code;
14525          END IF;
14526         END IF;
14527    -----------------------dbms_output.put_line('Hello:3');--Rupak
14528         IF (p_payment_terms_tbl(i).frequency_code IS NULL AND p_payment_terms_tbl(i).frequency IS NULL) THEN
14529           --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'PAYMENT_FREQUENCY');
14530             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14531             fnd_message.set_token ('API_NAME', p_api_name_full);
14532             fnd_message.set_token ('NULL_PARAM', 'PAYMENT_FREQUENCY');
14533             fnd_msg_pub.ADD;
14534             RAISE fnd_api.g_exc_error;
14535         END IF;
14536   ----------------------dbms_output.put_line('Hello:4');--Rupak
14537         IF (p_payment_terms_tbl(i).schedule_day IS NULL) THEN
14538           -- PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'SCHEDULE_DAY');
14539           IF(l_schedule_day IS NULL) THEN
14540             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14541             fnd_message.set_token ('API_NAME', p_api_name_full);
14542             fnd_message.set_token ('NULL_PARAM', 'SCHEDULE_DAY');
14543             fnd_msg_pub.ADD;
14544             RAISE fnd_api.g_exc_error;
14545           ELSE
14546             p_payment_terms_tbl(i).schedule_day := l_schedule_day;
14547           END IF;
14548         END IF;
14549  ----------------------dbms_output.put_line('Hello:5');--Rupak
14550         IF (p_payment_terms_tbl(i).currency_code IS NULL) THEN
14551           IF(l_currency_code IS NULL) THEN
14552            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'CURRENCY_CODE');
14553             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14554             fnd_message.set_token ('API_NAME', p_api_name_full);
14555             fnd_message.set_token ('NULL_PARAM', 'CURRENCY_CODE');
14556             fnd_msg_pub.ADD;
14557             RAISE fnd_api.g_exc_error;
14558           ELSE
14559             p_payment_terms_tbl(i).currency_code := l_currency_code;
14560           END IF;
14561         END IF;
14562  ----------------------dbms_output.put_line('Hello:6');--Rupak
14563         IF (p_payment_terms_tbl(i).vendor_name IS NULL AND p_payment_terms_tbl(i).vendor_id IS NULL AND p_termtemp_type = 'PAYMENT') THEN
14564           IF(l_vendor_id IS NULL) THEN
14565            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'SUPPLIER_NAME');
14566             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14567             fnd_message.set_token ('API_NAME', p_api_name_full);
14568             fnd_message.set_token ('NULL_PARAM', 'SUPPLIER_NAME');
14569             fnd_msg_pub.ADD;
14570             RAISE fnd_api.g_exc_error;
14571           ELSE
14572             p_payment_terms_tbl(i).vendor_id := l_vendor_id;
14573           END IF;
14574         END IF;
14575  ----------------------dbms_output.put_line('Hello:7');--Rupak
14576         IF (p_payment_terms_tbl(i).vendor_site_code IS NULL AND p_payment_terms_tbl(i).vendor_site_id IS NULL AND p_termtemp_type = 'PAYMENT') THEN
14577            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'SUPPLIER_SITE');
14578           IF(l_vendor_site_id IS NULL) THEN
14579             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14580             fnd_message.set_token ('API_NAME', p_api_name_full);
14581             fnd_message.set_token ('NULL_PARAM', 'SUPPLIER_SITE');
14582             fnd_msg_pub.ADD;
14583             RAISE fnd_api.g_exc_error;
14584           ELSE
14585             p_payment_terms_tbl(i).vendor_site_id := l_vendor_site_id;
14586           END IF;
14587         END IF;
14588 
14589       --Customer
14590         IF (p_payment_terms_tbl(i).customer_name IS NULL AND p_payment_terms_tbl(i).customer_id IS NULL AND p_termtemp_type <> 'PAYMENT') THEN
14591            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'CUSTOMER_NAME');
14592           IF( l_customer_id IS NULL) THEN
14593             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14594             fnd_message.set_token ('API_NAME', p_api_name_full);
14595             fnd_message.set_token ('NULL_PARAM', 'CUSTOMER_NAME');
14596             fnd_msg_pub.ADD;
14597             RAISE fnd_api.g_exc_error;
14598           ELSE
14599            p_payment_terms_tbl(i).customer_id := l_customer_id;
14600           END IF;
14601         END IF;
14602    ----------------------dbms_output.put_line('Hello:8');--Rupak
14603         IF (p_payment_terms_tbl(i).customer_site_code IS NULL AND p_payment_terms_tbl(i).customer_site_use_id IS NULL AND p_termtemp_type <> 'PAYMENT') THEN
14604            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'CUSTOMER_SITE');
14605           IF( l_customer_site_use_id IS NULL) THEN
14606             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14607             fnd_message.set_token ('API_NAME', p_api_name_full);
14608             fnd_message.set_token ('NULL_PARAM', 'CUSTOMER_SITE');
14609             fnd_msg_pub.ADD;
14610             RAISE fnd_api.g_exc_error;
14611           ELSE
14612             p_payment_terms_tbl(i).customer_site_use_id := l_customer_site_use_id;
14613           END IF;
14614         END IF;
14615 
14616         IF (p_payment_terms_tbl(i).actual_amount IS NULL AND p_payment_terms_tbl(i).estimated_amount IS NULL)
14617         THEN
14618            --PN_LEASE_UTILS.add_null_parameter_msg (p_token_apiname => p_api_name_full, p_token_nullparam => 'AMOUNT');
14619             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
14620             fnd_message.set_token ('API_NAME', p_api_name_full);
14621             fnd_message.set_token ('NULL_PARAM', 'AMOUNT');
14622             fnd_msg_pub.ADD;
14623             RAISE fnd_api.g_exc_error;
14624         END IF;
14625         ----------------------dbms_output.put_line('Hello:9');--Rupak
14626       END IF;
14627 
14628       ---------------------------------------------
14629  -- --------------------dbms_output.put_line('Hello:9.2');--Rupak
14630 --  Validate the Payment Term Type
14631       IF (   (   p_payment_terms_tbl (i).payment_term_type_code IS NOT NULL)
14632                  --AND p_payment_terms_tbl (i).payment_term_type_code <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14633              OR (   p_payment_terms_tbl (i).payment_term_type IS NOT NULL)
14634                  --AND p_payment_terms_tbl (i).payment_term_type <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14635             )
14636          THEN
14637           -- --------------------dbms_output.put_line('Hello:10');--Rupak
14638                  PN_LEASE_UTILS.GET_LOOKUP_CODE( p_parameter_name   =>   l_param_payment_type
14639                                                , p_operation        =>   p_operation
14640                                                , p_lookup_meaning   =>   p_payment_terms_tbl(i).payment_term_type
14641                                                , p_lookup_type      =>   l_pn_payment_term_type --'PN_PAYMENT_TERM_TYPE'
14642                                                , x_lookup_type_code =>   p_payment_terms_tbl(i).payment_term_type_code
14643                                                , x_return_status    =>   x_return_status
14644                                               );
14645             pvt_debug(g_pkg_name||'VALIDATE_PAYMENT_TERMS_TBL:PAYMENT_TYPE CODE:'||p_payment_terms_tbl(i).payment_term_type_code,3);
14646          IF (x_return_status = fnd_api.g_ret_sts_error)
14647          THEN
14648             p_payment_terms_tbl(i).error_flag := 'Y';
14649             fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
14650             fnd_message.set_token ('LOOKUP_TYPE', l_pn_payment_term_type);
14651             fnd_message.set_token ('LOOKUP_MEANING',get_miss_char_decode(p_payment_terms_tbl(i).payment_term_type));
14652             fnd_message.set_token ('LOOKUP_CODE',get_miss_char_decode(p_payment_terms_tbl(i).payment_term_type_code));
14653             fnd_msg_pub.ADD;
14654             RAISE FND_API.G_EXC_ERROR;
14655          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14656          THEN
14657             p_payment_terms_tbl(i).error_flag := 'Y';
14658             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14659             fnd_message.set_token ('COLUMN', SUBSTR(l_param_payment_type,3));
14660             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14661             fnd_msg_pub.ADD;
14662             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14663          END IF;
14664       END IF;
14665    --.put_line('In validate_payment_terms_tbl:3');--Rupak
14666 --  Validate the Payment Purpose
14667       IF (   (   p_payment_terms_tbl (i).payment_purpose_code IS NOT NULL)
14668                  --AND p_payment_terms_tbl (i).payment_purpose_code <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14669              OR (   p_payment_terms_tbl (i).payment_purpose IS NOT NULL)
14670                  --AND p_payment_terms_tbl (i).payment_purpose <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14671             )
14672          THEN
14673             ----------------------dbms_output.put_line('Hello:12');--Rupak
14674                  PN_LEASE_UTILS.GET_LOOKUP_CODE( p_parameter_name   =>   l_param_payment_purpose
14675                                                , p_operation        =>   p_operation
14676                                                , p_lookup_meaning   =>   p_payment_terms_tbl(i).payment_purpose
14677                                                , p_lookup_type      =>   l_pn_payment_purpose_type --'PN_PAYMENT_PURPOSE_TYPE'
14678                                                , x_lookup_type_code =>   p_payment_terms_tbl(i).payment_purpose_code
14679                                                , x_return_status    =>   x_return_status
14680                                               );
14681              pvt_debug(g_pkg_name||'VALIDATE_PAYMENT_TERMS_TBL:PAYMENT_PURPOSE CODE:'||p_payment_terms_tbl(i).payment_purpose_code,3);
14682 
14683          IF (x_return_status = fnd_api.g_ret_sts_error)
14684          THEN
14685             p_payment_terms_tbl(i).error_flag := 'Y';
14686             fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
14687             fnd_message.set_token ('LOOKUP_TYPE', l_pn_payment_purpose_type);
14688             fnd_message.set_token ('LOOKUP_MEANING',get_miss_char_decode(p_payment_terms_tbl(i).payment_purpose));
14689             fnd_message.set_token ('LOOKUP_CODE',get_miss_char_decode(p_payment_terms_tbl(i).payment_purpose_code));
14690             fnd_msg_pub.ADD;
14691             RAISE FND_API.G_EXC_ERROR;
14692          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14693          THEN
14694             p_payment_terms_tbl(i).error_flag := 'Y';
14695             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14696             fnd_message.set_token ('COLUMN', SUBSTR(l_param_payment_purpose,3));
14697             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14698             fnd_msg_pub.ADD;
14699             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14700          END IF;
14701       END IF;
14702    ----------------------dbms_output.put_line('In validate_payment_terms_tbl:4');--Rupak
14703       --  Validate the Payment Frequency
14704       IF (   (   p_payment_terms_tbl (i).frequency_code IS NOT NULL)
14705                  --AND p_payment_terms_tbl (i).frequency_code <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14706              OR (   p_payment_terms_tbl (i).frequency IS NOT NULL)
14707                  --AND p_payment_terms_tbl (i).frequency <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14708             )
14709          THEN
14710           ----------------------dbms_output.put_line('Hello:13');--Rupak
14711                  PN_LEASE_UTILS.GET_LOOKUP_CODE( p_parameter_name   =>   l_param_payment_frequency
14712                                                , p_operation        =>   p_operation
14713                                                , p_lookup_meaning   =>   p_payment_terms_tbl(i).frequency
14714                                                , p_lookup_type      =>   l_pn_payment_frequency_type
14715                                                , x_lookup_type_code =>   p_payment_terms_tbl(i).frequency_code
14716                                                , x_return_status    =>   x_return_status
14717                                               );
14718             pvt_debug(g_pkg_name||'VALIDATE_PAYMENT_TERMS_TBL:PAYMENT_FREQUENCY CODE:'||p_payment_terms_tbl(i).frequency_code,3);
14719          IF (x_return_status = fnd_api.g_ret_sts_error)
14720          THEN
14721             p_payment_terms_tbl(i).error_flag := 'Y';
14722             fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
14723             fnd_message.set_token ('LOOKUP_TYPE', l_pn_payment_frequency_type);
14724             fnd_message.set_token ('LOOKUP_MEANING',get_miss_char_decode(p_payment_terms_tbl(i).frequency));
14725             fnd_message.set_token ('LOOKUP_CODE',get_miss_char_decode(p_payment_terms_tbl(i).frequency_code));
14726             fnd_msg_pub.ADD;
14727             RAISE FND_API.G_EXC_ERROR;
14728          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14729          THEN
14730              p_payment_terms_tbl(i).error_flag := 'Y';
14731              fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14732              fnd_message.set_token ('COLUMN', SUBSTR(l_param_payment_frequency,3));
14733              fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14734              fnd_msg_pub.ADD;
14735              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14736          END IF;
14737       END IF;
14738      --.put_line('In validate_payment_terms_tbl:5');--Rupak
14739        --  Validate the Payment Source
14740       IF (   (   p_payment_terms_tbl (i).source_code IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14741                 -- AND p_payment_terms_tbl (i).source_code <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14742              OR (   p_payment_terms_tbl (i).source_name IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14743                 -- AND p_payment_terms_tbl (i).source_name <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14744             )
14745          THEN
14746           ----------------------dbms_output.put_line('Hello:14');--Rupak
14747                  PN_LEASE_UTILS.GET_LOOKUP_CODE( p_parameter_name   =>   l_param_payment_source
14748                                                , p_operation        =>   p_operation
14749                                                , p_lookup_meaning   =>   p_payment_terms_tbl(i).source_name
14750                                                , p_lookup_type      =>   l_pn_term_source_module
14751                                                , x_lookup_type_code =>   p_payment_terms_tbl(i).source_code
14752                                                , x_return_status    =>   x_return_status
14753                                               );
14754          pvt_debug(g_pkg_name||'VALIDATE_PAYMENT_TERMS_TBL:PAYMENT_SOURCE CODE:'||p_payment_terms_tbl(i).source_code,3);
14755 
14756          IF (x_return_status = fnd_api.g_ret_sts_error)
14757          THEN
14758             p_payment_terms_tbl(i).error_flag := 'Y';
14759             fnd_message.set_name ('PN', 'PN_INVALID_LOOKUP_VALUES');
14760             fnd_message.set_token ('LOOKUP_TYPE', l_pn_term_source_module);
14761             fnd_message.set_token ('LOOKUP_MEANING',get_miss_char_decode(p_payment_terms_tbl(i).source_name));
14762             fnd_message.set_token ('LOOKUP_CODE',get_miss_char_decode(p_payment_terms_tbl(i).source_code));
14763             fnd_msg_pub.ADD;
14764             RAISE FND_API.G_EXC_ERROR;
14765          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14766          THEN
14767           p_payment_terms_tbl(i).error_flag := 'Y';
14768           fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14769           fnd_message.set_token ('COLUMN', SUBSTR(l_param_payment_source,3));
14770           fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14771           fnd_msg_pub.ADD;
14772           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
14773          END IF;
14774       END IF;
14775    ----------------------dbms_output.put_line('In validate_payment_terms_tbl:6');--Rupak
14776             --Customer Payment Terms  and Invoice Transaction Type
14777      -- ----------------------dbms_output.put_line('In validate_payment_terms_tbl:6:p_payment_terms_tbl(i).ap_ar_term_id'||p_payment_terms_tbl(i).ap_ar_term_id);
14778      -- ----------------------dbms_output.put_line('In validate_payment_terms_tbl:6;p_payment_terms_tbl(i).cust_trx_type_id'||p_payment_terms_tbl(i).cust_trx_type_id);
14779      -- ----------------------dbms_output.put_line('In validate_payment_terms_tbl:6:p_lease_class_code'||p_lease_class_code);
14780 
14781       /*--review comments (Kranti)
14782       IF (    (p_payment_terms_tbl(i).ap_ar_term_id    IS NULL)--    OR p_payment_terms_tbl(i).ap_ar_term_id    = PN_LEASE_UTILS.G_PN_MISS_NUM)
14783           AND (p_payment_terms_tbl(i).cust_trx_type_id IS NULL )--   OR p_payment_terms_tbl(i).cust_trx_type_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
14784           AND (p_lease_class_code = 'THIRD_PARTY')
14785           )
14786       THEN
14787         ----------------------dbms_output.put_line('Hello:15');
14788          fnd_message.set_name ('PN', 'PN_INVALID_TERMS');
14789          fnd_message.set_token ('API_NAME', p_api_name_full || '-Validate_Term_Transaction');
14790          fnd_msg_pub.ADD;
14791         -- ----------------------dbms_output.put_line('In validate_payment_terms_tbl::Customer Payment Terms  and Invoice Transaction Type-2'||p_lease_class_code);
14792          RAISE fnd_api.g_exc_error;
14793       END IF;*/--review comments (Kranti) End
14794 
14795       --Payment Schedule Day
14796       IF (   p_payment_terms_tbl(i).schedule_day < 1
14797           OR p_payment_terms_tbl(i).schedule_day > 28)
14798       THEN
14799          fnd_message.set_name ('PN', 'PN_INVALID_SCHEDULEDAY');
14800          fnd_message.set_token ('API_NAME', l_api_name_full || '-ValidateScheduleDay');
14801          fnd_msg_pub.ADD;
14802          RAISE fnd_api.g_exc_error;
14803       END IF;
14804   ----------------------dbms_output.put_line('In validate_payment_terms_tbl:7');--Rupak
14805 
14806             --Payment Dates
14807      IF ( p_payment_terms_tbl(i).start_date IS NOT NULL AND p_payment_terms_tbl(i).end_date IS NOT NULL) THEN
14808           PN_LEASE_UTILS.VALIDATE_PAYMENT_DATES (p_parameter_name  => l_param_payment_dates
14809                                                , p_operation       => p_operation
14810                                                , p_start_date      => p_payment_terms_tbl(i).start_date
14811                                                , p_end_date        => p_payment_terms_tbl(i).end_date
14812                                                , p_lease_comm_date => p_lease_commencement_date
14813                                                , p_lease_term_date => p_lease_termination_date
14814                                                , x_return_status   => x_return_status
14815                                                 );
14816              pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.VALIDATE_PAYMENT_DATES Return Status:'||x_return_status,3);
14817              IF (x_return_status = 'W') THEN
14818               p_payment_terms_tbl(i).error_flag := 'Y';
14819               fnd_message.set_name ('PN', 'PN_INVALID_PAYSTART_DATE');
14820               fnd_message.set_token ('START_DATE', get_miss_date_decode(p_payment_terms_tbl(i).start_date));
14821               fnd_message.set_token ('COMM_DATE', get_miss_date_decode(p_lease_commencement_date));
14822               fnd_message.set_token ('TERM_DATE', get_miss_date_decode(p_lease_termination_date));
14823               fnd_msg_pub.ADD;
14824               RAISE fnd_api.g_exc_error;
14825              ELSIF(x_return_status = 'Y') THEN
14826                p_payment_terms_tbl(i).error_flag := 'Y';
14827                fnd_message.set_name ('PN', 'PN_INVALID_PAYEND_DATE');
14828                fnd_message.set_token ('END_DATE', get_miss_date_decode(p_payment_terms_tbl(i).end_date));
14829                fnd_message.set_token ('COMM_DATE', p_lease_commencement_date);
14830                fnd_message.set_token ('TERM_DATE', p_lease_termination_date);
14831                fnd_msg_pub.ADD;
14832                RAISE fnd_api.g_exc_error;
14833             ELSIF (x_return_status = fnd_api.g_ret_sts_error) THEN
14834                p_payment_terms_tbl(i).error_flag := 'Y';
14835                fnd_message.set_name ('PN', 'PN_INVALID_PAYMENT_DATES');
14836                fnd_message.set_token ('START_DATE', get_miss_date_decode(p_payment_terms_tbl(i).start_date));
14837                fnd_message.set_token ('END_DATE', get_miss_date_decode(p_payment_terms_tbl(i).end_date));
14838                fnd_msg_pub.ADD;
14839                RAISE fnd_api.g_exc_error;
14840             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
14841                p_payment_terms_tbl(i).error_flag := 'Y';
14842                fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14843                fnd_message.set_token ('COLUMN', SUBSTR(l_param_payment_dates,3));
14844                fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14845                fnd_msg_pub.ADD;
14846                RAISE fnd_api.g_exc_unexpected_error;
14847             END IF;
14848               ----------------------dbms_output.put_line('In validate_payment_terms_tbl:8');--Rupak
14849       END IF;
14850       IF (   (   p_payment_terms_tbl(i).vendor_name IS NOT NULL AND p_termtemp_type = 'PAYMENT')
14851                 -- AND  p_payment_terms_tbl(i).vendor_name <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14852           OR (  p_payment_terms_tbl(i).vendor_id IS NOT NULL AND p_termtemp_type = 'PAYMENT')
14853                 -- AND  p_payment_terms_tbl(i).vendor_id <> PN_LEASE_UTILS.G_PN_MISS_NUM)
14854             )
14855          THEN
14856              ----------------------dbms_output.put_line('Hello:18');--Rupak
14857                      PN_LEASE_UTILS.GET_VENDOR_ID (p_parameter_name => l_param_vendor_name
14858                                                  , p_vendor_name    => p_payment_terms_tbl(i).vendor_name
14859                                                  , p_operation      => p_operation
14860                                                  , p_org_id         => g_org_id
14861                                                  , x_return_status  => x_return_status
14862                                                  , x_vendor_id      => p_payment_terms_tbl(i).vendor_id
14863                                                  );
14864               pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_VENDOR_ID:'||p_payment_terms_tbl(i).vendor_id,3);
14865          IF (x_return_status = fnd_api.g_ret_sts_error)
14866          THEN
14867             p_payment_terms_tbl(i).error_flag := 'Y';
14868             fnd_message.set_name ('PN', 'PN_INVALID_VENDOR');
14869             fnd_message.set_token ('VENDOR_NAME', get_miss_char_decode(p_payment_terms_tbl(i).vendor_name));
14870             fnd_message.set_token ('VENDOR_ID', get_miss_num_decode(p_payment_terms_tbl(i).vendor_id));
14871             fnd_msg_pub.ADD;
14872             RAISE fnd_api.g_exc_error;
14873          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14874          THEN
14875             p_payment_terms_tbl(i).error_flag := 'Y';
14876             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14877             fnd_message.set_token ('COLUMN', SUBSTR(l_param_vendor_name,3));
14878             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14879             fnd_msg_pub.ADD;
14880             RAISE fnd_api.g_exc_unexpected_error;
14881          END IF;
14882       END IF;
14883   ----------------------dbms_output.put_line('In validate_payment_terms_tbl:9');--Rupak
14884       IF (   (   p_payment_terms_tbl(i).vendor_name IS NOT NULL AND p_payment_terms_tbl(i).vendor_site_code IS NOT NULL AND p_termtemp_type = 'PAYMENT')
14885               --AND  p_payment_terms_tbl(i).vendor_name <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14886           OR (  p_payment_terms_tbl(i).vendor_id IS NOT NULL AND p_payment_terms_tbl(i).vendor_site_id IS NOT NULL AND p_termtemp_type = 'PAYMENT')
14887              -- AND  p_payment_terms_tbl(i).vendor_id <> PN_LEASE_UTILS.G_PN_MISS_NUM)
14888             )
14889          THEN
14890                 ----------------------dbms_output.put_line('Hello:19');--Rupak
14891                     PN_LEASE_UTILS.GET_VENDOR_SITE_ID (p_parameter_name => l_param_vendor_site
14892                                                      , p_vendor_id      => p_payment_terms_tbl(i).vendor_id
14893                                                      , p_vendor_site    => p_payment_terms_tbl(i).vendor_site_code
14894                                                      , p_operation      => p_operation
14895                                                      , p_org_id         => g_org_id
14896                                                      , x_return_status  => x_return_status
14897                                                      , x_vendor_site_id => p_payment_terms_tbl(i).vendor_site_id
14898                                                       );
14899                  pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_VENDOR_SITE_ID:'||p_payment_terms_tbl(i).vendor_site_id,3);
14900          IF (x_return_status = fnd_api.g_ret_sts_error)
14901          THEN
14902             p_payment_terms_tbl(i).error_flag := 'Y';
14903             fnd_message.set_name ('PN', 'PN_INVALID_VENDOR_SITE');
14904             fnd_message.set_token ('VENDOR_SITE_NAME', get_miss_char_decode(p_payment_terms_tbl(i).vendor_site_code));
14905             fnd_message.set_token ('VENDOR_SITE_ID', get_miss_num_decode(p_payment_terms_tbl(i).vendor_site_id));
14906             fnd_msg_pub.ADD;
14907             RAISE fnd_api.g_exc_error;
14908          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14909          THEN
14910             p_payment_terms_tbl(i).error_flag := 'Y';
14911             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14912             fnd_message.set_token ('COLUMN', SUBSTR(l_param_vendor_site,3));
14913             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14914             fnd_msg_pub.ADD;
14915             RAISE fnd_api.g_exc_unexpected_error;
14916          END IF;
14917       END IF;
14918    ----------------------dbms_output.put_line('In validate_payment_terms_tbl:10');--Rupak
14919            --Payment Customer
14920        IF (   (   p_payment_terms_tbl(i).customer_name  IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14921                --  AND  p_payment_terms_tbl(i).customer_name  <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14922           OR (  p_payment_terms_tbl(i).customer_id IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14923                --  AND  p_payment_terms_tbl(i).customer_id <> PN_LEASE_UTILS.G_PN_MISS_NUM)
14924             )
14925       THEN
14926             ----------------------dbms_output.put_line('Hello:20');
14927                     PN_LEASE_UTILS.GET_PAY_CUSTOMER_ID (p_parameter_name => l_param_customer_name
14928                                                       , p_customer_name => p_payment_terms_tbl(i).customer_name
14929                                                       , p_operation => p_operation--'CREATE'
14930                                                       , p_org_id => g_org_id
14931                                                       , x_return_status => x_return_status
14932                                                       , x_customer_id => p_payment_terms_tbl(i).customer_id
14933                                                        );
14934               pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_PAY_CUSTOMER_ID:'||p_payment_terms_tbl(i).customer_id,3);
14935          IF (x_return_status = fnd_api.g_ret_sts_error)
14936          THEN
14937             p_payment_terms_tbl(i).error_flag := 'Y';
14938             fnd_message.set_name ('PN', 'PN_INVALID_CUSTOMER');
14939             fnd_message.set_token ('CUSTOMER_NAME', get_miss_char_decode(p_payment_terms_tbl(i).customer_name));
14940             fnd_message.set_token ('CUSTOMER_ID', get_miss_num_decode(p_payment_terms_tbl(i).customer_id));
14941             fnd_msg_pub.ADD;
14942             RAISE fnd_api.g_exc_error;
14943          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14944          THEN
14945             p_payment_terms_tbl(i).error_flag := 'Y';
14946             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14947             fnd_message.set_token ('COLUMN', SUBSTR(l_param_customer_name,3));
14948             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14949             fnd_msg_pub.ADD;
14950             RAISE fnd_api.g_exc_unexpected_error;
14951          END IF;
14952       END IF;
14953   ----------------------dbms_output.put_line('In validate_payment_terms_tbl:11');--Rupak
14954       --Payment Customer Site
14955       IF (   (   p_payment_terms_tbl(i).customer_site_code  IS NOT NULL AND p_payment_terms_tbl(i).customer_name IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14956                 -- AND  p_payment_terms_tbl(i).customer_site_code  <> PN_LEASE_UTILS.G_PN_MISS_CHAR)
14957           OR (  p_payment_terms_tbl(i).customer_site_use_id IS NOT NULL AND p_payment_terms_tbl(i).customer_id IS NOT NULL AND p_termtemp_type <> 'PAYMENT')
14958                 -- AND  p_payment_terms_tbl(i).customer_site_use_id <> PN_LEASE_UTILS.G_PN_MISS_NUM)
14959             )
14960       THEN
14961            ----------------------dbms_output.put_line('Hello:21');--Rupak
14962                    PN_LEASE_UTILS.GET_PAY_CUSTOMER_SITE_ID (p_parameter_name   => l_param_customer_site
14963                                                           , p_customer_site    => p_payment_terms_tbl(i).customer_site_code
14964                                                           , p_customer_id      => p_payment_terms_tbl(i).customer_id
14965                                                           , p_operation        => p_operation
14966                                                           , p_org_id           => g_org_id
14967                                                           , x_return_status    => x_return_status
14968                                                           , x_customer_site_id => p_payment_terms_tbl(i).customer_site_use_id
14969                                                            );
14970           pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_PAY_CUSTOMER_SITE_ID:'||p_payment_terms_tbl(i).customer_site_use_id,3);
14971          IF (x_return_status = fnd_api.g_ret_sts_error)
14972          THEN
14973             p_payment_terms_tbl(i).error_flag := 'Y';
14974             fnd_message.set_name ('PN', 'PN_INVALID_CUSTOMER_SITE');
14975             fnd_message.set_token ('CUSTOMER_SITE', get_miss_char_decode(p_payment_terms_tbl(i).customer_site_code));
14976             fnd_message.set_token ('CUSTOMER_SITE_ID',get_miss_num_decode(p_payment_terms_tbl(i).customer_site_use_id));
14977             fnd_msg_pub.ADD;
14978             RAISE fnd_api.g_exc_error;
14979          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14980          THEN
14981             p_payment_terms_tbl(i).error_flag := 'Y';
14982             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
14983             fnd_message.set_token ('COLUMN', SUBSTR(l_param_customer_site,3));
14984             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
14985             fnd_msg_pub.ADD;
14986             RAISE fnd_api.g_exc_unexpected_error;
14987          END IF;
14988       END IF;
14989 
14990       --Validating Term Template
14991       IF (   p_payment_terms_tbl(i).term_template_id IS NOT NULL
14992           OR p_payment_terms_tbl(i).term_template_name IS NOT NULL) AND ( TRIM(p_operation) = TRIM('CREATE_TERMS'))
14993       THEN
14994         -- BEGIN
14995           ----------------------dbms_output.put_line('Hello:22');--Rupak
14996                     PN_LEASE_UTILS.GET_TERM_TEMPLATE_ID (p_parameter_name => l_param_term_template
14997                                                        , p_termtemp_name  => p_payment_terms_tbl(i).term_template_name
14998                                                        , p_operation      => p_operation
14999                                                        , p_termtemp_type  => p_termtemp_type
15000                                                        , p_org_id         => g_org_id
15001                                                        , x_return_status  => x_return_status
15002                                                        , x_termtemp_id    => p_payment_terms_tbl(i).term_template_id
15003                                                         );
15004               pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_TERM_TEMPLATE_ID:'||p_payment_terms_tbl(i).term_template_id,3);
15005 
15006          IF (x_return_status = fnd_api.g_ret_sts_error) THEN
15007             p_payment_terms_tbl(i).error_flag := 'Y';
15008             fnd_message.set_name ('PN', 'PN_INVALID_TERM_TEMPLATE');
15009             fnd_message.set_token ('TERM_TEMPLATE_ID', get_miss_num_decode(p_payment_terms_tbl(i).term_template_id));
15010             fnd_message.set_token ('TERM_TEMPLATE', get_miss_char_decode(p_payment_terms_tbl(i).term_template_name));
15011             fnd_msg_pub.ADD;
15012             RAISE fnd_api.g_exc_error;
15013          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
15014             p_payment_terms_tbl(i).error_flag := 'Y';
15015             fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15016             fnd_message.set_token ('COLUMN', SUBSTR(l_param_term_template,3));
15017             fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
15018             fnd_msg_pub.ADD;
15019             RAISE fnd_api.g_exc_unexpected_error;
15020          ELSIF (x_return_status = fnd_api.g_ret_sts_success) THEN
15021             ----------------------dbms_output.put_line('Hello:GET_TERM_TEMPLATE_ID:SUCCESS'||p_payment_terms_tbl(i).term_template_id);--Rupak
15022             GET_TEMPLATE_DEFAULTS ( p_payment_terms_tbl(i));
15023             l_default_flag := 'Y';
15024          END IF;
15025       -- EXCEPTION
15026         /* WHEN OTHERS THEN
15027            NULL;
15028            pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Exception:'||SQLERRM,3);
15029           ----------------------dbms_output.put_line('EXCEPTION:GET_TERM_TEMPLATE_ID'||SQLERRM);--Rupak
15030        END;*/
15031       END IF;
15032 
15033       --Validating the Descriptive Flex Fields.
15034             pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:Check for the Payments Atributes',3);
15035             -- Validate the descriptive flexfields IN CREATE_TERMS(Normal Attributes)
15036            /* IF NOT ((p_payment_terms_tbl (i).attribute_category = pn_lease_utils.g_pn_miss_char)
15037                     AND (p_payment_terms_tbl (i).attribute1 = pn_lease_utils.g_pn_miss_char)
15038                     AND (p_payment_terms_tbl (i).attribute2 = pn_lease_utils.g_pn_miss_char)
15039                     AND (p_payment_terms_tbl (i).attribute3 = pn_lease_utils.g_pn_miss_char)
15040                     AND (p_payment_terms_tbl (i).attribute4 = pn_lease_utils.g_pn_miss_char)
15041                     AND (p_payment_terms_tbl (i).attribute5 = pn_lease_utils.g_pn_miss_char)
15042                     AND (p_payment_terms_tbl (i).attribute6 = pn_lease_utils.g_pn_miss_char)
15043                     AND (p_payment_terms_tbl (i).attribute7 = pn_lease_utils.g_pn_miss_char)
15044                     AND (p_payment_terms_tbl (i).attribute8 = pn_lease_utils.g_pn_miss_char)
15045                     AND (p_payment_terms_tbl (i).attribute9 = pn_lease_utils.g_pn_miss_char)
15046                     AND (p_payment_terms_tbl (i).attribute10 = pn_lease_utils.g_pn_miss_char)
15047                     AND (p_payment_terms_tbl (i).attribute11 = pn_lease_utils.g_pn_miss_char)
15048                     AND (p_payment_terms_tbl (i).attribute12 = pn_lease_utils.g_pn_miss_char)
15049                     AND (p_payment_terms_tbl (i).attribute13 = pn_lease_utils.g_pn_miss_char)
15050                     AND (p_payment_terms_tbl (i).attribute14 = pn_lease_utils.g_pn_miss_char)
15051                     AND (p_payment_terms_tbl (i).attribute15 = pn_lease_utils.g_pn_miss_char)
15052                     )
15053             THEN*/
15054                ----------------------dbms_output.put_line('IN TENANCY ATTRIBUTES');--Rupak
15055                pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:Inside Payment Attributes',3);
15056                IF (p_payment_terms_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char)
15057                THEN
15058                   p_payment_terms_tbl(i).attribute_category := NULL;
15059                END IF;
15060 
15061                IF (p_payment_terms_tbl(i).attribute1 = pn_lease_utils.g_pn_miss_char)
15062                THEN
15063                   p_payment_terms_tbl(i).attribute1     := NULL;
15064               END IF;
15065 
15066                IF (p_payment_terms_tbl(i).attribute2 = pn_lease_utils.g_pn_miss_char)
15067                THEN
15068                   p_payment_terms_tbl(i).attribute2     := NULL;
15069                END IF;
15070                IF (p_payment_terms_tbl(i).attribute3 = pn_lease_utils.g_pn_miss_char)
15071                THEN
15072                   p_payment_terms_tbl(i).attribute3     := NULL;
15073                END IF;
15074                IF (p_payment_terms_tbl(i).attribute4 = pn_lease_utils.g_pn_miss_char)
15075                THEN
15076                   p_payment_terms_tbl(i).attribute4     := NULL;
15077                END IF;
15078                IF (p_payment_terms_tbl(i).attribute5 = pn_lease_utils.g_pn_miss_char)
15079                THEN
15080                   p_payment_terms_tbl(i).attribute5     := NULL;
15081                END IF;
15082                IF (p_payment_terms_tbl(i).attribute6 = pn_lease_utils.g_pn_miss_char)
15083                THEN
15084                   p_payment_terms_tbl(i).attribute6     := NULL;
15085                END IF;
15086                IF (p_payment_terms_tbl(i).attribute7 = pn_lease_utils.g_pn_miss_char)
15087                THEN
15088                   p_payment_terms_tbl(i).attribute7     := NULL;
15089                END IF;
15090                IF (p_payment_terms_tbl(i).attribute8 = pn_lease_utils.g_pn_miss_char)
15091                THEN
15092                   p_payment_terms_tbl(i).attribute8     := NULL;
15093                END IF;
15094                IF (p_payment_terms_tbl(i).attribute9 = pn_lease_utils.g_pn_miss_char)
15095                THEN
15096                   p_payment_terms_tbl(i).attribute9     := NULL;
15097                END IF;
15098                IF (p_payment_terms_tbl(i).attribute10 = pn_lease_utils.g_pn_miss_char)
15099                THEN
15100                   p_payment_terms_tbl(i).attribute10     := NULL;
15101                END IF;
15102                IF (p_payment_terms_tbl(i).attribute11 = pn_lease_utils.g_pn_miss_char)
15103                THEN
15104                   p_payment_terms_tbl(i).attribute11     := NULL;
15105                END IF;
15106                IF (p_payment_terms_tbl(i).attribute12= pn_lease_utils.g_pn_miss_char)
15107                THEN
15108                   p_payment_terms_tbl(i).attribute12     := NULL;
15109                END IF;
15110                IF (p_payment_terms_tbl(i).attribute13 = pn_lease_utils.g_pn_miss_char)
15111                THEN
15112                   p_payment_terms_tbl(i).attribute13     := NULL;
15113                END IF;
15114                IF (p_payment_terms_tbl(i).attribute14 = pn_lease_utils.g_pn_miss_char)
15115                THEN
15116                   p_payment_terms_tbl(i).attribute14     := NULL;
15117                END IF;
15118                IF (p_payment_terms_tbl(i).attribute15= pn_lease_utils.g_pn_miss_char)
15119                THEN
15120                   p_payment_terms_tbl(i).attribute15     := NULL;
15121                END IF;
15122 
15123           IF (get_attribute_status('PN_PAYMENT_TERMS') > 0) THEN
15124              /*get_attribute_mandatory_status('PN_PAYMENT_TERMS'
15125                                              ,p_payment_terms_tbl(i).attribute1
15126                                              ,p_payment_terms_tbl(i).attribute2
15127                                              ,p_payment_terms_tbl(i).attribute3
15128                                              ,p_payment_terms_tbl(i).attribute4
15129                                              ,p_payment_terms_tbl(i).attribute5
15130                                              ,p_payment_terms_tbl(i).attribute6
15131                                              ,p_payment_terms_tbl(i).attribute7
15132                                              ,p_payment_terms_tbl(i).attribute8
15133                                              ,p_payment_terms_tbl(i).attribute9
15134                                              ,p_payment_terms_tbl(i).attribute10
15135                                              ,p_payment_terms_tbl(i).attribute11
15136                                              ,p_payment_terms_tbl(i).attribute12
15137                                              ,p_payment_terms_tbl(i).attribute13
15138                                              ,p_payment_terms_tbl(i).attribute14
15139                                              ,p_payment_terms_tbl(i).attribute15
15140                                              ,x_return_status
15141                                             );
15142           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
15143               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15144               fnd_message.set_token ('API_NAME', l_api_name_full);
15145               fnd_message.set_token ('NULL_PARAM','Required attribute in Payments is NULL');
15146               fnd_msg_pub.ADD;
15147               RAISE fnd_api.g_exc_error;
15148           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
15149               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15150               fnd_message.set_token ('API_NAME', l_api_name_full);
15151               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Payments is NULL');
15152               fnd_msg_pub.ADD;
15153               RAISE fnd_api.g_exc_unexpected_error;
15154           ELSE*/
15155           IF NOT ((p_payment_terms_tbl(i).attribute_category = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute_category IS NULL)
15156                                         AND (p_payment_terms_tbl(i).attribute1 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute1 IS NULL)
15157                                         AND (p_payment_terms_tbl(i).attribute2 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute2 IS NULL)
15158                                         AND (p_payment_terms_tbl(i).attribute3 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute3 IS NULL)
15159                                         AND (p_payment_terms_tbl(i).attribute4 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute4 IS NULL)
15160                                         AND (p_payment_terms_tbl(i).attribute5 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute5 IS NULL)
15161                                         AND (p_payment_terms_tbl(i).attribute6 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute6 IS NULL)
15162                                         AND (p_payment_terms_tbl(i).attribute7 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute7 IS NULL)
15163                                         AND (p_payment_terms_tbl(i).attribute8 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute8 IS NULL)
15164                                         AND (p_payment_terms_tbl(i).attribute9 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute9 IS NULL)
15165                                         AND (p_payment_terms_tbl(i).attribute10 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute10 IS NULL)
15166                                         AND (p_payment_terms_tbl(i).attribute11 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute11 IS NULL)
15167                                         AND (p_payment_terms_tbl(i).attribute12 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute12 IS NULL)
15168                                         AND (p_payment_terms_tbl(i).attribute13 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute13 IS NULL)
15169                                         AND (p_payment_terms_tbl(i).attribute14 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute14 IS NULL)
15170                                         AND (p_payment_terms_tbl(i).attribute15 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).attribute15 IS NULL)
15171                                 ) THEN
15172                pn_lease_utils.validate_desc_flex
15173                                            (p_api_name                    => 'PN_LEASE_PVT'|| '.'|| 'CREATE_TERMS'
15174                                           , p_application_short_name      => 'PN'
15175                                           , p_desc_flex_name              => 'PN_PAYMENT_TERMS'
15176                                           , p_desc_segment1               => p_payment_terms_tbl(i).attribute1
15177                                           , p_desc_segment2               => p_payment_terms_tbl(i).attribute2
15178                                           , p_desc_segment3               => p_payment_terms_tbl(i).attribute3
15179                                           , p_desc_segment4               => p_payment_terms_tbl(i).attribute4
15180                                           , p_desc_segment5               => p_payment_terms_tbl(i).attribute5
15181                                           , p_desc_segment6               => p_payment_terms_tbl(i).attribute6
15182                                           , p_desc_segment7               => p_payment_terms_tbl(i).attribute7
15183                                           , p_desc_segment8               => p_payment_terms_tbl(i).attribute8
15184                                           , p_desc_segment9               => p_payment_terms_tbl(i).attribute9
15185                                           , p_desc_segment10              => p_payment_terms_tbl(i).attribute10
15186                                           , p_desc_segment11              => p_payment_terms_tbl(i).attribute11
15187                                           , p_desc_segment12              => p_payment_terms_tbl(i).attribute12
15188                                           , p_desc_segment13              => p_payment_terms_tbl(i).attribute13
15189                                           , p_desc_segment14              => p_payment_terms_tbl(i).attribute14
15190                                           , p_desc_segment15              => p_payment_terms_tbl(i).attribute15
15191                                           , p_desc_context                => p_payment_terms_tbl(i).attribute_category
15192                                           , p_resp_appl_id                => fnd_global.resp_appl_id
15193                                           , p_resp_id                     => fnd_global.resp_id
15194                                           , p_return_status               => x_return_status
15195                                           );
15196 
15197                IF (x_return_status = fnd_api.g_ret_sts_error)
15198                THEN
15199                   p_payment_terms_tbl(i).error_flag:='Y';
15200                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15201                   fnd_message.set_token ('COLUMN', 'PAYMENT_DESC_FIELDS');
15202                   fnd_message.set_token ('P_TEXT', 'PN_PAYMENT_TERMS'|| '-'||SQLERRM);
15203                   fnd_msg_pub.ADD;
15204                   RAISE fnd_api.g_exc_error;
15205                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
15206                THEN
15207                   p_payment_terms_tbl(i).error_flag:='Y';
15208                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15209                   fnd_message.set_token ('COLUMN', 'PAYMENT_DESC_FIELDS');
15210                   fnd_message.set_token ('P_TEXT', 'PN_PAYMENT_TERMS'|| '-'||SQLERRM);
15211                   fnd_msg_pub.ADD;
15212                   RAISE fnd_api.g_exc_unexpected_error;
15213                END IF;
15214             END IF;                                  -- End of attributes valitions in create_terms
15215      END IF;
15216 
15217   --Validating the Project Descriptive Flex Fields.
15218             pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:Check for the Payment Project Atributes',3);
15219             -- Validate the descriptive flexfields IN CREATE_TERMS(Project Attributes)
15220            /* IF NOT ((p_payment_terms_tbl (i).project_attribute_category = pn_lease_utils.g_pn_miss_char)
15221                     AND (p_payment_terms_tbl (i).project_attribute1 = pn_lease_utils.g_pn_miss_char)
15222                     AND (p_payment_terms_tbl (i).project_attribute2 = pn_lease_utils.g_pn_miss_char)
15223                     AND (p_payment_terms_tbl (i).project_attribute3 = pn_lease_utils.g_pn_miss_char)
15224                     AND (p_payment_terms_tbl (i).project_attribute4 = pn_lease_utils.g_pn_miss_char)
15225                     AND (p_payment_terms_tbl (i).project_attribute5 = pn_lease_utils.g_pn_miss_char)
15226                     AND (p_payment_terms_tbl (i).project_attribute6 = pn_lease_utils.g_pn_miss_char)
15227                     AND (p_payment_terms_tbl (i).project_attribute7 = pn_lease_utils.g_pn_miss_char)
15228                     AND (p_payment_terms_tbl (i).project_attribute8 = pn_lease_utils.g_pn_miss_char)
15229                     AND (p_payment_terms_tbl (i).project_attribute9 = pn_lease_utils.g_pn_miss_char)
15230                     AND (p_payment_terms_tbl (i).project_attribute10 = pn_lease_utils.g_pn_miss_char)
15231                     AND (p_payment_terms_tbl (i).project_attribute11 = pn_lease_utils.g_pn_miss_char)
15232                     AND (p_payment_terms_tbl (i).project_attribute12 = pn_lease_utils.g_pn_miss_char)
15233                     AND (p_payment_terms_tbl (i).project_attribute13 = pn_lease_utils.g_pn_miss_char)
15234                     AND (p_payment_terms_tbl (i).project_attribute14 = pn_lease_utils.g_pn_miss_char)
15235                     AND (p_payment_terms_tbl (i).project_attribute15 = pn_lease_utils.g_pn_miss_char)
15236                     )
15237             THEN*/
15238                ----------------------dbms_output.put_line('IN TENANCY project_attributeS');--Rupak
15239                pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:Inside Payment project_attributes',3);
15240                IF (p_payment_terms_tbl(i).project_attribute_category = pn_lease_utils.g_pn_miss_char)
15241                THEN
15242                   p_payment_terms_tbl(i).project_attribute_category := NULL;
15243                END IF;
15244 
15245                IF (p_payment_terms_tbl(i).project_attribute1 = pn_lease_utils.g_pn_miss_char)
15246                THEN
15247                   p_payment_terms_tbl(i).project_attribute1     := NULL;
15248               END IF;
15249 
15250                IF (p_payment_terms_tbl(i).project_attribute2 = pn_lease_utils.g_pn_miss_char)
15251                THEN
15252                   p_payment_terms_tbl(i).project_attribute2     := NULL;
15253                END IF;
15254                IF (p_payment_terms_tbl(i).project_attribute3 = pn_lease_utils.g_pn_miss_char)
15255                THEN
15256                   p_payment_terms_tbl(i).project_attribute3     := NULL;
15257                END IF;
15258                IF (p_payment_terms_tbl(i).project_attribute4 = pn_lease_utils.g_pn_miss_char)
15259                THEN
15260                   p_payment_terms_tbl(i).project_attribute4     := NULL;
15261                END IF;
15262                IF (p_payment_terms_tbl(i).project_attribute5 = pn_lease_utils.g_pn_miss_char)
15263                THEN
15264                   p_payment_terms_tbl(i).project_attribute5     := NULL;
15265                END IF;
15266                IF (p_payment_terms_tbl(i).project_attribute6 = pn_lease_utils.g_pn_miss_char)
15267                THEN
15268                   p_payment_terms_tbl(i).project_attribute6     := NULL;
15269                END IF;
15270                IF (p_payment_terms_tbl(i).project_attribute7 = pn_lease_utils.g_pn_miss_char)
15271                THEN
15272                   p_payment_terms_tbl(i).project_attribute7     := NULL;
15273                END IF;
15274                IF (p_payment_terms_tbl(i).project_attribute8 = pn_lease_utils.g_pn_miss_char)
15275                THEN
15276                   p_payment_terms_tbl(i).project_attribute8     := NULL;
15277                END IF;
15278                IF (p_payment_terms_tbl(i).project_attribute9 = pn_lease_utils.g_pn_miss_char)
15279                THEN
15280                   p_payment_terms_tbl(i).project_attribute9     := NULL;
15281                END IF;
15282                IF (p_payment_terms_tbl(i).project_attribute10 = pn_lease_utils.g_pn_miss_char)
15283                THEN
15284                   p_payment_terms_tbl(i).project_attribute10     := NULL;
15285                END IF;
15286                IF (p_payment_terms_tbl(i).project_attribute11 = pn_lease_utils.g_pn_miss_char)
15287                THEN
15288                   p_payment_terms_tbl(i).project_attribute11     := NULL;
15289                END IF;
15290                IF (p_payment_terms_tbl(i).project_attribute12= pn_lease_utils.g_pn_miss_char)
15291                THEN
15292                   p_payment_terms_tbl(i).project_attribute12     := NULL;
15293                END IF;
15294                IF (p_payment_terms_tbl(i).project_attribute13 = pn_lease_utils.g_pn_miss_char)
15295                THEN
15296                   p_payment_terms_tbl(i).project_attribute13     := NULL;
15297                END IF;
15298                IF (p_payment_terms_tbl(i).project_attribute14 = pn_lease_utils.g_pn_miss_char)
15299                THEN
15300                   p_payment_terms_tbl(i).project_attribute14     := NULL;
15301                END IF;
15302                IF (p_payment_terms_tbl(i).project_attribute15= pn_lease_utils.g_pn_miss_char)
15303                THEN
15304                   p_payment_terms_tbl(i).project_attribute15     := NULL;
15305                END IF;
15306 
15307            IF (get_attribute_status('PN_PAYMENT_TERMS') > 0) THEN
15308              /*get_attribute_mandatory_status('PN_PAYMENT_TERMS'
15309                                              ,p_payment_terms_tbl(i).project_attribute1
15310                                              ,p_payment_terms_tbl(i).project_attribute2
15311                                              ,p_payment_terms_tbl(i).project_attribute3
15312                                              ,p_payment_terms_tbl(i).project_attribute4
15313                                              ,p_payment_terms_tbl(i).project_attribute5
15314                                              ,p_payment_terms_tbl(i).project_attribute6
15315                                              ,p_payment_terms_tbl(i).project_attribute7
15316                                              ,p_payment_terms_tbl(i).project_attribute8
15317                                              ,p_payment_terms_tbl(i).project_attribute9
15318                                              ,p_payment_terms_tbl(i).project_attribute10
15319                                              ,p_payment_terms_tbl(i).project_attribute11
15320                                              ,p_payment_terms_tbl(i).project_attribute12
15321                                              ,p_payment_terms_tbl(i).project_attribute13
15322                                              ,p_payment_terms_tbl(i).project_attribute14
15323                                              ,p_payment_terms_tbl(i).project_attribute15
15324                                              ,x_return_status
15325                                             );
15326           IF(x_return_status =  fnd_api.g_ret_sts_error) THEN
15327               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15328               fnd_message.set_token ('API_NAME', l_api_name_full);
15329               fnd_message.set_token ('NULL_PARAM','Required attribute in Project Payments is NULL');
15330               fnd_msg_pub.ADD;
15331               RAISE fnd_api.g_exc_error;
15332           ELSIF(x_return_status =  fnd_api.g_ret_sts_unexp_error) THEN
15333               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15334               fnd_message.set_token ('API_NAME', l_api_name_full);
15335               fnd_message.set_token ('NULL_PARAM', 'Required attribute in Project Payments is NULL');
15336               fnd_msg_pub.ADD;
15337               RAISE fnd_api.g_exc_unexpected_error;
15338           ELSE*/
15339        IF NOT ((p_payment_terms_tbl(i).project_attribute_category = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute_category IS NULL)
15340                                         AND (p_payment_terms_tbl(i).project_attribute1 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute1 IS NULL)
15341                                         AND (p_payment_terms_tbl(i).project_attribute2 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute2 IS NULL)
15342                                         AND (p_payment_terms_tbl(i).project_attribute3 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute3 IS NULL)
15343                                         AND (p_payment_terms_tbl(i).project_attribute4 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute4 IS NULL)
15344                                         AND (p_payment_terms_tbl(i).project_attribute5 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute5 IS NULL)
15345                                         AND (p_payment_terms_tbl(i).project_attribute6 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute6 IS NULL)
15346                                         AND (p_payment_terms_tbl(i).project_attribute7 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute7 IS NULL)
15347                                         AND (p_payment_terms_tbl(i).project_attribute8 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute8 IS NULL)
15348                                         AND (p_payment_terms_tbl(i).project_attribute9 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute9 IS NULL)
15349                                         AND (p_payment_terms_tbl(i).project_attribute10 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute10 IS NULL)
15350                                         AND (p_payment_terms_tbl(i).project_attribute11 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute11 IS NULL)
15351                                         AND (p_payment_terms_tbl(i).project_attribute12 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute12 IS NULL)
15352                                         AND (p_payment_terms_tbl(i).project_attribute13 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute13 IS NULL)
15353                                         AND (p_payment_terms_tbl(i).project_attribute14 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute14 IS NULL)
15354                                         AND (p_payment_terms_tbl(i).project_attribute15 = pn_lease_utils.g_pn_miss_char OR p_payment_terms_tbl(i).project_attribute15 IS NULL)
15355                                 ) THEN
15356                pn_lease_utils.validate_desc_flex
15357                                            (p_api_name                    => 'PN_LEASE_PUB'|| '.'|| 'CREATE_TERMS'
15358                                           , p_application_short_name      => 'PN'
15359                                           , p_desc_flex_name              => 'PN_PAYMENT_TERMS'
15360                                           , p_desc_segment1               => p_payment_terms_tbl(i).project_attribute1
15361                                           , p_desc_segment2               => p_payment_terms_tbl(i).project_attribute2
15362                                           , p_desc_segment3               => p_payment_terms_tbl(i).project_attribute3
15363                                           , p_desc_segment4               => p_payment_terms_tbl(i).project_attribute4
15364                                           , p_desc_segment5               => p_payment_terms_tbl(i).project_attribute5
15365                                           , p_desc_segment6               => p_payment_terms_tbl(i).project_attribute6
15366                                           , p_desc_segment7               => p_payment_terms_tbl(i).project_attribute7
15367                                           , p_desc_segment8               => p_payment_terms_tbl(i).project_attribute8
15368                                           , p_desc_segment9               => p_payment_terms_tbl(i).project_attribute9
15369                                           , p_desc_segment10              => p_payment_terms_tbl(i).project_attribute10
15370                                           , p_desc_segment11              => p_payment_terms_tbl(i).project_attribute11
15371                                           , p_desc_segment12              => p_payment_terms_tbl(i).project_attribute12
15372                                           , p_desc_segment13              => p_payment_terms_tbl(i).project_attribute13
15373                                           , p_desc_segment14              => p_payment_terms_tbl(i).project_attribute14
15374                                           , p_desc_segment15              => p_payment_terms_tbl(i).project_attribute15
15375                                           , p_desc_context                => p_payment_terms_tbl(i).project_attribute_category
15376                                           , p_resp_appl_id                => fnd_global.resp_appl_id
15377                                           , p_resp_id                     => fnd_global.resp_id
15378                                           , p_return_status               => x_return_status
15379                                           );
15380 
15381                IF (x_return_status = fnd_api.g_ret_sts_error)
15382                THEN
15383                   p_payment_terms_tbl(i).error_flag:='Y';
15384                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15385                   fnd_message.set_token ('COLUMN', 'PAYMENT_DESC_FIELDS');
15386                   fnd_message.set_token ('P_TEXT', 'PN_PAYMENT_TERMS'|| '-'||SQLERRM);
15387                   fnd_msg_pub.ADD;
15388                   RAISE fnd_api.g_exc_error;
15389                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
15390                THEN
15391                   p_payment_terms_tbl(i).error_flag:='Y';
15392                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15393                   fnd_message.set_token ('COLUMN', 'PAYMENT_DESC_FIELDS');
15394                   fnd_message.set_token ('P_TEXT', 'PN_PAYMENT_TERMS'|| '-'||SQLERRM);
15395                   fnd_msg_pub.ADD;
15396                   RAISE fnd_api.g_exc_unexpected_error;
15397                END IF;
15398            END IF;                                  -- End of project_attributes valitions in create_terms
15399        END IF;
15400       ---------------------------------------
15401         pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before PN_LEASE_UTILS.GET_LOCATION_ID',3);
15402       --Validation 2: Location Code
15403             --Terms Location
15404             IF (   (    p_payment_terms_tbl(i).location_code IS NOT NULL AND p_termtemp_type = 'PAYMENT')
15405                     --AND p_payment_terms_tbl(i).location_code <> pn_lease_utils.g_pn_miss_char)
15406                 OR (    p_payment_terms_tbl(i).location_id IS NOT NULL AND p_termtemp_type = 'PAYMENT' )
15407                )
15408             THEN
15409 
15410                pn_lease_utils.get_location_id(p_parameter_name              => l_param_location_code
15411                                             , p_location_code               => p_payment_terms_tbl(i).location_code
15412                                             , p_operation                   => p_operation
15413                                             , p_org_id                      => g_org_id--p_payment_terms_tbl(i).org_id
15414                                             , p_lease_class_code            => p_lease_class_code
15415                                             , p_parent_lease_id             => p_parent_lease_id
15416                                             , p_lease_comm_date             => p_lease_commencement_date
15417                                             , p_lease_term_date             => p_lease_termination_date
15418                                             , x_return_status               => x_return_status
15419                                             , x_location_id                 => p_payment_terms_tbl(i).location_id
15420                                           );
15421                    pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:PN_LEASE_UTILS.GET_LOCATION_ID:'||p_payment_terms_tbl(i).location_id,3);
15422                ----------------------dbms_output.put_line('Terms LOCATION_ID:' ||p_payment_terms_tbl(i).location_id);--Rupak
15423                IF (x_return_status = fnd_api.g_ret_sts_error)
15424                THEN
15425                   p_payment_terms_tbl(i).error_flag := 'Y';
15426                   l_error_flag:='Y';
15427                   fnd_message.set_name ('PN', 'PN_INVALID_LOCATION');
15428                   fnd_message.set_token ('LOC_ID', get_miss_num_decode(p_payment_terms_tbl(i).location_id));
15429                   fnd_message.set_token ('LOC_CODE', get_miss_char_decode(p_payment_terms_tbl(i).location_code));
15430                   fnd_msg_pub.ADD;
15431                   RAISE fnd_api.g_exc_error;
15432                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
15433                THEN
15434                   p_payment_terms_tbl(i).error_flag := 'Y';
15435                   l_error_flag:='Y';
15436                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15437                   fnd_message.set_token ('COLUMN', SUBSTR(l_param_location_code,3));
15438                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
15439                   fnd_msg_pub.ADD;
15440                   RAISE fnd_api.g_exc_unexpected_error;
15441                END IF;
15442            END IF;
15443           l_expense_account_id    := NULL;
15444           l_receivable_account_id := NULL;
15445           l_accrual_account_id    := NULL;
15446       pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Lease Account Check',3);
15447     BEGIN
15448        SELECT pld.expense_account_id,pld.receivable_account_id,pld.accrual_account_id
15449        INTO   l_expense_account_id,l_receivable_account_id,l_accrual_account_id
15450        FROM   pn_leases_all pla,pn_lease_details pld
15451        WHERE  pla.lease_id = pld.lease_id
15452        AND    pla.lease_id = p_lease_id;
15453     EXCEPTION
15454       WHEN NO_DATA_FOUND THEN
15455           l_expense_account_id    := NULL;
15456           l_receivable_account_id := NULL;
15457           l_accrual_account_id    := NULL;
15458     END;
15459 
15460 
15461 
15462     IF (p_lease_class_code ='DIRECT') THEN
15463        l_exp_rev := 'Expense';
15464        l_lia_rec := 'Liability';
15465        l_accrued := 'Accrued Liability';
15466     ELSE
15467        l_exp_rev := 'Revenue';
15468        l_lia_rec := 'Receivable';
15469        l_accrued := 'Accrued Asset';
15470     END IF;
15471 
15472 
15473     IF(trim(p_operation) = trim('CREATE_TERMS')) THEN
15474       IF (l_default_flag = 'N') THEN
15475         BEGIN
15476           SELECT chart_of_accounts_id
15477           INTO   p_payment_terms_tbl(i).set_of_books_id
15478           FROM   gl_sets_of_books
15479           WHERE  set_of_books_id = fnd_profile.VALUE ('GL_SET_OF_BKS_ID');
15480         EXCEPTION
15481           WHEN OTHERS THEN
15482             NULL;
15483             ----------------------dbms_output.put_line('Exception:SET_OF_BOOKS_ID'||SQLERRM);
15484             pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Exception:CHART_OF_ACCOUNTS_ID:'||SQLERRM,3);
15485         END;
15486        END IF;
15487     END IF;
15488 
15489 ---Checking the Accounts Info BEGIN
15490             l_terms_exp_rev_cnt    :=  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT;
15491             l_terms_accrual_cnt    :=  p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT;
15492             l_terms_liab_rcvl_cnt  :=  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT;
15493     pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Account Check',3);
15494 
15495     l_project_info      := 'N';
15496     l_check             := NULL;
15497     l_check_date        := NULL;
15498 
15499     --Project Information Check----
15500      IF( l_exp_rev = 'Expense' AND l_terms_exp_rev_cnt = 0 AND p_payment_terms_tbl(i).term_template_id IS NULL) THEN
15501        l_project_info := 'Y';
15502        IF(trim(p_operation) = 'UPDATE_TERMS') THEN
15503           BEGIN
15504             SELECT  project_id
15505                   , task_id
15506                   , expenditure_type
15507                   , expenditure_item_date
15508                   , organization_id
15509             INTO    l_term_project_id--p_payment_terms_tbl(i).project_id
15510                  ,  l_term_task_id--p_payment_terms_tbl(i).task_id
15511                  ,  l_term_expenditure_type--p_payment_terms_tbl(i).expenditure_type
15512                  ,  l_term_expenditure_item_date--p_payment_terms_tbl(i).expenditure_item_date
15513                  ,  l_term_organization_id--p_payment_terms_tbl(i).organization_id
15514             FROM  pn_payment_terms_all
15515             WHERE payment_term_id = p_payment_terms_tbl(i).payment_term_id
15516             AND   org_id = g_org_id;
15517           EXCEPTION
15518             WHEN OTHERS THEN
15519                fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15520                fnd_message.set_token('ERR_MSG', 'Exception in Retrieving the Project Information');
15521                fnd_msg_pub.ADD;
15522                RAISE fnd_api.g_exc_error;
15523           END;
15524           IF ( p_payment_terms_tbl(i).project_id IS NULL) THEN
15525              p_payment_terms_tbl(i).project_id := l_term_project_id;
15526           END IF;
15527           IF ( p_payment_terms_tbl(i).task_id IS NULL) THEN
15528              p_payment_terms_tbl(i).task_id := l_term_task_id;
15529           END IF;
15530           IF ( p_payment_terms_tbl(i).expenditure_type IS NULL) THEN
15531              p_payment_terms_tbl(i).expenditure_type := l_term_expenditure_type;
15532           END IF;
15533           IF ( p_payment_terms_tbl(i).expenditure_item_date IS NULL) THEN
15534              p_payment_terms_tbl(i).expenditure_item_date := l_term_expenditure_item_date;
15535           END IF;
15536           IF ( p_payment_terms_tbl(i).organization_id IS NULL) THEN
15537              p_payment_terms_tbl(i).organization_id := l_term_organization_id;
15538           END IF;
15539        END IF;
15540        IF(p_payment_terms_tbl(i).project_id IS NULL) THEN
15541             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15542             fnd_message.set_token('ERR_MSG', 'Account Information not Passed.Please Pass the Account Related Information');
15543             fnd_msg_pub.ADD;
15544             RAISE fnd_api.g_exc_error;
15545             /*fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15546             fnd_message.set_token ('API_NAME', p_api_name_full);
15547             fnd_message.set_token ('NULL_PARAM', 'PROJECT_ID');
15548             fnd_msg_pub.ADD;
15549             RAISE fnd_api.g_exc_error;*/
15550        ELSE
15551          IF(p_payment_terms_tbl(i).task_id IS NULL) THEN
15552             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15553             fnd_message.set_token ('API_NAME', p_api_name_full);
15554             fnd_message.set_token ('NULL_PARAM', 'TASK_ID');
15555             fnd_msg_pub.ADD;
15556             RAISE fnd_api.g_exc_error;
15557          ELSE
15558            IF(p_payment_terms_tbl(i).organization_id IS NULL) THEN
15559               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15560               fnd_message.set_token ('API_NAME', p_api_name_full);
15561               fnd_message.set_token ('NULL_PARAM', 'EXPENDITURE_ORGANIZATION_ID');
15562               fnd_msg_pub.ADD;
15563               RAISE fnd_api.g_exc_error;
15564            ELSE
15565              IF(p_payment_terms_tbl(i).expenditure_type IS NULL) THEN
15566                 fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15567                 fnd_message.set_token ('API_NAME', p_api_name_full);
15568                 fnd_message.set_token ('NULL_PARAM', 'EXPENDITURE_TYPE');
15569                 fnd_msg_pub.ADD;
15570                 RAISE fnd_api.g_exc_error;
15571               ELSE
15572                 IF(p_payment_terms_tbl(i).expenditure_item_date IS NULL) THEN
15573                    fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
15574                    fnd_message.set_token ('API_NAME', p_api_name_full);
15575                    fnd_message.set_token ('NULL_PARAM', 'EXPENDITURE_ITEM_DATE');
15576                    fnd_msg_pub.ADD;
15577                    RAISE fnd_api.g_exc_error;
15578                 ELSE
15579                   BEGIN
15580                     SELECT 'x'
15581                     INTO   l_check
15582                     FROM   pa_projects_all p,
15583                            pa_project_types_all pt
15584                     WHERE p.project_type = pt.project_type
15585                     AND NVL(p.template_flag,'N') <>'Y'
15586                     AND pt.org_id  = g_org_id
15587                     AND project_id = p_payment_terms_tbl(i).project_id;
15588                   EXCEPTION
15589                     WHEN OTHERS THEN
15590                        fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15591                        fnd_message.set_token('ERR_MSG', 'Invalid Project ID for the Payment ID:'||p_payment_terms_tbl(i).payment_term_id);
15592                        fnd_msg_pub.ADD;
15593                        RAISE fnd_api.g_exc_error;
15594                   END;
15595                   BEGIN
15596                         SELECT 'x'
15597                         INTO   l_check
15598                         FROM   pa_tasks_expend_v
15599                         WHERE  project_id = p_payment_terms_tbl(i).project_id
15600                         AND    task_id = p_payment_terms_tbl(i).task_id
15601                         AND    org_id  = g_org_id;
15602                   EXCEPTION
15603                     WHEN OTHERS THEN
15604                        fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15605                        fnd_message.set_token('ERR_MSG', 'Invalid Task ID for the Payment ID:'||p_payment_terms_tbl(i).payment_term_id);
15606                        fnd_msg_pub.ADD;
15607                        RAISE fnd_api.g_exc_error;
15608                   END;
15609                   BEGIN
15610                         SELECT  'x'
15611                         INTO    l_check
15612                         FROM   pa_expenditure_types_expend_v
15613                         WHERE  system_linkage_function='VI'
15614                         AND   (sysdate between expnd_typ_start_date_active and nvl(expnd_typ_end_date_active, sysdate))
15615                         AND   (sysdate between sys_link_start_date_active and nvl(sys_link_end_date_active,sysdate))
15616                         AND   trim(expenditure_type) = trim(p_payment_terms_tbl(i).expenditure_type);
15617                   EXCEPTION
15618                       WHEN OTHERS THEN
15619                        fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15620                        fnd_message.set_token('ERR_MSG', 'Invalid Expenditure Type for the Payment ID:'||p_payment_terms_tbl(i).payment_term_id);
15621                        fnd_msg_pub.ADD;
15622                        RAISE fnd_api.g_exc_error;
15623                   END;
15624                   BEGIN
15625                     SELECT p_payment_terms_tbl(i).expenditure_item_date
15626                     INTO   l_check_date
15627                     FROM   dual;
15628                   EXCEPTION
15629                     WHEN OTHERS THEN
15630                        fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15631                        fnd_message.set_token('ERR_MSG', 'Invalid Expenditure Date for the Payment ID:'||p_payment_terms_tbl(i).payment_term_id);
15632                        fnd_msg_pub.ADD;
15633                        RAISE fnd_api.g_exc_error;
15634                   END;
15635                   BEGIN
15636                        SELECT 'x'
15637                        INTO   l_check
15638                        FROM   pa_organizations_expend_v a
15639                        WHERE  active_flag='Y'
15640                        AND    org_id = g_org_id
15641                        AND    p_payment_terms_tbl(i).expenditure_item_date between date_from and nvl(date_to,pn_lease_utils.g_pn_miss_date)
15642                        AND    organization_id = p_payment_terms_tbl(i).organization_id;
15643                   EXCEPTION
15644                     WHEN OTHERS THEN
15645                        fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15646                        fnd_message.set_token('ERR_MSG', 'Invalid Organization ID for the Payment ID:'||p_payment_terms_tbl(i).payment_term_id);
15647                        fnd_msg_pub.ADD;
15648                        RAISE fnd_api.g_exc_error;
15649                   END;
15650                 END IF;
15651 
15652               END IF;
15653            END IF;
15654          END IF;
15655         END IF;
15656        END IF;
15657 
15658 
15659     --------------------------
15660   IF(l_project_info = 'N') THEN
15661     IF(NVL(p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT,0) <> 0) THEN
15662 
15663        FOR j in 1..p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT
15664        LOOP
15665 
15666          IF ( (p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_percentage IS NOT NULL)
15667           OR (p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_percentage <> pn_lease_utils.g_pn_miss_num)
15668             ) THEN
15669               k:= k + p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_percentage;
15670          ELSE
15671            pvt_debug(g_pkg_name||'Please Specify the Account Percentage',3);
15672            fnd_message.set_name ('PN', 'PN_DIST_PRCNT_TTL_MSG');
15673            fnd_msg_pub.ADD;
15674            RAISE fnd_api.g_exc_error;
15675          END IF;
15676        END LOOP;
15677 
15678        IF (k <> 100) THEN
15679          ------------------dbms_output.put_line('Total Account is not 100%');--Rupak
15680          pvt_debug(g_pkg_name||'VALIDATE_PAYMENTS:Total Account is not 100%',3);
15681          fnd_message.set_name ('PN', 'PN_DIST_PRCNT_TTL_MSG');
15682          fnd_msg_pub.ADD;
15683          RAISE fnd_api.g_exc_error;
15684        ELSE
15685 
15686          FOR j in 1..p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT
15687          LOOP
15688              IF (p_lease_class_code ='DIRECT') THEN
15689                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_code := 'EXP';
15690              ELSE
15691                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_code := 'REV';
15692              END IF;
15693                        PN_LEASE_UTILS.GET_ACCOUNT_ID (p_parameter_name           => 'P_ACCOUNTS'
15694                                                     , p_operation                => 'CREATE_TERMS'
15695                                                     , p_account_id               => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_id
15696                                                     , p_account_conc_segs        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_conc_segs
15697                                                     , p_account_segment1         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment1
15698                                                     , p_account_segment2         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment2
15699                                                     , p_account_segment3         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment3
15700                                                     , p_account_segment4         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment4
15701                                                     , p_account_segment5         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment5
15702                                                     , p_account_segment6         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment6
15703                                                     , p_account_segment7         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment7
15704                                                     , p_account_segment8         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment8
15705                                                     , p_account_segment9         => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment9
15706                                                     , p_account_segment10        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment10
15707                                                     , p_account_segment11        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment11
15708                                                     , p_account_segment12        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment12
15709                                                     , p_account_segment13        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment13
15710                                                     , p_account_segment14        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment14
15711                                                     , p_account_segment15        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment15
15712                                                     , p_account_segment16        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment16
15713                                                     , p_account_segment17        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment17
15714                                                     , p_account_segment18        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment18
15715                                                     , p_account_segment19        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment19
15716                                                     , p_account_segment20        => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_segment20
15717                                                     , x_return_status            => x_return_status
15718                                                   );
15719 
15720              IF (x_return_status = fnd_api.g_ret_sts_error) THEN
15721                 IF ((p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_conc_segs IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_conc_segs <> pn_lease_utils.g_pn_miss_char)) THEN
15722                    fnd_message.set_name ('PN', 'PN_ACCOUNT_CONC_SEGS');
15723                    fnd_message.set_token ('ACCOUNT_CONC_SEGS','Expense or Revenue'||p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_conc_segs);
15724                    fnd_msg_pub.ADD;
15725                    RAISE fnd_api.g_exc_error;
15726                 ELSIF((p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_id IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_id <> pn_lease_utils.g_pn_miss_num)) THEN
15727                    fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15728                    fnd_message.set_token ('ACCOUNT_ID','Expense or Revenue'||p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_id);
15729                    fnd_msg_pub.ADD;
15730                    RAISE fnd_api.g_exc_error;
15731                 ELSE
15732                    fnd_message.set_name ('PN', 'PN_ACCOUNT_SEGMENTS');
15733                    fnd_message.set_token ('ACCOUNT_SEGMENTS','Expense or Revenue'||p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(j).account_conc_segs);
15734                    fnd_msg_pub.ADD;
15735                    RAISE fnd_api.g_exc_error;
15736                 END IF;
15737 
15738             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
15739                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15740                   fnd_message.set_token ('COLUMN', SUBSTR(l_exp_rev||'ACCOUNT INFORMATION',3));
15741                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
15742                   fnd_msg_pub.ADD;
15743             END IF;
15744          END LOOP;
15745        END IF;
15746     ELSE
15747 	/*--Bug16423198
15748     IF(trim(p_operation) = trim('CREATE_TERMS')) THEN
15749      IF ((l_expense_account_id IS NOT NULL) AND (l_expense_account_id <> pn_lease_utils.g_pn_miss_num)) THEN
15750          p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_id:= l_expense_account_id;
15751          p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_percentage := 100;
15752           IF (p_lease_class_code ='DIRECT') THEN
15753                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code := 'EXP';
15754           ELSE
15755                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code := 'REV';
15756           END IF;
15757      ELSIF( p_payment_terms_tbl(i).term_template_id IS NOT NULL AND p_payment_terms_tbl(i).term_template_id <> pn_lease_utils.g_pn_miss_num) THEN
15758              IF (p_lease_class_code ='DIRECT') THEN
15759                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code := 'EXP';
15760              ELSE
15761                p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code := 'REV';
15762              END IF;
15763 
15764            BEGIN
15765              SELECT account_id,percentage
15766              INTO   p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_id,p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_percentage
15767              FROM   pn_distributions_all
15768              WHERE  term_template_id = p_payment_terms_tbl(i).term_template_id
15769              AND    account_class    =  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code
15770              AND    payment_term_id IS NULL;
15771 
15772             EXCEPTION
15773               WHEN OTHERS THEN
15774                 pvt_debug(g_pkg_name||'Revenue/Expense Account ID NULL:'||SQLERRM,3);
15775                 fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15776                 fnd_message.set_token ('ACCOUNT_ID', l_exp_rev||' ACCOUNT ID IS NULL');
15777                 fnd_msg_pub.ADD;
15778                 RAISE fnd_api.g_exc_error;
15779             END;
15780      ELSE
15781        fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15782        fnd_message.set_token ('ACCOUNT_ID', l_exp_rev||' ACCOUNT ID IS NULL');
15783        fnd_msg_pub.ADD;
15784        RAISE fnd_api.g_exc_error;
15785      END IF;
15786     ELSE
15787       NULL;
15788     END IF;
15789    END IF;
15790  */--Bug16423198
15791 
15792  IF(trim(p_operation) = trim('CREATE_TERMS')) THEN
15793 
15794    IF (p_lease_class_code ='DIRECT') THEN
15795        l_account_code := 'EXP';
15796    ELSE
15797        l_account_code := 'REV';
15798    END IF;
15799 
15800    IF ((l_expense_account_id IS NOT NULL) AND (l_expense_account_id <> pn_lease_utils.g_pn_miss_num)) THEN
15801       p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_id         := l_expense_account_id;
15802       p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_percentage := 100;
15803       p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code       := l_account_code;
15804 
15805 
15806    ELSIF( p_payment_terms_tbl(i).term_template_id IS NOT NULL AND p_payment_terms_tbl(i).term_template_id <> pn_lease_utils.g_pn_miss_num) THEN
15807       l_act_count :=1;
15808 
15809      FOR act_cur  in exp_rev_account_cur(p_payment_terms_tbl(i).term_template_id,l_account_code)
15810      loop
15811        p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(l_act_count).account_code       := l_account_code;
15812        p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(l_act_count).account_percentage := act_cur.percentage;
15813        p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(l_act_count).account_id         := act_cur.account_id;
15814        l_act_count := l_act_count + 1;
15815      end loop;
15816 
15817    ELSE
15818        fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15819        fnd_message.set_token ('ACCOUNT_ID', l_exp_rev||' ACCOUNT ID IS NULL');
15820        fnd_msg_pub.ADD;
15821        RAISE fnd_api.g_exc_error;
15822     END IF;
15823     ELSE
15824       NULL;
15825     END IF;
15826    END IF;
15827 
15828 
15829       pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Receivable Liability Account Check',3);
15830 
15831       IF (NVL(p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT,0) <> 0 ) THEN
15832         IF(    p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT = 1
15833            AND (p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_percentage=100 OR p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id IS NOT NULL)
15834           ) THEN
15835              IF (p_lease_class_code ='DIRECT') THEN
15836                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'LIA';
15837              ELSE
15838                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'REC';
15839              END IF;
15840                        PN_LEASE_UTILS.GET_ACCOUNT_ID (p_parameter_name           => 'P_ACCOUNTS'
15841                                                     , p_operation                => p_operation
15842                                                     , p_account_id               => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id
15843                                                     , p_account_conc_segs        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_conc_segs
15844                                                     , p_account_segment1         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment1
15845                                                     , p_account_segment2         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment2
15846                                                     , p_account_segment3         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment3
15847                                                     , p_account_segment4         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment4
15848                                                     , p_account_segment5         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment5
15849                                                     , p_account_segment6         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment6
15850                                                     , p_account_segment7         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment7
15851                                                     , p_account_segment8         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment8
15852                                                     , p_account_segment9         => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment9
15853                                                     , p_account_segment10        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment10
15854                                                     , p_account_segment11        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment11
15855                                                     , p_account_segment12        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment12
15856                                                     , p_account_segment13        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment13
15857                                                     , p_account_segment14        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment14
15858                                                     , p_account_segment15        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment15
15859                                                     , p_account_segment16        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment16
15860                                                     , p_account_segment17        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment17
15861                                                     , p_account_segment18        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment18
15862                                                     , p_account_segment19        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment19
15863                                                     , p_account_segment20        => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_segment20
15864                                                     , x_return_status            => x_return_status
15865                                                   );
15866              IF (x_return_status = fnd_api.g_ret_sts_error) THEN
15867                 IF ((p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_conc_segs IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_conc_segs <> pn_lease_utils.g_pn_miss_char)) THEN
15868                    fnd_message.set_name ('PN', 'PN_ACCOUNT_CONC_SEGS');
15869                    fnd_message.set_token ('ACCOUNT_CONC_SEGS', p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_conc_segs);
15870                    fnd_msg_pub.ADD;
15871                    RAISE fnd_api.g_exc_error;
15872                 ELSIF((p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id <> pn_lease_utils.g_pn_miss_num)) THEN
15873                    fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15874                    fnd_message.set_token ('ACCOUNT_ID', 'Receivable or Liability Account:'||p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id);
15875                    fnd_msg_pub.ADD;
15876                    RAISE fnd_api.g_exc_error;
15877                 ELSE
15878                    fnd_message.set_name ('PN', 'PN_ACCOUNT_SEGMENTS');
15879                    fnd_message.set_token ('ACCOUNT_SEGMENTS','Receivable or Liability Account:'||p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_conc_segs);
15880                    fnd_msg_pub.ADD;
15881                    RAISE fnd_api.g_exc_error;
15882                 END IF;
15883             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
15884                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
15885                   fnd_message.set_token ('COLUMN', SUBSTR(l_lia_rec||'ACCOUNT INFORMATION',3));
15886                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
15887                   fnd_msg_pub.ADD;
15888             END IF;
15889 
15890         ELSE
15891           IF(p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id IS NOT NULL) THEN
15892               fnd_message.set_name ('PN', 'PN_DUP_ACCOUNT_IN_DIST');
15893               fnd_message.set_token ('ACCOUNT_CLASS',l_lia_rec);
15894               fnd_message.set_token ('ACCOUNT_CLASS_A',l_lia_rec);
15895               fnd_msg_pub.ADD;
15896               RAISE fnd_api.g_exc_error;
15897           ELSE
15898              IF (p_lease_class_code ='DIRECT') THEN
15899                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'LIA';
15900              ELSE
15901                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'REC';
15902              END IF;
15903              pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Receivables/Liability Account ID IS about to make NULL',3);
15904           END IF;
15905       END IF;
15906 
15907   ELSE--Getting from the lease
15908     IF(trim(p_operation) = trim('CREATE_TERMS')) THEN
15909      IF ((l_receivable_account_id IS NOT NULL) AND (l_receivable_account_id <> pn_lease_utils.g_pn_miss_num)) THEN
15910           p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id:= l_receivable_account_id;
15911           p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_percentage := 100;
15912            IF (p_lease_class_code ='DIRECT') THEN
15913                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'LIA';
15914              ELSE
15915                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'REC';
15916            END IF;
15917      ELSIF( p_payment_terms_tbl(i).term_template_id IS NOT NULL AND p_payment_terms_tbl(i).term_template_id <> pn_lease_utils.g_pn_miss_num) THEN
15918              IF (p_lease_class_code ='DIRECT') THEN
15919                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'LIA';
15920              ELSE
15921                p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code := 'REC';
15922              END IF;
15923             BEGIN
15924              SELECT account_id,percentage
15925              INTO   p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id,p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_percentage
15926              FROM   pn_distributions_all
15927              WHERE  term_template_id = p_payment_terms_tbl(i).term_template_id
15928              AND    account_class    =  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code
15929              AND    payment_term_id IS NULL;
15930 
15931             EXCEPTION
15932               WHEN OTHERS THEN
15933                IF( p_lease_class_code <> 'DIRECT') THEN
15934                  fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15935                  fnd_message.set_token ('ACCOUNT_ID', l_lia_rec||' ACCOUNT ID IS NULL');
15936                  fnd_msg_pub.ADD;
15937                  RAISE fnd_api.g_exc_error;
15938                ELSE
15939                  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id := NULL;
15940                  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_percentage := NULL;
15941                END IF;
15942             END;
15943      ELSE
15944       IF( p_lease_class_code <> 'DIRECT') THEN
15945        fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
15946        fnd_message.set_token ('ACCOUNT_ID', l_lia_rec||' ACCOUNT ID IS NULL');
15947        fnd_msg_pub.ADD;
15948        RAISE fnd_api.g_exc_error;
15949       ELSE
15950          p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_id := NULL;
15951          p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_percentage := NULL;
15952       END IF;
15953      END IF;
15954     ELSE
15955       NULL;
15956     END IF;
15957   END IF;
15958 
15959 pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Accrual Account Check',3);
15960 
15961   IF (NVL(p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT,0) <> 0 ) THEN
15962        pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Deriving Account ID:'||p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT||
15963                              p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id||
15964                              p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_percentage,3);
15965         IF(     (p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT = 1)
15966             AND (p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_percentage=100
15967                  OR p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id IS NOT NULL)
15968            ) THEN
15969              IF (p_lease_class_code ='DIRECT') THEN
15970                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'ACC';
15971              ELSE
15972                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'UNEARN';
15973              END IF;
15974              --dbms_output.put_line('HELLO:ACCOUNTID');
15975                        PN_LEASE_UTILS.GET_ACCOUNT_ID (p_parameter_name           => 'P_ACCOUNTS'
15976                                                     , p_operation                => p_operation
15977                                                     , p_account_id               => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id
15978                                                     , p_account_conc_segs        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_conc_segs
15979                                                     , p_account_segment1         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment1
15980                                                     , p_account_segment2         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment2
15981                                                     , p_account_segment3         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment3
15982                                                     , p_account_segment4         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment4
15983                                                     , p_account_segment5         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment5
15984                                                     , p_account_segment6         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment6
15985                                                     , p_account_segment7         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment7
15986                                                     , p_account_segment8         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment8
15987                                                     , p_account_segment9         => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment9
15988                                                     , p_account_segment10        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment10
15989                                                     , p_account_segment11        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment11
15990                                                     , p_account_segment12        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment12
15991                                                     , p_account_segment13        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment13
15992                                                     , p_account_segment14        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment14
15993                                                     , p_account_segment15        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment15
15994                                                     , p_account_segment16        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment16
15995                                                     , p_account_segment17        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment17
15996                                                     , p_account_segment18        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment18
15997                                                     , p_account_segment19        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment19
15998                                                     , p_account_segment20        => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_segment20
15999                                                     , x_return_status            => x_return_status
16000                                                   );
16001                --dbms_output.put_line('HELLO:GETTING ACCOUNTID'||p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id);
16002           IF (x_return_status = fnd_api.g_ret_sts_error) THEN
16003                 IF ((p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_conc_segs IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_conc_segs <> pn_lease_utils.g_pn_miss_char)) THEN
16004                    fnd_message.set_name ('PN', 'PN_ACCOUNT_CONC_SEGS');
16005                    fnd_message.set_token ('ACCOUNT_CONC_SEGS','Accrued Account:'|| p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_conc_segs);
16006                    fnd_msg_pub.ADD;
16007                    RAISE fnd_api.g_exc_error;
16008                 ELSIF((p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id IS NOT NULL) AND (p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id <> pn_lease_utils.g_pn_miss_num)) THEN
16009                    fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
16010                    fnd_message.set_token ('ACCOUNT_ID', 'Accrued Account:'||p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id);
16011                    fnd_msg_pub.ADD;
16012                    RAISE fnd_api.g_exc_error;
16013                 ELSE
16014                    fnd_message.set_name ('PN', 'PN_ACCOUNT_SEGMENTS');
16015                    fnd_message.set_token ('ACCOUNT_SEGMENTS', 'Accrued Account:'||p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_conc_segs);
16016                    fnd_msg_pub.ADD;
16017                    RAISE fnd_api.g_exc_error;
16018                 END IF;
16019          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
16020                   fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
16021                   fnd_message.set_token ('COLUMN', SUBSTR(l_accrued||'ACCOUNT INFORMATION',3));
16022                   fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
16023                   fnd_msg_pub.ADD;
16024          END IF;
16025 
16026         ELSE
16027             IF(p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id IS NOT NULL) THEN
16028               fnd_message.set_name ('PN', 'PN_DUP_ACCOUNT_IN_DIST');
16029               fnd_message.set_token ('ACCOUNT_CLASS',l_accrued);
16030               fnd_message.set_token ('ACCOUNT_CLASS_A',l_accrued);
16031               fnd_msg_pub.ADD;
16032               RAISE fnd_api.g_exc_error;
16033            ELSE
16034              IF (p_lease_class_code ='DIRECT') THEN
16035                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'ACC';
16036              ELSE
16037                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'UNEARN';
16038              END IF;
16039              pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Accrued Account ID IS about to make NULL',3);
16040            END IF;
16041         END IF;
16042    ELSE--Getting from the lease
16043     IF(trim(p_operation) = trim('CREATE_TERMS')) THEN
16044      IF ((l_accrual_account_id IS NOT NULL) AND (l_accrual_account_id <> pn_lease_utils.g_pn_miss_num)) THEN
16045          p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id:= l_accrual_account_id;
16046           p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_percentage :=100;
16047            IF (p_lease_class_code ='DIRECT') THEN
16048                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'ACC';
16049              ELSE
16050                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'UNEARN';
16051            END IF;
16052       ELSIF( p_payment_terms_tbl(i).term_template_id IS NOT NULL AND p_payment_terms_tbl(i).term_template_id <> pn_lease_utils.g_pn_miss_num) THEN
16053              IF (p_lease_class_code ='DIRECT') THEN
16054                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'ACC';
16055              ELSE
16056                p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code := 'UNEARN';
16057              END IF;
16058             BEGIN
16059              SELECT account_id,percentage
16060              INTO   p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id,p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_percentage
16061              FROM   pn_distributions_all
16062              WHERE  term_template_id = p_payment_terms_tbl(i).term_template_id
16063              AND    account_class    = p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code
16064              AND    payment_term_id IS NULL;
16065             EXCEPTION
16066               WHEN OTHERS THEN
16067                 /*IF(p_lease_class_code <> 'THIRD_PARTY') THEN
16068                   fnd_message.set_name ('PN', 'PN_ACCOUNT_ID');
16069                   fnd_message.set_token ('ACCOUNT_ID', l_accrued||' ACCOUNT ID IS NULL');
16070                   fnd_msg_pub.ADD;
16071                   RAISE fnd_api.g_exc_error;
16072                 ELSE
16073                  NULL;
16074                 END IF;*/
16075                 p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_id := NULL;
16076                 p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_percentage := NULL;
16077             END;
16078      ELSE
16079        NULL;
16080      END IF;
16081     ELSE
16082       NULL;
16083     END IF;
16084    END IF;
16085 
16086  END IF;-- l_project_info Check(Y/N)
16087 
16088 pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Account Insert Account Check',3);
16089 --END---Validate Account
16090     IF (trim(p_operation) = trim('CREATE_TERMS')) THEN
16091      -- BEGIN
16092       --Calling the Insert Procedure
16093        ----------------------dbms_output.put_line('Hello:23');--Rupak
16094         insert_payment_terms_row (p_lease_terms_rec  => p_payment_terms_tbl(i)
16095                                 , p_lease_id         => p_lease_id
16096                                 , p_change_lease_id  => p_lease_change_id
16097                                 , p_lease_context    => p_lease_context
16098                                 , x_return_status    => x_return_status
16099                                 );
16100            pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:INSERT_PAYMENT_TERMS_ROW Return Status:'||x_return_status,3);
16101           ------------------dbms_output.put_line('Create Success:'||x_return_status||i);--Rupak
16102    IF (x_return_status = fnd_api.g_ret_sts_success) THEN
16103   IF(l_project_info = 'N') THEN
16104     FOR m in 1..p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT
16105        LOOP
16106         x_distribution_id := NULL;
16107         l_max_rownum      := NULL;
16108         x_rowid           := NULL;
16109         BEGIN
16110          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
16111                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16112                                          ,x_account_id           =>  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(m).account_id
16113                                          ,x_payment_term_id      =>  p_payment_terms_tbl(i).payment_term_id
16114                                          ,x_term_template_id     =>  NULL--p_payment_terms_tbl(i).term_template_id
16115                                          ,x_account_class        =>  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(m).account_code
16116                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(m).account_percentage
16117                                          ,x_line_number          =>  l_max_rownum
16118                                          ,x_last_update_date     =>  SYSDATE
16119                                          ,x_last_updated_by      =>  fnd_global.user_id
16120                                          ,x_creation_date        =>  SYSDATE
16121                                          ,x_created_by           =>  fnd_global.user_id
16122                                          ,x_last_update_login    =>  fnd_global.login_id
16123                                          ,x_attribute_category   =>  NULL
16124                                          ,x_attribute1           =>  NULL
16125                                          ,x_attribute2           =>  NULL
16126                                          ,x_attribute3           =>  NULL
16127                                          ,x_attribute4           =>  NULL
16128                                          ,x_attribute5           =>  NULL
16129                                          ,x_attribute6           =>  NULL
16130                                          ,x_attribute7           =>  NULL
16131                                          ,x_attribute8           =>  NULL
16132                                          ,x_attribute9           =>  NULL
16133                                          ,x_attribute10          =>  NULL
16134                                          ,x_attribute11          =>  NULL
16135                                          ,x_attribute12          =>  NULL
16136                                          ,x_attribute13          =>  NULL
16137                                          ,x_attribute14          =>  NULL
16138                                          ,x_attribute15          =>  NULL
16139                                          ,x_org_id               =>  g_org_id
16140                                         );
16141 
16142                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
16143             ----------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW'||x_distribution_id);
16144 
16145           ----------------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
16146           --l_max_row_num := l_max_row_num + 1;
16147         EXCEPTION
16148           WHEN OTHERS THEN
16149              ----------------dbms_output.put_line('ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM);
16150              pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
16151         END;
16152     END LOOP;
16153 
16154    ---------------------------------
16155 
16156    FOR m in 1..p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT
16157        LOOP
16158         x_distribution_id := NULL;
16159         l_max_rownum      := NULL;
16160         x_rowid           := NULL;
16161         BEGIN
16162 
16163          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
16164                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16165                                          ,x_account_id           =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(m).account_id
16166                                          ,x_payment_term_id      =>  p_payment_terms_tbl(i).payment_term_id
16167                                          ,x_term_template_id     =>  NULL--p_payment_terms_tbl(i).term_template_id
16168                                          ,x_account_class        =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(m).account_code
16169                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(m).account_percentage
16170                                          ,x_line_number          =>  l_max_rownum
16171                                          ,x_last_update_date     =>  SYSDATE
16172                                          ,x_last_updated_by      =>  fnd_global.user_id
16173                                          ,x_creation_date        =>  SYSDATE
16174                                          ,x_created_by           =>  fnd_global.user_id
16175                                          ,x_last_update_login    =>  fnd_global.login_id
16176                                          ,x_attribute_category   =>  NULL
16177                                          ,x_attribute1           =>  NULL
16178                                          ,x_attribute2           =>  NULL
16179                                          ,x_attribute3           =>  NULL
16180                                          ,x_attribute4           =>  NULL
16181                                          ,x_attribute5           =>  NULL
16182                                          ,x_attribute6           =>  NULL
16183                                          ,x_attribute7           =>  NULL
16184                                          ,x_attribute8           =>  NULL
16185                                          ,x_attribute9           =>  NULL
16186                                          ,x_attribute10          =>  NULL
16187                                          ,x_attribute11          =>  NULL
16188                                          ,x_attribute12          =>  NULL
16189                                          ,x_attribute13          =>  NULL
16190                                          ,x_attribute14          =>  NULL
16191                                          ,x_attribute15          =>  NULL
16192                                          ,x_org_id               =>  g_org_id
16193                                         );
16194 
16195                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
16196                  ----------------dbms_output.put_line('IN ELSE : ELSE:p_terms_liab_rcvl_account_tbl ROW'||x_distribution_id);
16197 
16198           ----------------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
16199           --l_max_row_num := l_max_row_num + 1;
16200         EXCEPTION
16201           WHEN OTHERS THEN
16202              ----------------dbms_output.put_line('p_terms_liab_rcvl_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM);
16203              pvt_debug(g_pkg_name||'p_terms_liab_rcvl_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
16204         END;
16205     END LOOP;
16206 
16207        ----------------------------------
16208       FOR m in 1..p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT
16209        LOOP
16210         x_distribution_id := NULL;
16211         l_max_rownum      := NULL;
16212         x_rowid           := NULL;
16213         BEGIN
16214          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
16215                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16216                                          ,x_account_id           =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(m).account_id
16217                                          ,x_payment_term_id      =>  p_payment_terms_tbl(i).payment_term_id
16218                                          ,x_term_template_id     =>  NULL--p_payment_terms_tbl(i).term_template_id
16219                                          ,x_account_class        =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(m).account_code
16220                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(m).account_percentage
16221                                          ,x_line_number          =>  l_max_rownum
16222                                          ,x_last_update_date     =>  SYSDATE
16223                                          ,x_last_updated_by      =>  fnd_global.user_id
16224                                          ,x_creation_date        =>  SYSDATE
16225                                          ,x_created_by           =>  fnd_global.user_id
16226                                          ,x_last_update_login    =>  fnd_global.login_id
16227                                          ,x_attribute_category   =>  NULL
16228                                          ,x_attribute1           =>  NULL
16229                                          ,x_attribute2           =>  NULL
16230                                          ,x_attribute3           =>  NULL
16231                                          ,x_attribute4           =>  NULL
16232                                          ,x_attribute5           =>  NULL
16233                                          ,x_attribute6           =>  NULL
16234                                          ,x_attribute7           =>  NULL
16235                                          ,x_attribute8           =>  NULL
16236                                          ,x_attribute9           =>  NULL
16237                                          ,x_attribute10          =>  NULL
16238                                          ,x_attribute11          =>  NULL
16239                                          ,x_attribute12          =>  NULL
16240                                          ,x_attribute13          =>  NULL
16241                                          ,x_attribute14          =>  NULL
16242                                          ,x_attribute15          =>  NULL
16243                                          ,x_org_id               =>  g_org_id
16244                                         );
16245 
16246                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
16247                  ----------------dbms_output.put_line('IN ELSE : ELSE:p_terms_accrual_account_tbl ROW'||x_distribution_id);
16248 
16249           ----------------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
16250           --l_max_row_num := l_max_row_num + 1;
16251         EXCEPTION
16252           WHEN OTHERS THEN
16253              ----------------dbms_output.put_line('p_terms_accrual_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM);
16254              pvt_debug(g_pkg_name||'p_terms_accrual_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
16255         END;
16256     END LOOP;
16257        -------------------------------------
16258     END IF;--Success Status
16259 
16260        IF (x_return_status = fnd_api.g_ret_sts_error) THEN
16261           l_error_flag:='Y';
16262           RAISE fnd_api.g_exc_error;
16263        ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
16264           l_error_flag:='Y';
16265           RAISE fnd_api.g_exc_unexpected_error;
16266        END IF;
16267 
16268 
16269 
16270    ELSIF(trim(p_operation) = trim('UPDATE_TERMS')) THEN --UPDATE Version of the Check Starts
16271    pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Account Update Account Check',3);
16272      BEGIN
16273        SELECT max(rownum)
16274        INTO   l_max_rownum
16275        FROM   pn_distributions_all pda
16276        WHERE  pda.payment_term_id = p_payment_terms_tbl(i).payment_term_id
16277        AND    pda.org_id          = g_org_id;
16278      EXCEPTION
16279       WHEN OTHERS THEN
16280         pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:MAX ROWNUM:Exception:'||SQLERRM,3);
16281         NULL;
16282      END;
16283     IF( p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.EXISTS(1)) THEN
16284         l_acc_code := p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(1).account_code;
16285 
16286 
16287      BEGIN
16288       SELECT count(1)
16289       INTO   l_record_count_exp_rev
16290       FROM   pn_distributions_all
16291       WHERE  payment_term_id = p_payment_terms_tbl(i).payment_term_id
16292       AND    account_class   = l_acc_code
16293       AND    org_id          = g_org_id;
16294      EXCEPTION
16295        WHEN NO_DATA_FOUND THEN
16296         l_record_count_exp_rev :=0;
16297      END;
16298 
16299 
16300    pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Updating Expense Account',3);
16301      l_count := 1;
16302 
16303      FOR r_dist_details in cur_dist_details(p_payment_terms_tbl(i).payment_term_id,l_acc_code)
16304       LOOP
16305 
16306         FOR p in 1..p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl.COUNT
16307         LOOP
16308           IF (l_count <= l_record_count_exp_rev) THEN
16309             BEGIN
16310              pn_distributions_pkg.update_row( x_rowid               => r_dist_details.row_id
16311                                             , x_distribution_id     => r_dist_details.distribution_id
16312                                             , x_account_id          => NVL(p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(p).account_id,r_dist_details.account_id)
16313                                              ,x_payment_term_id     => r_dist_details.payment_term_id
16314                                              ,x_term_template_id    => NULL--r_dist_details.term_template_id
16315                                              ,x_account_class       => l_acc_code
16316                                              ,x_percentage          => p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(p).account_percentage
16317                                              ,x_line_number         => r_dist_details.line_number
16318                                              ,x_last_update_date    => SYSDATE
16319                                              ,x_last_updated_by     => fnd_global.user_id
16320                                              ,x_last_update_login   => fnd_global.login_id
16321                                              ,x_attribute_category  => r_dist_details.attribute_category
16322                                              ,x_attribute1          => r_dist_details.attribute1
16323                                              ,x_attribute2          => r_dist_details.attribute2
16324                                              ,x_attribute3          => r_dist_details.attribute3
16325                                              ,x_attribute4          => r_dist_details.attribute4
16326                                              ,x_attribute5          => r_dist_details.attribute5
16327                                              ,x_attribute6          => r_dist_details.attribute6
16328                                              ,x_attribute7          => r_dist_details.attribute7
16329                                              ,x_attribute8          => r_dist_details.attribute8
16330                                              ,x_attribute9          => r_dist_details.attribute9
16331                                              ,x_attribute10         => r_dist_details.attribute10
16332                                              ,x_attribute11         => r_dist_details.attribute11
16333                                              ,x_attribute12         => r_dist_details.attribute12
16334                                              ,x_attribute13         => r_dist_details.attribute13
16335                                              ,x_attribute14         => r_dist_details.attribute14
16336                                              ,x_attribute15         => r_dist_details.attribute15
16337                                              ,x_lease_change_id     => g_lease_change_id
16338                                             );
16339                pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.UPDATE_ROW Successful',3);
16340 
16341               l_count := l_count + 1;
16342               ----------------------dbms_output.put_line('IN IF:UPDATE ROW');
16343               EXCEPTION
16344                 WHEN OTHERS THEN
16345                 NULL;
16346                   ----------------------dbms_output.put_line('In Exception:In Update'||SQLERRM);
16347                   pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:PN_DISTRIBUTIONS_PKG.UPDATE_ROW:Exception:'||SQLERRM,3);
16348               END;
16349           ELSE
16350            BEGIN
16351            pn_distributions_pkg.insert_row (x_rowid              =>  x_rowid
16352                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16353                                          ,x_account_id           =>  NVL(p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(p).account_id,r_dist_details.account_id)
16354                                          ,x_payment_term_id      =>  r_dist_details.payment_term_id
16355                                          ,x_term_template_id     =>  NULL--r_dist_details.term_template_id
16356                                          ,x_account_class        =>  l_acc_code
16357                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_exp_rev_accounts_tbl(p).account_percentage
16358                                          ,x_line_number          =>  l_max_rownum
16359                                          ,x_last_update_date     =>  SYSDATE
16360                                          ,x_last_updated_by      =>  fnd_global.user_id
16361                                          ,x_creation_date        =>  SYSDATE
16362                                          ,x_created_by           =>  fnd_global.user_id
16363                                          ,x_last_update_login    =>  fnd_global.login_id
16364                                          ,x_attribute_category   =>  NULL
16365                                          ,x_attribute1           =>  NULL
16366                                          ,x_attribute2           =>  NULL
16367                                          ,x_attribute3           =>  NULL
16368                                          ,x_attribute4           =>  NULL
16369                                          ,x_attribute5           =>  NULL
16370                                          ,x_attribute6           =>  NULL
16371                                          ,x_attribute7           =>  NULL
16372                                          ,x_attribute8           =>  NULL
16373                                          ,x_attribute9           =>  NULL
16374                                          ,x_attribute10          =>  NULL
16375                                          ,x_attribute11          =>  NULL
16376                                          ,x_attribute12          =>  NULL
16377                                          ,x_attribute13          =>  NULL
16378                                          ,x_attribute14          =>  NULL
16379                                          ,x_attribute15          =>  NULL
16380                                          ,x_org_id               =>  g_org_id--fnd_global.org_id
16381                                         );
16382                     pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.INSERT_ROW for Expense Revenue Successful',3);
16383 
16384           EXCEPTION
16385             WHEN OTHERS THEN
16386                 pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.INSERT_ROW for Expense Revenue :Exception:'||SQLERRM,3);
16387               END;
16388         END IF;
16389        END LOOP;
16390      END LOOP;
16391    END IF;
16392 pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Updating Receiavable-Liability Account',3);
16393 l_lia_exist_count := NULL;
16394      ----Receivable And Liability
16395    IF( p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.EXISTS(1)) THEN
16396        l_acc_code := p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(1).account_code;
16397       pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Receiavable-Liability Account:'||l_acc_code||'-'||p_payment_terms_tbl(i).payment_term_id||'-'||g_org_id,3);
16398        BEGIN
16399          SELECT COUNT(1)
16400          INTO   l_lia_exist_count
16401          FROM   pn_distributions_all
16402          WHERE  account_class = l_acc_code
16403          AND    payment_term_id = p_payment_terms_tbl(i).payment_term_id
16404          AND    org_id = g_org_id;
16405          pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Receivable/Liability Account Class Count:'||l_lia_exist_count,3);
16406        EXCEPTION
16407          WHEN OTHERS THEN
16408             l_lia_exist_count := 0;
16409             pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Receivable/Liability Distribution:'||l_acc_code||' doesnt exist',3);
16410        END;
16411     IF(l_lia_exist_count > 0) THEN
16412        FOR r_dist_details in cur_dist_details(p_payment_terms_tbl(i).payment_term_id,l_acc_code)
16413        LOOP
16414         FOR p in 1..p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT
16415         LOOP
16416           IF(p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_id IS NOT NULL) THEN
16417             BEGIN
16418              pn_distributions_pkg.update_row( x_rowid               => r_dist_details.row_id
16419                                             , x_distribution_id     => r_dist_details.distribution_id
16420                                             , x_account_id          => NVL(p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_id,r_dist_details.account_id)
16421                                              ,x_payment_term_id     => r_dist_details.payment_term_id
16422                                              ,x_term_template_id    => NULL--r_dist_details.term_template_id
16423                                              ,x_account_class       => l_acc_code
16424                                              ,x_percentage          => p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_percentage
16425                                              ,x_line_number         => r_dist_details.line_number
16426                                              ,x_last_update_date    => SYSDATE
16427                                              ,x_last_updated_by     => fnd_global.user_id
16428                                              ,x_last_update_login   => fnd_global.login_id
16429                                              ,x_attribute_category  => r_dist_details.attribute_category
16430                                              ,x_attribute1          => r_dist_details.attribute1
16431                                              ,x_attribute2          => r_dist_details.attribute2
16432                                              ,x_attribute3          => r_dist_details.attribute3
16433                                              ,x_attribute4          => r_dist_details.attribute4
16434                                              ,x_attribute5          => r_dist_details.attribute5
16435                                              ,x_attribute6          => r_dist_details.attribute6
16436                                              ,x_attribute7          => r_dist_details.attribute7
16437                                              ,x_attribute8          => r_dist_details.attribute8
16438                                              ,x_attribute9          => r_dist_details.attribute9
16439                                              ,x_attribute10         => r_dist_details.attribute10
16440                                              ,x_attribute11         => r_dist_details.attribute11
16441                                              ,x_attribute12         => r_dist_details.attribute12
16442                                              ,x_attribute13         => r_dist_details.attribute13
16443                                              ,x_attribute14         => r_dist_details.attribute14
16444                                              ,x_attribute15         => r_dist_details.attribute15
16445                                              ,x_lease_change_id     => g_lease_change_id
16446                                             );
16447                pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.UPDATE_ROW for Liability and Receivable Successful',3);
16448 
16449               l_count := l_count + 1;
16450               ----------------------dbms_output.put_line('IN IF:UPDATE ROW');
16451               EXCEPTION
16452                 WHEN OTHERS THEN
16453                   ----------------------dbms_output.put_line('In Exception:In Update'||SQLERRM);
16454                   pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.UPDATE_ROW for Liability and Receivable:Exception:'||SQLERRM,3);
16455               END;
16456           ELSE
16457            IF(p_lease_class_code = 'DIRECT') THEN
16458             BEGIN
16459               DELETE FROM pn_distributions_all
16460               WHERE  account_class = l_acc_code
16461               AND    payment_term_id = p_payment_terms_tbl(i).payment_term_id
16462               AND    org_id = g_org_id;
16463               COMMIT;
16464               pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.Liability and Receivable DELETE ROW',3);
16465             EXCEPTION
16466               WHEN OTHERS THEN
16467                 pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.Liability and Receivable DELETE ROW Successful',3);
16468             END;
16469            ELSE
16470              pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.Cannot delete the Liability and Receivable for Revenue/Sublease',3);
16471              fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16472              fnd_message.set_token('ERR_MSG', 'Cannot make the Liability/Receivable ID to NULL');
16473              fnd_msg_pub.ADD;
16474              RAISE fnd_api.g_exc_error;
16475            END IF;
16476           END IF;
16477          END LOOP;
16478       END LOOP;
16479     ELSE
16480        FOR p in 1..p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl.COUNT
16481        LOOP
16482         x_distribution_id := NULL;
16483         l_max_rownum      := NULL;
16484         x_rowid           := NULL;
16485         BEGIN
16486 
16487          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
16488                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16489                                          ,x_account_id           =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_id
16490                                          ,x_payment_term_id      =>  p_payment_terms_tbl(i).payment_term_id
16491                                          ,x_term_template_id     =>  NULL--p_payment_terms_tbl(i).term_template_id
16492                                          ,x_account_class        =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_code
16493                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_liab_rcvl_account_tbl(p).account_percentage
16494                                          ,x_line_number          =>  l_max_rownum
16495                                          ,x_last_update_date     =>  SYSDATE
16496                                          ,x_last_updated_by      =>  fnd_global.user_id
16497                                          ,x_creation_date        =>  SYSDATE
16498                                          ,x_created_by           =>  fnd_global.user_id
16499                                          ,x_last_update_login    =>  fnd_global.login_id
16500                                          ,x_attribute_category   =>  NULL
16501                                          ,x_attribute1           =>  NULL
16502                                          ,x_attribute2           =>  NULL
16503                                          ,x_attribute3           =>  NULL
16504                                          ,x_attribute4           =>  NULL
16505                                          ,x_attribute5           =>  NULL
16506                                          ,x_attribute6           =>  NULL
16507                                          ,x_attribute7           =>  NULL
16508                                          ,x_attribute8           =>  NULL
16509                                          ,x_attribute9           =>  NULL
16510                                          ,x_attribute10          =>  NULL
16511                                          ,x_attribute11          =>  NULL
16512                                          ,x_attribute12          =>  NULL
16513                                          ,x_attribute13          =>  NULL
16514                                          ,x_attribute14          =>  NULL
16515                                          ,x_attribute15          =>  NULL
16516                                          ,x_org_id               =>  g_org_id
16517                                         );
16518 
16519                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:UPDATE_TERMS:RECEIVABLES?LIABILITY:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
16520                  ----------------dbms_output.put_line('IN ELSE : ELSE:p_terms_liab_rcvl_account_tbl ROW'||x_distribution_id);
16521 
16522           ----------------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
16523           --l_max_row_num := l_max_row_num + 1;
16524         EXCEPTION
16525           WHEN OTHERS THEN
16526              ----------------dbms_output.put_line('p_terms_liab_rcvl_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM);
16527              pvt_debug(g_pkg_name||'p_terms_liab_rcvl_account_tbl:UPDATE_TERMS:RECEIVABLES?LIABILITY:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
16528         END;
16529       END LOOP;
16530     END IF; -- (COUNT > 0)
16531    END IF; --
16532            ----Accrual
16533 
16534     l_acc_exist_count := NULL;
16535     pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Before Updating Accrual Account'||p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT,3);
16536 
16537   IF( p_payment_terms_tbl(i).p_terms_accrual_account_tbl.EXISTS(1)) THEN
16538        l_acc_code := p_payment_terms_tbl(i).p_terms_accrual_account_tbl(1).account_code;
16539    pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Accrual Account Class'||l_acc_code||'-'||p_payment_terms_tbl(i).payment_term_id||'-'||g_org_id,3);
16540        BEGIN
16541          SELECT COUNT(1)
16542          INTO   l_acc_exist_count
16543          FROM   pn_distributions_all
16544          WHERE  account_class = l_acc_code
16545          AND    payment_term_id = p_payment_terms_tbl(i).payment_term_id
16546          AND    org_id = g_org_id;
16547          pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Accrual Account Class Count:'||l_acc_exist_count,3);
16548        EXCEPTION
16549          WHEN OTHERS THEN
16550             l_acc_exist_count := 0;
16551             pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Distribution:'||l_acc_code||' doesnt exist',3);
16552        END;
16553     IF(l_acc_exist_count > 0) THEN
16554 
16555        FOR r_dist_details in cur_dist_details(p_payment_terms_tbl(i).payment_term_id,l_acc_code)
16556        LOOP
16557         FOR p in 1..p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT
16558         LOOP
16559           IF(p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_id IS NOT NULL) THEN
16560            BEGIN
16561              pn_distributions_pkg.update_row( x_rowid               => r_dist_details.row_id
16562                                             , x_distribution_id     => r_dist_details.distribution_id
16563                                             , x_account_id          => NVL(p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_id,r_dist_details.account_id)
16564                                              ,x_payment_term_id     => r_dist_details.payment_term_id
16565                                              ,x_term_template_id    => NULL--r_dist_details.term_template_id
16566                                              ,x_account_class       => l_acc_code
16567                                              ,x_percentage          => p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_percentage
16568                                              ,x_line_number         => r_dist_details.line_number
16569                                              ,x_last_update_date    => SYSDATE
16570                                              ,x_last_updated_by     => fnd_global.user_id
16571                                              ,x_last_update_login   => fnd_global.login_id
16572                                              ,x_attribute_category  => r_dist_details.attribute_category
16573                                              ,x_attribute1          => r_dist_details.attribute1
16574                                              ,x_attribute2          => r_dist_details.attribute2
16575                                              ,x_attribute3          => r_dist_details.attribute3
16576                                              ,x_attribute4          => r_dist_details.attribute4
16577                                              ,x_attribute5          => r_dist_details.attribute5
16578                                              ,x_attribute6          => r_dist_details.attribute6
16579                                              ,x_attribute7          => r_dist_details.attribute7
16580                                              ,x_attribute8          => r_dist_details.attribute8
16581                                              ,x_attribute9          => r_dist_details.attribute9
16582                                              ,x_attribute10         => r_dist_details.attribute10
16583                                              ,x_attribute11         => r_dist_details.attribute11
16584                                              ,x_attribute12         => r_dist_details.attribute12
16585                                              ,x_attribute13         => r_dist_details.attribute13
16586                                              ,x_attribute14         => r_dist_details.attribute14
16587                                              ,x_attribute15         => r_dist_details.attribute15
16588                                              ,x_lease_change_id     => g_lease_change_id
16589                                             );
16590                pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.UPDATE_ROW for Accrual Successful',3);
16591 
16592               l_count := l_count + 1;
16593               ----------------------dbms_output.put_line('IN IF:UPDATE ROW');
16594               EXCEPTION
16595                 WHEN OTHERS THEN
16596                   ----------------------dbms_output.put_line('In Exception:In Update'||SQLERRM);
16597                   pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.UPDATE_ROW for Accrual:Exception:'||SQLERRM,3);
16598               END;
16599           ELSE
16600             BEGIN
16601               DELETE FROM pn_distributions_all
16602               WHERE  account_class = l_acc_code
16603               AND    payment_term_id = p_payment_terms_tbl(i).payment_term_id
16604               AND    org_id = g_org_id;
16605 
16606               pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.DELETE ROW for Accrual',3);
16607             EXCEPTION
16608               WHEN OTHERS THEN
16609                 pvt_debug(g_pkg_name||'PN_DISTRIBUTIONS_PKG.DELETE ROW for Accrual Successful',3);
16610             END;
16611           END IF;
16612          END LOOP;
16613       END LOOP;
16614    ELSE
16615      FOR p in 1..p_payment_terms_tbl(i).p_terms_accrual_account_tbl.COUNT
16616      LOOP
16617         x_distribution_id := NULL;
16618         l_max_rownum      := NULL;
16619         x_rowid           := NULL;
16620         BEGIN
16621          pn_distributions_pkg.insert_row (x_rowid                =>  x_rowid
16622                                          ,x_distribution_id      =>  x_distribution_id--r_dist_details.distribution_id
16623                                          ,x_account_id           =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_id
16624                                          ,x_payment_term_id      =>  p_payment_terms_tbl(i).payment_term_id
16625                                          ,x_term_template_id     =>  NULL--p_payment_terms_tbl(i).term_template_id
16626                                          ,x_account_class        =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_code
16627                                          ,x_percentage           =>  p_payment_terms_tbl(i).p_terms_accrual_account_tbl(p).account_percentage
16628                                          ,x_line_number          =>  l_max_rownum
16629                                          ,x_last_update_date     =>  SYSDATE
16630                                          ,x_last_updated_by      =>  fnd_global.user_id
16631                                          ,x_creation_date        =>  SYSDATE
16632                                          ,x_created_by           =>  fnd_global.user_id
16633                                          ,x_last_update_login    =>  fnd_global.login_id
16634                                          ,x_attribute_category   =>  NULL
16635                                          ,x_attribute1           =>  NULL
16636                                          ,x_attribute2           =>  NULL
16637                                          ,x_attribute3           =>  NULL
16638                                          ,x_attribute4           =>  NULL
16639                                          ,x_attribute5           =>  NULL
16640                                          ,x_attribute6           =>  NULL
16641                                          ,x_attribute7           =>  NULL
16642                                          ,x_attribute8           =>  NULL
16643                                          ,x_attribute9           =>  NULL
16644                                          ,x_attribute10          =>  NULL
16645                                          ,x_attribute11          =>  NULL
16646                                          ,x_attribute12          =>  NULL
16647                                          ,x_attribute13          =>  NULL
16648                                          ,x_attribute14          =>  NULL
16649                                          ,x_attribute15          =>  NULL
16650                                          ,x_org_id               =>  g_org_id
16651                                         );
16652 
16653                  pvt_debug(g_pkg_name||'ADD_DIST_ACCOUNT:UPDATE_TERMS:PN_DISTRIBUTIONS_PKG.INSERT_ROW Successful',3);
16654                  --------------dbms_output.put_line('IN ELSE : ELSE:p_terms_accrual_account_tbl ROW'||x_distribution_id);
16655 
16656           --------------------dbms_output.put_line('IN ELSE : ELSE:INSERT ROW');
16657           --l_max_row_num := l_max_row_num + 1;
16658         EXCEPTION
16659           WHEN OTHERS THEN
16660              --------------dbms_output.put_line('p_terms_accrual_account_tbl:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM);
16661              pvt_debug(g_pkg_name||'p_terms_accrual_account_tbl:UPDATE_TERMS:PN_DISTRIBUTIONS_PKG.INSERT_ROW:Exception:'||SQLERRM,3);
16662         END;
16663      END LOOP;
16664    END IF; --(COUNT > 0)
16665   END IF;
16666  END IF;--CREATE_TERMS-UPDATE_TERMS Check
16667 END IF; --l_project_info Check
16668 --OOPS-1
16669     EXCEPTION
16670      WHEN fnd_api.g_exc_error THEN
16671           l_err_payment_count := l_err_payment_count + 1;
16672       ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM);
16673         pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
16674      WHEN OTHERS THEN
16675         l_err_payment_count := l_err_payment_count + 1;
16676       ----------------------dbms_output.put_line('-VALIDATE_CONTACTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM);
16677         pvt_debug(g_pkg_name||'-VALIDATE_PAYMENTS_TBL:LOOOPING:EXCEPTION:'||SQLERRM,3);
16678     END;
16679    END LOOP;
16680 
16681     IF ( l_err_payment_count = 0) THEN
16682        x_return_status := fnd_api.g_ret_sts_success;
16683     ELSE
16684       x_return_status := fnd_api.g_ret_sts_error;
16685     END IF;
16686 
16687   EXCEPTION
16688         WHEN OTHERS THEN
16689            x_return_status := fnd_api.g_ret_sts_unexp_error;
16690           pvt_debug(g_pkg_name||'-VALIDATE_PAYMENT_TERMS_TBL:Exception:'||SQLERRM,3);
16691 
16692  END validate_payment_terms_tbl;
16693 
16694    PROCEDURE update_terms (
16695       p_api_version                  IN            NUMBER
16696     , p_init_msg_list                IN            VARCHAR2        := FND_API.G_FALSE
16697     , p_commit                       IN            VARCHAR2        := FND_API.G_FALSE
16698     , p_validate                     IN            VARCHAR2        := FND_API.G_FALSE
16699     , p_payment_terms_tbl            IN OUT  NOCOPY   lease_terms_tbl
16700     , p_lease_id                     IN            NUMBER
16701     , p_lease_context                IN            VARCHAR2
16702     , x_return_status                   OUT NOCOPY VARCHAR2
16703     , x_msg_count                       OUT NOCOPY NUMBER
16704     , x_msg_data                        OUT NOCOPY VARCHAR2
16705    )
16706    AS
16707       l_api_version      CONSTANT NUMBER                                              := 1.0;
16708       l_api_name         CONSTANT VARCHAR2 (30)                                       := 'Update_Payment';
16709       l_api_name_full    CONSTANT VARCHAR2 (61)                                       := g_pkg_name || '.' || l_api_name;
16710       l_return_status             VARCHAR2 (1);
16711       l_lease_class_code          VARCHAR2 (30);
16712       l_lease_commencement_date   DATE;
16713       l_lease_termination_date    DATE;
16714       l_parent_lease_id           NUMBER;
16715       --l_pterm_rec                 payments_rec_type                                   := p_pterm_rec;
16716       --l_payterm_rec               pn_payment_terms_all%ROWTYPE;
16717       l_termtemp_type             pn_term_templates_all.payment_term_type_code%TYPE;
16718       l_schedule_context          VARCHAR2(10) := NULL;
16719       l_requestid                 NUMBER := NULL;
16720 
16721       l_assign_flag VARCHAR2(1):= 'N';
16722       l_lease_id    NUMBER;
16723       l_terms_record_cnt NUMBER;
16724       l_terms_acc_cnt     NUMBER;
16725       e_exit_current_term EXCEPTION;
16726 
16727       l_lease_change_id NUMBER;
16728 
16729       CURSOR cur_payment_terms(p_payment_term_id NUMBER)
16730       IS
16731       SELECT *
16732       FROM pn_payment_terms_all
16733       WHERE payment_term_id = p_payment_term_id;
16734 
16735       CURSOR cur_dist_details(p_payment_term_id NUMBER)
16736       IS
16737       SELECT *
16738       FROM  pn_distributions_all
16739       WHERE payment_term_id = p_payment_term_id;
16740 
16741 
16742      -- l_payterm_details           cur_payment_terms%ROWTYPE;
16743       l_lease_status              pn_leases_all.status%TYPE;
16744       l_lease_context             VARCHAR2(20);
16745       e_invalid_mode EXCEPTION;
16746 
16747       k                      NUMBER;
16748       l_change_account_count NUMBER;
16749 
16750       p_terms_exp_rev_accounts_tbl  terms_exp_rev_accounts_tbl;
16751       p_terms_accrual_account_tbl   terms_exp_rev_accounts_tbl;
16752       p_terms_liab_rcvl_account_tbl terms_exp_rev_accounts_tbl;
16753 
16754       l_error_count_err  NUMBER:=0;
16755 
16756      p_payment_terms_tbl_tmp       lease_terms_tbl;
16757      p NUMBER:=NULL;
16758 
16759      p_payment_terms_tbl_update  lease_terms_tbl;
16760      q NUMBER :=NULL;
16761     BEGIN
16762       ----------------------dbms_output.put_line (' IN Private :In Procedure:update_lease FIRST');--Rupak
16763       x_return_status := fnd_api.g_ret_sts_success;
16764       pvt_debug(g_pkg_name||'-Inside UPDATE_TERMS:',3);
16765       -- Standard start of API savepoint
16766       SAVEPOINT update_payment_pvt;
16767 
16768       -- Initialize message list if p_init_msg_list is set to TRUE
16769       IF fnd_api.to_boolean (p_init_msg_list)
16770       THEN
16771          fnd_msg_pub.initialize;
16772       END IF;
16773 
16774       -- Standard call to check for call compatibility
16775       IF NOT fnd_api.compatible_api_call (l_api_version
16776                                         , p_api_version
16777                                         , l_api_name
16778                                         , g_pkg_name
16779                                          )
16780       THEN
16781          RAISE fnd_api.g_exc_error;
16782       END IF;
16783 
16784       -- Initialize the return status.
16785       x_return_status := fnd_api.g_ret_sts_success;
16786 
16787        IF p_lease_id IS NULL THEN
16788             fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
16789             fnd_message.set_token ('API_NAME', l_api_name_full);
16790             fnd_message.set_token ('NULL_PARAM', 'LEASE_ID');
16791             fnd_msg_pub.ADD;
16792             RAISE fnd_api.g_exc_error;
16793       ELSE
16794             BEGIN
16795               l_lease_context := PN_LEASE_UTILS.get_lease_context(p_lease_id,g_org_id);
16796             SELECT pla.lease_class_code
16797                  , pld.lease_commencement_date
16798                  , pld.lease_termination_date
16799                  , pla.parent_lease_id
16800                  , DECODE (pla.lease_class_code
16801                          , 'DIRECT', 'PAYMENT'
16802                          , 'THIRD_PARTY', 'BILLING'
16803                           )
16804                  , PN_LEASE_UTILS.get_lease_change_id(p_lease_id,g_org_id)
16805                  , pla.status
16806               INTO l_lease_class_code
16807                  , l_lease_commencement_date
16808                  , l_lease_termination_date
16809                  , l_parent_lease_id
16810                  , l_termtemp_type
16811                  , l_lease_change_id
16812                  , l_lease_status
16813               FROM pn_leases_all pla, pn_lease_details_all pld
16814              WHERE pla.lease_id = p_lease_id
16815                AND pla.lease_id = pld.lease_id
16816                AND pld.org_id = pla.org_id
16817                AND pla.org_id = g_org_id;
16818 
16819               /* IF ((l_lease_status = 'D' and (l_lease_context IN ('EDIT','AMEND')))
16820                OR (l_lease_status = 'F' and (l_lease_context NOT IN ('EDIT','AMEND')))) THEN
16821                fnd_message.set_name ('PN', 'PN_INV_LEASECONT');
16822                fnd_message.set_token ('API_NAME', l_api_name_full);
16823                fnd_message.set_token ('LEASE_ID', p_lease_id);
16824                fnd_msg_pub.ADD;
16825                RAISE fnd_api.g_exc_error;
16826                END IF;*/
16827 
16828          EXCEPTION
16829             WHEN OTHERS THEN
16830                fnd_message.set_name ('PN', 'PN_API_UNKNOWN_ERROR');
16831                fnd_message.set_token ('COLUMN', 'Unable to derive the Lease Information');
16832                fnd_message.set_token ('P_TEXT', l_api_name_full|| '-'|| SQLERRM);
16833                fnd_msg_pub.ADD;
16834                RAISE fnd_api.g_exc_unexpected_error;
16835          END;
16836       END IF;
16837 
16838 
16839             /*Validation to check for Not null values*/
16840         ------------------------dbms_output.put_line (' IN Private 1');
16841       -- -------------------------------------------
16842 -- Make sure the Lease Number or Lease Id is not null
16843 -- --------------------------------------------------
16844 ----Not yet Created..Rupak
16845   --BEGIN
16846 
16847      q:=1;
16848      FOR i IN 1..p_payment_terms_tbl.COUNT
16849      LOOP
16850        IF(p_payment_terms_tbl (i).payment_term_id IS NOT NULL OR p_payment_terms_tbl (i).payment_term_id <> pn_lease_utils.g_pn_miss_num) THEN
16851          pvt_debug(g_pkg_name||'-update_terms:Assigning the term table values to other table',3);
16852           p_payment_terms_tbl_update(q) := p_payment_terms_tbl(i);
16853           q:= q+1;
16854        END IF;
16855      END LOOP;
16856  IF(p_payment_terms_tbl_update.COUNT > 0 ) THEN
16857     validate_payment_terms_tbl( p_api_name_full           =>   l_api_name_full
16858                               , p_payment_terms_tbl       =>   p_payment_terms_tbl_update
16859                               , p_lease_id                =>   p_lease_id
16860                               , p_lease_class_code        =>   l_lease_class_code
16861                               , p_lease_commencement_date =>   l_lease_commencement_date
16862                               , p_lease_termination_date  =>   l_lease_termination_date
16863                               , p_termtemp_type           =>   l_termtemp_type
16864                               , p_parent_lease_id         =>   l_parent_lease_id
16865                               , p_lease_change_id         =>   l_parent_lease_id
16866                               , p_lease_status            =>   l_lease_status
16867                               , p_lease_context           =>   p_lease_context
16868                               , p_operation               =>   'UPDATE_TERMS'
16869                               , x_return_status           =>   x_return_status
16870                               );
16871                   pvt_debug(g_pkg_name||'-UPDATE_TERMS:VALIDATE_PAYMENT_TERMS_TBL Return Status'||x_return_status,3);
16872                  IF (x_return_status = fnd_api.g_ret_sts_error) THEN
16873                    ----------------------dbms_output.put_line('Private 2 After validate_payment_terms_tbl');--Rupak
16874                      RAISE FND_API.G_EXC_ERROR;
16875                   ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
16876                     ----------------------dbms_output.put_line('Private 3 After validate_payment_terms_tbl');--Rupak
16877                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
16878                   END IF;
16879   /*EXCEPTION
16880     WHEN fnd_api.g_exc_error THEN
16881           pvt_debug(g_pkg_name||'-UPDATE_TERMS:validate_payment_terms_tbl:Exception:'||SQLERRM,3);
16882     WHEN OTHERS THEN
16883          pvt_debug(g_pkg_name||'-UPDATE_TERMS:validate_payment_terms_tbl:Unexpected Exception:'||SQLERRM,3);
16884       ----------------------dbms_output.put_line('Private 4'||SQLERRM);
16885   END;*/
16886      -- --------------------dbms_output.put_line('Private 5 AFTER VALIDATE PAYMENT');--Rupak
16887    -------------------------------------------------------
16888 
16889   pvt_debug(g_pkg_name||'-UPDATE_TERMS:About to Update Payments',3);
16890      l_terms_record_cnt := p_payment_terms_tbl_update.COUNT;
16891 
16892      FOR i in p_payment_terms_tbl_update.FIRST..p_payment_terms_tbl_update.LAST
16893       LOOP
16894        --------dbms_output.put_line('123:HELLO');--Rupak
16895      IF(p_payment_terms_tbl_update (i).payment_term_id IS NOT NULL OR p_payment_terms_tbl_update (i).payment_term_id <> pn_lease_utils.g_pn_miss_num) THEN
16896         --------dbms_output.put_line('123:HELLO-1');--Rupak
16897       IF (trim(p_payment_terms_tbl_update(i).error_flag) <> 'Y') THEN
16898         BEGIN
16899         l_assign_flag := 'N';
16900         --------dbms_output.put_line('123:HELLO-2');--Rupak
16901           pvt_debug(g_pkg_name||'-UPDATE_TERMS:Inside IF Condition of the Payment Table'||p_payment_terms_tbl_update(i).payment_term_id,3);
16902         FOR r_payment_terms in cur_payment_terms(p_payment_terms_tbl_update(i).payment_term_id)
16903          LOOP
16904           BEGIN
16905             --------dbms_output.put_line('Inside The IF Y and Loop:2'||p_payment_terms_tbl_update(i).payment_term_id||l_assign_flag);--Rupak
16906            IF ((r_payment_terms.payment_term_id = p_payment_terms_tbl_update(i).payment_term_id ) AND (l_assign_flag = 'N')) THEN
16907               pvt_debug(g_pkg_name||'-UPDATE_TERMS:Deep Inside IF Condition of the Payment Table PaymentID:'||p_payment_terms_tbl_update(i).payment_term_id,3);
16908              IF (p_lease_context IN ('ED','AM') AND g_status <>'D') THEN
16909                 -- --------------------dbms_output.put_line('Inside The IF Y and Loop:4');--Rupak
16910 
16911                  IF (p_payment_terms_tbl_update(i).payment_purpose_code IS NOT NULL AND p_payment_terms_tbl_update(i).payment_purpose_code <> r_payment_terms.payment_purpose_code) THEN
16912                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:payment_purpose_code',3);
16913                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16914                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:payment_purpose_code was being updated');
16915                          fnd_msg_pub.ADD;
16916                          RAISE fnd_api.g_exc_error;--e_invalid_mode;
16917                  END IF;
16918                  IF(p_payment_terms_tbl_update(i).payment_term_type_code IS NOT NULL AND p_payment_terms_tbl_update(i).payment_term_type_code <> r_payment_terms.payment_term_type_code) THEN
16919                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:payment_term_type_code',3);
16920                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16921                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:payment_term_type_code was being updated');
16922                          fnd_msg_pub.ADD;
16923                          RAISE fnd_api.g_exc_error;
16924                  END IF;
16925                  IF(p_payment_terms_tbl_update(i).frequency_code IS NOT NULL AND p_payment_terms_tbl_update(i).frequency_code <> r_payment_terms.frequency_code) THEN
16926                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:frequency_code',3);
16927                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16928                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:frequency_code was being updated');
16929                          fnd_msg_pub.ADD;
16930                          RAISE fnd_api.g_exc_error;
16931                  END IF;
16932                  IF(p_payment_terms_tbl_update(i).lease_id IS NOT NULL AND p_payment_terms_tbl_update(i).lease_id <> r_payment_terms.lease_id) THEN
16933                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:lease_id',3);
16934                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16935                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:lease_id was being updated');
16936                          fnd_msg_pub.ADD;
16937                          RAISE fnd_api.g_exc_error;
16938                  END IF;
16939                 IF(p_payment_terms_tbl_update(i).start_date IS NOT NULL AND p_payment_terms_tbl_update(i).start_date <> r_payment_terms.start_date) THEN
16940                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:start_date',3);
16941                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16942                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:start_date was being updated');
16943                          fnd_msg_pub.ADD;
16944                          RAISE fnd_api.g_exc_error;
16945                  END IF;
16946                  IF(p_payment_terms_tbl_update(i).code_combination_id IS NOT NULL AND p_payment_terms_tbl_update(i).code_combination_id <> r_payment_terms.code_combination_id) THEN
16947                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:code_combination_id',3);
16948                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16949                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:code_combination_id was being updated');
16950                          fnd_msg_pub.ADD;
16951                          RAISE fnd_api.g_exc_error;
16952                  END IF;
16953                  IF(p_payment_terms_tbl_update(i).vendor_site_id IS NOT NULL AND p_payment_terms_tbl_update(i).vendor_site_id <> r_payment_terms.vendor_site_id) THEN
16954                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:vendor_site_id',3);
16955                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16956                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:vendor_site_id was being updated');
16957                          fnd_msg_pub.ADD;
16958                          RAISE fnd_api.g_exc_error;
16959                  END IF;
16960                  IF(p_payment_terms_tbl_update(i).target_date IS NOT NULL AND p_payment_terms_tbl_update(i).target_date <> r_payment_terms.target_date) THEN
16961                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:target_date',3);
16962                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16963                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:target_date was being updated');
16964                          fnd_msg_pub.ADD;
16965                          RAISE fnd_api.g_exc_error;
16966                  END IF;
16967                  IF(p_payment_terms_tbl_update(i).actual_amount IS NOT NULL AND p_payment_terms_tbl_update(i).actual_amount <> r_payment_terms.actual_amount) THEN
16968                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:actual_amount',3);
16969                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16970                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:actual_amount was being updated');
16971                          fnd_msg_pub.ADD;
16972                          RAISE fnd_api.g_exc_error;
16973                  END IF;
16974                  IF(p_payment_terms_tbl_update(i).estimated_amount IS NOT NULL AND p_payment_terms_tbl_update(i).estimated_amount <> r_payment_terms.estimated_amount) THEN
16975                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:estimated_amount',3);
16976                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16977                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:estimated_amount was being updated');
16978                          fnd_msg_pub.ADD;
16979                          RAISE fnd_api.g_exc_error;
16980                  END IF;
16981                  IF(p_payment_terms_tbl_update(i).set_of_books_id IS NOT NULL AND p_payment_terms_tbl_update(i).set_of_books_id <> r_payment_terms.set_of_books_id) THEN
16982                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:set_of_books_id',3);
16983                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16984                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:set_of_books_id was being updated');
16985                          fnd_msg_pub.ADD;
16986                          RAISE fnd_api.g_exc_error;
16987                  END IF;
16988                  IF(p_payment_terms_tbl_update(i).currency_code IS NOT NULL AND p_payment_terms_tbl_update(i).currency_code <> r_payment_terms.currency_code) THEN
16989                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:currency_code',3);
16990                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16991                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:currency_code was being updated');
16992                          fnd_msg_pub.ADD;
16993                          RAISE fnd_api.g_exc_error;
16994                  END IF;
16995                  IF(p_payment_terms_tbl_update(i).rate IS NOT NULL AND p_payment_terms_tbl_update(i).rate <> r_payment_terms.rate) THEN
16996                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:rate',3);
16997                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
16998                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:rate was being updated');
16999                          fnd_msg_pub.ADD;
17000                          RAISE fnd_api.g_exc_error;
17001                  END IF;
17002                  IF(p_payment_terms_tbl_update(i).normalize IS NOT NULL AND p_payment_terms_tbl_update(i).normalize <> r_payment_terms.normalize) THEN
17003                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:normalize',3);
17004                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17005                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:normalize was being updated');
17006                          fnd_msg_pub.ADD;
17007                          RAISE fnd_api.g_exc_error;
17008                  END IF;
17009 
17010                  IF(p_payment_terms_tbl_update(i).schedule_day IS NOT NULL AND p_payment_terms_tbl_update(i).schedule_day <> r_payment_terms.schedule_day) THEN
17011                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:schedule_day',3);
17012                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17013                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:schedule_day was being updated');
17014                          fnd_msg_pub.ADD;
17015                          RAISE fnd_api.g_exc_error;
17016                  END IF;
17017 
17018                  IF(p_payment_terms_tbl_update(i).project_id IS NOT NULL AND p_payment_terms_tbl_update(i).project_id <> r_payment_terms.project_id) THEN
17019                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:project_id',3);
17020                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17021                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:project_id was being updated');
17022                          fnd_msg_pub.ADD;
17023                          RAISE fnd_api.g_exc_error;
17024                  END IF;
17025                  IF(p_payment_terms_tbl_update(i).task_id IS NOT NULL AND p_payment_terms_tbl_update(i).task_id <> r_payment_terms.task_id) THEN
17026                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:task_id',3);
17027                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17028                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:task_id was being updated');
17029                          fnd_msg_pub.ADD;
17030                          RAISE fnd_api.g_exc_error;
17031                  END IF;
17032                  IF(p_payment_terms_tbl_update(i).organization_id IS NOT NULL AND p_payment_terms_tbl_update(i).organization_id <> r_payment_terms.organization_id) THEN
17033                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:organization_id',3);
17034                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17035                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:organization_id was being updated');
17036                          fnd_msg_pub.ADD;
17037                          RAISE fnd_api.g_exc_error;
17038                  END IF;
17039                  IF(p_payment_terms_tbl_update(i).expenditure_type IS NOT NULL AND p_payment_terms_tbl_update(i).expenditure_type <> r_payment_terms.expenditure_type) THEN
17040                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:expenditure_type',3);
17041                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17042                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:expenditure_type was being updated');
17043                          fnd_msg_pub.ADD;
17044                          RAISE fnd_api.g_exc_error;
17045                  END IF;
17046                  IF(p_payment_terms_tbl_update(i).expenditure_item_date IS NOT NULL AND p_payment_terms_tbl_update(i).expenditure_item_date <> r_payment_terms.expenditure_item_date) THEN
17047                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:expenditure_item_date',3);
17048                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17049                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:expenditure_item_date was being updated');
17050                          fnd_msg_pub.ADD;
17051                          RAISE fnd_api.g_exc_error;
17052                  END IF;
17053                  IF(p_payment_terms_tbl_update(i).tax_group_id IS NOT NULL AND p_payment_terms_tbl_update(i).tax_group_id <> r_payment_terms.tax_group_id) THEN
17054                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:tax_group_id',3);
17055                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17056                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:tax_group_id was being updated');
17057                          fnd_msg_pub.ADD;
17058                          RAISE fnd_api.g_exc_error;
17059                  END IF;
17060                  IF(p_payment_terms_tbl_update(i).tax_code_id IS NOT NULL AND p_payment_terms_tbl_update(i).tax_code_id <> r_payment_terms.tax_code_id) THEN
17061                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:tax_code_id',3);
17062                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17063                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:tax_code_id was being updated');
17064                          fnd_msg_pub.ADD;
17065                          RAISE fnd_api.g_exc_error;
17066                  END IF;
17067                  IF(p_payment_terms_tbl_update(i).tax_included IS NOT NULL AND p_payment_terms_tbl_update(i).tax_included <> r_payment_terms.tax_included) THEN
17068                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:tax_included',3);
17069                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17070                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:tax_included was being updated');
17071                          fnd_msg_pub.ADD;
17072                          RAISE fnd_api.g_exc_error;
17073                  END IF;
17074                  IF(p_payment_terms_tbl_update(i).distribution_set_id IS NOT NULL AND p_payment_terms_tbl_update(i).distribution_set_id <> r_payment_terms.distribution_set_id) THEN
17075                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:distribution_set_id',3);
17076                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17077                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:distribution_set_id was being updated');
17078                          fnd_msg_pub.ADD;
17079                          RAISE fnd_api.g_exc_error;
17080                  END IF;
17081                  IF(p_payment_terms_tbl_update(i).inv_rule_id IS NOT NULL AND p_payment_terms_tbl_update(i).inv_rule_id <> r_payment_terms.inv_rule_id) THEN
17082                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:inv_rule_id',3);
17083                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17084                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:inv_rule_id was being updated');
17085                          fnd_msg_pub.ADD;
17086                          RAISE fnd_api.g_exc_error;
17087                  END IF;
17088                  IF(p_payment_terms_tbl_update(i).account_rule_id IS NOT NULL AND p_payment_terms_tbl_update(i).account_rule_id <> r_payment_terms.account_rule_id) THEN
17089                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:account_rule_id',3);
17090                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17091                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:account_rule_id was being updated');
17092                          fnd_msg_pub.ADD;
17093                          RAISE fnd_api.g_exc_error;
17094                  END IF;
17095                  IF(p_payment_terms_tbl_update(i).salesrep_id IS NOT NULL AND p_payment_terms_tbl_update(i).salesrep_id <> r_payment_terms.salesrep_id) THEN
17096                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:salesrep_id',3);
17097                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17098                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:salesrep_id was being updated');
17099                          fnd_msg_pub.ADD;
17100                          RAISE fnd_api.g_exc_error;
17101                  END IF;
17102                  IF(p_payment_terms_tbl_update(i).approved_by IS NOT NULL AND p_payment_terms_tbl_update(i).approved_by <> r_payment_terms.approved_by) THEN
17103                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:approved_by',3);
17104                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17105                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:approved_by was being updated');
17106                          fnd_msg_pub.ADD;
17107                          RAISE fnd_api.g_exc_error;
17108                  END IF;
17109                  IF(p_payment_terms_tbl_update(i).status IS NOT NULL AND p_payment_terms_tbl_update(i).status <> r_payment_terms.status) THEN
17110                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:status',3);
17111                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17112                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:status was being updated');
17113                          fnd_msg_pub.ADD;
17114                          RAISE fnd_api.g_exc_error;
17115                  END IF;
17116                  IF(p_payment_terms_tbl_update(i).index_period_id IS NOT NULL AND p_payment_terms_tbl_update(i).index_period_id <> r_payment_terms.index_period_id) THEN
17117                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:index_period_id',3);
17118                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17119                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:index_period_id was being updated');
17120                          fnd_msg_pub.ADD;
17121                          RAISE fnd_api.g_exc_error;
17122                  END IF;
17123                  IF(p_payment_terms_tbl_update(i).index_term_indicator IS NOT NULL AND p_payment_terms_tbl_update(i).index_term_indicator <> r_payment_terms.index_term_indicator) THEN
17124                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:index_term_indicator',3);
17125                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17126                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:index_term_indicator was being updated');
17127                          fnd_msg_pub.ADD;
17128                          RAISE fnd_api.g_exc_error;
17129                  END IF;
17130                  IF(p_payment_terms_tbl_update(i).cust_po_number IS NOT NULL AND p_payment_terms_tbl_update(i).cust_po_number <> r_payment_terms.cust_po_number) THEN
17131                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:index_term_indicator',3);
17132                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17133                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:index_term_indicator was being updated');
17134                          fnd_msg_pub.ADD;
17135                          RAISE fnd_api.g_exc_error;
17136                  END IF;
17137                  IF(p_payment_terms_tbl_update(i).po_header_id IS NOT NULL AND p_payment_terms_tbl_update(i).po_header_id <> r_payment_terms.po_header_id) THEN
17138                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:po_header_id',3);
17139                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17140                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:po_header_id was being updated');
17141                          fnd_msg_pub.ADD;
17142                          RAISE fnd_api.g_exc_error;
17143                  END IF;
17144                  IF(p_payment_terms_tbl_update(i).receipt_method_id IS NOT NULL AND p_payment_terms_tbl_update(i).receipt_method_id <> r_payment_terms.receipt_method_id) THEN
17145                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:receipt_method_id',3);
17146                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17147                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:receipt_method_id was being updated');
17148                          fnd_msg_pub.ADD;
17149                          RAISE fnd_api.g_exc_error;
17150                  END IF;
17151                  IF(p_payment_terms_tbl_update(i).var_rent_inv_id IS NOT NULL AND p_payment_terms_tbl_update(i).var_rent_inv_id <> r_payment_terms.var_rent_inv_id) THEN
17152                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:var_rent_inv_id',3);
17153                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17154                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:var_rent_inv_id was being updated');
17155                          fnd_msg_pub.ADD;
17156                          RAISE fnd_api.g_exc_error;
17157                  END IF;
17158                  IF(p_payment_terms_tbl_update(i).var_rent_type IS NOT NULL AND p_payment_terms_tbl_update(i).var_rent_type <> r_payment_terms.var_rent_type) THEN
17159                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:var_rent_type',3);
17160                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17161                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:var_rent_type was being updated');
17162                          fnd_msg_pub.ADD;
17163                          RAISE fnd_api.g_exc_error;
17164                  END IF;
17165                  IF(p_payment_terms_tbl_update(i).norm_start_date IS NOT NULL AND p_payment_terms_tbl_update(i).norm_start_date <> r_payment_terms.norm_start_date) THEN
17166                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:norm_start_date',3);
17167                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17168                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:norm_start_date was being updated');
17169                          fnd_msg_pub.ADD;
17170                          RAISE fnd_api.g_exc_error;
17171                  END IF;
17172                  IF(p_payment_terms_tbl_update(i).term_template_id IS NOT NULL AND p_payment_terms_tbl_update(i).term_template_id <> r_payment_terms.term_template_id) THEN
17173                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:term_template_id',3);
17174                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17175                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:term_template_id was being updated');
17176                          fnd_msg_pub.ADD;
17177                          RAISE fnd_api.g_exc_error;
17178                  END IF;
17179                  IF(p_payment_terms_tbl_update(i).event_type_code IS NOT NULL AND p_payment_terms_tbl_update(i).event_type_code <> r_payment_terms.event_type_code) THEN
17180                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:event_type_code',3);
17181                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17182                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:event_type_code was being updated');
17183                          fnd_msg_pub.ADD;
17184                          RAISE fnd_api.g_exc_error;
17185                  END IF;
17186                  IF(p_payment_terms_tbl_update(i).lease_status IS NOT NULL AND p_payment_terms_tbl_update(i).lease_status <> r_payment_terms.lease_status) THEN
17187                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:lease_status',3);
17188                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17189                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:lease_status was being updated');
17190                          fnd_msg_pub.ADD;
17191                          RAISE fnd_api.g_exc_error;
17192                  END IF;
17193                  IF(p_payment_terms_tbl_update(i).norm_end_date IS NOT NULL AND p_payment_terms_tbl_update(i).norm_end_date <> r_payment_terms.norm_end_date) THEN
17194                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:norm_end_date',3);
17195                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17196                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:norm_end_date was being updated');
17197                          fnd_msg_pub.ADD;
17198                          RAISE fnd_api.g_exc_error;
17199                  END IF;
17200                  IF(p_payment_terms_tbl_update(i).recoverable_flag IS NOT NULL AND p_payment_terms_tbl_update(i).recoverable_flag <> r_payment_terms.recoverable_flag) THEN
17201                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:recoverable_flag',3);
17202                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17203                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:recoverable_flag was being updated');
17204                          fnd_msg_pub.ADD;
17205                          RAISE fnd_api.g_exc_error;
17206                  END IF;
17207                  IF(p_payment_terms_tbl_update(i).period_billrec_id IS NOT NULL AND p_payment_terms_tbl_update(i).period_billrec_id <> r_payment_terms.period_billrec_id) THEN
17208                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:period_billrec_id',3);
17209                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17210                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:period_billrec_id was being updated');
17211                          fnd_msg_pub.ADD;
17212                          RAISE fnd_api.g_exc_error;
17213                  END IF;
17214                  IF(p_payment_terms_tbl_update(i).amount_type IS NOT NULL AND p_payment_terms_tbl_update(i).amount_type <> r_payment_terms.amount_type) THEN
17215                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:amount_type',3);
17216                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17217                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:amount_type was being updated');
17218                          fnd_msg_pub.ADD;
17219                          RAISE fnd_api.g_exc_error;
17220                  END IF;
17221                  IF(p_payment_terms_tbl_update(i).rec_agr_line_id IS NOT NULL AND p_payment_terms_tbl_update(i).rec_agr_line_id <> r_payment_terms.rec_agr_line_id) THEN
17222                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:rec_agr_line_id',3);
17223                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17224                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:rec_agr_line_id was being updated');
17225                          fnd_msg_pub.ADD;
17226                          RAISE fnd_api.g_exc_error;
17227                  END IF;
17228                  IF(p_payment_terms_tbl_update(i).grouping_rule_id IS NOT NULL AND p_payment_terms_tbl_update(i).grouping_rule_id <> r_payment_terms.grouping_rule_id) THEN
17229                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:grouping_rule_id',3);
17230                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17231                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:grouping_rule_id was being updated');
17232                          fnd_msg_pub.ADD;
17233                          RAISE fnd_api.g_exc_error;
17234                  END IF;
17235                  IF(p_payment_terms_tbl_update(i).area_type_code IS NOT NULL AND p_payment_terms_tbl_update(i).area_type_code <> r_payment_terms.area_type_code) THEN
17236                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:area_type_code',3);
17237                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17238                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:area_type_code was being updated');
17239                          fnd_msg_pub.ADD;
17240                          RAISE fnd_api.g_exc_error;
17241                  END IF;
17242                  IF(p_payment_terms_tbl_update(i).area IS NOT NULL AND p_payment_terms_tbl_update(i).area <> r_payment_terms.area) THEN
17243                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:area',3);
17244                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17245                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:area was being updated');
17246                          fnd_msg_pub.ADD;
17247                          RAISE fnd_api.g_exc_error;
17248                  END IF;
17249                  IF(p_payment_terms_tbl_update(i).term_altered_flag IS NOT NULL AND p_payment_terms_tbl_update(i).term_altered_flag <> r_payment_terms.term_altered_flag) THEN
17250                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:term_altered_flag',3);
17251                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17252                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:term_altered_flag was being updated');
17253                          fnd_msg_pub.ADD;
17254                          RAISE fnd_api.g_exc_error;
17255                  END IF;
17256                  IF(p_payment_terms_tbl_update(i).source_code IS NOT NULL AND p_payment_terms_tbl_update(i).source_code <> r_payment_terms.source_code) THEN
17257                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:source_code',3);
17258                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17259                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:source_code was being updated');
17260                          fnd_msg_pub.ADD;
17261                          RAISE fnd_api.g_exc_error;
17262                  END IF;
17263                  IF(p_payment_terms_tbl_update(i).term_comments IS NOT NULL AND p_payment_terms_tbl_update(i).term_comments <> r_payment_terms.term_comments) THEN
17264                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:term_comments',3);
17265                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17266                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:term_comments was being updated');
17267                          fnd_msg_pub.ADD;
17268                          RAISE fnd_api.g_exc_error;
17269                  END IF;
17270                  IF(p_payment_terms_tbl_update(i).legal_entity_id IS NOT NULL AND p_payment_terms_tbl_update(i).legal_entity_id <> r_payment_terms.legal_entity_id) THEN
17271                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:legal_entity_id',3);
17272                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17273                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:legal_entity_id was being updated');
17274                          fnd_msg_pub.ADD;
17275                          RAISE fnd_api.g_exc_error;
17276                  END IF;
17277                  IF(p_payment_terms_tbl_update(i).tax_classification_code IS NOT NULL AND p_payment_terms_tbl_update(i).tax_classification_code <> r_payment_terms.tax_classification_code) THEN
17278                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:tax_classification_code',3);
17279                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17280                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:tax_classification_code was being updated');
17281                          fnd_msg_pub.ADD;
17282                          RAISE fnd_api.g_exc_error;
17283                  END IF;
17284                  IF(p_payment_terms_tbl_update(i).index_norm_flag IS NOT NULL AND p_payment_terms_tbl_update(i).index_norm_flag <> r_payment_terms.index_norm_flag) THEN
17285                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:index_norm_flag',3);
17286                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17287                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:index_norm_flag was being updated');
17288                          fnd_msg_pub.ADD;
17289                          RAISE fnd_api.g_exc_error;
17290                  END IF;
17291                  IF(p_payment_terms_tbl_update(i).parent_term_id IS NOT NULL AND p_payment_terms_tbl_update(i).parent_term_id <> r_payment_terms.parent_term_id) THEN
17292                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:parent_term_id',3);
17293                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17294                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:parent_term_id was being updated');
17295                          fnd_msg_pub.ADD;
17296                          RAISE fnd_api.g_exc_error;
17297                  END IF;
17298                  IF(p_payment_terms_tbl_update(i).include_in_var_rent IS NOT NULL AND p_payment_terms_tbl_update(i).include_in_var_rent <> r_payment_terms.include_in_var_rent) THEN
17299                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:include_in_var_rent',3);
17300                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17301                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:include_in_var_rent was being updated');
17302                          fnd_msg_pub.ADD;
17303                          RAISE fnd_api.g_exc_error;
17304                  END IF;
17305                  IF(p_payment_terms_tbl_update(i).update_nbp_flag IS NOT NULL AND p_payment_terms_tbl_update(i).update_nbp_flag <> r_payment_terms.update_nbp_flag) THEN
17306                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:update_nbp_flag',3);
17307                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17308                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:update_nbp_flag was being updated');
17309                          fnd_msg_pub.ADD;
17310                          RAISE fnd_api.g_exc_error;
17311                  END IF;
17312                  IF(p_payment_terms_tbl_update(i).recur_bb_calc_date IS NOT NULL AND p_payment_terms_tbl_update(i).recur_bb_calc_date <> r_payment_terms.recur_bb_calc_date) THEN
17313                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:recur_bb_calc_date',3);
17314                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17315                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:recur_bb_calc_date was being updated');
17316                          fnd_msg_pub.ADD;
17317                          RAISE fnd_api.g_exc_error;
17318                  END IF;
17319                  IF(p_payment_terms_tbl_update(i).opex_type IS NOT NULL AND p_payment_terms_tbl_update(i).opex_type <> r_payment_terms.opex_type) THEN
17320                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:opex_type',3);
17321                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17322                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:opex_type was being updated');
17323                          fnd_msg_pub.ADD;
17324                          RAISE fnd_api.g_exc_error;
17325                  END IF;
17326                  IF(p_payment_terms_tbl_update(i).opex_agr_id IS NOT NULL AND p_payment_terms_tbl_update(i).opex_agr_id <> r_payment_terms.opex_agr_id) THEN
17327                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:opex_agr_id',3);
17328                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17329                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:opex_agr_id was being updated');
17330                          fnd_msg_pub.ADD;
17331                          RAISE fnd_api.g_exc_error;
17332                  END IF;
17333                  IF(p_payment_terms_tbl_update(i).opex_recon_id IS NOT NULL AND p_payment_terms_tbl_update(i).opex_recon_id <> r_payment_terms.opex_recon_id) THEN
17334                          pvt_debug(g_pkg_name||'-UPDATE_TERMS:In Edit OR AMEND Final Mode.Cant Update the field:opex_recon_id',3);
17335                          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17336                          fnd_message.set_token('ERR_MSG', 'In Edit OR AMEND Final Mode.Non-Updatable field:opex_recon_id was being updated');
17337                          fnd_msg_pub.ADD;
17338                          RAISE fnd_api.g_exc_error;
17339                  END IF;
17340 
17341              END IF;
17342 
17343                -- --------------------dbms_output.put_line('In Edit OR AMEND Mode.:1');--Rupak
17344              IF (  p_payment_terms_tbl_update(i).payment_purpose_code IS NULL )
17345              THEN
17346                    p_payment_terms_tbl_update(i).payment_purpose_code := r_payment_terms.payment_purpose_code;
17347              END IF;
17348              IF (  p_payment_terms_tbl_update(i).payment_term_type_code IS NULL  )--OR p_payment_terms_tbl_update(i).payment_term_type_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17349              THEN
17350                    p_payment_terms_tbl_update(i).payment_term_type_code := r_payment_terms.payment_term_type_code;
17351              END IF;
17352              IF (  p_payment_terms_tbl_update(i).frequency_code IS NULL  )--OR p_payment_terms_tbl_update(i).frequency_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17353              THEN
17354                    p_payment_terms_tbl_update(i).frequency_code := r_payment_terms.frequency_code;
17355              END IF;
17356              IF (  p_payment_terms_tbl_update(i).lease_id IS NULL  )--OR p_payment_terms_tbl_update(i).lease_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17357              THEN
17358                    p_payment_terms_tbl_update(i).lease_id := r_payment_terms.lease_id;
17359              END IF;
17360              IF (  p_payment_terms_tbl_update(i).lease_change_id IS NULL  )--OR p_payment_terms_tbl_update(i).lease_change_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17361              THEN
17362                    p_payment_terms_tbl_update(i).lease_change_id := r_payment_terms.lease_change_id;
17363              END IF;
17364              IF (  p_payment_terms_tbl_update(i).start_date IS NULL )--OR p_payment_terms_tbl_update(i).start_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17365              THEN
17366                    p_payment_terms_tbl_update(i).start_date := r_payment_terms.start_date;
17367              END IF;
17368              IF (  p_payment_terms_tbl_update(i).end_date IS NULL )--OR p_payment_terms_tbl_update(i).end_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17369              THEN
17370                    p_payment_terms_tbl_update(i).end_date := r_payment_terms.end_date;
17371              END IF;
17372              IF (  p_payment_terms_tbl_update(i).code_combination_id IS NULL )--OR p_payment_terms_tbl_update(i).code_combination_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17373              THEN
17374                    p_payment_terms_tbl_update(i).code_combination_id := r_payment_terms.code_combination_id;
17375              END IF;
17376              IF (  p_payment_terms_tbl_update(i).vendor_id IS NULL )--OR p_payment_terms_tbl_update(i).vendor_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17377              THEN
17378                    p_payment_terms_tbl_update(i).vendor_id := r_payment_terms.vendor_id;
17379              END IF;
17380              IF (  p_payment_terms_tbl_update(i).vendor_site_id IS NULL )--OR p_payment_terms_tbl_update(i).vendor_site_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17381              THEN
17382                    p_payment_terms_tbl_update(i).vendor_site_id := r_payment_terms.vendor_site_id;
17383              END IF;
17384              IF (  p_payment_terms_tbl_update(i).target_date IS NULL )--OR p_payment_terms_tbl_update(i).target_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17385              THEN
17386                    p_payment_terms_tbl_update(i).target_date := r_payment_terms.target_date;
17387              END IF;
17388              IF (  p_payment_terms_tbl_update(i).actual_amount IS NULL )--OR p_payment_terms_tbl_update(i).actual_amount = PN_LEASE_UTILS.G_PN_MISS_NUM)
17389              THEN
17390                    p_payment_terms_tbl_update(i).actual_amount := r_payment_terms.actual_amount;
17391              END IF;
17392              IF (  p_payment_terms_tbl_update(i).estimated_amount IS NULL )--OR p_payment_terms_tbl_update(i).estimated_amount = PN_LEASE_UTILS.G_PN_MISS_NUM)
17393              THEN
17394                    p_payment_terms_tbl_update(i).estimated_amount := r_payment_terms.estimated_amount;
17395              END IF;
17396              IF (  p_payment_terms_tbl_update(i).set_of_books_id IS NULL )--OR p_payment_terms_tbl_update(i).set_of_books_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17397              THEN
17398                    p_payment_terms_tbl_update(i).set_of_books_id := r_payment_terms.set_of_books_id;
17399              END IF;
17400              IF (  p_payment_terms_tbl_update(i).currency_code IS NULL )--OR p_payment_terms_tbl_update(i).currency_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17401              THEN
17402                    p_payment_terms_tbl_update(i).currency_code := r_payment_terms.currency_code;
17403              END IF;
17404              IF (  p_payment_terms_tbl_update(i).rate IS NULL )--OR p_payment_terms_tbl_update(i).rate = PN_LEASE_UTILS.G_PN_MISS_NUM)
17405              THEN
17406                    p_payment_terms_tbl_update(i).rate := r_payment_terms.rate;
17407              END IF;
17408              IF (  p_payment_terms_tbl_update(i).customer_id IS NULL )--OR p_payment_terms_tbl_update(i).customer_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17409              THEN
17410                    p_payment_terms_tbl_update(i).customer_id := r_payment_terms.customer_id;
17411              END IF;
17412              IF (  p_payment_terms_tbl_update(i).customer_site_use_id IS NULL )--OR p_payment_terms_tbl_update(i).customer_site_use_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17413              THEN
17414                    p_payment_terms_tbl_update(i).customer_site_use_id := r_payment_terms.customer_site_use_id;
17415              END IF;
17416              IF (  p_payment_terms_tbl_update(i).normalize IS NULL )--OR p_payment_terms_tbl_update(i).normalize = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17417              THEN
17418                    p_payment_terms_tbl_update(i).normalize := r_payment_terms.normalize;
17419              END IF;
17420              IF (  p_payment_terms_tbl_update(i).location_id IS NULL )--OR p_payment_terms_tbl_update(i).location_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17421              THEN
17422                    p_payment_terms_tbl_update(i).location_id := r_payment_terms.location_id;
17423              END IF;
17424              IF (  p_payment_terms_tbl_update(i).schedule_day IS NULL )--OR p_payment_terms_tbl_update(i).schedule_day = PN_LEASE_UTILS.G_PN_MISS_NUM)
17425              THEN
17426                    p_payment_terms_tbl_update(i).schedule_day := r_payment_terms.schedule_day;
17427              END IF;
17428              IF (  p_payment_terms_tbl_update(i).cust_ship_site_id IS NULL )--OR p_payment_terms_tbl_update(i).cust_ship_site_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17429              THEN
17430                    p_payment_terms_tbl_update(i).cust_ship_site_id := r_payment_terms.cust_ship_site_id;
17431              END IF;
17432              IF (  p_payment_terms_tbl_update(i).ap_ar_term_id IS NULL )--OR p_payment_terms_tbl_update(i).ap_ar_term_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17433              THEN
17434                    p_payment_terms_tbl_update(i).ap_ar_term_id := r_payment_terms.ap_ar_term_id;
17435              END IF;
17436              IF (  p_payment_terms_tbl_update(i).cust_trx_type_id IS NULL )--OR p_payment_terms_tbl_update(i).cust_trx_type_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17437              THEN
17438                    p_payment_terms_tbl_update(i).cust_trx_type_id := r_payment_terms.cust_trx_type_id;
17439              END IF;
17440              IF (  p_payment_terms_tbl_update(i).project_id IS NULL )--OR p_payment_terms_tbl_update(i).project_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17441              THEN
17442                    p_payment_terms_tbl_update(i).project_id := r_payment_terms.project_id;
17443              END IF;
17444              IF (  p_payment_terms_tbl_update(i).task_id IS NULL )--OR p_payment_terms_tbl_update(i).task_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17445              THEN
17446                    p_payment_terms_tbl_update(i).task_id := r_payment_terms.task_id;
17447              END IF;
17448              IF (  p_payment_terms_tbl_update(i).organization_id IS NULL )--OR p_payment_terms_tbl_update(i).organization_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17449              THEN
17450                    p_payment_terms_tbl_update(i).organization_id := r_payment_terms.organization_id;
17451              END IF;
17452              IF (  p_payment_terms_tbl_update(i).expenditure_type IS NULL )--OR p_payment_terms_tbl_update(i).expenditure_type = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17453              THEN
17454                    p_payment_terms_tbl_update(i).expenditure_type := r_payment_terms.expenditure_type;
17455              END IF;
17456              IF (  p_payment_terms_tbl_update(i).expenditure_item_date IS NULL )--OR p_payment_terms_tbl_update(i).expenditure_item_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17457              THEN
17458                    p_payment_terms_tbl_update(i).expenditure_item_date := r_payment_terms.expenditure_item_date;
17459              END IF;
17460              IF (  p_payment_terms_tbl_update(i).tax_group_id IS NULL )--OR p_payment_terms_tbl_update(i).tax_group_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17461              THEN
17462                    p_payment_terms_tbl_update(i).tax_group_id := r_payment_terms.tax_group_id;
17463              END IF;
17464              IF (  p_payment_terms_tbl_update(i).tax_code_id IS NULL )--OR p_payment_terms_tbl_update(i).tax_code_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17465              THEN
17466                    p_payment_terms_tbl_update(i).tax_code_id := r_payment_terms.tax_code_id;
17467              END IF;
17468              IF (  p_payment_terms_tbl_update(i).tax_included IS NULL )--OR p_payment_terms_tbl_update(i).tax_included = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17469              THEN
17470                    p_payment_terms_tbl_update(i).tax_included := r_payment_terms.tax_included;
17471              END IF;
17472              IF (  p_payment_terms_tbl_update(i).distribution_set_id IS NULL )--OR p_payment_terms_tbl_update(i).distribution_set_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17473              THEN
17474                    p_payment_terms_tbl_update(i).distribution_set_id := r_payment_terms.distribution_set_id;
17475              END IF;
17476              IF (  p_payment_terms_tbl_update(i).inv_rule_id IS NULL )--OR p_payment_terms_tbl_update(i).inv_rule_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17477              THEN
17478                    p_payment_terms_tbl_update(i).inv_rule_id := r_payment_terms.inv_rule_id;
17479              END IF;
17480              IF (  p_payment_terms_tbl_update(i).account_rule_id IS NULL )--OR p_payment_terms_tbl_update(i).account_rule_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17481              THEN
17482                    p_payment_terms_tbl_update(i).account_rule_id := r_payment_terms.account_rule_id;
17483              END IF;
17484              IF (  p_payment_terms_tbl_update(i).salesrep_id IS NULL )--OR p_payment_terms_tbl_update(i).salesrep_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17485              THEN
17486                    p_payment_terms_tbl_update(i).salesrep_id := r_payment_terms.salesrep_id;
17487              END IF;
17488              IF (  p_payment_terms_tbl_update(i).approved_by IS NULL )--OR p_payment_terms_tbl_update(i).approved_by = PN_LEASE_UTILS.G_PN_MISS_NUM)
17489              THEN
17490                    p_payment_terms_tbl_update(i).approved_by := r_payment_terms.approved_by;
17491              END IF;
17492              IF (  p_payment_terms_tbl_update(i).status IS NULL )--OR p_payment_terms_tbl_update(i).status = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17493              THEN
17494                    p_payment_terms_tbl_update(i).status := r_payment_terms.status;
17495              END IF;
17496              IF (  p_payment_terms_tbl_update(i).index_period_id IS NULL )--OR p_payment_terms_tbl_update(i).index_period_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17497              THEN
17498                    p_payment_terms_tbl_update(i).index_period_id := r_payment_terms.index_period_id;
17499              END IF;
17500              IF (  p_payment_terms_tbl_update(i).index_term_indicator IS NULL )--OR p_payment_terms_tbl_update(i).index_term_indicator = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17501              THEN
17502                    p_payment_terms_tbl_update(i).index_term_indicator := r_payment_terms.index_term_indicator;
17503              END IF;
17504              IF (  p_payment_terms_tbl_update(i).po_header_id IS NULL )--OR p_payment_terms_tbl_update(i).po_header_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17505              THEN
17506                    p_payment_terms_tbl_update(i).po_header_id := r_payment_terms.po_header_id;
17507              END IF;
17508              IF (  p_payment_terms_tbl_update(i).cust_po_number IS NULL )--OR p_payment_terms_tbl_update(i).cust_po_number = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17509              THEN
17510                    p_payment_terms_tbl_update(i).cust_po_number := r_payment_terms.cust_po_number;
17511              END IF;
17512              IF (  p_payment_terms_tbl_update(i).receipt_method_id IS NULL )--OR p_payment_terms_tbl_update(i).receipt_method_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17513              THEN
17514                    p_payment_terms_tbl_update(i).receipt_method_id := r_payment_terms.receipt_method_id;
17515              END IF;
17516              IF (  p_payment_terms_tbl_update(i).var_rent_inv_id IS NULL )--OR p_payment_terms_tbl_update(i).var_rent_inv_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17517              THEN
17518                    p_payment_terms_tbl_update(i).var_rent_inv_id := r_payment_terms.var_rent_inv_id;
17519              END IF;
17520              IF (  p_payment_terms_tbl_update(i).var_rent_type IS NULL )--OR p_payment_terms_tbl_update(i).var_rent_type = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17521              THEN
17522                    p_payment_terms_tbl_update(i).var_rent_type := r_payment_terms.var_rent_type;
17523              END IF;
17524              IF (  p_payment_terms_tbl_update(i).changed_flag IS NULL )--OR p_payment_terms_tbl_update(i).changed_flag = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17525              THEN
17526                    p_payment_terms_tbl_update(i).changed_flag := r_payment_terms.changed_flag;
17527              END IF;
17528              IF (  p_payment_terms_tbl_update(i).norm_start_date IS NULL )--OR p_payment_terms_tbl_update(i).norm_start_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17529              THEN
17530                    p_payment_terms_tbl_update(i).norm_start_date := r_payment_terms.norm_start_date;
17531              END IF;
17532              IF (  p_payment_terms_tbl_update(i).term_template_id IS NULL )--OR p_payment_terms_tbl_update(i).term_template_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17533              THEN
17534                    p_payment_terms_tbl_update(i).term_template_id := r_payment_terms.term_template_id;
17535              END IF;
17536              IF (  p_payment_terms_tbl_update(i).event_type_code IS NULL )--OR p_payment_terms_tbl_update(i).event_type_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17537              THEN
17538                    p_payment_terms_tbl_update(i).event_type_code := r_payment_terms.event_type_code;
17539              END IF;
17540              IF (  p_payment_terms_tbl_update(i).lease_status IS NULL )--OR p_payment_terms_tbl_update(i).lease_status = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17541              THEN
17542                    p_payment_terms_tbl_update(i).lease_status := r_payment_terms.lease_status;
17543              END IF;
17544              IF (  p_payment_terms_tbl_update(i).norm_end_date IS NULL )--OR p_payment_terms_tbl_update(i).norm_end_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17545              THEN
17546                    p_payment_terms_tbl_update(i).norm_end_date := r_payment_terms.norm_end_date;
17547              END IF;
17548              IF (  p_payment_terms_tbl_update(i).recoverable_flag IS NULL )--OR p_payment_terms_tbl_update(i).recoverable_flag = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17549              THEN
17550                    p_payment_terms_tbl_update(i).recoverable_flag := r_payment_terms.recoverable_flag;
17551              END IF;
17552              IF (  p_payment_terms_tbl_update(i).period_billrec_id IS NULL )--OR p_payment_terms_tbl_update(i).period_billrec_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17553              THEN
17554                    p_payment_terms_tbl_update(i).period_billrec_id := r_payment_terms.period_billrec_id;
17555              END IF;
17556              IF (  p_payment_terms_tbl_update(i).amount_type IS NULL )--OR p_payment_terms_tbl_update(i).amount_type = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17557              THEN
17558                    p_payment_terms_tbl_update(i).amount_type := r_payment_terms.amount_type;
17559              END IF;
17560              IF (  p_payment_terms_tbl_update(i).rec_agr_line_id IS NULL )--OR p_payment_terms_tbl_update(i).rec_agr_line_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17561              THEN
17562                    p_payment_terms_tbl_update(i).rec_agr_line_id := r_payment_terms.rec_agr_line_id;
17563              END IF;
17564              IF (  p_payment_terms_tbl_update(i).grouping_rule_id IS NULL )--OR p_payment_terms_tbl_update(i).grouping_rule_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17565              THEN
17566                    p_payment_terms_tbl_update(i).grouping_rule_id := r_payment_terms.grouping_rule_id;
17567              END IF;
17568              IF (  p_payment_terms_tbl_update(i).area_type_code IS NULL )--OR p_payment_terms_tbl_update(i).area_type_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17569              THEN
17570                    p_payment_terms_tbl_update(i).area_type_code := r_payment_terms.area_type_code;
17571              END IF;
17572              IF (  p_payment_terms_tbl_update(i).area IS NULL )--OR p_payment_terms_tbl_update(i).area = PN_LEASE_UTILS.G_PN_MISS_NUM
17573               THEN
17574                    p_payment_terms_tbl_update(i).area := r_payment_terms.area;
17575              END IF;
17576              IF (  p_payment_terms_tbl_update(i).term_altered_flag IS NULL )--OR p_payment_terms_tbl_update(i).term_altered_flag = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17577              THEN
17578                    p_payment_terms_tbl_update(i).term_altered_flag := r_payment_terms.term_altered_flag;
17579              END IF;
17580              IF (  p_payment_terms_tbl_update(i).source_code IS NULL )--OR p_payment_terms_tbl_update(i).source_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17581              THEN
17582                    p_payment_terms_tbl_update(i).source_code := r_payment_terms.source_code;
17583              END IF;
17584              IF (  p_payment_terms_tbl_update(i).term_comments IS NULL )--OR p_payment_terms_tbl_update(i).term_comments = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17585              THEN
17586                    p_payment_terms_tbl_update(i).term_comments := r_payment_terms.term_comments;
17587              END IF;
17588              IF (  p_payment_terms_tbl_update(i).legal_entity_id IS NULL )--OR p_payment_terms_tbl_update(i).legal_entity_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17589              THEN
17590                    p_payment_terms_tbl_update(i).legal_entity_id := r_payment_terms.legal_entity_id;
17591              END IF;
17592              IF (  p_payment_terms_tbl_update(i).tax_classification_code IS NULL )--OR p_payment_terms_tbl_update(i).tax_classification_code = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17593              THEN
17594                    p_payment_terms_tbl_update(i).tax_classification_code := r_payment_terms.tax_classification_code;
17595              END IF;
17596              IF (  p_payment_terms_tbl_update(i).index_norm_flag IS NULL )--OR p_payment_terms_tbl_update(i).index_norm_flag = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17597              THEN
17598                    p_payment_terms_tbl_update(i).index_norm_flag := r_payment_terms.index_norm_flag;
17599              END IF;
17600              IF (  p_payment_terms_tbl_update(i).parent_term_id IS NULL )--OR p_payment_terms_tbl_update(i).parent_term_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17601              THEN
17602                    p_payment_terms_tbl_update(i).parent_term_id := r_payment_terms.parent_term_id;
17603              END IF;
17604              IF (  p_payment_terms_tbl_update(i).include_in_var_rent IS NULL )--OR p_payment_terms_tbl_update(i).include_in_var_rent = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17605              THEN
17606                    p_payment_terms_tbl_update(i).include_in_var_rent := r_payment_terms.include_in_var_rent;
17607              END IF;
17608              IF (  p_payment_terms_tbl_update(i).update_nbp_flag IS NULL )--OR p_payment_terms_tbl_update(i).update_nbp_flag = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17609              THEN
17610                    p_payment_terms_tbl_update(i).update_nbp_flag := r_payment_terms.update_nbp_flag;
17611              END IF;
17612              IF (  p_payment_terms_tbl_update(i).recur_bb_calc_date IS NULL )--OR p_payment_terms_tbl_update(i).recur_bb_calc_date = PN_LEASE_UTILS.G_PN_MISS_DATE)
17613              THEN
17614                    p_payment_terms_tbl_update(i).recur_bb_calc_date := r_payment_terms.recur_bb_calc_date;
17615              END IF;
17616              IF (  p_payment_terms_tbl_update(i).opex_type IS NULL )--OR p_payment_terms_tbl_update(i).opex_type = PN_LEASE_UTILS.G_PN_MISS_CHAR)
17617              THEN
17618                    p_payment_terms_tbl_update(i).opex_type := r_payment_terms.opex_type;
17619              END IF;
17620              IF (  p_payment_terms_tbl_update(i).opex_agr_id IS NULL )--OR p_payment_terms_tbl_update(i).opex_agr_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17621              THEN
17622                    p_payment_terms_tbl_update(i).opex_agr_id := r_payment_terms.opex_agr_id;
17623              END IF;
17624              IF (  p_payment_terms_tbl_update(i).opex_recon_id IS NULL )--OR p_payment_terms_tbl_update(i).opex_recon_id = PN_LEASE_UTILS.G_PN_MISS_NUM)
17625              THEN
17626                    p_payment_terms_tbl_update(i).opex_recon_id := r_payment_terms.opex_recon_id;
17627              END IF;
17628 
17629              pvt_debug(g_pkg_name||'UPDATE_TERMS:Before UPDATE_PAYMENT_TERMS_ROW',3);
17630                                    --Calling the Update payments procedure to Update after we check for the term distirbution Correctness
17631                         ----------------------dbms_output.put_line('B4 Update Payment Terms Row');--Rupak
17632                   update_payment_terms_row ( p_lease_terms_rec              =>    p_payment_terms_tbl_update(i)
17633                                            , p_lease_id                     =>    p_lease_id
17634                                            , p_change_lease_id              =>    l_lease_change_id
17635                                            , p_lease_context                =>    p_lease_context
17636                                            , x_return_status                =>    x_return_status
17637                                            );
17638                      pvt_debug(g_pkg_name||'UPDATE_TERMS:UPDATE_PAYMENT_TERMS_ROW Return Status:'||x_return_status,3);
17639                      IF (x_return_status = fnd_api.g_ret_sts_error) THEN
17640                         RAISE fnd_api.g_exc_error;
17641                      ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
17642                        RAISE fnd_api.g_exc_unexpected_error;
17643                      --ELSIF (x_return_status = fnd_api.g_ret_sts_success AND g_status <>'F' AND l_lease_status = 'F') THEN
17644                      -- FINALIZE_RECORD ( p_lease_id,l_lease_commencement_date,p_lease_context,g_org_id,l_api_name_full,'U');
17645                      END IF;
17646 
17647                ----------------------dbms_output.put_line('B4 Validate Payment terms');
17648                BEGIN --Bug14176705
17649                   ADD_DIST_ACCOUNT (p_payment_terms_tbl_update(i),p_payment_terms_tbl_update(i).p_terms_exp_rev_accounts_tbl,l_change_account_count,'U');
17650                EXCEPTION
17651                 WHEN OTHERS THEN
17652                   NULL;
17653                   ----------------------dbms_output.put_line('In Exception:validate_dist_account'||SQLERRM);
17654                   pvt_debug(g_pkg_name||'UPDATE_TERMS:ADD_DIST_ACCOUNT:Exception:'||SQLERRM,3);
17655                 END;
17656 ------------------------------------------------------------
17657                 l_assign_flag := 'Y';
17658              ELSE
17659                ------------------------dbms_output.put_line('In Update tenancies:ELSE PART :p_lease_tenancies_tbl(i).teanacy_id'||p_lease_tenancies_tbl(i).tenancy_id);
17660                ------------------------dbms_output.put_line('In Update tenanciess:ELSE PART :r_tenancies_details.tenancy_id'||r_tenancies_details.tenancy_id);
17661                NULL;
17662           END IF;
17663          EXCEPTION
17664           WHEN e_invalid_mode THEN
17665             null;
17666              ----------------------dbms_output.put_line('Into Exception'||SQLERRM);
17667           WHEN fnd_api.g_exc_error THEN
17668             l_error_count_err := l_error_count_err+1;
17669              --x_return_status := fnd_api.g_ret_sts_error;
17670              pvt_debug(g_pkg_name||'-update_terms:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
17671           WHEN OTHERS THEN
17672              --l_error_count_uerr := l_error_count_uerr+1;
17673              l_error_count_err := l_error_count_err+1;
17674              --x_return_status := fnd_api.g_ret_sts_unexp_error;
17675              pvt_debug(g_pkg_name||'-update_terms:LOOOPING:EXCEPTION:'||SQLERRM,3);
17676          END;
17677       END LOOP;
17678         EXCEPTION
17679          WHEN e_exit_current_term THEN
17680            ----------------------dbms_output.put_line('Accrual Multiple');
17681            pvt_debug(g_pkg_name||'UPDATE_TERMS:E_EXIT_CURRENT_TERM:Exception:'||SQLERRM,3);
17682           null;
17683         END;
17684       ELSE
17685            ----------------------dbms_output.put_line('The Check failed with error_flag ''Y''');--Rupak
17686            pvt_debug(g_pkg_name||'UPDATE_TERMS:ELSE:',3);
17687            NULL;
17688          END IF; --Check if the Payment(i) is not 'Y'
17689        END IF; --Create-Update Check
17690       END LOOP;
17691    END IF;
17692 
17693      p:=1;
17694      FOR i IN 1..p_payment_terms_tbl.COUNT
17695      LOOP
17696        IF(p_payment_terms_tbl (i).payment_term_id IS NULL OR p_payment_terms_tbl (i).payment_term_id = pn_lease_utils.g_pn_miss_num) THEN
17697          pvt_debug(g_pkg_name||'-update_terms:Assigning the term table values to other table',3);
17698           p_payment_terms_tbl_tmp(p) := p_payment_terms_tbl (i);
17699           p:= p+1;
17700        END IF;
17701      END LOOP;
17702 
17703                 IF (p_payment_terms_tbl_tmp.COUNT >0 ) THEN
17704                   --dbms_output.put_line('Hello:p_payment_terms_tbl_tmp.COUNT'||p_payment_terms_tbl_tmp.COUNT);
17705                   BEGIN
17706                            create_terms (p_api_version        => p_api_version
17707                                        , p_init_msg_list      => p_init_msg_list
17708                                        , p_commit             => p_commit
17709                                        , p_validate           => p_validate
17710                                        , p_payment_terms_tbl  => p_payment_terms_tbl_tmp
17711                                        , p_lease_id           => p_lease_id
17712                                        , p_lease_context      => p_lease_context--'CREATE_TERMS' Bug15936949
17713                                        , x_return_status      => x_return_status
17714                                       , x_msg_count           => x_msg_count
17715                                       , x_msg_data            => x_msg_data
17716                                       );
17717                     fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
17718                                              , p_count                       => x_msg_count
17719                                              , p_data                        => x_msg_data
17720                                               );
17721                  EXCEPTION
17722                    WHEN OTHERS THEN
17723                         x_return_status     :=  fnd_api.g_ret_sts_error;
17724                         fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
17725                                                  , p_count                       => x_msg_count
17726                                                  , p_data                        => x_msg_data
17727                                                   );
17728                  END;
17729                 END IF;
17730 
17731           IF(l_error_count_err = 0) THEN
17732             x_return_status := fnd_api.g_ret_sts_success;
17733           ELSE
17734             x_return_status := fnd_api.g_ret_sts_error;
17735           END IF;
17736    EXCEPTION
17737      WHEN fnd_api.g_exc_error THEN
17738              x_return_status := fnd_api.g_ret_sts_error;
17739              pvt_debug(g_pkg_name||'-update_terms::MAIN EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
17740      WHEN OTHERS THEN
17741         x_return_status := fnd_api.g_ret_sts_unexp_error;
17742         pvt_debug(g_pkg_name||'-update_terms:MAIN:EXCEPTION:'||SQLERRM,3);
17743    END update_terms;
17744 
17745 
17746 
17747 
17748     /*Insert payment */
17749   PROCEDURE create_terms (
17750       p_api_version                  IN            NUMBER
17751     , p_init_msg_list                IN            VARCHAR2        := FND_API.G_FALSE
17752     , p_commit                       IN            VARCHAR2        := FND_API.G_FALSE
17753     , p_validate                     IN            VARCHAR2        := FND_API.G_FALSE
17754     , p_payment_terms_tbl            IN OUT  NOCOPY  lease_terms_tbl
17755     , p_lease_id                     IN            NUMBER
17756     , p_lease_context                IN            VARCHAR2 DEFAULT NULL
17757     , x_return_status                   OUT NOCOPY VARCHAR2
17758     , x_msg_count                       OUT NOCOPY NUMBER
17759     , x_msg_data                        OUT NOCOPY VARCHAR2
17760    )
17761    AS
17762       l_api_version      CONSTANT NUMBER                                              := 1.0;
17763       l_api_name         CONSTANT VARCHAR2 (30)                                       := 'Create_Payment';
17764       l_api_name_full    CONSTANT VARCHAR2 (61)                                       := g_pkg_name || '.' || l_api_name;
17765 
17766       l_return_status             VARCHAR2 (1);
17767 
17768 
17769       --l_term_defaults             cur_term_template%ROWTYPE;
17770       l_lease_status              pn_leases_all.STATUS%TYPE;
17771       l_lease_context             VARCHAR2(20) := null;
17772 
17773       l_lease_class_code          VARCHAR2 (30);
17774       l_lease_commencement_date   DATE;
17775       l_lease_termination_date    DATE;
17776       l_parent_lease_id           NUMBER;
17777       l_termtemp_type             pn_term_templates_all.payment_term_type_code%TYPE;
17778       l_schedule_context          VARCHAR2(10) := NULL;
17779       l_requestid                 NUMBER := NULL;
17780       l_lease_change_id           NUMBER;
17781       x_request_id                NUMBER:=NULL;
17782 
17783       l_locations_count NUMBER := 0;
17784   BEGIN
17785         -- Standard start of API savepoint
17786       SAVEPOINT insert_payment_pvt;
17787 
17788       -- Initialize message list if p_init_msg_list is set to TRUE
17789       IF fnd_api.to_boolean (p_init_msg_list)
17790       THEN
17791          fnd_msg_pub.initialize;
17792       END IF;
17793 
17794       -- Standard call to check for call compatibility
17795       IF NOT fnd_api.compatible_api_call (l_api_version
17796                                         , p_api_version
17797                                         , l_api_name
17798                                         , g_pkg_name
17799                                          )
17800       THEN
17801          RAISE fnd_api.g_exc_error;
17802       END IF;
17803 
17804       -- Initialize the return status.
17805       x_return_status := fnd_api.g_ret_sts_success;
17806 
17807  -------------------------------------------
17808 -- Make sure the Lease Number or Lease Id is not null
17809 -- -------------------------------------------
17810       IF p_lease_id IS NULL
17811       THEN
17812          pn_lease_utils.add_null_parameter_msg (p_token_apiname => l_api_name_full, p_token_nullparam => 'LEASE_ID');
17813          RAISE fnd_api.g_exc_error;
17814       ELSE
17815          BEGIN
17816              l_lease_context := PN_LEASE_UTILS.get_lease_context(p_lease_id,g_org_id);
17817 
17818             SELECT pla.lease_class_code
17819                  , pld.lease_commencement_date
17820                  , pld.lease_termination_date
17821                  , pla.parent_lease_id
17822                  , DECODE (pla.lease_class_code
17823                          , 'DIRECT', 'PAYMENT'
17824                          , 'THIRD_PARTY', 'BILLING'
17825                          , 'SUB_LEASE','BILLING' /* Bug#13915457*/
17826                           )
17827                  , PN_LEASE_UTILS.get_lease_change_id(p_lease_id ,g_org_id)
17828                      ,pla.status
17829               INTO l_lease_class_code
17830                  , l_lease_commencement_date
17831                  , l_lease_termination_date
17832                  , l_parent_lease_id
17833                  , l_termtemp_type
17834                  , l_lease_change_id
17835                  , l_lease_status
17836               FROM pn_leases_all pla, pn_lease_details_all pld
17837              WHERE pla.lease_id = p_lease_id
17838                AND pla.lease_id = pld.lease_id
17839                AND pld.org_id = pla.org_id
17840                AND pla.org_id = g_org_id;
17841               /*----------dbms_output.put_line('Inside ERROR:1'||l_lease_status||l_lease_context);
17842                IF ((l_lease_status = 'D' and (l_lease_context IN ('EDIT','AMEND')))
17843                OR (l_lease_status = 'F' and (l_lease_context NOT IN ('EDIT','AMEND')))) THEN
17844                  ----------dbms_output.put_line('Inside ERROR:l_lease_context'||l_lease_status||l_lease_context);
17845                  fnd_message.set_name ('PN', 'PN_INV_LEASECONT');
17846                  fnd_message.set_token ('API_NAME', l_api_name_full);
17847                  fnd_message.set_token ('LEASE_ID', p_lease_id);
17848                  fnd_msg_pub.ADD;
17849                  RAISE fnd_api.g_exc_error;
17850                END IF;*/
17851 
17852          EXCEPTION
17853             WHEN OTHERS
17854             THEN
17855                fnd_message.set_name ('PN', 'PN_INV_DRVLEASED');
17856                fnd_message.set_token ('API_NAME', l_api_name_full);
17857                fnd_message.set_token ('LEASE_ID', p_lease_id);
17858                fnd_message.set_token ('SQLERRM', SQLERRM);
17859                fnd_msg_pub.ADD;
17860                RAISE fnd_api.g_exc_error;
17861          END;
17862       END IF;
17863 ----------------------dbms_output.put_line('B4 Calling Validate Payments:p_lease_id'||p_lease_id);--Rupak
17864       ----Not yet Created..Rupak
17865    BEGIN
17866     validate_payment_terms_tbl( p_api_name_full           =>   l_api_name_full
17867                               , p_payment_terms_tbl       =>   p_payment_terms_tbl
17868                               , p_lease_id                =>   p_lease_id
17869                               , p_lease_class_code        =>   l_lease_class_code
17870                               , p_lease_commencement_date =>   l_lease_commencement_date
17871                               , p_lease_termination_date  =>   l_lease_termination_date
17872                               , p_termtemp_type           =>   l_termtemp_type
17873                               , p_parent_lease_id         =>   l_parent_lease_id
17874                               , p_lease_change_id         =>   l_lease_change_id
17875                               , p_lease_status            =>   l_lease_status
17876                               , p_lease_context           =>    p_lease_context
17877                               , p_operation               =>   'CREATE_TERMS'
17878                               , x_return_status           =>   x_return_status
17879                               );
17880             pvt_debug(g_pkg_name||'CREATE_TERMS:VALIDATE_PAYMENT_TERMS_TBL Return Status:'||x_return_status,3);
17881           IF (x_return_status = fnd_api.g_ret_sts_error) THEN
17882                RAISE fnd_api.g_exc_error;
17883           ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
17884                RAISE fnd_api.g_exc_unexpected_error;
17885           END IF;
17886               BEGIN
17887                 SELECT COUNT(1)
17888                 INTO   l_locations_count
17889                 FROM   pn_tenancies_all
17890                 WHERE  lease_id = p_lease_id
17891                 AND    org_id   = g_org_id;
17892               EXCEPTION
17893                 WHEN OTHERS THEN
17894                   pvt_debug(g_pkg_name||'CREATE_TERMS:For Status to be made Final Tenancies are required.',3);
17895                   l_locations_count := 0;
17896               END;
17897           pvt_debug('Lease Status:Draft/Final:'||l_lease_status,3);
17898           IF (x_return_status = fnd_api.g_ret_sts_success AND l_lease_status = 'F') THEN
17899             IF(l_locations_count > 0) THEN
17900               pvt_debug(g_pkg_name||'CREATE_TERMS:About to call FINALIZE_RECORD',3);
17901               FINALIZE_RECORD ( p_lease_id,l_lease_commencement_date,p_lease_context,g_org_id,l_api_name_full,'C',x_request_id);
17902             ELSE
17903                fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
17904                fnd_message.set_token('ERR_MSG', 'Tenancies are not provided for this Lease.Hence cannot be Finalized.');
17905                fnd_msg_pub.ADD;
17906                RAISE fnd_api.g_exc_error;
17907             END IF;
17908           END IF;
17909           IF (x_request_id = 0 ) THEN
17910                fnd_message.set_name ('PN', 'PN_SUBSCHEDULES_ERR');
17911                fnd_message.set_token ('API_NAME', l_api_name_full || '-SubmitSchedulesConcProgram');
17912                fnd_msg_pub.ADD;
17913                RAISE fnd_api.g_exc_error;
17914           END IF;
17915 
17916    EXCEPTION
17917    WHEN fnd_api.g_exc_error THEN
17918          x_return_status := fnd_api.g_ret_sts_error;
17919    WHEN fnd_api.g_exc_unexpected_error THEN
17920          x_return_status := fnd_api.g_ret_sts_unexp_error;
17921    WHEN OTHERS THEN
17922       x_return_status := fnd_api.g_ret_sts_unexp_error;
17923       pvt_debug(g_pkg_name||'CREATE_TERMS:Exception:OTHERS:'||SQLERRM,3);
17924    END;
17925 
17926 END create_terms;
17927 
17928 PROCEDURE INITIALIZE_RIGHTS_REC( p_right_rec       IN OUT NOCOPY lease_right_rec
17929                                , p_lease_context   IN          VARCHAR2
17930                                , x_return_status   OUT NOCOPY VARCHAR2
17931                                )
17932     AS
17933 BEGIN
17934    pvt_debug(g_pkg_name||'Inside INITIALIZE_RIGHTS_REC',3);
17935    IF p_right_rec.right_num = pn_lease_utils.g_pn_miss_num THEN
17936       p_right_rec.right_num := NULL;
17937    END IF;
17938       IF p_right_rec.right_type = pn_lease_utils.g_pn_miss_char THEN
17939       p_right_rec.right_type := NULL;
17940    END IF;
17941       IF p_right_rec.right_type_code = pn_lease_utils.g_pn_miss_char THEN
17942          p_right_rec.right_type_code := NULL;
17943    END IF;
17944       IF p_right_rec.right_status = pn_lease_utils.g_pn_miss_char THEN
17945       p_right_rec.right_status := NULL;
17946    END IF;
17947       IF p_right_rec.right_status_code = pn_lease_utils.g_pn_miss_char THEN
17948       p_right_rec.right_status_code := NULL;
17949    END IF;
17950       IF p_right_rec.right_reference = pn_lease_utils.g_pn_miss_char THEN
17951       p_right_rec.right_reference := NULL;
17952    END IF;
17953       IF p_right_rec.right_comments = pn_lease_utils.g_pn_miss_char THEN
17954       p_right_rec.right_comments := NULL;
17955    END IF;
17956       IF p_right_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
17957       p_right_rec.attribute_category := NULL;
17958    END IF;
17959       IF p_right_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
17960       p_right_rec.attribute1 := NULL;
17961    END IF;
17962       IF p_right_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
17963       p_right_rec.attribute2 := NULL;
17964    END IF;
17965       IF p_right_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
17966       p_right_rec.attribute3 := NULL;
17967    END IF;
17968       IF p_right_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
17969       p_right_rec.attribute4 := NULL;
17970    END IF;
17971       IF p_right_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
17972       p_right_rec.attribute5 := NULL;
17973    END IF;
17974       IF p_right_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
17975       p_right_rec.attribute6 := NULL;
17976    END IF;
17977       IF p_right_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
17978       p_right_rec.attribute7 := NULL;
17979    END IF;
17980       IF p_right_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
17981       p_right_rec.attribute8 := NULL;
17982    END IF;
17983       IF p_right_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
17984       p_right_rec.attribute9 := NULL;
17985    END IF;
17986       IF p_right_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
17987       p_right_rec.attribute10 := NULL;
17988    END IF;
17989       IF p_right_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
17990       p_right_rec.attribute11 := NULL;
17991    END IF;
17992       IF p_right_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
17993       p_right_rec.attribute12 := NULL;
17994    END IF;
17995       IF p_right_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
17996       p_right_rec.attribute13 := NULL;
17997    END IF;
17998 
17999    IF p_right_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18000       p_right_rec.attribute14 := NULL;
18001    END IF;
18002       IF p_right_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18003       p_right_rec.attribute15 := NULL;
18004    END IF;
18005 
18006  END INITIALIZE_RIGHTS_REC;
18007 
18008  PROCEDURE INITIALIZE_OBLIGATIONS_REC( p_obligation_rec       IN OUT NOCOPY lease_obligation_rec
18009                                , p_lease_context   IN          VARCHAR2
18010                                , x_return_status   OUT NOCOPY VARCHAR2
18011                                )
18012     AS
18013 BEGIN
18014     pvt_debug(g_pkg_name||'Inside INITIALIZE_OBLIGATIONS_REC',3);
18015    IF p_obligation_rec.status = pn_lease_utils.g_pn_miss_char THEN
18016       p_obligation_rec.status := NULL;
18017    END IF;
18018       IF p_obligation_rec.service_type = pn_lease_utils.g_pn_miss_char THEN
18019       p_obligation_rec.service_type := NULL;
18020    END IF;
18021       IF p_obligation_rec.service_type_lookup_code = pn_lease_utils.g_pn_miss_char THEN
18022          p_obligation_rec.service_type_lookup_code := NULL;
18023    END IF;
18024       IF p_obligation_rec.start_date = pn_lease_utils.g_pn_miss_date THEN
18025       p_obligation_rec.start_date := NULL;
18026    END IF;
18027       IF p_obligation_rec.end_date = pn_lease_utils.g_pn_miss_date THEN
18028       p_obligation_rec.end_date := NULL;
18029    END IF;
18030       IF p_obligation_rec.obligation_num = pn_lease_utils.g_pn_miss_char THEN
18031       p_obligation_rec.obligation_num := NULL;
18032    END IF;
18033    IF p_obligation_rec.responsibility_code = pn_lease_utils.g_pn_miss_char THEN
18034       p_obligation_rec.responsibility_code := NULL;
18035    END IF;
18036    IF p_obligation_rec.common_area_resp = pn_lease_utils.g_pn_miss_char THEN
18037       p_obligation_rec.common_area_resp := NULL;
18038    END IF;
18039    IF p_obligation_rec.financial_resp_party = pn_lease_utils.g_pn_miss_char THEN
18040       p_obligation_rec.financial_resp_party := NULL;
18041    END IF;
18042    IF p_obligation_rec.financial_resp_party_code = pn_lease_utils.g_pn_miss_char THEN
18043       p_obligation_rec.financial_resp_party_code := NULL;
18044    END IF;
18045    IF p_obligation_rec.financial_pct_resp = pn_lease_utils.g_pn_miss_char THEN
18046       p_obligation_rec.financial_pct_resp := NULL;
18047    END IF;
18048    IF p_obligation_rec.company_name = pn_lease_utils.g_pn_miss_char THEN
18049       p_obligation_rec.company_name := NULL;
18050    END IF;
18051       IF p_obligation_rec.responsibility_maint = pn_lease_utils.g_pn_miss_char THEN
18052       p_obligation_rec.responsibility_maint := NULL;
18053    END IF;
18054       IF p_obligation_rec.company_id = pn_lease_utils.g_pn_miss_num THEN
18055       p_obligation_rec.company_id := NULL;
18056    END IF;
18057    IF p_obligation_rec.obligation_reference = pn_lease_utils.g_pn_miss_char THEN
18058       p_obligation_rec.obligation_reference := NULL;
18059    END IF;
18060    IF p_obligation_rec.obligation_comments = pn_lease_utils.g_pn_miss_char THEN
18061       p_obligation_rec.obligation_comments := NULL;
18062    END IF;
18063    IF p_obligation_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
18064       p_obligation_rec.attribute_category := NULL;
18065    END IF;
18066       IF p_obligation_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
18067       p_obligation_rec.attribute1 := NULL;
18068    END IF;
18069       IF p_obligation_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
18070       p_obligation_rec.attribute2 := NULL;
18071    END IF;
18072       IF p_obligation_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
18073       p_obligation_rec.attribute3 := NULL;
18074    END IF;
18075       IF p_obligation_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
18076       p_obligation_rec.attribute4 := NULL;
18077    END IF;
18078       IF p_obligation_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
18079       p_obligation_rec.attribute5 := NULL;
18080    END IF;
18081       IF p_obligation_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
18082       p_obligation_rec.attribute6 := NULL;
18083    END IF;
18084       IF p_obligation_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
18085       p_obligation_rec.attribute7 := NULL;
18086    END IF;
18087       IF p_obligation_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
18088       p_obligation_rec.attribute8 := NULL;
18089    END IF;
18090       IF p_obligation_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
18091       p_obligation_rec.attribute9 := NULL;
18092    END IF;
18093       IF p_obligation_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
18094       p_obligation_rec.attribute10 := NULL;
18095    END IF;
18096       IF p_obligation_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
18097       p_obligation_rec.attribute11 := NULL;
18098    END IF;
18099       IF p_obligation_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
18100       p_obligation_rec.attribute12 := NULL;
18101    END IF;
18102       IF p_obligation_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
18103       p_obligation_rec.attribute13 := NULL;
18104    END IF;
18105    IF p_obligation_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18106       p_obligation_rec.attribute14 := NULL;
18107    END IF;
18108       IF p_obligation_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18109       p_obligation_rec.attribute15 := NULL;
18110    END IF;
18111 
18112  END INITIALIZE_OBLIGATIONS_REC;
18113 
18114  PROCEDURE INITIALIZE_OPTIONS_REC( p_option_rec       IN OUT NOCOPY lease_option_rec
18115                                , p_lease_context   IN          VARCHAR2
18116                                , x_return_status   OUT NOCOPY VARCHAR2
18117                                )
18118     AS
18119 BEGIN
18120    pvt_debug(g_pkg_name||'Inside INITIALIZE_OPTIONS_REC',3);
18121    IF p_option_rec.option_type = pn_lease_utils.g_pn_miss_char THEN
18122       p_option_rec.option_type := NULL;
18123    END IF;
18124       IF p_option_rec.option_type_code = pn_lease_utils.g_pn_miss_char THEN
18125       p_option_rec.option_type_code := NULL;
18126    END IF;
18127       IF p_option_rec.start_date = pn_lease_utils.g_pn_miss_date THEN
18128          p_option_rec.start_date := NULL;
18129    END IF;
18130       IF p_option_rec.expiration_date = pn_lease_utils.g_pn_miss_date THEN
18131       p_option_rec.expiration_date := NULL;
18132    END IF;
18133    IF p_option_rec.option_reference = pn_lease_utils.g_pn_miss_char THEN
18134       p_option_rec.option_reference := NULL;
18135    END IF;
18136    IF p_option_rec.option_status_type = pn_lease_utils.g_pn_miss_char THEN
18137       p_option_rec.option_status_type := NULL;
18138    END IF;
18139    IF p_option_rec.option_status_lookup_code = pn_lease_utils.g_pn_miss_char THEN
18140       p_option_rec.option_status_lookup_code := NULL;
18141    END IF;
18142    IF p_option_rec.option_notice_reqd_type = pn_lease_utils.g_pn_miss_char THEN
18143       p_option_rec.option_notice_reqd_type := NULL;
18144    END IF;
18145    IF p_option_rec.option_notice_reqd = pn_lease_utils.g_pn_miss_char THEN
18146       p_option_rec.option_notice_reqd := NULL;
18147    END IF;
18148    IF p_option_rec.option_size = pn_lease_utils.g_pn_miss_num THEN
18149       p_option_rec.option_size := NULL;
18150    END IF;
18151    IF p_option_rec.option_exer_start_date = pn_lease_utils.g_pn_miss_date THEN
18152       p_option_rec.option_exer_start_date := NULL;
18153    END IF;
18154       IF p_option_rec.option_exer_end_date = pn_lease_utils.g_pn_miss_date THEN
18155       p_option_rec.option_exer_end_date := NULL;
18156    END IF;
18157       IF p_option_rec.option_action_date = pn_lease_utils.g_pn_miss_date THEN
18158       p_option_rec.option_action_date := NULL;
18159    END IF;
18160    IF p_option_rec.uom_type = pn_lease_utils.g_pn_miss_char THEN
18161       p_option_rec.uom_type := NULL;
18162    END IF;
18163    IF p_option_rec.uom_code = pn_lease_utils.g_pn_miss_char THEN
18164       p_option_rec.uom_code := NULL;
18165    END IF;
18166    IF p_option_rec.option_cost = pn_lease_utils.g_pn_miss_char THEN
18167       p_option_rec.option_cost := NULL;
18168    END IF;
18169    IF p_option_rec.option_area_change = pn_lease_utils.g_pn_miss_num THEN
18170       p_option_rec.option_area_change := NULL;
18171    END IF;
18172    IF p_option_rec.comments = pn_lease_utils.g_pn_miss_char THEN
18173       p_option_rec.comments := NULL;
18174    END IF;
18175    IF p_option_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
18176       p_option_rec.attribute_category := NULL;
18177    END IF;
18178       IF p_option_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
18179       p_option_rec.attribute1 := NULL;
18180    END IF;
18181       IF p_option_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
18182       p_option_rec.attribute2 := NULL;
18183    END IF;
18184       IF p_option_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
18185       p_option_rec.attribute3 := NULL;
18186    END IF;
18187       IF p_option_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
18188       p_option_rec.attribute4 := NULL;
18189    END IF;
18190       IF p_option_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
18191       p_option_rec.attribute5 := NULL;
18192    END IF;
18193       IF p_option_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
18194       p_option_rec.attribute6 := NULL;
18195    END IF;
18196       IF p_option_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
18197       p_option_rec.attribute7 := NULL;
18198    END IF;
18199       IF p_option_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
18200       p_option_rec.attribute8 := NULL;
18201    END IF;
18202       IF p_option_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
18203       p_option_rec.attribute9 := NULL;
18204    END IF;
18205       IF p_option_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
18206       p_option_rec.attribute10 := NULL;
18207    END IF;
18208       IF p_option_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
18209       p_option_rec.attribute11 := NULL;
18210    END IF;
18211       IF p_option_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
18212       p_option_rec.attribute12 := NULL;
18213    END IF;
18214       IF p_option_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
18215       p_option_rec.attribute13 := NULL;
18216    END IF;
18217    IF p_option_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18218       p_option_rec.attribute14 := NULL;
18219    END IF;
18220       IF p_option_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18221       p_option_rec.attribute15 := NULL;
18222    END IF;
18223  END INITIALIZE_OPTIONS_REC;
18224 
18225   PROCEDURE INITIALIZE_INSURANCE_REC( p_insurance_rec       IN OUT NOCOPY lease_insurance_rec
18226                                , p_lease_context   IN          VARCHAR2
18227                                , x_return_status   OUT NOCOPY VARCHAR2
18228                                )
18229     AS
18230 BEGIN
18231    pvt_debug(g_pkg_name||'Inside INITIALIZE_INSURANCE_REC',3);
18232     IF p_insurance_rec.status = pn_lease_utils.g_pn_miss_char THEN
18233       p_insurance_rec.status := NULL;
18234    END IF;
18235       IF p_insurance_rec.status_code = pn_lease_utils.g_pn_miss_char THEN
18236       p_insurance_rec.status_code := NULL;
18237    END IF;
18238       IF p_insurance_rec.insurance_type = pn_lease_utils.g_pn_miss_char THEN
18239          p_insurance_rec.insurance_type := NULL;
18240    END IF;
18241       IF p_insurance_rec.insurance_type_lookup_code = pn_lease_utils.g_pn_miss_char THEN
18242       p_insurance_rec.insurance_type_lookup_code := NULL;
18243    END IF;
18244    IF p_insurance_rec.policy_start_date = pn_lease_utils.g_pn_miss_date THEN
18245       p_insurance_rec.policy_start_date := NULL;
18246    END IF;
18247    IF p_insurance_rec.policy_expiration_date = pn_lease_utils.g_pn_miss_date THEN
18248       p_insurance_rec.policy_expiration_date := NULL;
18249    END IF;
18250    IF p_insurance_rec.insurer_name = pn_lease_utils.g_pn_miss_char THEN
18251       p_insurance_rec.insurer_name := NULL;
18252    END IF;
18253    IF p_insurance_rec.policy_number = pn_lease_utils.g_pn_miss_char THEN
18254       p_insurance_rec.policy_number := NULL;
18255    END IF;
18256    IF p_insurance_rec.insured_amount = pn_lease_utils.g_pn_miss_num THEN
18257       p_insurance_rec.insured_amount := NULL;
18258    END IF;
18259    IF p_insurance_rec.required_amount = pn_lease_utils.g_pn_miss_num THEN
18260       p_insurance_rec.required_amount := NULL;
18261    END IF;
18262 ------------
18263    IF p_insurance_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
18264       p_insurance_rec.attribute_category := NULL;
18265    END IF;
18266       IF p_insurance_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
18267       p_insurance_rec.attribute1 := NULL;
18268    END IF;
18269       IF p_insurance_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
18270       p_insurance_rec.attribute2 := NULL;
18271    END IF;
18272       IF p_insurance_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
18273       p_insurance_rec.attribute3 := NULL;
18274    END IF;
18275       IF p_insurance_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
18276       p_insurance_rec.attribute4 := NULL;
18277    END IF;
18278       IF p_insurance_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
18279       p_insurance_rec.attribute5 := NULL;
18280    END IF;
18281       IF p_insurance_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
18282       p_insurance_rec.attribute6 := NULL;
18283    END IF;
18284       IF p_insurance_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
18285       p_insurance_rec.attribute7 := NULL;
18286    END IF;
18287       IF p_insurance_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
18288       p_insurance_rec.attribute8 := NULL;
18289    END IF;
18290       IF p_insurance_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
18291       p_insurance_rec.attribute9 := NULL;
18292    END IF;
18293       IF p_insurance_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
18294       p_insurance_rec.attribute10 := NULL;
18295    END IF;
18296       IF p_insurance_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
18297       p_insurance_rec.attribute11 := NULL;
18298    END IF;
18299       IF p_insurance_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
18300       p_insurance_rec.attribute12 := NULL;
18301    END IF;
18302       IF p_insurance_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
18303       p_insurance_rec.attribute13 := NULL;
18304    END IF;
18305    IF p_insurance_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18306       p_insurance_rec.attribute14 := NULL;
18307    END IF;
18308       IF p_insurance_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18309       p_insurance_rec.attribute15 := NULL;
18310    END IF;
18311  END INITIALIZE_INSURANCE_REC;
18312 
18313 PROCEDURE INITIALIZE_MILESTONE_REC( p_milestone_rec       IN OUT NOCOPY lease_milestone_rec
18314                                , p_lease_context   IN          VARCHAR2
18315                                , x_return_status   OUT NOCOPY VARCHAR2
18316                                )
18317     AS
18318 BEGIN
18319 pvt_debug(g_pkg_name||'Inside INITIALIZE_MILESTONE_REC',3);
18320     IF p_milestone_rec.milestone_type = pn_lease_utils.g_pn_miss_char THEN
18321       p_milestone_rec.milestone_type := NULL;
18322    END IF;
18323       IF p_milestone_rec.milestone_type_code = pn_lease_utils.g_pn_miss_char THEN
18324       p_milestone_rec.milestone_type_code := NULL;
18325    END IF;
18326       IF p_milestone_rec.action_due_date = pn_lease_utils.g_pn_miss_date THEN
18327          p_milestone_rec.action_due_date := NULL;
18328    END IF;
18329    IF p_milestone_rec.user_name = pn_lease_utils.g_pn_miss_char THEN
18330          p_milestone_rec.user_name := NULL;
18331    END IF;
18332    IF p_milestone_rec.user_id = pn_lease_utils.g_pn_miss_num THEN
18333          p_milestone_rec.user_id := NULL;
18334    END IF;
18335       IF p_milestone_rec.lead_days = pn_lease_utils.g_pn_miss_num THEN
18336       p_milestone_rec.lead_days := NULL;
18337    END IF;
18338    IF p_milestone_rec.frequency = pn_lease_utils.g_pn_miss_num THEN
18339       p_milestone_rec.frequency := NULL;
18340    END IF;
18341    IF p_milestone_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
18342       p_milestone_rec.attribute_category := NULL;
18343    END IF;
18344       IF p_milestone_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
18345       p_milestone_rec.attribute1 := NULL;
18346    END IF;
18347       IF p_milestone_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
18348       p_milestone_rec.attribute2 := NULL;
18349    END IF;
18350       IF p_milestone_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
18351       p_milestone_rec.attribute3 := NULL;
18352    END IF;
18353       IF p_milestone_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
18354       p_milestone_rec.attribute4 := NULL;
18355    END IF;
18356       IF p_milestone_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
18357       p_milestone_rec.attribute5 := NULL;
18358    END IF;
18359       IF p_milestone_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
18360       p_milestone_rec.attribute6 := NULL;
18361    END IF;
18362       IF p_milestone_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
18363       p_milestone_rec.attribute7 := NULL;
18364    END IF;
18365       IF p_milestone_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
18366       p_milestone_rec.attribute8 := NULL;
18367    END IF;
18368       IF p_milestone_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
18369       p_milestone_rec.attribute9 := NULL;
18370    END IF;
18371       IF p_milestone_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
18372       p_milestone_rec.attribute10 := NULL;
18373    END IF;
18374       IF p_milestone_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
18375       p_milestone_rec.attribute11 := NULL;
18376    END IF;
18377       IF p_milestone_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
18378       p_milestone_rec.attribute12 := NULL;
18379    END IF;
18380       IF p_milestone_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
18381       p_milestone_rec.attribute13 := NULL;
18382    END IF;
18383    IF p_milestone_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18384       p_milestone_rec.attribute14 := NULL;
18385    END IF;
18386       IF p_milestone_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18387       p_milestone_rec.attribute15 := NULL;
18388    END IF;
18389  END INITIALIZE_MILESTONE_REC;
18390 
18391  PROCEDURE INITIALIZE_NOTES_REC( p_notes_rec       IN OUT NOCOPY pn_lease_note_rec
18392                                  , p_lease_context   IN          VARCHAR2
18393                                  , x_return_status   OUT NOCOPY VARCHAR2
18394                                  )
18395     AS
18396  BEGIN
18397    pvt_debug(g_pkg_name||'Inside INITIALIZE_NOTES_REC',3);
18398     IF p_notes_rec.note_date = pn_lease_utils.g_pn_miss_date THEN
18399       p_notes_rec.note_date := NULL;
18400      END IF;
18401     IF p_notes_rec.note_type = pn_lease_utils.g_pn_miss_char THEN
18402       p_notes_rec.note_type := NULL;
18403    END IF;
18404       IF p_notes_rec.note_type_lookup_code = pn_lease_utils.g_pn_miss_char THEN
18405          p_notes_rec.note_type_lookup_code := NULL;
18406    END IF;
18407    IF p_notes_rec.note_detail_id = pn_lease_utils.g_pn_miss_num THEN
18408       p_notes_rec.note_detail_id := NULL;
18409    END IF;
18410    IF p_notes_rec.text = pn_lease_utils.g_pn_miss_char THEN
18411       p_notes_rec.text := NULL;
18412    END IF;
18413 
18414 ------------
18415    IF p_notes_rec.attribute_category = pn_lease_utils.g_pn_miss_char THEN
18416       p_notes_rec.attribute_category := NULL;
18417    END IF;
18418       IF p_notes_rec.attribute1 = pn_lease_utils.g_pn_miss_char THEN
18419       p_notes_rec.attribute1 := NULL;
18420    END IF;
18421       IF p_notes_rec.attribute2 = pn_lease_utils.g_pn_miss_char THEN
18422       p_notes_rec.attribute2 := NULL;
18423    END IF;
18424       IF p_notes_rec.attribute3 = pn_lease_utils.g_pn_miss_char THEN
18425       p_notes_rec.attribute3 := NULL;
18426    END IF;
18427       IF p_notes_rec.attribute4 = pn_lease_utils.g_pn_miss_char THEN
18428       p_notes_rec.attribute4 := NULL;
18429    END IF;
18430       IF p_notes_rec.attribute5 = pn_lease_utils.g_pn_miss_char THEN
18431       p_notes_rec.attribute5 := NULL;
18432    END IF;
18433       IF p_notes_rec.attribute6 = pn_lease_utils.g_pn_miss_char THEN
18434       p_notes_rec.attribute6 := NULL;
18435    END IF;
18436       IF p_notes_rec.attribute7 = pn_lease_utils.g_pn_miss_char THEN
18437       p_notes_rec.attribute7 := NULL;
18438    END IF;
18439       IF p_notes_rec.attribute8 = pn_lease_utils.g_pn_miss_char THEN
18440       p_notes_rec.attribute8 := NULL;
18441    END IF;
18442       IF p_notes_rec.attribute9 = pn_lease_utils.g_pn_miss_char THEN
18443       p_notes_rec.attribute9 := NULL;
18444    END IF;
18445       IF p_notes_rec.attribute10 = pn_lease_utils.g_pn_miss_char THEN
18446       p_notes_rec.attribute10 := NULL;
18447    END IF;
18448       IF p_notes_rec.attribute11 = pn_lease_utils.g_pn_miss_char THEN
18449       p_notes_rec.attribute11 := NULL;
18450    END IF;
18451       IF p_notes_rec.attribute12 = pn_lease_utils.g_pn_miss_char THEN
18452       p_notes_rec.attribute12 := NULL;
18453    END IF;
18454       IF p_notes_rec.attribute13 = pn_lease_utils.g_pn_miss_char THEN
18455       p_notes_rec.attribute13 := NULL;
18456    END IF;
18457    IF p_notes_rec.attribute14 = pn_lease_utils.g_pn_miss_char THEN
18458       p_notes_rec.attribute14 := NULL;
18459    END IF;
18460       IF p_notes_rec.attribute15 = pn_lease_utils.g_pn_miss_char THEN
18461       p_notes_rec.attribute15 := NULL;
18462    END IF;
18463  END INITIALIZE_NOTES_REC;
18464 
18465 --------------------------------------------------------------------------------
18466 --Debug Procedure
18467 --------------------------------------------------------------------------------
18468 
18469    PROCEDURE pvt_debug (
18470       p_log_message              IN       VARCHAR2
18471     , p_log_level                IN       NUMBER
18472    )
18473    IS
18474    BEGIN
18475     --pvt_debug(g_pkg_name||'Inside pvt_debug',3);
18476       IF g_debug = 'Y'
18477       THEN
18478 
18479          pn_debug.g_err_stage  := p_log_message;
18480          pn_debug.WRITE (g_module_name
18481                        , pn_debug.g_err_stage
18482                        , p_log_level
18483                         );
18484       ELSE
18485          NULL;
18486       END IF;
18487    END pvt_debug;
18488 ------------------------------------------------------------Terms End-------------------
18489 FUNCTION get_miss_char_decode ( p_parameter VARCHAR2)
18490 RETURN VARCHAR2
18491 AS
18492  l_char VARCHAR2(4000);
18493 BEGIN
18494    SELECT decode (p_parameter,pn_lease_utils.g_pn_miss_char,'',p_parameter)
18495    INTO   l_char
18496    FROM   dual;
18497    RETURN l_char;
18498 EXCEPTION
18499   WHEN OTHERS THEN
18500     pvt_debug(g_pkg_name||'-get_miss_char_decode:Exception'||SQLERRM,3);
18501     l_char:=NULL;
18502     RETURN l_char;
18503 END get_miss_char_decode;
18504 
18505 FUNCTION get_miss_num_decode ( p_parameter NUMBER)
18506 RETURN NUMBER
18507 AS
18508  l_num NUMBER;
18509 BEGIN
18510    SELECT decode (p_parameter,pn_lease_utils.g_pn_miss_num,'',p_parameter)
18511    INTO   l_num
18512    FROM   dual;
18513    RETURN l_num;
18514 EXCEPTION
18515   WHEN OTHERS THEN
18516     pvt_debug(g_pkg_name||'-get_miss_num_decode:Exception'||SQLERRM,3);
18517     l_num:=NULL;
18518     RETURN l_num;
18519 END get_miss_num_decode;
18520 
18521 FUNCTION get_miss_date_decode ( p_parameter DATE)
18522 RETURN DATE
18523 AS
18524  l_date DATE;
18525 BEGIN
18526    SELECT decode (p_parameter,pn_lease_utils.g_pn_miss_date,'',p_parameter)
18527    INTO   l_date
18528    FROM   dual;
18529    RETURN l_date;
18530 EXCEPTION
18531   WHEN OTHERS THEN
18532     pvt_debug(g_pkg_name||'-get_miss_date_decode:Exception'||SQLERRM,3);
18533     l_date:=NULL;
18534     RETURN l_date;
18535 END get_miss_date_decode;
18536 
18537 FUNCTION get_attribute_status( p_desc_name VARCHAR2)
18538 RETURN NUMBER
18539 AS
18540  l_count NUMBER :=0;
18541 BEGIN
18542    SELECT count(1)
18543    INTO   l_count
18544    FROM   fnd_descr_flex_col_usage_vl
18545    WHERE  descriptive_flexfield_name = UPPER(trim(p_desc_name))
18546    AND    enabled_flag = 'Y'
18547    AND    display_flag = 'Y';
18548    RETURN l_count;
18549  EXCEPTION
18550   WHEN OTHERS THEN
18551     l_count:=0;
18552     RETURN l_count;
18553 END get_attribute_status;
18554 
18555 PROCEDURE get_attribute_mandatory_status( p_desc_name   IN            VARCHAR2
18556                                          ,p_attribute1  IN            VARCHAR2
18557                                          ,p_attribute2  IN            VARCHAR2
18558                                          ,p_attribute3  IN            VARCHAR2
18559                                          ,p_attribute4  IN            VARCHAR2
18560                                          ,p_attribute5  IN            VARCHAR2
18561                                          ,p_attribute6  IN            VARCHAR2
18562                                          ,p_attribute7  IN            VARCHAR2
18563                                          ,p_attribute8  IN            VARCHAR2
18564                                          ,p_attribute9  IN            VARCHAR2
18565                                          ,p_attribute10 IN            VARCHAR2
18566                                          ,p_attribute11 IN            VARCHAR2
18567                                          ,p_attribute12 IN            VARCHAR2
18568                                          ,p_attribute13 IN            VARCHAR2
18569                                          ,p_attribute14 IN            VARCHAR2
18570                                          ,p_attribute15 IN            VARCHAR2
18571                                          ,x_return_status OUT NOCOPY VARCHAR2
18572                                        )
18573 AS
18574 CURSOR cur_req_status(p_desc_name VARCHAR2)
18575 IS
18576 SELECT a.*
18577 FROM   fnd_descr_flex_col_usage_vl a
18578 WHERE  a.descriptive_flexfield_name = trim(p_desc_name)
18579 AND    a.enabled_flag  = 'Y'
18580 AND    a.display_flag  = 'Y'
18581 AND    a.required_flag = 'Y';
18582 
18583 l_err_count NUMBER:=0;
18584 
18585 BEGIN
18586    x_return_status   := fnd_api.g_ret_sts_success;
18587    l_err_count :=0;
18588    FOR r_req_status IN cur_req_status(p_desc_name)
18589    LOOP
18590         IF (trim(r_req_status.application_column_name) = 'ATTRIBUTE1' AND (p_attribute1   IS NULL OR p_attribute1 = pn_lease_utils.g_pn_miss_char)) THEN
18591           l_err_count := l_err_count + 1;
18592       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE2' AND (p_attribute2   IS NULL OR p_attribute2 = pn_lease_utils.g_pn_miss_char)) THEN
18593           l_err_count := l_err_count + 1;
18594       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE3' AND (p_attribute3   IS NULL OR p_attribute3 = pn_lease_utils.g_pn_miss_char)) THEN
18595           l_err_count := l_err_count + 1;
18596       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE4' AND (p_attribute4   IS NULL OR p_attribute4 = pn_lease_utils.g_pn_miss_char)) THEN
18597           l_err_count := l_err_count + 1;
18598       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE5' AND (p_attribute5   IS NULL OR p_attribute5 = pn_lease_utils.g_pn_miss_char)) THEN
18599           l_err_count := l_err_count + 1;
18600       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE6' AND (p_attribute6   IS NULL OR p_attribute6 = pn_lease_utils.g_pn_miss_char)) THEN
18601           l_err_count := l_err_count + 1;
18602       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE7' AND (p_attribute7   IS NULL OR p_attribute7 = pn_lease_utils.g_pn_miss_char)) THEN
18603           l_err_count := l_err_count + 1;
18604       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE8' AND (p_attribute8   IS NULL OR p_attribute8 = pn_lease_utils.g_pn_miss_char)) THEN
18605           l_err_count := l_err_count + 1;
18606       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE9' AND (p_attribute9   IS NULL OR p_attribute9 = pn_lease_utils.g_pn_miss_char)) THEN
18607           l_err_count := l_err_count + 1;
18608       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE10' AND (p_attribute10 IS NULL OR p_attribute10 = pn_lease_utils.g_pn_miss_char)) THEN
18609           l_err_count := l_err_count + 1;
18610       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE11' AND (p_attribute11 IS NULL OR p_attribute11 = pn_lease_utils.g_pn_miss_char)) THEN
18611           l_err_count := l_err_count + 1;
18612       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE12' AND (p_attribute12 IS NULL OR p_attribute12 = pn_lease_utils.g_pn_miss_char)) THEN
18613           l_err_count := l_err_count + 1;
18614       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE13' AND (p_attribute13 IS NULL OR p_attribute13 = pn_lease_utils.g_pn_miss_char)) THEN
18615           l_err_count := l_err_count + 1;
18616       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE14' AND (p_attribute14 IS NULL OR p_attribute14 = pn_lease_utils.g_pn_miss_char)) THEN
18617           l_err_count := l_err_count + 1;
18618       ELSIF(trim(r_req_status.application_column_name) = 'ATTRIBUTE15' AND(p_attribute15  IS NULL OR p_attribute15 = pn_lease_utils.g_pn_miss_char)) THEN
18619           l_err_count := l_err_count + 1;
18620       END IF;
18621    END LOOP;
18622       IF (l_err_count > 0) THEN
18623          x_return_status  := fnd_api.g_ret_sts_error;
18624       ELSE
18625         x_return_status  := fnd_api.g_ret_sts_success;
18626       END IF;
18627  EXCEPTION
18628   WHEN OTHERS THEN
18629       x_return_status  :=  fnd_api.g_ret_sts_unexp_error;
18630 END get_attribute_mandatory_status;
18631 
18632 --------UPDATE_STATUS
18633    PROCEDURE update_status( p_lease_id                  IN OUT NOCOPY  NUMBER
18634                           , p_new_approval_status_code  IN OUT NOCOPY  VARCHAR2
18635                           , p_new_lease_status          IN OUT NOCOPY  VARCHAR2
18636                           , p_operation                 IN             VARCHAR2 DEFAULT 'UPDATE_STATUS'
18637                           , x_return_status                OUT NOCOPY  VARCHAR2
18638                           , x_msg_count                    OUT NOCOPY  NUMBER
18639                           , x_msg_data                     OUT NOCOPY  VARCHAR2
18640                           )
18641    IS
18642       CURSOR c_lease_id( p_lease_id IN NUMBER
18643                        , p_org_id   IN NUMBER
18644                        )
18645          IS  SELECT PLA.lease_id                lease_id
18646                    ,PLA.status                  status
18647                    ,PLA.lease_status            lease_status
18648                    ,PLD.lease_commencement_date lease_commencement_date
18649              FROM   pn_leases_all PLA
18650                    ,pn_lease_details_all PLD
18651              WHERE  PLD.lease_id = PLA.lease_id
18652              AND    PLD.org_id   = PLA.org_id
18653              AND    PLA.lease_id = p_lease_id
18654              AND    PLA.org_id   = g_org_id;
18655 
18656       CURSOR c_location_exists( p_lease_id IN NUMBER
18657                               , p_org_id   IN NUMBER
18658                        )
18659          IS  SELECT 'Y'
18660                FROM dual
18661               WHERE EXISTS (SELECT 1
18662                               FROM pn_tenancies_ALL
18663                              WHERE lease_id= p_lease_id
18664                                AND org_id   = g_org_id
18665                            );
18666 
18667     --l_org_id                                 NUMBER                             :=  g_org_id;
18668       l_api_name                  CONSTANT     VARCHAR2 (30)                      :=  p_operation;
18669     --l_api_name_full             CONSTANT     VARCHAR2 (61)                      :=  g_pkg_name || '.'|| l_api_name;   This line should be uncommented
18670       l_param_status                           VARCHAR2 (30)                      := 'P_APPROVAL_STATUS';
18671       l_status_lookup_type                     fnd_lookup_types.lookup_type%TYPE  := 'PN_LEASE_STATUS_TYPE';
18672       l_param_lease_status                     VARCHAR2 (30)                      := 'P_LEASE_STATUS';
18673       l_lease_status_lookup_type               fnd_lookup_types.lookup_type%TYPE  := 'PN_LEASESTATUS_TYPE';
18674       l_error_flag                             VARCHAR2(1)                        := 'Y';
18675       l_lease_id                               NUMBER;
18676       l_approval_status_old                    VARCHAR2 (30);
18677       l_lease_status_old                       VARCHAR2 (30);
18678       l_lease_commencement_date                DATE;
18679       l_schedule_context                       VARCHAR2 (30)                      := 'UPDATE';
18680       l_request_id                             NUMBER;
18681       l_location_exists                        VARCHAR2(1);
18682       l_submitted_status                       VARCHAR2(1)                        :='S';
18683 
18684   --    -- Below global variables to be removed at the time of plugging this procedure into pn_lease_pkg
18685   --   g_pkg_name     VARCHAR2(30);
18686       g_program_unit VARCHAR2(30);
18687    --   g_org_id       NUMBER;
18688 
18689 
18690    BEGIN
18691 
18692       g_program_unit                       := 'UPDATE_STATUS';
18693       x_return_status                      := fnd_api.g_ret_sts_success;
18694 
18695       pvt_debug (g_pkg_name||'.'|| g_program_unit || ' -  Start of status update procedure', 3);
18696 
18697 
18698       -- Check if passed lease id exists or not
18699       IF  p_lease_id IS NOT NULL AND p_lease_id <> pn_lease_utils.g_pn_miss_num
18700       THEN
18701 
18702          OPEN c_lease_id( p_lease_id,g_org_id);
18703 
18704          FETCH c_lease_id
18705          INTO  l_lease_id
18706               ,l_approval_status_old
18707               ,l_lease_status_old
18708               ,l_lease_commencement_date;
18709 
18710          IF (c_lease_id%NOTFOUND)
18711          THEN
18712             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
18713             fnd_message.set_token ('ERR_MSG', 'The provided lease id is invalid. Please provide a valid lease id to update the status');
18714             fnd_msg_pub.ADD;
18715             --x_return_status                      := fnd_api.g_ret_sts_error;
18716 
18717             RAISE fnd_api.g_exc_error;
18718 
18719          END IF;
18720 
18721          IF c_lease_id%ISOPEN
18722          THEN
18723             CLOSE c_lease_id;
18724          END IF;
18725       ELSE
18726 
18727          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
18728          fnd_message.set_token ('ERR_MSG', 'Please provide a valid lease id to update the status');
18729          fnd_msg_pub.ADD;
18730          --x_return_status                      := fnd_api.g_ret_sts_error;
18731 
18732          RAISE fnd_api.g_exc_error;
18733 
18734       END IF;
18735 
18736       -- Validate passed p_new_approval_status_code against the FND_LOOKUPS.
18737       IF  p_new_approval_status_code IS NOT NULL AND p_new_approval_status_code <> pn_lease_utils.g_pn_miss_char
18738       THEN
18739          pn_lease_utils.get_lookup_code
18740                                      (p_parameter_name              =>  l_param_status
18741                                     , p_operation                   => p_operation
18742                                     , p_lookup_meaning              => NULL
18743                                     , p_lookup_type                 => l_status_lookup_type
18744                                     , x_lookup_type_code            => p_new_approval_status_code
18745                                     , x_return_status               => x_return_status);
18746 
18747 
18748          pvt_debug (g_pkg_name||'.'|| g_program_unit || ' -  New approval status code ater calling pn_lease_utils.get_lookup_code:' ||p_new_approval_status_code, 3);
18749          --dbms_output.put_line('p_new_approval_status_code:'||p_new_approval_status_code);
18750 
18751          IF (x_return_status = fnd_api.g_ret_sts_error)
18752          THEN
18753             p_new_approval_status_code:=NULL;
18754             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
18755             fnd_message.set_token ('ERR_MSG', 'Please provide a valid approval status code to update');
18756             fnd_msg_pub.ADD;
18757             x_return_status := fnd_api.g_ret_sts_success;
18758             --x_return_status                      := fnd_api.g_ret_sts_error;
18759             --RAISE fnd_api.g_exc_error;
18760          END IF;
18761       END IF;
18762 
18763       -- Validate passed p_new_lease_status against the FND_LOOKUPS.
18764       IF  p_new_lease_status IS NOT NULL AND p_new_lease_status <> pn_lease_utils.g_pn_miss_char
18765       THEN
18766          pn_lease_utils.get_lookup_code
18767                                      (p_parameter_name              => l_param_lease_status
18768                                     , p_operation                   => p_operation
18769                                     , p_lookup_meaning              => NULL
18770                                     , p_lookup_type                 => l_lease_status_lookup_type
18771                                     , x_lookup_type_code            => p_new_lease_status
18772                                     , x_return_status               => x_return_status);
18773 
18774          pvt_debug (g_pkg_name||'.'|| g_program_unit || ' -  New lease status code ater calling pn_lease_utils.get_lookup_code:' ||p_new_lease_status, 3);
18775 
18776          --dbms_output.put_line('p_new_lease_status:'||p_new_lease_status);
18777 
18778          IF (x_return_status = fnd_api.g_ret_sts_error)
18779          THEN
18780             p_new_lease_status:=NULL;
18781             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
18782             fnd_message.set_token ('ERR_MSG', 'Please provide a valid lease status code to update');
18783             fnd_msg_pub.ADD;
18784             x_return_status := fnd_api.g_ret_sts_success;
18785             --x_return_status                      := fnd_api.g_ret_sts_error;
18786             --RAISE fnd_api.g_exc_error;
18787          END IF;
18788       END IF;
18789 
18790 
18791       -- Update associated lease status with the new lease status if old and new statuses are differenct
18792       IF x_return_status = fnd_api.g_ret_sts_success
18793       THEN
18794 
18795          IF NVL(p_new_lease_status,l_lease_status_old) <> l_lease_status_old
18796               AND l_approval_status_old='D'
18797          THEN
18798             BEGIN
18799                UPDATE pn_leases_all
18800                   SET lease_status   = p_new_lease_status
18801                 WHERE lease_id = p_lease_id
18802                   AND org_id= g_org_id;
18803                 --dbms_output.put_line('p_new_lease_status updated');
18804             EXCEPTION
18805                WHEN OTHERS
18806                THEN
18807                  pvt_debug (   'Exception in updating lease status code  '
18808                                           || g_pkg_name
18809                                           || g_program_unit
18810                                           || '-'
18811                                           || SQLERRM
18812                                           , 5);
18813                    x_return_status                      := fnd_api.g_ret_sts_unexp_error;
18814             END;
18815           END IF;
18816       END IF;
18817 
18818       IF x_return_status = fnd_api.g_ret_sts_success
18819       THEN
18820             --dbms_output.put_line('Before IF check Raising Business Event');
18821             IF NVL(p_new_lease_status,l_lease_status_old) <> l_lease_status_old
18822                AND l_approval_status_old='D'
18823             THEN
18824                 --dbms_output.put_line('Raising Business Event');
18825                --Raise Business Event passing the old and new approval and lease statuses.
18826               BEGIN
18827               --dbms_output.put_line('Just before Raising Business Event');
18828                pn_am_wf.raise_business_event(  p_transaction_id      => l_lease_id
18829                                              , p_event_name          => 'oracle.apps.pn.lease.leasestatus'
18830                                              , p_lease_id            => l_lease_id
18831                                            -- , p_old_approval_status => l_approval_status_old        -- Commented on 22NOV2010
18832                                            -- , p_new_approval_status => p_new_approval_status_code   -- Commented on 22NOV2010
18833                                              , p_old_lease_status    => l_lease_status_old
18834                                              , p_new_lease_status    => p_new_lease_status
18835                                             );
18836                EXCEPTION
18837           WHEN OTHERS THEN
18838                    --dbms_output.put_line('Exception in Raising Business Event');
18839                    pvt_debug('PN_LEASE_PVT-update_status:Exception in Raising Business Event',3);
18840           END;
18841             END IF;
18842        END IF;
18843 
18844 
18845 
18846       IF x_return_status = fnd_api.g_ret_sts_success
18847       THEN
18848 
18849         -- Check if location exists for the provided lease_id
18850 
18851 
18852         OPEN c_location_exists( p_lease_id,g_org_id);
18853 
18854         FETCH c_location_exists
18855         INTO  l_location_exists;
18856 
18857         IF (c_location_exists%NOTFOUND)
18858         THEN
18859            fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
18860            fnd_message.set_token ('ERR_MSG', 'Location do not exist for provided lease id');
18861            fnd_msg_pub.ADD;
18862            --RAISE fnd_api.g_exc_error;
18863 
18864         END IF;
18865 
18866         IF c_location_exists%ISOPEN
18867         THEN
18868           CLOSE c_location_exists;
18869         END IF;
18870 
18871          -- Update associated lease status with 'S' if old,new approval statuses are'D','F' respectively, location exists and Approval work flow is enabled
18872          IF p_new_approval_status_code='F' AND l_approval_status_old='D' -- Location Exists
18873            AND l_location_exists='Y'
18874          THEN
18875 
18876             --Initiate Approval Workflow if profile option value for 'PN: Use Lease Approval Workflow' is set to 'Y' else submit the standard concurrent request
18877            IF NVL(fnd_profile.VALUE ('PN_LEASE_APPROVAL_WORKFLOW'),'N') ='Y'
18878        THEN
18879 
18880           --dbms_output.put_line('Updating status to Submitted');
18881                BEGIN
18882                   UPDATE pn_leases_all
18883                      SET status   = l_submitted_status -- Holds the value of S'
18884                    WHERE lease_id = p_lease_id
18885                      AND org_id= g_org_id;
18886                    COMMIT;
18887 
18888                EXCEPTION
18889                   WHEN OTHERS
18890                   THEN
18891                     pvt_debug (   'Exception in updating lease approval status code  '
18892                                              || g_pkg_name
18893                                              || g_program_unit
18894                                              || '-'
18895                                              || SQLERRM
18896                                              , 5);
18897                      x_return_status                      := fnd_api.g_ret_sts_unexp_error;
18898               END;
18899 
18900               -- Initiate Approval Workflow
18901               --dbms_output.put_line('Call Approval Workflow');
18902               pn_am_wf.call_lease_approval_wf( p_transaction_id  => p_lease_id
18903                                          ,p_lease_id        => p_lease_id
18904                                          );
18905 
18906             ELSE
18907 
18908                -- Update associated lease status with 'F' if old,new approval statuses are'D','F' respectively, location exists and Approval work flow is not enabled
18909           --dbms_output.put_line('Updating approval status to F');
18910 		       l_schedule_context := 'ABS';
18911 
18912                BEGIN
18913 			        UPDATE pn_leases_all
18914                      SET status   = p_new_approval_status_code -- Will hold the value of 'F'
18915                    WHERE lease_id = p_lease_id
18916                      AND org_id= g_org_id;
18917 
18918                   COMMIT;
18919                EXCEPTION
18920                   WHEN OTHERS
18921                   THEN
18922                      pvt_debug (   'Exception in updating lease approval status code  '
18923                                              || g_pkg_name
18924                                              || g_program_unit
18925                                              || '-'
18926                                              || SQLERRM
18927                                              , 5);
18928                      x_return_status                      := fnd_api.g_ret_sts_unexp_error;
18929                END;
18930 
18931                -- Submit the standard concurrent request to Schedule items
18932 
18933                l_request_id := fnd_request.submit_request ('PN',
18934                                                            'PNSCHITM',
18935                                                             NULL,
18936                                                             NULL,
18937                                                             FALSE,
18938                                                             p_lease_id ,l_schedule_context,'MAIN',
18939                                                             NULL, NULL, 'N', fnd_date.date_to_canonical(l_lease_commencement_date),NULL,NULL,CHR(0), -- Bug 13462759
18940                                                             '',  '',  '',  '',
18941                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18942                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18943                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18944                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18945                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18946                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18947                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18948                                                             '',  '',  '',  '',  '',  '',  '',  '',  '',  '',
18949                                                             '',  '',  '',  '',  '',  ''
18950                                                           );
18951                 pvt_debug(g_pkg_name||'Request Id after calling fnd_request.submit_request: '||l_request_id,3);
18952 
18953                 IF (l_request_id = 0 ) THEN
18954                    pn_lease_pvt.pvt_debug(g_pkg_name||'Submit Request Error. Request Id:'||l_request_id,3);
18955                    fnd_message.set_name ('PN', 'PN_SUBSCHEDULES_ERR');
18956                    fnd_message.set_token ('API_NAME', g_pkg_name||'.'||g_program_unit || '-SubmitSchedulesConcProgram');
18957                    fnd_msg_pub.ADD;
18958                    RAISE fnd_api.g_exc_error;
18959                 END IF;
18960             END IF; --Initiate Approval Workflow
18961 
18962          END IF;-- IF p_new_approval_status_code='F'
18963 
18964 
18965 
18966       END IF; --x_return_status
18967 
18968 
18969 
18970    EXCEPTION
18971       WHEN fnd_api.g_exc_error
18972       THEN
18973          pn_lease_pvt.pvt_debug (   'Error occurred in '
18974                                   || g_pkg_name
18975                                   || g_program_unit
18976                                   || '-'
18977                                   || SQLERRM
18978                                 , 5);
18979          x_return_status                      := fnd_api.g_ret_sts_error;
18980 
18981       WHEN OTHERS
18982       THEN
18983          pn_lease_pvt.pvt_debug (   'Exception in  '
18984                                   || g_pkg_name
18985                                   || g_program_unit
18986                                   || '-'
18987                                   || SQLERRM
18988                                 , 5);
18989         x_return_status                      := fnd_api.g_ret_sts_unexp_error;
18990 
18991    END update_status;
18992 
18993 END pn_lease_pvt;