DBA Data[Home] [Help]

PACKAGE BODY: APPS.PN_VAREN_PVT

Source


1 PACKAGE BODY pn_varen_pvt AS
2 /* $Header: PNVARPVB.pls 120.1 2010/12/15 10:22:16 seevivek noship $ */
3    --l_var_rent_id                 pn_var_rents_all.var_rent_id%TYPE := NULL;
4    l_var_rent_date_id            pn_var_rent_dates_all.var_rent_date_id%TYPE := NULL;
5 
6 --------------------------------------------------------------------------------
7 --  NAME         : INSERT_CONSTRAINTS
8 --  DESCRIPTION  :
9 --  PURPOSE      : Calling pn_var_constr_defaults_pkg.insert_row procedure
10 --  INVOKED FROM :
11 --  ARGUMENTS    : p_constraints_rec_type, x_return_status
12 --  REFERENCE    :
13 --  HISTORY      :
14 --
15 --  20-SEP-2010  vkatta     o Created
16 --------------------------------------------------------------------------------
17 FUNCTION get_attribute_status( p_desc_name VARCHAR2)
18 RETURN NUMBER;
19    PROCEDURE insert_constraints (
20       p_constraints_rec_type     IN OUT NOCOPY constraints_rec_type
21     , x_return_status            OUT NOCOPY VARCHAR2
22    )
23    IS
24       l_null                        VARCHAR2 (10) := NULL;
25    BEGIN
26       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Start of Insert_Constraints Procedure'
27                              , 3
28                               );
29       pn_varen_util.pvt_debug
30                  ('PN_VAREN_PVT: Insert_Constraints: Input parameters to PN_VAR_CONSTR_DEFAULTS_PKG.Insert_Row package'
31                 , 3
32                  );
33       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_default_id : '
34                                || p_constraints_rec_type.constr_default_id
35                              , 3
36                               );
37       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_default_num : '
38                                || p_constraints_rec_type.constr_default_num
39                              , 3
40                               );
41       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.var_rent_id : '
42                                || p_constraints_rec_type.var_rent_id
43                              , 3
44                               );
45       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.agreement_template_id : '
46                                || p_constraints_rec_type.agreement_template_id
47                              , 3
48                               );
49       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_template_id : '
50                                || p_constraints_rec_type.constr_template_id
51                              , 3
52                               );
53       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_start_date : '
54                                || p_constraints_rec_type.constr_start_date
55                              , 3
56                               );
57       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_end_date : '
58                                || p_constraints_rec_type.constr_end_date
59                              , 3
60                               );
61       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_cat_code : '
62                                || p_constraints_rec_type.constr_cat_code
63                              , 3
64                               );
65       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_type_code : '
66                                || p_constraints_rec_type.constr_type_code
67                              , 3
68                               );
69       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.constr_amount : '
70                                || p_constraints_rec_type.constr_amount
71                              , 3
72                               );
73       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.g_org_id : '
74                                || g_org_id
75                              , 3
76                               );
77       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Constraints: p_constraints_rec_type.attribute_category : '
78                                || p_constraints_rec_type.attribute_category
79                              , 3
80                               );
81       pn_var_constr_defaults_pkg.insert_row (x_rowid                       => g_rowid
82                                            , x_constr_default_id           => p_constraints_rec_type.constr_default_id
83                                            , x_constr_default_num          => p_constraints_rec_type.constr_default_num
84                                            , x_var_rent_id                 => p_constraints_rec_type.var_rent_id
85                                            , x_agreement_template_id       => p_constraints_rec_type.agreement_template_id
86                                            , x_constr_template_id          => p_constraints_rec_type.constr_template_id
87                                            , x_constr_start_date           => p_constraints_rec_type.constr_start_date
88                                            , x_constr_end_date             => p_constraints_rec_type.constr_end_date
89                                            , x_constr_cat_code             => NVL
90                                                                                  (p_constraints_rec_type.constr_cat_code
91                                                                                 , 'VARENT'
92                                                                                  )
93                                            , x_type_code                   => p_constraints_rec_type.constr_type_code
94                                            , x_amount                      => p_constraints_rec_type.constr_amount
95                                            , x_creation_date               => NVL (p_constraints_rec_type.creation_date
96                                                                                  , g_sysdate
97                                                                                   )
98                                            , x_created_by                  => NVL (p_constraints_rec_type.created_by
99                                                                                  , g_user_id
100                                                                                   )
101                                            , x_last_update_date            => NVL
102                                                                                  (p_constraints_rec_type.last_update_date
103                                                                                 , g_sysdate
104                                                                                  )
105                                            , x_last_updated_by             => NVL
106                                                                                  (p_constraints_rec_type.last_updated_by
107                                                                                 , g_user_id
108                                                                                  )
109                                            , x_last_update_login           => NVL
110                                                                                  (p_constraints_rec_type.last_update_login
111                                                                                 , g_user_id
112                                                                                  )
113                                            , x_org_id                      => g_org_id
114                                            , x_attribute_category          => p_constraints_rec_type.attribute_category
115                                            , x_attribute1                  => p_constraints_rec_type.attribute1
116                                            , x_attribute2                  => p_constraints_rec_type.attribute2
117                                            , x_attribute3                  => p_constraints_rec_type.attribute3
118                                            , x_attribute4                  => p_constraints_rec_type.attribute4
119                                            , x_attribute5                  => p_constraints_rec_type.attribute5
120                                            , x_attribute6                  => p_constraints_rec_type.attribute6
121                                            , x_attribute7                  => p_constraints_rec_type.attribute7
122                                            , x_attribute8                  => p_constraints_rec_type.attribute8
123                                            , x_attribute9                  => p_constraints_rec_type.attribute9
124                                            , x_attribute10                 => p_constraints_rec_type.attribute10
125                                            , x_attribute11                 => p_constraints_rec_type.attribute11
126                                            , x_attribute12                 => p_constraints_rec_type.attribute12
127                                            , x_attribute13                 => p_constraints_rec_type.attribute13
128                                            , x_attribute14                 => p_constraints_rec_type.attribute14
129                                            , x_attribute15                 => p_constraints_rec_type.attribute15
130                                             );
131       x_return_status                                                              := fnd_api.g_ret_sts_success;
132       pn_varen_util.pvt_debug
133                 ('PN_VAREN_PVT: Insert_Constraints: End of parameters to PN_VAR_CONSTR_DEFAULTS_PKG.Insert_Row package'
134                , 3
135                 );
136    EXCEPTION
137       WHEN OTHERS
138       THEN
139          pn_varen_util.pvt_debug
140             (   'PN_VAREN_PVT: Insert_Constraints: Exception Result of Pn_Var_Constr_Defaults_Pkg.Insert_Row procedure : '
141              || SQLERRM
142            , 3
143             );
144          x_return_status                                                              := fnd_api.g_ret_sts_error;
145    END insert_constraints;
146 
147 --------------------------------------------------------------------------------
148 --  NAME         : UPDATE_CONSTRAINTS
149 --  DESCRIPTION  :
150 --  PURPOSE      : Calling pn_var_constr_defaults_pkg.update_row procedure
151 --  INVOKED FROM :
152 --  ARGUMENTS    : p_constraints_rec_type, x_return_status
153 --  REFERENCE    :
154 --  HISTORY      :
155 --
156 --  11-OCT-2010  vkatta     o Created
157 --------------------------------------------------------------------------------
158    PROCEDURE update_constraints (
159       p_constraints_rec_type     IN OUT NOCOPY constraints_rec_type
160     , x_return_status            OUT NOCOPY VARCHAR2
161    )
162    IS
163       l_null                        VARCHAR2 (10) := NULL;
164    BEGIN
165       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Start of Update_Constraints Procedure'
166                              , 3
167                               );
168       pn_varen_util.pvt_debug
169          ('PN_VAREN_PVT: Update_Constraints: Start of Input parameters to pn_var_constr_defaults_pkg.update_row package'
170         , 3
171          );
172       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_default_id : '
173                                || p_constraints_rec_type.constr_default_id
174                              , 3
175                               );
176       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_default_num : '
177                                || p_constraints_rec_type.constr_default_num
178                              , 3
179                               );
180       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.var_rent_id : '
181                                || p_constraints_rec_type.var_rent_id
182                              , 3
183                               );
184       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.agreement_template_id : '
185                                || p_constraints_rec_type.agreement_template_id
186                              , 3
187                               );
188       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_template_id : '
189                                || p_constraints_rec_type.constr_template_id
190                              , 3
191                               );
192       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_start_date : '
193                                || p_constraints_rec_type.constr_start_date
194                              , 3
195                               );
196       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_end_date : '
197                                || p_constraints_rec_type.constr_end_date
198                              , 3
199                               );
200       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_cat_code : '
201                                || p_constraints_rec_type.constr_cat_code
202                              , 3
203                               );
204       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_type_code : '
205                                || p_constraints_rec_type.constr_type_code
206                              , 3
207                               );
208       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.constr_amount : '
209                                || p_constraints_rec_type.constr_amount
210                              , 3
211                               );
212       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.g_org_id : '
213                                || g_org_id
214                              , 3
215                               );
216       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Constraints: p_constraints_rec_type.attribute_category : '
217                                || p_constraints_rec_type.attribute_category
218                              , 3
219                               );
220       pn_varen_util.pvt_debug
221           ('PN_VAREN_PVT: Update_Constraints: End of Input parameters to pn_var_constr_defaults_pkg.update_row package'
222          , 3
223           );
224       pn_var_constr_defaults_pkg.update_row
225          (x_constr_default_id           => p_constraints_rec_type.constr_default_id
226         , x_constr_default_num          => p_constraints_rec_type.constr_default_num
227         , x_var_rent_id                 => p_constraints_rec_type.var_rent_id
228         , x_agreement_template_id       => p_constraints_rec_type.agreement_template_id
229         , x_constr_template_id          => p_constraints_rec_type.constr_template_id
230         , x_constr_start_date           => p_constraints_rec_type.constr_start_date
231         , x_constr_end_date             => p_constraints_rec_type.constr_end_date
232         , x_constr_cat_code             => NVL
233                                               (p_constraints_rec_type.constr_cat_code
234                                              , 'VARENT'
235                                               )                          -- IMP -- check the value in the updated record
236         , x_type_code                   => p_constraints_rec_type.constr_type_code
237         , x_amount                      => p_constraints_rec_type.constr_amount
238         , x_last_update_date            => g_sysdate                           --p_constraints_rec_type.last_update_date
239         , x_last_updated_by             => g_user_id                            --p_constraints_rec_type.last_updated_by
240         , x_last_update_login           => g_user_id                          --p_constraints_rec_type.last_update_login
241         , x_attribute_category          => p_constraints_rec_type.attribute_category
242         , x_attribute1                  => p_constraints_rec_type.attribute1
243         , x_attribute2                  => p_constraints_rec_type.attribute2
244         , x_attribute3                  => p_constraints_rec_type.attribute3
245         , x_attribute4                  => p_constraints_rec_type.attribute4
246         , x_attribute5                  => p_constraints_rec_type.attribute5
247         , x_attribute6                  => p_constraints_rec_type.attribute6
248         , x_attribute7                  => p_constraints_rec_type.attribute7
249         , x_attribute8                  => p_constraints_rec_type.attribute8
250         , x_attribute9                  => p_constraints_rec_type.attribute9
251         , x_attribute10                 => p_constraints_rec_type.attribute10
252         , x_attribute11                 => p_constraints_rec_type.attribute11
253         , x_attribute12                 => p_constraints_rec_type.attribute12
254         , x_attribute13                 => p_constraints_rec_type.attribute13
255         , x_attribute14                 => p_constraints_rec_type.attribute14
256         , x_attribute15                 => p_constraints_rec_type.attribute15
257          );
258       x_return_status                                                              := fnd_api.g_ret_sts_success;
259       pn_varen_util.pvt_debug
260                 ('PN_VAREN_PVT: Update_Constraints: End of parameters to pn_var_constr_defaults_pkg.update_Row package'
261                , 3
262                 );
263    EXCEPTION
264       WHEN OTHERS
265       THEN
266          pn_varen_util.pvt_debug
267                            (   'PN_VAREN_PVT: Update_Constraints: Exception Result of Update_Constraints procedure : '
268                             || SQLERRM
269                           , 3
270                            );
271          x_return_status                                                              := fnd_api.g_ret_sts_error;
272    END update_constraints;
273 
274 --------------------------------------------------------------------------------
275 --  NAME         : GENERATE_CONSTRAINTS
276 --  DESCRIPTION  :
277 --  PURPOSE      : Calling pn_var_defaults_pkg.create_default_constraints procedure
278 --  INVOKED FROM :
279 --  ARGUMENTS    : p_var_rent_id, p_org_id, x_return_status
280 --  REFERENCE    :
281 --  HISTORY      :
282 --
283 --  20-SEP-2010  vkatta     o Created
284 --------------------------------------------------------------------------------
285    PROCEDURE generate_constraints (
286 --      p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
287       p_var_rent_id              IN       NUMBER
288 --     ,p_constr_default_id        IN       NUMBER
289 --     ,p_constr_default_num       IN       NUMBER
290    ,  p_org_id                   IN       NUMBER
291 --     ,p_generate_constraints     IN       VARCHAR2 DEFAULT 'N'
292    ,  x_return_status            OUT NOCOPY VARCHAR2
293    )
294    IS
295       l_constr_created              NUMBER := 0;
296       l_constr_default_id           NUMBER;
297 
298 --Check if the Constraints defaults are created
299       CURSOR c_constr_created
300       IS
301          SELECT   COUNT (*)
302                 , constr_default_id
303              FROM pn_var_constr_defaults_all
304             WHERE var_rent_id = p_var_rent_id
305          GROUP BY constr_default_id;
306 --            AND (   constr_default_id = p_constr_default_id
307 --                 OR constr_default_num = p_constr_default_num
308 --                );
309    BEGIN
310       OPEN c_constr_created;
311 
312       FETCH c_constr_created
313        INTO l_constr_created
314           , l_constr_default_id;
315 
316       CLOSE c_constr_created;
317 
318       IF l_constr_created <> 0
319       THEN
320          pn_var_defaults_pkg.create_default_constraints (p_var_rent_id);
321          x_return_status                                                              := fnd_api.g_ret_sts_success;
322          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Constraints is Success for constraints Details Id: '
323                                   || l_constr_default_id
324                                 , 3
325                                  );
326          --Commit only when success
327 --         IF p_commit = 'Y'
328 --         THEN
329 --            COMMIT;
330 --         END IF;
331       ELSE
332          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Constraints is Failed for constraints Details Id: '
333                                   || l_constr_default_id
334                                 , 3
335                                  );
336          x_return_status                                                              := fnd_api.g_ret_sts_error;
337       END IF;
338    EXCEPTION
339       WHEN OTHERS
340       THEN
341          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Constraints Exception Error: '
342                                   || SQLERRM
343                                 , 3
344                                  );
345          x_return_status                                                              := fnd_api.g_ret_sts_error;
346    END generate_constraints;
347 
348 --------------------------------------------------------------------------------
349 --  NAME         : UNDO_CONSTRAINTS
350 --  DESCRIPTION  :
351 --  PURPOSE      : Remove Constraints i.e, delete records from pn_var_constraints_all
352 --                 for that VRA
353 --  INVOKED FROM :
354 --  ARGUMENTS    : p_var_rent_id,  x_return_status
355 --  REFERENCE    :
356 --  HISTORY      :
357 --
358 --  11-OCT-2010  vkatta     o Created
359 --------------------------------------------------------------------------------
360    PROCEDURE undo_constraints (
361       p_var_rent_id              IN       NUMBER
362     , x_return_status            OUT NOCOPY VARCHAR2
363    )
364    IS
365 --       l_var_rent_id  NUMBER;
366    BEGIN
367       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Undo_Constraints : Starting of removing Constraint records: '
368                              , 3
369                               );
370 
371       DELETE FROM pn_var_constraints_all
372             WHERE constr_default_id IN (SELECT constr_default_id
373                                           FROM pn_var_constr_defaults_all
374                                          WHERE var_rent_id = p_var_rent_id);
375 
376       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Undo_Constraints :Removing of Constraint record has been success '
377                              , 3
378                               );
379       x_return_status                                                              := fnd_api.g_ret_sts_success;
380    EXCEPTION
381       WHEN OTHERS
382       THEN
383          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Constraints Exception Error: '
384                                   || SQLERRM
385                                 , 3
386                                  );
387          x_return_status                                                              := fnd_api.g_ret_sts_error;
388    END undo_constraints;
389 
390 --------------------------------------------------------------------------------
391 --  NAME         : GENERATE_BREAKPOINTS
392 --  DESCRIPTION  :
393 --  PURPOSE      : Calling pn_var_defaults_pkg.create_setup_data and
394 --                 pn_var_chg_cal_pkg.populate_transactions package
395 --  INVOKED FROM :
396 --  ARGUMENTS    : p_var_rent_id, p_org_id, x_return_status
397 --  REFERENCE    :
398 --  HISTORY      :
399 --
400 --  20-SEP-2010  vkatta     o Created
401 --------------------------------------------------------------------------------
402    PROCEDURE generate_breakpoints (
403 --      p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
404       p_var_rent_id              IN       NUMBER
405 --     ,p_bkdt_default_id          IN       NUMBER
406 --     ,p_bkdt_detail_num          IN       NUMBER
407 --     ,p_bkhd_default_id          IN       NUMBER
408    ,  p_org_id                   IN       NUMBER
409 --     ,p_generate_breakpoints     IN       VARCHAR2 DEFAULT 'N'
410    ,  x_return_status            OUT NOCOPY VARCHAR2
411    )
412    IS
413       l_bkpt_dtl_created            NUMBER := 0;
414       l_bkdt_default_id             NUMBER;
415 
416 --Check if the Break point defaults are created
417       CURSOR c_brkpt_dtl_created
418       IS
419          SELECT COUNT (*)
420 --               ,bkdt_default_id
421          FROM   pn_var_bkdt_defaults_all pvbd
422           WHERE pvbd.var_rent_id = p_var_rent_id;
423 --            AND (   pvbd.bkdt_default_id = p_bkdt_default_id
424 --                 OR pvbd.bkdt_detail_num = bkdt_detail_num
425 --                )
426 --            AND pvbd.bkhd_default_id = p_bkhd_default_id;
427    BEGIN
428       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Start of Generate_Breakpoints procedure '
429                              , 3
430                               );
431 
432       OPEN c_brkpt_dtl_created;
433 
434       FETCH c_brkpt_dtl_created
435        INTO l_bkpt_dtl_created;
436 
437 --           ,l_bkdt_default_id;
438       CLOSE c_brkpt_dtl_created;
439 
440       IF l_bkpt_dtl_created <> 0
441       THEN
442          pn_varen_util.pvt_debug
443                           (   'PN_VAREN_PVT: Generate_Breakpoints, At least one breakpoint detail has been created : '
444                            || l_bkpt_dtl_created
445                          , 3
446                           );
447          pn_var_defaults_pkg.create_setup_data (p_var_rent_id);
448          pn_var_chg_cal_pkg.populate_transactions (p_var_rent_id);
449          x_return_status      := fnd_api.g_ret_sts_success;
450          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Breakpoints is Success for Var Rent Id: '
451                                   || l_var_rent_id
452                                 , 3
453                                  );
454          --Commit only when success
455 --         IF p_commit = 'Y'
456 --         THEN
457 --            COMMIT;
458 --         END IF;
459       ELSE
460          pn_varen_util.pvt_debug
461              (   'PN_VAREN_PVT: Generate_Breakpoints: Breakpoint Detail Lines are not Created for breakpoint Hdr id: '
462               || l_bkdt_default_id
463             , 3
464              );
465          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
466          fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Generate_Breakpoints: Breakpoint Detail Lines are not Created for breakpoint Hdr Id');
467          fnd_msg_pub.ADD;
468          RAISE fnd_api.g_exc_error;
469       END IF;
470    EXCEPTION
471       WHEN fnd_api.g_exc_error THEN
472          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Breakpoints: fnd_api.g_exc_error Exception Error: '
473                                   || SQLERRM
474                                 , 3
475                                  );
476          x_return_status  := fnd_api.g_ret_sts_error;
477       WHEN OTHERS
478       THEN
479          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_Breakpoints: OTHERS Exception Error: '
480                                   || SQLERRM
481                                 , 3
482                                  );
483         x_return_status := fnd_api.g_ret_sts_unexp_error;
484    END generate_breakpoints;
485 
486 --------------------------------------------------------------------------------
487 --  NAME         : UNDO_BREAKPOINTS
488 --  DESCRIPTION  :
489 --  PURPOSE      : Calling pn_var_defaults_pkg.delete_default_lines and
490 --                 pn_var_defaults_pkg.delete_transactions package
491 --  INVOKED FROM :
492 --  ARGUMENTS    : P_VAR_RENT_ID       IN Parameter
493 --               : X_RETURN_STATUS    OUT Parameter
494 --               : X_MSG_COUNT        OUT Parameter
495 --               : X_MSG_DATA         OUT Parameter
496 --  REFERENCE    :
497 --  HISTORY      :
498 --
499 --  11-OCT-2010   vkatta   o Created
500 --------------------------------------------------------------------------------
501    PROCEDURE undo_breakpoints (
502       p_var_rent_id              IN       NUMBER
503     --,  p_line_default_id          IN       NUMBER
504    ,  x_return_status            OUT NOCOPY VARCHAR2
505    -- , x_msg_count                OUT NOCOPY NUMBER
506    -- , x_msg_data                 OUT NOCOPY VARCHAR2
507    )
508    IS
509       l_answer                      NUMBER := 1;
510       l_dummy                       VARCHAR2 (1);
511       l_bkhd_default_id             NUMBER;
512       l_bkpt_header_id              NUMBER;
513       l_line_def_id                 NUMBER;
514 
515       CURSOR exists_line_cur
516       IS
517          SELECT line_default_id
518            FROM pn_var_line_defaults_all
519           WHERE var_rent_id = p_var_rent_id;
520 
521       CURSOR exists_hd_def_cur
522       IS
523          SELECT bkhd_default_id
524            FROM pn_var_bkhd_defaults_all
525           WHERE line_default_id = l_line_def_id;
526 
527       CURSOR exists_hd_def_cur_1
528       IS
529          SELECT 'x'
530            FROM DUAL
531           WHERE EXISTS (SELECT bkhd_default_id
532                           FROM pn_var_bkhd_defaults_all
533                          WHERE var_rent_id = p_var_rent_id);
534    BEGIN
535       x_return_status                                                              := fnd_api.g_ret_sts_success;
536       l_dummy                                                                      := NULL;
537 
538       OPEN exists_hd_def_cur_1;
539 
540       FETCH exists_hd_def_cur_1
541        INTO l_dummy;
542 
543       CLOSE exists_hd_def_cur_1;
544 
545       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Value of l_dummy : '
546                                || l_dummy
547                              , 3
548                               );
549 
550       IF l_dummy IS NOT NULL
551       THEN
552          -- fnd_message.set_name ('PN' , 'PN_WARN_TRANSACTION_SETUP_DEL' );
553           --fnd_msg_pub.ADD;
554          l_answer                                                                     := 2;
555 
556 --fnd_message.question(NAME_IN('parameter.pn_option_no'), NAME_IN('parameter.pn_option_yes'), NULL);
557          IF l_answer = 1
558          THEN                                                                                                 -- Cancel
559             -- RAISE fnd_api.g_ret_sts_error;
560             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Value of l_answer : '
561                                      || l_answer
562                                    , 3
563                                     );
564             x_return_status                                                              := fnd_api.g_ret_sts_error;
565          ELSE
566             FOR exists_lines_rec IN exists_line_cur
567             LOOP
568                l_line_def_id                                                                :=
569                                                                                        exists_lines_rec.line_default_id;
570                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Value of l_line_def_id : '
571                                         || l_line_def_id
572                                       , 3
573                                        );
574 
575                --
576                FOR exists_hd_def_rec IN exists_hd_def_cur
577                LOOP
578                   --
579                   pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Value of p_var_rent_id : '
580                                            || p_var_rent_id
581                                          , 3
582                                           );
583                   pn_varen_util.pvt_debug
584                                     (   'PN_VAREN_PVT: Undo_Breakpoints: Value of exists_hd_def_rec.bkhd_default_id : '
585                                      || exists_hd_def_rec.bkhd_default_id
586                                    , 3
587                                     );
588                   pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Value of l_bkpt_header_id : '
589                                            || l_bkpt_header_id
590                                          , 3
591                                           );
592                   --
593                   pn_var_defaults_pkg.delete_default_lines (p_var_rent_id
594                                                           , exists_hd_def_rec.bkhd_default_id
595                                                           , l_bkpt_header_id
596                                                            );
597                   pn_var_defaults_pkg.delete_transactions (p_var_rent_id
598                                                          , exists_hd_def_rec.bkhd_default_id
599                                                          , l_bkpt_header_id
600                                                           );
601                END LOOP;
602             END LOOP;
603 
604             -- fnd_message.set_name ('PN'
605             --                     , 'PN_VAR_LINES_DELETED'
606             --                      );
607             -- fnd_msg_pub.ADD;
608             pn_varen_util.pvt_debug
609                ('PN_VAREN_PVT: Undo_Breakpoints: You have successfully removed all breakpoint definitions from the variable rent agreement.'
610               , 3
611                );
612          END IF;
613       END IF;
614    --x_return_status                                := fnd_api.g_ret_sts_error;
615    EXCEPTION
616       WHEN OTHERS
617       THEN
618          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Breakpoints: Breakpoint Detail Lines Exception Error: '
619                                   || SQLERRM
620                                 , 3
621                                  );
622          x_return_status                                                              := fnd_api.g_ret_sts_error;
623    END undo_breakpoints;
624 
625 --------------------------------------------------------------------------------
626 --  NAME         : INSERT_ALLOW_ABAT
627 --  DESCRIPTION  : Insert records into Allowance and Abatement table
628 --  PURPOSE      : Calling pn_var_abat_defaults_pkg.insert_row package
629 --  INVOKED FROM :
630 --  ARGUMENTS    : P_ALLOW_ABAT_REC_TYPE       IN Parameter
631 --               : X_RETURN_STATUS    OUT Parameter
632 --  REFERENCE    :
633 --  HISTORY      :
634 --
635 --  20-SEP-2010   vkatta   o Created
636 --------------------------------------------------------------------------------
637    PROCEDURE insert_allow_abat (
638       p_allow_abat_rec_type      IN OUT NOCOPY allow_abat_rec_type
639     , x_return_status            OUT NOCOPY VARCHAR2
640    )
641    IS
642       l_rowid                       VARCHAR2 (18);
643       l_null                        VARCHAR2 (10) := NULL;
644    BEGIN
645       pn_varen_util.pvt_debug
646          ('PN_VAREN_PVT: Insert_Allow_Abat: Start of Input parameters for pn_var_abat_defaults_pkg.insert_row  package'
647         , 3
648          );
649       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.abatement_Id : '
650                                || p_allow_abat_rec_type.abatement_id
651                              , 3
652                               );
653       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.abat_START_DATE : '
654                                || p_allow_abat_rec_type.abat_start_date
655                              , 3
656                               );
657       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.abat_END_DATE : '
658                                || p_allow_abat_rec_type.abat_end_date
659                              , 3
660                               );
661       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.abat_TYPE_CODE : '
662                                || p_allow_abat_rec_type.abat_type_code
663                              , 3
664                               );
665       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.abat_AMOUNT : '
666                                || p_allow_abat_rec_type.abat_amount
667                              , 3
668                               );
669       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.COMMENTS : '
670                                || p_allow_abat_rec_type.comments
671                              , 3
672                               );
673       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.DESCRIPTION : '
674                                || p_allow_abat_rec_type.description
675                              , 3
676                               );
677       pn_varen_util.pvt_debug
678                             (   'PN_VAREN_PVT: Insert_Allow_Abat: substr(p_allow_abat_rec_type.description , 1, 29) : '
679                              || SUBSTR (p_allow_abat_rec_type.description
680                                       , 1
681                                       , 29
682                                        )
683                            , 3
684                             );
685       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Allow_Abat: p_allow_abat_rec_type.VAR_RENT_ID : '
686                                || p_allow_abat_rec_type.var_rent_id
687                              , 3
688                               );
689       pn_varen_util.pvt_debug
690            ('PN_VAREN_PVT: Insert_Allow_Abat: End of Input parameters for pn_var_abat_defaults_pkg.insert_row  package'
691           , 3
692            );
693       p_allow_abat_rec_type.description                                            :=
694                                                                        SUBSTR (p_allow_abat_rec_type.description
695                                                                              , 1
696                                                                              , 29
697                                                                               );
698       --   p_allow_abat_rec_type.description  -- form level length is 30, but where as db level it is 2000
699       pn_var_abat_defaults_pkg.insert_row (x_rowid                       => l_rowid
700                                          , x_abatement_id                => p_allow_abat_rec_type.abatement_id
701                                          , x_var_rent_id                 => TO_NUMBER (p_allow_abat_rec_type.var_rent_id)
702                                          , x_start_date                  => p_allow_abat_rec_type.abat_start_date
703                                          , x_end_date                    => p_allow_abat_rec_type.abat_end_date
704                                          , x_type_code                   => p_allow_abat_rec_type.abat_type_code
705                                          , x_amount                      => TO_NUMBER (p_allow_abat_rec_type.abat_amount)
706                                          , x_description                 => p_allow_abat_rec_type.description
707                                          --substr (p_allow_abat_rec_type.description,1, 30)
708       ,                                    x_creation_date               => NVL (p_allow_abat_rec_type.creation_date
709                                                                                , g_sysdate
710                                                                                 )
711                                          , x_created_by                  => NVL (p_allow_abat_rec_type.created_by
712                                                                                , g_user_id
713                                                                                 )
714                                          , x_last_update_date            => NVL (p_allow_abat_rec_type.last_update_date
715                                                                                , g_sysdate
716                                                                                 )
717                                          , x_last_updated_by             => NVL (p_allow_abat_rec_type.last_updated_by
718                                                                                , g_user_id
719                                                                                 )
720                                          , x_last_update_login           => NVL
721                                                                                (p_allow_abat_rec_type.last_update_login
722                                                                               , g_user_id
723                                                                                )
724                                          , x_comments                    => p_allow_abat_rec_type.comments
725                                          , x_attribute_category          => p_allow_abat_rec_type.attribute_category
726                                          , x_attribute1                  => p_allow_abat_rec_type.attribute1
727                                          , x_attribute2                  => p_allow_abat_rec_type.attribute2
728                                          , x_attribute3                  => p_allow_abat_rec_type.attribute3
729                                          , x_attribute4                  => p_allow_abat_rec_type.attribute4
730                                          , x_attribute5                  => p_allow_abat_rec_type.attribute5
731                                          , x_attribute6                  => p_allow_abat_rec_type.attribute6
732                                          , x_attribute7                  => p_allow_abat_rec_type.attribute7
733                                          , x_attribute8                  => p_allow_abat_rec_type.attribute8
734                                          , x_attribute9                  => p_allow_abat_rec_type.attribute9
735                                          , x_attribute10                 => p_allow_abat_rec_type.attribute10
736                                          , x_attribute11                 => p_allow_abat_rec_type.attribute11
737                                          , x_attribute12                 => p_allow_abat_rec_type.attribute12
738                                          , x_attribute13                 => p_allow_abat_rec_type.attribute13
739                                          , x_attribute14                 => p_allow_abat_rec_type.attribute14
740                                          , x_attribute15                 => p_allow_abat_rec_type.attribute15
741                                          , x_org_id                      => g_org_id                          --l_org_id
742                                           );
743       x_return_status                                                              := fnd_api.g_ret_sts_success;
744       pn_varen_util.pvt_debug
745                       ('PN_VAREN_PVT: Insert_Allow_Abat: Success Result of pn_var_abat_defaults_pkg.insert_row package'
746                      , 3
747                       );
748    EXCEPTION
749       WHEN OTHERS
750       THEN
751          pn_varen_util.pvt_debug
752                          (   'PN_VAREN_PVT: Insert_Allow_Abat: Exception Result of insert_allow_and_abat procedure : '
753                           || SQLERRM
754                         , 3
755                          );
756          x_return_status                                                              := fnd_api.g_ret_sts_error;
757    END insert_allow_abat;
758 
759 --------------------------------------------------------------------------------
760 --  NAME         : UPDATE_ALLOW_ABAT
761 --  DESCRIPTION  : Update records into Allowance and Abatement table
762 --  PURPOSE      : Calling pn_var_abat_defaults_pkg.update_row package
763 --  INVOKED FROM :
764 --  ARGUMENTS    : P_ALLOW_ABAT_REC_TYPE       IN Parameter
765 --               : X_RETURN_STATUS    OUT Parameter
766 --  REFERENCE    :
767 --  HISTORY      :
768 --
769 --  11-OCT-2010   vkatta   o Created
770 --------------------------------------------------------------------------------
771    PROCEDURE update_allow_abat (
772       p_allow_abat_rec_type      IN OUT NOCOPY allow_abat_rec_type
773     , x_return_status            OUT NOCOPY VARCHAR2
774    )
775    IS
776       l_rowid                       VARCHAR2 (18);
777       l_null                        VARCHAR2 (10) := NULL;
778    BEGIN
779       pn_varen_util.pvt_debug
780          ('PN_VAREN_PVT: Update_Allow_Abat: Start of Input parameters for pn_var_abat_defaults_pkg.update_row  package'
781         , 3
782          );
783       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.abatement_Id : '
784                                || p_allow_abat_rec_type.abatement_id
785                              , 3
786                               );
787       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.abat_START_DATE : '
788                                || p_allow_abat_rec_type.abat_start_date
789                              , 3
790                               );
791       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.abat_END_DATE : '
792                                || p_allow_abat_rec_type.abat_end_date
793                              , 3
794                               );
795       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.abat_TYPE_CODE : '
796                                || p_allow_abat_rec_type.abat_type_code
797                              , 3
798                               );
799       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.abat_AMOUNT : '
800                                || p_allow_abat_rec_type.abat_amount
801                              , 3
802                               );
803       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.COMMENTS : '
804                                || p_allow_abat_rec_type.comments
805                              , 3
806                               );
807       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.DESCRIPTION : '
808                                || p_allow_abat_rec_type.description
809                              , 3
810                               );
811       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Allow_Abat: p_allow_abat_rec_type.VAR_RENT_ID : '
812                                || p_allow_abat_rec_type.var_rent_id
813                              , 3
814                               );
815       pn_varen_util.pvt_debug
816            ('PN_VAREN_PVT: Update_Allow_Abat: End of Input parameters for pn_var_abat_defaults_pkg.update_row  package'
817           , 3
818            );
819       pn_varen_util.pvt_debug
820          (   'PN_VAREN_PVT: Update_Allow_Abat: Values ofp_allow_abat_rec_type.abatement_id and p_allow_abat_rec_type.abat_type_code'
821           || p_allow_abat_rec_type.abatement_id
822           || '-'
823           || p_allow_abat_rec_type.abat_type_code
824         , 3
825          );
826       pn_var_abat_defaults_pkg.update_row (x_abatement_id                => p_allow_abat_rec_type.abatement_id
827                                          , x_var_rent_id                 => p_allow_abat_rec_type.var_rent_id
828                                          , x_start_date                  => p_allow_abat_rec_type.abat_start_date
829                                          , x_end_date                    => p_allow_abat_rec_type.abat_end_date
830                                          , x_type_code                   => p_allow_abat_rec_type.abat_type_code
831                                          , x_amount                      => p_allow_abat_rec_type.abat_amount
832                                          , x_description                 => p_allow_abat_rec_type.description
833                                          , x_last_update_date            => g_sysdate
834                                          --p_allow_abat_rec_type.last_update_date
835       ,                                    x_last_updated_by             => g_user_id
836                                          --p_allow_abat_rec_type.last_updated_by
837       ,                                    x_creation_date               => p_allow_abat_rec_type.creation_date
838                                          , x_created_by                  => p_allow_abat_rec_type.created_by
839                                          , x_last_update_login           => g_user_id
840                                          --p_allow_abat_rec_type.last_update_login
841       ,                                    x_comments                    => p_allow_abat_rec_type.comments
842                                          , x_attribute_category          => p_allow_abat_rec_type.attribute_category
843                                          , x_attribute1                  => p_allow_abat_rec_type.attribute1
844                                          , x_attribute2                  => p_allow_abat_rec_type.attribute2
845                                          , x_attribute3                  => p_allow_abat_rec_type.attribute3
846                                          , x_attribute4                  => p_allow_abat_rec_type.attribute4
847                                          , x_attribute5                  => p_allow_abat_rec_type.attribute5
848                                          , x_attribute6                  => p_allow_abat_rec_type.attribute6
849                                          , x_attribute7                  => p_allow_abat_rec_type.attribute7
850                                          , x_attribute8                  => p_allow_abat_rec_type.attribute8
851                                          , x_attribute9                  => p_allow_abat_rec_type.attribute9
852                                          , x_attribute10                 => p_allow_abat_rec_type.attribute10
853                                          , x_attribute11                 => p_allow_abat_rec_type.attribute11
854                                          , x_attribute12                 => p_allow_abat_rec_type.attribute12
855                                          , x_attribute13                 => p_allow_abat_rec_type.attribute13
856                                          , x_attribute14                 => p_allow_abat_rec_type.attribute14
857                                          , x_attribute15                 => p_allow_abat_rec_type.attribute15
858                                          , x_org_id                      => p_allow_abat_rec_type.org_id
859                                           );
860       x_return_status                                                              := fnd_api.g_ret_sts_success;
861       pn_varen_util.pvt_debug
862                       ('PN_VAREN_PVT: Update_Allow_Abat: Success Result of pn_var_abat_defaults_pkg.update_row package'
863                      , 3
864                       );
865    EXCEPTION
866       WHEN OTHERS
867       THEN
868          pn_varen_util.pvt_debug
869                              (   'PN_VAREN_PVT: Update_Allow_Abat: Exception Result of Update_allow_abat procedure : '
870                               || SQLERRM
871                             , 3
872                              );
873          x_return_status                                                              := fnd_api.g_ret_sts_error;
874    END update_allow_abat;
875 
876 --------------------------------------------------------------------------------
877 --  NAME         : INSERT_BREAKPOINT_DETAILS
878 --  DESCRIPTION  : Insert records into Breakpoint Details
879 --  PURPOSE      : Calling pn_var_bkdt_defaults_pkg.insert_row package
880 --  INVOKED FROM :
881 --  ARGUMENTS    : P_BREAKPOINT_DETAILS_REC_TYPE       IN Parameter
882 --               : X_RETURN_STATUS    OUT Parameter
883 --  REFERENCE    :
884 --  HISTORY      :
885 --
886 --  20-SEP-2010   vkatta   o Created
887 --------------------------------------------------------------------------------
888    PROCEDURE insert_breakpoint_details (
889       p_breakpoint_details_rec_type IN OUT NOCOPY breakpoint_details_rec_type
890     , x_return_status            OUT NOCOPY VARCHAR2
891    )
892    IS
893       l_rowid                       VARCHAR2 (18);
894       l_null                        VARCHAR2 (10) := NULL;
895    BEGIN
896      p_breakpoint_details_rec_type.bkdt_default_id := NULL;
897       pn_varen_util.pvt_debug
898          ('PN_VAREN_PVT: Insert_Breakpoint_Details: Start of Input parameters for PN_VAR_BKDT_DEFAULTS_PKG.INSERT_ROW package'
899         , 3
900          );
901       pn_varen_util.pvt_debug
902                         (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_DEFAULT_ID : '
903                          || p_breakpoint_details_rec_type.bkdt_default_id
904                        , 3
905                         );
906       pn_varen_util.pvt_debug
907                         (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_DETAIL_NUM : '
908                          || p_breakpoint_details_rec_type.bkdt_detail_num
909                        , 3
910                         );
911       pn_varen_util.pvt_debug
912                         (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.BKHD_DEFAULT_ID : '
913                          || p_breakpoint_details_rec_type.bkhd_default_id
914                        , 3
915                         );
916       pn_varen_util.pvt_debug
917                         (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_START_DATE : '
918                          || p_breakpoint_details_rec_type.bkdt_start_date
919                        , 3
920                         );
921       pn_varen_util.pvt_debug
922                           (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_END_DATE : '
923                            || p_breakpoint_details_rec_type.bkdt_end_date
924                          , 3
925                           );
926       pn_varen_util.pvt_debug
927                   (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.PERIOD_BKPT_VOL_START : '
928                    || p_breakpoint_details_rec_type.period_bkpt_vol_start
929                  , 3
930                   );
931       pn_varen_util.pvt_debug
932                     (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.PERIOD_BKPT_VOL_END : '
933                      || p_breakpoint_details_rec_type.period_bkpt_vol_end
934                    , 3
935                     );
936       pn_varen_util.pvt_debug
937                    (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.GROUP_BKPT_VOL_START : '
938                     || p_breakpoint_details_rec_type.group_bkpt_vol_start
939                   , 3
940                    );
941       pn_varen_util.pvt_debug
942                      (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.GROUP_BKPT_VOL_END : '
943                       || p_breakpoint_details_rec_type.group_bkpt_vol_end
944                     , 3
945                      );
946       pn_varen_util.pvt_debug
947                             (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.VAR_RENT_ID : '
948                              || p_breakpoint_details_rec_type.var_rent_id
949                            , 3
950                             );
951       pn_varen_util.pvt_debug
952                     (   'PN_VAREN_PVT: Insert_Breakpoint_Details: p_breakpoint_details_rec_type.ANNUAL_BASIS_AMOUNT : '
953                      || p_breakpoint_details_rec_type.annual_basis_amount
954                    , 3
955                     );
956       pn_varen_util.pvt_debug
957          ('PN_VAREN_PVT: Insert_Breakpoint_Details: End of Input parameters for PN_VAR_BKDT_DEFAULTS_PKG.INSERT_ROW package'
958         , 3
959          );
960       pn_varen_util.pvt_debug (   ' Value of bkdt_detail_num , before pn_var_bkdt_defaults_pkg.insert_row : '
961                                || p_breakpoint_details_rec_type.bkdt_detail_num
962                              , 3
963                               );
964       pn_varen_util.pvt_debug (   ' Value of bkpt_rate , before pn_var_bkdt_defaults_pkg.insert_row : '
965                                || p_breakpoint_details_rec_type.bkpt_rate
966                              , 3
967                               );
968       pn_var_bkdt_defaults_pkg.insert_row
969                                         (x_rowid                       => l_rowid
970                                        , x_bkdt_default_id             => p_breakpoint_details_rec_type.bkdt_default_id
971                                        , x_bkdt_detail_num             => p_breakpoint_details_rec_type.bkdt_detail_num
972                                        , x_bkhd_default_id             => p_breakpoint_details_rec_type.bkhd_default_id
973                                        , x_bkdt_start_date             => p_breakpoint_details_rec_type.bkdt_start_date
974                                        , x_bkdt_end_date               => p_breakpoint_details_rec_type.bkdt_end_date
975                                        , x_period_bkpt_vol_start       => p_breakpoint_details_rec_type.period_bkpt_vol_start
976                                        , x_period_bkpt_vol_end         => p_breakpoint_details_rec_type.period_bkpt_vol_end
977                                        , x_group_bkpt_vol_start        => p_breakpoint_details_rec_type.group_bkpt_vol_start
978                                        , x_group_bkpt_vol_end          => p_breakpoint_details_rec_type.group_bkpt_vol_end
979                                        , x_bkpt_rate                   => p_breakpoint_details_rec_type.bkpt_rate
980                                        , x_processed_flag              => l_null
981                                        , x_var_rent_id                 => p_breakpoint_details_rec_type.var_rent_id
982                                        , x_creation_date               => NVL
983                                                                              (p_breakpoint_details_rec_type.creation_date
984                                                                             , g_sysdate
985                                                                              )
986                                        , x_created_by                  => NVL (p_breakpoint_details_rec_type.created_by
987                                                                              , g_user_id
988                                                                               )
989                                        , x_last_update_date            => NVL
990                                                                              (p_breakpoint_details_rec_type.last_update_date
991                                                                             , g_sysdate
992                                                                              )
993                                        , x_last_updated_by             => NVL
994                                                                              (p_breakpoint_details_rec_type.last_updated_by
995                                                                             , g_user_id
996                                                                              )
997                                        , x_last_update_login           => NVL
998                                                                              (p_breakpoint_details_rec_type.last_update_login
999                                                                             , g_user_id
1000                                                                              )
1001                                        , x_org_id                      => g_org_id                            --l_org_id
1002                                        , x_annual_basis_amount         => p_breakpoint_details_rec_type.annual_basis_amount
1003                                        , x_attribute_category          => p_breakpoint_details_rec_type.attribute_category
1004                                        , x_attribute1                  => p_breakpoint_details_rec_type.attribute1
1005                                        , x_attribute2                  => p_breakpoint_details_rec_type.attribute2
1006                                        , x_attribute3                  => p_breakpoint_details_rec_type.attribute3
1007                                        , x_attribute4                  => p_breakpoint_details_rec_type.attribute4
1008                                        , x_attribute5                  => p_breakpoint_details_rec_type.attribute5
1009                                        , x_attribute6                  => p_breakpoint_details_rec_type.attribute6
1010                                        , x_attribute7                  => p_breakpoint_details_rec_type.attribute7
1011                                        , x_attribute8                  => p_breakpoint_details_rec_type.attribute8
1012                                        , x_attribute9                  => p_breakpoint_details_rec_type.attribute9
1013                                        , x_attribute10                 => p_breakpoint_details_rec_type.attribute10
1014                                        , x_attribute11                 => p_breakpoint_details_rec_type.attribute11
1015                                        , x_attribute12                 => p_breakpoint_details_rec_type.attribute12
1016                                        , x_attribute13                 => p_breakpoint_details_rec_type.attribute13
1017                                        , x_attribute14                 => p_breakpoint_details_rec_type.attribute14
1018                                        , x_attribute15                 => p_breakpoint_details_rec_type.attribute15
1019                                         );
1020       x_return_status                                                              := fnd_api.g_ret_sts_success;
1021       pn_varen_util.pvt_debug
1022               ('PN_VAREN_PVT: Insert_Breakpoint_Details: Success Result of pn_var_bkdt_defaults_pkg.insert_row package'
1023              , 3
1024               );
1025    EXCEPTION
1026       WHEN OTHERS
1027       THEN
1028          pn_varen_util.pvt_debug
1029              (   'PN_VAREN_PVT: Insert_Breakpoint_Details: Exception Result of insert_breakpoint_Details procedure : '
1030               || SQLERRM
1031             , 3
1032              );
1033          x_return_status                                                              := fnd_api.g_ret_sts_error;
1034    END insert_breakpoint_details;
1035 
1036 --------------------------------------------------------------------------------
1037 --  NAME         : UPDATE_BREAKPOINT_DETAILS
1038 --  DESCRIPTION  : Update records into Breakpoint Details
1039 --  PURPOSE      : Calling pn_var_bkdt_defaults_pkg.update_row package
1040 --  INVOKED FROM :
1041 --  ARGUMENTS    : P_BREAKPOINT_DETAILS_REC_TYPE       IN Parameter
1042 --               : X_RETURN_STATUS    OUT Parameter
1043 --  REFERENCE    :
1044 --  HISTORY      :
1045 --
1046 --  11-OCT-2010   vkatta   o Created
1047 --------------------------------------------------------------------------------
1048    PROCEDURE update_breakpoint_details (
1049       p_breakpoint_details_rec_type IN OUT NOCOPY breakpoint_details_rec_type
1050     , x_return_status            OUT NOCOPY VARCHAR2
1051    )
1052    IS
1053       l_not_used                    VARCHAR2 (20) := NULL;
1054    BEGIN
1055       pn_varen_util.pvt_debug
1056          ('PN_VAREN_PVT: Update_Breakpoint_Details: Start of Input parameters for PN_VAR_BKDT_DEFAULTS_PKG.UPDATE_ROW package'
1057         , 3
1058          );
1059       pn_varen_util.pvt_debug
1060                         (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_DEFAULT_ID : '
1061                          || p_breakpoint_details_rec_type.bkdt_default_id
1062                        , 3
1063                         );
1064       pn_varen_util.pvt_debug
1065                         (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_DETAIL_NUM : '
1066                          || p_breakpoint_details_rec_type.bkdt_detail_num
1067                        , 3
1068                         );
1069       pn_varen_util.pvt_debug
1070                         (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.BKHD_DEFAULT_ID : '
1071                          || p_breakpoint_details_rec_type.bkhd_default_id
1072                        , 3
1073                         );
1074       pn_varen_util.pvt_debug
1075                         (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_START_DATE : '
1076                          || p_breakpoint_details_rec_type.bkdt_start_date
1077                        , 3
1078                         );
1079       pn_varen_util.pvt_debug
1080                           (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.BKDT_END_DATE : '
1081                            || p_breakpoint_details_rec_type.bkdt_end_date
1082                          , 3
1083                           );
1084       pn_varen_util.pvt_debug
1085                   (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.PERIOD_BKPT_VOL_START : '
1086                    || p_breakpoint_details_rec_type.period_bkpt_vol_start
1087                  , 3
1088                   );
1089       pn_varen_util.pvt_debug
1090                     (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.PERIOD_BKPT_VOL_END : '
1091                      || p_breakpoint_details_rec_type.period_bkpt_vol_end
1092                    , 3
1093                     );
1094       pn_varen_util.pvt_debug
1095                    (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.GROUP_BKPT_VOL_START : '
1096                     || p_breakpoint_details_rec_type.group_bkpt_vol_start
1097                   , 3
1098                    );
1099       pn_varen_util.pvt_debug
1100                      (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.GROUP_BKPT_VOL_END : '
1101                       || p_breakpoint_details_rec_type.group_bkpt_vol_end
1102                     , 3
1103                      );
1104       pn_varen_util.pvt_debug
1105                             (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.VAR_RENT_ID : '
1106                              || p_breakpoint_details_rec_type.var_rent_id
1107                            , 3
1108                             );
1109       pn_varen_util.pvt_debug
1110                     (   'PN_VAREN_PVT: Update_Breakpoint_Details: p_breakpoint_details_rec_type.ANNUAL_BASIS_AMOUNT : '
1111                      || p_breakpoint_details_rec_type.annual_basis_amount
1112                    , 3
1113                     );
1114       pn_varen_util.pvt_debug
1115          ('PN_VAREN_PVT: Update_Breakpoint_Details: End of Input parameters for PN_VAR_BKDT_DEFAULTS_PKG.UPDATE_ROW package'
1116         , 3
1117          );
1118       pn_var_bkdt_defaults_pkg.update_row
1119                                         (x_bkdt_default_id             => p_breakpoint_details_rec_type.bkdt_default_id
1120                                        , x_bkdt_detail_num             => p_breakpoint_details_rec_type.bkdt_detail_num
1121                                        , x_bkhd_default_id             => p_breakpoint_details_rec_type.bkhd_default_id
1122                                        , x_bkdt_start_date             => p_breakpoint_details_rec_type.bkdt_start_date
1123                                        , x_bkdt_end_date               => p_breakpoint_details_rec_type.bkdt_end_date
1124                                        , x_period_bkpt_vol_start       => p_breakpoint_details_rec_type.period_bkpt_vol_start
1125                                        , x_period_bkpt_vol_end         => p_breakpoint_details_rec_type.period_bkpt_vol_end
1126                                        , x_group_bkpt_vol_start        => p_breakpoint_details_rec_type.group_bkpt_vol_start
1127                                        , x_group_bkpt_vol_end          => p_breakpoint_details_rec_type.group_bkpt_vol_end
1128                                        , x_bkpt_rate                   => p_breakpoint_details_rec_type.bkpt_rate
1129                                        , x_processed_flag              => l_not_used
1130                                        -- IMP p_breakpoint_details_rec_type.PROCESSED_FLAG
1131       ,                                  x_var_rent_id                 => p_breakpoint_details_rec_type.var_rent_id
1132                                        , x_last_update_date            => g_sysdate
1133                                        --p_breakpoint_details_rec_type.last_update_date
1134       ,                                  x_last_updated_by             => g_user_id
1135                                        --p_breakpoint_details_rec_type.last_updated_by
1136       ,                                  x_last_update_login           => g_user_id
1137                                        --p_breakpoint_details_rec_type.last_update_login
1138       ,                                  x_annual_basis_amount         => l_not_used
1139                                        , x_attribute_category          => p_breakpoint_details_rec_type.attribute_category
1140                                        , x_attribute1                  => p_breakpoint_details_rec_type.attribute1
1141                                        , x_attribute2                  => p_breakpoint_details_rec_type.attribute2
1142                                        , x_attribute3                  => p_breakpoint_details_rec_type.attribute3
1143                                        , x_attribute4                  => p_breakpoint_details_rec_type.attribute4
1144                                        , x_attribute5                  => p_breakpoint_details_rec_type.attribute5
1145                                        , x_attribute6                  => p_breakpoint_details_rec_type.attribute6
1146                                        , x_attribute7                  => p_breakpoint_details_rec_type.attribute7
1147                                        , x_attribute8                  => p_breakpoint_details_rec_type.attribute8
1148                                        , x_attribute9                  => p_breakpoint_details_rec_type.attribute9
1149                                        , x_attribute10                 => p_breakpoint_details_rec_type.attribute10
1150                                        , x_attribute11                 => p_breakpoint_details_rec_type.attribute11
1151                                        , x_attribute12                 => p_breakpoint_details_rec_type.attribute12
1152                                        , x_attribute13                 => p_breakpoint_details_rec_type.attribute13
1153                                        , x_attribute14                 => p_breakpoint_details_rec_type.attribute14
1154                                        , x_attribute15                 => p_breakpoint_details_rec_type.attribute15
1155                                         );
1156       x_return_status                                                              := fnd_api.g_ret_sts_success;
1157       pn_varen_util.pvt_debug
1158               ('PN_VAREN_PVT: Update_Breakpoint_Details: Success Result of pn_var_bkdt_defaults_pkg.update_row package'
1159              , 3
1160               );
1161    EXCEPTION
1162       WHEN OTHERS
1163       THEN
1164          pn_varen_util.pvt_debug
1165              (   'PN_VAREN_PVT: Update_Breakpoint_Details: Exception Result of update_breakpoint_details procedure : '
1166               || SQLERRM
1167             , 3
1168              );
1169          x_return_status                                                              := fnd_api.g_ret_sts_error;
1170    END update_breakpoint_details;
1171 
1172 --------------------------------------------------------------------------------
1173 --  NAME         : INSERT_BREAKPOINT_HEADERS
1174 --  DESCRIPTION  : Insert records into Breakpoint Header
1175 --  PURPOSE      : Calling pn_var_bkhd_defaults_pkg.insert_row package
1176 --  INVOKED FROM :
1177 --  ARGUMENTS    : P_BREAKPOINT_HEADER_REC_TYPE       IN Parameter
1178 --               : X_RETURN_STATUS    OUT Parameter
1179 --  REFERENCE    :
1180 --  HISTORY      :
1181 --
1182 --  20-SEP-2010   vkatta   o Created
1183 --------------------------------------------------------------------------------
1184    PROCEDURE insert_breakpoint_headers (
1185       p_breakpoint_header_rec_type IN OUT NOCOPY breakpoint_header_rec_type
1186     , x_return_status            OUT NOCOPY VARCHAR2
1187    )
1188    IS
1189       l_not_used                    VARCHAR2 (20) := NULL;
1190       l_base_rent_type              VARCHAR2 (30) := 'ROLLING';
1191    BEGIN
1192       pn_varen_util.pvt_debug
1193          ('PN_VAREN_PVT: Insert_Breakpoint_Headers: Start of Input parameters for pn_var_bkhd_defaults_pkg.insert_row package'
1194         , 3
1195          );
1196       pn_varen_util.pvt_debug
1197                          (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_default_id : '
1198                           || p_breakpoint_header_rec_type.bkhd_default_id
1199                         , 3
1200                          );
1201       pn_varen_util.pvt_debug
1202                          (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_detail_num : '
1203                           || p_breakpoint_header_rec_type.bkhd_detail_num
1204                         , 3
1205                          );
1206       pn_varen_util.pvt_debug
1207                          (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.line_default_id : '
1208                           || p_breakpoint_header_rec_type.line_default_id
1209                         , 3
1210                          );
1211       pn_varen_util.pvt_debug
1212                          (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_start_date : '
1213                           || p_breakpoint_header_rec_type.bkhd_start_date
1214                         , 3
1215                          );
1216       pn_varen_util.pvt_debug
1217                            (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_end_date : '
1218                             || p_breakpoint_header_rec_type.bkhd_end_date
1219                           , 3
1220                            );
1221       pn_varen_util.pvt_debug
1222                          (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.break_type_code : '
1223                           || p_breakpoint_header_rec_type.break_type_code
1224                         , 3
1225                          );
1226       pn_varen_util.pvt_debug
1227                       (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.natural_break_rate : '
1228                        || p_breakpoint_header_rec_type.natural_break_rate
1229                      , 3
1230                       );
1231       pn_varen_util.pvt_debug
1232                              (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: p_breakpoint_header_rec_type.var_rent_id : '
1233                               || p_breakpoint_header_rec_type.var_rent_id
1234                             , 3
1235                              );
1236       pn_varen_util.pvt_debug
1237          ('PN_VAREN_PVT: Insert_Breakpoint_Headers: End of Input parameters for pn_var_bkhd_defaults_pkg.insert_row package'
1238         , 3
1239          );
1240 
1241       BEGIN
1242          p_breakpoint_header_rec_type.bkhd_detail_num                                 := NULL;
1243          pn_varen_util.pvt_debug
1244                     ('PN_VAREN_PVT: Insert_Breakpoint_Headers: Before the Package pn_var_bkhd_defaults_pkg.insert_row'
1245                    , 3
1246                     );
1247          pn_var_bkhd_defaults_pkg.insert_row
1248                                            (x_rowid                       => g_rowid
1249                                           , x_bkhd_default_id             => p_breakpoint_header_rec_type.bkhd_default_id
1250                                           , x_bkhd_detail_num             => p_breakpoint_header_rec_type.bkhd_detail_num
1251                                           , x_line_default_id             => p_breakpoint_header_rec_type.line_default_id
1252                                           , x_bkpt_head_template_id       => l_not_used
1253                                           , x_agreement_template_id       => l_not_used
1254                                           , x_bkhd_start_date             => p_breakpoint_header_rec_type.bkhd_start_date
1255                                           , x_bkhd_end_date               => p_breakpoint_header_rec_type.bkhd_end_date
1256                                           , x_break_type                  => p_breakpoint_header_rec_type.break_type_code
1257                                           , x_base_rent_type              => l_base_rent_type
1258                                           , x_natural_break_rate          => p_breakpoint_header_rec_type.natural_break_rate
1259                                           , x_base_rent                   => l_not_used
1260                                           , x_breakpoint_type             => p_breakpoint_header_rec_type.breakpoint_type_code
1261                                           , x_breakpoint_level            => l_not_used
1262                                           , x_processed_flag              => l_not_used
1263                                           , x_var_rent_id                 => p_breakpoint_header_rec_type.var_rent_id
1264                                           , x_creation_date               => NVL
1265                                                                                 (p_breakpoint_header_rec_type.creation_date
1266                                                                                , g_sysdate
1267                                                                                 )
1268                                           , x_created_by                  => NVL
1269                                                                                 (p_breakpoint_header_rec_type.created_by
1270                                                                                , g_user_id
1271                                                                                 )
1272                                           , x_last_update_date            => NVL
1273                                                                                 (p_breakpoint_header_rec_type.last_update_date
1274                                                                                , g_sysdate
1275                                                                                 )
1276                                           , x_last_updated_by             => NVL
1277                                                                                 (p_breakpoint_header_rec_type.last_updated_by
1278                                                                                , g_user_id
1279                                                                                 )
1280                                           , x_last_update_login           => NVL
1281                                                                                 (p_breakpoint_header_rec_type.last_update_login
1282                                                                                , g_user_id
1283                                                                                 )
1284                                           , x_org_id                      => g_org_id                         --l_org_id
1285                                           , x_attribute_category          => p_breakpoint_header_rec_type.attribute_category
1286                                           , x_attribute1                  => p_breakpoint_header_rec_type.attribute1
1287                                           , x_attribute2                  => p_breakpoint_header_rec_type.attribute2
1288                                           , x_attribute3                  => p_breakpoint_header_rec_type.attribute3
1289                                           , x_attribute4                  => p_breakpoint_header_rec_type.attribute4
1290                                           , x_attribute5                  => p_breakpoint_header_rec_type.attribute5
1291                                           , x_attribute6                  => p_breakpoint_header_rec_type.attribute6
1292                                           , x_attribute7                  => p_breakpoint_header_rec_type.attribute7
1293                                           , x_attribute8                  => p_breakpoint_header_rec_type.attribute8
1294                                           , x_attribute9                  => p_breakpoint_header_rec_type.attribute9
1295                                           , x_attribute10                 => p_breakpoint_header_rec_type.attribute10
1296                                           , x_attribute11                 => p_breakpoint_header_rec_type.attribute11
1297                                           , x_attribute12                 => p_breakpoint_header_rec_type.attribute12
1298                                           , x_attribute13                 => p_breakpoint_header_rec_type.attribute13
1299                                           , x_attribute14                 => p_breakpoint_header_rec_type.attribute14
1300                                           , x_attribute15                 => p_breakpoint_header_rec_type.attribute15
1301                                            );
1302       EXCEPTION
1303          WHEN OTHERS
1304          THEN
1305             pn_varen_util.pvt_debug
1306                (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: Exception Result of pn_var_bkhd_defaults_pkg.insert_row package : '
1307                 || SQLERRM
1308               , 3
1309                );
1310       END;
1311 
1312       x_return_status                                                              := fnd_api.g_ret_sts_success;
1313       pn_varen_util.pvt_debug
1314               ('PN_VAREN_PVT: Insert_Breakpoint_Headers: Success Result of pn_var_bkhd_defaults_pkg.insert_row package'
1315              , 3
1316               );
1317    EXCEPTION
1318       WHEN OTHERS
1319       THEN
1320          pn_varen_util.pvt_debug
1321              (   'PN_VAREN_PVT: Insert_Breakpoint_Headers: Exception Result of insert_breakpoint_headers procedure : '
1322               || SQLERRM
1323             , 3
1324              );
1325          x_return_status                                                              := fnd_api.g_ret_sts_error;
1326    END insert_breakpoint_headers;
1327 
1328 --------------------------------------------------------------------------------
1329 --  NAME         : UPDATE_BREAKPOINT_HEADERS
1330 --  DESCRIPTION  : Update records into Breakpoint Header
1331 --  PURPOSE      : Calling pn_var_bkhd_defaults_pkg.update_row package
1332 --  INVOKED FROM :
1333 --  ARGUMENTS    : P_BREAKPOINT_HEADER_REC_TYPE       IN Parameter
1334 --               : X_RETURN_STATUS    OUT Parameter
1335 --  REFERENCE    :
1336 --  HISTORY      :
1337 --
1338 --  11-OCT-2010   vkatta   o Created
1339 --------------------------------------------------------------------------------
1340    PROCEDURE update_breakpoint_headers (
1341       p_breakpoint_header_rec_type IN OUT NOCOPY breakpoint_header_rec_type
1342     , x_return_status            OUT NOCOPY VARCHAR2
1343    )
1344    IS
1345       l_not_used                    VARCHAR2 (20) := NULL;
1346       l_base_rent_type              VARCHAR2 (30) := 'ROLLING';
1347    BEGIN
1348       pn_varen_util.pvt_debug
1349          ('PN_VAREN_PVT: Update_Breakpoint_Headers: Start of Input parameters for pn_var_bkhd_defaults_pkg.update_row package'
1350         , 3
1351          );
1352       pn_varen_util.pvt_debug
1353                          (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_default_id : '
1354                           || p_breakpoint_header_rec_type.bkhd_default_id
1355                         , 3
1356                          );
1357       pn_varen_util.pvt_debug
1358                          (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_detail_num : '
1359                           || p_breakpoint_header_rec_type.bkhd_detail_num
1360                         , 3
1361                          );
1362       pn_varen_util.pvt_debug
1363                          (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.line_default_id : '
1364                           || p_breakpoint_header_rec_type.line_default_id
1365                         , 3
1366                          );
1367       pn_varen_util.pvt_debug
1368                          (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_start_date : '
1369                           || p_breakpoint_header_rec_type.bkhd_start_date
1370                         , 3
1371                          );
1372       pn_varen_util.pvt_debug
1373                            (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.bkhd_end_date : '
1374                             || p_breakpoint_header_rec_type.bkhd_end_date
1375                           , 3
1376                            );
1377       pn_varen_util.pvt_debug
1378                          (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.break_type_code : '
1379                           || p_breakpoint_header_rec_type.break_type_code
1380                         , 3
1381                          );
1382       pn_varen_util.pvt_debug
1383                       (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.natural_break_rate : '
1384                        || p_breakpoint_header_rec_type.natural_break_rate
1385                      , 3
1386                       );
1387       pn_varen_util.pvt_debug
1388                              (   'PN_VAREN_PVT: Update_Breakpoint_Headers: p_breakpoint_header_rec_type.var_rent_id : '
1389                               || p_breakpoint_header_rec_type.var_rent_id
1390                             , 3
1391                              );
1392       pn_varen_util.pvt_debug
1393          ('PN_VAREN_PVT: Update_Breakpoint_Headers: End of Input parameters for pn_var_bkhd_defaults_pkg.update_row package'
1394         , 3
1395          );
1396       pn_var_bkhd_defaults_pkg.update_row (x_bkhd_default_id             => p_breakpoint_header_rec_type.bkhd_default_id
1397                                          , x_bkhd_detail_num             => p_breakpoint_header_rec_type.bkhd_detail_num
1398                                          , x_line_default_id             => p_breakpoint_header_rec_type.line_default_id
1399                                          , x_bkpt_head_template_id       => l_not_used
1400                                          -- p_breakpoint_header_rec_type.BKPT_HEAD_TEMPLATE_ID
1401       ,                                    x_agreement_template_id       => l_not_used
1402                                          --IMP modify the table type--p_breakpoint_header_rec_type.AGREEMENT_TEMPLATE_ID
1403       ,                                    x_bkhd_start_date             => p_breakpoint_header_rec_type.bkhd_start_date
1404                                          , x_bkhd_end_date               => p_breakpoint_header_rec_type.bkhd_end_date
1405                                          , x_break_type                  => p_breakpoint_header_rec_type.break_type_code
1406                                          , x_base_rent_type              => l_base_rent_type
1407 --IMP --'ROLLING'either for break_type_code ARTIFICAL OR NATURAL --p_breakpoint_header_rec_type.BASE_RENT_TYPE
1408       ,                                    x_natural_break_rate          => p_breakpoint_header_rec_type.natural_break_rate
1409                                          , x_base_rent                   => l_not_used
1410                                          --p_breakpoint_header_rec_type.BASE_RENT
1411       ,                                    x_breakpoint_type             => p_breakpoint_header_rec_type.breakpoint_type_code
1412                                          , x_breakpoint_level            => l_not_used
1413                                          --p_breakpoint_header_rec_type.BREAKPOINT_LEVEL
1414       ,                                    x_processed_flag              => l_not_used
1415                                          --p_breakpoint_header_rec_type.PROCESSED_FLAG
1416       ,                                    x_var_rent_id                 => p_breakpoint_header_rec_type.var_rent_id
1417                                          , x_last_update_date            => g_sysdate
1418                                          --p_breakpoint_header_rec_type.last_update_date
1419       ,                                    x_last_updated_by             => g_user_id
1420                                          --p_breakpoint_header_rec_type.last_updated_by
1421       ,                                    x_last_update_login           => g_user_id
1422                                          --p_breakpoint_header_rec_type.last_update_login
1423       ,                                    x_attribute_category          => p_breakpoint_header_rec_type.attribute_category
1424                                          , x_attribute1                  => p_breakpoint_header_rec_type.attribute1
1425                                          , x_attribute2                  => p_breakpoint_header_rec_type.attribute2
1426                                          , x_attribute3                  => p_breakpoint_header_rec_type.attribute3
1427                                          , x_attribute4                  => p_breakpoint_header_rec_type.attribute4
1428                                          , x_attribute5                  => p_breakpoint_header_rec_type.attribute5
1429                                          , x_attribute6                  => p_breakpoint_header_rec_type.attribute6
1430                                          , x_attribute7                  => p_breakpoint_header_rec_type.attribute7
1431                                          , x_attribute8                  => p_breakpoint_header_rec_type.attribute8
1432                                          , x_attribute9                  => p_breakpoint_header_rec_type.attribute9
1433                                          , x_attribute10                 => p_breakpoint_header_rec_type.attribute10
1434                                          , x_attribute11                 => p_breakpoint_header_rec_type.attribute11
1435                                          , x_attribute12                 => p_breakpoint_header_rec_type.attribute12
1436                                          , x_attribute13                 => p_breakpoint_header_rec_type.attribute13
1437                                          , x_attribute14                 => p_breakpoint_header_rec_type.attribute14
1438                                          , x_attribute15                 => p_breakpoint_header_rec_type.attribute15
1439                                           );
1440       x_return_status                                                              := fnd_api.g_ret_sts_success;
1441       pn_varen_util.pvt_debug
1442               ('PN_VAREN_PVT: Update_Breakpoint_Headers: Success Result of pn_var_bkhd_defaults_pkg.update_row package'
1443              , 3
1444               );
1445    EXCEPTION
1446       WHEN OTHERS
1447       THEN
1448          pn_varen_util.pvt_debug
1449              (   'PN_VAREN_PVT: Update_Breakpoint_Headers: Exception Result of update_breakpoint_headers procedure : '
1450               || SQLERRM
1451             , 3
1452              );
1453          x_return_status                                                              := fnd_api.g_ret_sts_error;
1454    END update_breakpoint_headers;
1455 
1456 --------------------------------------------------------------------------------
1457 --  NAME         : INSERT_VARIABLE_RENT_LINES
1458 --  DESCRIPTION  : Insert records into Variable Rent Lines
1459 --  PURPOSE      : Calling pn_var_line_defaults_pkg.insert_row package
1460 --  INVOKED FROM :
1461 --  ARGUMENTS    : P_VARIABLE_RENT_LINES_REC_TYPE       IN Parameter
1462 --               : X_RETURN_STATUS    OUT Parameter
1463 --  REFERENCE    :
1464 --  HISTORY      :
1465 --
1466 --  20-SEP-2010   vkatta   o Created
1467 --------------------------------------------------------------------------------
1468    PROCEDURE insert_variable_rent_lines (
1469       p_variable_rent_lines_rec_type IN OUT NOCOPY variable_rent_lines_rec_type
1470     , x_return_status            OUT NOCOPY VARCHAR2
1471    )
1472    IS
1473       l_line_default_id             pn_var_line_defaults_all.line_default_id%TYPE := NULL;
1474       l_line_num                    pn_var_line_defaults_all.line_num%TYPE;
1475       -- l_line_start_date would be same a variable rent commencement_date
1476       l_line_start_date             pn_var_line_defaults_all.line_start_date%TYPE;
1477       -- l_end_date would be same a variable rent termination_date
1478       l_line_end_date               pn_var_line_defaults_all.line_end_date%TYPE;
1479       l_agreement_template_id       pn_var_line_defaults_all.agreement_template_id%TYPE;
1480       l_processed_flag              pn_var_line_defaults_all.processed_flag%TYPE := NULL;
1481       l_var_rent_exist              NUMBER;
1482       l_var_rent_id                 pn_var_rents_all.var_rent_id%TYPE;
1483    BEGIN
1484 --      NULL;
1485       pn_varen_util.pvt_debug
1486                       ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: Calling PN_VAR_LINE_DEFAULTS_PKG.INSERT_ROW Package'
1487                      , 3
1488                       );
1489       pn_varen_util.pvt_debug
1490               ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: START OF CALLING PN_VAR_LINE_DEFAULTS_PKG.INSERT_ROW PACKAGE'
1491              , 3
1492               );
1493 
1494       BEGIN
1495          pn_varen_util.pvt_debug
1496                          (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.var_rent_id : '
1497                           || p_variable_rent_lines_rec_type.var_rent_id
1498                         , 3
1499                          );
1500          pn_varen_util.pvt_debug
1501                           (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.var_rent_num: '
1502                            || p_variable_rent_lines_rec_type.var_rent_num
1503                          , 3
1504                           );
1505          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: G_ORG_ID : '
1506                                   || g_org_id
1507                                 , 3
1508                                  );
1509 
1510          SELECT   commencement_date
1511                 , termination_date
1512                 , agreement_template_id
1513                 , var_rent_id
1514              INTO l_line_start_date
1515                 , l_line_end_date
1516                 , l_agreement_template_id
1517                 , l_var_rent_id
1518              FROM pn_var_rents_all
1519             WHERE (   var_rent_id = p_variable_rent_lines_rec_type.var_rent_id
1520                    OR rent_num = p_variable_rent_lines_rec_type.var_rent_num
1521                   )
1522               AND org_id = g_org_id
1523          GROUP BY commencement_date
1524                 , termination_date
1525                 , agreement_template_id
1526                 , var_rent_id;
1527 
1528          p_variable_rent_lines_rec_type.var_rent_id                                   := l_var_rent_id;
1529       EXCEPTION
1530          WHEN OTHERS
1531          THEN
1532             pn_varen_util.pvt_debug
1533                (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: Var_rent_id does not exist, please check the var_rent_id : '
1534                 || SQLERRM
1535               , 3
1536                );
1537       END;
1538 
1539       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: Calling Insert Row package'
1540                              , 3
1541                               );
1542       pn_varen_util.pvt_debug
1543          ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: Input parameters before calling Pn_Var_Line_Defaults_Pkg.Insert_Row procedure'
1544         , 3
1545          );
1546       pn_varen_util.pvt_debug
1547                       (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.line_default_id : '
1548                        || p_variable_rent_lines_rec_type.line_default_id
1549                      , 3
1550                       );
1551       pn_varen_util.pvt_debug
1552                              (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.line_num : '
1553                               || p_variable_rent_lines_rec_type.line_num
1554                             , 3
1555                              );
1556       pn_varen_util.pvt_debug
1557                           (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.var_rent_id : '
1558                            || p_variable_rent_lines_rec_type.var_rent_id
1559                          , 3
1560                           );
1561       pn_varen_util.pvt_debug
1562                    (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.sales_channel_code : '
1563                     || p_variable_rent_lines_rec_type.sales_channel_code
1564                   , 3
1565                    );
1566       pn_varen_util.pvt_debug
1567                    (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: p_variable_rent_lines_rec_type.item_category_code : '
1568                     || p_variable_rent_lines_rec_type.item_category_code
1569                   , 3
1570                    );
1571       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: l_agreement_template_id : '
1572                                || l_agreement_template_id
1573                              , 3
1574                               );
1575       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: l_line_start_date : '
1576                                || l_line_start_date
1577                              , 3
1578                               );
1579       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: g_org_id : '
1580                                || g_org_id
1581                              , 3
1582                               );
1583       pn_varen_util.pvt_debug
1584          ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: End of Input parameters before calling Pn_Var_Line_Defaults_Pkg.Insert_Row procedure'
1585         , 3
1586          );
1587       pn_var_line_defaults_pkg.insert_row
1588                                          (x_rowid                       => g_rowid
1589                                         , x_line_default_id             => p_variable_rent_lines_rec_type.line_default_id
1590                                         , x_line_num                    => p_variable_rent_lines_rec_type.line_num
1591                                         , x_var_rent_id                 => p_variable_rent_lines_rec_type.var_rent_id
1592                                         , x_sales_type_code             => p_variable_rent_lines_rec_type.sales_channel_code
1593                                         , x_item_category_code          => p_variable_rent_lines_rec_type.item_category_code
1594                                         , x_line_template_id            => NULL
1595                                         -- not used in pn_var_line_defaults_all
1596       ,                                   x_agreement_template_id       => l_agreement_template_id
1597                                         , x_line_start_date             => l_line_start_date
1598                                         , x_line_end_date               => l_line_end_date
1599                                         , x_processed_flag              => l_processed_flag
1600                                         , x_creation_date               => NVL
1601                                                                               (p_variable_rent_lines_rec_type.creation_date
1602                                                                              , g_sysdate
1603                                                                               )
1604                                         , x_created_by                  => NVL
1605                                                                               (p_variable_rent_lines_rec_type.created_by
1606                                                                              , g_user_id
1607                                                                               )
1608                                         , x_last_update_date            => NVL
1609                                                                               (p_variable_rent_lines_rec_type.last_update_date
1610                                                                              , g_sysdate
1611                                                                               )
1612                                         , x_last_updated_by             => NVL
1613                                                                               (p_variable_rent_lines_rec_type.last_updated_by
1614                                                                              , g_user_id
1615                                                                               )
1616                                         , x_last_update_login           => NVL
1617                                                                               (p_variable_rent_lines_rec_type.last_update_login
1618                                                                              , g_user_id
1619                                                                               )
1620                                         , x_org_id                      => g_org_id
1621                                         , x_attribute_category          => p_variable_rent_lines_rec_type.attribute_category
1622                                         , x_attribute1                  => p_variable_rent_lines_rec_type.attribute1
1623                                         , x_attribute2                  => p_variable_rent_lines_rec_type.attribute2
1624                                         , x_attribute3                  => p_variable_rent_lines_rec_type.attribute3
1625                                         , x_attribute4                  => p_variable_rent_lines_rec_type.attribute4
1626                                         , x_attribute5                  => p_variable_rent_lines_rec_type.attribute5
1627                                         , x_attribute6                  => p_variable_rent_lines_rec_type.attribute6
1628                                         , x_attribute7                  => p_variable_rent_lines_rec_type.attribute7
1629                                         , x_attribute8                  => p_variable_rent_lines_rec_type.attribute8
1630                                         , x_attribute9                  => p_variable_rent_lines_rec_type.attribute9
1631                                         , x_attribute10                 => p_variable_rent_lines_rec_type.attribute10
1632                                         , x_attribute11                 => p_variable_rent_lines_rec_type.attribute11
1633                                         , x_attribute12                 => p_variable_rent_lines_rec_type.attribute12
1634                                         , x_attribute13                 => p_variable_rent_lines_rec_type.attribute13
1635                                         , x_attribute14                 => p_variable_rent_lines_rec_type.attribute14
1636                                         , x_attribute15                 => p_variable_rent_lines_rec_type.attribute15
1637                                          );
1638       pn_varen_util.pvt_debug
1639                 ('PN_VAREN_PVT: Insert_Variable_Rent_Lines: End OF CALLING PN_VAR_LINE_DEFAULTS_PKG.INSERT_ROW PACKAGE'
1640                , 3
1641                 );
1642       x_return_status                                                              := fnd_api.g_ret_sts_success;
1643    EXCEPTION
1644       WHEN OTHERS
1645       THEN
1646          pn_varen_util.pvt_debug
1647             (   'PN_VAREN_PVT: Insert_Variable_Rent_Lines: Exception Result of PN_VAR_LINE_DEFAULTS_PKG.INSERT_ROW PACKAGE'
1648              || SQLERRM
1649            , 3
1650             );
1651          x_return_status                                                              := fnd_api.g_ret_sts_error;
1652    END insert_variable_rent_lines;
1653 
1654 --------------------------------------------------------------------------------
1655 --  NAME         : UPDATE_VARIABLE_RENT_LINES
1656 --  DESCRIPTION  : Update records into Variable Rent Lines
1657 --  PURPOSE      : Calling pn_var_line_defaults_pkg.update_row package
1658 --  INVOKED FROM :
1659 --  ARGUMENTS    : P_VARIABLE_RENT_LINES_REC_TYPE       IN Parameter
1660 --               : X_RETURN_STATUS    OUT Parameter
1661 --  REFERENCE    :
1662 --  HISTORY      :
1663 --
1664 --  11-OCT-2010   vkatta   o Created
1665 --------------------------------------------------------------------------------
1666    PROCEDURE update_variable_rent_lines (
1667       p_variable_rent_lines_rec_type IN OUT NOCOPY variable_rent_lines_rec_type
1668     , x_return_status            OUT NOCOPY VARCHAR2
1669    )
1670    IS
1671       l_not_used                    NUMBER DEFAULT NULL;
1672    BEGIN
1673       pn_varen_util.pvt_debug
1674          ('PN_VAREN_PVT: Update_Variable_Rent_Lines: Start of Input parameters before calling Pn_Var_Line_Defaults_Pkg.Update_Row procedure'
1675         , 3
1676          );
1677       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LINE_DEFAULT_ID       : '
1678                                || p_variable_rent_lines_rec_type.line_default_id
1679                              , 3
1680                               );
1681       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LINE_NUM                  : '
1682                                || p_variable_rent_lines_rec_type.line_num
1683                              , 3
1684                               );
1685       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : VAR_RENT_ID               : '
1686                                || p_variable_rent_lines_rec_type.var_rent_id
1687                              , 3
1688                               );
1689       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : SALES_CHANNEL_CODE    : '
1690                                || p_variable_rent_lines_rec_type.sales_channel_code
1691                              , 3
1692                               );
1693       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : ITEM_CATEGORY_CODE        : '
1694                                || p_variable_rent_lines_rec_type.item_category_code
1695                              , 3
1696                               );
1697       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : AGREEMENT_TEMPLATE_ID     : '
1698                                || p_variable_rent_lines_rec_type.agreement_template_id
1699                              , 3
1700                               );
1701       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LINE_START_DATE           : '
1702                                || p_variable_rent_lines_rec_type.line_start_date
1703                              , 3
1704                               );
1705       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LINE_END_DATE             : '
1706                                || p_variable_rent_lines_rec_type.line_end_date
1707                              , 3
1708                               );
1709       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : PROCESSED_FLAG            : '
1710                                || p_variable_rent_lines_rec_type.processed_flag
1711                              , 3
1712                               );
1713       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LAST_UPDATE_DATE          : '
1714                                || p_variable_rent_lines_rec_type.last_update_date
1715                              , 3
1716                               );
1717       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LAST_UPDATED_BY           : '
1718                                || p_variable_rent_lines_rec_type.last_updated_by
1719                              , 3
1720                               );
1721       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : LAST_UPDATE_LOGIN         : '
1722                                || p_variable_rent_lines_rec_type.last_update_login
1723                              , 3
1724                               );
1725       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Variable_Rent_Lines : ATTRIBUTE_CATEGORY        : '
1726                                || p_variable_rent_lines_rec_type.attribute_category
1727                              , 3
1728                               );
1729       pn_varen_util.pvt_debug
1730          ('PN_VAREN_PVT: Update_Variable_Rent_Lines: End of Input parameters before calling Pn_Var_Line_Defaults_Pkg.Update_Row procedure'
1731         , 3
1732          );
1733       pn_var_line_defaults_pkg.update_row
1734                                        (x_line_default_id             => p_variable_rent_lines_rec_type.line_default_id
1735                                       , x_line_num                    => p_variable_rent_lines_rec_type.line_num
1736                                       , x_var_rent_id                 => p_variable_rent_lines_rec_type.var_rent_id
1737                                       , x_sales_type_code             => p_variable_rent_lines_rec_type.sales_channel_code
1738                                       , x_item_category_code          => p_variable_rent_lines_rec_type.item_category_code
1739                                       , x_line_template_id            => l_not_used
1740                                       --p_variable_rent_lines_rec_type.LINE_TEMPLATE_ID
1741       ,                                 x_agreement_template_id       => p_variable_rent_lines_rec_type.agreement_template_id
1742                                       , x_line_start_date             => p_variable_rent_lines_rec_type.line_start_date
1743                                       , x_line_end_date               => p_variable_rent_lines_rec_type.line_end_date
1744                                       , x_processed_flag              => p_variable_rent_lines_rec_type.processed_flag
1745                                       , x_last_update_date            => g_sysdate
1746                                       --p_variable_rent_lines_rec_type.last_update_date
1747       ,                                 x_last_updated_by             => g_user_id
1748                                       --p_variable_rent_lines_rec_type.last_updated_by
1749       ,                                 x_last_update_login           => g_user_id
1750                                       --p_variable_rent_lines_rec_type.last_update_login
1751       ,                                 x_attribute_category          => p_variable_rent_lines_rec_type.attribute_category
1752                                       , x_attribute1                  => p_variable_rent_lines_rec_type.attribute1
1753                                       , x_attribute2                  => p_variable_rent_lines_rec_type.attribute2
1754                                       , x_attribute3                  => p_variable_rent_lines_rec_type.attribute3
1755                                       , x_attribute4                  => p_variable_rent_lines_rec_type.attribute4
1756                                       , x_attribute5                  => p_variable_rent_lines_rec_type.attribute5
1757                                       , x_attribute6                  => p_variable_rent_lines_rec_type.attribute6
1758                                       , x_attribute7                  => p_variable_rent_lines_rec_type.attribute7
1759                                       , x_attribute8                  => p_variable_rent_lines_rec_type.attribute8
1760                                       , x_attribute9                  => p_variable_rent_lines_rec_type.attribute9
1761                                       , x_attribute10                 => p_variable_rent_lines_rec_type.attribute10
1762                                       , x_attribute11                 => p_variable_rent_lines_rec_type.attribute11
1763                                       , x_attribute12                 => p_variable_rent_lines_rec_type.attribute12
1764                                       , x_attribute13                 => p_variable_rent_lines_rec_type.attribute13
1765                                       , x_attribute14                 => p_variable_rent_lines_rec_type.attribute14
1766                                       , x_attribute15                 => p_variable_rent_lines_rec_type.attribute15
1767                                        );
1768       pn_varen_util.pvt_debug
1769                 ('PN_VAREN_PVT: Update_Variable_Rent_Lines: End of calling PN_VAR_LINE_DEFAULTS_PKG.UPDATE_ROW PACKAGE'
1770                , 3
1771                 );
1772       x_return_status                                                              := fnd_api.g_ret_sts_success;
1773    EXCEPTION
1774       WHEN OTHERS
1775       THEN
1776          pn_varen_util.pvt_debug
1777             (   'PN_VAREN_PVT: Update_Variable_Rent_Lines: Exception Result of PN_VAR_LINE_DEFAULTS_PKG.UPDATE_ROW PACKAGE'
1778              || SQLERRM
1779            , 3
1780             );
1781          x_return_status                                                              := fnd_api.g_ret_sts_error;
1782    END update_variable_rent_lines;
1783 
1784 --------------------------------------------------------------------------------
1785 --  NAME         : VAL_INS_ALLOW_ABAT
1786 --  DESCRIPTION  : Private procedure to validate and Insert Allowance and Abatements
1787 --  PURPOSE      :
1788 --  INVOKED FROM :
1789 --  ARGUMENTS    : P_ALLOW_ABAT_TBL_TYPE       IN Parameter
1790 --               : P_VALIDATE_FLAG    IN Parameter
1791 --               : X_RETURN_STATUS    OUT Parameter
1792 --  REFERENCE    :
1793 --  HISTORY      :
1794 --
1795 --  20-SEP-2010   vkatta   o Created
1796 --------------------------------------------------------------------------------
1797    PROCEDURE val_ins_allow_abat (
1798       p_allow_abat_tbl_type      IN OUT NOCOPY allow_abat_tbl_type
1799     , p_validate_flag            IN       VARCHAR2
1800     , x_return_status            OUT NOCOPY VARCHAR2
1801    )
1802    IS
1803       l_return_status               VARCHAR2 (1);
1804       l_var_commencement_date       DATE;
1805       l_var_termination_date        DATE;
1806       l_allow_abat_val              VARCHAR2 (1) := 'Y';
1807       l_return_msg                  VARCHAR2 (10);
1808       l_variable_rent_exists        NUMBER;
1809       l_var_rent_id                 NUMBER;
1810       l_allow_abat_count  NUMBER := 0;
1811       l_exist              VARCHAR2(1)  := NULL;
1812 
1813 
1814    BEGIN
1815       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat:G_VAR_RENT_ID Before Abatements Loop: '
1816                                || g_var_rent_id
1817                              , 3
1818                               );
1819 
1820       FOR b IN p_allow_abat_tbl_type.FIRST .. p_allow_abat_tbl_type.LAST
1821       LOOP
1822        BEGIN
1823          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: G_VAR_RENT_ID Inside Abatements Loop: '
1824                                   || g_var_rent_id
1825                                 , 3
1826                                  );
1827 
1828 -------------------------------------------------------------------------------------
1829       -- If Allowances and Abatement record type has not been initialized then assign it to null
1830 -------------------------------------------------------------------------------------
1831          IF p_allow_abat_tbl_type (b).abatement_id = pn_varen_util.g_pn_miss_num
1832          THEN
1833             p_allow_abat_tbl_type (b).abatement_id                                       := NULL;
1834          END IF;
1835 
1836          IF (   p_allow_abat_tbl_type (b).var_rent_id = pn_varen_util.g_pn_miss_num
1837              OR p_allow_abat_tbl_type (b).var_rent_id IS NULL
1838             )
1839          THEN
1840             p_allow_abat_tbl_type (b).var_rent_id                                        := g_var_rent_id;
1841          END IF;
1842 
1843          IF p_allow_abat_tbl_type (b).var_rent_num = pn_varen_util.g_pn_miss_char
1844          THEN
1845             p_allow_abat_tbl_type (b).var_rent_num                                       := NULL;
1846          END IF;
1847 
1848          IF p_allow_abat_tbl_type (b).abat_type_code = pn_varen_util.g_pn_miss_char
1849          THEN
1850             p_allow_abat_tbl_type (b).abat_type_code                                     := NULL;
1851          END IF;
1852 
1853          IF p_allow_abat_tbl_type (b).abat_type_meaning = pn_varen_util.g_pn_miss_char
1854          THEN
1855             p_allow_abat_tbl_type (b).abat_type_meaning                                  := NULL;
1856          END IF;
1857 
1858          IF p_allow_abat_tbl_type (b).abat_start_date = pn_varen_util.g_pn_miss_date
1859          THEN
1860             p_allow_abat_tbl_type (b).abat_start_date                                    := NULL;
1861          END IF;
1862 
1863          IF p_allow_abat_tbl_type (b).abat_end_date = pn_varen_util.g_pn_miss_date
1864          THEN
1865             p_allow_abat_tbl_type (b).abat_end_date                                      := NULL;
1866          END IF;
1867 
1868          IF p_allow_abat_tbl_type (b).abat_amount = pn_varen_util.g_pn_miss_num
1869          THEN
1870             p_allow_abat_tbl_type (b).abat_amount                                        := NULL;
1871          END IF;
1872 
1873          IF p_allow_abat_tbl_type (b).description = pn_varen_util.g_pn_miss_char
1874          THEN
1875             p_allow_abat_tbl_type (b).description                                        := NULL;
1876          END IF;
1877 
1878          IF p_allow_abat_tbl_type (b).comments = pn_varen_util.g_pn_miss_char
1879          THEN
1880             p_allow_abat_tbl_type (b).comments                                           := NULL;
1881          END IF;
1882 
1883          IF p_allow_abat_tbl_type (b).last_update_date = pn_varen_util.g_pn_miss_date
1884          THEN
1885             p_allow_abat_tbl_type (b).last_update_date                                   := NULL;
1886          END IF;
1887 
1888          IF p_allow_abat_tbl_type (b).last_updated_by = pn_varen_util.g_pn_miss_num
1889          THEN
1890             p_allow_abat_tbl_type (b).last_updated_by                                    := NULL;
1891          END IF;
1892 
1893          IF p_allow_abat_tbl_type (b).creation_date = pn_varen_util.g_pn_miss_date
1894          THEN
1895             p_allow_abat_tbl_type (b).creation_date                                      := NULL;
1896          END IF;
1897 
1898          IF p_allow_abat_tbl_type (b).created_by = pn_varen_util.g_pn_miss_num
1899          THEN
1900             p_allow_abat_tbl_type (b).created_by                                         := NULL;
1901          END IF;
1902 
1903          IF p_allow_abat_tbl_type (b).last_update_login = pn_varen_util.g_pn_miss_num
1904          THEN
1905             p_allow_abat_tbl_type (b).last_update_login                                  := NULL;
1906          END IF;
1907 
1908          IF p_allow_abat_tbl_type (b).attribute_category = pn_varen_util.g_pn_miss_char
1909          THEN
1910             p_allow_abat_tbl_type (b).attribute_category                                 := NULL;
1911          END IF;
1912 
1913          IF p_allow_abat_tbl_type (b).attribute1 = pn_varen_util.g_pn_miss_char
1914          THEN
1915             p_allow_abat_tbl_type (b).attribute1                                         := NULL;
1916          END IF;
1917 
1918          IF p_allow_abat_tbl_type (b).attribute2 = pn_varen_util.g_pn_miss_char
1919          THEN
1920             p_allow_abat_tbl_type (b).attribute2                                         := NULL;
1921          END IF;
1922 
1923          IF p_allow_abat_tbl_type (b).attribute3 = pn_varen_util.g_pn_miss_char
1924          THEN
1925             p_allow_abat_tbl_type (b).attribute3                                         := NULL;
1926          END IF;
1927 
1928          IF p_allow_abat_tbl_type (b).attribute4 = pn_varen_util.g_pn_miss_char
1929          THEN
1930             p_allow_abat_tbl_type (b).attribute4                                         := NULL;
1931          END IF;
1932 
1933          IF p_allow_abat_tbl_type (b).attribute5 = pn_varen_util.g_pn_miss_char
1934          THEN
1935             p_allow_abat_tbl_type (b).attribute5                                         := NULL;
1936          END IF;
1937 
1938          IF p_allow_abat_tbl_type (b).attribute6 = pn_varen_util.g_pn_miss_char
1939          THEN
1940             p_allow_abat_tbl_type (b).attribute6                                         := NULL;
1941          END IF;
1942 
1943          IF p_allow_abat_tbl_type (b).attribute7 = pn_varen_util.g_pn_miss_char
1944          THEN
1945             p_allow_abat_tbl_type (b).attribute7                                         := NULL;
1946          END IF;
1947 
1948          IF p_allow_abat_tbl_type (b).attribute8 = pn_varen_util.g_pn_miss_char
1949          THEN
1950             p_allow_abat_tbl_type (b).attribute8                                         := NULL;
1951          END IF;
1952 
1953          IF p_allow_abat_tbl_type (b).attribute9 = pn_varen_util.g_pn_miss_char
1954          THEN
1955             p_allow_abat_tbl_type (b).attribute9                                         := NULL;
1956          END IF;
1957 
1958          IF p_allow_abat_tbl_type (b).attribute10 = pn_varen_util.g_pn_miss_char
1959          THEN
1960             p_allow_abat_tbl_type (b).attribute10                                        := NULL;
1961          END IF;
1962 
1963          IF p_allow_abat_tbl_type (b).attribute11 = pn_varen_util.g_pn_miss_char
1964          THEN
1965             p_allow_abat_tbl_type (b).attribute11                                        := NULL;
1966          END IF;
1967 
1968          IF p_allow_abat_tbl_type (b).attribute12 = pn_varen_util.g_pn_miss_char
1969          THEN
1970             p_allow_abat_tbl_type (b).attribute12                                        := NULL;
1971          END IF;
1972 
1973          IF p_allow_abat_tbl_type (b).attribute13 = pn_varen_util.g_pn_miss_char
1974          THEN
1975             p_allow_abat_tbl_type (b).attribute13                                        := NULL;
1976          END IF;
1977 
1978          IF p_allow_abat_tbl_type (b).attribute14 = pn_varen_util.g_pn_miss_char
1979          THEN
1980             p_allow_abat_tbl_type (b).attribute14                                        := NULL;
1981          END IF;
1982 
1983          IF p_allow_abat_tbl_type (b).attribute15 = pn_varen_util.g_pn_miss_char
1984          THEN
1985             p_allow_abat_tbl_type (b).attribute15                                        := NULL;
1986          END IF;
1987 
1988             ---------
1989             -- End
1990             ---------
1991 -------------------------------------------------------------------------------
1992 --Allowance and Abatements validation
1993 --------------------------------------------------------------------------------
1994          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Allow_Abat: Calling Allowance and Abatements Validation'
1995                                 , 3
1996                                  );
1997 
1998          BEGIN
1999             SELECT   COUNT (1)
2000                    , var_rent_id
2001                    , commencement_date
2002                    , termination_date
2003                 INTO l_variable_rent_exists
2004                    , l_var_rent_id
2005                    , l_var_commencement_date
2006                    , l_var_termination_date
2007                 FROM pn_var_rents_all
2008                WHERE (   rent_num = p_allow_abat_tbl_type (b).var_rent_num
2009                       OR var_rent_id = p_allow_abat_tbl_type (b).var_rent_id
2010                      )
2011                  AND org_id = g_org_id                                                                        --l_org_id
2012             GROUP BY var_rent_id
2013                    , commencement_date
2014                    , termination_date;
2015           EXCEPTION
2016             WHEN OTHERS
2017             THEN
2018                pn_varen_util.pvt_debug
2019                      (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Variable Rent Number or Variable Rent Id doesnot exists :'
2020                       || SQLERRM
2021                     , 3
2022                      );
2023                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
2024                   fnd_message.set_token ('ERR_MSG', 'Var Rent : Val_Ins_Allow_Abat: Variable Rent Number or Variable Rent Id doesnot exists While selecting the count');
2025                   fnd_msg_pub.ADD;
2026                   RAISE fnd_api.g_exc_error;
2027          END;
2028 
2029          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Abatements var_rent_Id :'
2030                                   || l_var_rent_id
2031                                 , 3
2032                                  );
2033 
2034          IF l_variable_rent_exists = 1
2035          THEN
2036             p_allow_abat_tbl_type (b).var_rent_id                                        := l_var_rent_id;
2037 
2038             IF (   p_allow_abat_tbl_type (b).abat_type_code IS NOT NULL
2039                 OR p_allow_abat_tbl_type (b).abat_type_meaning IS NOT NULL
2040                )
2041             THEN
2042                pn_varen_util.pvt_debug
2043                   ('PN_VAREN_PVT: Val_Ins_Allow_Abat: Calling Allowance and Abatements  Validation Lookup - Inside the Loop'
2044                  , 3
2045                   );
2046                pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Allow_Abat: Calling Allowance and Abatements Validation'
2047                                       , 3
2048                                        );
2049                pn_varen_util.validate_lookups (p_lookup_type                 => g_abate_type_code
2050                                              , x_lookup_meaning              => p_allow_abat_tbl_type (b).abat_type_meaning
2051                                              , x_lookup_code                 => p_allow_abat_tbl_type (b).abat_type_code
2052                                              , x_return_status               => l_return_status
2053                                               );
2054                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Allowance and Abatements Output Code :'
2055                                         || p_allow_abat_tbl_type (b).abat_type_code
2056                                       , 3
2057                                        );
2058 
2059                IF (l_return_status = fnd_api.g_ret_sts_error)
2060                THEN
2061                   pn_varen_util.pvt_debug
2062                                   ('PN_VAREN_PVT: Val_Ins_Allow_Abat: Allowance and Abatements Lookup Validation Error'
2063                                  , 3
2064                                   );
2065                   fnd_message.set_name ('PN'
2066                                       , 'PN_VAR_ALL_ABA_TY'
2067                                        );
2068                   fnd_msg_pub.ADD;
2069                   RAISE fnd_api.g_exc_error;
2070                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
2071                THEN
2072                   pn_varen_util.pvt_debug
2073                        (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatements  Meaning Un-Expected Error :'
2074                         || p_allow_abat_tbl_type (b).abat_type_meaning
2075                       , 3
2076                        );
2077                   fnd_message.set_name ('PN'
2078                                       , 'PN_VAR_ALL_ABA_TY'
2079                                        );
2080                   fnd_msg_pub.ADD;
2081                   RAISE fnd_api.g_exc_unexpected_error;
2082                END IF;
2083             END IF;
2084 
2085 -----------------------------------------------------------------------------
2086 --- Allowance and Abatement Start date should be always greater than end date
2087 -----------------------------------------------------------------------------
2088             IF (p_allow_abat_tbl_type (b).abat_start_date < p_allow_abat_tbl_type (b).abat_end_date)
2089             THEN
2090 
2091                pn_varen_util.pvt_debug
2092                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement Start date is less than Allowance and Abatement end date: '
2093                    || p_allow_abat_tbl_type (b).abat_start_date
2094                    || ' and '
2095                    || p_allow_abat_tbl_type (b).abat_end_date
2096                  , 3
2097                   );
2098             ELSE
2099               pn_varen_util.pvt_debug
2100                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowances and abatements must start on the same date as the invoice period.Please change the allowance or abatement start date. '
2101                    || p_allow_abat_tbl_type (b).abat_start_date
2102                    || ' and '
2103                    || p_allow_abat_tbl_type (b).abat_end_date
2104                  , 3
2105                   );
2106                fnd_message.set_name ('PN'
2107                                    , 'PN_ST_DT_INV_MSG'
2108                                     );
2109                fnd_msg_pub.ADD;
2110                RAISE fnd_api.g_exc_error;
2111             END IF;
2112 
2113 ----------------------------------------------------------------------
2114 --- Validation of Allowance and Abatement Start date
2115 ----------------------------------------------------------------------
2116             IF (p_allow_abat_tbl_type (b).abat_start_date IS NOT NULL)
2117             THEN
2118                pn_varen_util.pvt_debug
2119                              (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Allowance and Abatement Start date is not null : '
2120                               || p_allow_abat_tbl_type (b).abat_start_date
2121                             , 3
2122                              );
2123                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end date : '
2124                                         || p_allow_abat_tbl_type (b).abat_end_date
2125                                       , 3
2126                                        );
2127                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Variable Rent Commencement Date : '
2128                                         || l_var_commencement_date
2129                                       , 3
2130                                        );
2131                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Allow_Abat: Variable Rent Termination Date: '
2132                                         || l_var_termination_date
2133                                       , 3
2134                                        );
2135 
2136                IF (p_allow_abat_tbl_type (b).abat_start_date = l_var_commencement_date)
2137                THEN
2138                   pn_varen_util.pvt_debug
2139                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat:  Allowance and Abatement Start date Validation Success :'
2140                       || p_allow_abat_tbl_type (b).abat_start_date
2141                     , 3
2142                      );
2143                ELSIF (   p_allow_abat_tbl_type (b).abat_start_date < l_var_commencement_date
2144                       OR p_allow_abat_tbl_type (b).abat_start_date > l_var_termination_date
2145                      )
2146                THEN
2147                   pn_varen_util.pvt_debug
2148                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement Start date Validation Error : '
2149                       || p_allow_abat_tbl_type (b).abat_start_date
2150                       || 'Please ensure that the start date for a rolling allowance or fixed abatement is within the variable rent agreement dates.'
2151                     , 3
2152                      );
2153                   fnd_message.set_name ('PN'
2154                                       , 'PN_VAR_ABT_STRDT_VAL_MSG'
2155                                        );
2156                   fnd_msg_pub.ADD;
2157                   RAISE fnd_api.g_exc_error;
2158 
2159                ELSIF (p_allow_abat_tbl_type (b).abat_start_date > p_allow_abat_tbl_type (b).abat_end_date)
2160                THEN
2161                  pn_varen_util.pvt_debug
2162                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement Start date Validation Error : '
2163                       || p_allow_abat_tbl_type (b).abat_start_date
2164                       || ' and '
2165                       || p_allow_abat_tbl_type (b).abat_end_date
2166                       || 'Please ensure that the start date for a rolling allowance or fixed abatement is less than the end date.'
2167                     , 3
2168                      );
2169                   fnd_message.set_name ('PN'
2170                                       , 'PN_STR_GRT_END_DT'
2171                                        );
2172                   fnd_msg_pub.ADD;
2173                   RAISE fnd_api.g_exc_error;
2174                END IF;
2175             ELSE
2176                --
2177                p_allow_abat_tbl_type (b).abat_start_date                                    := l_var_commencement_date;
2178                pn_varen_util.pvt_debug
2179                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement Start date is null then value is Defaulted Variable Rent Commencement Date : '
2180                    || l_var_commencement_date
2181                    || ' Success'
2182                  , 3
2183                   );
2184             END IF;
2185 
2186   ----------------------------------------------------------------------
2187 --- Validation of Allowance and Abatement end date
2188 ------------------------------------------------------------------------
2189      IF (p_allow_abat_tbl_type (b).abat_end_date IS NOT NULL OR p_allow_abat_tbl_type (b).abat_end_date <> pn_varen_util.g_pn_miss_date) THEN
2190         IF (p_allow_abat_tbl_type (b).abat_end_date < l_var_commencement_date OR p_allow_abat_tbl_type (b).abat_end_date > l_var_termination_date) THEN
2191            fnd_message.set_name('PN', 'PN_VAR_ABT_END_MSG');
2192            fnd_msg_pub.ADD;
2193            RAISE fnd_api.g_exc_error;
2194         ELSIF( p_allow_abat_tbl_type (b).abat_start_date >  p_allow_abat_tbl_type (b).abat_end_date) THEN
2195            fnd_message.set_name('PN', 'PN_STR_GRT_END_DT');
2196            fnd_msg_pub.ADD;
2197            RAISE fnd_api.g_exc_error;
2198         END IF;
2199 
2200         BEGIN
2201           SELECT 'x'
2202           INTO   l_exist
2203           FROM   dual
2204           WHERE  EXISTS (SELECT inv_end_date
2205                          FROM   pn_var_grp_dates_all
2206                          WHERE  var_rent_id = l_var_rent_id
2207                          AND    inv_end_date = p_allow_abat_tbl_type (b).abat_end_date
2208                          );
2209         EXCEPTION
2210           WHEN OTHERS THEN
2211             l_exist := NULL;
2212             pn_varen_util.pvt_debug('PN_VAR_RENT_PVT: Val_Ins_Allow_Abat:Exception in ABAT END DATE Retrieval:'||SQLERRM,3);
2213         END;
2214         IF l_exist IS NULL THEN
2215            /* End date is not coinciding with the invoice End date */
2216            fnd_message.set_name('PN', 'PN_SED_DT_INV_MSG');
2217            fnd_msg_pub.ADD;
2218            RAISE fnd_api.g_exc_error;
2219          END IF;
2220      ELSE
2221          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2222          fnd_message.set_token('ERR_MSG', 'Invalid ABAT End Date');
2223          fnd_msg_pub.ADD;
2224          RAISE fnd_api.g_exc_error;
2225      END IF;
2226 
2227 
2228 /*
2229 ----------------------------------------------------------------------
2230 --- Validation of Allowance and Abatement end date
2231 ----------------------------------------------------------------------
2232             IF (p_allow_abat_tbl_type (b).abat_end_date IS NOT NULL)
2233             THEN
2234                pn_varen_util.pvt_debug
2235                             (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end date is not null : '
2236                              || p_allow_abat_tbl_type (b).abat_end_date
2237                            , 3
2238                             );
2239                pn_varen_util.pvt_debug (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Variable Rent Termination Date: '
2240                                         || l_var_termination_date
2241                                       , 3
2242                                        );
2243                pn_varen_util.pvt_debug (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Abatement End Date: '
2244                                         || p_allow_abat_tbl_type (b).abat_end_date
2245                                       , 3
2246                                        );
2247 
2248                IF (p_allow_abat_tbl_type (b).abat_end_date = l_var_termination_date)
2249                THEN
2250                   pn_varen_util.pvt_debug
2251                       (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end date Validation Success :'
2252                        || p_allow_abat_tbl_type (b).abat_end_date
2253                      , 3
2254                       );
2255                ELSIF (p_allow_abat_tbl_type (b).abat_end_date <> l_var_termination_date)
2256                THEN
2257                   pn_varen_util.pvt_debug
2258                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end Date Validation Error : '
2259                       || p_allow_abat_tbl_type (b).abat_end_date
2260                       || 'Please ensure that the end date for a roslling allowance or fixed abatement is within the variable rent agreement dates.'
2261                     , 3
2262                      );
2263                   fnd_message.set_name ('PN'
2264                                       , 'PN_VAR_ABT_END_MSG'
2265                                        );
2266                   fnd_msg_pub.ADD;
2267                   RAISE fnd_api.g_exc_error;
2268                ELSIF (   p_allow_abat_tbl_type (b).abat_end_date > l_var_termination_date
2269                       OR p_allow_abat_tbl_type (b).abat_end_date < l_var_commencement_date
2270                      )
2271                THEN
2272                  pn_varen_util.pvt_debug
2273                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end Date Validation Error : '
2274                       || p_allow_abat_tbl_type (b).abat_end_date
2275                       || 'Please ensure that the end date for a roslling allowance or fixed abatement is within the variable rent agreement dates.'
2276                     , 3
2277                      );
2278                   fnd_message.set_name ('PN'
2279                                       , 'PN_VAR_ABT_END_MSG'
2280                                        );
2281                   fnd_msg_pub.ADD;
2282                   RAISE fnd_api.g_exc_error;
2283                ELSIF (p_allow_abat_tbl_type (b).abat_start_date > p_allow_abat_tbl_type (b).abat_end_date)
2284                THEN
2285                   pn_varen_util.pvt_debug
2286                      (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end Date Validation Error : '
2287                       || p_allow_abat_tbl_type (b).abat_end_date
2288                       || 'Please ensure that the start date for a rolling allowance or fixed abatement is less than the end date.'
2289                     , 3
2290                      );
2291                   fnd_message.set_name ('PN'
2292                                       , 'PN_STR_GRT_END_DT'
2293                                        );
2294                   fnd_msg_pub.ADD;
2295                   RAISE fnd_api.g_exc_error;
2296                END IF;
2297             ELSE
2298                p_allow_abat_tbl_type (b).abat_end_date                                      := l_var_termination_date;
2299                pn_varen_util.pvt_debug
2300                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement end Date is null then value is defaulted Termination Date  : '
2301                    || l_var_termination_date
2302                    || ' Success'
2303                  , 3
2304                   );
2305             END IF;
2306 
2307             IF p_allow_abat_tbl_type (b).abat_amount IS NULL
2308             THEN
2309                pn_varen_util.pvt_debug
2310                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatement amount is Null -  Validation Error : '
2311                    || p_allow_abat_tbl_type (b).abat_amount
2312                    || 'Please enter Allowance and Abatement amount.'
2313                  , 3
2314                   );
2315                fnd_message.set_name ('PN'
2316                                    , 'PN_VAR_ALL_ABA_AT'
2317                                     );
2318                fnd_msg_pub.ADD;
2319                RAISE fnd_api.g_exc_error;
2320             END IF;
2321 */
2322 
2323 -------------------------------------------------------------------------------------------
2324 -- Validating Descriptive Flex fields
2325 -------------------------------------------------------------------------------------------
2326    /*  --Commented as DFF is not available
2327     IF (get_attribute_status('PN_VAR_DEDUCTIONS') > 0) THEN
2328       IF NOT ((p_allow_abat_tbl_type (b).attribute_category = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute_category IS NULL)
2329                                         AND (p_allow_abat_tbl_type (b).attribute1 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute1 IS NULL)
2330                                         AND (p_allow_abat_tbl_type (b).attribute2 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute2 IS NULL)
2331                                         AND (p_allow_abat_tbl_type (b).attribute3 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute3 IS NULL)
2332                                         AND (p_allow_abat_tbl_type (b).attribute4 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute4 IS NULL)
2333                                         AND (p_allow_abat_tbl_type (b).attribute5 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute5 IS NULL)
2334                                         AND (p_allow_abat_tbl_type (b).attribute6 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute6 IS NULL)
2335                                         AND (p_allow_abat_tbl_type (b).attribute7 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute7 IS NULL)
2336                                         AND (p_allow_abat_tbl_type (b).attribute8 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute8 IS NULL)
2337                                         AND (p_allow_abat_tbl_type (b).attribute9 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute9 IS NULL)
2338                                         AND (p_allow_abat_tbl_type (b).attribute10 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute10 IS NULL)
2339                                         AND (p_allow_abat_tbl_type (b).attribute11 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute11 IS NULL)
2340                                         AND (p_allow_abat_tbl_type (b).attribute12 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute12 IS NULL)
2341                                         AND (p_allow_abat_tbl_type (b).attribute13 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute13 IS NULL)
2342                                         AND (p_allow_abat_tbl_type (b).attribute14 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute14 IS NULL)
2343                                         AND (p_allow_abat_tbl_type (b).attribute15 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl_type (b).attribute15 IS NULL)
2344                                 ) THEN
2345          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_DEDUCTIONS'
2346                                            , p_attribute_category          => p_allow_abat_tbl_type (b).attribute_category
2347                                            , p_attribute1                  => p_allow_abat_tbl_type (b).attribute1
2348                                            , p_attribute2                  => p_allow_abat_tbl_type (b).attribute2
2349                                            , p_attribute3                  => p_allow_abat_tbl_type (b).attribute3
2350                                            , p_attribute4                  => p_allow_abat_tbl_type (b).attribute4
2351                                            , p_attribute5                  => p_allow_abat_tbl_type (b).attribute5
2352                                            , p_attribute6                  => p_allow_abat_tbl_type (b).attribute6
2353                                            , p_attribute7                  => p_allow_abat_tbl_type (b).attribute7
2354                                            , p_attribute8                  => p_allow_abat_tbl_type (b).attribute8
2355                                            , p_attribute9                  => p_allow_abat_tbl_type (b).attribute9
2356                                            , p_attribute10                 => p_allow_abat_tbl_type (b).attribute10
2357                                            , p_attribute11                 => p_allow_abat_tbl_type (b).attribute11
2358                                            , p_attribute12                 => p_allow_abat_tbl_type (b).attribute12
2359                                            , p_attribute13                 => p_allow_abat_tbl_type (b).attribute13
2360                                            , p_attribute14                 => p_allow_abat_tbl_type (b).attribute14
2361                                            , p_attribute15                 => p_allow_abat_tbl_type (b).attribute15
2362                                            , x_return_msg                  => l_return_msg
2363                                            , x_return_status               => l_return_status
2364                                             );
2365 
2366                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
2367                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
2368                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_ALLOW_ABATE Descriptive Fields Error');
2369                   fnd_msg_pub.ADD;
2370                   RAISE fnd_api.g_exc_error;
2371                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
2372                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
2373                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_ALLOW_ABATE Descriptive Fields Error');
2374                   fnd_msg_pub.ADD;
2375                   RAISE fnd_api.g_exc_unexpected_error;
2376                END IF;
2377         END IF;
2378       END IF; -- End of attributes valitions in create var Allow and Abate*/
2379 
2380 
2381             --
2382             -- End of Abatement Validations
2383             pn_varen_util.pvt_debug (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatements Validation : '
2384                                      || l_allow_abat_val
2385                                    , 3
2386                                     );
2387 
2388            /* IF (    l_allow_abat_val <> 'N'
2389                 AND x_return_status = fnd_api.g_ret_sts_success)
2390             THEN
2391                pn_varen_util.pvt_debug
2392                   (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Before Calling insert_Allowance and Abatements procedure : '
2393                    || l_allow_abat_val
2394                  , 3
2395                   );*/
2396 
2397                IF p_validate_flag <> 'Y'
2398                THEN
2399                   insert_allow_abat (p_allow_abat_rec_type         => p_allow_abat_tbl_type (b)
2400                                    , x_return_status               => x_return_status
2401                                     );
2402                  IF (l_return_status = fnd_api.g_ret_sts_error) THEN
2403                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
2404                   fnd_message.set_token ('ERR_MSG', 'Var Rent:INSERT_ALLOW_ABAT:Exception');
2405                   fnd_msg_pub.ADD;
2406                   RAISE fnd_api.g_exc_error;
2407                  ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
2408                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
2409                   fnd_message.set_token ('ERR_MSG', 'Var Rent : INSERT_ALLOW_ABAT:Unexpected Exception');
2410                   fnd_msg_pub.ADD;
2411                   RAISE fnd_api.g_exc_unexpected_error;
2412                  END IF;
2413                ELSE
2414                   pn_varen_util.pvt_debug
2415                      ('PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Abatements Procedure is ran in Validation mode, abatements would not be created '
2416                     , 3
2417                      );
2418                END IF;
2419             /*ELSE
2420                pn_varen_util.pvt_debug
2421                       (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Allowance and Abatements Validation is not success : '
2422                        || l_allow_abat_val
2423                      , 3
2424                       );
2425             END IF;*/
2426          ELSE
2427             pn_varen_util.pvt_debug
2428                ('PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Pn_Varen_Pvt.Val_Ins_Allow_Abat - Rent_Num provided is not found'
2429               , 3
2430                );
2431             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2432             fnd_message.set_token('ERR_MSG', 'Pn_Varen_Pvt.Val_Ins_Allow_Abat - Rent_Num provided is not found');
2433             fnd_msg_pub.ADD;
2434             RAISE fnd_api.g_exc_error;
2435          END IF;
2436 
2437        EXCEPTION
2438          WHEN fnd_api.g_exc_error THEN
2439             pn_varen_util.pvt_debug(g_pkg_name||'-val_ins_allow_abat:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
2440             l_allow_abat_count := l_allow_abat_count+1;
2441          WHEN OTHERS THEN
2442             pn_varen_util.pvt_debug(g_pkg_name||'-val_ins_allow_abat:LOOOPING:EXCEPTION:'||SQLERRM,3);
2443             l_allow_abat_count := l_allow_abat_count+1;
2444        END;
2445       END LOOP;
2446 
2447        IF(l_allow_abat_count = 0) THEN
2448          x_return_status := fnd_api.g_ret_sts_success;
2449        ELSE
2450          x_return_status := fnd_api.g_ret_sts_error;
2451        END IF;
2452    EXCEPTION
2453       WHEN OTHERS
2454       THEN
2455          pn_varen_util.pvt_debug
2456                        (   'PN_VAR_RENT_PVT: Val_Ins_Allow_Abat: Pn_Varen_Pvt.Val_Ins_Allow_Abat - Exception raised: '
2457                         || SQLERRM
2458                       , 3
2459                        );
2460          x_return_status := fnd_api.g_ret_sts_error;
2461    END val_ins_allow_abat;
2462 
2463 --------------------------------------------------------------------------------
2464 --  NAME         : VAL_INS_CONSTRAINTS
2465 --  DESCRIPTION  : Private procedure to validate Constraints
2466 --  PURPOSE      :
2467 --  INVOKED FROM :
2468 --  ARGUMENTS    : P_CONSTRAINTS_TBL_TYPE       IN Parameter
2469 --               : P_VALIDATE_FLAG              IN Parameter
2470 --               : P_GENERATE_CONSTRAINTS       IN Parameter
2471 --               : X_RETURN_STATUS             OUT Parameter
2472 --  REFERENCE    :
2473 --  HISTORY      :
2474 --
2475 --  20-SEP-2010   vkatta   o Created
2476 --------------------------------------------------------------------------------
2477    PROCEDURE val_ins_constraints (
2478       p_constraints_tbl_type     IN OUT NOCOPY constraints_tbl_type
2479     , p_validate_flag            IN       VARCHAR2
2480     , p_generate_constraints     IN       VARCHAR2 DEFAULT 'N'
2481     , x_return_status            OUT NOCOPY VARCHAR2
2482    )
2483    IS
2484       l_return_status               VARCHAR2 (1);
2485       l_validate_success            VARCHAR2 (1) := 'N';
2486       l_var_commencement_date       DATE;
2487       l_var_termination_date        DATE;
2488       l_const_val                   VARCHAR2 (1) := 'Y';
2489       l_st_date_exist               VARCHAR2 (1) := NULL;
2490       l_return_msg                  VARCHAR2 (10);
2491       l_variable_rent_exists        VARCHAR2 (30);
2492       l_var_rent_id                 NUMBER;
2493       l_first_constr_type_code      pn_var_constr_defaults_all.type_code%TYPE;
2494       l_first_constr_amount         pn_var_constr_defaults_all.amount%TYPE;
2495 
2496       l_val_ins_error_count NUMBER := 0;
2497    BEGIN
2498       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Value of g_var_rent_id befor constraints loop: '
2499                                || g_var_rent_id
2500                              , 3
2501                               );
2502 
2503       FOR c IN p_constraints_tbl_type.FIRST .. p_constraints_tbl_type.LAST
2504       LOOP
2505         BEGIN
2506          pn_varen_util.pvt_debug
2507                              (   'PN_VAREN_PVT: Val_Ins_Constraints: Value of G_VAR_RENT_ID inside constraints loop: '
2508                               || g_var_rent_id
2509                             , 3
2510                              );
2511 
2512 -------------------------------------------------------------------------------------
2513 -- If Constraints record type has not been initialized then assign it to null
2514 -------------------------------------------------------------------------------------
2515          IF p_constraints_tbl_type (c).constr_default_id = pn_varen_util.g_pn_miss_num
2516          THEN
2517             p_constraints_tbl_type (c).constr_default_id                                 := NULL;
2518          END IF;
2519 
2520          IF p_constraints_tbl_type (c).constr_default_num = pn_varen_util.g_pn_miss_num
2521          THEN
2522             p_constraints_tbl_type (c).constr_default_num                                := NULL;
2523          END IF;
2524 
2525          IF (   p_constraints_tbl_type (c).var_rent_id = pn_varen_util.g_pn_miss_num
2526              OR p_constraints_tbl_type (c).var_rent_id IS NULL
2527             )
2528          THEN
2529             p_constraints_tbl_type (c).var_rent_id                                       := g_var_rent_id;
2530          END IF;
2531 
2532          IF p_constraints_tbl_type (c).var_rent_num = pn_varen_util.g_pn_miss_char
2533          THEN
2534             p_constraints_tbl_type (c).var_rent_num                                      := NULL;
2535          END IF;
2536 
2537          IF p_constraints_tbl_type (c).agreement_template_id = pn_varen_util.g_pn_miss_num
2538          THEN
2539             p_constraints_tbl_type (c).agreement_template_id                             := NULL;
2540          END IF;
2541 
2542          IF p_constraints_tbl_type (c).constr_template_id = pn_varen_util.g_pn_miss_num
2543          THEN
2544             p_constraints_tbl_type (c).constr_template_id                                := NULL;
2545          END IF;
2546 
2547          IF p_constraints_tbl_type (c).constr_start_date = pn_varen_util.g_pn_miss_date
2548          THEN
2549             p_constraints_tbl_type (c).constr_start_date                                 := NULL;
2550          END IF;
2551 
2552          IF p_constraints_tbl_type (c).constr_end_date = pn_varen_util.g_pn_miss_date
2553          THEN
2554             p_constraints_tbl_type (c).constr_end_date                                   := NULL;
2555          END IF;
2556 
2557          IF p_constraints_tbl_type (c).constr_cat_code = pn_varen_util.g_pn_miss_char
2558          THEN
2559             p_constraints_tbl_type (c).constr_cat_code                                   := NULL;
2560          END IF;
2561 
2562          IF p_constraints_tbl_type (c).constr_type_code = pn_varen_util.g_pn_miss_char
2563          THEN
2564             p_constraints_tbl_type (c).constr_type_code                                  := NULL;
2565          END IF;
2566 
2567          IF p_constraints_tbl_type (c).constr_type_meaning = pn_varen_util.g_pn_miss_char
2568          THEN
2569             p_constraints_tbl_type (c).constr_type_meaning                               := NULL;
2570          END IF;
2571 
2572          IF p_constraints_tbl_type (c).constr_amount = pn_varen_util.g_pn_miss_num
2573          THEN
2574             p_constraints_tbl_type (c).constr_amount                                     := NULL;
2575          END IF;
2576 
2577          IF p_constraints_tbl_type (c).last_update_date = pn_varen_util.g_pn_miss_date
2578          THEN
2579             p_constraints_tbl_type (c).last_update_date                                  := NULL;
2580          END IF;
2581 
2582          IF p_constraints_tbl_type (c).last_updated_by = pn_varen_util.g_pn_miss_num
2583          THEN
2584             p_constraints_tbl_type (c).last_updated_by                                   := NULL;
2585          END IF;
2586 
2587          IF p_constraints_tbl_type (c).creation_date = pn_varen_util.g_pn_miss_date
2588          THEN
2589             p_constraints_tbl_type (c).creation_date                                     := NULL;
2590          END IF;
2591 
2592          IF p_constraints_tbl_type (c).created_by = pn_varen_util.g_pn_miss_num
2593          THEN
2594             p_constraints_tbl_type (c).created_by                                        := NULL;
2595          END IF;
2596 
2597          IF p_constraints_tbl_type (c).last_update_login = pn_varen_util.g_pn_miss_num
2598          THEN
2599             p_constraints_tbl_type (c).last_update_login                                 := NULL;
2600          END IF;
2601 
2602          IF p_constraints_tbl_type (c).attribute_category = pn_varen_util.g_pn_miss_char
2603          THEN
2604             p_constraints_tbl_type (c).attribute_category                                := NULL;
2605          END IF;
2606 
2607          IF p_constraints_tbl_type (c).attribute1 = pn_varen_util.g_pn_miss_char
2608          THEN
2609             p_constraints_tbl_type (c).attribute1                                        := NULL;
2610          END IF;
2611 
2612          IF p_constraints_tbl_type (c).attribute2 = pn_varen_util.g_pn_miss_char
2613          THEN
2614             p_constraints_tbl_type (c).attribute2                                        := NULL;
2615          END IF;
2616 
2617          IF p_constraints_tbl_type (c).attribute3 = pn_varen_util.g_pn_miss_char
2618          THEN
2619             p_constraints_tbl_type (c).attribute3                                        := NULL;
2620          END IF;
2621 
2622          IF p_constraints_tbl_type (c).attribute4 = pn_varen_util.g_pn_miss_char
2623          THEN
2624             p_constraints_tbl_type (c).attribute4                                        := NULL;
2625          END IF;
2626 
2627          IF p_constraints_tbl_type (c).attribute5 = pn_varen_util.g_pn_miss_char
2628          THEN
2629             p_constraints_tbl_type (c).attribute5                                        := NULL;
2630          END IF;
2631 
2632          IF p_constraints_tbl_type (c).attribute6 = pn_varen_util.g_pn_miss_char
2633          THEN
2634             p_constraints_tbl_type (c).attribute6                                        := NULL;
2635          END IF;
2636 
2637          IF p_constraints_tbl_type (c).attribute7 = pn_varen_util.g_pn_miss_char
2638          THEN
2639             p_constraints_tbl_type (c).attribute7                                        := NULL;
2640          END IF;
2641 
2642          IF p_constraints_tbl_type (c).attribute8 = pn_varen_util.g_pn_miss_char
2643          THEN
2644             p_constraints_tbl_type (c).attribute8                                        := NULL;
2645          END IF;
2646 
2647          IF p_constraints_tbl_type (c).attribute9 = pn_varen_util.g_pn_miss_char
2648          THEN
2649             p_constraints_tbl_type (c).attribute9                                        := NULL;
2650          END IF;
2651 
2652          IF p_constraints_tbl_type (c).attribute10 = pn_varen_util.g_pn_miss_char
2653          THEN
2654             p_constraints_tbl_type (c).attribute10                                       := NULL;
2655          END IF;
2656 
2657          IF p_constraints_tbl_type (c).attribute11 = pn_varen_util.g_pn_miss_char
2658          THEN
2659             p_constraints_tbl_type (c).attribute11                                       := NULL;
2660          END IF;
2661 
2662          IF p_constraints_tbl_type (c).attribute12 = pn_varen_util.g_pn_miss_char
2663          THEN
2664             p_constraints_tbl_type (c).attribute12                                       := NULL;
2665          END IF;
2666 
2667          IF p_constraints_tbl_type (c).attribute13 = pn_varen_util.g_pn_miss_char
2668          THEN
2669             p_constraints_tbl_type (c).attribute13                                       := NULL;
2670          END IF;
2671 
2672          IF p_constraints_tbl_type (c).attribute14 = pn_varen_util.g_pn_miss_char
2673          THEN
2674             p_constraints_tbl_type (c).attribute14                                       := NULL;
2675          END IF;
2676 
2677          IF p_constraints_tbl_type (c).attribute15 = pn_varen_util.g_pn_miss_char
2678          THEN
2679             p_constraints_tbl_type (c).attribute15                                       := NULL;
2680          END IF;
2681 
2682          ---------
2683          -- End
2684          ---------
2685          l_variable_rent_exists                                                       := NULL;
2686 ----------------------------------------------------------------------------------------------------------------------------
2687 -- Comparing const_start_date is greater than const_end_date and also whether records exists in pn_var_grp_dates_all or not
2688 ----------------------------------------------------------------------------------------------------------------------------
2689 --        BEGIN     -- to capture exceptions related to individual validations
2690 --
2691          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: No of Constraints records:'
2692                                   || p_constraints_tbl_type.COUNT
2693                                 , 3
2694                                  );
2695 
2696          BEGIN
2697             SELECT   COUNT (1)
2698                    , var_rent_id
2699                 INTO l_variable_rent_exists
2700                    , l_var_rent_id
2701                 FROM pn_var_rents_all
2702                WHERE (   rent_num = p_constraints_tbl_type (c).var_rent_num
2703                       OR var_rent_id = p_constraints_tbl_type (c).var_rent_id
2704                      )
2705                  AND org_id = g_org_id                                                                        --l_org_id
2706             GROUP BY var_rent_id;
2707          EXCEPTION
2708             WHEN OTHERS
2709             THEN
2710                pn_varen_util.pvt_debug
2711                     (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent Number or Variable Rent Id doesnot exists :'
2712                      || SQLERRM
2713                    , 3
2714                     );
2715            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2716            fnd_message.set_token('ERR_MSG', 'Rent ID/Rent Number doesnt exist.');
2717            fnd_msg_pub.ADD;
2718            RAISE fnd_api.g_exc_error;
2719          END;
2720 
2721          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratints var_rent_Id :'
2722                                   || l_var_rent_id
2723                                 , 3
2724                                  );
2725 
2726          IF l_variable_rent_exists = 1
2727          THEN
2728             p_constraints_tbl_type (c).var_rent_id                                       := l_var_rent_id;
2729             pn_varen_util.pvt_debug
2730                                   (   ' PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent exists and VAR_RENT_ID is : '
2731                                    || l_var_rent_id
2732                                  , 3
2733                                   );
2734 
2735             IF (p_constraints_tbl_type (c).constr_start_date > p_constraints_tbl_type (c).constr_end_date)
2736             THEN
2737                pn_varen_util.pvt_debug
2738                   ('PN_VAREN_PVT: Val_Ins_Constraints: Please ensure that constraint dates you enter coincide with invoice period dates'
2739                  , 3
2740                   );
2741               fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2742               fnd_message.set_token('ERR_MSG', 'Please ensure that constraint dates you enter coincide with invoice period dates');
2743               fnd_msg_pub.ADD;
2744               RAISE fnd_api.g_exc_error;
2745                --l_const_val                                                                  := 'N';
2746             END IF;
2747 
2748 --------------------------------------------------------------------------------
2749 --Constraint Type validation
2750 --------------------------------------------------------------------------------
2751             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Constraints: Calling Constraint Type Validation'
2752                                    , 3
2753                                     );
2754 
2755             IF (   p_constraints_tbl_type (c).constr_type_code IS NOT NULL
2756                 OR p_constraints_tbl_type (c).constr_type_meaning IS NOT NULL
2757                )
2758             THEN
2759 
2760                pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Constraints: Constraint Type Validation'
2761                                       , 3
2762                                        );
2763                pn_varen_util.validate_lookups (p_lookup_type                 => g_type_code
2764                                              , x_lookup_meaning              => p_constraints_tbl_type (c).constr_type_meaning
2765                                              , x_lookup_code                 => p_constraints_tbl_type (c).constr_type_code
2766                                              , x_return_status               => l_return_status
2767                                               );
2768                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Type Output Code :'
2769                                         || p_constraints_tbl_type (c).constr_type_code||'-'||l_return_status
2770                                       , 3
2771                                        );
2772 
2773                IF (l_return_status = fnd_api.g_ret_sts_error)
2774                THEN
2775                   --
2776                   fnd_message.set_name ('PN'
2777                                       , 'PN_VAR_CONSTR_TY'
2778                                        );
2779                   fnd_msg_pub.ADD;
2780                   RAISE fnd_api.g_exc_error;
2781                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
2782                THEN
2783                   --
2784                   fnd_message.set_name ('PN'
2785                                       , 'PN_VAR_CONSTR_TY'
2786                                        );
2787                   fnd_msg_pub.ADD;
2788                   RAISE fnd_api.g_exc_unexpected_error;
2789                END IF;
2790             END IF;
2791 
2792             --
2793             -- fetching variable rent commencement date and termination date values
2794             --
2795             IF p_constraints_tbl_type (c).var_rent_id IS NOT NULL
2796             THEN
2797                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Variable Rent Id '
2798                                         || p_constraints_tbl_type (c).var_rent_id
2799                                       , 3
2800                                        );
2801                pn_varen_util.var_rent_details (p_var_rent_id                 => p_constraints_tbl_type (c).var_rent_id
2802                                              , p_org_id                      => g_org_id
2803                                              , x_commencement_date           => l_var_commencement_date
2804                                              , x_termination_date            => l_var_termination_date
2805                                              , x_return_status               => x_return_status
2806                                               );
2807 
2808 
2809                   pn_varen_util.pvt_debug
2810                                         (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Variable Rent Id exists : '
2811                                          || p_constraints_tbl_type (c).var_rent_id||'-'||l_return_status
2812                                        , 3
2813                                         );
2814                   pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent commencement date : '
2815                                            || l_var_commencement_date
2816                                          , 3
2817                                           );
2818                   pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent termination date : '
2819                                            || l_var_termination_date
2820                                          , 3
2821                                           );
2822                IF (x_return_status = fnd_api.g_ret_sts_error)
2823                THEN
2824                   pn_varen_util.pvt_debug
2825                                 (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Variable Rent Id doesnot exists : '
2826                                  || p_constraints_tbl_type (c).var_rent_id
2827                                , 3
2828                                 );
2829                   fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2830                   fnd_message.set_token('ERR_MSG', ' Constraint Variable Rent Id doesnot exists');
2831                   fnd_msg_pub.ADD;
2832                   RAISE fnd_api.g_exc_error;
2833                ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
2834                   pn_varen_util.pvt_debug
2835                                 (   'PN_VAREN_PVT: Val_Ins_Constraints: Unexpected Error Constraint Variable Rent Id doesnot exists : '
2836                                  || p_constraints_tbl_type (c).var_rent_id
2837                                , 3
2838                                 );
2839                   fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
2840                   fnd_message.set_token('ERR_MSG', 'Unexpected Constraint Variable Rent Id doesnot exists');
2841                   fnd_msg_pub.ADD;
2842                   RAISE fnd_api.g_exc_unexpected_error;
2843               END IF;
2844             ELSE
2845                pn_varen_util.pvt_debug
2846                                       (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Variable Rent Id is null  : '
2847                                        || p_constraints_tbl_type (c).var_rent_id
2848                                      , 3
2849                                       );
2850                   fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
2851                   fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
2852                   fnd_message.set_token ('NULL_PARAM', 'RENT_ID ');
2853                   fnd_msg_pub.ADD;
2854                   RAISE fnd_api.g_exc_error;
2855             END IF;
2856 
2857 ----------------------------------------------------------------------
2858 --- Validation of Constratint start date
2859 ----------------------------------------------------------------------
2860             IF (p_constraints_tbl_type (c).constr_start_date IS NOT NULL)
2861             THEN
2862                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date is not null : '
2863                                         || p_constraints_tbl_type (c).constr_start_date
2864                                       , 3
2865                                        );
2866                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint End Date : '
2867                                         || p_constraints_tbl_type (c).constr_end_date
2868                                       , 3
2869                                        );
2870                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent Commencement Date : '
2871                                         || l_var_commencement_date
2872                                       , 3
2873                                        );
2874                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent Termination Date: '
2875                                         || l_var_termination_date
2876                                       , 3
2877                                        );
2878 
2879                IF (p_constraints_tbl_type (c).constr_start_date = l_var_commencement_date)
2880                THEN
2881 
2882                   pn_varen_util.pvt_debug
2883                                   (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date Validation Success :'
2884                                    || p_constraints_tbl_type (c).constr_start_date
2885                                  , 3
2886                                   );
2887                   pn_varen_util.pvt_debug
2888                                    (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date Validation Success :'
2889                                     || p_constraints_tbl_type (c).constr_start_date
2890                                   , 3
2891                                    );
2892                ELSIF (   p_constraints_tbl_type (c).constr_start_date < l_var_commencement_date
2893                       OR p_constraints_tbl_type (c).constr_start_date > l_var_termination_date
2894                      )
2895                THEN
2896                  pn_varen_util.pvt_debug
2897                      (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date Validation Error : '
2898                       || p_constraints_tbl_type (c).constr_start_date
2899                       || 'Please enter a constraint start date that is the same as or after the commencement date of the variable rent agreement.'
2900                     , 3
2901                      );
2902                   fnd_message.set_name ('PN'
2903                                       , 'PN_VAR_CONSTR_STRDT_VAL_MSG'
2904                                        );
2905                   fnd_msg_pub.ADD;
2906                   RAISE fnd_api.g_exc_error;
2907                ELSIF (p_constraints_tbl_type (c).constr_start_date > l_var_commencement_date)
2908                THEN
2909                   pn_varen_util.pvt_debug
2910                                     (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date Validation Error :'
2911                                      || p_constraints_tbl_type (c).constr_start_date
2912                                      || 'Please ensure that constraint dates you enter coincide with invoice period dates'
2913                                    , 3
2914                                     );
2915                   fnd_message.set_name ('PN'
2916                                       , 'PN_VAR_CONSTR_STRDT_VAL_MSG'
2917                                        );
2918                   fnd_msg_pub.ADD;
2919                   RAISE fnd_api.g_exc_error;
2920                END IF;
2921             ELSE
2922                --
2923                p_constraints_tbl_type (c).constr_start_date    := l_var_commencement_date;
2924                pn_varen_util.pvt_debug
2925                   (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint Start Date is null then value is Defaulted Variable Rent Commencement Date : '
2926                    || l_var_commencement_date
2927                    || ' Success'
2928                  , 3
2929                   );
2930             END IF;
2931 
2932             pn_varen_util.pvt_debug
2933                               (   'PN_VAREN_PVT: Val_Ins_Constraints: , p_constraints_tbl_type (c).constr_start_date :'
2934                                || p_constraints_tbl_type (c).constr_start_date
2935                              , 3
2936                               );
2937             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: , l_var_commencement_date :'
2938                                      || l_var_commencement_date
2939                                    , 3
2940                                     );
2941 
2942 ----------------------------------------------------------------------
2943 --- Validation of Constratint end date
2944 ----------------------------------------------------------------------
2945             IF (p_constraints_tbl_type (c).constr_end_date IS NOT NULL)
2946             THEN
2947                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint end Date is not null : '
2948                                         || p_constraints_tbl_type (c).constr_end_date
2949                                       , 3
2950                                        );
2951                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Variable Rent Termination Date: '
2952                                         || l_var_termination_date
2953                                       , 3
2954                                        );
2955 
2956                IF (p_constraints_tbl_type (c).constr_end_date = l_var_termination_date)
2957                THEN
2958                   pn_varen_util.pvt_debug
2959                                      (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint end Date Validation Success :'
2960                                       || p_constraints_tbl_type (c).constr_end_date
2961                                     , 3
2962                                      );
2963                ELSIF (   p_constraints_tbl_type (c).constr_end_date > l_var_termination_date
2964                       OR p_constraints_tbl_type (c).constr_end_date < l_var_commencement_date
2965                      )
2966                THEN
2967                   pn_varen_util.pvt_debug
2968                      (   'PN_VAREN_PVT: Val_Ins_Constraints: Constratint end Date Validation Error :'
2969                       || p_constraints_tbl_type (c).constr_end_date
2970                       || 'Please enter a constraint end date that is the same as or before the termination date of the variable rent agreement.'
2971                     , 3
2972                      );
2973                   fnd_message.set_name ('PN'
2974                                       , 'PN_VAR_CONSTR_ENDDT_VAL_MSG'
2975                                        );
2976                   fnd_msg_pub.ADD;
2977                   RAISE fnd_api.g_exc_error;
2978                ELSIF (p_constraints_tbl_type (c).constr_end_date < l_var_termination_date)
2979                THEN
2980                   pn_varen_util.pvt_debug
2981                                         (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint end Date Validation Error :'
2982                                          || p_constraints_tbl_type (c).constr_end_date
2983                                          || 'Please enter an end date that is greater than or equal to the start date.'
2984                                        , 3
2985                                         );
2986                   fnd_message.set_name ('PN'
2987                                       , 'PN_VAR_CONSTR_ENDDT_VAL_MSG'
2988                                        );
2989                   fnd_msg_pub.ADD;
2990                   RAISE fnd_api.g_exc_error;
2991                END IF;
2992             ELSE
2993                --
2994                p_constraints_tbl_type (c).constr_end_date                                   := l_var_termination_date;
2995                pn_varen_util.pvt_debug
2996                   (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint end Date is null then value is defaulted Variable Rent Termination Date : '
2997                    || l_var_termination_date
2998                    || ' Success'
2999                  , 3
3000                   );
3001             END IF;
3002 
3003             IF p_constraints_tbl_type (c).constr_amount IS NULL
3004             THEN
3005                pn_varen_util.pvt_debug
3006                                 (   'PN_VAREN_PVT: Val_Ins_Constraints: Constraint Amount is Null - Validation Error :'
3007                                  || p_constraints_tbl_type (c).constr_amount
3008                                  || 'Please enter constraint amount'
3009                                , 3
3010                                 );
3011                fnd_message.set_name ('PN'
3012                                    , 'PN_VAR_CONSTR_AMT'
3013                                     );
3014                fnd_msg_pub.ADD;
3015                RAISE fnd_api.g_exc_error;
3016             END IF;
3017 
3018     ---------------------------------------------------------------------------------------------------------------------
3019  -- For the second constraint record, need to compare the first constraint type code and amount with the second record
3020 ----------------------------------------------------------------------------------------------------------------------
3021             IF c = 1
3022             THEN
3023                l_first_constr_type_code                                                     :=
3024                                                                             p_constraints_tbl_type (c).constr_type_code;
3025                pn_varen_util.pvt_debug (   ' PN_VAREN_PVT: Val_Ins_Constraints: l_first_constr_type_code is : '
3026                                         || l_first_constr_type_code
3027                                       , 3
3028                                        );
3029                l_first_constr_amount                                                        :=
3030                                                                                 p_constraints_tbl_type (c).constr_amount;
3031                pn_varen_util.pvt_debug (   ' PN_VAREN_PVT: Val_Ins_Constraints: l_first_constr_amount is : '
3032                                         || l_first_constr_amount
3033                                       , 3
3034                                        );
3035             ELSIF c = 2
3036             THEN
3037                IF (    p_constraints_tbl_type (c).constr_type_code <> l_first_constr_type_code
3038                    -- second record 'MAX'
3039                    AND l_first_constr_type_code = 'MIN'
3040                   )
3041                THEN
3042                   IF l_first_constr_amount <= p_constraints_tbl_type (c).constr_amount
3043                   THEN
3044                     pn_varen_util.pvt_debug
3045                         ('PN_VAREN_PVT: Val_Ins_Constraints: For Next Constraint record, constraint type is MAX and amount is greater than first record amount.'
3046                        , 3
3047                         );
3048                   ELSE
3049                      pn_varen_util.pvt_debug
3050                         ('PN_VAREN_PVT: Val_Ins_Constraints: For Next Constraint record, constraint type is MAX  and amount is less than first record amount.'
3051                        , 3
3052                         );
3053                      fnd_message.set_name ('PN'
3054                                          , 'PN_VAR_WRONG_RANGE'
3055                                           );
3056                      fnd_msg_pub.ADD;
3057                      RAISE fnd_api.g_exc_error;
3058                   END IF;
3059                ELSIF (    p_constraints_tbl_type (c).constr_type_code <> l_first_constr_type_code
3060                       -- second record 'MIN'
3061                       AND l_first_constr_type_code = 'MAX'
3062                      )
3063                THEN
3064                   IF p_constraints_tbl_type (c).constr_amount <= l_first_constr_amount
3065                   THEN
3066                      pn_varen_util.pvt_debug
3067                         ('PN_VAREN_PVT: Val_Ins_Constraints: For Next Constraint record, constraint type is MIN and amount is less than first record amount '
3068                        , 3
3069                         );
3070                   ELSE
3071                      pn_varen_util.pvt_debug
3072                         ('PN_VAREN_PVT: Val_Ins_Constraints: For Next Constraint record, constraint type is MIN and amount is greater than first record amount '
3073                        , 3
3074                         );
3075                      fnd_message.set_name ('PN'
3076                                          , 'PN_VAR_WRONG_RANGE'
3077                                           );
3078                      fnd_msg_pub.ADD;
3079                      RAISE fnd_api.g_exc_error;
3080                   END IF;
3081                END IF;
3082             END IF;
3083 
3084 -------------------------------------------------------------------------------------------
3085 -- Validating Descriptive Flex fields
3086 -------------------------------------------------------------------------------------------
3087           IF (get_attribute_status('PN_VAR_CONSTRAINTS') > 0) THEN
3088       IF NOT ((p_constraints_tbl_type(c).attribute_category = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute_category IS NULL)
3089                                         AND (p_constraints_tbl_type(c).attribute1 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute1 IS NULL)
3090                                         AND (p_constraints_tbl_type(c).attribute2 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute2 IS NULL)
3091                                         AND (p_constraints_tbl_type(c).attribute3 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute3 IS NULL)
3092                                         AND (p_constraints_tbl_type(c).attribute4 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute4 IS NULL)
3093                                         AND (p_constraints_tbl_type(c).attribute5 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute5 IS NULL)
3094                                         AND (p_constraints_tbl_type(c).attribute6 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute6 IS NULL)
3095                                         AND (p_constraints_tbl_type(c).attribute7 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute7 IS NULL)
3096                                         AND (p_constraints_tbl_type(c).attribute8 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute8 IS NULL)
3097                                         AND (p_constraints_tbl_type(c).attribute9 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute9 IS NULL)
3098                                         AND (p_constraints_tbl_type(c).attribute10 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute10 IS NULL)
3099                                         AND (p_constraints_tbl_type(c).attribute11 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute11 IS NULL)
3100                                         AND (p_constraints_tbl_type(c).attribute12 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute12 IS NULL)
3101                                         AND (p_constraints_tbl_type(c).attribute13 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute13 IS NULL)
3102                                         AND (p_constraints_tbl_type(c).attribute14 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute14 IS NULL)
3103                                         AND (p_constraints_tbl_type(c).attribute15 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl_type(c).attribute15 IS NULL)
3104                                 ) THEN
3105          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_CONSTRAINTS'
3106                                            , p_attribute_category          => p_constraints_tbl_type(c).attribute_category
3107                                            , p_attribute1                  => p_constraints_tbl_type(c).attribute1
3108                                            , p_attribute2                  => p_constraints_tbl_type(c).attribute2
3109                                            , p_attribute3                  => p_constraints_tbl_type(c).attribute3
3110                                            , p_attribute4                  => p_constraints_tbl_type(c).attribute4
3111                                            , p_attribute5                  => p_constraints_tbl_type(c).attribute5
3112                                            , p_attribute6                  => p_constraints_tbl_type(c).attribute6
3113                                            , p_attribute7                  => p_constraints_tbl_type(c).attribute7
3114                                            , p_attribute8                  => p_constraints_tbl_type(c).attribute8
3115                                            , p_attribute9                  => p_constraints_tbl_type(c).attribute9
3116                                            , p_attribute10                 => p_constraints_tbl_type(c).attribute10
3117                                            , p_attribute11                 => p_constraints_tbl_type(c).attribute11
3118                                            , p_attribute12                 => p_constraints_tbl_type(c).attribute12
3119                                            , p_attribute13                 => p_constraints_tbl_type(c).attribute13
3120                                            , p_attribute14                 => p_constraints_tbl_type(c).attribute14
3121                                            , p_attribute15                 => p_constraints_tbl_type(c).attribute15
3122                                            , x_return_msg                  => l_return_msg
3123                                            , x_return_status               => l_return_status
3124                                             );
3125 
3126                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
3127                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3128                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_CONSTRAINTS Descriptive Fields Error');
3129                   fnd_msg_pub.ADD;
3130                   RAISE fnd_api.g_exc_error;
3131                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3132                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3133                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_CONSTRAINTS Descriptive Fields Error');
3134                   fnd_msg_pub.ADD;
3135                   RAISE fnd_api.g_exc_unexpected_error;
3136                END IF;
3137         END IF;
3138       END IF; -- End of attributes valitions in pn_var_constraints
3139 
3140 
3141 
3142             -- End of constaints Validations
3143             IF p_validate_flag <> 'Y'
3144             THEN
3145                pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Constraints: Calling Insert Constraint Procedure'
3146                                       , 3
3147                                        );
3148 
3149                /*IF (    l_const_val <> 'N'
3150                    AND x_return_status = fnd_api.g_ret_sts_success)
3151                THEN
3152                   pn_varen_util.pvt_debug
3153                                (   'PN_VAREN_PVT: Val_Ins_Constraints: Before Calling insert_constraints procedure : '
3154                                 || l_const_val
3155                               , 3
3156                                );
3157                   pn_varen_util.pvt_debug
3158                      (   'PN_VAREN_PVT: Val_Ins_Constraints: start of insert_constraints procedure and p_constraints_tbl_type (c).constr_type_code : '
3159                       || p_constraints_tbl_type (c).constr_type_code
3160                     , 3
3161                      );*/
3162                   insert_constraints (p_constraints_rec_type        => p_constraints_tbl_type (c)
3163                                     , x_return_status               => x_return_status
3164                                      );
3165                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
3166                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3167                   fnd_message.set_token ('ERR_MSG', 'VAR RENT Contraints : INSERT_CONSTRAINTS Error');
3168                   fnd_msg_pub.ADD;
3169                   RAISE fnd_api.g_exc_error;
3170                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3171                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3172                   fnd_message.set_token ('ERR_MSG', 'VAR RENT Contraints : INSERT_CONSTRAINTS Unexpected Error');
3173                   fnd_msg_pub.ADD;
3174                   RAISE fnd_api.g_exc_unexpected_error;
3175                END IF;
3176             ELSE
3177                pn_varen_util.pvt_debug
3178                   ('PN_VAREN_PVT: Val_Ins_Constraints: Procedure is called only for Validation, Constraints will not be created'
3179                  , 3
3180                   );
3181             END IF;
3182 
3183          ELSE
3184             pn_varen_util.pvt_debug
3185                          ('PN_VAREN_PVT: Val_Ins_Constraints: RENT_NUM not found, please provide the correct rent_num'
3186                         , 3
3187                          );
3188                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3189                   fnd_message.set_token ('ERR_MSG', 'VAR RENT Incorrect Rent Number:Error');
3190                   fnd_msg_pub.ADD;
3191                   RAISE fnd_api.g_exc_error;
3192          END IF;
3193        EXCEPTION
3194           WHEN fnd_api.g_exc_error THEN
3195               pn_varen_util.pvt_debug(g_pkg_name||'-val_ins_constraints:LOOOPING:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
3196               l_val_ins_error_count := l_val_ins_error_count + 1;
3197           WHEN fnd_api.g_exc_unexpected_error THEN
3198              pn_varen_util.pvt_debug(g_pkg_name||'-val_ins_constraints:LOOOPING:EXCEPTION:FND_API.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
3199              l_val_ins_error_count := l_val_ins_error_count + 1;
3200           WHEN OTHERS THEN
3201              pn_varen_util.pvt_debug(g_pkg_name||'-val_ins_constraints:LOOOPING:OTHERS EXCEPTION:'||SQLERRM,3);
3202              l_val_ins_error_count := l_val_ins_error_count + 1;
3203          END;
3204       END LOOP;
3205 
3206       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Val_Ins_Constraints: Value of p_generate_constraints : '
3207                                || p_generate_constraints
3208                              , 3
3209                               );
3210 
3211       IF p_generate_constraints = 'Y'
3212       THEN
3213          pn_varen_util.pvt_debug
3214                              (   'PN_VAREN_PVT: Val_Ins_Constraints: Generate_Constraints procedure - l_var_rent_id : '
3215                               || l_var_rent_id
3216                             , 3
3217                              );
3218          generate_constraints (p_var_rent_id                 => l_var_rent_id
3219                              , p_org_id                      => g_org_id
3220                              , x_return_status               => l_return_status
3221                               );
3222              pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Constraints: Generate Constraints Return Status'||l_return_status
3223                                 , 3
3224                                  );
3225                                         IF (l_return_status = fnd_api.g_ret_sts_error) THEN
3226                                              fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3227                                              fnd_message.set_token('ERR_MSG', 'Error in Generating the Constraints');
3228                                              fnd_msg_pub.ADD;
3229                                              RAISE fnd_api.g_exc_error;
3230                                         ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3231                                             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3232                                              fnd_message.set_token('ERR_MSG', 'Unexpected Error in Generating the Constraints');
3233                                              fnd_msg_pub.ADD;
3234                                              RAISE fnd_api.g_exc_unexpected_error;
3235                                         END IF;
3236       ELSE
3237          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Val_Ins_Constraints: Generate Constraints not initiated'
3238                                 , 3
3239                                  );
3240       END IF;
3241 
3242    IF(l_val_ins_error_count = 0) THEN
3243      x_return_status := fnd_api.g_ret_sts_success;
3244    ELSE
3245      x_return_status := fnd_api.g_ret_sts_error;
3246    END IF;
3247 
3248   EXCEPTION
3249     WHEN fnd_api.g_exc_error THEN
3250        x_return_status      :=      fnd_api.g_ret_sts_error;
3251        pn_varen_util.pvt_debug(g_pkg_name||'-:Exception:fnd_api.g_ret_sts_error:val_ins_constraints'||SQLERRM,3);
3252     WHEN fnd_api.g_exc_unexpected_error THEN
3253           x_return_status      :=      fnd_api.g_ret_sts_unexp_error;
3254           pn_varen_util.pvt_debug(g_pkg_name||'-:Unexpected Exception:fnd_api.g_ret_sts_error:val_ins_constraints'||SQLERRM,3);
3255     WHEN OTHERS THEN
3256          x_return_status      :=      fnd_api.g_ret_sts_unexp_error;
3257         pn_varen_util.pvt_debug(g_pkg_name||'-OTHERS:Exception:val_ins_constraints'||SQLERRM,3);
3258  END val_ins_constraints;
3259 
3260 --------------------------------------------------------------------------------
3261 --  NAME         : VALIDATE_BREAKPOINT_DETAILS
3262 --  DESCRIPTION  : Private procedure to validate Breakpoint Details
3263 --  PURPOSE      :
3264 --  INVOKED FROM :
3265 --  ARGUMENTS    : P_BREAKPOINT_DETAILS_REC_TYPE       IN Parameter
3266 --               : P_VALIDATE_FLAG                     IN Parameter
3267 --               : X_RETURN_STATUS                    OUT Parameter
3268 --  REFERENCE    :
3269 --  HISTORY      :
3270 --
3271 --  20-SEP-2010   vkatta   o Created
3272 --------------------------------------------------------------------------------
3273    PROCEDURE validate_breakpoint_details (
3274       p_breakpoint_details_rec_type IN OUT NOCOPY breakpoint_details_rec_type
3275     , p_validate_flag            IN       VARCHAR2
3276     , x_return_status            OUT NOCOPY VARCHAR2
3277    )
3278    IS
3279       l_bkhd_default_id             pn_var_bkhd_defaults_all.bkhd_default_id%TYPE;
3280       l_bkhd_start_date             pn_var_bkhd_defaults_all.bkhd_start_date%TYPE;
3281       l_bkhd_end_date               pn_var_bkhd_defaults_all.bkhd_end_date%TYPE;
3282       l_natural_break_rate          pn_var_bkhd_defaults_all.natural_break_rate%TYPE;
3283       l_break_type                  pn_var_bkhd_defaults_all.break_type%TYPE;
3284       l_breakpoint_type             pn_var_bkhd_defaults_all.breakpoint_type%TYPE;
3285       l_bkpt_details_val            VARCHAR2 (1) := 'Y';
3286       l_period_id                   NUMBER;
3287       --       := to_number(name_in('BKPTS_HEADER_BLK.period_id'));
3288       l_reporting_periods           NUMBER;
3289       --      := PN_VAR_RENT_PKG.find_reporting_periods(l_periodId);
3290       l_previous_bkdt_start_date    DATE;
3291       l_previous_bkdt_end_date      DATE;
3292    BEGIN
3293 ----------------------------------------------------------------------
3294 --- Fetching of Breakpoint Start Date and Breakpoint End date of the vairable rent
3295 ----------------------------------------------------------------------
3296       BEGIN
3297          SELECT bkhd_default_id
3298               , bkhd_start_date
3299               , bkhd_end_date
3300               , natural_break_rate
3301               , break_type
3302               , breakpoint_type
3303            INTO l_bkhd_default_id
3304               , l_bkhd_start_date
3305               , l_bkhd_end_date
3306               , l_natural_break_rate
3307               , l_break_type
3308               , l_breakpoint_type
3309            FROM pn_var_bkhd_defaults_all
3310           WHERE var_rent_id = p_breakpoint_details_rec_type.var_rent_id
3311             AND bkhd_default_id = p_breakpoint_details_rec_type.bkhd_default_id
3312             AND org_id = g_org_id;                                                                           --l_org_id;
3313 
3314          x_return_status                                                              := fnd_api.g_ret_sts_success;
3315          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Variable Rent : '
3316                                   || p_breakpoint_details_rec_type.var_rent_id
3317                                   || ' Breakpoint Header Start Date is : '
3318                                   || l_bkhd_start_date
3319                                 , 3
3320                                  );
3321          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Variable Rent'
3322                                   || p_breakpoint_details_rec_type.var_rent_id
3323                                   || ' Breakpoint Header End Date is : '
3324                                   || l_bkhd_end_date
3325                                 , 3
3326                                  );
3327       EXCEPTION
3328          WHEN OTHERS
3329          THEN
3330             pn_varen_util.pvt_debug
3331                (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Variable Rent Id doesnot exists in Breakpoint Details: '
3332                 || p_breakpoint_details_rec_type.var_rent_id
3333               , 3
3334                );
3335          fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3336          fnd_message.set_token('ERR_MSG', 'Validate_Breakpoint_Details: Variable Rent Id doesnot exists in Breakpoint Details');
3337          fnd_msg_pub.ADD;
3338          RAISE fnd_api.g_exc_error;
3339       END;
3340   IF( trim(l_break_type) <> 'NATURAL') THEN
3341 ----------------------------------------------------------------------------------------------------
3342 --- Fetching of Period Id based on the Breakpoint details for calculation of group breakpoint volumes
3343 ----------------------------------------------------------------------------------------------------
3344 
3345       BEGIN
3346          SELECT period_id
3347            INTO l_period_id
3348            FROM pn_var_periods_all
3349           WHERE var_rent_id = p_breakpoint_details_rec_type.var_rent_id
3350             AND start_date <= p_breakpoint_details_rec_type.bkdt_start_date
3351             AND end_date >= p_breakpoint_details_rec_type.bkdt_start_date;
3352 
3353          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Variable Rent '
3354                                   || p_breakpoint_details_rec_type.var_rent_id
3355                                   || 'Period Id '
3356                                   || l_period_id
3357                                 , 3
3358                                  );
3359       EXCEPTION
3360          WHEN TOO_MANY_ROWS
3361          THEN
3362             pn_varen_util.pvt_debug
3363                (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Mulitple period_id exists for the same variable rent Id'
3364                 || p_breakpoint_details_rec_type.var_rent_id
3365               , 3
3366                );
3367             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3368             fnd_message.set_token('ERR_MSG', 'Validate_Breakpoint_Details: Mulitple period_id exists for the same variable rent Id');
3369             fnd_msg_pub.ADD;
3370             RAISE fnd_api.g_exc_error;
3371          WHEN OTHERS
3372          THEN
3373             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Variable Rent '
3374                                      || p_breakpoint_details_rec_type.var_rent_id
3375                                      || 'Period Id '
3376                                      || l_period_id
3377                                    , 3
3378                                     );
3379             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3380             fnd_message.set_token('ERR_MSG', 'Validate_Breakpoint_Details: Mulitple period_id exists for the same variable rent Id');
3381             fnd_msg_pub.ADD;
3382             RAISE fnd_api.g_exc_error;
3383       END;
3384 
3385 ----------------------------------------------------------------------
3386 --- Validation of Beakpoint Details start date
3387 ----------------------------------------------------------------------
3388       IF (p_breakpoint_details_rec_type.bkdt_start_date IS NOT NULL)
3389       THEN
3390          pn_varen_util.pvt_debug
3391                         (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date is not null : '
3392                          || p_breakpoint_details_rec_type.bkdt_start_date
3393                        , 3
3394                         );
3395          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date  : '
3396                                   || p_breakpoint_details_rec_type.bkdt_start_date
3397                                 , 3
3398                                  );
3399          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date : '
3400                                   || p_breakpoint_details_rec_type.bkdt_end_date
3401                                 , 3
3402                                  );
3403          pn_varen_util.pvt_debug
3404                           (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Breakpoint Header Start Date From Var Rent: '
3405                            || l_bkhd_start_date
3406                          , 3
3407                           );
3408          pn_varen_util.pvt_debug
3409                             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Breakpoint Header End Date From Var Rent: '
3410                              || l_bkhd_end_date
3411                            , 3
3412                             );
3413 
3414 
3415          IF (    TO_DATE (p_breakpoint_details_rec_type.bkdt_start_date
3416                         , 'DD-MON-RRRR'
3417                          ) >= TO_DATE (l_bkhd_start_date
3418                                      , 'DD-MON-RRRR'
3419                                       )
3420              AND TO_DATE (p_breakpoint_details_rec_type.bkdt_start_date
3421                         , 'DD-MON-RRRR'
3422                          ) <= TO_DATE (l_bkhd_end_date
3423                                      , 'DD-MON-RRRR'
3424                                       )
3425             )
3426          THEN
3427             pn_varen_util.pvt_debug
3428                   (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date Validation Success :'
3429                    || p_breakpoint_details_rec_type.bkdt_start_date
3430                  , 3
3431                   );
3432             pn_varen_util.pvt_debug
3433                    (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date Validation Success :'
3434                     || p_breakpoint_details_rec_type.bkdt_start_date
3435                   , 3
3436                    );
3437          ELSE
3438             pn_varen_util.pvt_debug
3439                     (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date Validation Error : '
3440                      || p_breakpoint_details_rec_type.bkdt_start_date
3441                      || 'Please enter dates for breakpoint details that coincide with the breakpoint dates'
3442                    , 3
3443                     );
3444             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
3445             fnd_message.set_token('ERR_MSG', 'Validate_Breakpoint_Details: Please enter dates for breakpoint details:'
3446                                                ||p_breakpoint_details_rec_type.bkdt_start_date||' that coincide with the breakpoint dates');
3447             fnd_msg_pub.ADD;
3448             RAISE fnd_api.g_exc_error;
3449         END IF;
3450       ELSE
3451          pn_varen_util.pvt_debug
3452             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date is null so value is defaulted Break Point Header Start Date  : '
3453              || p_breakpoint_details_rec_type.bkdt_start_date
3454              || ' Success'
3455            , 3
3456             );
3457       END IF;
3458 
3459 ---------------------------------------------------------------------------------------------
3460 --- Validation of Beakpoint Details End date should be less than Beakpoint Details End date
3461 --------------------------------------------------------------------------------------------
3462       IF (p_breakpoint_details_rec_type.bkdt_start_date > p_breakpoint_details_rec_type.bkdt_end_date)
3463       THEN
3464          pn_varen_util.pvt_debug
3465             ('PN_VAREN_PVT: Validate_Breakpoint_Details: Breakpoint Details start Date is greater than Breakpoint Details End Date'
3466            , 3
3467             );
3468          fnd_message.set_name ('PN'
3469                              , 'PN_VAR_DATES_INTERSECT'
3470                               );
3471          fnd_msg_pub.ADD;
3472          RAISE fnd_api.g_exc_error;
3473          --
3474      END IF;
3475 
3476 ----------------------------------------------------------------------
3477 --- Validation of Beakpoint Details End date
3478 ----------------------------------------------------------------------
3479       IF (p_breakpoint_details_rec_type.bkdt_end_date IS NOT NULL)
3480       THEN
3481          pn_varen_util.pvt_debug
3482                           (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date is not null : '
3483                            || p_breakpoint_details_rec_type.bkdt_end_date
3484                          , 3
3485                           );
3486          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date  : '
3487                                   || p_breakpoint_details_rec_type.bkdt_end_date
3488                                 , 3
3489                                  );
3490 
3491          IF (    TO_DATE (p_breakpoint_details_rec_type.bkdt_end_date
3492                         , 'DD-MON-RRRR'
3493                          ) >= TO_DATE (l_bkhd_start_date
3494                                      , 'DD-MON-RRRR'
3495                                       )
3496              AND TO_DATE (p_breakpoint_details_rec_type.bkdt_end_date
3497                         , 'DD-MON-RRRR'
3498                          ) <= TO_DATE (l_bkhd_end_date
3499                                      , 'DD-MON-RRRR'
3500                                       )
3501              AND TO_DATE (p_breakpoint_details_rec_type.bkdt_end_date
3502                         , 'DD-MON-RRRR'
3503                          ) > TO_DATE (p_breakpoint_details_rec_type.bkdt_start_date
3504                                     , 'DD-MON-RRRR'
3505                                      )
3506             )
3507          THEN
3508             pn_varen_util.pvt_debug
3509                     (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date Validation Success :'
3510                      || p_breakpoint_details_rec_type.bkdt_end_date
3511                    , 3
3512                     );
3513             pn_varen_util.pvt_debug
3514                      (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date Validation Success :'
3515                       || p_breakpoint_details_rec_type.bkdt_end_date
3516                     , 3
3517                      );
3518          ELSE
3519              pn_varen_util.pvt_debug
3520                        (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date Validation Error :'
3521                         || p_breakpoint_details_rec_type.bkdt_end_date
3522                         || 'Please enter dates for breakpoint details that coincide with the breakpoint header dates'
3523                       , 3
3524                        );
3525             fnd_message.set_name ('PN'
3526                                 , 'PN_VAR_DATES_INTERSECT'
3527                                  );
3528             fnd_msg_pub.ADD;
3529             RAISE fnd_api.g_exc_error;
3530 
3531          END IF;
3532       ELSE
3533          pn_varen_util.pvt_debug
3534             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date is null so value is defaulted to  Break Point End Date  : '
3535              || p_breakpoint_details_rec_type.bkdt_end_date
3536              || ' Success'
3537            , 3
3538             );
3539       END IF;
3540 
3541 -------------------------------------------------------------------------------
3542 --Ifthe 'Break type' is 'Artificial' and the 'Break Point type' is 'Stratified'
3543 --then copy the header start and end date into the detail start and end date
3544 -------------------------------------------------------------------------------
3545       IF (    l_break_type = 'ARTIFICIAL'
3546           AND (   l_breakpoint_type = 'STRATIFIED'
3547                OR l_breakpoint_type = 'SLIDING'
3548                OR l_breakpoint_type = 'FLAT')
3549          )
3550       THEN
3551 -----------------------------------------------------------------------------------------
3552 -- Group Breakpoint Volume start should be always less than Group Breakpoint Volume end
3553 -----------------------------------------------------------------------------------------
3554          IF (p_breakpoint_details_rec_type.period_bkpt_vol_start > p_breakpoint_details_rec_type.period_bkpt_vol_end)
3555          THEN
3556             pn_varen_util.pvt_debug
3557                   (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details, Period Breakpoint volume start '
3558                    || p_breakpoint_details_rec_type.period_bkpt_vol_start
3559                    || 'is less than Period Breakpoint volume end '
3560                    || p_breakpoint_details_rec_type.period_bkpt_vol_end
3561                  , 3
3562                   );
3563             fnd_message.set_name ('PN'
3564                                 , 'PN_VAR_WRONG_RANGE'
3565                                  );
3566             fnd_msg_pub.ADD;
3567             RAISE fnd_api.g_exc_error;
3568          END IF;
3569 
3570 -----------------------------------------------------------------------------------------
3571 -- Group Breakpoint Volume start should be always less than Group Breakpoint Volume end
3572 -----------------------------------------------------------------------------------------
3573          IF (p_breakpoint_details_rec_type.group_bkpt_vol_start > p_breakpoint_details_rec_type.group_bkpt_vol_end)
3574          THEN
3575            pn_varen_util.pvt_debug
3576                ('PN_VAREN_PVT: Validate_Breakpoint_Details: In Break Point Details, The range of numbers entered is invalid.'
3577               , 3
3578                );
3579             fnd_message.set_name ('PN'
3580                                 , 'PN_VAR_WRONG_RANGE'
3581                                  );
3582             fnd_msg_pub.ADD;
3583             RAISE fnd_api.g_exc_error;
3584          END IF;
3585 
3586 ----------------------------------------------------------------------------------------------
3587          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: l_period_Id : '
3588                                   || l_period_id
3589                                 , 3
3590                                  );
3591          l_reporting_periods       := pn_var_rent_pkg.find_reporting_periods (l_period_id);--OOPS-RHIA
3592          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Details: l_reporting_periods : '
3593                                   || l_reporting_periods
3594                                 , 3
3595                                  );
3596          --IF l_break_type = 'ARTIFICIAL'
3597          --THEN
3598          IF (    p_breakpoint_details_rec_type.period_bkpt_vol_start IS NOT NULL
3599              AND p_breakpoint_details_rec_type.period_bkpt_vol_start <> pn_varen_util.g_pn_miss_num
3600             )
3601          THEN
3602 
3603             p_breakpoint_details_rec_type.group_bkpt_vol_start                           :=
3604                     ROUND (TO_NUMBER ((  p_breakpoint_details_rec_type.period_bkpt_vol_start
3605                                        / l_reporting_periods))
3606                          , 2
3607                           );
3608          END IF;
3609 
3610          pn_varen_util.pvt_debug
3611                  (   'PN_VAREN_PVT: Validate_Breakpoint_Details: p_breakpoint_details_rec_type.period_bkpt_vol_start :'
3612                   || p_breakpoint_details_rec_type.period_bkpt_vol_start
3613                 , 3
3614                  );
3615 
3616          IF (    p_breakpoint_details_rec_type.period_bkpt_vol_end IS NOT NULL
3617              AND p_breakpoint_details_rec_type.period_bkpt_vol_end <> pn_varen_util.g_pn_miss_num
3618             )
3619          THEN
3620             p_breakpoint_details_rec_type.group_bkpt_vol_end                             :=
3621                       ROUND (TO_NUMBER ((  p_breakpoint_details_rec_type.period_bkpt_vol_end
3622                                          / l_reporting_periods))
3623                            , 2
3624                             );
3625          END IF;
3626 
3627          pn_varen_util.pvt_debug
3628                   (   'PN_VAREN_PVT: Validate_Breakpoint_Details: p_breakpoint_details_rec_type.period_bkpt_vol_end : '
3629                    || p_breakpoint_details_rec_type.period_bkpt_vol_end
3630                  , 3
3631                   );
3632 
3633          IF     (   p_breakpoint_details_rec_type.period_bkpt_vol_start IS NULL
3634                  OR p_breakpoint_details_rec_type.period_bkpt_vol_start = pn_varen_util.g_pn_miss_num
3635                 )
3636             AND (    p_breakpoint_details_rec_type.group_bkpt_vol_start IS NOT NULL
3637                  AND p_breakpoint_details_rec_type.group_bkpt_vol_start <> pn_varen_util.g_pn_miss_num
3638                 )
3639          THEN
3640             p_breakpoint_details_rec_type.period_bkpt_vol_start                          :=
3641                                 ROUND ((  p_breakpoint_details_rec_type.group_bkpt_vol_start
3642                                         * l_reporting_periods)
3643                                      , 2
3644                                       );
3645          END IF;
3646 
3647          --(p_breakpoint_details_rec_type.group_bkpt_vol_start,2);
3648          pn_varen_util.pvt_debug
3649                  (   'PN_VAREN_PVT: Validate_Breakpoint_Details: p_breakpoint_details_rec_type.group_bkpt_vol_start : '
3650                   || p_breakpoint_details_rec_type.group_bkpt_vol_start
3651                 , 3
3652                  );
3653 
3654          IF     (   p_breakpoint_details_rec_type.period_bkpt_vol_end IS NULL
3655                  OR p_breakpoint_details_rec_type.period_bkpt_vol_end = pn_varen_util.g_pn_miss_num
3656                 )
3657             AND (    p_breakpoint_details_rec_type.group_bkpt_vol_end IS NOT NULL
3658                  AND p_breakpoint_details_rec_type.group_bkpt_vol_end <> pn_varen_util.g_pn_miss_num
3659                 )
3660          THEN
3661             p_breakpoint_details_rec_type.period_bkpt_vol_end                            :=
3662                                    ROUND ((  p_breakpoint_details_rec_type.group_bkpt_vol_end
3663                                            * l_reporting_periods)
3664                                         , 2
3665                                          );
3666          END IF;
3667 
3668          pn_varen_util.pvt_debug
3669                    (   'PN_VAREN_PVT: Validate_Breakpoint_Details: p_breakpoint_details_rec_type.group_bkpt_vol_end : '
3670                     || p_breakpoint_details_rec_type.group_bkpt_vol_end
3671                   , 3
3672                    );
3673          pn_varen_util.pvt_debug
3674             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details Start Date would be same as Break Point Header Start Date'
3675              || p_breakpoint_details_rec_type.bkdt_start_date
3676            , 3
3677             );
3678          pn_varen_util.pvt_debug
3679             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details End Date would be same as Break Point Header End Date'
3680              || p_breakpoint_details_rec_type.bkdt_end_date
3681            , 3
3682             );
3683          pn_varen_util.pvt_debug (   ' p_breakpoint_details_rec_type.bkpt_rate : '
3684                                   || p_breakpoint_details_rec_type.bkpt_rate
3685                                 , 3
3686                                  );
3687       ELSIF (    l_break_type = 'NATURAL'
3688              AND l_breakpoint_type = 'FLAT')
3689       THEN
3690 -------------------------------------------------------------------------------------------------------
3691 -- For Break type 'NATURAL', Period Breakpoint volumes and Group Breakpoint Volumes should be NULL.
3692 -------------------------------------------------------------------------------------------------------
3693 
3694          --p_breakpoint_details_rec_type.period_bkpt_vol_start := NULL; -- vkatta
3695          p_breakpoint_details_rec_type.period_bkpt_vol_start                          := 0;
3696                                                                                           -- vkatta
3697          --p_breakpoint_details_rec_type.period_bkpt_vol_end := NULL;   -- vkatta
3698          --p_breakpoint_details_rec_type.group_bkpt_vol_start := NULL;  -- vkatta
3699          p_breakpoint_details_rec_type.group_bkpt_vol_start                           := 0;
3700                                                                                           -- vkatta
3701          --p_breakpoint_details_rec_type.group_bkpt_vol_end := NULL;    -- vkatta
3702 -------------------------------------------------------------------------------------------------------
3703 -- For Break type 'NATURAL',
3704 -- Breakpoint details start date equals to Breakpoint Header start date.
3705 -- Breakpoint details end date.equals to Breakpoint Header end date.
3706 -------------------------------------------------------------------------------------------------------
3707          p_breakpoint_details_rec_type.bkdt_start_date                                := l_bkhd_start_date;
3708          p_breakpoint_details_rec_type.bkdt_end_date                                  := l_bkhd_end_date;
3709 --         p_breakpoint_details_rec_type.annual_basis_amount := 0;
3710          p_breakpoint_details_rec_type.bkpt_rate                                      :=
3711                                                     NVL (p_breakpoint_details_rec_type.bkpt_rate
3712                                                        , l_natural_break_rate
3713                                                         );
3714          --
3715          pn_varen_util.pvt_debug
3716             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Break Point Details break rate would be same as Break Point Header natural break rate'
3717              || p_breakpoint_details_rec_type.bkpt_rate
3718            , 3
3719             );
3720       END IF;
3721 
3722       --
3723       --
3724       --
3725       IF (    l_previous_bkdt_start_date IS NOT NULL
3726           AND l_previous_bkdt_end_date IS NOT NULL)
3727       THEN
3728          pn_varen_util.pvt_debug
3729                       (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Previous Record Breakpoint Details start date :'
3730                        || l_previous_bkdt_start_date
3731                      , 3
3732                       );
3733          pn_varen_util.pvt_debug
3734                          (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Previous Record Breakpoint Details end date :'
3735                           || l_previous_bkdt_end_date
3736                         , 3
3737                          );
3738          pn_varen_util.pvt_debug
3739                         (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Current Record Breakpoint Details start date :'
3740                          || p_breakpoint_details_rec_type.bkdt_start_date
3741                        , 3
3742                         );
3743          pn_varen_util.pvt_debug
3744                           (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Current Record Breakpoint Details end date :'
3745                            || p_breakpoint_details_rec_type.bkdt_end_date
3746                          , 3
3747                           );
3748 
3749 ------------------------------------------------------------------------------------------------------
3750 -- Next record Breakpoint Details start date is greater than previous record Breakpoint Details end date
3751 ------------------------------------------------------------------------------------------------------
3752          IF (    p_breakpoint_details_rec_type.bkdt_start_date > l_previous_bkdt_end_date
3753              AND p_breakpoint_details_rec_type.bkdt_start_date > l_previous_bkdt_start_date
3754             )
3755          THEN
3756             pn_varen_util.pvt_debug
3757                ('PN_VAREN_PVT: Validate_Breakpoint_Details: Next record Breakpoint Details  start date is greater than previous record Breakpoint Details end date'
3758               , 3
3759                );
3760             pn_varen_util.pvt_debug
3761                ('PN_VAREN_PVT: Validate_Breakpoint_Details: Next record Breakpoint Details  start date is greater than previous record Breakpoint Details start date'
3762               , 3
3763                );
3764          ELSE
3765             pn_varen_util.pvt_debug
3766                ('PN_VAREN_PVT: Validate_Breakpoint_Details: Next record Breakpoint Details start date is less than previous record Breakpoint Details start date'
3767               , 3
3768                );
3769             fnd_message.set_name ('PN'
3770                                 , 'PN_VAR_BKPT_OVERLAP'
3771                                  );
3772             fnd_msg_pub.ADD;
3773             RAISE fnd_api.g_exc_error;
3774          END IF;
3775 
3776 -----------------------------------------------------------------------------------------------------
3777 -- Next record Breakpoint Details end date is greater than previous record Breakpoint Details end date
3778 ------------------------------------------------------------------------------------------------------
3779          IF (    p_breakpoint_details_rec_type.bkdt_end_date > l_previous_bkdt_end_date
3780              AND p_breakpoint_details_rec_type.bkdt_end_date > l_previous_bkdt_start_date
3781             )
3782          THEN
3783             pn_varen_util.pvt_debug
3784                ('PN_VAREN_PVT: Validate_Breakpoint_Details: Next record Breakpoint Details end date is greater than previous record Breakpoint Details end date'
3785               , 3
3786                );
3787          ELSE
3788             pn_varen_util.pvt_debug
3789                ('PN_VAREN_PVT: Validate_Breakpoint_Details: Next record Breakpoint Details end date is not greater than previous record Breakpoint Details end date'
3790               , 3
3791                );
3792             fnd_message.set_name ('PN'
3793                                 , 'PN_VAR_BKPT_OVERLAP'
3794                                  );
3795             fnd_msg_pub.ADD;
3796             RAISE fnd_api.g_exc_error;
3797          END IF;
3798       END IF;
3799 
3800       IF p_validate_flag <> 'Y'
3801       THEN
3802          --IF l_bkpt_details_val <> 'N'
3803          --THEN
3804             pn_varen_util.pvt_debug
3805                    ('PN_VAREN_PVT: Validate_Breakpoint_Details: Start of calling Breakpoint Details Insert Procedure '
3806                   , 3
3807                    );
3808             pn_varen_util.pvt_debug
3809                             ('PN_VAREN_PVT: Validate_Breakpoint_Details: ---------------------------------------------'
3810                            , 3
3811                             );
3812             insert_breakpoint_details (p_breakpoint_details_rec_type => p_breakpoint_details_rec_type
3813                                      , x_return_status               => x_return_status
3814                                       );
3815                pn_varen_util.pvt_debug
3816                       ('PN_VAREN_PVT: Validate_Breakpoint_Details: End of calling Breakpoint Details Insert Procedure Return Status'||x_return_status
3817                      , 3
3818                       );
3819                 IF(x_return_status = fnd_api.g_ret_sts_error) THEN
3820                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3821                   fnd_message.set_token ('ERR_MSG', 'Var Rent : validate_breakpoint_details: Break Point Details not inserted properly');
3822                   fnd_msg_pub.ADD;
3823                   RAISE fnd_api.g_exc_error;
3824                 ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3825                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3826                   fnd_message.set_token ('ERR_MSG', 'Var Rent : validate_breakpoint_details: Break Point Details not inserted properly:Unexpected Exception');
3827                   fnd_msg_pub.ADD;
3828                   RAISE fnd_api.g_exc_unexpected_error;
3829                 END IF;
3830 
3831             -- Capturing previous breakpoint details start date and breakpoint details end date.
3832             l_previous_bkdt_start_date                                                   :=
3833                                                                            p_breakpoint_details_rec_type.bkdt_start_date;
3834             l_previous_bkdt_end_date                                                     :=
3835                                                                              p_breakpoint_details_rec_type.bkdt_end_date;
3836          --
3837         -- END IF;
3838       ELSE
3839          pn_varen_util.pvt_debug
3840             ('PN_VAREN_PVT: Validate_Breakpoint_Details: Breakpoints creation procedure ran in validation mode, breakpoints will not be created '
3841            , 3
3842             );
3843       END IF;
3844        x_return_status := fnd_api.g_ret_sts_success;
3845    ELSE
3846          p_breakpoint_details_rec_type.bkdt_start_date            := l_bkhd_start_date;
3847          p_breakpoint_details_rec_type.bkdt_end_date              := l_bkhd_end_date;
3848          p_breakpoint_details_rec_type.period_bkpt_vol_start     := 0;
3849          p_breakpoint_details_rec_type.period_bkpt_vol_end       := 0;
3850          p_breakpoint_details_rec_type.group_bkpt_vol_start      := 0;
3851          p_breakpoint_details_rec_type.group_bkpt_vol_end       := 0;
3852          p_breakpoint_details_rec_type.bkpt_rate := l_natural_break_rate;
3853             insert_breakpoint_details (p_breakpoint_details_rec_type => p_breakpoint_details_rec_type
3854                                      , x_return_status               => x_return_status
3855                                       );
3856                              commit;
3857             pn_varen_util.pvt_debug
3858                       ('PN_VAREN_PVT: Validate_Breakpoint_Details Natural: End of calling Breakpoint Details Insert Procedure Return Status'||x_return_status
3859                      , 3
3860                       );
3861                 IF(x_return_status = fnd_api.g_ret_sts_error) THEN
3862                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3863                   fnd_message.set_token ('ERR_MSG', 'Var Rent : validate_breakpoint_details: Natural::Break Point Details not inserted properly');
3864                   fnd_msg_pub.ADD;
3865                   RAISE fnd_api.g_exc_error;
3866                 ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3867                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
3868                   fnd_message.set_token ('ERR_MSG', 'Var Rent : validate_breakpoint_details:Natural:: Break Point Details not inserted properly:Unexpected Exception');
3869                   fnd_msg_pub.ADD;
3870                   RAISE fnd_api.g_exc_unexpected_error;
3871                 END IF;
3872            x_return_status := fnd_api.g_ret_sts_success;
3873    END IF;--Artificial/Natural
3874    EXCEPTION
3875          WHEN fnd_api.g_exc_error THEN
3876             pn_varen_util.pvt_debug(g_pkg_name||'-validate_breakpoint_details:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
3877             x_return_status := fnd_api.g_ret_sts_error;
3878          WHEN OTHERS THEN
3879             pn_varen_util.pvt_debug
3880             (   'PN_VAREN_PVT: Validate_Breakpoint_Details: Exception raised in Validate_Breakpoint_Details Procedure : '
3881              || SQLERRM
3882            , 3
3883             );
3884            x_return_status      :=      fnd_api.g_ret_sts_unexp_error;
3885   END validate_breakpoint_details;
3886 
3887 --------------------------------------------------------------------------------
3888 --  NAME         : VALIDATE_BREAKPOINT_HEADER
3889 --  DESCRIPTION  : Private procedure to validate Breakpoint Header
3890 --  PURPOSE      :
3891 --  INVOKED FROM :
3892 --  ARGUMENTS    : P_BREAKPOINT_HEADER_REC_TYPE       IN Parameter
3893 --               : X_RETURN_STATUS                    OUT Parameter
3894 --  REFERENCE    :
3895 --  HISTORY      :
3896 --
3897 --  20-SEP-2010   vkatta   o Created
3898 --------------------------------------------------------------------------------
3899    PROCEDURE validate_breakpoint_header (
3900       p_breakpoint_header_rec_type IN OUT NOCOPY breakpoint_header_rec_type
3901     , x_return_status            OUT NOCOPY VARCHAR2
3902    )
3903    IS
3904       l_return_status               VARCHAR2 (1);
3905       l_bkhd_comm_date              DATE;
3906       l_bkhd_term_date              DATE;
3907       l_bkhd_var_rent_id            NUMBER;
3908       l_bkhd_start_date             DATE := TO_DATE ('01-01-1000'
3909                                                    , 'DD-MM-YYYY'
3910                                                     );
3911       e_bkhd_start_date             EXCEPTION;
3912       e_bkhd_end_date               EXCEPTION;
3913       l_validate_success            VARCHAR2 (1) := 'Y';
3914       l_return_msg                  VARCHAR2 (10);
3915       l_previous_bkhd_start_date    DATE;
3916       l_previous_bkhd_end_date      DATE;
3917    BEGIN
3918       l_bkhd_var_rent_id     := p_breakpoint_header_rec_type.var_rent_id;
3919 --------------------------------------------------------------------------------
3920 --BREAK_TYPE validation
3921 --------------------------------------------------------------------------------
3922     x_return_status := fnd_api.g_ret_sts_success;
3923       pn_varen_util.pvt_debug ('PN_VAREN_PVT: pn_varen_pvt-Calling BREAK_TYPE Validation'
3924                              , 3
3925                               );
3926 
3927       IF (   p_breakpoint_header_rec_type.break_type_code IS NOT NULL
3928           OR p_breakpoint_header_rec_type.break_type_meaning IS NOT NULL
3929          )
3930       THEN
3931          pn_varen_util.pvt_debug
3932                   ('PN_VAREN_PVT: Validate_Breakpoint_Header: Calling BREAK_TYPE  Validation Lookup - Inside the Loop'
3933                  , 3
3934                   );
3935          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Breakpoint_Header: Calling BREAK_TYPE Validation'
3936                                 , 3
3937                                  );
3938          pn_varen_util.validate_lookups (p_lookup_type                 => g_break_type
3939                                        , x_lookup_meaning              => p_breakpoint_header_rec_type.break_type_meaning
3940                                        , x_lookup_code                 => p_breakpoint_header_rec_type.break_type_code
3941                                        , x_return_status               => l_return_status
3942                                         );
3943          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK_TYPE Output Code :'
3944                                   || p_breakpoint_header_rec_type.break_type_code
3945                                 , 3
3946                                  );
3947 
3948          IF (l_return_status = fnd_api.g_ret_sts_error)
3949          THEN
3950             fnd_message.set_name ('PN'
3951                                 , 'PN_VAR_BKHD_BRK_TY'
3952                                  );
3953             fnd_msg_pub.ADD;
3954             RAISE fnd_api.g_exc_error;
3955          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
3956             fnd_message.set_name ('PN','PN_VAR_BKHD_BRK_TY');
3957             fnd_msg_pub.ADD;
3958             RAISE fnd_api.g_exc_unexpected_error;
3959          END IF;
3960       ELSE
3961         fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
3962         fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
3963         fnd_message.set_token ('NULL_PARAM', 'Break Type:NULL');
3964         fnd_msg_pub.ADD;
3965         RAISE fnd_api.g_exc_error;
3966       END IF;
3967 
3968 ----------------------------------------------------------------------
3969 --- Fetching of commencement and termination date of the vairable rent
3970 ----------------------------------------------------------------------
3971       BEGIN
3972          SELECT commencement_date
3973               , termination_date
3974            INTO l_bkhd_comm_date
3975               , l_bkhd_term_date
3976            FROM pn_var_rents_all
3977           WHERE var_rent_id = p_breakpoint_header_rec_type.var_rent_id
3978             AND org_id      = g_org_id;
3979 
3980 
3981          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Variable Rent : '
3982                                   || p_breakpoint_header_rec_type.var_rent_id
3983                                   || ' Commencement Date is : '
3984                                   || l_bkhd_comm_date
3985                                 , 3
3986                                  );
3987          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Variable Rent'
3988                                   || p_breakpoint_header_rec_type.var_rent_id
3989                                   || ' Termination Date is : '
3990                                   || l_bkhd_term_date
3991                                 , 3
3992                                  );
3993       EXCEPTION
3994          WHEN OTHERS THEN
3995             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Variable Rent Id doesnot exists : '
3996                                      || p_breakpoint_header_rec_type.var_rent_id
3997                                    , 3
3998                                     );
3999            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
4000            fnd_message.set_token('ERR_MSG', 'Variable Rent ID doesnt exist');
4001            fnd_msg_pub.ADD;
4002             RAISE fnd_api.g_exc_error;
4003             --x_return_status    := fnd_api.g_ret_sts_error;
4004            -- l_validate_success:= 'N';
4005       END;
4006 
4007 ----------------------------------------------------------------------
4008 --- Validation of Beakpoint header start date
4009 ----------------------------------------------------------------------
4010       IF (p_breakpoint_header_rec_type.bkhd_start_date IS NOT NULL)
4011       THEN
4012          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE is not null : '
4013                                   || p_breakpoint_header_rec_type.bkhd_start_date
4014                                 , 3
4015                                  );
4016          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE  : '
4017                                   || p_breakpoint_header_rec_type.bkhd_start_date
4018                                 , 3
4019                                  );
4020          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT End Date : '
4021                                   || p_breakpoint_header_rec_type.bkhd_end_date
4022                                 , 3
4023                                  );
4024          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: START DATE FROM Var Rent: '
4025                                   || l_bkhd_comm_date
4026                                 , 3
4027                                  );
4028          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: END DATE FROM Var Rent: '
4029                                   || l_bkhd_term_date
4030                                 , 3
4031                                  );
4032 
4033          IF (    p_breakpoint_header_rec_type.bkhd_start_date >= l_bkhd_comm_date
4034              AND p_breakpoint_header_rec_type.bkhd_start_date <= l_bkhd_term_date
4035             )
4036          THEN
4037              /*
4038              -------------------------
4039              --- second record verification
4040              -------------------------
4041 
4042               IF p_breakpoint_header_tbl( i ).bkhd_start_date >  l_old_end_date or
4043              p_breakpoint_header_tbl( i ).bkhd_start_date <=   l_old_end_date
4044 
4045             x_return_status            := fnd_api.g_ret_sts_success;
4046                  pn_varen_util.pvt_debug(    'pn_varen_pvt-BREAK POINT START DATE Code Success :'
4047                             || p_breakpoint_header_tbl( i ).break_type_code
4048                           , 3 );
4049                  pn_varen_util.pvt_debug
4050                         'pn_varen_pvt- BREAK POINT START DATE Validation Success', 3 );
4051             else
4052 
4053             x_return_status            := fnd_api.g_ret_sts_error;
4054                  pn_varen_util.pvt_debug(    'pn_varen_pvt-BREAK POINT START DATE Error ie., Start date overlap :'
4055                             || p_breakpoint_header_tbl( i ).break_type_code
4056                           , 3 );
4057                  pn_varen_util.pvt_debug
4058                         'pn_varen_pvt- BREAK POINT START DATE error i.e, Start date overlap', 3 );
4059 
4060             end if;
4061             -------------------------
4062             -- end of second record verification
4063             -------------------------
4064             */
4065 
4066             pn_varen_util.pvt_debug
4067                            (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Validation Success :'
4068                             || p_breakpoint_header_rec_type.bkhd_start_date
4069                           , 3
4070                            );
4071             pn_varen_util.pvt_debug
4072                             (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Validation Success :'
4073                              || p_breakpoint_header_rec_type.bkhd_start_date
4074                            , 3
4075                             );
4076          ELSE
4077             fnd_message.set_name ('PN'
4078                                 , 'PN_VAR_DATES_INTERSECT'
4079                                  );
4080             fnd_msg_pub.ADD;
4081             RAISE fnd_api.g_exc_error;
4082             pn_varen_util.pvt_debug
4083                               (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Validation ERROR :'
4084                                || p_breakpoint_header_rec_type.bkhd_start_date
4085                                || 'Please enter dates for breakpoint details that coincide with the breakpoint dates'
4086                              , 3
4087                               );
4088             pn_varen_util.pvt_debug
4089                              (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Validation ERROR : '
4090                               || p_breakpoint_header_rec_type.bkhd_start_date
4091                               || 'Please enter dates for breakpoint details that coincide with the breakpoint dates'
4092                             , 3
4093                              );
4094             --l_validate_success                                                           := 'N';
4095          END IF;
4096       ELSE
4097          p_breakpoint_header_rec_type.bkhd_start_date                                 := l_bkhd_comm_date;
4098          pn_varen_util.pvt_debug
4099             (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Code Success : Defaulted variable rent Commencement date'
4100              || p_breakpoint_header_rec_type.bkhd_start_date
4101            , 3
4102             );
4103          pn_varen_util.pvt_debug
4104             (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Success : Defaulted variable rent Commencement date :'
4105              || p_breakpoint_header_rec_type.bkhd_start_date
4106            , 3
4107             );
4108       END IF;
4109 
4110       --
4111       --  Next record Breakpoint Header Start date should be always greater than previous record Breakpoint Header End Date
4112       --
4113 
4114       ------------------------------------------------------------------------------------------
4115 --- Validation of  Beakpoint header Start date is greater than Beakpoint Header End date
4116 -----------------------------------------------------------------------------------------
4117       IF (p_breakpoint_header_rec_type.bkhd_start_date > p_breakpoint_header_rec_type.bkhd_end_date)
4118       THEN
4119         pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Break Point Header Start Date '
4120                                   || p_breakpoint_header_rec_type.bkhd_start_date
4121                                   || 'is greater than '
4122                                   || p_breakpoint_header_rec_type.bkhd_end_date
4123                                 , 3
4124                                  );
4125          fnd_message.set_name ('PN'
4126                              , 'PN_VAR_DATES_INTERSECT'
4127                               );
4128          fnd_msg_pub.ADD;
4129          RAISE fnd_api.g_exc_error;
4130 
4131       END IF;
4132 
4133 ----------------------------------------------------------------------
4134 --- Validation of Beakpoint header End date
4135 ----------------------------------------------------------------------
4136       IF (p_breakpoint_header_rec_type.bkhd_end_date IS NOT NULL)
4137       THEN
4138          IF (   p_breakpoint_header_rec_type.bkhd_end_date <= l_bkhd_term_date
4139              OR p_breakpoint_header_rec_type.bkhd_end_date > p_breakpoint_header_rec_type.bkhd_start_date
4140             )
4141          THEN
4142 
4143             pn_varen_util.pvt_debug
4144                              (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT End DATE Validation Success :'
4145                               || p_breakpoint_header_rec_type.bkhd_end_date
4146                             , 3
4147                              );
4148          ELSE
4149            pn_varen_util.pvt_debug
4150                                 (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT End DATE Validation ERROR :'
4151                                  || p_breakpoint_header_rec_type.bkhd_end_date
4152                                  || 'Please enter dates for breakpoint details that coincide with the breakpoint dates'
4153                                , 3
4154                                 );
4155             fnd_message.set_name ('PN'
4156                                 , 'PN_VAR_DATES_INTERSECT'
4157                                  );
4158             fnd_msg_pub.ADD;
4159             RAISE fnd_api.g_exc_error;
4160          END IF;
4161       ELSE
4162          p_breakpoint_header_rec_type.bkhd_end_date    := l_bkhd_term_date;
4163          pn_varen_util.pvt_debug
4164             ('PN_VAREN_PVT: Validate_Breakpoint_Header: BREAK POINT START DATE Code Success : Defaulted variable rent Termination date'
4165              || p_breakpoint_header_rec_type.bkhd_end_date,3);
4166       END IF;
4167 
4168 ------------------------------------
4169 --  Breakpoint Type Validation
4170 ------------------------------------
4171       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Breakpoint_Header: Calling BREAKPOINT_TYPE Validation'
4172                              , 3
4173                               );
4174 
4175       IF (   p_breakpoint_header_rec_type.breakpoint_type_code IS NOT NULL
4176           OR p_breakpoint_header_rec_type.breakpoint_type_meaning IS NOT NULL
4177          )
4178       THEN
4179          pn_varen_util.pvt_debug
4180              ('PN_VAREN_PVT: Validate_Breakpoint_Header: Calling BREAKPOINT_TYPE  Validation Lookup - Inside the Loop'
4181             , 3
4182              );
4183          pn_varen_util.validate_lookups (p_lookup_type                 => g_breakpoint_type
4184                                        , x_lookup_meaning              => p_breakpoint_header_rec_type.breakpoint_type_meaning
4185                                        , x_lookup_code                 => p_breakpoint_header_rec_type.breakpoint_type_code
4186                                        , x_return_status               => l_return_status
4187                                         );
4188          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: BREAKPOINT_TYPE Output Code :'
4189                                   || p_breakpoint_header_rec_type.breakpoint_type_code||'-'||l_return_status
4190                                 , 3
4191                                  );
4192 
4193          IF (l_return_status = fnd_api.g_ret_sts_error) THEN
4194             fnd_message.set_name ('PN','PN_VAR_BKHD_BKPT_TY');
4195             fnd_msg_pub.ADD;
4196             RAISE fnd_api.g_exc_error;
4197          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
4198             fnd_message.set_name ('PN','PN_VAR_BKHD_BKPT_TY');
4199             fnd_msg_pub.ADD;
4200             RAISE fnd_api.g_exc_unexpected_error;
4201          END IF;
4202       ELSE
4203         fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
4204         fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
4205         fnd_message.set_token ('NULL_PARAM', 'Break Point Type:NULL');
4206         fnd_msg_pub.ADD;
4207         RAISE fnd_api.g_exc_error;
4208       END IF;
4209 
4210 ----------------------------------
4211 -- NATURAL_BREAK_RATE is not null
4212 ------------------------------------
4213 
4214       IF (p_breakpoint_header_rec_type.break_type_code IS NOT NULL OR p_breakpoint_header_rec_type.break_type_code <> pn_varen_util.g_pn_miss_char) THEN
4215          IF (p_breakpoint_header_rec_type.break_type_code = 'NATURAL') THEN
4216            IF (p_breakpoint_header_rec_type.natural_break_rate IS NULL OR p_breakpoint_header_rec_type.natural_break_rate = pn_varen_util.g_pn_miss_num) THEN
4217               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
4218               fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
4219               fnd_message.set_token ('NULL_PARAM', 'Natural Rate: NULL');
4220               fnd_msg_pub.ADD;
4221               RAISE fnd_api.g_exc_error;
4222            END IF;
4223           ELSIF(p_breakpoint_header_rec_type.break_type_code = 'ARTIFICIAL') THEN
4224              p_breakpoint_header_rec_type.natural_break_rate := NULL;
4225           END IF;
4226       ELSE
4227         fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
4228         fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
4229         fnd_message.set_token ('NULL_PARAM', 'Break Type:NULL');
4230         fnd_msg_pub.ADD;
4231         RAISE fnd_api.g_exc_error;
4232       END IF;
4233 
4234 /*
4235       IF p_breakpoint_header_rec_type.natural_break_rate IS NOT NULL
4236       THEN
4237          x_return_status                                                              := fnd_api.g_ret_sts_success;
4238          pn_varen_util.pvt_debug
4239                              (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Natural Break Rate is not null - Success '
4240                               || p_breakpoint_header_rec_type.natural_break_rate
4241                             , 3
4242                              );
4243          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Break Rate is not null - Success : '
4244                                   || p_breakpoint_header_rec_type.natural_break_rate
4245                                 , 3
4246                                  );
4247       ELSE
4248          IF (   p_breakpoint_header_rec_type.breakpoint_type_code = 'NATURAL'
4249              OR p_breakpoint_header_rec_type.breakpoint_type_meaning = 'Natural'
4250             )
4251          THEN
4252             --
4253             fnd_message.set_name ('PN'
4254                                 , 'PN_VAR_BKHD_BRK_RT'
4255                                  );
4256             fnd_msg_pub.ADD;
4257             RAISE fnd_api.g_exc_error;
4258             --
4259             x_return_status                                                              := fnd_api.g_ret_sts_error;
4260             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Natural Break Rate is null - Error '
4261                                      || p_breakpoint_header_rec_type.natural_break_rate
4262                                    , 3
4263                                     );
4264             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Break Rate is null - Error : '
4265                                      || p_breakpoint_header_rec_type.natural_break_rate
4266                                    , 3
4267                                     );
4268             l_validate_success                                                           := 'N';
4269          END IF;
4270       END IF;
4271 */
4272  -----------------------------------------------------------------------
4273 --Conditional Validation of  Beakpoint Type  with Break type Procedure
4274 ------------------------------------------------------------------------
4275       IF p_breakpoint_header_rec_type.break_type_code = 'NATURAL'
4276       THEN
4277          IF p_breakpoint_header_rec_type.breakpoint_type_code <> 'FLAT'
4278          THEN
4279             pn_varen_util.pvt_debug
4280                (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Provide a correct combination of BREAKPOINT_TYPE_code and Break Type code - Validation Error :'
4281                 || p_breakpoint_header_rec_type.breakpoint_type_code
4282               , 3
4283                );
4284             fnd_message.set_name ('PN'
4285                                 , 'PN_VAR_BKHD_BT_BKPT_TY'
4286                                  );
4287             fnd_msg_pub.ADD;
4288             RAISE fnd_api.g_exc_error;
4289          END IF;
4290      END IF;
4291 
4292 
4293      IF (    l_previous_bkhd_start_date IS NOT NULL
4294           AND l_previous_bkhd_end_date IS NOT NULL)
4295       THEN
4296          pn_varen_util.pvt_debug
4297                         (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Previous Record Breakpoint Header start date :'
4298                          || l_previous_bkhd_start_date
4299                        , 3
4300                         );
4301          pn_varen_util.pvt_debug
4302                            (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Previous Record Breakpoint Header end date :'
4303                             || l_previous_bkhd_end_date
4304                           , 3
4305                            );
4306          pn_varen_util.pvt_debug
4307                           (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Current Record Breakpoint Header start date :'
4308                            || p_breakpoint_header_rec_type.bkhd_start_date
4309                          , 3
4310                           );
4311          pn_varen_util.pvt_debug
4312                             (   'PN_VAREN_PVT: Validate_Breakpoint_Header: Current Record Breakpoint Header end date :'
4313                              || p_breakpoint_header_rec_type.bkhd_end_date
4314                            , 3
4315                             );
4316 
4317 ------------------------------------------------------------------------------------------------------
4318 -- Next record Breakpoint Header start date is greater than previous record Breakpoint Header end date
4319 ------------------------------------------------------------------------------------------------------
4320          IF (    p_breakpoint_header_rec_type.bkhd_start_date > l_previous_bkhd_end_date
4321              AND p_breakpoint_header_rec_type.bkhd_start_date > l_previous_bkhd_start_date
4322             )
4323          THEN
4324             pn_varen_util.pvt_debug
4325                ('PN_VAREN_PVT: Validate_Breakpoint_Header: Next record Breakpoint Header  start date is greater than previous record Breakpoint Header end date'
4326               , 3
4327                );
4328          ELSE
4329            pn_varen_util.pvt_debug
4330                ('PN_VAREN_PVT: Validate_Breakpoint_Header: Next record Breakpoint Header  start date is less than previous record Breakpoint Header end date'
4331               , 3
4332                );
4333             fnd_message.set_name ('PN'
4334                                 , 'PN_VAR_BKPT_OVERLAP'
4335                                  );
4336             fnd_msg_pub.ADD;
4337             RAISE fnd_api.g_exc_error;
4338          END IF;
4339 
4340 -----------------------------------------------------------------------------------------------------
4341 -- Next record Breakpoint Header end date is greater than previous record Breakpoint Header end date
4342 ------------------------------------------------------------------------------------------------------
4343          IF (    p_breakpoint_header_rec_type.bkhd_end_date > l_previous_bkhd_end_date
4344              AND p_breakpoint_header_rec_type.bkhd_end_date > l_previous_bkhd_start_date
4345             )
4346          THEN
4347             pn_varen_util.pvt_debug
4348                ('PN_VAREN_PVT: Validate_Breakpoint_Header: Next record Breakpoint Header end date is greater than previous record Breakpoint Header end date'
4349               , 3
4350                );
4351          ELSE
4352            pn_varen_util.pvt_debug
4353                ('PN_VAREN_PVT: Validate_Breakpoint_Header: Next record Breakpoint Header end date is not greater than previous record Breakpoint Header end date'
4354               , 3
4355                );
4356             fnd_message.set_name ('PN'
4357                                 , 'PN_VAR_BKPT_OVERLAP'
4358                                  );
4359             fnd_msg_pub.ADD;
4360             RAISE fnd_api.g_exc_error;
4361          END IF;
4362       END IF; --l_previous_bkhd_start_date --l_previous_bkhd_end_date
4363 
4364       --------------------------------------------------------------------------------
4365 --Variable Rent Attributes Validation
4366 --------------------------------------------------------------------------------
4367     IF (get_attribute_status('PN_VAR_BKPTS_HEAD') > 0) THEN
4368       IF NOT ((p_breakpoint_header_rec_type.attribute_category = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute_category IS NULL)
4369                                         AND (p_breakpoint_header_rec_type.attribute1 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute1 IS NULL)
4370                                         AND (p_breakpoint_header_rec_type.attribute2 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute2 IS NULL)
4371                                         AND (p_breakpoint_header_rec_type.attribute3 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute3 IS NULL)
4372                                         AND (p_breakpoint_header_rec_type.attribute4 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute4 IS NULL)
4373                                         AND (p_breakpoint_header_rec_type.attribute5 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute5 IS NULL)
4374                                         AND (p_breakpoint_header_rec_type.attribute6 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute6 IS NULL)
4375                                         AND (p_breakpoint_header_rec_type.attribute7 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute7 IS NULL)
4376                                         AND (p_breakpoint_header_rec_type.attribute8 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute8 IS NULL)
4377                                         AND (p_breakpoint_header_rec_type.attribute9 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute9 IS NULL)
4378                                         AND (p_breakpoint_header_rec_type.attribute10 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute10 IS NULL)
4379                                         AND (p_breakpoint_header_rec_type.attribute11 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute11 IS NULL)
4380                                         AND (p_breakpoint_header_rec_type.attribute12 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute12 IS NULL)
4381                                         AND (p_breakpoint_header_rec_type.attribute13 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute13 IS NULL)
4382                                         AND (p_breakpoint_header_rec_type.attribute14 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute14 IS NULL)
4383                                         AND (p_breakpoint_header_rec_type.attribute15 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_rec_type.attribute15 IS NULL)
4384                                 ) THEN
4385          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_BKPTS_HEAD'
4386                                            , p_attribute_category          => p_breakpoint_header_rec_type.attribute_category
4387                                            , p_attribute1                  => p_breakpoint_header_rec_type.attribute1
4388                                            , p_attribute2                  => p_breakpoint_header_rec_type.attribute2
4389                                            , p_attribute3                  => p_breakpoint_header_rec_type.attribute3
4390                                            , p_attribute4                  => p_breakpoint_header_rec_type.attribute4
4391                                            , p_attribute5                  => p_breakpoint_header_rec_type.attribute5
4392                                            , p_attribute6                  => p_breakpoint_header_rec_type.attribute6
4393                                            , p_attribute7                  => p_breakpoint_header_rec_type.attribute7
4394                                            , p_attribute8                  => p_breakpoint_header_rec_type.attribute8
4395                                            , p_attribute9                  => p_breakpoint_header_rec_type.attribute9
4396                                            , p_attribute10                 => p_breakpoint_header_rec_type.attribute10
4397                                            , p_attribute11                 => p_breakpoint_header_rec_type.attribute11
4398                                            , p_attribute12                 => p_breakpoint_header_rec_type.attribute12
4399                                            , p_attribute13                 => p_breakpoint_header_rec_type.attribute13
4400                                            , p_attribute14                 => p_breakpoint_header_rec_type.attribute14
4401                                            , p_attribute15                 => p_breakpoint_header_rec_type.attribute15
4402                                            , x_return_msg                  => l_return_msg
4403                                            , x_return_status               => l_return_status
4404                                             );
4405 
4406                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
4407                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
4408                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_BKPTS_HEAD Descriptive Fields Error '||l_return_msg);
4409                   fnd_msg_pub.ADD;
4410                   RAISE fnd_api.g_exc_error;
4411                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
4412                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
4413                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_BKPTS_HEAD Descriptive Fields Error '||l_return_msg);
4414                   fnd_msg_pub.ADD;
4415                   RAISE fnd_api.g_exc_unexpected_error;
4416                END IF;
4417         END IF;
4418       END IF; -- End of attributes validations in PN_VAR_BKPTS_HEAD
4419 
4420       -- Breakpoints validation ends
4421 ----------------------------------------------------
4422 --Calling Breakpoint Headers Insert Procedure
4423 ----------------------------------------------------
4424 
4425       /*IF (    l_return_status = fnd_api.g_ret_sts_success
4426           AND l_validate_success <> 'N')
4427       THEN
4428          pn_varen_util.pvt_debug
4429                              ('PN_VAREN_PVT: Validate_Breakpoint_Header: Calling Breakpoint Headers Insert Procedure '
4430                             , 3
4431                              );
4432          pn_varen_util.pvt_debug
4433                              ('PN_VAREN_PVT: Validate_Breakpoint_Header: ---------------------------------------------'
4434                             , 3
4435                              );*/
4436 
4437          insert_breakpoint_headers (p_breakpoint_header_rec_type  => p_breakpoint_header_rec_type
4438                                   , x_return_status               => l_return_status
4439                                    );
4440            pn_varen_util.pvt_debug('PN_VAREN_PVT: Validate_Breakpoint_Header: End of Calling Breakpoint Headers Insert Procedure :'|| l_return_status, 3);
4441 
4442                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
4443                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
4444                   fnd_message.set_token ('ERR_MSG', 'INSERT_BREAKPOINT_HEADERS:Error');
4445                   fnd_msg_pub.ADD;
4446                   RAISE fnd_api.g_exc_error;
4447                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
4448                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
4449                   fnd_message.set_token ('ERR_MSG', 'INSERT_BREAKPOINT_HEADERS:Unexpected Error');
4450                   fnd_msg_pub.ADD;
4451                   RAISE fnd_api.g_exc_unexpected_error;
4452                END IF;
4453 
4454          -- capturing the previous breakpoint header start date into a variable.
4455          l_previous_bkhd_start_date   := p_breakpoint_header_rec_type.bkhd_start_date;
4456 
4457          l_previous_bkhd_end_date     :=  p_breakpoint_header_rec_type.bkhd_end_date;
4458 
4459 
4460 
4461   EXCEPTION
4462        WHEN fnd_api.g_exc_error THEN
4463           x_return_status := fnd_api.g_ret_sts_error;
4464           pn_varen_util.pvt_debug('PN_VAREN_PVT: validate_breakpoint_header : Exception'||SQLERRM,3);
4465       WHEN OTHERS THEN
4466          x_return_status  := fnd_api.g_ret_sts_unexp_error;
4467          pn_varen_util.pvt_debug('PN_VAREN_PVT: validate_breakpoint_header: Exception :'|| SQLERRM,3);
4468   END validate_breakpoint_header;
4469 
4470 --------------------------------------------------------------------------------
4471 --  NAME         : VAR_RENT_LINES_BKHD
4472 --  DESCRIPTION  : Private procedure to validate Variable Rent Details
4473 --  PURPOSE      :
4474 --  INVOKED FROM :
4475 --  ARGUMENTS    : P_VARIABLE_RENT_LINES_TBL       IN Parameter
4476 --               : P_BREAKPOINT_HEADER_TBL         IN Parameter
4477 --               : P_BREAKPOINT_DETAILS_TBL        IN Parameter
4478 --               : P_GENERATE_BREAKPOINTS          IN Parameter
4479 --               : P_VALIDATE_FLAG                 IN Parameter
4480 --               : X_RETURN_STATUS                 OUT Parameter
4481 --  REFERENCE    :
4482 --  HISTORY      :
4483 --
4484 --  20-SEP-2010   vkatta   o Created
4485 --------------------------------------------------------------------------------
4486    PROCEDURE var_rent_lines_bkhd (
4487       p_variable_rent_lines_tbl  IN OUT NOCOPY variable_rent_lines_tbl_type
4488     , p_breakpoint_header_tbl    IN OUT NOCOPY breakpoint_header_tbl_type
4489     , p_breakpoint_details_tbl   IN OUT NOCOPY breakpoint_details_tbl_type
4490     , p_generate_breakpoints     IN       VARCHAR2 DEFAULT 'N'
4491     , p_validate_flag            IN       VARCHAR2
4492     , x_return_status            OUT NOCOPY VARCHAR2
4493    )
4494    IS
4495       l_return_status               VARCHAR2 (1);
4496       l_variable_rent_exists        NUMBER;
4497       l_var_rent_id                 NUMBER;
4498       l_period_exists               NUMBER;
4499       l_var_rent_input_line_num     NUMBER;
4500       l_var_bkhd_detail_num         NUMBER;
4501       e_type1_error                 EXCEPTION;
4502       e_type1_unexpected_error      EXCEPTION;
4503       e_type2_error                 EXCEPTION;
4504       e_type2_unexpected_error      EXCEPTION;
4505 
4506       l_var_lines_err_count NUMBER := 0;
4507       l_var_bkh_err_count   NUMBER := 0;
4508       l_var_bkl_err_count   NUMBER := 0;
4509 
4510       l_date_range_count  NUMBER := 0;
4511       l_date_range_bkdt_count NUMBER :=0;
4512    BEGIN
4513 --------------------------------------------------------------------------------
4514 --SALES_CHANNEL (Type 1) validation
4515 --------------------------------------------------------------------------------
4516       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: G_VAR_RENT_ID before Variable Rent Lines Loop: '
4517                                || g_var_rent_id
4518                              , 3
4519                               );
4520 
4521       FOR i IN p_variable_rent_lines_tbl.FIRST .. p_variable_rent_lines_tbl.LAST
4522       LOOP
4523        BEGIN
4524          pn_varen_util.pvt_debug
4525                                (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: G_VAR_RENT_ID Inside Variable Rent Lines Loop: '
4526                                 || g_var_rent_id
4527                               , 3
4528                                );
4529 
4530 -------------------------------------------------------------------------------------
4531 -- If Variable Rent lines record type has not been initialized then assign it to null
4532 -------------------------------------------------------------------------------------
4533          IF p_variable_rent_lines_tbl (i).line_default_id = pn_varen_util.g_pn_miss_num
4534          THEN
4535             p_variable_rent_lines_tbl (i).line_default_id                                := NULL;
4536          END IF;
4537 
4538          IF p_variable_rent_lines_tbl (i).line_num = pn_varen_util.g_pn_miss_num
4539          THEN
4540             p_variable_rent_lines_tbl (i).line_num                                       := NULL;
4541          END IF;
4542 
4543          IF (   p_variable_rent_lines_tbl (i).var_rent_id = pn_varen_util.g_pn_miss_num
4544              OR p_variable_rent_lines_tbl (i).var_rent_id IS NULL
4545             )
4546          THEN
4547             p_variable_rent_lines_tbl (i).var_rent_id                                    := g_var_rent_id;
4548          END IF;
4549 
4550          IF p_variable_rent_lines_tbl (i).var_rent_num = pn_varen_util.g_pn_miss_char
4551          THEN
4552             p_variable_rent_lines_tbl (i).var_rent_num                                   := NULL;
4553          END IF;
4554 
4555          IF p_variable_rent_lines_tbl (i).sales_channel_code = pn_varen_util.g_pn_miss_char
4556          THEN
4557             p_variable_rent_lines_tbl (i).sales_channel_code                             := NULL;
4558          END IF;
4559 
4560          IF p_variable_rent_lines_tbl (i).sales_channel_meaning = pn_varen_util.g_pn_miss_char
4561          THEN
4562             p_variable_rent_lines_tbl (i).sales_channel_meaning                          := NULL;
4563          END IF;
4564 
4565          IF p_variable_rent_lines_tbl (i).item_category_code = pn_varen_util.g_pn_miss_char
4566          THEN
4567             p_variable_rent_lines_tbl (i).item_category_code                             := NULL;
4568          END IF;
4569 
4570          IF p_variable_rent_lines_tbl (i).item_category_meaning = pn_varen_util.g_pn_miss_char
4571          THEN
4572             p_variable_rent_lines_tbl (i).item_category_meaning                          := NULL;
4573          END IF;
4574 
4575          IF p_variable_rent_lines_tbl (i).agreement_template_id = pn_varen_util.g_pn_miss_num
4576          THEN
4577             p_variable_rent_lines_tbl (i).agreement_template_id                          := NULL;
4578          END IF;
4579 
4580          IF p_variable_rent_lines_tbl (i).line_start_date = pn_varen_util.g_pn_miss_date
4581          THEN
4582             p_variable_rent_lines_tbl (i).line_start_date                                := NULL;
4583          END IF;
4584 
4585          IF p_variable_rent_lines_tbl (i).line_end_date = pn_varen_util.g_pn_miss_date
4586          THEN
4587             p_variable_rent_lines_tbl (i).line_end_date                                  := NULL;
4588          END IF;
4589 
4590          IF p_variable_rent_lines_tbl (i).processed_flag = pn_varen_util.g_pn_miss_num
4591          THEN
4592             p_variable_rent_lines_tbl (i).processed_flag                                 := NULL;
4593          END IF;
4594 
4595          IF p_variable_rent_lines_tbl (i).last_update_date = pn_varen_util.g_pn_miss_date
4596          THEN
4597             p_variable_rent_lines_tbl (i).last_update_date                               := NULL;
4598          END IF;
4599 
4600          IF p_variable_rent_lines_tbl (i).last_updated_by = pn_varen_util.g_pn_miss_num
4601          THEN
4602             p_variable_rent_lines_tbl (i).last_updated_by                                := NULL;
4603          END IF;
4604 
4605          IF p_variable_rent_lines_tbl (i).creation_date = pn_varen_util.g_pn_miss_date
4606          THEN
4607             p_variable_rent_lines_tbl (i).creation_date                                  := NULL;
4608          END IF;
4609 
4610          IF p_variable_rent_lines_tbl (i).created_by = pn_varen_util.g_pn_miss_num
4611          THEN
4612             p_variable_rent_lines_tbl (i).created_by                                     := NULL;
4613          END IF;
4614 
4615          IF p_variable_rent_lines_tbl (i).last_update_login = pn_varen_util.g_pn_miss_num
4616          THEN
4617             p_variable_rent_lines_tbl (i).last_update_login                              := NULL;
4618          END IF;
4619 
4620          IF p_variable_rent_lines_tbl (i).attribute_category = pn_varen_util.g_pn_miss_char
4621          THEN
4622             p_variable_rent_lines_tbl (i).attribute_category                             := NULL;
4623          END IF;
4624 
4625          IF p_variable_rent_lines_tbl (i).attribute1 = pn_varen_util.g_pn_miss_char
4626          THEN
4627             p_variable_rent_lines_tbl (i).attribute1                                     := NULL;
4628          END IF;
4629 
4630          IF p_variable_rent_lines_tbl (i).attribute2 = pn_varen_util.g_pn_miss_char
4631          THEN
4632             p_variable_rent_lines_tbl (i).attribute2                                     := NULL;
4633          END IF;
4634 
4635          IF p_variable_rent_lines_tbl (i).attribute3 = pn_varen_util.g_pn_miss_char
4636          THEN
4637             p_variable_rent_lines_tbl (i).attribute3                                     := NULL;
4638          END IF;
4639 
4640          IF p_variable_rent_lines_tbl (i).attribute4 = pn_varen_util.g_pn_miss_char
4641          THEN
4642             p_variable_rent_lines_tbl (i).attribute4                                     := NULL;
4643          END IF;
4644 
4645          IF p_variable_rent_lines_tbl (i).attribute5 = pn_varen_util.g_pn_miss_char
4646          THEN
4647             p_variable_rent_lines_tbl (i).attribute5                                     := NULL;
4648          END IF;
4649 
4650          IF p_variable_rent_lines_tbl (i).attribute6 = pn_varen_util.g_pn_miss_char
4651          THEN
4652             p_variable_rent_lines_tbl (i).attribute6                                     := NULL;
4653          END IF;
4654 
4655          IF p_variable_rent_lines_tbl (i).attribute7 = pn_varen_util.g_pn_miss_char
4656          THEN
4657             p_variable_rent_lines_tbl (i).attribute7                                     := NULL;
4658          END IF;
4659 
4660          IF p_variable_rent_lines_tbl (i).attribute8 = pn_varen_util.g_pn_miss_char
4661          THEN
4662             p_variable_rent_lines_tbl (i).attribute8                                     := NULL;
4663          END IF;
4664 
4665          IF p_variable_rent_lines_tbl (i).attribute9 = pn_varen_util.g_pn_miss_char
4666          THEN
4667             p_variable_rent_lines_tbl (i).attribute9                                     := NULL;
4668          END IF;
4669 
4670          IF p_variable_rent_lines_tbl (i).attribute10 = pn_varen_util.g_pn_miss_char
4671          THEN
4672             p_variable_rent_lines_tbl (i).attribute10                                    := NULL;
4673          END IF;
4674 
4675          IF p_variable_rent_lines_tbl (i).attribute11 = pn_varen_util.g_pn_miss_char
4676          THEN
4677             p_variable_rent_lines_tbl (i).attribute11                                    := NULL;
4678          END IF;
4679 
4680          IF p_variable_rent_lines_tbl (i).attribute12 = pn_varen_util.g_pn_miss_char
4681          THEN
4682             p_variable_rent_lines_tbl (i).attribute12                                    := NULL;
4683          END IF;
4684 
4685          IF p_variable_rent_lines_tbl (i).attribute13 = pn_varen_util.g_pn_miss_char
4686          THEN
4687             p_variable_rent_lines_tbl (i).attribute13                                    := NULL;
4688          END IF;
4689 
4690          IF p_variable_rent_lines_tbl (i).attribute14 = pn_varen_util.g_pn_miss_char
4691          THEN
4692             p_variable_rent_lines_tbl (i).attribute14                                    := NULL;
4693          END IF;
4694 
4695          IF p_variable_rent_lines_tbl (i).attribute15 = pn_varen_util.g_pn_miss_char
4696          THEN
4697             p_variable_rent_lines_tbl (i).attribute15                                    := NULL;
4698          END IF;
4699 
4700 ---------
4701 -- End
4702 ---------
4703 
4704             l_variable_rent_exists       := NULL;
4705             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: p_variable_rent_lines_tbl.COUNT :'
4706                                      || p_variable_rent_lines_tbl.COUNT
4707                                    , 3
4708                                     );
4709             pn_varen_util.pvt_debug (   'PN_VAREN_PVT :VRA Lines : p_variable_rent_lines_tbl (i).var_rent_num : '
4710                                      || p_variable_rent_lines_tbl (i).var_rent_num
4711                                    , 3
4712                                     );
4713             pn_varen_util.pvt_debug (   'PN_VAREN_PVT : VRA Lines : p_variable_rent_lines_tbl (i).var_rent_id : '
4714                                      || p_variable_rent_lines_tbl (i).var_rent_id
4715                                    , 3
4716                                     );
4717            BEGIN
4718               SELECT  COUNT (1)
4719                      ,var_rent_id
4720               INTO  l_variable_rent_exists
4721                    ,l_var_rent_id
4722               FROM pn_var_rents_all
4723               WHERE (rent_num = p_variable_rent_lines_tbl (i).var_rent_num
4724                       OR var_rent_id = p_variable_rent_lines_tbl (i).var_rent_id
4725                       )
4726                AND org_id = g_org_id
4727                GROUP BY var_rent_id;
4728            EXCEPTION
4729                WHEN OTHERS THEN
4730                   pn_varen_util.pvt_debug('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Variable Rent Number or Variable Rent Id doesnot exists :'||SQLERRM,3);
4731                   RAISE fnd_api.g_exc_error;
4732            END;
4733 
4734             IF (l_variable_rent_exists = 1) THEN
4735                -- Check if Periods generated
4736                l_period_exists     := pn_var_rent_pkg.find_if_period_exists (p_variable_rent_lines_tbl (i).var_rent_id);--Checking the existence of the periods.
4737                --l_return_status := fnd_api.g_ret_sts_success;
4738 
4739 
4740                IF l_period_exists = 1 THEN     -- Only when periods are generated
4741                   pn_varen_util.pvt_debug
4742                                         ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling SALES_CHANNEL (Type 1) Validation'
4743                                        , 3
4744                                         );
4745 
4746                   IF (   p_variable_rent_lines_tbl (i).sales_channel_code IS NOT NULL
4747                       OR p_variable_rent_lines_tbl (i).sales_channel_meaning IS NOT NULL
4748                      )
4749                   THEN
4750                      pn_varen_util.pvt_debug
4751                                       ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling Validation Lookup - Inside the Loop'
4752                                      , 3
4753                                       );
4754                      pn_varen_util.pvt_debug
4755                                          ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling SALES_CHANNEL (Type 1) Validation'
4756                                         , 3
4757                                          );
4758                      pn_varen_util.validate_lookups
4759                                                 (p_lookup_type                 => g_sales_channel
4760                                                , x_lookup_meaning              => p_variable_rent_lines_tbl (i).sales_channel_meaning
4761                                                , x_lookup_code                 => p_variable_rent_lines_tbl (i).sales_channel_code
4762                                                , x_return_status               => l_return_status
4763                                                 );
4764                      pn_varen_util.pvt_debug
4765                                            (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: SALES_CHANNEL (Type 1) Output Code :'
4766                                             || p_variable_rent_lines_tbl (i).sales_channel_code
4767                                           , 3
4768                                            );
4769 
4770                      IF (l_return_status = fnd_api.g_ret_sts_error)
4771                      THEN
4772                         --
4773                         fnd_message.set_name ('PN'
4774                                             , 'PN_VAR_LIN_SAL_CHL'
4775                                              );
4776                         fnd_msg_pub.ADD;
4777                         RAISE fnd_api.g_exc_error;
4778                      ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
4779                      THEN
4780                         fnd_message.set_name ('PN'
4781                                             , 'PN_VAR_LIN_SAL_CHL'
4782                                              );
4783                         fnd_msg_pub.ADD;
4784                         RAISE fnd_api.g_exc_unexpected_error;
4785                      END IF;
4786                   END IF;
4787 
4788 --------------------------------------------------------------------------------
4789 --ITEM_CATEGORY(Type 2) validation
4790 --------------------------------------------------------------------------------
4791                   IF (   p_variable_rent_lines_tbl (i).item_category_code IS NOT NULL
4792                       OR p_variable_rent_lines_tbl (i).item_category_meaning IS NOT NULL
4793                      )
4794                   THEN
4795                      pn_varen_util.pvt_debug
4796                                          ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling ITEM_CATEGORY(Type 2) Validation'
4797                                         , 3
4798                                          );
4799                      pn_varen_util.validate_lookups
4800                                                 (p_lookup_type                 => g_item_category
4801                                                , x_lookup_meaning              => p_variable_rent_lines_tbl (i).item_category_meaning
4802                                                , x_lookup_code                 => p_variable_rent_lines_tbl (i).item_category_code
4803                                                , x_return_status               => l_return_status
4804                                                 );
4805                             pn_varen_util.pvt_debug
4806                                            (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: ITEM_CATEGORY(Type 2) Code Success :'
4807                                             || p_variable_rent_lines_tbl (i).item_category_code
4808                                           , 3
4809                                            );
4810 
4811                      IF (l_return_status = fnd_api.g_ret_sts_error)
4812                      THEN
4813                         --
4814                         fnd_message.set_name ('PN'
4815                                             , 'PN_VAR_LIN_ITM_CAY'
4816                                              );
4817                         fnd_msg_pub.ADD;
4818                         RAISE fnd_api.g_exc_error;
4819                      ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
4820                      THEN
4821                         --
4822                         fnd_message.set_name ('PN'
4823                                             , 'PN_VAR_LIN_ITM_CAY'
4824                                              );
4825                         fnd_msg_pub.ADD;
4826                         RAISE fnd_api.g_exc_unexpected_error;
4827                      END IF;
4828                   END IF;
4829 
4830                   ---- End of Variable Rent Lines validations
4831                   pn_varen_util.pvt_debug ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: End of Variable Rent Lines validations'
4832                                          , 3
4833                                           );
4834 
4835                   ---
4836                   --  variable rent lines insert procedure
4837                   --
4838                   --IF l_return_status = fnd_api.g_ret_sts_success
4839                   --THEN
4840 
4841                      l_var_rent_input_line_num   := p_variable_rent_lines_tbl (i).line_num;
4842 
4843                      IF p_validate_flag <> 'Y' THEN
4844                         pn_varen_util.pvt_debug(   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Variable Rent Line Number as an input parameter:'|| l_var_rent_input_line_num,3);
4845 
4846                          insert_variable_rent_lines (p_variable_rent_lines_rec_type => p_variable_rent_lines_tbl(i)
4847                                                   , x_return_status                 => l_return_status
4848                                                    );
4849                          pn_varen_util.pvt_debug('PN_VAREN_PVT: Var_Rent_Line_Bkhd: End of Calling Variable Rent Lines Insert Procedure :'||l_return_status,3);
4850                       IF (l_return_status = fnd_api.g_ret_sts_error) THEN
4851                            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
4852                            fnd_message.set_token('ERR_MSG', 'Error while inserting the VRA lines.');
4853                            fnd_msg_pub.ADD;
4854                            RAISE fnd_api.g_exc_error;
4855                       ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
4856                            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
4857                            fnd_message.set_token('ERR_MSG', 'Unexpected Error while inserting the VRA lines.');
4858                            fnd_msg_pub.ADD;
4859                            RAISE fnd_api.g_exc_unexpected_error;
4860                       END IF;
4861                     END IF;
4862 
4863                      --  Calling Breakpoint Header procedure only when insert variable rent lines is success
4864                      ----
4865                  -- IF l_return_status = fnd_api.g_ret_sts_success
4866                    --  THEN
4867                      FOR j IN p_breakpoint_header_tbl.FIRST .. p_breakpoint_header_tbl.LAST
4868                      LOOP
4869                         BEGIN
4870 
4871             -------------------------------------------------------------------------------------
4872 -- If Breakpoint Header record type has not been initialized then assign it to null
4873 -------------------------------------------------------------------------------------
4874                            IF p_breakpoint_header_tbl (j).bkhd_default_id = pn_varen_util.g_pn_miss_num
4875                            THEN
4876                               p_breakpoint_header_tbl (j).bkhd_default_id                                  := NULL;
4877                            END IF;
4878 
4879                            IF p_breakpoint_header_tbl (j).bkhd_detail_num = pn_varen_util.g_pn_miss_num
4880                            THEN
4881                               p_breakpoint_header_tbl (j).bkhd_detail_num                                  := NULL;
4882                            END IF;
4883 
4884                            IF p_breakpoint_header_tbl (j).line_default_id = pn_varen_util.g_pn_miss_num
4885                            THEN
4886                               p_breakpoint_header_tbl (j).line_default_id                                  := NULL;
4887                            END IF;
4888 
4889                            IF p_breakpoint_header_tbl (j).bkhd_start_date = pn_varen_util.g_pn_miss_date
4890                            THEN
4891                               p_breakpoint_header_tbl (j).bkhd_start_date                                  := NULL;
4892                            END IF;
4893 
4894                            IF p_breakpoint_header_tbl (j).bkhd_end_date = pn_varen_util.g_pn_miss_date
4895                            THEN
4896                               p_breakpoint_header_tbl (j).bkhd_end_date                                    := NULL;
4897                            END IF;
4898 
4899                            IF p_breakpoint_header_tbl (j).break_type_code = pn_varen_util.g_pn_miss_char
4900                            THEN
4901                               p_breakpoint_header_tbl (j).break_type_code                                  := NULL;
4902                            END IF;
4903 
4904                            IF p_breakpoint_header_tbl (j).break_type_meaning = pn_varen_util.g_pn_miss_char
4905                            THEN
4906                               p_breakpoint_header_tbl (j).break_type_meaning                               := NULL;
4907                            END IF;
4908 
4909                            IF p_breakpoint_header_tbl (j).natural_break_rate = pn_varen_util.g_pn_miss_num
4910                            THEN
4911                               p_breakpoint_header_tbl (j).natural_break_rate                               := NULL;
4912                            END IF;
4913 
4914                            IF p_breakpoint_header_tbl (j).breakpoint_type_code = pn_varen_util.g_pn_miss_char
4915                            THEN
4916                               p_breakpoint_header_tbl (j).breakpoint_type_code                             := NULL;
4917                            END IF;
4918 
4919                            IF p_breakpoint_header_tbl (j).breakpoint_type_meaning = pn_varen_util.g_pn_miss_char
4920                            THEN
4921                               p_breakpoint_header_tbl (j).breakpoint_type_meaning                          := NULL;
4922                            END IF;
4923 
4924                            IF p_breakpoint_header_tbl (j).var_rent_id = pn_varen_util.g_pn_miss_num
4925                            THEN
4926                               p_breakpoint_header_tbl (j).var_rent_id                                      := NULL;
4927                            END IF;
4928 
4929                            IF p_breakpoint_header_tbl (j).last_update_date = pn_varen_util.g_pn_miss_date
4930                            THEN
4931                               p_breakpoint_header_tbl (j).last_update_date                                 := NULL;
4932                            END IF;
4933 
4934                            IF p_breakpoint_header_tbl (j).last_updated_by = pn_varen_util.g_pn_miss_num
4935                            THEN
4936                               p_breakpoint_header_tbl (j).last_updated_by                                  := NULL;
4937                            END IF;
4938 
4939                            IF p_breakpoint_header_tbl (j).creation_date = pn_varen_util.g_pn_miss_date
4940                            THEN
4941                               p_breakpoint_header_tbl (j).creation_date                                    := NULL;
4942                            END IF;
4943 
4944                            IF p_breakpoint_header_tbl (j).created_by = pn_varen_util.g_pn_miss_num
4945                            THEN
4946                               p_breakpoint_header_tbl (j).created_by                                       := NULL;
4947                            END IF;
4948 
4949                            IF p_breakpoint_header_tbl (j).last_update_login = pn_varen_util.g_pn_miss_num
4950                            THEN
4951                               p_breakpoint_header_tbl (j).last_update_login                                := NULL;
4952                            END IF;
4953 
4954                            IF p_breakpoint_header_tbl (j).attribute_category = pn_varen_util.g_pn_miss_char
4955                            THEN
4956                               p_breakpoint_header_tbl (j).attribute_category                               := NULL;
4957                            END IF;
4958 
4959                            IF p_breakpoint_header_tbl (j).attribute1 = pn_varen_util.g_pn_miss_char
4960                            THEN
4961                               p_breakpoint_header_tbl (j).attribute1                                       := NULL;
4962                            END IF;
4963 
4964                            IF p_breakpoint_header_tbl (j).attribute2 = pn_varen_util.g_pn_miss_char
4965                            THEN
4966                               p_breakpoint_header_tbl (j).attribute2                                       := NULL;
4967                            END IF;
4968 
4969                            IF p_breakpoint_header_tbl (j).attribute3 = pn_varen_util.g_pn_miss_char
4970                            THEN
4971                               p_breakpoint_header_tbl (j).attribute3                                       := NULL;
4972                            END IF;
4973 
4974                            IF p_breakpoint_header_tbl (j).attribute4 = pn_varen_util.g_pn_miss_char
4975                            THEN
4976                               p_breakpoint_header_tbl (j).attribute4                                       := NULL;
4977                            END IF;
4978 
4979                            IF p_breakpoint_header_tbl (j).attribute5 = pn_varen_util.g_pn_miss_char
4980                            THEN
4981                               p_breakpoint_header_tbl (j).attribute5                                       := NULL;
4982                            END IF;
4983 
4984                            IF p_breakpoint_header_tbl (j).attribute6 = pn_varen_util.g_pn_miss_char
4985                            THEN
4986                               p_breakpoint_header_tbl (j).attribute6                                       := NULL;
4987                            END IF;
4988 
4989                            IF p_breakpoint_header_tbl (j).attribute7 = pn_varen_util.g_pn_miss_char
4990                            THEN
4991                               p_breakpoint_header_tbl (j).attribute7                                       := NULL;
4992                            END IF;
4993 
4994                            IF p_breakpoint_header_tbl (j).attribute8 = pn_varen_util.g_pn_miss_char
4995                            THEN
4996                               p_breakpoint_header_tbl (j).attribute8                                       := NULL;
4997                            END IF;
4998 
4999                            IF p_breakpoint_header_tbl (j).attribute9 = pn_varen_util.g_pn_miss_char
5000                            THEN
5001                               p_breakpoint_header_tbl (j).attribute9                                       := NULL;
5002                            END IF;
5003 
5004                            IF p_breakpoint_header_tbl (j).attribute10 = pn_varen_util.g_pn_miss_char
5005                            THEN
5006                               p_breakpoint_header_tbl (j).attribute10                                      := NULL;
5007                            END IF;
5008 
5009                            IF p_breakpoint_header_tbl (j).attribute11 = pn_varen_util.g_pn_miss_char
5010                            THEN
5011                               p_breakpoint_header_tbl (j).attribute11                                      := NULL;
5012                            END IF;
5013 
5014                            IF p_breakpoint_header_tbl (j).attribute12 = pn_varen_util.g_pn_miss_char
5015                            THEN
5016                               p_breakpoint_header_tbl (j).attribute12                                      := NULL;
5017                            END IF;
5018 
5019                            IF p_breakpoint_header_tbl (j).attribute13 = pn_varen_util.g_pn_miss_char
5020                            THEN
5021                               p_breakpoint_header_tbl (j).attribute13                                      := NULL;
5022                            END IF;
5023 
5024                            IF p_breakpoint_header_tbl (j).attribute14 = pn_varen_util.g_pn_miss_char
5025                            THEN
5026                               p_breakpoint_header_tbl (j).attribute14                                      := NULL;
5027                            END IF;
5028 
5029                            IF p_breakpoint_header_tbl (j).attribute15 = pn_varen_util.g_pn_miss_char
5030                            THEN
5031                               p_breakpoint_header_tbl (j).attribute15                                      := NULL;
5032                            END IF;
5033 
5034 
5035                            l_var_bkhd_detail_num  := p_breakpoint_header_tbl(j).bkhd_detail_num;
5036                            pn_varen_util.pvt_debug('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Header Detail Num as an input parameter:'|| l_var_bkhd_detail_num,3);
5037 
5038                            IF (l_var_rent_input_line_num = p_breakpoint_header_tbl (j).bkhd_detail_num) THEN
5039 
5040                               ---Check for the date duplicate range
5041                               l_date_range_count := 0;
5042                               BEGIN
5043                                 SELECT COUNT(1)
5044                                 INTO   l_date_range_count
5045                                 FROM   pn_var_bkhd_defaults_all
5046                                 WHERE  var_rent_id = p_variable_rent_lines_tbl (i).var_rent_id
5047                                 AND    line_default_id = p_variable_rent_lines_tbl (i).line_default_id
5048                                 AND   (bkhd_start_date <= p_breakpoint_header_tbl (j).bkhd_end_date  AND   bkhd_end_date >= p_breakpoint_header_tbl (j).bkhd_start_date);
5049                               EXCEPTION
5050                                 WHEN OTHERS THEN
5051                                    pn_varen_util.pvt_debug('PN_VAREN_PVT:Remove any overlap in the breakpoint Headers',3);
5052                               END;
5053 
5054                                 IF(NVL(l_date_range_count,0) > 0) THEN
5055                                    --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
5056                                    fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5057                                    fnd_message.set_token('ERR_MSG', 'Please review each breakpoint component and remove any overlap in the breakpoint Header dates.');
5058                                    fnd_msg_pub.ADD;
5059                                    RAISE fnd_api.g_exc_error;
5060                                 END IF;
5061 
5062 
5063                               p_breakpoint_header_tbl (j).line_default_id  := p_variable_rent_lines_tbl (i).line_default_id;
5064                               p_breakpoint_header_tbl (j).var_rent_id    := p_variable_rent_lines_tbl (i).var_rent_id;
5065                               pn_varen_util.pvt_debug('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling Breakpoint Header Validations Procedure ', 3);
5066 
5067                               validate_breakpoint_header (p_breakpoint_header_rec_type  => p_breakpoint_header_tbl (j)
5068                                                         , x_return_status               => l_return_status
5069                                                          );
5070                                 IF(l_return_status <> fnd_api.g_ret_sts_success) THEN
5071                                   RAISE fnd_api.g_exc_error;
5072                                 END IF;
5073                               pn_varen_util.pvt_debug
5074                                  (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: End of calling Breakpoint Header Validations Procedure - l_return_status :'
5075                                   || l_return_status
5076                                 , 3
5077                                  );
5078 
5079                              -- IF l_return_status = fnd_api.g_ret_sts_success
5080                               --THEN
5081                                  -- Call validate_breakpoint_details
5082                               -- IF (p_breakpoint_header_tbl (j).break_type_code = 'ARTIFICIAL' OR
5083                                 --   p_breakpoint_header_tbl (j).break_type_meaning = 'Artificial' ) THEN
5084                                  FOR k IN p_breakpoint_details_tbl.FIRST .. p_breakpoint_details_tbl.LAST
5085                                  LOOP
5086                                    BEGIN
5087 
5088                                 -------------------------------------------------------------------------------------
5089                                 -- If Breakpoint Details record type has not been initialized then assign it to null
5090                                 -------------------------------------------------------------------------------------
5091                                     IF p_breakpoint_details_tbl (k).bkdt_default_id = pn_varen_util.g_pn_miss_num
5092                                     THEN
5093                                        p_breakpoint_details_tbl (k).bkdt_default_id                                 :=
5094                                                                                                                    NULL;
5095                                     END IF;
5096 
5097                                     IF p_breakpoint_details_tbl (k).bkdt_detail_num = pn_varen_util.g_pn_miss_num
5098                                     THEN
5099                                        p_breakpoint_details_tbl (k).bkdt_detail_num                                 :=
5100                                                                                                                    NULL;
5101                                     END IF;
5102 
5103                                     IF p_breakpoint_details_tbl (k).bkhd_default_id = pn_varen_util.g_pn_miss_num
5104                                     THEN
5105                                        p_breakpoint_details_tbl (k).bkhd_default_id                                 :=
5106                                                                                                                    NULL;
5107                                     END IF;
5108 
5109                                     IF p_breakpoint_details_tbl (k).bkdt_start_date = pn_varen_util.g_pn_miss_date
5110                                     THEN
5111                                        p_breakpoint_details_tbl (k).bkdt_start_date                                 :=
5112                                                                                                                    NULL;
5113                                     END IF;
5114 
5115                                     IF p_breakpoint_details_tbl (k).bkdt_end_date = pn_varen_util.g_pn_miss_date
5116                                     THEN
5117                                        p_breakpoint_details_tbl (k).bkdt_end_date                                   :=
5118                                                                                                                    NULL;
5119                                     END IF;
5120 
5121                                     IF p_breakpoint_details_tbl (k).period_bkpt_vol_start = pn_varen_util.g_pn_miss_num
5122                                     THEN
5123                                        p_breakpoint_details_tbl (k).period_bkpt_vol_start                           :=
5124                                                                                                                    NULL;
5125                                     END IF;
5126 
5127                                     IF p_breakpoint_details_tbl (k).period_bkpt_vol_end = pn_varen_util.g_pn_miss_num
5128                                     THEN
5129                                        p_breakpoint_details_tbl (k).period_bkpt_vol_end                             :=
5130                                                                                                                    NULL;
5131                                     END IF;
5132 
5133                                     IF p_breakpoint_details_tbl (k).group_bkpt_vol_start = pn_varen_util.g_pn_miss_num
5134                                     THEN
5135                                        p_breakpoint_details_tbl (k).group_bkpt_vol_start                            :=
5136                                                                                                                    NULL;
5137                                     END IF;
5138 
5139                                     IF p_breakpoint_details_tbl (k).group_bkpt_vol_end = pn_varen_util.g_pn_miss_num
5140                                     THEN
5141                                        p_breakpoint_details_tbl (k).group_bkpt_vol_end                              :=
5142                                                                                                                    NULL;
5143                                     END IF;
5144 
5145                                     pn_varen_util.pvt_debug
5146                                        (   ' PN_VAREN_PVT: Var_Rent_Line_Bkhd: Initialize: p_breakpoint_details_tbl (k).bkpt_rate : '
5147                                         || p_breakpoint_details_tbl (k).bkpt_rate
5148                                       , 3
5149                                        );
5150 
5151                                     IF p_breakpoint_details_tbl (k).bkpt_rate = pn_varen_util.g_pn_miss_num
5152                                     THEN
5153                                        pn_varen_util.pvt_debug
5154                                           (   ' PN_VAREN_PVT: Var_Rent_Line_Bkhd: Initialize  2: Before p_breakpoint_details_tbl (k).bkpt_rate : '
5155                                            || p_breakpoint_details_tbl (k).bkpt_rate
5156                                          , 3
5157                                           );
5158                                        p_breakpoint_details_tbl (k).bkpt_rate                                       :=
5159                                                                                                                     NULL;
5160                                     END IF;
5161 
5162                                     IF p_breakpoint_details_tbl (k).annual_basis_amount = pn_varen_util.g_pn_miss_num
5163                                     THEN
5164                                        p_breakpoint_details_tbl (k).annual_basis_amount                             :=
5165                                                                                                                    NULL;
5166                                     END IF;
5167 
5168                                     IF p_breakpoint_details_tbl (k).var_rent_id = pn_varen_util.g_pn_miss_num
5169                                     THEN
5170                                        p_breakpoint_details_tbl (k).var_rent_id                                     :=
5171                                                                                                                    NULL;
5172                                     END IF;
5173 
5174                                     IF p_breakpoint_details_tbl (k).last_update_date = pn_varen_util.g_pn_miss_date
5175                                     THEN
5176                                        p_breakpoint_details_tbl (k).last_update_date                                :=
5177                                                                                                                    NULL;
5178                                     END IF;
5179 
5180                                     IF p_breakpoint_details_tbl (k).last_updated_by = pn_varen_util.g_pn_miss_num
5181                                     THEN
5182                                        p_breakpoint_details_tbl (k).last_updated_by                                 :=
5183                                                                                                                    NULL;
5184                                     END IF;
5185 
5186                                     IF p_breakpoint_details_tbl (k).creation_date = pn_varen_util.g_pn_miss_date
5187                                     THEN
5188                                        p_breakpoint_details_tbl (k).creation_date                                   :=
5189                                                                                                                    NULL;
5190                                     END IF;
5191 
5192                                     IF p_breakpoint_details_tbl (k).created_by = pn_varen_util.g_pn_miss_num
5193                                     THEN
5194                                        p_breakpoint_details_tbl (k).created_by                                      :=
5195                                                                                                                    NULL;
5196                                     END IF;
5197 
5198                                     IF p_breakpoint_details_tbl (k).last_update_login = pn_varen_util.g_pn_miss_num
5199                                     THEN
5200                                        p_breakpoint_details_tbl (k).last_update_login                               :=
5201                                                                                                                    NULL;
5202                                     END IF;
5203 
5204                                     IF p_breakpoint_details_tbl (k).attribute_category = pn_varen_util.g_pn_miss_char
5205                                     THEN
5206                                        p_breakpoint_details_tbl (k).attribute_category                              :=
5207                                                                                                                    NULL;
5208                                     END IF;
5209 
5210                                     IF p_breakpoint_details_tbl (k).attribute1 = pn_varen_util.g_pn_miss_char
5211                                     THEN
5212                                        p_breakpoint_details_tbl (k).attribute1                                      :=
5213                                                                                                                    NULL;
5214                                     END IF;
5215 
5216                                     IF p_breakpoint_details_tbl (k).attribute2 = pn_varen_util.g_pn_miss_char
5217                                     THEN
5218                                        p_breakpoint_details_tbl (k).attribute2                                      :=
5219                                                                                                                    NULL;
5220                                     END IF;
5221 
5222                                     IF p_breakpoint_details_tbl (k).attribute3 = pn_varen_util.g_pn_miss_char
5223                                     THEN
5224                                        p_breakpoint_details_tbl (k).attribute3                                      :=
5225                                                                                                                    NULL;
5226                                     END IF;
5227 
5228                                     IF p_breakpoint_details_tbl (k).attribute4 = pn_varen_util.g_pn_miss_char
5229                                     THEN
5230                                        p_breakpoint_details_tbl (k).attribute4                                      :=
5231                                                                                                                    NULL;
5232                                     END IF;
5233 
5234                                     IF p_breakpoint_details_tbl (k).attribute5 = pn_varen_util.g_pn_miss_char
5235                                     THEN
5236                                        p_breakpoint_details_tbl (k).attribute5                                      :=
5237                                                                                                                    NULL;
5238                                     END IF;
5239 
5240                                     IF p_breakpoint_details_tbl (k).attribute6 = pn_varen_util.g_pn_miss_char
5241                                     THEN
5242                                        p_breakpoint_details_tbl (k).attribute6                                      :=
5243                                                                                                                    NULL;
5244                                     END IF;
5245 
5246                                     IF p_breakpoint_details_tbl (k).attribute7 = pn_varen_util.g_pn_miss_char
5247                                     THEN
5248                                        p_breakpoint_details_tbl (k).attribute7                                      :=
5249                                                                                                                    NULL;
5250                                     END IF;
5251 
5252                                     IF p_breakpoint_details_tbl (k).attribute8 = pn_varen_util.g_pn_miss_char
5253                                     THEN
5254                                        p_breakpoint_details_tbl (k).attribute8                                      :=
5255                                                                                                                    NULL;
5256                                     END IF;
5257 
5258                                     IF p_breakpoint_details_tbl (k).attribute9 = pn_varen_util.g_pn_miss_char
5259                                     THEN
5260                                        p_breakpoint_details_tbl (k).attribute9                                      :=
5261                                                                                                                    NULL;
5262                                     END IF;
5263 
5264                                     IF p_breakpoint_details_tbl (k).attribute10 = pn_varen_util.g_pn_miss_char
5265                                     THEN
5266                                        p_breakpoint_details_tbl (k).attribute10                                     :=
5267                                                                                                                    NULL;
5268                                     END IF;
5269 
5270                                     IF p_breakpoint_details_tbl (k).attribute11 = pn_varen_util.g_pn_miss_char
5271                                     THEN
5272                                        p_breakpoint_details_tbl (k).attribute11                                     :=
5273                                                                                                                    NULL;
5274                                     END IF;
5275 
5276                                     IF p_breakpoint_details_tbl (k).attribute12 = pn_varen_util.g_pn_miss_char
5277                                     THEN
5278                                        p_breakpoint_details_tbl (k).attribute12                                     :=
5279                                                                                                                    NULL;
5280                                     END IF;
5281 
5282                                     IF p_breakpoint_details_tbl (k).attribute13 = pn_varen_util.g_pn_miss_char
5283                                     THEN
5284                                        p_breakpoint_details_tbl (k).attribute13                                     :=
5285                                                                                                                    NULL;
5286                                     END IF;
5287 
5288                                     IF p_breakpoint_details_tbl (k).attribute14 = pn_varen_util.g_pn_miss_char
5289                                     THEN
5290                                        p_breakpoint_details_tbl (k).attribute14                                     :=
5291                                                                                                                    NULL;
5292                                     END IF;
5293 
5294                                     IF p_breakpoint_details_tbl (k).attribute15 = pn_varen_util.g_pn_miss_char
5295                                     THEN
5296                                        p_breakpoint_details_tbl (k).attribute15                                     :=
5297                                                                                                                    NULL;
5298                                     END IF;
5299 
5300                                     ---------
5301                                     -- End
5302                                                     ---------
5303                                     pn_varen_util.pvt_debug
5304                                        (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Headers Default Num - l_var_bkhd_detail_num:'
5305                                         || l_var_bkhd_detail_num
5306                                       , 3
5307                                        );
5308                                     pn_varen_util.pvt_debug
5309                                        (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Headers Default Num - p_breakpoint_header_tbl(j).bkhd_detail_num:'
5310                                         || p_breakpoint_header_tbl (j).bkhd_detail_num
5311                                       , 3
5312                                        );
5313                                     pn_varen_util.pvt_debug
5314                                        (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: pn_varen_pvt - Breakpoint Lines Default Num :'
5315                                         || p_breakpoint_details_tbl (k).bkdt_detail_num
5316                                       , 3
5317                                        );
5318 
5319 
5320                                     IF ( l_var_bkhd_detail_num = p_breakpoint_details_tbl (k).bkdt_detail_num
5321                                         AND (p_breakpoint_details_tbl (k).bkdt_start_date >= p_breakpoint_header_tbl (j).bkhd_start_date
5322                                              AND p_breakpoint_details_tbl (k).bkdt_start_date <= p_breakpoint_header_tbl (j).bkhd_end_date )
5323                                         AND  (p_breakpoint_details_tbl (k).bkdt_end_date >= p_breakpoint_header_tbl (j).bkhd_start_date
5324                                              AND p_breakpoint_details_tbl (k).bkdt_end_date <= p_breakpoint_header_tbl (j).bkhd_end_date ))THEN
5325                                        --
5326                                        -- Breakpoint Headers Header default Id should be same as Breakpoint Details Header defatlt Id.
5327                                        --
5328                                        p_breakpoint_details_tbl (k).bkhd_default_id                                 :=
5329                                                                             p_breakpoint_header_tbl (j).bkhd_default_id;
5330                                        --
5331                                        p_breakpoint_details_tbl (k).var_rent_id                                     :=
5332                                                                               p_variable_rent_lines_tbl (i).var_rent_id;
5333                                        l_date_range_bkdt_count :=0;
5334                                       BEGIN
5335                                         SELECT COUNT(1)
5336                                         INTO   l_date_range_bkdt_count
5337                                         FROM   pn_var_bkdt_defaults_all
5338                                         WHERE  var_rent_id = p_variable_rent_lines_tbl (i).var_rent_id
5339                                         AND    bkhd_default_id = p_breakpoint_header_tbl (j).bkhd_default_id
5340                                         AND   (bkdt_start_date <= p_breakpoint_details_tbl (k).bkdt_end_date  AND   bkdt_end_date >= p_breakpoint_details_tbl (k).bkdt_start_date);
5341                                      EXCEPTION
5342                                         WHEN OTHERS THEN
5343                                            pn_varen_util.pvt_debug('PN_VAREN_PVT:Remove any overlap in the breakpoint details',3);
5344                                       END;
5345 
5346                                         IF(NVL(l_date_range_bkdt_count,0) > 0) THEN
5347                                            --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
5348                                            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5349                                            fnd_message.set_token('ERR_MSG', 'Please review each breakpoint component and remove any overlap in the breakpoint Details dates.');
5350                                            fnd_msg_pub.ADD;
5351                                            RAISE fnd_api.g_exc_error;
5352                                         END IF;
5353 
5354 
5355 
5356                                        pn_varen_util.pvt_debug
5357                                           ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Calling Breakpoint Details Validations Procedure '
5358                                          , 3
5359                                           );
5360 
5361                                        pn_varen_util.pvt_debug
5362                                           (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd:Before validate_breakpoint_details  p_breakpoint_header_tbl (j).bkhd_detail_num : '
5363                                            || p_breakpoint_header_tbl (j).bkhd_detail_num
5364                                          , 3
5365                                           );
5366                                        pn_varen_util.pvt_debug
5367                                           (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd:Before validate_breakpoint_details  p_breakpoint_details_tbl (k).bkdt_detail_num : '
5368                                            || p_breakpoint_details_tbl (k).bkdt_detail_num
5369                                          , 3
5370                                           );
5371                                        pn_varen_util.pvt_debug
5372                                           (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd:Before validate_breakpoint_details  p_breakpoint_details_tbl (k).bkpt_rate : '
5373                                            || p_breakpoint_details_tbl (k).bkpt_rate
5374                                          , 3
5375                                           );
5376                                        validate_breakpoint_details
5377                                                           (p_breakpoint_details_rec_type => p_breakpoint_details_tbl (k)
5378                                                          , p_validate_flag               => p_validate_flag
5379                                                          , x_return_status               => l_return_status
5380                                                           );
5381                                        pn_varen_util.pvt_debug
5382                                           (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: End of calling Breakpoint Details Validations Procedure - l_return_status :'
5383                                            || l_return_status
5384                                          , 3
5385                                           );
5386 
5387                                        IF (l_return_status = fnd_api.g_ret_sts_error) THEN
5388                                          pn_varen_util.pvt_debug
5389                                              (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Details not created  - BKDT_DETAIL_NUM : '
5390                                               || p_breakpoint_details_tbl (k).bkdt_detail_num
5391                                             , 3
5392                                              );
5393                                          --fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5394                                          --fnd_message.set_token('ERR_MSG', 'Breakpoint Details not created:'|| p_breakpoint_details_tbl (k).bkdt_detail_num);
5395                                          --fnd_msg_pub.ADD;
5396                                          RAISE fnd_api.g_exc_error;
5397                                        ELSIF(l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
5398                                           pn_varen_util.pvt_debug
5399                                              (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Details not created  - BKDT_DETAIL_NUM : '
5400                                               || p_breakpoint_details_tbl (k).bkdt_detail_num
5401                                             , 3
5402                                              );
5403                                          --fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5404                                          --fnd_message.set_token('ERR_MSG', 'Breakpoint Details not created:'|| p_breakpoint_details_tbl (k).bkdt_detail_num);
5405                                          --fnd_msg_pub.ADD;
5406                                          RAISE fnd_api.g_exc_unexpected_error;
5407                                        END IF;
5408                                     ELSE
5409                                        pn_varen_util.pvt_debug
5410                                           ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoint Headers Default Num is not equal to Breakpoint Lines Default Num :'
5411                                          , 3
5412                                           );
5413                                     -- Return status of the Breakpoint Details
5414                                     END IF;
5415                                  -- Breakpoint Header Detail Num is not equal to Breakpoint Header Detail Num
5416 
5417                                  EXCEPTION
5418                                     WHEN fnd_api.g_exc_error THEN
5419                                       l_var_lines_err_count := l_var_lines_err_count + 1;
5420                                       pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_ERROR:p_breakpoint_details_tbl:LOOP:Exception:'||SQLERRM,3);
5421                                     WHEN OTHERS THEN
5422                                        l_var_lines_err_count := l_var_lines_err_count + 1;
5423                                        pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_UNEXP_ERROR:p_breakpoint_details_tbl:LOOP:Unexpected Exception:'||SQLERRM,3);
5424                                  END;
5425                                  END LOOP;--p_breakpoint_details_tbl
5426                              -- END IF; -- 'Artificial' Go In.
5427                               --END IF;                                  -- Breakpoint Header return status.
5428                            ELSE
5429                                  pn_varen_util.pvt_debug
5430                                  (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: No Breakpoint Header information would be created for the Variable Rent Line Num :'
5431                                   || p_variable_rent_lines_tbl (i).line_num
5432                                 , 3
5433                                  );
5434                            END IF;
5435                         EXCEPTION
5436                          WHEN fnd_api.g_exc_error THEN
5437                              l_var_lines_err_count := l_var_lines_err_count + 1;
5438                              pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_ERROR:p_breakpoint_header_tbl:LOOP:Exception:'||SQLERRM,3);
5439                          WHEN OTHERS THEN
5440                              l_var_lines_err_count := l_var_lines_err_count + 1;
5441                              pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_UNEXP_ERROR:p_breakpoint_header_tbl:LOOP:Unexpected Exception:'||SQLERRM,3);
5442                          END;
5443                         END LOOP;--p_breakpoint_header_tbl
5444 
5445                             BEGIN
5446                                 UPDATE pn_var_line_defaults_all
5447                                 SET    line_start_date = (SELECT MIN(bkhd_start_date)
5448                                                           FROM pn_var_bkhd_defaults_all
5449                                                           WHERE line_default_id = p_variable_rent_lines_tbl(i).line_default_id
5450                                                           AND  org_id = g_org_id
5451                                                           )
5452                                       ,line_end_date   = (SELECT MAX(bkhd_end_date)
5453                                                           FROM   pn_var_bkhd_defaults_all
5454                                                           WHERE  line_default_id = p_variable_rent_lines_tbl(i).line_default_id
5455                                                           AND  org_id = g_org_id
5456                                                           )
5457                                 WHERE  line_default_id = p_variable_rent_lines_tbl(i).line_default_id
5458                                 AND    org_id = g_org_id;
5459                                 COMMIT;
5460                             EXCEPTION
5461                               WHEN OTHERS THEN
5462                                  pn_varen_util.pvt_debug('PN_VAREN_PVT: Var_Rent_Line_Bkhd:Exception raised while updating the Var Line Rent Dates',3);
5463                             END;
5464 --MEOW
5465                      /*ELSE
5466                         pn_varen_util.pvt_debug
5467                                   (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Breakpoints not  created - l_return_status :'
5468                                    || l_return_status
5469                                  , 3
5470                                   );
5471                      END IF;
5472                   ----
5473                   --End of Calling Breakpoint Header procedure only when insert variable rent lines is success
5474                   ----
5475                   /*ELSE
5476                      x_return_status                                                              :=
5477                                                                                                 fnd_api.g_ret_sts_error;
5478                      pn_varen_util.pvt_debug
5479                         (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Error encountered, While calling Variable Rent Lines Insert Procedure and Return status is :'
5480                          || l_return_status
5481                        , 3
5482                         );
5483                      RAISE fnd_api.g_exc_error;
5484                   END IF; -- */
5485                ELSE
5486                  pn_varen_util.pvt_debug
5487                                       (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Periods are not generated for Rent Num :'
5488                                        || p_variable_rent_lines_tbl (i).var_rent_num
5489                                      , 3
5490                                       );
5491                  fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5492                  fnd_message.set_token('ERR_MSG', 'Periods are not generated for Rent Num :'||p_variable_rent_lines_tbl (i).var_rent_num);
5493                  fnd_msg_pub.ADD;
5494                  RAISE fnd_api.g_exc_error;
5495                END IF;  -- End of l_period_exists condition
5496             END IF; --l_variable_rent_exists
5497 
5498         EXCEPTION
5499          WHEN fnd_api.g_exc_error THEN
5500              l_var_lines_err_count := l_var_lines_err_count + 1;
5501              pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_ERROR:p_variable_rent_lines_tbl:LOOP:Exception:'||SQLERRM,3);
5502          WHEN OTHERS THEN
5503              l_var_lines_err_count := l_var_lines_err_count + 1;
5504              pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_UNEXP_ERROR:p_variable_rent_lines_tbl:LOOP:Unexpected Exception:'||SQLERRM,3);
5505          END;
5506       END LOOP;  --END LOOP p_variable_rent_lines_tbl(i)
5507 
5508 
5509 
5510       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Value of p_generate_breakpoints is '
5511                                || p_generate_breakpoints
5512                              , 3
5513                               );
5514 
5515       IF p_generate_breakpoints = 'Y'
5516       THEN
5517          pn_varen_util.pvt_debug
5518             (   'PN_VAREN_PVT: Var_Rent_Line_Bkhd: Input parameters for Generate_Breakpoints procedure l_var_rent_id is '
5519              || l_var_rent_id
5520            , 3
5521             );
5522          generate_breakpoints (p_var_rent_id                 => l_var_rent_id
5523                              , p_org_id                      => g_org_id
5524                              , x_return_status               => l_return_status
5525                               );
5526             IF (l_return_status = fnd_api.g_ret_sts_error) THEN
5527                  --fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5528                  --fnd_message.set_token('ERR_MSG', 'Break Points are not generated:'||l_var_rent_id);--OOPS(RHIA)
5529                  --fnd_msg_pub.ADD;
5530                  RAISE fnd_api.g_exc_error;
5531              ELSIF(l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
5532                  --fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
5533                  --fnd_message.set_token('ERR_MSG', 'Break Points are not generated:'||l_var_rent_id);
5534                  --fnd_msg_pub.ADD;
5535                  RAISE fnd_api.g_exc_unexpected_error;
5536             END IF;
5537       ELSE
5538          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Var_Rent_Line_Bkhd: Generate Constraints not initiated'
5539                                 , 3
5540                                  );
5541       END IF;
5542 
5543       IF(l_var_lines_err_count = 0) THEN
5544          x_return_status := fnd_api.g_ret_sts_success;
5545       ELSE
5546         x_return_status := fnd_api.g_ret_sts_error;
5547       END IF;
5548 
5549 ----   ------------------------------------------------------
5550 ----   -- Starting Constraints Validation and Insert procedure.
5551 ----   ------------------------------------------------------
5552 ----
5553 ----   val_ins_constraints (
5554 ----      p_constraints_tbl_type     => p_constraints_tbl_type
5555 ----    , x_return_status            => l_return_status
5556 ----   );
5557    EXCEPTION
5558       WHEN fnd_api.g_exc_error THEN
5559             x_return_status := fnd_api.g_ret_sts_error;
5560             pn_varen_util.pvt_debug(g_pkg_name||'-VAR_RENT_LINES_BKHD:EXCEPTION:FND_API.G_EXC_ERROR'||SQLERRM,3);
5561       WHEN OTHERS THEN
5562            x_return_status := fnd_api.g_ret_sts_unexp_error;
5563            pn_varen_util.pvt_debug(g_pkg_name||'-VAR_RENT_LINES_BKHD:Un expected EXCEPTION:FND_API.G_RET_STS_UNEXP_ERROR'||SQLERRM,3);
5564    END var_rent_lines_bkhd;
5565 
5566 --------------------------------------------------------------------------------
5567 --  NAME         : INI_VAL_VAR_REC
5568 --  DESCRIPTION  : Initialize Variable Rent records
5569 --  PURPOSE      :
5570 --  INVOKED FROM :
5571 --  ARGUMENTS    : p_var_rent_rec       IN Parameter
5572 --               : X_RETURN_STATUS      OUT Parameter
5573 --  REFERENCE    :
5574 --  HISTORY      :
5575 --
5576 --  20-SEP-2010   vkatta   o Created
5577 --------------------------------------------------------------------------------
5578    PROCEDURE ini_val_var_rec (
5579       p_var_rent_rec             IN OUT NOCOPY var_rent_rec_type
5580     , x_return_status            OUT NOCOPY VARCHAR2
5581    )
5582    IS
5583    BEGIN
5584       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Ini_Val_Var_Rec : Start of initializing variable rent record '
5585                              , 3
5586                               );
5587 
5588     --------------------------------------------------------------------------------
5589 -- If Variable Rent record type has not been initialized then assign it to null
5590 --------------------------------------------------------------------------------
5591       IF p_var_rent_rec.lease_id = pn_varen_util.g_pn_miss_num
5592       THEN
5593          p_var_rent_rec.lease_id                                                      := NULL;
5594       END IF;
5595 
5596       IF p_var_rent_rec.lease_num = pn_varen_util.g_pn_miss_char
5597       THEN
5598          p_var_rent_rec.lease_num                                                     := NULL;
5599       END IF;
5600 
5601       IF p_var_rent_rec.lease_name = pn_varen_util.g_pn_miss_char
5602       THEN
5603          p_var_rent_rec.lease_name                                                    := NULL;
5604       END IF;
5605 
5606       IF p_var_rent_rec.location_id = pn_varen_util.g_pn_miss_num
5607       THEN
5608          p_var_rent_rec.location_id                                                   := NULL;
5609       END IF;
5610 
5611       IF p_var_rent_rec.location_code = pn_varen_util.g_pn_miss_char
5612       THEN
5613          p_var_rent_rec.location_code                                                 := NULL;
5614       END IF;
5615 
5616       --IF p_var_rent_rec.var_rent_id = pn_varen_util.g_pn_miss_num
5617       --THEN
5618       --   p_var_rent_rec.var_rent_id                                                     := NULL;
5619       --END IF;
5620       IF p_var_rent_rec.rent_num = pn_varen_util.g_pn_miss_char
5621       THEN
5622          p_var_rent_rec.rent_num                                                      := NULL;
5623       END IF;
5624 
5625       IF p_var_rent_rec.abstracted_by_user_id = pn_varen_util.g_pn_miss_num
5626       THEN
5627          p_var_rent_rec.abstracted_by_user_id                                         := NULL;
5628       END IF;
5629 
5630       IF p_var_rent_rec.abstracted_by_user = pn_varen_util.g_pn_miss_char
5631       THEN
5632          p_var_rent_rec.abstracted_by_user                                            := NULL;
5633       END IF;
5634 
5635       IF p_var_rent_rec.commencement_date = pn_varen_util.g_pn_miss_date
5636       THEN
5637          p_var_rent_rec.commencement_date                                             := NULL;
5638       END IF;
5639 
5640       IF p_var_rent_rec.termination_date = pn_varen_util.g_pn_miss_date
5641       THEN
5642          p_var_rent_rec.termination_date                                              := NULL;
5643       END IF;
5644 
5645       IF p_var_rent_rec.term_template_id = pn_varen_util.g_pn_miss_num
5646       THEN
5647          p_var_rent_rec.term_template_id                                              := NULL;
5648       END IF;
5649 
5650       IF p_var_rent_rec.term_template_name = pn_varen_util.g_pn_miss_char
5651       THEN
5652          p_var_rent_rec.term_template_name                                            := NULL;
5653       END IF;
5654 
5655       IF p_var_rent_rec.currency_code = pn_varen_util.g_pn_miss_char
5656       THEN
5657          p_var_rent_rec.currency_code                                                 := NULL;
5658       END IF;
5659 
5660       IF p_var_rent_rec.proration_days = pn_varen_util.g_pn_miss_num
5661       THEN
5662          p_var_rent_rec.proration_days                                                := NULL;
5663       END IF;
5664 
5665       IF p_var_rent_rec.agreement_template_id = pn_varen_util.g_pn_miss_num
5666       THEN
5667          p_var_rent_rec.agreement_template_id                                         := NULL;
5668       END IF;
5669 
5670       IF p_var_rent_rec.agreement_template_name = pn_varen_util.g_pn_miss_char
5671       THEN
5672          p_var_rent_rec.agreement_template_name                                       := NULL;
5673       END IF;
5674 
5675       IF p_var_rent_rec.cumulative_vol_code = pn_varen_util.g_pn_miss_char
5676       THEN
5677          p_var_rent_rec.cumulative_vol_code                                           := NULL;
5678       END IF;
5679 
5680       IF p_var_rent_rec.cumulative_vol_meaning = pn_varen_util.g_pn_miss_char
5681       THEN
5682          p_var_rent_rec.cumulative_vol_meaning                                        := NULL;
5683       END IF;
5684 
5685       IF p_var_rent_rec.proration_rule_code = pn_varen_util.g_pn_miss_char
5686       THEN
5687          p_var_rent_rec.proration_rule_code                                           := NULL;
5688       END IF;
5689 
5690       IF p_var_rent_rec.proration_rule_meaning = pn_varen_util.g_pn_miss_char
5691       THEN
5692          p_var_rent_rec.proration_rule_meaning                                        := NULL;
5693       END IF;
5694 
5695       IF p_var_rent_rec.invoice_on_code = pn_varen_util.g_pn_miss_char
5696       THEN
5697          p_var_rent_rec.invoice_on_code                                               := NULL;
5698       END IF;
5699 
5700       IF p_var_rent_rec.invoice_on_meaning = pn_varen_util.g_pn_miss_char
5701       THEN
5702          p_var_rent_rec.invoice_on_meaning                                            := NULL;
5703       END IF;
5704 
5705       IF p_var_rent_rec.negative_rent_code = pn_varen_util.g_pn_miss_char
5706       THEN
5707          p_var_rent_rec.negative_rent_code                                            := NULL;
5708       END IF;
5709 
5710       IF p_var_rent_rec.negative_rent_meaning = pn_varen_util.g_pn_miss_char
5711       THEN
5712          p_var_rent_rec.negative_rent_meaning                                         := NULL;
5713       END IF;
5714 
5715       IF p_var_rent_rec.type_code = pn_varen_util.g_pn_miss_char
5716       THEN
5717          p_var_rent_rec.type_code                                                     := NULL;
5718       END IF;
5719 
5720       IF p_var_rent_rec.type_meaning = pn_varen_util.g_pn_miss_char
5721       THEN
5722          p_var_rent_rec.type_meaning                                                  := NULL;
5723       END IF;
5724 
5725       IF p_var_rent_rec.purpose_code = pn_varen_util.g_pn_miss_char
5726       THEN
5727          p_var_rent_rec.purpose_code                                                  := NULL;
5728       END IF;
5729 
5730       IF p_var_rent_rec.purpose_code_meaning = pn_varen_util.g_pn_miss_char
5731       THEN
5732          p_var_rent_rec.purpose_code_meaning                                          := NULL;
5733       END IF;
5734 
5735       IF p_var_rent_rec.last_update_date = pn_varen_util.g_pn_miss_date
5736       THEN
5737          p_var_rent_rec.last_update_date                                              := NULL;
5738       END IF;
5739 
5740       IF p_var_rent_rec.last_updated_by = pn_varen_util.g_pn_miss_num
5741       THEN
5742          p_var_rent_rec.last_updated_by                                               := NULL;
5743       END IF;
5744 
5745       IF p_var_rent_rec.creation_date = pn_varen_util.g_pn_miss_date
5746       THEN
5747          p_var_rent_rec.creation_date                                                 := NULL;
5748       END IF;
5749 
5750       IF p_var_rent_rec.created_by = pn_varen_util.g_pn_miss_num
5751       THEN
5752          p_var_rent_rec.created_by                                                    := NULL;
5753       END IF;
5754 
5755       IF p_var_rent_rec.last_update_login = pn_varen_util.g_pn_miss_num
5756       THEN
5757          p_var_rent_rec.last_update_login                                             := NULL;
5758       END IF;
5759 
5760       IF p_var_rent_rec.attribute_category = pn_varen_util.g_pn_miss_char
5761       THEN
5762          p_var_rent_rec.attribute_category                                            := NULL;
5763       END IF;
5764 
5765       IF p_var_rent_rec.attribute1 = pn_varen_util.g_pn_miss_char
5766       THEN
5767          p_var_rent_rec.attribute1                                                    := NULL;
5768       END IF;
5769 
5770       IF p_var_rent_rec.attribute2 = pn_varen_util.g_pn_miss_char
5771       THEN
5772          p_var_rent_rec.attribute2                                                    := NULL;
5773       END IF;
5774 
5775       IF p_var_rent_rec.attribute3 = pn_varen_util.g_pn_miss_char
5776       THEN
5777          p_var_rent_rec.attribute3                                                    := NULL;
5778       END IF;
5779 
5780       IF p_var_rent_rec.attribute4 = pn_varen_util.g_pn_miss_char
5781       THEN
5782          p_var_rent_rec.attribute4                                                    := NULL;
5783       END IF;
5784 
5785       IF p_var_rent_rec.attribute5 = pn_varen_util.g_pn_miss_char
5786       THEN
5787          p_var_rent_rec.attribute5                                                    := NULL;
5788       END IF;
5789 
5790       IF p_var_rent_rec.attribute6 = pn_varen_util.g_pn_miss_char
5791       THEN
5792          p_var_rent_rec.attribute6                                                    := NULL;
5793       END IF;
5794 
5795       IF p_var_rent_rec.attribute7 = pn_varen_util.g_pn_miss_char
5796       THEN
5797          p_var_rent_rec.attribute7                                                    := NULL;
5798       END IF;
5799 
5800       IF p_var_rent_rec.attribute8 = pn_varen_util.g_pn_miss_char
5801       THEN
5802          p_var_rent_rec.attribute8                                                    := NULL;
5803       END IF;
5804 
5805       IF p_var_rent_rec.attribute9 = pn_varen_util.g_pn_miss_char
5806       THEN
5807          p_var_rent_rec.attribute9                                                    := NULL;
5808       END IF;
5809 
5810       IF p_var_rent_rec.attribute10 = pn_varen_util.g_pn_miss_char
5811       THEN
5812          p_var_rent_rec.attribute10                                                   := NULL;
5813       END IF;
5814 
5815       IF p_var_rent_rec.attribute11 = pn_varen_util.g_pn_miss_char
5816       THEN
5817          p_var_rent_rec.attribute11                                                   := NULL;
5818       END IF;
5819 
5820       IF p_var_rent_rec.attribute12 = pn_varen_util.g_pn_miss_char
5821       THEN
5822          p_var_rent_rec.attribute12                                                   := NULL;
5823       END IF;
5824 
5825       IF p_var_rent_rec.attribute13 = pn_varen_util.g_pn_miss_char
5826       THEN
5827          p_var_rent_rec.attribute13                                                   := NULL;
5828       END IF;
5829 
5830       IF p_var_rent_rec.attribute14 = pn_varen_util.g_pn_miss_char
5831       THEN
5832          p_var_rent_rec.attribute14                                                   := NULL;
5833       END IF;
5834 
5835       IF p_var_rent_rec.attribute15 = pn_varen_util.g_pn_miss_char
5836       THEN
5837          p_var_rent_rec.attribute15                                                   := NULL;
5838       END IF;
5839 
5840       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Ini_Val_Var_Rec : End of initializing variable rent record '
5841                              , 3
5842                               );
5843       x_return_status                                                              := fnd_api.g_ret_sts_success;
5844    --------
5845    -- End
5846       --------
5847    EXCEPTION
5848       WHEN OTHERS
5849       THEN
5850          pn_varen_util.pvt_debug
5851                           (   'PN_VAREN_PVT: Ini_Val_Var_Rec: Exception raised in initializing variable rent record: '
5852                            || SQLERRM
5853                          , 3
5854                           );
5855          x_return_status                                                              := fnd_api.g_ret_sts_error;
5856    END ini_val_var_rec;
5857 
5858 --------------------------------------------------------------------------------
5859 --  NAME         : UPD_VAL_VAR_RENT
5860 --  DESCRIPTION  :
5861 --  PURPOSE      :
5862 --  INVOKED FROM :
5863 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE       IN Parameter
5864 --               : X_RETURN_STATUS               OUT Parameter
5865 --  REFERENCE    :
5866 --  HISTORY      :
5867 --
5868 --  11-OCT-2010   vkatta   o Created
5869 --------------------------------------------------------------------------------
5870    PROCEDURE upd_val_var_rent (
5871       p_upd_var_rent_rec_type    IN OUT NOCOPY upd_var_rent_rec_type
5872     , x_return_status            OUT NOCOPY VARCHAR2
5873    )
5874    IS
5875    --l_return_status
5876    BEGIN
5877 --------------------------------------------------------------------------------
5878 -- Validate variable rent number existence before update
5879 --------------------------------------------------------------------------------
5880       IF (   p_upd_var_rent_rec_type.rent_num IS NOT NULL
5881           OR p_upd_var_rent_rec_type.var_rent_id IS NOT NULL)
5882       THEN
5883          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Var_Rent: Calling pn_varen_util.validate_rent_num '
5884                                 , 3
5885                                  );
5886          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: Parameter pn_varen_util.validate_rent_num :'
5887                                   || NVL (p_upd_var_rent_rec_type.rent_num
5888                                         , 'NO RENT NUM'
5889                                          )
5890                                 , 3
5891                                  );
5892          pn_varen_util.validate_rent_num (x_rent_num                    => p_upd_var_rent_rec_type.rent_num
5893                                         , x_var_rent_id                 => p_upd_var_rent_rec_type.var_rent_id
5894                                         , p_lease_id                    => p_upd_var_rent_rec_type.lease_id
5895                                         , p_org_id                      => g_org_id
5896                                         , x_return_status               => x_return_status
5897                                          );
5898          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: Variable Rent Validation Output :'
5899                                   || l_var_rent_id
5900                                 , 3
5901                                  );
5902          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: validate_rent_num return_status :'
5903                                   || x_return_status
5904                                 , 3
5905                                  );
5906 
5907          IF (x_return_status = fnd_api.g_ret_sts_error)
5908          THEN
5909             fnd_message.set_name ('PN'
5910                                 , 'PN_DUP_LEASE_NUMBER'
5911                                  );
5912             fnd_msg_pub.ADD;
5913             RAISE fnd_api.g_exc_error;
5914             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: Variable Rent Num Expected Error :'
5915                                      || p_upd_var_rent_rec_type.rent_num
5916                                    , 3
5917                                     );
5918          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
5919          THEN
5920             fnd_message.set_name ('PN'
5921                                 , 'PN_DUP_LEASE_NUMBER'
5922                                  );
5923             fnd_msg_pub.ADD;
5924             RAISE fnd_api.g_exc_unexpected_error;
5925             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: Variable Rent Num Un-Expected Error :'
5926                                      || p_upd_var_rent_rec_type.rent_num
5927                                    , 3
5928                                     );
5929          ELSE
5930             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Var_Rent: Variable Rent Id Success :'
5931                                      || p_upd_var_rent_rec_type.var_rent_id
5932                                    , 3
5933                                     );
5934          END IF;
5935       END IF;
5936    END upd_val_var_rent;
5937 
5938 --------------------------------------------------------------------------------
5939 --  NAME         : VALIDATE_VAR_RENT
5940 --  DESCRIPTION  : Private procedure to validate Variable Rent Details
5941 --  PURPOSE      :
5942 --  INVOKED FROM :
5943 --  ARGUMENTS    : P_VAR_RENT_REC       IN Parameter
5944 --               : X_RETURN_STATUS      OUT Parameter
5945 --  REFERENCE    :
5946 --  HISTORY      :
5947 --
5948 --  20-sep-2010   vkatta   o Created
5949 --------------------------------------------------------------------------------
5950    PROCEDURE validate_var_rent (
5951       p_var_rent_rec             IN OUT NOCOPY var_rent_rec_type
5952     , x_return_status            OUT NOCOPY VARCHAR2
5953    )
5954    IS
5955       l_return_status               VARCHAR2 (1);
5956       l_ret_status                  VARCHAR2 (1);
5957       l_return_msg                  VARCHAR2 (10);
5958       l_lease_commencement_date     pn_lease_details_all.lease_commencement_date%TYPE;
5959       l_lease_termination_date      pn_lease_details_all.lease_termination_date%TYPE;
5960       l_purpose_code                pn_var_templates_all.purpose_code%TYPE;
5961       l_type_code                   pn_var_templates_all.type_code%TYPE;
5962       l_cumulative_vol              pn_var_templates_all.cumulative_vol%TYPE;
5963       l_invoice_on                  pn_var_templates_all.invoice_on%TYPE;
5964       l_negative_rent               pn_var_templates_all.negative_rent%TYPE;
5965       l_term_template_id            pn_var_templates_all.term_template_id%TYPE;
5966       l_abatement_amount            pn_var_templates_all.abatement_amount%TYPE;
5967       l_proration_rule              pn_var_templates_all.proration_rule%TYPE;
5968       l_vrg_reptg_freq_code         pn_var_templates_all.vrg_reptg_freq_code%TYPE;
5969       l_period_freq_code            pn_var_templates_all.period_freq_code%TYPE;
5970       l_use_gl_calendar             pn_var_templates_all.use_gl_calendar%TYPE;
5971       l_year_start_date             pn_var_templates_all.year_start_date%TYPE;
5972       l_gl_period_set_name          pn_var_templates_all.gl_period_set_name%TYPE;
5973       l_period_type                 pn_var_templates_all.period_type%TYPE;
5974       l_reptg_freq_code             pn_var_templates_all.reptg_freq_code%TYPE;
5975       l_reptg_day_of_month          pn_var_templates_all.reptg_day_of_month%TYPE;
5976       l_reptg_days_after            pn_var_templates_all.reptg_days_after%TYPE;
5977       l_invg_freq_code              pn_var_templates_all.invg_freq_code%TYPE;
5978       l_invg_spread_code            pn_var_templates_all.invg_spread_code%TYPE;
5979       l_invg_day_of_month           pn_var_templates_all.invg_day_of_month%TYPE;
5980       l_invg_days_after             pn_var_templates_all.invg_days_after%TYPE;
5981       l_comments                    pn_var_templates_all.comments%TYPE;
5982       l_auto_var_rent_id            pn_var_rents_all.var_rent_id%TYPE;
5983       l_auto_var_rent_num           pn_system_setup_options.auto_var_rent_num_gen%TYPE;
5984 
5985       l_proration_days NUMBER;
5986       l_location_id    NUMBER;
5987    BEGIN
5988 --------------------------------------------------------------------------------
5989 --Validate Lease details
5990 --------------------------------------------------------------------------------
5991       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Inside Procedure'
5992                              , 3
5993                               );
5994       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_id'
5995                                || p_var_rent_rec.lease_id
5996                              , 3
5997                               );
5998       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_name '
5999                                || p_var_rent_rec.lease_name
6000                              , 3
6001                               );
6002       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_num'
6003                                || p_var_rent_rec.lease_num
6004                              , 3
6005                               );
6006 
6007       IF (    p_var_rent_rec.lease_id IS NULL
6008           AND p_var_rent_rec.lease_num IS NULL
6009           AND p_var_rent_rec.lease_name IS NULL)
6010       THEN
6011          pn_varen_util.pvt_debug
6012                              ('PN_VAREN_PVT: Validate_Var_Rent: Please pass the lease details to create Variable Rent'
6013                             , 3
6014                              );
6015          fnd_message.set_name ('PN'
6016                              , 'PN_VAR_NVALID_LEASE'
6017                               );
6018          fnd_msg_pub.ADD;
6019          RAISE fnd_api.g_exc_error;
6020       ELSE
6021          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Lease Validation '
6022                                 , 3
6023                                  );
6024          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Start of pn_varen_util.validate_lease procedure'
6025                                 , 3
6026                                  );
6027          pn_varen_util.validate_lease (p_lease_name                  => p_var_rent_rec.lease_name
6028                                      , p_lease_num                   => p_var_rent_rec.lease_num
6029                                      , x_lease_id                    => p_var_rent_rec.lease_id
6030                                      , x_proration_days              => l_proration_days--p_var_rent_rec.proration_days
6031                                      , x_location_id                 => l_location_id--p_var_rent_rec.location_id
6032                                      , p_location_code               => p_var_rent_rec.location_code
6033                                      , x_lease_commencement_date     => l_lease_commencement_date
6034                                      , x_lease_termination_date      => l_lease_termination_date
6035                                      , p_org_id                      => g_org_id
6036                                      , x_return_status               => l_return_status
6037                                       );
6038          pn_varen_util.pvt_debug('PN_VAREN_PVT: Validate_Var_Rent: End of pn_varen_util.validate_lease procedure status :'||l_return_status,3);
6039          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Lease Id Validation Output :'|| p_var_rent_rec.lease_id,3);
6040 
6041          IF (l_return_status = fnd_api.g_ret_sts_error)
6042          THEN
6043             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_id Error: '
6044                                      || p_var_rent_rec.lease_id
6045                                    , 3
6046                                     );
6047             fnd_message.set_name ('PN'
6048                                 , 'PN_VAR_NVALID_LEASE'
6049                                  );
6050             fnd_msg_pub.ADD;
6051             RAISE fnd_api.g_exc_error;
6052 
6053          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6054          THEN
6055             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_id Unexpected Error: '
6056                                      || p_var_rent_rec.lease_id
6057                                    , 3
6058                                     );
6059             fnd_message.set_name ('PN'
6060                                 , 'PN_VAR_NVALID_LEASE'
6061                                  );
6062             fnd_msg_pub.ADD;
6063             RAISE fnd_api.g_exc_unexpected_error;
6064 
6065          ELSE
6066             l_return_status      := fnd_api.g_ret_sts_success;
6067             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_id Success: '
6068                                      || p_var_rent_rec.lease_id
6069                                    , 3
6070                                     );
6071          END IF;
6072       END IF;
6073       IF(p_var_rent_rec.proration_days IS NULL OR p_var_rent_rec.proration_days = pn_varen_util.g_pn_miss_num) THEN
6074          p_var_rent_rec.proration_days := l_proration_days;
6075      END IF;
6076      IF(   (p_var_rent_rec.location_id IS NULL OR p_var_rent_rec.location_id = pn_varen_util.g_pn_miss_num)
6077         AND(p_var_rent_rec.location_code IS NULL OR p_var_rent_rec.location_code = pn_varen_util.g_pn_miss_char)
6078         ) THEN
6079          p_var_rent_rec.location_id := l_location_id;
6080      END IF;
6081 
6082 --------------------------------------------------------------------------------
6083 --Validate variable rent number or id
6084 --------------------------------------------------------------------------------
6085       IF (    p_var_rent_rec.rent_num IS NOT NULL
6086           AND p_var_rent_rec.rent_num <> pn_varen_util.g_pn_miss_char
6087           AND l_return_status = fnd_api.g_ret_sts_success
6088          )
6089       THEN
6090          l_return_status   := NULL;
6091 
6092          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling pn_varen_util.validate_rent_num '
6093                                 , 3
6094                                  );
6095          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Parameter pn_varen_util.validate_rent_num :'
6096                                   || NVL (p_var_rent_rec.rent_num
6097                                         , 'NO RENT NUM'
6098                                          )
6099                                 , 3
6100                                  );
6101 
6102          pn_varen_util.validate_rent_num (x_rent_num                    => p_var_rent_rec.rent_num
6103                                         , x_var_rent_id                 => l_var_rent_id
6104                                         , p_lease_id                    => p_var_rent_rec.lease_id
6105                                         , p_org_id                      => g_org_id
6106                                         , x_return_status               => l_return_status
6107                                          );
6108 
6109          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Variable Rent Validation Output :'
6110                                   || l_var_rent_id
6111                                 , 3
6112                                  );
6113          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: validate_rent_num return_status :'
6114                                   || l_return_status
6115                                 , 3
6116                                  );
6117 
6118          IF (l_return_status = fnd_api.g_ret_sts_error) THEN
6119             fnd_message.set_name ('PN'
6120                                 , 'PN_DUP_LEASE_NUMBER'
6121                                  );
6122             fnd_msg_pub.ADD;
6123             RAISE fnd_api.g_exc_error;
6124          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
6125             fnd_message.set_name ('PN'
6126                                 , 'PN_DUP_LEASE_NUMBER'
6127                                  );
6128             fnd_msg_pub.ADD;
6129             RAISE fnd_api.g_exc_unexpected_error;
6130          ELSE
6131             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Variable Rent Id Success :'
6132                                      || l_var_rent_id
6133                                    , 3
6134                                     );
6135          END IF;
6136       ELSIF (   p_var_rent_rec.rent_num IS NULL
6137              OR p_var_rent_rec.rent_num = pn_varen_util.g_pn_miss_num)
6138       THEN
6139          p_var_rent_rec.rent_num        := NULL;
6140 
6141          --check the system profile option
6142          SELECT auto_var_rent_num_gen
6143            INTO l_auto_var_rent_num
6144            FROM pn_system_setup_options
6145           WHERE org_id = g_org_id;
6146 
6147          IF (l_auto_var_rent_num = 'Y')
6148          THEN
6149             --both rent num and rent_id would be sequence value
6150             pn_varen_util.pvt_debug
6151                                   (   'PN_VAREN_PVT: Validate_Var_Rent: Variable Rent Number generation is set as Yes'
6152                                    || l_auto_var_rent_num
6153                                  , 3
6154                                   );
6155             x_return_status                                                              := fnd_api.g_ret_sts_success;
6156          ELSE
6157             fnd_message.set_name ('PN'
6158                                 , 'PN_VAR_RENT_NUM_NULL'
6159                                  );
6160             fnd_msg_pub.ADD;
6161             RAISE fnd_api.g_exc_error;
6162             pn_varen_util.pvt_debug
6163                ('PN_VAREN_PVT: Validate_Var_Rent: VRA Number is Null and Automatic Number Generation for Variable Rent is set to No.'
6164               , 3
6165                );
6166             x_return_status        := fnd_api.g_ret_sts_error;
6167          END IF;
6168       END IF;
6169 
6170 --------------------------------------------------------------------------------------
6171 -- If Variable Rent Num already exists then no need to call the rest of the validations
6172 --------------------------------------------------------------------------------------
6173       IF (l_return_status <> fnd_api.g_ret_sts_error)
6174       THEN
6175          pn_varen_util.pvt_debug
6176             ('PN_VAREN_PVT: Validate_Var_Rent: If Variable Rent Num doesn''t exists in the system, calling the rest of the validations'
6177            , 3
6178             );
6179          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Start of Variable Rent Validations'
6180                                 , 3
6181                                  );
6182          --Variable Rent : Commencement date validation
6183          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Agreement Template validation'
6184                                 , 3
6185                                  );
6186 
6187 ---------------------------------
6188 --Agreement Template validation
6189 ---------------------------------
6190 --         IF (  ( p_var_rent_rec.agreement_template_name IS NOT NULL and p_var_rent_rec.agreement_template_name <> pn_varen_util.g_pn_miss_char)
6191 --             OR ( p_var_rent_rec.agreement_template_id IS NOT NULL   and p_var_rent_rec.agreement_template_id <> pn_varen_util.g_pn_miss_num)
6192 --            )
6193 --         THEN
6194          IF (   p_var_rent_rec.agreement_template_name IS NOT NULL
6195              OR p_var_rent_rec.agreement_template_id IS NOT NULL)
6196          THEN
6197             pn_varen_util.validate_agreement_temp (x_agreement_template_id       => p_var_rent_rec.agreement_template_id
6198                                                  , x_agreement_template          => p_var_rent_rec.agreement_template_name
6199                                                  , x_purpose_code                => l_purpose_code
6200                                                  , x_type_code                   => l_type_code
6201                                                  , x_cumulative_vol              => l_cumulative_vol
6202                                                  , x_invoice_on                  => l_invoice_on
6203                                                  , x_negative_rent               => l_negative_rent
6204                                                  , x_term_template_id            => l_term_template_id
6205                                                  , x_abatement_amount            => l_abatement_amount
6206                                                  , x_proration_rule              => l_proration_rule
6207                                                  , x_vrg_reptg_freq_code         => l_vrg_reptg_freq_code
6208                                                  , x_period_freq_code            => l_period_freq_code
6209                                                  , x_use_gl_calendar             => l_use_gl_calendar
6210                                                  , x_year_start_date             => l_year_start_date
6211                                                  , x_gl_period_set_name          => l_gl_period_set_name
6212                                                  , x_period_type                 => l_period_type
6213                                                  , x_reptg_freq_code             => l_reptg_freq_code
6214                                                  , x_reptg_day_of_month          => l_reptg_day_of_month
6215                                                  , x_reptg_days_after            => l_reptg_days_after
6216                                                  , x_invg_freq_code              => l_invg_freq_code
6217                                                  , x_invg_spread_code            => l_invg_spread_code
6218                                                  , x_invg_day_of_month           => l_invg_day_of_month
6219                                                  , x_invg_days_after             => l_invg_days_after
6220                                                  , x_comments                    => l_comments
6221                                                  , p_org_id                      => g_org_id
6222                                                  , x_return_status               => l_return_status
6223                                                   );
6224          ELSE
6225             NULL;
6226          END IF;
6227 
6228 --------------------------------------------------------------------------------
6229 --Commencement date validation
6230 --------------------------------------------------------------------------------
6231 
6232 
6233 
6234          IF (    p_var_rent_rec.commencement_date IS NOT NULL
6235              AND p_var_rent_rec.commencement_date >= l_lease_commencement_date
6236              AND p_var_rent_rec.commencement_date <= l_lease_termination_date
6237              AND p_var_rent_rec.commencement_date <= NVL (p_var_rent_rec.termination_date,l_lease_termination_date)
6238             )
6239          THEN
6240 
6241             l_return_status        := fnd_api.g_ret_sts_success;
6242             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Commencement date validation Success :'
6243                                      || p_var_rent_rec.commencement_date
6244                                    , 3
6245                                     );
6246          ELSIF (p_var_rent_rec.commencement_date IS NULL AND l_lease_commencement_date IS NOT NULL)
6247          THEN
6248             p_var_rent_rec.commencement_date                                             :=
6249                                                       NVL (p_var_rent_rec.commencement_date
6250                                                          , l_lease_commencement_date
6251                                                           );
6252             l_return_status                                                              := fnd_api.g_ret_sts_success;
6253             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: ELSEIF:Commencement date validation Success :'
6254                                      || p_var_rent_rec.commencement_date
6255                                    , 3
6256                                     );
6257          ELSE
6258             l_return_status    := fnd_api.g_ret_sts_error;
6259             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: ELSE: Lease Commencement date validation Failed :'
6260                                      || l_lease_commencement_date
6261                                    , 3
6262                                     );
6263             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
6264             fnd_message.set_token('ERR_MSG', 'Lease Commencement Date is NULL');
6265             fnd_msg_pub.ADD;
6266             RAISE fnd_api.g_exc_error;
6267          END IF;
6268 
6269 --------------------------------------------------------------------------------
6270 --Termination date validation
6271 --------------------------------------------------------------------------------
6272          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Termination Dates validation'
6273                                 , 3
6274                                  );
6275 
6276          IF (    p_var_rent_rec.termination_date IS NOT NULL
6277              AND p_var_rent_rec.termination_date > p_var_rent_rec.commencement_date
6278              AND p_var_rent_rec.termination_date <= l_lease_termination_date
6279             )
6280          THEN
6281             l_return_status                                                              := fnd_api.g_ret_sts_success;
6282             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Termination date validation Success :'
6283                                      || p_var_rent_rec.termination_date
6284                                    , 3
6285                                     );
6286          ELSIF (p_var_rent_rec.termination_date IS NULL AND l_lease_termination_date IS NOT NULL) THEN
6287             p_var_rent_rec.termination_date  :=NVL (p_var_rent_rec.termination_date,l_lease_termination_date);
6288             l_return_status    := fnd_api.g_ret_sts_success;
6289             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Termination date validation Success :'
6290                                      || p_var_rent_rec.termination_date
6291                                    , 3
6292                                     );
6293          ELSE
6294             l_return_status                                                              := fnd_api.g_ret_sts_error;
6295             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Lease Termination date validation Failed :'
6296                                      || l_lease_termination_date
6297                                    , 3
6298                                     );
6299             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Commencement date validation Failed :'
6300                                      || p_var_rent_rec.termination_date
6301                                    , 3
6302                                     );
6303             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
6304             fnd_message.set_token('ERR_MSG', 'Lease Termination Date is NULL');
6305             fnd_msg_pub.ADD;
6306             RAISE fnd_api.g_exc_error;
6307          END IF;
6308 
6309 --------------------------------------------------------------------------------
6310 --Location details validation
6311 --------------------------------------------------------------------------------
6312          IF (   p_var_rent_rec.location_id IS NOT NULL
6313              OR p_var_rent_rec.location_code IS NOT NULL)
6314          THEN
6315             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Calling Validate Location :'
6316                                      || p_var_rent_rec.location_id||'-'||p_var_rent_rec.location_code
6317                                    , 3
6318                                     );
6319             pn_varen_util.validate_location (p_lease_id                    => p_var_rent_rec.lease_id
6320                                            , x_location_id                 => p_var_rent_rec.location_id
6321                                            , x_location_code               => p_var_rent_rec.location_code
6322                                            , x_return_status               => l_return_status
6323                                             );
6324             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Location ID Output :'
6325                                      || p_var_rent_rec.location_id
6326                                    , 3
6327                                     );
6328 
6329             IF (l_return_status = fnd_api.g_ret_sts_error)
6330             THEN
6331                fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
6332                fnd_message.set_token('ERR_MSG', 'Invalid Location Code/ID,Please Provide Valid Location Code/ID');
6333                fnd_msg_pub.ADD;
6334                RAISE fnd_api.g_exc_error;
6335             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6336             THEN
6337                fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
6338                fnd_message.set_token('ERR_MSG', 'Invalid Location Code/ID,Please Provide Valid Location Code/ID:Unexpected Error');
6339                fnd_msg_pub.ADD;
6340                RAISE fnd_api.g_exc_unexpected_error;
6341             ELSE
6342                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Location ID Validation Success :'
6343                                         || p_var_rent_rec.location_id
6344                                       , 3
6345                                        );
6346 --            RAISE fnd_api.g_exc_unexpected_error;
6347             END IF;
6348          END IF;
6349 
6350 --------------------------------------------------------------------------------
6351 --Purpose code validation
6352 --------------------------------------------------------------------------------
6353          IF (   p_var_rent_rec.purpose_code IS NOT NULL
6354              OR p_var_rent_rec.purpose_code_meaning IS NOT NULL)
6355          THEN
6356             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Payment Purpose Validation'
6357                                    , 3
6358                                     );
6359             pn_varen_util.validate_lookups (p_lookup_type                 => g_payment_purpose
6360                                           , x_lookup_meaning              => p_var_rent_rec.purpose_code_meaning
6361                                           , x_lookup_code                 => p_var_rent_rec.purpose_code
6362                                           , x_return_status               => l_return_status
6363                                            );
6364             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Payment Purpose Output Code :'
6365                                      || p_var_rent_rec.purpose_code
6366                                    , 3
6367                                     );
6368 
6369             IF (l_return_status = fnd_api.g_ret_sts_error)
6370             THEN
6371               pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Payment Purpose Meaning Expected Error :'
6372                                         || p_var_rent_rec.purpose_code_meaning
6373                                       , 3
6374                                        );
6375                fnd_message.set_name ('PN'
6376                                    , 'PN_VAR_PUR_CODE'
6377                                     );
6378                fnd_message.set_token ('PURPOSE_CODE_MEANING'
6379                                     ,    p_var_rent_rec.purpose_code_meaning
6380                                       || '/'
6381                                       || p_var_rent_rec.purpose_code
6382                                      );
6383                fnd_msg_pub.ADD;
6384                RAISE fnd_api.g_exc_error;
6385 
6386             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6387             THEN
6388                   pn_varen_util.pvt_debug
6389                                      (   'PN_VAREN_PVT: Validate_Var_Rent: Payment Purpose Meaning Un-Expected Error :'
6390                                       || p_var_rent_rec.purpose_code_meaning
6391                                     , 3
6392                                      );
6393                fnd_message.set_name ('PN'
6394                                    , 'PN_VAR_PUR_CODE'
6395                                     );
6396                fnd_message.set_token ('PURPOSE_CODE_MEANING'
6397                                     ,    p_var_rent_rec.purpose_code_meaning
6398                                       || '/'
6399                                       || p_var_rent_rec.purpose_code
6400                                      );
6401                fnd_msg_pub.ADD;
6402                RAISE fnd_api.g_exc_unexpected_error;
6403 
6404             ELSE
6405                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Payment Purpose Code Success :'
6406                                         || p_var_rent_rec.purpose_code
6407                                       , 3
6408                                        );
6409             END IF;
6410          ELSIF (l_purpose_code IS NOT NULL)
6411          THEN
6412             p_var_rent_rec.purpose_code  := l_purpose_code;
6413          ELSE
6414             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Purpose_code is null'
6415                                    , 3
6416                                     );
6417             fnd_message.set_name ('PN'
6418                                 , 'PN_VAR_PUR_CODE'
6419                                  );
6420             fnd_message.set_token ('PURPOSE_CODE_MEANING'
6421                                  ,    p_var_rent_rec.purpose_code_meaning
6422                                    || '/'
6423                                    || p_var_rent_rec.purpose_code
6424                                   );
6425             fnd_msg_pub.ADD;
6426             RAISE fnd_api.g_exc_error;
6427          END IF;
6428 
6429 --------------------------------------------------------------------------------
6430 --Volume Type validation
6431 --------------------------------------------------------------------------------
6432          IF (   p_var_rent_rec.type_code IS NOT NULL
6433              OR p_var_rent_rec.type_meaning IS NOT NULL)
6434          THEN
6435             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Rent Type Validation'
6436                                    , 3
6437                                     );
6438             pn_varen_util.validate_lookups (p_lookup_type                 => g_rent_type
6439                                           , x_lookup_meaning              => p_var_rent_rec.type_meaning
6440                                           , x_lookup_code                 => p_var_rent_rec.type_code
6441                                           , x_return_status               => l_return_status
6442                                            );
6443             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Rent Type Meaning Validation Output :'
6444                                      || p_var_rent_rec.type_meaning
6445                                    , 3
6446                                     );
6447             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Rent Type Code Validation Output :'
6448                                      || p_var_rent_rec.type_code
6449                                    , 3
6450                                     );
6451 
6452             IF (l_return_status = fnd_api.g_ret_sts_error)
6453             THEN
6454                fnd_message.set_name ('PN'
6455                                    , 'PN_VAR_VOL_TY'
6456                                     );
6457                fnd_message.set_token ('VOLUME_TYPE_CODE_MEANING'
6458                                     ,    p_var_rent_rec.type_meaning
6459                                       || '/'
6460                                       || p_var_rent_rec.type_code
6461                                      );
6462                fnd_msg_pub.ADD;
6463                RAISE fnd_api.g_exc_error;
6464                pn_varen_util.pvt_debug
6465                                    (   'PN_VAREN_PVT: Validate_Var_Rent: Rent Type Meaning Validation Expected Error :'
6466                                     || p_var_rent_rec.type_meaning
6467                                   , 3
6468                                    );
6469             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6470             THEN
6471                fnd_message.set_name ('PN'
6472                                    , 'PN_VAR_VOL_TY'
6473                                     );
6474                fnd_message.set_token ('VOLUME_TYPE_CODE_MEANING'
6475                                     ,    p_var_rent_rec.type_meaning
6476                                       || '/'
6477                                       || p_var_rent_rec.type_code
6478                                      );
6479                fnd_msg_pub.ADD;
6480                RAISE fnd_api.g_exc_unexpected_error;
6481                pn_varen_util.pvt_debug
6482                                 (   'PN_VAREN_PVT: Validate_Var_Rent: Rent Type Meaning Validation Un-Expected Error :'
6483                                  || p_var_rent_rec.type_meaning
6484                                , 3
6485                                 );
6486             ELSE
6487                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Rent Type Code Success :'
6488                                         || p_var_rent_rec.type_code
6489                                       , 3
6490                                        );
6491             END IF;
6492          ELSIF (l_type_code IS NOT NULL)
6493          THEN
6494             p_var_rent_rec.type_code                                                     := l_type_code;
6495          ELSE
6496             pn_varen_util.pvt_debug ('PN_VAREN_PVT: TYPE_CODE is NULL'
6497                                    , 3
6498                                     );
6499             fnd_message.set_name ('PN'
6500                                 , 'PN_VAR_VOL_TY'
6501                                  );
6502             fnd_message.set_token ('VOLUME_TYPE_CODE_MEANING'
6503                                  ,    p_var_rent_rec.type_meaning
6504                                    || '/'
6505                                    || p_var_rent_rec.type_code
6506                                   );
6507             fnd_msg_pub.ADD;
6508             RAISE fnd_api.g_exc_error;
6509          END IF;
6510 
6511 --------------------------------------------------------------------------------
6512 --Abstracted by user validation
6513 --------------------------------------------------------------------------------
6514          IF (   p_var_rent_rec.abstracted_by_user_id IS NOT NULL
6515              OR p_var_rent_rec.abstracted_by_user IS NOT NULL)
6516          THEN
6517             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling User Validation'
6518                                    , 3
6519                                     );
6520             pn_varen_util.validate_abst_user (x_user_name                   => p_var_rent_rec.abstracted_by_user
6521                                             , x_user_id                     => p_var_rent_rec.abstracted_by_user_id
6522                                             , x_return_status               => l_return_status
6523                                              );
6524             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: User Validation user id :'
6525                                      || p_var_rent_rec.abstracted_by_user_id
6526                                    , 3
6527                                     );
6528 
6529             IF (l_return_status = fnd_api.g_ret_sts_error)
6530             THEN
6531               pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: User Validation User Name Expected Error:'
6532                                         || p_var_rent_rec.abstracted_by_user
6533                                       , 3
6534                                        );
6535                fnd_message.set_name ('PN'
6536                                    , 'PN_VAR_ABS_USER'
6537                                     );
6538                fnd_message.set_token ('ABSTRACTED_BY_USER_ID'
6539                                     ,    p_var_rent_rec.abstracted_by_user
6540                                       || '/'
6541                                       || p_var_rent_rec.abstracted_by_user_id
6542                                      );
6543                fnd_msg_pub.ADD;
6544                RAISE fnd_api.g_exc_error;
6545 
6546             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6547             THEN
6548                pn_varen_util.pvt_debug
6549                                     (   'PN_VAREN_PVT: Validate_Var_Rent: User Validation user Name Un-Expected Error:'
6550                                      || p_var_rent_rec.abstracted_by_user
6551                                    , 3
6552                                     );
6553                fnd_message.set_name ('PN'
6554                                    , 'PN_VAR_ABS_USER'
6555                                     );
6556                fnd_message.set_token ('ABSTRACTED_BY_USER_ID'
6557                                     ,    p_var_rent_rec.abstracted_by_user
6558                                       || '/'
6559                                       || p_var_rent_rec.abstracted_by_user_id
6560                                      );
6561                fnd_msg_pub.ADD;
6562                RAISE fnd_api.g_exc_unexpected_error;
6563 
6564             ELSE
6565                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: User Validation user id Success:'
6566                                         || p_var_rent_rec.abstracted_by_user_id
6567                                       , 3
6568                                        );
6569             END IF;
6570          ELSE
6571               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6572               fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
6573               fnd_message.set_token ('NULL_PARAM', 'Abstracted By is NULL.Please provide the valid value');
6574               fnd_msg_pub.ADD;
6575               RAISE fnd_api.g_exc_error;
6576          END IF;
6577 
6578 --------------------------------------------------------------------------------
6579 --Cumulative Volumen/Method validation
6580 --------------------------------------------------------------------------------
6581          IF (   p_var_rent_rec.cumulative_vol_code IS NOT NULL
6582              OR p_var_rent_rec.cumulative_vol_meaning IS NOT NULL)
6583          THEN
6584             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Cumulative Volume'
6585                                    , 3
6586                                     );
6587             pn_varen_util.validate_lookups (p_lookup_type                 => g_cumulative_vol
6588                                           , x_lookup_meaning              => p_var_rent_rec.cumulative_vol_meaning
6589                                           , x_lookup_code                 => p_var_rent_rec.cumulative_vol_code
6590                                           , x_return_status               => l_return_status
6591                                            );
6592             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Cumulative Volume Code :'
6593                                      || p_var_rent_rec.cumulative_vol_code
6594                                    , 3
6595                                     );
6596 
6597             IF (l_return_status = fnd_api.g_ret_sts_error)
6598             THEN
6599                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Cumulative Volume Meaning Expected Error:'
6600                                         || p_var_rent_rec.cumulative_vol_meaning
6601                                       , 3
6602                                        );
6603                fnd_message.set_name ('PN'
6604                                    , 'PN_VAR_CUMM_VOL'
6605                                     );
6606                fnd_message.set_token ('CUMULATIVE_VOL_CODE_MEANING'
6607                                     ,    p_var_rent_rec.cumulative_vol_meaning
6608                                       || '/'
6609                                       || p_var_rent_rec.cumulative_vol_code
6610                                      );
6611                fnd_msg_pub.ADD;
6612                RAISE fnd_api.g_exc_error;
6613 
6614             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6615             THEN
6616             pn_varen_util.pvt_debug
6617                                     (   'PN_VAREN_PVT: Validate_Var_Rent: Cumulative Volume Meaning Un-Expected Error:'
6618                                      || p_var_rent_rec.cumulative_vol_meaning
6619                                    , 3
6620                                     );
6621                fnd_message.set_name ('PN'
6622                                    , 'PN_VAR_CUMM_VOL'
6623                                     );
6624                fnd_message.set_token ('CUMULATIVE_VOL_CODE_MEANING'
6625                                     ,    p_var_rent_rec.cumulative_vol_meaning
6626                                       || '/'
6627                                       || p_var_rent_rec.cumulative_vol_code
6628                                      );
6629                fnd_msg_pub.ADD;
6630                RAISE fnd_api.g_exc_unexpected_error;
6631 
6632             ELSE
6633                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Cumulative Volume Code Success:'
6634                                         || p_var_rent_rec.cumulative_vol_code
6635                                       , 3
6636                                        );
6637             END IF;
6638          ELSIF (   p_var_rent_rec.cumulative_vol_code IS NULL
6639                 OR p_var_rent_rec.cumulative_vol_meaning IS NULL)
6640          THEN
6641             p_var_rent_rec.cumulative_vol_code                                           := 'C';
6642             p_var_rent_rec.cumulative_vol_meaning                                        := 'Cumulative';
6643             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Cumulative Volume Code Success:'
6644                                      || p_var_rent_rec.cumulative_vol_code
6645                                    , 3
6646                                     );
6647          ELSIF (l_cumulative_vol IS NOT NULL)
6648          THEN
6649             p_var_rent_rec.cumulative_vol_code     := l_cumulative_vol;
6650          ELSE
6651             pn_varen_util.pvt_debug ('PN_VAREN_PVT: CUMULATIVE_VOL is NULL'
6652                                    , 3
6653                                     );
6654               fnd_message.set_name ('PN', 'PN_API_ALL_NULL_PARAMETER');
6655               fnd_message.set_token ('API_NAME', 'PN_VAR_RENT_PVT');
6656               fnd_message.set_token ('NULL_PARAM', 'CUMULATIVE_VOL is NULL');
6657               fnd_msg_pub.ADD;
6658               RAISE fnd_api.g_exc_error;
6659          END IF;
6660 
6661 --------------------------------------------------------------------------------
6662 --Proration Rule validation or partial year method
6663 --------------------------------------------------------------------------------
6664          IF (   p_var_rent_rec.proration_rule_code IS NOT NULL
6665              OR p_var_rent_rec.proration_rule_meaning IS NOT NULL)
6666          THEN
6667             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent:  Calling Proration Rule / Parial Year Method'
6668                                    , 3
6669                                     );
6670             pn_varen_util.validate_lookups (p_lookup_type                 => g_proration_rule
6671                                           , x_lookup_meaning              => p_var_rent_rec.proration_rule_meaning
6672                                           , x_lookup_code                 => p_var_rent_rec.proration_rule_code
6673                                           , x_return_status               => l_return_status
6674                                            );
6675             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Proration Rule / Parial Year Method Code :'
6676                                      || p_var_rent_rec.proration_rule_code
6677                                    , 3
6678                                     );
6679 
6680             IF (l_return_status = fnd_api.g_ret_sts_error)
6681             THEN
6682                fnd_message.set_name ('PN'
6683                                    , 'PN_VAR_PRO_RUL'
6684                                     );
6685                fnd_message.set_token ('PRORATION_RULE_CODE_MEANING'
6686                                     ,    p_var_rent_rec.proration_rule_meaning
6687                                       || '/'
6688                                       || p_var_rent_rec.proration_rule_code
6689                                      );
6690                fnd_msg_pub.ADD;
6691                RAISE fnd_api.g_exc_error;
6692                pn_varen_util.pvt_debug
6693                     (   'PN_VAREN_PVT: Validate_Var_Rent: Proration Rule / Parial Year Method Meaning Expected Error :'
6694                      || p_var_rent_rec.proration_rule_meaning
6695                    , 3
6696                     );
6697             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6698             THEN
6699                fnd_message.set_name ('PN'
6700                                    , 'PN_VAR_PRO_RUL'
6701                                     );
6702                fnd_message.set_token ('PRORATION_RULE_CODE_MEANING'
6703                                     ,    p_var_rent_rec.proration_rule_meaning
6704                                       || '/'
6705                                       || p_var_rent_rec.proration_rule_code
6706                                      );
6707                fnd_msg_pub.ADD;
6708                RAISE fnd_api.g_exc_unexpected_error;
6709                pn_varen_util.pvt_debug
6710                   (   'PN_VAREN_PVT: Validate_Var_Rent: Proration Rule / Parial Year Method Meaning Un-Expected Error :'
6711                    || p_var_rent_rec.proration_rule_meaning
6712                  , 3
6713                   );
6714             ELSE
6715                pn_varen_util.pvt_debug
6716                              (   'PN_VAREN_PVT: Validate_Var_Rent: Proration Rule / Parial Year Method Code Success :'
6717                               || p_var_rent_rec.proration_rule_code
6718                             , 3
6719                              );
6720             END IF;
6721          ELSIF (   p_var_rent_rec.proration_rule_code IS NULL
6722                 OR p_var_rent_rec.proration_rule_meaning IS NULL)
6723          THEN
6724             p_var_rent_rec.proration_rule_code                                           := 'STD';
6725             p_var_rent_rec.proration_rule_meaning                                        := 'Standard';
6726             pn_varen_util.pvt_debug
6727                              (   'PN_VAREN_PVT: Validate_Var_Rent: Proration Rule / Parial Year Method Code Success :'
6728                               || p_var_rent_rec.proration_rule_code
6729                             , 3
6730                              );
6731          ELSIF (l_proration_rule IS NOT NULL)
6732          THEN
6733             p_var_rent_rec.proration_rule_code                                           := l_proration_rule;
6734          END IF;
6735 
6736 --------------------------------------------------------------------------------
6737 --Invoice On validation
6738 --------------------------------------------------------------------------------
6739          IF (   p_var_rent_rec.invoice_on_code IS NOT NULL
6740              OR p_var_rent_rec.invoice_on_meaning IS NOT NULL)
6741          THEN
6742             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent:  Calling Invoice on'
6743                                    , 3
6744                                     );
6745             pn_varen_util.validate_lookups (p_lookup_type                 => g_invoice_on
6746                                           , x_lookup_meaning              => p_var_rent_rec.invoice_on_meaning
6747                                           , x_lookup_code                 => p_var_rent_rec.invoice_on_code
6748                                           , x_return_status               => l_return_status
6749                                            );
6750             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Invoice on Code  :'
6751                                      || p_var_rent_rec.invoice_on_code
6752                                    , 3
6753                                     );
6754 
6755             IF (l_return_status = fnd_api.g_ret_sts_error)
6756             THEN
6757                fnd_message.set_name ('PN'
6758                                    , 'PN_VAR_INV_ON'
6759                                     );
6760                fnd_message.set_token ('INVOICE_ON_CODE_MEANING'
6761                                     ,    p_var_rent_rec.invoice_on_meaning
6762                                       || '/'
6763                                       || p_var_rent_rec.invoice_on_code
6764                                      );
6765                fnd_msg_pub.ADD;
6766                RAISE fnd_api.g_exc_error;
6767                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Invoice on Meaning Expected Error :'
6768                                         || p_var_rent_rec.invoice_on_meaning
6769                                       , 3
6770                                        );
6771             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6772             THEN
6773                fnd_message.set_name ('PN'
6774                                    , 'PN_VAR_INV_ON'
6775                                     );
6776                fnd_message.set_token ('INVOICE_ON_CODE_MEANING'
6777                                     ,    p_var_rent_rec.invoice_on_meaning
6778                                       || '/'
6779                                       || p_var_rent_rec.invoice_on_code
6780                                      );
6781                fnd_msg_pub.ADD;
6782                RAISE fnd_api.g_exc_unexpected_error;
6783                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Invoice on Meaning Un-Expected Error :'
6784                                         || p_var_rent_rec.invoice_on_meaning
6785                                       , 3
6786                                        );
6787             ELSE
6788                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Invoice on Code Success :'
6789                                         || p_var_rent_rec.invoice_on_code
6790                                       , 3
6791                                        );
6792             END IF;
6793          ELSIF (   p_var_rent_rec.invoice_on_code IS NULL
6794                 OR p_var_rent_rec.invoice_on_meaning IS NULL)
6795          THEN
6796             p_var_rent_rec.invoice_on_code                                               := 'ACTUAL';
6797             p_var_rent_rec.invoice_on_meaning                                            := 'Actual';
6798             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Invoice on Code Success :'
6799                                      || p_var_rent_rec.invoice_on_code
6800                                    , 3
6801                                     );
6802          ELSIF (l_invoice_on IS NOT NULL)
6803          THEN
6804             p_var_rent_rec.invoice_on_code                                               := l_invoice_on;
6805          ELSE
6806             pn_varen_util.pvt_debug ('PN_VAREN_PVT: INVOICE_ON is NULL'
6807                                    , 3
6808                                     );
6809          END IF;
6810 
6811 -------------------------------------------------------------------
6812 -- Validating the combination of Proration rule and cumulative vol
6813 -------------------------------------------------------------------
6814          IF (   (   p_var_rent_rec.proration_rule_code IS NOT NULL
6815                  OR p_var_rent_rec.cumulative_vol_code IS NOT NULL)
6816              OR (   p_var_rent_rec.proration_rule_meaning IS NOT NULL
6817                  OR p_var_rent_rec.cumulative_vol_meaning IS NOT NULL
6818                 )
6819             )
6820          THEN
6821             pn_varen_util.check_prora_cum_comb (p_proration_rule_code         => p_var_rent_rec.proration_rule_code
6822                                               , p_cumulative_vol_code         => p_var_rent_rec.cumulative_vol_code
6823                                               , x_return_status               => l_return_status
6824                                                );
6825             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: check_prora_cum_comb - L_RETURN_STATUS : '
6826                                      || l_return_status
6827                                    , 3
6828                                     );
6829 
6830             IF l_return_status = 'E'
6831             THEN
6832                fnd_message.set_name ('PN'
6833                                    , 'PN_VAR_CALC_PRO_CODE'
6834                                     );
6835                RAISE fnd_api.g_exc_error;
6836             ELSIF l_return_status = 'U'
6837             THEN
6838                fnd_message.set_name ('PN'
6839                                    , 'PN_VAR_CALC_PRO_CODE'
6840                                     );
6841                RAISE fnd_api.g_exc_unexpected_error;
6842             END IF;
6843          END IF;
6844 
6845 -------------------------------------------------------------------
6846 -- Validating the combination of Proration rule and Invoice code
6847 -------------------------------------------------------------------
6848          IF (   (   p_var_rent_rec.proration_rule_code IS NOT NULL
6849                  OR p_var_rent_rec.invoice_on_code IS NOT NULL)
6850              OR (   p_var_rent_rec.proration_rule_meaning IS NOT NULL
6851                  OR p_var_rent_rec.invoice_on_meaning IS NOT NULL)
6852             )
6853          THEN
6854             pn_varen_util.check_prora_invon_comb (p_proration_rule_code         => p_var_rent_rec.proration_rule_code
6855                                                 , p_invoice_on_code             => p_var_rent_rec.invoice_on_code
6856                                                 , x_return_status               => l_return_status
6857                                                  );
6858             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: check_prora_invon_comb - L_RETURN_STATUS : '
6859                                      || l_return_status
6860                                    , 3
6861                                     );
6862 
6863             IF (l_return_status = fnd_api.g_ret_sts_error)
6864             THEN
6865                fnd_message.set_name ('PN'
6866                                    , 'PN_VAR_FOR_PRO_CODE'
6867                                     );
6868                RAISE fnd_api.g_exc_error;
6869             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6870             THEN
6871                fnd_message.set_name ('PN'
6872                                    , 'PN_VAR_FOR_PRO_CODE'
6873                                     );
6874                RAISE fnd_api.g_exc_unexpected_error;
6875             END IF;
6876          END IF;
6877 
6878 --------------------------------------------------------------------------------
6879 --Negative Rent Validation
6880 --------------------------------------------------------------------------------
6881          IF (   p_var_rent_rec.negative_rent_code IS NOT NULL
6882              OR p_var_rent_rec.negative_rent_meaning IS NOT NULL)
6883          THEN
6884             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent:  Calling Negative Rent'
6885                                    , 3
6886                                     );
6887             pn_varen_util.validate_lookups (p_lookup_type                 => g_negative_rent
6888                                           , x_lookup_meaning              => p_var_rent_rec.negative_rent_meaning
6889                                           , x_lookup_code                 => p_var_rent_rec.negative_rent_code
6890                                           , x_return_status               => l_return_status
6891                                            );
6892             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Negative Rent :'
6893                                      || p_var_rent_rec.negative_rent_code
6894                                    , 3
6895                                     );
6896 
6897             IF (l_return_status = fnd_api.g_ret_sts_error)
6898             THEN
6899                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Negative Rent Meaning Expected Error :'
6900                                         || p_var_rent_rec.negative_rent_meaning
6901                                       , 3
6902                                        );
6903                fnd_message.set_name ('PN'
6904                                    , 'PN_VAR_NEG_REN'
6905                                     );
6906                fnd_message.set_token ('NEGATIVE_RENT_CODE_MEANING'
6907                                     ,    p_var_rent_rec.negative_rent_meaning
6908                                       || '/'
6909                                       || p_var_rent_rec.negative_rent_code
6910                                      );
6911                fnd_msg_pub.ADD;
6912                RAISE fnd_api.g_exc_error;
6913 
6914             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6915             THEN
6916                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Negative Rent Meaning Un-Expected Error :'
6917                                         || p_var_rent_rec.negative_rent_meaning
6918                                       , 3
6919                                        );
6920                fnd_message.set_name ('PN'
6921                                    , 'PN_VAR_NEG_REN'
6922                                     );
6923                fnd_message.set_token ('NEGATIVE_RENT_CODE_MEANING'
6924                                     ,    p_var_rent_rec.negative_rent_meaning
6925                                       || '/'
6926                                       || p_var_rent_rec.negative_rent_code
6927                                      );
6928                fnd_msg_pub.ADD;
6929                RAISE fnd_api.g_exc_unexpected_error;
6930 
6931             ELSE
6932                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Negative Rent Code Success :'
6933                                         || p_var_rent_rec.negative_rent_code
6934                                       , 3
6935                                        );
6936             END IF;
6937          ELSIF (   p_var_rent_rec.negative_rent_code IS NULL
6938                 OR p_var_rent_rec.negative_rent_meaning IS NULL)
6939          THEN
6940             p_var_rent_rec.negative_rent_code                                            := 'IGNORE';
6941             p_var_rent_rec.negative_rent_meaning                                         := 'Ignore';
6942             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Negative Rent Code Success :'
6943                                      || p_var_rent_rec.negative_rent_code
6944                                    , 3
6945                                     );
6946          ELSIF (l_negative_rent IS NOT NULL)
6947          THEN
6948             p_var_rent_rec.negative_rent_code      := l_negative_rent;
6949          END IF;
6950 
6951 --------------------------------------------------------------------------------
6952 --Term templates validation
6953 --------------------------------------------------------------------------------
6954          IF (   p_var_rent_rec.term_template_id IS NOT NULL
6955              OR p_var_rent_rec.term_template_name IS NOT NULL)
6956          THEN
6957             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent:  Calling Term Template'
6958                                    , 3
6959                                     );
6960             pn_varen_util.validate_term_template (p_org_id                      => g_org_id
6961                                                 , x_term_template_id            => p_var_rent_rec.term_template_id
6962                                                 , x_term_template_name          => p_var_rent_rec.term_template_name
6963                                                 , x_return_status               => l_return_status
6964                                                  );
6965             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Term Template Id :'
6966                                      || p_var_rent_rec.term_template_id
6967                                    , 3
6968                                     );
6969 
6970             IF (l_return_status = fnd_api.g_ret_sts_error)
6971             THEN
6972                fnd_message.set_name ('PN'
6973                                    , 'PN_VAR_TRM_TEM'
6974                                     );
6975                fnd_message.set_token ('TERM_TEMPLATE_ID_NAME'
6976                                     ,    p_var_rent_rec.term_template_id
6977                                       || '/'
6978                                       || p_var_rent_rec.term_template_name
6979                                      );
6980                fnd_msg_pub.ADD;
6981                RAISE fnd_api.g_exc_error;
6982 
6983             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
6984             THEN
6985                fnd_message.set_name ('PN'
6986                                    , 'PN_VAR_TRM_TEM'
6987                                     );
6988                fnd_message.set_token ('TERM_TEMPLATE_ID_NAME'
6989                                     ,    p_var_rent_rec.term_template_id
6990                                       || '/'
6991                                       || p_var_rent_rec.term_template_name
6992                                      );
6993                fnd_msg_pub.ADD;
6994                RAISE fnd_api.g_exc_unexpected_error;
6995 
6996             ELSE
6997                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Term Template Id Success :'
6998                                         || p_var_rent_rec.term_template_id
6999                                       , 3
7000                                        );
7001             END IF;
7002          ELSIF (l_term_template_id IS NOT NULL)
7003          THEN
7004             p_var_rent_rec.term_template_id   := l_term_template_id;
7005          ELSE
7006             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent: Term Template Id IS NULL:',3);
7007             fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
7008             fnd_message.set_token('ERR_MSG', 'Term Template ID has not been mentioned in either Variable Rent/Lease');
7009             fnd_msg_pub.ADD;
7010             RAISE fnd_api.g_exc_error;
7011          END IF;
7012 
7013 --------------------------------------------------------------------------------
7014 --Currency Validation
7015 --------------------------------------------------------------------------------
7016          IF (p_var_rent_rec.currency_code IS NOT NULL)
7017          THEN
7018             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent:  Calling Currency'
7019                                    , 3
7020                                     );
7021             pn_varen_util.validate_currency (p_currency_code               => p_var_rent_rec.currency_code
7022                                            , x_return_status               => l_return_status
7023                                             );
7024 
7025             IF (l_return_status = fnd_api.g_ret_sts_error)
7026             THEN
7027                fnd_message.set_name ('PN'
7028                                    , 'PN_VAR_CUR_CODE'
7029                                     );
7030                fnd_message.set_token ('CURRENCY_CODE'
7031                                     , p_var_rent_rec.currency_code
7032                                      );
7033                fnd_msg_pub.ADD;
7034                RAISE fnd_api.g_exc_error;
7035 
7036             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7037             THEN
7038                fnd_message.set_name ('PN'
7039                                    , 'PN_VAR_CUR_CODE'
7040                                     );
7041                fnd_message.set_token ('CURRENCY_CODE'
7042                                     , p_var_rent_rec.currency_code
7043                                      );
7044                fnd_msg_pub.ADD;
7045                RAISE fnd_api.g_exc_unexpected_error;
7046                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent:  Currency Code Un-Expected Error :'
7047                                         || p_var_rent_rec.currency_code
7048                                       , 3
7049                                        );
7050             ELSE
7051                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent:  Currency Code Success :'
7052                                         || p_var_rent_rec.currency_code
7053                                       , 3
7054                                        );
7055             END IF;
7056          ELSE
7057            pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Var_Rent:  Currency Code IS NULL:',3);
7058            fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
7059            fnd_message.set_token('ERR_MSG', 'Please provide Currency Code for the VAR Rent');
7060            fnd_msg_pub.ADD;
7061            RAISE fnd_api.g_exc_error;
7062          END IF;
7063 
7064          pn_varen_util.pvt_debug ('PN_VAREN_PVT: End  - Variable Rent validations'
7065                                 , 3
7066                                  );
7067       END IF;
7068 
7069 --------------------------------------------------------------------------------
7070 --Variable Rent Attributes Validation
7071 --------------------------------------------------------------------------------
7072     -- Below code commented by Vivek 0n 13-Dec-2010
7073 
7074     IF (get_attribute_status('PN_VAR_RENTS') > 0) THEN
7075       IF NOT ((p_var_rent_rec.attribute_category = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute_category IS NULL)
7076                                         AND (p_var_rent_rec.attribute1 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute1 IS NULL)
7077                                         AND (p_var_rent_rec.attribute2 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute2 IS NULL)
7078                                         AND (p_var_rent_rec.attribute3 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute3 IS NULL)
7079                                         AND (p_var_rent_rec.attribute4 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute4 IS NULL)
7080                                         AND (p_var_rent_rec.attribute5 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute5 IS NULL)
7081                                         AND (p_var_rent_rec.attribute6 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute6 IS NULL)
7082                                         AND (p_var_rent_rec.attribute7 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute7 IS NULL)
7083                                         AND (p_var_rent_rec.attribute8 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute8 IS NULL)
7084                                         AND (p_var_rent_rec.attribute9 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute9 IS NULL)
7085                                         AND (p_var_rent_rec.attribute10 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute10 IS NULL)
7086                                         AND (p_var_rent_rec.attribute11 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute11 IS NULL)
7087                                         AND (p_var_rent_rec.attribute12 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute12 IS NULL)
7088                                         AND (p_var_rent_rec.attribute13 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute13 IS NULL)
7089                                         AND (p_var_rent_rec.attribute14 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute14 IS NULL)
7090                                         AND (p_var_rent_rec.attribute15 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute15 IS NULL)
7091                                 ) THEN
7092          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_RENTS'
7093                                            , p_attribute_category          => p_var_rent_rec.attribute_category
7094                                            , p_attribute1                  => p_var_rent_rec.attribute1
7095                                            , p_attribute2                  => p_var_rent_rec.attribute2
7096                                            , p_attribute3                  => p_var_rent_rec.attribute3
7097                                            , p_attribute4                  => p_var_rent_rec.attribute4
7098                                            , p_attribute5                  => p_var_rent_rec.attribute5
7099                                            , p_attribute6                  => p_var_rent_rec.attribute6
7100                                            , p_attribute7                  => p_var_rent_rec.attribute7
7101                                            , p_attribute8                  => p_var_rent_rec.attribute8
7102                                            , p_attribute9                  => p_var_rent_rec.attribute9
7103                                            , p_attribute10                 => p_var_rent_rec.attribute10
7104                                            , p_attribute11                 => p_var_rent_rec.attribute11
7105                                            , p_attribute12                 => p_var_rent_rec.attribute12
7106                                            , p_attribute13                 => p_var_rent_rec.attribute13
7107                                            , p_attribute14                 => p_var_rent_rec.attribute14
7108                                            , p_attribute15                 => p_var_rent_rec.attribute15
7109                                            , x_return_msg                  => l_return_msg
7110                                            , x_return_status               => l_return_status
7111                                             );
7112 
7113                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
7114                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
7115                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_RENTS Descriptive Fields Error'||l_return_msg);
7116                   fnd_msg_pub.ADD;
7117                   RAISE fnd_api.g_exc_error;
7118                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7119                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
7120                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_RENTS Descriptive Fields Error'||l_return_msg);
7121                   fnd_msg_pub.ADD;
7122                   RAISE fnd_api.g_exc_unexpected_error;
7123                END IF;
7124         END IF;
7125       END IF; -- End of attributes valitions in create var rent*/
7126    /*  --Commented as DFF is not available
7127     IF (get_attribute_status('PN_VAR_RENTS') > 0) THEN
7128       IF NOT ((p_var_rent_rec.dates_attribute_category = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute_category IS NULL)
7129                                         AND (p_var_rent_rec.dates_attribute1 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute1 IS NULL)
7130                                         AND (p_var_rent_rec.dates_attribute2 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute2 IS NULL)
7131                                         AND (p_var_rent_rec.dates_attribute3 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute3 IS NULL)
7132                                         AND (p_var_rent_rec.dates_attribute4 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute4 IS NULL)
7133                                         AND (p_var_rent_rec.dates_attribute5 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute5 IS NULL)
7134                                         AND (p_var_rent_rec.dates_attribute6 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute6 IS NULL)
7135                                         AND (p_var_rent_rec.dates_attribute7 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute7 IS NULL)
7136                                         AND (p_var_rent_rec.dates_attribute8 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute8 IS NULL)
7137                                         AND (p_var_rent_rec.dates_attribute9 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute9 IS NULL)
7138                                         AND (p_var_rent_rec.dates_attribute10 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute10 IS NULL)
7139                                         AND (p_var_rent_rec.dates_attribute11 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute11 IS NULL)
7140                                         AND (p_var_rent_rec.dates_attribute12 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute12 IS NULL)
7141                                         AND (p_var_rent_rec.dates_attribute13 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute13 IS NULL)
7142                                         AND (p_var_rent_rec.dates_attribute14 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute14 IS NULL)
7143                                         AND (p_var_rent_rec.dates_attribute15 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.dates_attribute15 IS NULL)
7144                                 ) THEN
7145          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_RENTS'
7146                                            , p_attribute_category          => p_var_rent_rec.dates_attribute_category
7147                                            , p_attribute1                  => p_var_rent_rec.dates_attribute1
7148                                            , p_attribute2                  => p_var_rent_rec.dates_attribute2
7149                                            , p_attribute3                  => p_var_rent_rec.dates_attribute3
7150                                            , p_attribute4                  => p_var_rent_rec.dates_attribute4
7151                                            , p_attribute5                  => p_var_rent_rec.dates_attribute5
7152                                            , p_attribute6                  => p_var_rent_rec.dates_attribute6
7153                                            , p_attribute7                  => p_var_rent_rec.dates_attribute7
7154                                            , p_attribute8                  => p_var_rent_rec.dates_attribute8
7155                                            , p_attribute9                  => p_var_rent_rec.dates_attribute9
7156                                            , p_attribute10                 => p_var_rent_rec.dates_attribute10
7157                                            , p_attribute11                 => p_var_rent_rec.dates_attribute11
7158                                            , p_attribute12                 => p_var_rent_rec.dates_attribute12
7159                                            , p_attribute13                 => p_var_rent_rec.dates_attribute13
7160                                            , p_attribute14                 => p_var_rent_rec.dates_attribute14
7161                                            , p_attribute15                 => p_var_rent_rec.dates_attribute15
7162                                            , x_return_msg                  => l_return_msg
7163                                            , x_return_status               => x_return_status
7164                                             );
7165 
7166                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
7167                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
7168                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN VAR DATES Descriptive Fields Error');
7169                   fnd_msg_pub.ADD;
7170                   RAISE fnd_api.g_exc_error;
7171                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
7172                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
7173                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN VAR DATES Descriptive Fields Error');
7174                   fnd_msg_pub.ADD;
7175                   RAISE fnd_api.g_exc_unexpected_error;
7176                END IF;
7177         END IF;
7178       END IF; -- End of attributes valitions in create var rent dates */
7179 
7180      x_return_status := fnd_api.g_ret_sts_success;
7181    EXCEPTION
7182       WHEN fnd_api.g_exc_error THEN
7183           x_return_status := fnd_api.g_ret_sts_error;
7184           pn_varen_util.pvt_debug('PN_VAREN_PVT: Validate_Var_Rent: Exception'||SQLERRM,3);
7185       WHEN OTHERS THEN
7186          x_return_status  := fnd_api.g_ret_sts_unexp_error;
7187          pn_varen_util.pvt_debug('PN_VAREN_PVT: Validate_Var_Rent: Exception Result of Validate_Var_Rent procedure :'|| SQLERRM,3);
7188    END validate_var_rent;
7189 
7190 --------------------------------------------------------------------------------
7191 --  NAME         : UPD_VAL_VARENT
7192 --  DESCRIPTION  : Procedure Update validate variable rent details
7193 --  PURPOSE      :
7194 --  INVOKED FROM :
7195 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE       IN Parameter
7196 --               : X_RETURN_STATUS              OUT Parameter
7197 --  REFERENCE    :
7198 --  HISTORY      :
7199 --
7200 --  11-OCT-2010   vkatta   o Created
7201 --------------------------------------------------------------------------------
7202    PROCEDURE upd_val_varent (
7203       p_upd_var_rent_rec_type    IN OUT NOCOPY upd_var_rent_rec_type
7204     , x_return_status            OUT NOCOPY VARCHAR2
7205    )
7206    IS
7207       l_return_status               VARCHAR2 (1);
7208       l_lease_commencement_date     DATE;
7209       l_lease_termination_date      DATE;
7210    BEGIN
7211 
7212       pn_varen_util.pvt_debug
7213                           (   'PN_VAREN_PVT: Upd_Val_Varent: Start of Update validate variable rent details procedure'
7214                            || SQLERRM
7215                          , 3
7216                           );
7217 
7218 ------------------------------------------------------------------------------------
7219 --Capturing Lease id, location id and Variable Rent Details from variable rent number
7220 -----------------------------------------------------------------------------------
7221       -- The below code has been commented by Vivek on 08-Dec-2010
7222       /*
7223       IF (p_upd_var_rent_rec_type.rent_num IS NULL)
7224       THEN
7225          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent: Please pass the variable rent details'
7226                                 , 3
7227                                  );
7228          --fnd_message.set_name ('PN', 'PN_VAR_NVALID_LEASE');
7229          --fnd_msg_pub.ADD;
7230          RAISE fnd_api.g_exc_error;
7231          x_return_status                                                              := fnd_api.g_ret_sts_error;
7232       ELSE
7233          pn_varen_util.val_rent_details (p_rent_num                    => p_upd_var_rent_rec_type.rent_num
7234                                        , x_var_rent_id                 => p_upd_var_rent_rec_type.var_rent_id
7235                                        , x_lease_id                    => p_upd_var_rent_rec_type.lease_id
7236                                        , x_location_id                 => p_upd_var_rent_rec_type.location_id
7237                                        , x_return_status               => l_return_status
7238                                         );
7239          pn_varen_util.pvt_debug
7240                          (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of pn_varen_util.val_rent_details procedure '
7241                           || l_return_status
7242                         , 3
7243                          );
7244 
7245          IF (l_return_status = fnd_api.g_ret_sts_error)
7246          THEN
7247             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7248             --fnd_msg_pub.ADD;
7249             RAISE fnd_api.g_exc_error;
7250             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num error: '
7251                                      || p_upd_var_rent_rec_type.rent_num
7252                                    , 3
7253                                     );
7254          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7255          THEN
7256             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7257             --fnd_msg_pub.ADD;
7258             RAISE fnd_api.g_exc_unexpected_error;
7259             pn_varen_util.pvt_debug
7260                                (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num unexpected error: '
7261                                 || p_upd_var_rent_rec_type.rent_num
7262                               , 3
7263                                );
7264          ELSE
7265             l_return_status                                                              := fnd_api.g_ret_sts_success;
7266             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num success: '
7267                                      || p_upd_var_rent_rec_type.rent_num
7268                                    , 3
7269                                     );
7270          END IF;
7271       END IF;
7272       */
7273       -- The below code has been added by Vivek on 08-Dec-2010
7274 
7275       IF   (p_upd_var_rent_rec_type.rent_num IS NOT NULL AND p_upd_var_rent_rec_type.rent_num<> pn_varen_util.g_pn_miss_char)
7276         OR (p_upd_var_rent_rec_type.var_rent_id IS NOT NULL AND p_upd_var_rent_rec_type.var_rent_id<> pn_varen_util.g_pn_miss_num)
7277       THEN
7278          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent: Please pass the variable rent details'
7279                                 , 3
7280                                  );
7281          --fnd_message.set_name ('PN', 'PN_VAR_NVALID_LEASE');
7282          --fnd_msg_pub.ADD;
7283          RAISE fnd_api.g_exc_error;
7284          x_return_status                                                              := fnd_api.g_ret_sts_error;
7285       ELSE
7286          pn_varen_util.val_rent_details (p_rent_num                    => p_upd_var_rent_rec_type.rent_num
7287                                        , x_var_rent_id                 => p_upd_var_rent_rec_type.var_rent_id
7288                                        , x_return_status               => l_return_status
7289                                         );
7290          pn_varen_util.pvt_debug
7291                          (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of pn_varen_util.val_rent_details procedure '
7292                           || l_return_status
7293                         , 3
7294                          );
7295 
7296          IF (l_return_status = fnd_api.g_ret_sts_error)
7297          THEN
7298             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7299             --fnd_msg_pub.ADD;
7300             RAISE fnd_api.g_exc_error;
7301             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num error: '
7302                                      || p_upd_var_rent_rec_type.rent_num
7303                                    , 3
7304                                     );
7305          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7306          THEN
7307             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7308             --fnd_msg_pub.ADD;
7309             RAISE fnd_api.g_exc_unexpected_error;
7310             pn_varen_util.pvt_debug
7311                                (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num unexpected error: '
7312                                 || p_upd_var_rent_rec_type.rent_num
7313                               , 3
7314                                );
7315          ELSE
7316             l_return_status                                                              := fnd_api.g_ret_sts_success;
7317             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.rent_num success: '
7318                                      || p_upd_var_rent_rec_type.rent_num
7319                                    , 3
7320                                     );
7321          END IF;
7322       END IF;
7323 
7324       IF p_upd_var_rent_rec_type.lease_id IS NOT NULL AND p_upd_var_rent_rec_type.lease_id<> pn_varen_util.g_pn_miss_num
7325       THEN
7326 
7327          pn_varen_util.validate_lease_id ( p_lease_id                => p_upd_var_rent_rec_type.lease_id
7328                                          , x_lease_commencement_date => l_lease_commencement_date
7329                                          , x_lease_termination_date  => l_lease_termination_date
7330                                          , x_return_status           => l_return_status
7331                                          );
7332 
7333          pn_varen_util.pvt_debug
7334                          (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of pn_varen_util.validate_lease_id procedure '
7335                           || l_return_status
7336                         , 3
7337                          );
7338 
7339          IF (l_return_status <> fnd_api.g_ret_sts_success)
7340          THEN
7341             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7342             --fnd_msg_pub.ADD;
7343 
7344             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.lease_id error: '
7345                                      || p_upd_var_rent_rec_type.lease_id
7346                                    , 3
7347                                     );
7348             RAISE fnd_api.g_exc_error;
7349          END IF;
7350 
7351       END IF;
7352 
7353 
7354       IF  ( p_upd_var_rent_rec_type.location_id IS NOT NULL AND p_upd_var_rent_rec_type.location_id<> pn_varen_util.g_pn_miss_num)
7355         OR(p_upd_var_rent_rec_type.location_code IS NOT NULL AND p_upd_var_rent_rec_type.location_code<> pn_varen_util.g_pn_miss_char)
7356       THEN
7357 
7358          pn_varen_util.validate_location ( p_lease_id                => p_upd_var_rent_rec_type.lease_id
7359                                          , x_location_id             => p_upd_var_rent_rec_type.location_id
7360                                          , x_location_code           => p_upd_var_rent_rec_type.location_code
7361                                          , x_return_status           => l_return_status
7362                                          );
7363 
7364          pn_varen_util.pvt_debug
7365                          (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of pn_varen_util.validate_location procedure '
7366                           || l_return_status
7367                         , 3
7368                          );
7369 
7370          IF (l_return_status <> fnd_api.g_ret_sts_success)
7371          THEN
7372             --fnd_message.set_name ('PN' , 'PN_VAR_NVALID_LEASE');
7373             --fnd_msg_pub.ADD;
7374 
7375             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec_type.location_id error: '
7376                                      || p_upd_var_rent_rec_type.location_id
7377                                    , 3
7378                                     );
7379             RAISE fnd_api.g_exc_error;
7380          END IF;
7381 
7382       END IF;
7383 
7384 -----------------------------------------------------------------------------
7385 -- Validating the combination of Proration rule code and cumulative vol code
7386 -----------------------------------------------------------------------------
7387       IF (   (   p_upd_var_rent_rec_type.proration_rule_code IS NOT NULL
7388               OR p_upd_var_rent_rec_type.cumulative_vol_code IS NOT NULL
7389              )
7390           OR (   p_upd_var_rent_rec_type.proration_rule_meaning IS NOT NULL
7391               OR p_upd_var_rent_rec_type.cumulative_vol_meaning IS NOT NULL
7392              )
7393          )
7394       THEN
7395          pn_varen_util.check_prora_cum_comb (p_proration_rule_code         => p_upd_var_rent_rec_type.proration_rule_code
7396                                            , p_cumulative_vol_code         => p_upd_var_rent_rec_type.cumulative_vol_code
7397                                            , x_return_status               => l_return_status
7398                                             );
7399          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: check_prora_cum_comb - L_RETURN_STATUS : '
7400                                   || l_return_status
7401                                 , 3
7402                                  );
7403          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of check_prora_cum_comb procedure '
7404                                   || l_return_status
7405                                 , 3
7406                                  );
7407 
7408          IF l_return_status = fnd_api.g_ret_sts_error
7409          THEN
7410             fnd_message.set_name ('PN'
7411                                 , 'PN_VAR_CALC_PRO_CODE'
7412                                  );
7413             fnd_msg_pub.ADD;
7414             RAISE fnd_api.g_exc_error;
7415             x_return_status                                                              := fnd_api.g_ret_sts_error;
7416          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7417          THEN
7418             fnd_message.set_name ('PN'
7419                                 , 'PN_VAR_CALC_PRO_CODE'
7420                                  );
7421             fnd_msg_pub.ADD;
7422             RAISE fnd_api.g_exc_unexpected_error;
7423             x_return_status                                                              :=
7424                                                                                            fnd_api.g_ret_sts_unexp_error;
7425          ELSE
7426             x_return_status                                                              := fnd_api.g_ret_sts_success;
7427          END IF;
7428       END IF;
7429 
7430 -------------------------------------------------------------------------
7431 -- Validating the combination of Proration rule code and Invoice on code
7432 -------------------------------------------------------------------------
7433       IF (   (   p_upd_var_rent_rec_type.proration_rule_code IS NOT NULL
7434               OR p_upd_var_rent_rec_type.invoice_on_code IS NOT NULL
7435              )
7436           OR (   p_upd_var_rent_rec_type.proration_rule_meaning IS NOT NULL
7437               OR p_upd_var_rent_rec_type.invoice_on_meaning IS NOT NULL
7438              )
7439          )
7440       THEN
7441          pn_varen_util.check_prora_invon_comb (p_proration_rule_code         => p_upd_var_rent_rec_type.proration_rule_code
7442                                              , p_invoice_on_code             => p_upd_var_rent_rec_type.invoice_on_code
7443                                              , x_return_status               => l_return_status
7444                                               );
7445          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: check_prora_invon_comb - L_RETURN_STATUS : '
7446                                   || l_return_status
7447                                 , 3
7448                                  );
7449          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of check_prora_invon_comb procedure '
7450                                   || l_return_status
7451                                 , 3
7452                                  );
7453 
7454          IF l_return_status = fnd_api.g_ret_sts_error
7455          THEN
7456             fnd_message.set_name ('PN'
7457                                 , 'PN_VAR_FOR_PRO_CODE'
7458                                  );
7459             fnd_msg_pub.ADD;
7460             RAISE fnd_api.g_exc_error;
7461             x_return_status                                                              := fnd_api.g_ret_sts_error;
7462          ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error
7463          THEN
7464             fnd_message.set_name ('PN'
7465                                 , 'PN_VAR_FOR_PRO_CODE'
7466                                  );
7467             fnd_msg_pub.ADD;
7468             RAISE fnd_api.g_exc_unexpected_error;
7469             x_return_status                                                              :=
7470                                                                                            fnd_api.g_ret_sts_unexp_error;
7471          ELSE
7472             x_return_status                                                              := fnd_api.g_ret_sts_success;
7473          END IF;
7474       END IF;
7475    EXCEPTION
7476       WHEN OTHERS
7477       THEN
7478          pn_varen_util.pvt_debug
7479                (   'PN_VAREN_PVT: Upd_Val_Varent: Exception Result of Update validate variable rent details procedure'
7480                 || SQLERRM
7481               , 3
7482                );
7483    END upd_val_varent;
7484 
7485 --------------------------------------------------------------------------------
7486 --  NAME         : INI_VAL_DATES
7487 --  DESCRIPTION  : Variable Rent Dates procedure ot initialize dates
7488 --  PURPOSE      :
7489 --  INVOKED FROM :
7490 --  ARGUMENTS    : P_VAR_RENT_REC       IN Parameter
7491 --               : X_RETURN_STATUS      OUT Parameter
7492 --  REFERENCE    :
7493 --  HISTORY      :
7494 --
7495 --  20-SEP-2010   vkatta   o Created
7496 --------------------------------------------------------------------------------
7497    PROCEDURE ini_val_dates (
7498       p_var_rent_rec             IN OUT NOCOPY var_rent_rec_type
7499     , x_return_status            OUT NOCOPY VARCHAR2
7500    )
7501    IS
7502    BEGIN
7503       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Ini_Val_Dates: Start of initializing variable rent dates record :'
7504                              , 3
7505                               );
7506 
7507 --------------------------------------------------------------------------------
7508 -- If Variable Rent record type (Variable Rent dates) has not been initialized then assign it to null
7509 --------------------------------------------------------------------------------
7510       IF p_var_rent_rec.use_gl_calendar = pn_varen_util.g_pn_miss_char
7511       THEN
7512          p_var_rent_rec.use_gl_calendar                                               := NULL;
7513       END IF;
7514 
7515       IF p_var_rent_rec.gl_period_set_name = pn_varen_util.g_pn_miss_char
7516       THEN
7517          p_var_rent_rec.gl_period_set_name                                            := NULL;
7518       END IF;
7519 
7520       IF p_var_rent_rec.period_type = pn_varen_util.g_pn_miss_char
7521       THEN
7522          p_var_rent_rec.period_type                                                   := NULL;
7523       END IF;
7524 
7525       IF p_var_rent_rec.reptg_freq_code = pn_varen_util.g_pn_miss_char
7526       THEN
7527          p_var_rent_rec.reptg_freq_code                                               := NULL;
7528       END IF;
7529 
7530       IF p_var_rent_rec.reptg_freq_meaning = pn_varen_util.g_pn_miss_char
7531       THEN
7532          p_var_rent_rec.reptg_freq_meaning                                            := NULL;
7533       END IF;
7534 
7535       IF p_var_rent_rec.reptg_day_of_month = pn_varen_util.g_pn_miss_num
7536       THEN
7537          p_var_rent_rec.reptg_day_of_month                                            := NULL;
7538       END IF;
7539 
7540       IF p_var_rent_rec.reptg_days_after = pn_varen_util.g_pn_miss_num
7541       THEN
7542          p_var_rent_rec.reptg_days_after                                              := NULL;
7543       END IF;
7544 
7545       IF p_var_rent_rec.year_start_date = pn_varen_util.g_pn_miss_date
7546       THEN
7547          p_var_rent_rec.year_start_date                                               := NULL;
7548       END IF;
7549 
7550       IF p_var_rent_rec.vrg_reptg_freq_code = pn_varen_util.g_pn_miss_char
7551       THEN
7552          p_var_rent_rec.vrg_reptg_freq_code                                           := NULL;
7553       END IF;
7554 
7555       IF p_var_rent_rec.vrg_reptg_freq_meaning = pn_varen_util.g_pn_miss_char
7556       THEN
7557          p_var_rent_rec.vrg_reptg_freq_meaning                                        := NULL;
7558       END IF;
7559 
7560       IF p_var_rent_rec.invg_day_of_month = pn_varen_util.g_pn_miss_num
7561       THEN
7562          p_var_rent_rec.invg_day_of_month                                             := NULL;
7563       END IF;
7564 
7565       IF p_var_rent_rec.invg_days_after = pn_varen_util.g_pn_miss_num
7566       THEN
7567          p_var_rent_rec.invg_days_after                                               := NULL;
7568       END IF;
7569 
7570       IF p_var_rent_rec.comments = pn_varen_util.g_pn_miss_char
7571       THEN
7572          p_var_rent_rec.comments                                                      := NULL;
7573       END IF;
7574 
7575       IF p_var_rent_rec.invg_freq_code = pn_varen_util.g_pn_miss_char
7576       THEN
7577          p_var_rent_rec.invg_freq_code                                                := NULL;
7578       END IF;
7579 
7580       IF p_var_rent_rec.invg_freq_meaning = pn_varen_util.g_pn_miss_char
7581       THEN
7582          p_var_rent_rec.invg_freq_meaning                                             := NULL;
7583       END IF;
7584 
7585       IF p_var_rent_rec.last_update_date = pn_varen_util.g_pn_miss_date
7586       THEN
7587          p_var_rent_rec.last_update_date                                              := NULL;
7588       END IF;
7589 
7590       IF p_var_rent_rec.last_updated_by = pn_varen_util.g_pn_miss_num
7591       THEN
7592          p_var_rent_rec.last_updated_by                                               := NULL;
7593       END IF;
7594 
7595       IF p_var_rent_rec.creation_date = pn_varen_util.g_pn_miss_date
7596       THEN
7597          p_var_rent_rec.creation_date                                                 := NULL;
7598       END IF;
7599 
7600       IF p_var_rent_rec.created_by = pn_varen_util.g_pn_miss_num
7601       THEN
7602          p_var_rent_rec.created_by                                                    := NULL;
7603       END IF;
7604 
7605       IF p_var_rent_rec.last_update_login = pn_varen_util.g_pn_miss_num
7606       THEN
7607          p_var_rent_rec.last_update_login                                             := NULL;
7608       END IF;
7609 
7610       IF p_var_rent_rec.dates_attribute_category = pn_varen_util.g_pn_miss_char
7611       THEN
7612          p_var_rent_rec.dates_attribute_category                                      := NULL;
7613       END IF;
7614 
7615       IF p_var_rent_rec.dates_attribute1 = pn_varen_util.g_pn_miss_char
7616       THEN
7617          p_var_rent_rec.dates_attribute1                                              := NULL;
7618       END IF;
7619 
7620       IF p_var_rent_rec.dates_attribute2 = pn_varen_util.g_pn_miss_char
7621       THEN
7622          p_var_rent_rec.dates_attribute2                                              := NULL;
7623       END IF;
7624 
7625       IF p_var_rent_rec.dates_attribute3 = pn_varen_util.g_pn_miss_char
7626       THEN
7627          p_var_rent_rec.dates_attribute3                                              := NULL;
7628       END IF;
7629 
7630       IF p_var_rent_rec.dates_attribute4 = pn_varen_util.g_pn_miss_char
7631       THEN
7632          p_var_rent_rec.dates_attribute4                                              := NULL;
7633       END IF;
7634 
7635       IF p_var_rent_rec.dates_attribute5 = pn_varen_util.g_pn_miss_char
7636       THEN
7637          p_var_rent_rec.dates_attribute5                                              := NULL;
7638       END IF;
7639 
7640       IF p_var_rent_rec.dates_attribute6 = pn_varen_util.g_pn_miss_char
7641       THEN
7642          p_var_rent_rec.dates_attribute6                                              := NULL;
7643       END IF;
7644 
7645       IF p_var_rent_rec.dates_attribute7 = pn_varen_util.g_pn_miss_char
7646       THEN
7647          p_var_rent_rec.dates_attribute7                                              := NULL;
7648       END IF;
7649 
7650       IF p_var_rent_rec.dates_attribute8 = pn_varen_util.g_pn_miss_char
7651       THEN
7652          p_var_rent_rec.dates_attribute8                                              := NULL;
7653       END IF;
7654 
7655       IF p_var_rent_rec.dates_attribute9 = pn_varen_util.g_pn_miss_char
7656       THEN
7657          p_var_rent_rec.dates_attribute9                                              := NULL;
7658       END IF;
7659 
7660       IF p_var_rent_rec.dates_attribute10 = pn_varen_util.g_pn_miss_char
7661       THEN
7662          p_var_rent_rec.dates_attribute10                                             := NULL;
7663       END IF;
7664 
7665       IF p_var_rent_rec.dates_attribute11 = pn_varen_util.g_pn_miss_char
7666       THEN
7667          p_var_rent_rec.dates_attribute11                                             := NULL;
7668       END IF;
7669 
7670       IF p_var_rent_rec.dates_attribute12 = pn_varen_util.g_pn_miss_char
7671       THEN
7672          p_var_rent_rec.dates_attribute12                                             := NULL;
7673       END IF;
7674 
7675       IF p_var_rent_rec.dates_attribute13 = pn_varen_util.g_pn_miss_char
7676       THEN
7677          p_var_rent_rec.dates_attribute13                                             := NULL;
7678       END IF;
7679 
7680       IF p_var_rent_rec.dates_attribute14 = pn_varen_util.g_pn_miss_char
7681       THEN
7682          p_var_rent_rec.dates_attribute14                                             := NULL;
7683       END IF;
7684 
7685       IF p_var_rent_rec.dates_attribute15 = pn_varen_util.g_pn_miss_char
7686       THEN
7687          p_var_rent_rec.dates_attribute15                                             := NULL;
7688       END IF;
7689 
7690       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Ini_Val_Dates: End of initializing variable rent dates record :'
7691                              , 3
7692                               );
7693       x_return_status                                                              := fnd_api.g_ret_sts_success;
7694    EXCEPTION
7695       WHEN OTHERS
7696       THEN
7697          x_return_status                                                              := fnd_api.g_ret_sts_error;
7698          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Ini_Val_Dates: Exception Result of variable rent dates record :'
7699                                   || SQLERRM
7700                                 , 3
7701                                  );
7702    END ini_val_dates;
7703 
7704 --------------------------------------------------------------------------------
7705 --  NAME         : VALIDATE_DATES
7706 --  DESCRIPTION  : Private procedure to validate dates Variable Rent Dates
7707 --  PURPOSE      :
7708 --  INVOKED FROM :
7709 --  ARGUMENTS    : P_VAR_RENT_REC       IN Parameter
7710 --               : X_RETURN_STATUS      OUT Parameter
7711 --  REFERENCE    :
7712 --  HISTORY      :
7713 --
7714 --  20-SEP-2010   vkatta   o Created
7715 --------------------------------------------------------------------------------
7716    PROCEDURE validate_dates (
7717       p_var_rent_rec             IN OUT NOCOPY var_rent_rec_type
7718     , x_return_status            OUT NOCOPY VARCHAR2
7719    )
7720    IS
7721       l_return_status               VARCHAR2 (1);
7722       l_ret_status                  VARCHAR2 (1);
7723       l_return_msg                  VARCHAR2 (2000);
7724       l_lease_commencement_date     pn_lease_details_all.lease_commencement_date%TYPE;
7725       l_lease_termination_date      pn_lease_details_all.lease_termination_date%TYPE;
7726       l_purpose_code                pn_var_templates_all.purpose_code%TYPE;
7727       l_type_code                   pn_var_templates_all.type_code%TYPE;
7728       l_cumulative_vol              pn_var_templates_all.cumulative_vol%TYPE;
7729       l_invoice_on                  pn_var_templates_all.invoice_on%TYPE;
7730       l_negative_rent               pn_var_templates_all.negative_rent%TYPE;
7731       l_term_template_id            pn_var_templates_all.term_template_id%TYPE;
7732       l_abatement_amount            pn_var_templates_all.abatement_amount%TYPE;
7733       l_proration_rule              pn_var_templates_all.proration_rule%TYPE;
7734       l_vrg_reptg_freq_code         pn_var_templates_all.vrg_reptg_freq_code%TYPE;
7735       l_period_freq_code            pn_var_templates_all.period_freq_code%TYPE;
7736       l_use_gl_calendar             pn_var_templates_all.use_gl_calendar%TYPE;
7737       l_year_start_date             pn_var_templates_all.year_start_date%TYPE := TO_DATE ('01-01-2000'
7738                                                                                         , 'DD-MM-RRRR'
7739                                                                                          );
7740       l_gl_period_set_name          pn_var_templates_all.gl_period_set_name%TYPE;
7741       l_period_type                 pn_var_templates_all.period_type%TYPE;
7742       l_reptg_freq_code             pn_var_templates_all.reptg_freq_code%TYPE;
7743       l_reptg_day_of_month          pn_var_templates_all.reptg_day_of_month%TYPE;
7744       l_reptg_days_after            pn_var_templates_all.reptg_days_after%TYPE;
7745       l_invg_freq_code              pn_var_templates_all.invg_freq_code%TYPE;
7746       l_invg_spread_code            pn_var_templates_all.invg_spread_code%TYPE;
7747       l_invg_day_of_month           pn_var_templates_all.invg_day_of_month%TYPE;
7748       l_invg_days_after             pn_var_templates_all.invg_days_after%TYPE;
7749       l_comments                    pn_var_templates_all.comments%TYPE;
7750    BEGIN
7751 -----------------------------------------
7752 --Agreement Template validation
7753 -----------------------------------------
7754       IF (   p_var_rent_rec.agreement_template_name IS NOT NULL
7755           OR p_var_rent_rec.agreement_template_id IS NOT NULL)
7756       THEN
7757          pn_varen_util.validate_agreement_temp (x_agreement_template_id       => p_var_rent_rec.agreement_template_id
7758                                               , x_agreement_template          => p_var_rent_rec.agreement_template_name
7759                                               , x_purpose_code                => l_purpose_code
7760                                               , x_type_code                   => l_type_code
7761                                               , x_cumulative_vol              => l_cumulative_vol
7762                                               , x_invoice_on                  => l_invoice_on
7763                                               , x_negative_rent               => l_negative_rent
7764                                               , x_term_template_id            => l_term_template_id
7765                                               , x_abatement_amount            => l_abatement_amount
7766                                               , x_proration_rule              => l_proration_rule
7767                                               , x_vrg_reptg_freq_code         => l_vrg_reptg_freq_code
7768                                               , x_period_freq_code            => l_period_freq_code
7769                                               , x_use_gl_calendar             => l_use_gl_calendar
7770                                               , x_year_start_date             => l_year_start_date
7771                                               , x_gl_period_set_name          => l_gl_period_set_name
7772                                               , x_period_type                 => l_period_type
7773                                               , x_reptg_freq_code             => l_reptg_freq_code
7774                                               , x_reptg_day_of_month          => l_reptg_day_of_month
7775                                               , x_reptg_days_after            => l_reptg_days_after
7776                                               , x_invg_freq_code              => l_invg_freq_code
7777                                               , x_invg_spread_code            => l_invg_spread_code
7778                                               , x_invg_day_of_month           => l_invg_day_of_month
7779                                               , x_invg_days_after             => l_invg_days_after
7780                                               , x_comments                    => l_comments
7781                                               , p_org_id                      => g_org_id
7782                                               , x_return_status               => l_return_status
7783                                                );
7784       ELSE
7785          NULL;
7786       END IF;
7787 
7788 ------------------------------------------------
7789 --Validation of Use GL Calendar(USE_GL_CALENDAR), GL Calendar(GL_PERIOD_SET_NAME), Period Type (PERIOD_TYPE), Annual Period Start Day(YEAR_START_DATE)
7790 -------------------------------------------------
7791       IF (   p_var_rent_rec.reptg_freq_code IS NOT NULL
7792           OR p_var_rent_rec.reptg_freq_meaning IS NOT NULL)
7793       THEN
7794          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: Calling Calendar and Date Validation'
7795                                 , 3
7796                                  );
7797          pn_varen_util.validate_calendar_date (p_commencement_date           => p_var_rent_rec.commencement_date
7798                                              , p_use_gl_calendar             => p_var_rent_rec.use_gl_calendar
7799                                              , p_year_start_date             => p_var_rent_rec.year_start_date
7800                                              , p_gl_period_set_name          => p_var_rent_rec.gl_period_set_name
7801                                              , p_period_type                 => p_var_rent_rec.period_type
7802                                              , x_return_status               => l_return_status
7803                                               );
7804          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date year_start_date :'
7805                                   || p_var_rent_rec.year_start_date
7806                                 , 3
7807                                  );
7808          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date gl_period_set_name :'
7809                                   || p_var_rent_rec.gl_period_set_name
7810                                 , 3
7811                                  );
7812          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date period_type :'
7813                                   || p_var_rent_rec.period_type
7814                                 , 3
7815                                  );
7816 
7817          IF (l_return_status = fnd_api.g_ret_sts_error)
7818          THEN
7819             fnd_message.set_name ('PN'
7820                                 , 'PN_VAR_GL_CAL_PER_TY'
7821                                  );
7822             fnd_message.set_token ('GL_CALENDAR'
7823                                  , p_var_rent_rec.gl_period_set_name
7824                                   );
7825             fnd_message.set_token ('PERIOD_TYPE'
7826                                  , p_var_rent_rec.period_type
7827                                   );
7828             fnd_message.set_token ('YEAR_START_DATE'
7829                                  , p_var_rent_rec.year_start_date
7830                                   );
7831             fnd_msg_pub.ADD;
7832             RAISE fnd_api.g_exc_error;
7833          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7834          THEN
7835             fnd_message.set_name ('PN'
7836                                 , 'PN_VAR_GL_CAL_PER_TY'
7837                                  );
7838             fnd_message.set_token ('GL_CALENDAR'
7839                                  , p_var_rent_rec.gl_period_set_name
7840                                   );
7841             fnd_message.set_token ('PERIOD_TYPE'
7842                                  , p_var_rent_rec.period_type
7843                                   );
7844             fnd_message.set_token ('YEAR_START_DATE'
7845                                  , p_var_rent_rec.year_start_date
7846                                   );
7847             fnd_msg_pub.ADD;
7848             RAISE fnd_api.g_exc_unexpected_error;
7849           ELSE
7850             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date year_start_date :'
7851                                      || p_var_rent_rec.year_start_date
7852                                    , 3
7853                                     );
7854             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date gl_period_set_name :'
7855                                      || p_var_rent_rec.gl_period_set_name
7856                                    , 3
7857                                     );
7858             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates:  Calendar and Date period_type :'
7859                                      || p_var_rent_rec.period_type
7860                                    , 3
7861                                     );
7862             x_return_status   := fnd_api.g_ret_sts_success;
7863          END IF;
7864       ELSIF (   l_reptg_freq_code IS NOT NULL
7865              OR l_year_start_date IS NOT NULL
7866              OR l_use_gl_calendar IS NOT NULL
7867              OR l_gl_period_set_name IS NOT NULL
7868              OR l_period_type IS NOT NULL
7869             )
7870       THEN
7871          --Assigning values from agreement template
7872          p_var_rent_rec.reptg_freq_code                                               := l_reptg_freq_code;
7873          p_var_rent_rec.year_start_date                                               := l_year_start_date;
7874          p_var_rent_rec.use_gl_calendar                                               := l_use_gl_calendar;
7875          p_var_rent_rec.gl_period_set_name                                            := l_gl_period_set_name;
7876          p_var_rent_rec.period_type                                                   := l_period_type;
7877       END IF;
7878 
7879 ------------------------------------------------
7880 --Validation of Calculation Frequency
7881 -------------------------------------------------
7882       IF (   p_var_rent_rec.reptg_freq_code IS NOT NULL
7883           OR p_var_rent_rec.reptg_freq_meaning IS NOT NULL)
7884       THEN
7885          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: Calling Calculation Frequency Validation'
7886                                 , 3
7887                                  );
7888          pn_varen_util.validate_periods (p_lookup_type                 => g_payment_frequency
7889                                        , x_lookup_meaning              => p_var_rent_rec.reptg_freq_meaning
7890                                        , x_lookup_code                 => p_var_rent_rec.reptg_freq_code
7891                                        , x_return_status               => l_return_status
7892                                         );
7893          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Calculation Frequency Output Code :'
7894                                   || p_var_rent_rec.reptg_freq_code
7895                                 , 3
7896                                  );
7897 
7898          IF (l_return_status = fnd_api.g_ret_sts_error)
7899          THEN
7900             fnd_message.set_name ('PN'
7901                                 , 'PN_VAR_REPT_CODE'
7902                                  );
7903             fnd_message.set_token ('REPTG_FREQ_CODE_MEANING'
7904                                  ,    p_var_rent_rec.reptg_freq_meaning
7905                                    || '/'
7906                                    || p_var_rent_rec.reptg_freq_code
7907                                   );
7908             fnd_msg_pub.ADD;
7909             RAISE fnd_api.g_exc_error;
7910 
7911          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7912          THEN
7913             fnd_message.set_name ('PN'
7914                                 , 'PN_VAR_REPT_CODE'
7915                                  );
7916             fnd_message.set_token ('REPTG_FREQ_CODE_MEANING'
7917                                  ,    p_var_rent_rec.reptg_freq_meaning
7918                                    || '/'
7919                                    || p_var_rent_rec.reptg_freq_code
7920                                   );
7921             fnd_msg_pub.ADD;
7922             RAISE fnd_api.g_exc_unexpected_error;
7923 
7924          ELSE
7925             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Calculation Frequency Code Success :'
7926                                      || p_var_rent_rec.reptg_freq_code
7927                                    , 3
7928                                     );
7929             x_return_status                                                              := fnd_api.g_ret_sts_success;
7930          END IF;
7931       ELSIF (l_invg_freq_code IS NOT NULL)
7932       THEN
7933          p_var_rent_rec.reptg_freq_code                                               := l_invg_freq_code;
7934       ELSE
7935          p_var_rent_rec.reptg_freq_code                                               := 'MON';
7936          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Default value for Calculation Frequency Code :'
7937                                   || p_var_rent_rec.reptg_freq_code
7938                                 , 3
7939                                  );
7940          x_return_status     := fnd_api.g_ret_sts_success;
7941       END IF;
7942 
7943 ------------------------------------------------
7944 --Validation of Reporting Frequency   -- VRG_REPTG_FREQ_CODE
7945 -------------------------------------------------
7946       IF (   p_var_rent_rec.vrg_reptg_freq_code IS NOT NULL
7947           OR p_var_rent_rec.vrg_reptg_freq_meaning IS NOT NULL)
7948       THEN
7949          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: Calling Reporting Frequency Validation'
7950                                 , 3
7951                                  );
7952          pn_varen_util.validate_periods (p_lookup_type                 => g_payment_frequency
7953                                        , x_lookup_meaning              => p_var_rent_rec.vrg_reptg_freq_meaning
7954                                        , x_lookup_code                 => p_var_rent_rec.vrg_reptg_freq_code
7955                                        , x_return_status               => l_return_status
7956                                         );
7957          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Reporting Frequency Output Code :'
7958                                   || p_var_rent_rec.vrg_reptg_freq_code
7959                                 , 3
7960                                  );
7961 
7962          IF (l_return_status = fnd_api.g_ret_sts_error)
7963          THEN
7964             fnd_message.set_name ('PN'
7965                                 , 'PN_VAR_VRG_REPT_CODE'
7966                                  );
7967             fnd_message.set_token ('VRG_REPTG_FREQ_CODE_MEANING'
7968                                  ,    p_var_rent_rec.vrg_reptg_freq_meaning
7969                                    || '/'
7970                                    || p_var_rent_rec.vrg_reptg_freq_code
7971                                   );
7972             fnd_msg_pub.ADD;
7973             RAISE fnd_api.g_exc_error;
7974 
7975          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
7976          THEN
7977             fnd_message.set_name ('PN'
7978                                 , 'PN_VAR_VRG_REPT_CODE'
7979                                  );
7980             fnd_message.set_token ('VRG_REPTG_FREQ_CODE_MEANING'
7981                                  ,    p_var_rent_rec.vrg_reptg_freq_meaning
7982                                    || '/'
7983                                    || p_var_rent_rec.vrg_reptg_freq_code
7984                                   );
7985             fnd_msg_pub.ADD;
7986             RAISE fnd_api.g_exc_unexpected_error;
7987 
7988          ELSE
7989             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Reporting Frequency Code Success :'
7990                                      || p_var_rent_rec.vrg_reptg_freq_code
7991                                    , 3
7992                                     );
7993             x_return_status     := fnd_api.g_ret_sts_success;
7994          END IF;
7995       ELSIF (l_vrg_reptg_freq_code IS NOT NULL)
7996       THEN
7997          p_var_rent_rec.vrg_reptg_freq_code                                           := l_vrg_reptg_freq_code;
7998       ELSE
7999          p_var_rent_rec.vrg_reptg_freq_code                                           := 'MON';
8000          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Default value for Reporting Frequency Code :'
8001                                   || p_var_rent_rec.vrg_reptg_freq_code
8002                                 , 3
8003                                  );
8004          x_return_status       := fnd_api.g_ret_sts_success;
8005       END IF;
8006 
8007 ------------------------------------------------
8008 --Validation of Invoicing  Frequency   -- INVG_FREQ_CODE
8009 -------------------------------------------------
8010       IF (   p_var_rent_rec.invg_freq_code IS NOT NULL
8011           OR p_var_rent_rec.invg_freq_meaning IS NOT NULL)
8012       THEN
8013          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: Calling Invoicing Frequency Validation'
8014                                 , 3
8015                                  );
8016          pn_varen_util.validate_periods (p_lookup_type                 => g_payment_frequency
8017                                        , x_lookup_meaning              => p_var_rent_rec.invg_freq_meaning
8018                                        , x_lookup_code                 => p_var_rent_rec.invg_freq_code
8019                                        , x_return_status               => l_return_status
8020                                         );
8021          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Invoicing Frequency Output Code :'
8022                                   || p_var_rent_rec.invg_freq_code
8023                                 , 3
8024                                  );
8025 
8026          IF (l_return_status = fnd_api.g_ret_sts_error)
8027          THEN
8028             fnd_message.set_name ('PN'
8029                                 , 'PN_VAR_INVG_FREQ_CODE'
8030                                  );
8031             fnd_message.set_token ('INVG_FREQ_CODE_MEANING'
8032                                  ,    p_var_rent_rec.invg_freq_meaning
8033                                    || '/'
8034                                    || p_var_rent_rec.invg_freq_code
8035                                   );
8036             fnd_msg_pub.ADD;
8037             RAISE fnd_api.g_exc_error;
8038 
8039          ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
8040          THEN
8041             fnd_message.set_name ('PN'
8042                                 , 'PN_VAR_INVG_FREQ_CODE'
8043                                  );
8044             fnd_message.set_token ('INVG_FREQ_CODE_MEANING'
8045                                  ,    p_var_rent_rec.invg_freq_meaning
8046                                    || '/'
8047                                    || p_var_rent_rec.invg_freq_code
8048                                   );
8049             fnd_msg_pub.ADD;
8050             RAISE fnd_api.g_exc_unexpected_error;
8051 
8052          ELSE
8053             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Invoicing Frequency Code Success :'
8054                                      || p_var_rent_rec.invg_freq_code
8055                                    , 3
8056                                     );
8057             x_return_status     := fnd_api.g_ret_sts_success;
8058          END IF;
8059       ELSE
8060          p_var_rent_rec.invg_freq_code        := 'QTR';
8061          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: Default value for Invoicing Frequency Code :'
8062                                   || p_var_rent_rec.invg_freq_code
8063                                 , 3
8064                                  );
8065          x_return_status         := fnd_api.g_ret_sts_success;
8066       END IF;
8067 
8068 -------------------------------------------------------------------------------------------
8069 -- variable rent calculation frequency to be equal to or less than the reporting frequency.
8070 -------------------------------------------------------------------------------------------
8071       IF (    p_var_rent_rec.vrg_reptg_freq_code IS NOT NULL
8072           AND p_var_rent_rec.reptg_freq_code IS NOT NULL)
8073       THEN
8074          pn_varen_util.check_calc_rept_freq_comb (p_vrg_reptg_freq_code         => p_var_rent_rec.vrg_reptg_freq_code
8075                                                 , p_reptg_freq_code             => p_var_rent_rec.reptg_freq_code
8076                                                 , x_return_status               => l_return_status
8077                                                  );
8078          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: check_calc_rept_freq_comb - L_RETURN_STATUS : '
8079                                   || l_return_status
8080                                 , 3
8081                                  );
8082       END IF;
8083 
8084 -------------------------------------------------------------------------------------------
8085 -- Invoicing frequency to be equal to or less than the variable rent calculation frequency.
8086 -------------------------------------------------------------------------------------------
8087       IF (    p_var_rent_rec.reptg_freq_code IS NOT NULL
8088           AND p_var_rent_rec.invg_freq_code IS NOT NULL)
8089       THEN
8090          pn_varen_util.check_calc_inv_freq_comb (p_reptg_freq_code             => p_var_rent_rec.reptg_freq_code
8091                                                , p_invg_freq_code              => p_var_rent_rec.invg_freq_code
8092                                                , x_return_status               => l_return_status
8093                                                 );
8094          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Validate_Dates: check_calc_inv_freq_comb - L_RETURN_STATUS : '
8095                                   || l_return_status
8096                                 , 3
8097                                  );
8098       END IF;
8099 
8100 ------------------------------------------------------------------------------------
8101 -- If Reporting Due Day is not null then it Reporting Due Day should be between 1-28
8102 ------------------------------------------------------------------------------------
8103       IF (    p_var_rent_rec.reptg_day_of_month IS NOT NULL
8104           AND p_var_rent_rec.reptg_days_after IS NOT NULL
8105           AND p_var_rent_rec.reptg_day_of_month >= 1
8106           AND p_var_rent_rec.reptg_day_of_month <= 28
8107          )
8108       THEN
8109          -- either of the value i.e, Due Day or No. of Days After should be null
8110          p_var_rent_rec.reptg_days_after                                              := NULL;
8111          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates:  Reporting Frequecy Due day is success'
8112                                 , 3
8113                                  );
8114          --
8115          x_return_status     := fnd_api.g_ret_sts_success;
8116       --
8117       ELSIF (    p_var_rent_rec.reptg_day_of_month IS NOT NULL
8118              AND p_var_rent_rec.reptg_days_after IS NULL
8119              AND p_var_rent_rec.reptg_day_of_month >= 1
8120              AND p_var_rent_rec.reptg_day_of_month <= 28
8121             )
8122       THEN
8123          pn_varen_util.pvt_debug
8124                          ('PN_VAREN_PVT: Validate_Dates:  Reporting Frequecy Due day and No. of Days After is success'
8125                         , 3
8126                          );
8127          --p_var_rent_rec.reptg_days_after              := NULL;
8128                --
8129          x_return_status     := fnd_api.g_ret_sts_success;
8130       ELSIF (    p_var_rent_rec.reptg_day_of_month IS NOT NULL
8131              AND p_var_rent_rec.reptg_days_after IS NOT NULL
8132              AND (p_var_rent_rec.reptg_day_of_month < 1
8133              OR p_var_rent_rec.reptg_day_of_month > 28)
8134             )
8135       THEN
8136          p_var_rent_rec.reptg_days_after   := NULL;
8137          fnd_message.set_name ('PN'
8138                              , 'PN_VAR_REPTG_DAY_OF_MONTH'
8139                               );
8140          fnd_msg_pub.ADD;
8141          RAISE fnd_api.g_exc_error;
8142       END IF;
8143 
8144 ------------------------------------------------------------------------------------
8145 -- If Invoicing Due Day is not null then it Invoicing Due Day should be between 1-28
8146 ------------------------------------------------------------------------------------
8147       IF (    p_var_rent_rec.invg_day_of_month IS NOT NULL
8148           AND p_var_rent_rec.invg_days_after IS NOT NULL
8149           AND (    p_var_rent_rec.invg_day_of_month >= 1
8150                AND p_var_rent_rec.invg_day_of_month <= 28)
8151          )
8152       THEN
8153          -- either of the value i.e, Due Day or No. of Days After should be null
8154          p_var_rent_rec.invg_days_after                                               := NULL;
8155          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates:  Invoicing Frequecy Due day is success'
8156                                 , 3
8157                                  );
8158          --
8159         x_return_status       := fnd_api.g_ret_sts_success;
8160       ELSIF (    p_var_rent_rec.invg_day_of_month IS NOT NULL
8161              AND p_var_rent_rec.invg_days_after IS NULL
8162              AND (    p_var_rent_rec.invg_day_of_month >= 1
8163                   AND p_var_rent_rec.invg_day_of_month <= 28)
8164             )
8165       THEN
8166          pn_varen_util.pvt_debug
8167                          ('PN_VAREN_PVT: Validate_Dates:  Invoicing Frequecy Due day and No. of Days After is success'
8168                         , 3
8169                          );
8170          --
8171          x_return_status    := fnd_api.g_ret_sts_success;
8172       ELSIF (    p_var_rent_rec.invg_day_of_month IS NOT NULL
8173              AND p_var_rent_rec.invg_days_after IS NOT NULL
8174              AND (    p_var_rent_rec.invg_day_of_month < 1
8175                   OR p_var_rent_rec.invg_day_of_month > 28)
8176             )
8177       THEN
8178          p_var_rent_rec.invg_days_after      := NULL;
8179          fnd_message.set_name ('PN'
8180                              , 'PN_VAR_INVG_DAY_OF_MONTH'
8181                               );
8182          fnd_msg_pub.ADD;
8183          RAISE fnd_api.g_exc_error;
8184 
8185       END IF;
8186 /*
8187 --------------------------------------------------------------------------------
8188 --Variable Rent Date Attribute Category Validation
8189 --------------------------------------------------------------------------------
8190     IF (get_attribute_status('PN_VAR_RENTS') > 0) THEN
8191       IF NOT ((p_var_rent_rec.attribute_category = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute_category IS NULL)
8192                                         AND (p_var_rent_rec.attribute1 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute1 IS NULL)
8193                                         AND (p_var_rent_rec.attribute2 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute2 IS NULL)
8194                                         AND (p_var_rent_rec.attribute3 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute3 IS NULL)
8195                                         AND (p_var_rent_rec.attribute4 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute4 IS NULL)
8196                                         AND (p_var_rent_rec.attribute5 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute5 IS NULL)
8197                                         AND (p_var_rent_rec.attribute6 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute6 IS NULL)
8198                                         AND (p_var_rent_rec.attribute7 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute7 IS NULL)
8199                                         AND (p_var_rent_rec.attribute8 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute8 IS NULL)
8200                                         AND (p_var_rent_rec.attribute9 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute9 IS NULL)
8201                                         AND (p_var_rent_rec.attribute10 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute10 IS NULL)
8202                                         AND (p_var_rent_rec.attribute11 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute11 IS NULL)
8203                                         AND (p_var_rent_rec.attribute12 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute12 IS NULL)
8204                                         AND (p_var_rent_rec.attribute13 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute13 IS NULL)
8205                                         AND (p_var_rent_rec.attribute14 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute14 IS NULL)
8206                                         AND (p_var_rent_rec.attribute15 = pn_varen_util.g_pn_miss_char OR p_var_rent_rec.attribute15 IS NULL)
8207                                 ) THEN
8208          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_RENTS'
8209                                            , p_attribute_category          => p_var_rent_rec.attribute_category
8210                                            , p_attribute1                  => p_var_rent_rec.attribute1
8211                                            , p_attribute2                  => p_var_rent_rec.attribute2
8212                                            , p_attribute3                  => p_var_rent_rec.attribute3
8213                                            , p_attribute4                  => p_var_rent_rec.attribute4
8214                                            , p_attribute5                  => p_var_rent_rec.attribute5
8215                                            , p_attribute6                  => p_var_rent_rec.attribute6
8216                                            , p_attribute7                  => p_var_rent_rec.attribute7
8217                                            , p_attribute8                  => p_var_rent_rec.attribute8
8218                                            , p_attribute9                  => p_var_rent_rec.attribute9
8219                                            , p_attribute10                 => p_var_rent_rec.attribute10
8220                                            , p_attribute11                 => p_var_rent_rec.attribute11
8221                                            , p_attribute12                 => p_var_rent_rec.attribute12
8222                                            , p_attribute13                 => p_var_rent_rec.attribute13
8223                                            , p_attribute14                 => p_var_rent_rec.attribute14
8224                                            , p_attribute15                 => p_var_rent_rec.attribute15
8225                                            , x_return_msg                  => l_return_msg
8226                                            , x_return_status               => l_return_status
8227                                             );
8228 
8229                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
8230                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
8231                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN VAR DATES Descriptive Fields Error '||l_return_msg);
8232                   fnd_msg_pub.ADD;
8233                   RAISE fnd_api.g_exc_error;
8234                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8235                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
8236                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN VAR DATES Descriptive Fields Error '||l_return_msg);
8237                   fnd_msg_pub.ADD;
8238                   RAISE fnd_api.g_exc_unexpected_error;
8239                END IF;
8240         END IF;
8241       END IF; -- End of attributes valitions in create var rent
8242 */
8243   EXCEPTION
8244      WHEN fnd_api.g_exc_error THEN
8245         pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: fnd_api.g_exc_error:'||SQLERRM
8246                                 , 3
8247                                  );
8248         x_return_status := fnd_api.g_ret_sts_error;
8249      WHEN OTHERS THEN
8250         pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Dates: OTHERS:'||SQLERRM
8251                                 , 3
8252                                  );
8253         x_return_status := fnd_api.g_ret_sts_unexp_error;
8254    END validate_dates;
8255 
8256 --------------------------------------------------------------------------------
8257 --  NAME         : UPD_VALIDATE_RENT_DATES
8258 --  DESCRIPTION  : Private procedure of Update Variable Rent Dates
8259 --  PURPOSE      :
8260 --  INVOKED FROM :
8261 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE       IN Parameter
8262 --               : X_RETURN_STATUS              OUT Parameter
8263 --  REFERENCE    :
8264 --  HISTORY      :
8265 --
8266 --  11-OCT-2010   vkatta   o Created
8267 --------------------------------------------------------------------------------
8268    PROCEDURE upd_validate_rent_dates (
8269       p_upd_var_rent_rec_type    IN OUT NOCOPY upd_var_rent_rec_type
8270     , x_return_status            OUT NOCOPY VARCHAR2
8271    )
8272    IS
8273       l_return_status               VARCHAR2 (1);
8274       l_return_msg                  VARCHAR2 (2000);
8275    BEGIN
8276       x_return_status                                                              := fnd_api.g_ret_sts_success;
8277 
8278 -------------------------------------------------------------------------------------------
8279 -- variable rent calculation frequency to be equal to or less than the reporting frequency.
8280 -------------------------------------------------------------------------------------------
8281       IF (    p_upd_var_rent_rec_type.vrg_reptg_freq_code IS NOT NULL
8282           AND p_upd_var_rent_rec_type.reptg_freq_code IS NOT NULL
8283          )
8284       THEN
8285          pn_varen_util.check_calc_rept_freq_comb (p_vrg_reptg_freq_code         => p_upd_var_rent_rec_type.vrg_reptg_freq_code
8286                                                 , p_reptg_freq_code             => p_upd_var_rent_rec_type.reptg_freq_code
8287                                                 , x_return_status               => x_return_status--l_return_status
8288                                                  );
8289          pn_varen_util.pvt_debug
8290                             (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_rept_freq_comb - x_return_status : '
8291                              || x_return_status
8292                            , 3
8293                             );
8294          pn_varen_util.pvt_debug
8295             (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_rept_freq_comb - p_upd_var_rent_rec_type.vrg_reptg_freq_code : '
8296              || p_upd_var_rent_rec_type.vrg_reptg_freq_code
8297            , 3
8298             );
8299          pn_varen_util.pvt_debug
8300             (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_rept_freq_comb - p_upd_var_rent_rec_type.reptg_freq_code : '
8301              || p_upd_var_rent_rec_type.reptg_freq_code
8302            , 3
8303             );
8304 
8305          IF x_return_status = fnd_api.g_ret_sts_error
8306          THEN
8307             fnd_message.set_name ('PN'
8308                                 , 'PN_VAR_CALC_REPTG_FREQ'
8309                                  );
8310             fnd_msg_pub.ADD;
8311             RAISE fnd_api.g_exc_error;
8312             pn_varen_util.pvt_debug
8313                (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: Please reset the variable rent calculation frequency to be equal to or less than the reporting frequency :'
8314                 || p_upd_var_rent_rec_type.vrg_reptg_freq_code
8315                 || ' , '
8316                 || p_upd_var_rent_rec_type.reptg_freq_code
8317               , 3
8318                );
8319          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
8320          THEN
8321             fnd_message.set_name ('PN'
8322                                 , 'PN_VAR_CALC_REPTG_FREQ'
8323                                  );
8324             fnd_msg_pub.ADD;
8325             RAISE fnd_api.g_exc_unexpected_error;
8326             pn_varen_util.pvt_debug
8327                (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: Please reset the variable rent calculation frequency to be equal to or less than the reporting frequency :'
8328                 || p_upd_var_rent_rec_type.vrg_reptg_freq_code
8329                 || ' , '
8330                 || p_upd_var_rent_rec_type.reptg_freq_code
8331               , 3
8332                );
8333          ELSE
8334             x_return_status                                                              := fnd_api.g_ret_sts_success;
8335          END IF;
8336       END IF;
8337 
8338 -------------------------------------------------------------------------------------------
8339 -- Invoicing frequency to be equal to or less than the variable rent calculation frequency.
8340 -------------------------------------------------------------------------------------------
8341       IF (    p_upd_var_rent_rec_type.reptg_freq_code IS NOT NULL
8342           AND p_upd_var_rent_rec_type.invg_freq_code IS NOT NULL)
8343       THEN
8344          pn_varen_util.check_calc_inv_freq_comb (p_reptg_freq_code             => p_upd_var_rent_rec_type.reptg_freq_code
8345                                                , p_invg_freq_code              => p_upd_var_rent_rec_type.invg_freq_code
8346                                                , x_return_status               => x_return_status--l_return_status
8347                                                 );
8348          pn_varen_util.pvt_debug
8349                              (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_inv_freq_comb - x_return_status : '
8350                               || x_return_status
8351                             , 3
8352                              );
8353          pn_varen_util.pvt_debug
8354             (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_inv_freq_comb - p_upd_var_rent_rec_type.reptg_freq_code : '
8355              || p_upd_var_rent_rec_type.reptg_freq_code
8356            , 3
8357             );
8358          pn_varen_util.pvt_debug
8359             (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: check_calc_inv_freq_comb - p_upd_var_rent_rec_type.invg_freq_code : '
8360              || p_upd_var_rent_rec_type.invg_freq_code
8361            , 3
8362             );
8363 
8364          IF x_return_status = fnd_api.g_ret_sts_error
8365          THEN
8366             fnd_message.set_name ('PN'
8367                                 , 'PN_VAR_INVG_CALC_FREQ'
8368                                  );
8369             fnd_msg_pub.ADD;
8370             RAISE fnd_api.g_exc_error;
8371             pn_varen_util.pvt_debug
8372                (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: Please reset the invoicing frequency to be equal to or less than the variable rent calculation frequency.'
8373                 || p_upd_var_rent_rec_type.reptg_freq_code
8374                 || ' , '
8375                 || p_upd_var_rent_rec_type.invg_freq_code
8376               , 3
8377                );
8378          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
8379          THEN
8380             fnd_message.set_name ('PN'
8381                                 , 'PN_VAR_INVG_CALC_FREQ'
8382                                  );
8383             fnd_msg_pub.ADD;
8384             RAISE fnd_api.g_exc_unexpected_error;
8385             pn_varen_util.pvt_debug
8386                (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: Please reset the invoicing frequency to be equal to or less than the variable rent calculation frequency.'
8387                 || p_upd_var_rent_rec_type.reptg_freq_code
8388                 || ' , '
8389                 || p_upd_var_rent_rec_type.invg_freq_code
8390               , 3
8391                );
8392          ELSE
8393 
8394             x_return_status                                                              := fnd_api.g_ret_sts_success;
8395          END IF;
8396       END IF;
8397 
8398 ------------------------------------------------------------------------------------
8399 -- If Reporting Due Day is not null then it Reporting Due Day should be between 1-28
8400 ------------------------------------------------------------------------------------
8401       IF (    p_upd_var_rent_rec_type.reptg_day_of_month IS NOT NULL
8402           AND p_upd_var_rent_rec_type.reptg_days_after IS NOT NULL
8403           AND p_upd_var_rent_rec_type.reptg_day_of_month >= 1
8404           AND p_upd_var_rent_rec_type.reptg_day_of_month <= 28
8405          )
8406       THEN
8407          -- either of the value i.e, Due Day or No. of Days After should be null
8408          p_upd_var_rent_rec_type.reptg_days_after                                     := NULL;
8409          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Reporting Frequecy Due day is success'
8410                                 , 3
8411                                  );
8412          --
8413          x_return_status                                                              := fnd_api.g_ret_sts_success;
8414       --
8415       ELSIF (    p_upd_var_rent_rec_type.reptg_day_of_month IS NOT NULL
8416              AND p_upd_var_rent_rec_type.reptg_days_after IS NULL
8417              AND p_upd_var_rent_rec_type.reptg_day_of_month >= 1
8418              AND p_upd_var_rent_rec_type.reptg_day_of_month <= 28
8419             )
8420       THEN
8421          pn_varen_util.pvt_debug
8422                 ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Reporting Frequecy Due day and No. of Days After is success'
8423                , 3
8424                 );
8425          --p_upd_var_rent_rec_type.reptg_days_after              := NULL;
8426                --
8427          x_return_status                                                              := fnd_api.g_ret_sts_success;
8428       ELSIF (    p_upd_var_rent_rec_type.reptg_day_of_month IS NOT NULL
8429              AND p_upd_var_rent_rec_type.reptg_days_after IS NOT NULL
8430              AND p_upd_var_rent_rec_type.reptg_day_of_month < 1
8431              AND p_upd_var_rent_rec_type.reptg_day_of_month > 28
8432             )
8433       THEN
8434          fnd_message.set_name ('PN'
8435                              , 'PN_VAR_REPTG_DAY_OF_MONTH'
8436                               );
8437          fnd_msg_pub.ADD;
8438          RAISE fnd_api.g_exc_error;
8439          p_upd_var_rent_rec_type.reptg_days_after                                     := NULL;
8440          --
8441          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Reporting Frequecy Due day is error '
8442                                 , 3
8443                                  );
8444          pn_varen_util.pvt_debug (   'Reporting day of month is not between 1 and 28 : '
8445                                   || p_upd_var_rent_rec_type.reptg_day_of_month
8446                                 , 3
8447                                  );
8448          --
8449          x_return_status                                                              := fnd_api.g_ret_sts_error;
8450       END IF;
8451 
8452 ------------------------------------------------------------------------------------
8453 -- If Invoicing Due Day is not null then it Invoicing Due Day should be between 1-28
8454 ------------------------------------------------------------------------------------
8455       IF (    p_upd_var_rent_rec_type.invg_day_of_month IS NOT NULL
8456           AND p_upd_var_rent_rec_type.invg_days_after IS NOT NULL
8457           AND (    p_upd_var_rent_rec_type.invg_day_of_month >= 1
8458                AND p_upd_var_rent_rec_type.invg_day_of_month <= 28)
8459          )
8460       THEN
8461          -- either of the value i.e, Due Day or No. of Days After should be null
8462          p_upd_var_rent_rec_type.invg_days_after                                      := NULL;
8463          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Invoicing Frequecy Due day is success'
8464                                 , 3
8465                                  );
8466          --
8467          x_return_status                                                              := fnd_api.g_ret_sts_success;
8468       ELSIF (    p_upd_var_rent_rec_type.invg_day_of_month IS NOT NULL
8469              AND p_upd_var_rent_rec_type.invg_days_after IS NULL
8470              AND (    p_upd_var_rent_rec_type.invg_day_of_month >= 1
8471                   AND p_upd_var_rent_rec_type.invg_day_of_month <= 28)
8472             )
8473       THEN
8474          pn_varen_util.pvt_debug
8475                 ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Invoicing Frequecy Due day and No. of Days After is success'
8476                , 3
8477                 );
8478          --
8479          x_return_status                                                              := fnd_api.g_ret_sts_success;
8480       ELSIF (    p_upd_var_rent_rec_type.invg_day_of_month IS NOT NULL
8481              AND p_upd_var_rent_rec_type.invg_days_after IS NOT NULL
8482              AND (    p_upd_var_rent_rec_type.invg_day_of_month < 1
8483                   AND p_upd_var_rent_rec_type.invg_day_of_month > 28)
8484             )
8485       THEN
8486          fnd_message.set_name ('PN'
8487                              , 'PN_VAR_INVG_DAY_OF_MONTH'
8488                               );
8489          fnd_msg_pub.ADD;
8490          RAISE fnd_api.g_exc_error;
8491          p_upd_var_rent_rec_type.invg_days_after                                      := NULL;
8492          --
8493          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Validate_Rent_Dates:  Invoicing Frequecy Due day error '
8494                                 , 3
8495                                  );
8496          pn_varen_util.pvt_debug (   'Invoicing day of month is not between 1 and 28 : '
8497                                   || p_upd_var_rent_rec_type.invg_day_of_month
8498                                 , 3
8499                                  );
8500          x_return_status                                                              := fnd_api.g_ret_sts_error;
8501       END IF;
8502 
8503 --------------------------------------------------------------------------------
8504 --Variable Rent Date Attribute Category Validation
8505 --------------------------------------------------------------------------------
8506         -- Below code has been commented by Vivek on 11-DEC-2010
8507       /*
8508       IF (p_upd_var_rent_rec_type.attribute_category IS NOT NULL)
8509       THEN
8510          pn_varen_util.validate_flex_fields (p_desc_flex_name              => g_var_dates_desc_name
8511                                            , p_attribute_category          => p_upd_var_rent_rec_type.dates_attribute_category
8512                                            , p_attribute1                  => p_upd_var_rent_rec_type.dates_attribute1
8513                                            , p_attribute2                  => p_upd_var_rent_rec_type.dates_attribute2
8514                                            , p_attribute3                  => p_upd_var_rent_rec_type.dates_attribute3
8515                                            , p_attribute4                  => p_upd_var_rent_rec_type.dates_attribute4
8516                                            , p_attribute5                  => p_upd_var_rent_rec_type.dates_attribute5
8517                                            , p_attribute6                  => p_upd_var_rent_rec_type.dates_attribute6
8518                                            , p_attribute7                  => p_upd_var_rent_rec_type.dates_attribute7
8519                                            , p_attribute8                  => p_upd_var_rent_rec_type.dates_attribute8
8520                                            , p_attribute9                  => p_upd_var_rent_rec_type.dates_attribute9
8521                                            , p_attribute10                 => p_upd_var_rent_rec_type.dates_attribute10
8522                                            , p_attribute11                 => p_upd_var_rent_rec_type.dates_attribute11
8523                                            , p_attribute12                 => p_upd_var_rent_rec_type.dates_attribute12
8524                                            , p_attribute13                 => p_upd_var_rent_rec_type.dates_attribute13
8525                                            , p_attribute14                 => p_upd_var_rent_rec_type.dates_attribute14
8526                                            , p_attribute15                 => p_upd_var_rent_rec_type.dates_attribute15
8527                                            , x_return_msg                  => l_return_msg
8528                                            , x_return_status               => x_return_status--l_return_status
8529                                             );
8530 
8531          IF l_return_msg = 'VALID'
8532          THEN
8533             x_return_status                                                              := fnd_api.g_ret_sts_success;
8534          ELSE
8535             x_return_status                                                              := fnd_api.g_ret_sts_error;
8536          END IF;
8537 
8538 
8539         IF x_return_status <> fnd_api.g_ret_sts_success
8540         THEN
8541            fnd_message.set_name ('PN'
8542                                , 'PN_OTHERS_EXCEPTION'
8543                                 );
8544            fnd_message.set_token('ERR_MSG', 'Rent Dates DFF validation failed');
8545            fnd_msg_pub.ADD;
8546            RAISE fnd_api.g_exc_error;
8547            pn_varen_util.pvt_debug
8548               (   'PN_VAREN_PVT: pn_varen_util.validate_flex_fields dates dff validation failed', 3);
8549          END IF;
8550 
8551       END IF;
8552       */
8553    /*  --Commented as DFF is not available
8554         -- Below code has been added by Vivek on 11-DEC-2010
8555 
8556     IF (get_attribute_status('PN_VAR_RENTS') > 0) THEN
8557       IF NOT ((p_upd_var_rent_rec_type.dates_attribute_category = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute_category IS NULL)
8558                                         AND (p_upd_var_rent_rec_type.dates_attribute1 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute1 IS NULL)
8559                                         AND (p_upd_var_rent_rec_type.dates_attribute2 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute2 IS NULL)
8560                                         AND (p_upd_var_rent_rec_type.dates_attribute3 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute3 IS NULL)
8561                                         AND (p_upd_var_rent_rec_type.dates_attribute4 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute4 IS NULL)
8562                                         AND (p_upd_var_rent_rec_type.dates_attribute5 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute5 IS NULL)
8563                                         AND (p_upd_var_rent_rec_type.dates_attribute6 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute6 IS NULL)
8564                                         AND (p_upd_var_rent_rec_type.dates_attribute7 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute7 IS NULL)
8565                                         AND (p_upd_var_rent_rec_type.dates_attribute8 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute8 IS NULL)
8566                                         AND (p_upd_var_rent_rec_type.dates_attribute9 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute9 IS NULL)
8567                                         AND (p_upd_var_rent_rec_type.dates_attribute10 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute10 IS NULL)
8568                                         AND (p_upd_var_rent_rec_type.dates_attribute11 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute11 IS NULL)
8569                                         AND (p_upd_var_rent_rec_type.dates_attribute12 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute12 IS NULL)
8570                                         AND (p_upd_var_rent_rec_type.dates_attribute13 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute13 IS NULL)
8571                                         AND (p_upd_var_rent_rec_type.dates_attribute14 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute14 IS NULL)
8572                                         AND (p_upd_var_rent_rec_type.dates_attribute15 = pn_varen_util.g_pn_miss_char OR p_upd_var_rent_rec_type.dates_attribute15 IS NULL)
8573                                 ) THEN
8574          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_RENTS'
8575                                            , p_attribute_category          => p_upd_var_rent_rec_type.dates_attribute_category
8576                                            , p_attribute1                  => p_upd_var_rent_rec_type.dates_attribute1
8577                                            , p_attribute2                  => p_upd_var_rent_rec_type.dates_attribute2
8578                                            , p_attribute3                  => p_upd_var_rent_rec_type.dates_attribute3
8579                                            , p_attribute4                  => p_upd_var_rent_rec_type.dates_attribute4
8580                                            , p_attribute5                  => p_upd_var_rent_rec_type.dates_attribute5
8581                                            , p_attribute6                  => p_upd_var_rent_rec_type.dates_attribute6
8582                                            , p_attribute7                  => p_upd_var_rent_rec_type.dates_attribute7
8583                                            , p_attribute8                  => p_upd_var_rent_rec_type.dates_attribute8
8584                                            , p_attribute9                  => p_upd_var_rent_rec_type.dates_attribute9
8585                                            , p_attribute10                 => p_upd_var_rent_rec_type.dates_attribute10
8586                                            , p_attribute11                 => p_upd_var_rent_rec_type.dates_attribute11
8587                                            , p_attribute12                 => p_upd_var_rent_rec_type.dates_attribute12
8588                                            , p_attribute13                 => p_upd_var_rent_rec_type.dates_attribute13
8589                                            , p_attribute14                 => p_upd_var_rent_rec_type.dates_attribute14
8590                                            , p_attribute15                 => p_upd_var_rent_rec_type.dates_attribute15
8591                                            , x_return_msg                  => l_return_msg
8592                                            , x_return_status               => x_return_status
8593                                             );
8594 
8595                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
8596                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
8597                   fnd_message.set_token ('ERR_MSG', l_return_msg);
8598                   fnd_msg_pub.ADD;
8599                   RAISE fnd_api.g_exc_error;
8600                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
8601                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
8602                   fnd_message.set_token ('ERR_MSG', l_return_msg);
8603                   fnd_msg_pub.ADD;
8604                   RAISE fnd_api.g_exc_unexpected_error;
8605                END IF;
8606         END IF;
8607       END IF; -- End of attributes valitions in update var rent dates*/
8608 
8609         ------------------------End of 11-Dec-2010 DFF changes----------------------------
8610 
8611 
8612    EXCEPTION
8613       WHEN OTHERS
8614       THEN
8615          pn_varen_util.pvt_debug
8616                    (   'PN_VAREN_PVT: Upd_Validate_Rent_Dates: Exception Result of Update Validate Rent dates PACKAGE'
8617                     || SQLERRM
8618                   , 3
8619                    );
8620          x_return_status                                                              := fnd_api.g_ret_sts_error;
8621          RAISE;
8622    END upd_validate_rent_dates;
8623 
8624 --------------------------------------------------------------------------------
8625 --  NAME         : CALL_VAREN_INSERT_ROW
8626 --  DESCRIPTION  : Private procedure of Insert record into variable rent
8627 --  PURPOSE      :
8628 --  INVOKED FROM :
8629 --  ARGUMENTS    : P_VAR_RENT_ID       IN Parameter
8630 --               : P_VAR_RENT_REC      IN Parameter
8631 --               : X_RETURN_STATUS    OUT Parameter
8632 --  REFERENCE    :
8633 --  HISTORY      :
8634 --
8635 --  20-SEP-2010   vkatta   o Created
8636 --------------------------------------------------------------------------------
8637    PROCEDURE call_varen_insert_row (
8638       p_var_rent_id              IN OUT NOCOPY NUMBER
8639     , p_var_rent_rec             IN OUT NOCOPY pn_varen_pvt.var_rent_rec_type
8640     , x_return_status            OUT NOCOPY VARCHAR2
8641    )
8642    IS
8643       l_accrual                     VARCHAR2 (1) DEFAULT 'Y';
8644       l_uom_code                    VARCHAR2 (3) DEFAULT 'SFT';
8645    BEGIN
8646       x_return_status := fnd_api.g_ret_sts_success;
8647       pn_varen_util.pvt_debug
8648             ('PN_VAREN_PVT: Call_Varen_Insert_Row: Calling Variable Rent Insert Procedure pn_var_rents_pkg.insert_row'
8649            , 3
8650             );
8651 --      pn_varen_util.pvt_debug ('PN_VAREN_PVT: Call_Varen_Insert_Row: START OF CALLING PN_VAR_RENTS_PKG.INSERT_ROW PACKAGE');
8652       pn_var_rents_pkg.insert_row (x_rowid                       => g_rowid
8653                                  , x_var_rent_id                 => p_var_rent_id                        --l_var_rent_id
8654                                  , x_rent_num                    => p_var_rent_rec.rent_num
8655                                  , x_lease_id                    => p_var_rent_rec.lease_id
8656                                  , x_location_id                 => p_var_rent_rec.location_id
8657                                  , x_proration_days              => p_var_rent_rec.proration_days
8658                                  , x_purpose_code                => p_var_rent_rec.purpose_code
8659                                  , x_type_code                   => p_var_rent_rec.type_code
8660                                  , x_commencement_date           => p_var_rent_rec.commencement_date
8661                                  , x_termination_date            => p_var_rent_rec.termination_date
8662                                  , x_abstracted_by_user          => p_var_rent_rec.abstracted_by_user_id
8663                                  ,x_cumulative_vol              => p_var_rent_rec.cumulative_vol_code
8664                                  , x_accrual                     => l_accrual
8665                                  , x_uom_code                    => l_uom_code
8666                                  , x_invoice_on                  => p_var_rent_rec.invoice_on_code
8667                                  , x_negative_rent               => p_var_rent_rec.negative_rent_code
8668                                  , x_term_template_id            => p_var_rent_rec.term_template_id
8669                                  , x_attribute_category          => p_var_rent_rec.attribute_category
8670                                  , x_attribute1                  => p_var_rent_rec.attribute1
8671                                  , x_attribute2                  => p_var_rent_rec.attribute2
8672                                  , x_attribute3                  => p_var_rent_rec.attribute3
8673                                  , x_attribute4                  => p_var_rent_rec.attribute4
8674                                  , x_attribute5                  => p_var_rent_rec.attribute5
8675                                  , x_attribute6                  => p_var_rent_rec.attribute6
8676                                  , x_attribute7                  => p_var_rent_rec.attribute7
8677                                  , x_attribute8                  => p_var_rent_rec.attribute8
8678                                  , x_attribute9                  => p_var_rent_rec.attribute9
8679                                  , x_attribute10                 => p_var_rent_rec.attribute10
8680                                  , x_attribute11                 => p_var_rent_rec.attribute11
8681                                  , x_attribute12                 => p_var_rent_rec.attribute12
8682                                  , x_attribute13                 => p_var_rent_rec.attribute13
8683                                  , x_attribute14                 => p_var_rent_rec.attribute14
8684                                  , x_attribute15                 => p_var_rent_rec.attribute15
8685                                  , x_creation_date               => NVL (p_var_rent_rec.creation_date,g_sysdate)
8686                                  , x_created_by                  => NVL (p_var_rent_rec.created_by,g_user_id)
8687                                  , x_last_update_date            => NVL (p_var_rent_rec.last_update_date,g_sysdate)
8688                                  , x_last_updated_by             => NVL (p_var_rent_rec.last_updated_by, g_user_id)
8689                                  , x_last_update_login           => NVL (p_var_rent_rec.last_update_login,g_user_id)
8690                                  , x_currency_code               => p_var_rent_rec.currency_code
8691                                  , x_org_id                      => g_org_id
8692                                  , x_agreement_template_id       => p_var_rent_rec.agreement_template_id
8693                                  , x_proration_rule              => p_var_rent_rec.proration_rule_code
8694                                  , x_chg_cal_var_rent_id         => NULL
8695                                   --p_var_rent_rec.chg_cal_var_rent_id, Initial value
8696                                   );
8697       pn_varen_util.pvt_debug
8698                              ('PN_VAREN_PVT: Call_Varen_Insert_Row: End OF CALLING PN_VAR_RENTS_PKG.INSERT_ROW PACKAGE'
8699                             , 3
8700                              );
8701       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: p_var_rent_id : '
8702                                || p_var_rent_id
8703                              , 3
8704                               );
8705       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: Before - Value of p_var_rent_id is '
8706                                || p_var_rent_id
8707                              , 3
8708                               );
8709       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: Before - Value of g_var_rent_id is '
8710                                || g_var_rent_id
8711                              , 3
8712                               );
8713       g_var_rent_id                                                                := p_var_rent_id;
8714       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: g_var_rent_id : '
8715                                || g_var_rent_id
8716                              , 3
8717                               );
8718       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: After - Value of p_var_rent_id is '
8719                                || p_var_rent_id
8720                              , 3
8721                               );
8722       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Call_Varen_Insert_Row: After - Value of g_var_rent_id is '
8723                                || g_var_rent_id
8724                              , 3
8725                               );
8726    EXCEPTION
8727       WHEN OTHERS
8728       THEN
8729          pn_varen_util.pvt_debug
8730                     (   'PN_VAREN_PVT: Call_Varen_Insert_Row: Exception Result of PN_VAR_RENTS_PKG.INSERT_ROW PACKAGE'
8731                      || SQLERRM
8732                    , 3
8733                     );
8734         x_return_status  := fnd_api.g_ret_sts_error;
8735 
8736    END call_varen_insert_row;
8737 
8738 --------------------------------------------------------------------------------
8739 --  NAME         : UPDATE_VARENT
8740 --  DESCRIPTION  : Private procedure of Insert record into variable rent
8741 --  PURPOSE      :
8742 --  INVOKED FROM :
8743 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE       IN Parameter
8744 --               : X_RETURN_STATUS              OUT Parameter
8745 --  REFERENCE    :
8746 --  HISTORY      :
8747 --
8748 --  11-OCT-2010   vkatta   o Created
8749 --------------------------------------------------------------------------------
8750    PROCEDURE update_varent (
8751       --p_var_rent_id              IN OUT NOCOPY NUMBER
8752       p_upd_var_rent_rec_type    IN OUT NOCOPY pn_varen_pvt.upd_var_rent_rec_type
8753     , x_return_status            OUT NOCOPY VARCHAR2
8754    )
8755    IS
8756       l_accrual                     VARCHAR2 (1) DEFAULT 'Y';
8757       l_uom_code                    VARCHAR2 (3) DEFAULT 'SFT';
8758       l_null                        VARCHAR2 (1) DEFAULT NULL;
8759    BEGIN
8760       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: Start of Calling PN_VAR_RENTS_PKG.UPDATE_ROW PACKAGE'
8761                              , 3
8762                               );
8763       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.VAR_RENT_ID             :'
8764                                || p_upd_var_rent_rec_type.var_rent_id
8765                              , 3
8766                               );
8767       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.RENT_NUM                :'
8768                                || p_upd_var_rent_rec_type.rent_num
8769                              , 3
8770                               );
8771       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.LEASE_ID                :'
8772                                || p_upd_var_rent_rec_type.lease_id
8773                              , 3
8774                               );
8775       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.LOCATION_ID             :'
8776                                || p_upd_var_rent_rec_type.location_id
8777                              , 3
8778                               );
8779       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.PRORATION_DAYS          :'
8780                                || p_upd_var_rent_rec_type.proration_days
8781                              , 3
8782                               );
8783       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.PURPOSE_CODE            :'
8784                                || p_upd_var_rent_rec_type.purpose_code
8785                              , 3
8786                               );
8787       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.TYPE_CODE               :'
8788                                || p_upd_var_rent_rec_type.type_code
8789                              , 3
8790                               );
8791       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.COMMENCEMENT_DATE       :'
8792                                || p_upd_var_rent_rec_type.commencement_date
8793                              , 3
8794                               );
8795       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.TERMINATION_DATE        :'
8796                                || p_upd_var_rent_rec_type.termination_date
8797                              , 3
8798                               );
8799       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.ABSTRACTED_BY_USER_ID      :'
8800                                || p_upd_var_rent_rec_type.abstracted_by_user_id
8801                              , 3
8802                               );
8803       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.CUMULATIVE_VOL_CODE          :'
8804                                || p_upd_var_rent_rec_type.cumulative_vol_code
8805                              , 3
8806                               );
8807       --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.ACCRUAL_CODE                 :'||p_upd_var_rent_rec_type.ACCRUAL_CODE              , 3 );
8808       --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.UOM_CODE                :'||p_upd_var_rent_rec_type.UOM_CODE             , 3 );
8809       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.INVOICE_ON_CODE              :'
8810                                || p_upd_var_rent_rec_type.invoice_on_code
8811                              , 3
8812                               );
8813       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.NEGATIVE_RENT_CODE           :'
8814                                || p_upd_var_rent_rec_type.negative_rent_code
8815                              , 3
8816                               );
8817       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.TERM_TEMPLATE_ID        :'
8818                                || p_upd_var_rent_rec_type.term_template_id
8819                              , 3
8820                               );
8821       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.CURRENCY_CODE           :'
8822                                || p_upd_var_rent_rec_type.currency_code
8823                              , 3
8824                               );
8825       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.AGREEMENT_TEMPLATE_ID   :'
8826                                || p_upd_var_rent_rec_type.agreement_template_id
8827                              , 3
8828                               );
8829       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.PRORATION_RULE_CODE          :'
8830                                || p_upd_var_rent_rec_type.proration_rule_code
8831                              , 3
8832                               );
8833       --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: p_upd_var_rent_rec_type.CHG_CAL_VAR_RENT_ID     :'||p_upd_var_rent_rec_type.CHG_CAL_VAR_RENT_ID  , 3 );
8834       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: End of Calling PN_VAR_RENTS_PKG.UPDATE_ROW PACKAGE'
8835                              , 3
8836                               );
8837       pn_var_rents_pkg.update_row (x_var_rent_id                 => p_upd_var_rent_rec_type.var_rent_id
8838                                  , x_rent_num                    => p_upd_var_rent_rec_type.rent_num
8839                                  , x_lease_id                    => p_upd_var_rent_rec_type.lease_id
8840                                  , x_location_id                 => p_upd_var_rent_rec_type.location_id
8841                                  , x_proration_days              => p_upd_var_rent_rec_type.proration_days
8842                                  , x_purpose_code                => p_upd_var_rent_rec_type.purpose_code
8843                                  , x_type_code                   => p_upd_var_rent_rec_type.type_code
8844                                  , x_commencement_date           => p_upd_var_rent_rec_type.commencement_date
8845                                  , x_termination_date            => p_upd_var_rent_rec_type.termination_date
8846                                  , x_abstracted_by_user          => p_upd_var_rent_rec_type.abstracted_by_user_id
8847                                  , x_cumulative_vol              => p_upd_var_rent_rec_type.cumulative_vol_code
8848                                  , x_accrual                     => l_accrual
8849                                  -- IMP -- check p_upd_var_rent_rec_type.ACCRUAL_CODE
8850       ,                            x_uom_code                    => l_uom_code
8851                                                                -- IMP -- check p_upd_var_rent_rec_type.UOM_CODE
8852                                  --X_ROUNDING                            =>  p_upd_var_rent_rec_type.X_ROUNDING
8853       ,                            x_invoice_on                  => p_upd_var_rent_rec_type.invoice_on_code
8854                                  , x_negative_rent               => p_upd_var_rent_rec_type.negative_rent_code
8855                                  , x_term_template_id            => p_upd_var_rent_rec_type.term_template_id
8856                                  -- codev  X_ABATEMENT_AMOUNT             =>  p_upd_var_rent_rec_type.X_ABATEMENT_AMOUNT
8857       ,                            x_attribute_category          => p_upd_var_rent_rec_type.attribute_category
8858                                  , x_attribute1                  => p_upd_var_rent_rec_type.attribute1
8859                                  , x_attribute2                  => p_upd_var_rent_rec_type.attribute2
8860                                  , x_attribute3                  => p_upd_var_rent_rec_type.attribute3
8861                                  , x_attribute4                  => p_upd_var_rent_rec_type.attribute4
8862                                  , x_attribute5                  => p_upd_var_rent_rec_type.attribute5
8863                                  , x_attribute6                  => p_upd_var_rent_rec_type.attribute6
8864                                  , x_attribute7                  => p_upd_var_rent_rec_type.attribute7
8865                                  , x_attribute8                  => p_upd_var_rent_rec_type.attribute8
8866                                  , x_attribute9                  => p_upd_var_rent_rec_type.attribute9
8867                                  , x_attribute10                 => p_upd_var_rent_rec_type.attribute10
8868                                  , x_attribute11                 => p_upd_var_rent_rec_type.attribute11
8869                                  , x_attribute12                 => p_upd_var_rent_rec_type.attribute12
8870                                  , x_attribute13                 => p_upd_var_rent_rec_type.attribute13
8871                                  , x_attribute14                 => p_upd_var_rent_rec_type.attribute14
8872                                  , x_attribute15                 => p_upd_var_rent_rec_type.attribute15
8873                                  , x_last_update_date            => g_sysdate --p_upd_var_rent_rec_type.last_update_date
8874                                  , x_last_updated_by             => g_user_id  --p_upd_var_rent_rec_type.last_updated_by
8875                                  , x_last_update_login           => g_user_id
8876                                  --p_upd_var_rent_rec_type.last_update_login
8877       ,                            x_currency_code               => p_upd_var_rent_rec_type.currency_code
8878                                  , x_agreement_template_id       => p_upd_var_rent_rec_type.agreement_template_id
8879                                  , x_proration_rule              => p_upd_var_rent_rec_type.proration_rule_code
8880                                  , x_chg_cal_var_rent_id         => l_null
8881                                   --p_upd_var_rent_rec_type.CHG_CAL_VAR_RENT_ID
8882                                   );
8883       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Varent: End OF CALLING PN_VAR_RENTS_PKG.UPDATE_ROW PACKAGE'
8884                              , 3
8885                               );
8886    EXCEPTION
8887       WHEN OTHERS
8888       THEN
8889          pn_varen_util.pvt_debug
8890                             (   'PN_VAREN_PVT: Update_Varent: Exception Result of PN_VAR_RENTS_PKG.UPDATE_ROW PACKAGE'
8891                              || SQLERRM
8892                            , 3
8893                             );
8894    END update_varent;
8895 
8896 --------------------------------------------------------------------------------
8897 --  NAME         : CALL_VAREN_DATES_INSERT_ROW
8898 --  DESCRIPTION  : Private procedure of Insert record into variable rent dates
8899 --  PURPOSE      :
8900 --  INVOKED FROM :
8901 --  ARGUMENTS    : P_VAR_RENT_ID       IN Parameter
8902 --               : P_VAR_RENT_REC     OUT Parameter
8903 --               : X_RETURN_STATUS     OUT Parameter
8904 --  REFERENCE    :
8905 --  HISTORY      :
8906 --
8907 --  20-SEP-2010   vkatta   o Created
8908 --------------------------------------------------------------------------------
8909    PROCEDURE call_varen_dates_insert_row (
8910       p_var_rent_id              IN       NUMBER
8911     , p_var_rent_rec             IN OUT NOCOPY pn_varen_pvt.var_rent_rec_type
8912     , x_return_status            OUT NOCOPY VARCHAR2
8913    )
8914    IS
8915       l_period_freq_code            VARCHAR2 (2) DEFAULT 'YR';
8916       l_invg_spread_code            VARCHAR2 (2) DEFAULT 'OT';
8917       l_audit_freq_code             VARCHAR2 (3) DEFAULT 'MON';
8918       l_recon_freq_code             VARCHAR2 (2) DEFAULT 'YR';
8919       l_var_year_start_date         DATE DEFAULT TO_DATE ('01-01-2000'
8920                                                         , 'DD-MM-RRRR'
8921                                                          );
8922    BEGIN
8923       l_var_rent_date_id                                                           := NULL;
8924        x_return_status                      := fnd_api.g_ret_sts_success;
8925       pn_varen_util.pvt_debug
8926                         ('PN_VAREN_PVT: call_varen_dates_insert_row: Calling PN_VAR_RENT_DATES_PKG.INSERT_ROW Package'
8927                        , 3
8928                         );
8929       pn_varen_util.pvt_debug
8930                 ('PN_VAREN_PVT: call_varen_dates_insert_row: START OF CALLING PN_VAR_RENT_DATES_PKG.INSERT_ROW PACKAGE'
8931                , 3
8932                 );
8933       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: call_varen_dates_insert_row: Var Rent Date ID: '
8934                                || l_var_rent_date_id
8935                              , 3
8936                               );
8937       pn_var_rent_dates_pkg.insert_row (x_rowid                       => g_rowid
8938                                       , x_var_rent_date_id            => l_var_rent_date_id
8939                                       , x_var_rent_id                 => l_var_rent_id
8940                                       , x_gl_period_set_name          => p_var_rent_rec.gl_period_set_name
8941                                       , x_period_freq_code            => l_period_freq_code                      -- 'YR'
8942                                       , x_reptg_freq_code             => p_var_rent_rec.reptg_freq_code
8943                                       , x_reptg_day_of_month          => p_var_rent_rec.reptg_day_of_month
8944                                       , x_reptg_days_after            => p_var_rent_rec.reptg_days_after
8945                                       , x_invg_freq_code              => p_var_rent_rec.invg_freq_code
8946                                       , x_invg_day_of_month           => p_var_rent_rec.invg_day_of_month
8947                                       , x_invg_days_after             => p_var_rent_rec.invg_days_after
8948                                       , x_invg_spread_code            => l_invg_spread_code                      -- 'OT'
8949                                       , x_invg_term                   => NULL
8950                                       , x_audit_freq_code             => l_audit_freq_code                       --'MON'
8951                                       , x_audit_day_of_month          => NULL
8952                                       , x_audit_days_after            => NULL
8953                                       , x_recon_freq_code             => l_recon_freq_code                       -- 'YR'
8954                                       , x_recon_day_of_month          => NULL
8955                                       , x_recon_days_after            => NULL
8956                                       , x_attribute_category          => p_var_rent_rec.dates_attribute_category
8957                                       , x_attribute1                  => p_var_rent_rec.dates_attribute1
8958                                       , x_attribute2                  => p_var_rent_rec.dates_attribute2
8959                                       , x_attribute3                  => p_var_rent_rec.dates_attribute3
8960                                       , x_attribute4                  => p_var_rent_rec.dates_attribute4
8961                                       , x_attribute5                  => p_var_rent_rec.dates_attribute5
8962                                       , x_attribute6                  => p_var_rent_rec.dates_attribute6
8963                                       , x_attribute7                  => p_var_rent_rec.dates_attribute7
8964                                       , x_attribute8                  => p_var_rent_rec.dates_attribute8
8965                                       , x_attribute9                  => p_var_rent_rec.dates_attribute9
8966                                       , x_attribute10                 => p_var_rent_rec.dates_attribute10
8967                                       , x_attribute11                 => p_var_rent_rec.dates_attribute11
8968                                       , x_attribute12                 => p_var_rent_rec.dates_attribute12
8969                                       , x_attribute13                 => p_var_rent_rec.dates_attribute13
8970                                       , x_attribute14                 => p_var_rent_rec.dates_attribute14
8971                                       , x_attribute15                 => p_var_rent_rec.dates_attribute15
8972                                       , x_creation_date               => NVL (p_var_rent_rec.creation_date
8973                                                                             , g_sysdate
8974                                                                              )
8975                                       , x_created_by                  => NVL (p_var_rent_rec.created_by
8976                                                                             , g_user_id
8977                                                                              )
8978                                       , x_last_update_date            => NVL (p_var_rent_rec.last_update_date
8979                                                                             , g_sysdate
8980                                                                              )
8981                                       , x_last_updated_by             => NVL (p_var_rent_rec.last_updated_by
8982                                                                             , g_user_id
8983                                                                              )
8984                                       , x_last_update_login           => NVL (p_var_rent_rec.last_update_login
8985                                                                             , g_user_id
8986                                                                              )
8987                                       , x_org_id                      => g_org_id
8988                                       , x_use_gl_calendar             => NVL (p_var_rent_rec.use_gl_calendar
8989                                                                             , 'N'
8990                                                                              )
8991                                       , x_period_type                 => p_var_rent_rec.period_type
8992                                       , x_year_start_date             => NVL (p_var_rent_rec.year_start_date
8993                                                                             , l_var_year_start_date
8994                                                                              )
8995                                       , x_comments                    => p_var_rent_rec.comments
8996                                       , x_vrg_reptg_freq_code         => p_var_rent_rec.vrg_reptg_freq_code
8997                                        );
8998 --      END IF;
8999       pn_varen_util.pvt_debug
9000                   ('PN_VAREN_PVT: call_varen_dates_insert_row: End OF CALLING PN_VAR_RENT_DATES_PKG.INSERT_ROW PACKAGE'||l_var_rent_date_id
9001                  , 3
9002                   );
9003       x_return_status                      := fnd_api.g_ret_sts_success;
9004    EXCEPTION
9005       WHEN OTHERS
9006       THEN
9007          pn_varen_util.pvt_debug
9008             ('PN_VAREN_PVT: call_varen_dates_insert_row: Exception Result of PN_VAR_RENT_DATES_PKG.INSERT_ROW PACKAGE'
9009            , 3
9010             );
9011         x_return_status                      := fnd_api.g_ret_sts_error;
9012    END call_varen_dates_insert_row;
9013 
9014 --------------------------------------------------------------------------------
9015 --  NAME         : UPDATE_VAREN_DATES
9016 --  DESCRIPTION  : Private procedure of Update record into variable rent dates
9017 --  PURPOSE      :
9018 --  INVOKED FROM :
9019 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE       IN Parameter
9020 --               : X_RETURN_STATUS              OUT Parameter
9021 --  REFERENCE    :
9022 --  HISTORY      :
9023 --
9024 --  11-OCT-2010   vkatta   o Created
9025 --------------------------------------------------------------------------------
9026    PROCEDURE update_varen_dates (
9027         --p_var_rent_id              IN       NUMBER
9028       --,
9029       p_upd_var_rent_rec_type    IN OUT NOCOPY pn_varen_pvt.upd_var_rent_rec_type
9030     , x_return_status            OUT NOCOPY VARCHAR2
9031    )
9032    IS
9033       l_period_freq_code            VARCHAR2 (2) DEFAULT 'YR';
9034       l_invg_spread_code            VARCHAR2 (2) DEFAULT NULL;
9035       l_audit_freq_code             VARCHAR2 (3) DEFAULT NULL;
9036       l_invg_term                   NUMBER DEFAULT NULL;
9037       l_null                        NUMBER DEFAULT NULL;
9038    BEGIN
9039 
9040       x_return_status := fnd_api.g_ret_sts_success;
9041       pn_varen_util.pvt_debug
9042                      ('PN_VAREN_PVT: Call_Varen_Insert_Row: Start of calling PN_VAR_RENT_DATES_PKG.UPDATE_ROW PACKAGE'
9043                     , 3
9044                      );
9045       pn_varen_util.pvt_debug
9046              ('PN_VAREN_PVT: Call_Varen_Insert_Row: Start of Input parameters PN_VAR_RENT_DATES_PKG.UPDATE_ROW PACKAGE'
9047             , 3
9048              );
9049       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.VAR_RENT_DATE_ID     :'
9050                                || p_upd_var_rent_rec_type.var_rent_date_id
9051                              , 3
9052                               );
9053       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.VAR_RENT_ID          :'
9054                                || p_upd_var_rent_rec_type.var_rent_id
9055                              , 3
9056                               );
9057       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.GL_PERIOD_SET_NAME   :'
9058                                || p_upd_var_rent_rec_type.gl_period_set_name
9059                              , 3
9060                               );
9061       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.REPTG_FREQ_CODE      :'
9062                                || p_upd_var_rent_rec_type.reptg_freq_code
9063                              , 3
9064                               );
9065       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.REPTG_DAY_OF_MONTH   :'
9066                                || p_upd_var_rent_rec_type.reptg_day_of_month
9067                              , 3
9068                               );
9069       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.REPTG_DAYS_AFTER     :'
9070                                || p_upd_var_rent_rec_type.reptg_days_after
9071                              , 3
9072                               );
9073       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.INVG_FREQ_CODE       :'
9074                                || p_upd_var_rent_rec_type.invg_freq_code
9075                              , 3
9076                               );
9077       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.INVG_DAY_OF_MONTH    :'
9078                                || p_upd_var_rent_rec_type.invg_day_of_month
9079                              , 3
9080                               );
9081       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.INVG_DAYS_AFTER      :'
9082                                || p_upd_var_rent_rec_type.invg_days_after
9083                              , 3
9084                               );
9085       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.AUDIT_DAY_OF_MONTH   :'
9086                                || p_upd_var_rent_rec_type.audit_day_of_month
9087                              , 3
9088                               );
9089       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.AUDIT_DAYS_AFTER     :'
9090                                || p_upd_var_rent_rec_type.audit_days_after
9091                              , 3
9092                               );
9093       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.RECON_DAY_OF_MONTH   :'
9094                                || p_upd_var_rent_rec_type.recon_day_of_month
9095                              , 3
9096                               );
9097       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.RECON_DAYS_AFTER     :'
9098                                || p_upd_var_rent_rec_type.recon_days_after
9099                              , 3
9100                               );
9101       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.ATTRIBUTE_CATEGORY   :'
9102                                || p_upd_var_rent_rec_type.attribute_category
9103                              , 3
9104                               );
9105       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.USE_GL_CALENDAR      :'
9106                                || p_upd_var_rent_rec_type.use_gl_calendar
9107                              , 3
9108                               );
9109       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.PERIOD_TYPE          :'
9110                                || p_upd_var_rent_rec_type.period_type
9111                              , 3
9112                               );
9113       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.YEAR_START_DATE      :'
9114                                || p_upd_var_rent_rec_type.year_start_date
9115                              , 3
9116                               );
9117       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.COMMENTS             :'
9118                                || p_upd_var_rent_rec_type.comments
9119                              , 3
9120                               );
9121       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Varen_Dates :  p_upd_var_rent_rec_type.VRG_REPTG_FREQ_CODE  :'
9122                                || p_upd_var_rent_rec_type.vrg_reptg_freq_code
9123                              , 3
9124                               );
9125       pn_varen_util.pvt_debug
9126                ('PN_VAREN_PVT: Call_Varen_Insert_Row: End of Input parameters PN_VAR_RENT_DATES_PKG.UPDATE_ROW PACKAGE'
9127               , 3
9128                );
9129       pn_var_rent_dates_pkg.update_row (x_var_rent_date_id            => p_upd_var_rent_rec_type.var_rent_date_id
9130                                       , x_var_rent_id                 => p_upd_var_rent_rec_type.var_rent_id
9131                                       , x_gl_period_set_name          => p_upd_var_rent_rec_type.gl_period_set_name
9132                                       , x_period_freq_code            => l_period_freq_code
9133                                       --p_upd_var_rent_rec_type.PERIOD_FREQ_CODE
9134       ,                                 x_reptg_freq_code             => p_upd_var_rent_rec_type.reptg_freq_code
9135                                       , x_reptg_day_of_month          => p_upd_var_rent_rec_type.reptg_day_of_month
9136                                       , x_reptg_days_after            => p_upd_var_rent_rec_type.reptg_days_after
9137                                       , x_invg_freq_code              => p_upd_var_rent_rec_type.invg_freq_code
9138                                       , x_invg_day_of_month           => p_upd_var_rent_rec_type.invg_day_of_month
9139                                       , x_invg_days_after             => p_upd_var_rent_rec_type.invg_days_after
9140                                       , x_invg_spread_code            => l_invg_spread_code
9141                                       --p_upd_var_rent_rec_type.INVG_SPREAD_CODE
9142       ,                                 x_invg_term                   => l_invg_term
9143                                       -- IMP -- verify the pld --p_upd_var_rent_rec_type.INVG_TERM
9144       ,                                 x_audit_freq_code             => l_audit_freq_code
9145                                       --p_upd_var_rent_rec_type.AUDIT_FREQ_CODE
9146       ,                                 x_audit_day_of_month          => p_upd_var_rent_rec_type.audit_day_of_month
9147                                       , x_audit_days_after            => p_upd_var_rent_rec_type.audit_days_after
9148                                       , x_recon_freq_code             => l_null
9149                                       -- p_upd_var_rent_rec_type.RECON_FREQ_CODE
9150       ,                                 x_recon_day_of_month          => p_upd_var_rent_rec_type.recon_day_of_month
9151                                       , x_recon_days_after            => p_upd_var_rent_rec_type.recon_days_after
9152                                       , x_attribute_category          => p_upd_var_rent_rec_type.attribute_category
9153                                       , x_attribute1                  => p_upd_var_rent_rec_type.dates_attribute1
9154                                       , x_attribute2                  => p_upd_var_rent_rec_type.dates_attribute2
9155                                       , x_attribute3                  => p_upd_var_rent_rec_type.dates_attribute3
9156                                       , x_attribute4                  => p_upd_var_rent_rec_type.dates_attribute4
9157                                       , x_attribute5                  => p_upd_var_rent_rec_type.dates_attribute5
9158                                       , x_attribute6                  => p_upd_var_rent_rec_type.dates_attribute6
9159                                       , x_attribute7                  => p_upd_var_rent_rec_type.dates_attribute7
9160                                       , x_attribute8                  => p_upd_var_rent_rec_type.dates_attribute8
9161                                       , x_attribute9                  => p_upd_var_rent_rec_type.dates_attribute9
9162                                       , x_attribute10                 => p_upd_var_rent_rec_type.dates_attribute10
9163                                       , x_attribute11                 => p_upd_var_rent_rec_type.dates_attribute11
9164                                       , x_attribute12                 => p_upd_var_rent_rec_type.dates_attribute12
9165                                       , x_attribute13                 => p_upd_var_rent_rec_type.dates_attribute13
9166                                       , x_attribute14                 => p_upd_var_rent_rec_type.dates_attribute14
9167                                       , x_attribute15                 => p_upd_var_rent_rec_type.dates_attribute15
9168                                       , x_last_update_date            => g_sysdate
9169                                       --p_upd_var_rent_rec_type.last_update_date
9170       ,                                 x_last_updated_by             => g_user_id
9171                                       --p_upd_var_rent_rec_type.last_updated_by
9172       ,                                 x_last_update_login           => g_user_id
9173                                       --p_upd_var_rent_rec_type.last_update_login
9174       ,                                 x_use_gl_calendar             => p_upd_var_rent_rec_type.use_gl_calendar
9175                                       , x_period_type                 => p_upd_var_rent_rec_type.period_type
9176                                       , x_year_start_date             => p_upd_var_rent_rec_type.year_start_date
9177                                       , x_comments                    => p_upd_var_rent_rec_type.comments
9178                                       , x_vrg_reptg_freq_code         => p_upd_var_rent_rec_type.vrg_reptg_freq_code
9179                                        );
9180    EXCEPTION
9181       WHEN OTHERS
9182       THEN
9183          pn_varen_util.pvt_debug
9184                      ('PN_VAREN_PVT: Update_Varen_Dates: Exception Result of PN_VAR_RENT_DATES_PKG.UPDATE_ROW PACKAGE'
9185                     , 3
9186                      );
9187         x_return_status                      := fnd_api.g_ret_sts_error;
9188    END update_varen_dates;
9189 
9190 --------------------------------------------------------------------------------
9191 --  NAME         : CREATE_VAR_RENT
9192 --  DESCRIPTION  : Private procedure of Create VRA record
9193 --  PURPOSE      :
9194 --  INVOKED FROM :
9195 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE           IN Parameter
9196 --               : p_api_version                      IN Parameter
9197 --         : p_init_msg_list                    IN Parameter
9198 --         : p_commit                           IN Parameter
9199 --         : p_validate_flag                    IN Parameter
9200 --         : p_var_rent_rec                 IN OUT Parameter
9201 --         : p_variable_rent_lines_tbl      IN OUT Parameter
9202 --         : p_breakpoint_header_tbl        IN OUT Parameter
9203 --         : p_breakpoint_details_tbl       IN OUT Parameter
9204 --         : p_constraints_tbl              IN OUT Parameter
9205 --         : p_allow_abat_tbl               IN OUT Parameter
9206 --         : p_generate_periods                IN Parameter
9207 --         : p_generate_breakpoints            IN Parameter
9208 --         : p_generate_constraints            IN Parameter
9209 --         :  ,p_recurring_abatements          IN Parameter
9210 --         : x_return_status                  OUT Parameter
9211 --         : x_msg_count                      OUT Parameter
9212 --         : x_msg_data                       OUT Parameter
9213 --         : x_var_rent_id                    OUT Parameter
9214 --         : x_var_rent_num                   OUT Parameter
9215 --  REFERENCE    :
9216 --  HISTORY      :
9217 --
9218 --  20-SEP-2010   vkatta   o Created
9219 --------------------------------------------------------------------------------
9220    PROCEDURE create_var_rent (
9221       p_api_version              IN       NUMBER
9222     , p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
9223     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
9224     , p_validate_flag            IN       VARCHAR2 DEFAULT 'N'
9225     , p_var_rent_rec             IN OUT NOCOPY pn_varen_pvt.var_rent_rec_type
9226     , p_variable_rent_lines_tbl  IN OUT NOCOPY pn_varen_pvt.variable_rent_lines_tbl_type
9227     , p_breakpoint_header_tbl    IN OUT NOCOPY pn_varen_pvt.breakpoint_header_tbl_type
9228     , p_breakpoint_details_tbl   IN OUT NOCOPY pn_varen_pvt.breakpoint_details_tbl_type
9229     , p_constraints_tbl          IN OUT NOCOPY pn_varen_pvt.constraints_tbl_type
9230     , p_allow_abat_tbl           IN OUT NOCOPY pn_varen_pvt.allow_abat_tbl_type
9231     , p_generate_periods         IN       VARCHAR2 DEFAULT 'N'
9232     , p_generate_breakpoints     IN       VARCHAR2 DEFAULT 'N'
9233     , p_generate_constraints     IN       VARCHAR2 DEFAULT 'N'
9234 --     ,p_recurring_abatements     IN       VARCHAR2 DEFAULT 'N'
9235    ,  x_return_status            OUT NOCOPY VARCHAR2
9236     , x_msg_count                OUT NOCOPY NUMBER
9237     , x_msg_data                 OUT NOCOPY VARCHAR2
9238     , x_var_rent_id              OUT NOCOPY NUMBER
9239     , x_var_rent_num             OUT NOCOPY VARCHAR2
9240    )
9241    IS
9242       l_var_rent_rec                pn_varen_pvt.var_rent_rec_type;
9243       --
9244       l_leaseid                     pn_leases_all.lease_id%TYPE := NULL;
9245       -- VALUE IN PN_VAR_RENTS_ALL.PRORATION_DAYS WOULD BE THE SAME AS THE VALUE IN PN_LEASES_ALL.PAYMENT_TERM_PRORATION_RULE
9246 --      l_var_rent_id                 pn_var_rents_all.var_rent_id%TYPE;
9247       l_rent_num                    pn_var_rents_all.rent_num%TYPE;
9248       l_prorationdays               pn_var_rents_all.proration_days%TYPE := NULL;
9249       l_payment_purpose_meaning     fnd_lookups.meaning%TYPE;
9250       l_payment_purpose_lkp_code    fnd_lookups.lookup_code%TYPE;
9251       l_location_code               pn_locations_all.location_code%TYPE;
9252       l_rent_type_meaning           fnd_lookups.meaning%TYPE;
9253       l_rent_type_lkp_code          fnd_lookups.lookup_code%TYPE;
9254       l_abstracted_by_user          fnd_user.user_name%TYPE;
9255       l_user_id                     fnd_user.user_id%TYPE;
9256       l_cumulative_vol_meaning      fnd_lookups.meaning%TYPE;
9257       l_cumulative_vol_code         fnd_lookups.lookup_code%TYPE;
9258       l_invoice_on_meaning          fnd_lookups.meaning%TYPE;
9259       l_invoice_on_code             fnd_lookups.lookup_code%TYPE;
9260       l_negative_rent_meaning       fnd_lookups.meaning%TYPE;
9261       l_negative_rent_code          fnd_lookups.lookup_code%TYPE;
9262       l_term_template_id            pn_term_templates_all.term_template_id%TYPE;
9263       l_term_template_name          pn_term_templates_all.NAME%TYPE;
9264       l_proration_rule_meaning      fnd_lookups.meaning%TYPE;
9265       l_proration_rule_code         fnd_lookups.lookup_code%TYPE;
9266       --
9267       l_var_rent_date_id            pn_var_rent_dates_all.var_rent_date_id%TYPE;
9268       --
9269       l_location_id                 pn_locations_all.location_id%TYPE;
9270 --     l_location_code            pn_locations_all.location_code%type;
9271       l_lease_commencement_date     pn_lease_details_all.lease_commencement_date%TYPE;
9272       l_lease_termination_date      pn_lease_details_all.lease_termination_date%TYPE;
9273       --
9274 --      l_rowid                       VARCHAR2( 18 ) := NULL;
9275       l_varentid                    NUMBER := NULL;
9276       l_rentnum                     VARCHAR2 (30) := NULL;
9277       l_leasechangeid               NUMBER := NULL;
9278       l_leasedetailid               NUMBER := NULL;
9279       l_commencementdate            DATE := NULL;
9280       l_terminationdate             DATE := NULL;
9281       l_leaseexecutiondate          DATE := NULL;
9282       l_lastupdatedate              DATE := NULL;
9283       l_creationdate                DATE := NULL;
9284       l_api_version        CONSTANT NUMBER := 1.0;
9285       l_api_name           CONSTANT VARCHAR2 (30) := 'CREATE_VAR_RENT';
9286       l_api_name_full      CONSTANT VARCHAR2 (61) :=    g_pkg_name
9287                                                      || '.'
9288                                                      || l_api_name;
9289       l_msg_count                   NUMBER;
9290       l_msg_data                    VARCHAR2 (2000);
9291       l_return_status               VARCHAR2 (1);
9292       l_debug_mode                  VARCHAR2 (1);
9293       l_debug_level1       CONSTANT NUMBER := 1;
9294       l_debug_level2       CONSTANT NUMBER := 2;
9295       l_debug_level3       CONSTANT NUMBER := 3;
9296       l_debug_level4       CONSTANT NUMBER := 4;
9297       l_debug_level5       CONSTANT NUMBER := 5;
9298 
9299       l_var_rent_err_count NUMBER := 0;
9300 
9301    BEGIN
9302       x_return_status := fnd_api.g_ret_sts_success;
9303       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: pn_varen_util.g_debug :'
9304                                || pn_varen_util.g_debug
9305                              , 3
9306                               );
9307       pn_debug.set_err_stack ('PN_VAREN_PVT: Create_Var_Rent: TESTING');
9308       fnd_msg_pub.initialize;
9309       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Start of pn_varen_pvt.CREATE_VAR_RENT'
9310                              , 3
9311                               );
9312       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: g_org_id :'
9313                                || g_org_id
9314                              , 3
9315                               );
9316       SAVEPOINT create_var_rent;
9317 
9318       -- Standard call to check for call compatibility
9319       IF NOT fnd_api.compatible_api_call (l_api_version
9320                                         , p_api_version
9321                                         , l_api_name
9322                                         , g_pkg_name
9323                                          )
9324       THEN
9325          RAISE fnd_api.g_exc_error;
9326       END IF;
9327 
9328 --
9329 --    IF NVL (mo_global.check_valid_org (g_org_id), 'N') <> 'Y'
9330 --    THEN
9331 --       fnd_message.set_name ('MO', 'MO_ORG_INVALID');
9332 --       fnd_msg_pub.ADD;
9333 --       RAISE fnd_api.g_exc_error;
9334 --    END IF;
9335       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: x_return_status Before assigning value to the API: '
9336                                || x_return_status
9337                              , 3
9338                               );
9339       x_return_status                                                              := fnd_api.g_ret_sts_success;
9340       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Input Parameters'
9341                              , 3
9342                               );
9343       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.lease_id :'
9344                                || p_var_rent_rec.lease_id
9345                              , 3
9346                               );
9347       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.lease_num : '
9348                                || p_var_rent_rec.lease_num
9349                              , 3
9350                               );
9351       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.lease_name : '
9352                                || p_var_rent_rec.lease_name
9353                              , 3
9354                               );
9355       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.rent_num : '
9356                                || p_var_rent_rec.rent_num
9357                              , 3
9358                               );
9359       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.location_id : '
9360                                || p_var_rent_rec.location_id
9361                              , 3
9362                               );
9363       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.location_code : '
9364                                || p_var_rent_rec.location_code
9365                              , 3
9366                               );
9367       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.purpose_code : '
9368                                || p_var_rent_rec.purpose_code
9369                              , 3
9370                               );
9371       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.purpose_code_meaning : '
9372                                || p_var_rent_rec.purpose_code_meaning
9373                              , 3
9374                               );
9375       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.type_code : '
9376                                || p_var_rent_rec.type_code
9377                              , 3
9378                               );
9379       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.type_meaning : '
9380                                || p_var_rent_rec.type_meaning
9381                              , 3
9382                               );
9383       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.abstracted_by_user : '
9384                                || p_var_rent_rec.abstracted_by_user
9385                              , 3
9386                               );
9387       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.cumulative_vol_code : '
9388                                || p_var_rent_rec.cumulative_vol_code
9389                              , 3
9390                               );
9391       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.cumulative_vol_meaning : '
9392                                || p_var_rent_rec.cumulative_vol_meaning
9393                              , 3
9394                               );
9395       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.proration_rule_code : '
9396                                || p_var_rent_rec.proration_rule_code
9397                              , 3
9398                               );
9399       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.proration_rule_meaning : '
9400                                || p_var_rent_rec.proration_rule_meaning
9401                              , 3
9402                               );
9403       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.invoice_on_code : '
9404                                || p_var_rent_rec.invoice_on_code
9405                              , 3
9406                               );
9407       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.invoice_on_meaning : '
9408                                || p_var_rent_rec.invoice_on_meaning
9409                              , 3
9410                               );
9411       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.negative_rent_code  : '
9412                                || p_var_rent_rec.negative_rent_code
9413                              , 3
9414                               );
9415       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.negative_rent_meaning : '
9416                                || p_var_rent_rec.negative_rent_meaning
9417                              , 3
9418                               );
9419       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.term_template_id  : '
9420                                || p_var_rent_rec.term_template_id
9421                              , 3
9422                               );
9423       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.term_template_name : '
9424                                || p_var_rent_rec.term_template_name
9425                              , 3
9426                               );
9427       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.proration_rule_code : '
9428                                || p_var_rent_rec.proration_rule_code
9429                              , 3
9430                               );
9431       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.proration_rule_meaning : '
9432                                || p_var_rent_rec.proration_rule_meaning
9433                              , 3
9434                               );
9435       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: p_var_rent_rec.currency_code : '
9436                                || p_var_rent_rec.currency_code
9437                              , 3
9438                               );
9439       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: End of Input Parameters'
9440                              , 3
9441                               );
9442       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Calling Validate VALIDATE_VAR_RENT Procedure'
9443                              , 3
9444                               );
9445       ini_val_var_rec (p_var_rent_rec                => p_var_rent_rec
9446                      , x_return_status               => x_return_status
9447                       );
9448 
9449       validate_var_rent (p_var_rent_rec                => p_var_rent_rec
9450                        , x_return_status               => l_return_status
9451                         );
9452       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: End of VALIDATE_VAR_RENT Procedure status : '
9453                                || l_return_status
9454                              , 3
9455                               );
9456    IF(l_return_status <> fnd_api.g_ret_sts_success) THEN
9457       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Validation on Var Rent Failed'
9458                              , 3
9459                               );
9460       --fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9461       --fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_VAR_RENTS: Validation on Var Rent Failed');
9462       --fnd_msg_pub.ADD;
9463         RAISE fnd_api.g_exc_error;
9464    END IF;
9465 
9466       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Before PN_VAR_RENTS_PKG.INSERT_ROW PACKAGE'
9467                              , 3
9468                               );
9469       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Row Id                       : '
9470                                || g_rowid
9471                              , 3
9472                               );
9473       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Variable Rent Id             : '
9474                                || l_var_rent_id
9475                              , 3
9476                               );
9477       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Variable Rent Num            : '
9478                                || p_var_rent_rec.rent_num
9479                              , 3
9480                               );
9481       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Lease Id                     : '
9482                                || p_var_rent_rec.lease_id
9483                              , 3
9484                               );
9485       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Location Id                  : '
9486                                || p_var_rent_rec.location_id
9487                              , 3
9488                               );
9489       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Proration Days               : '
9490                                || p_var_rent_rec.proration_days
9491                              , 3
9492                               );
9493       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Purpose Code                 : '
9494                                || p_var_rent_rec.purpose_code
9495                              , 3
9496                               );
9497       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Rent Type Lookup Code        : '
9498                                || p_var_rent_rec.type_meaning
9499                              , 3
9500                               );
9501       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Abstracted By User Id        : '
9502                                || p_var_rent_rec.abstracted_by_user_id
9503                              , 3
9504                               );
9505       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Cumulative Volume Code       : '
9506                                || p_var_rent_rec.cumulative_vol_code
9507                              , 3
9508                               );
9509       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Invoice On Code              : '
9510                                || p_var_rent_rec.invoice_on_code
9511                              , 3
9512                               );
9513       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Negative Rent Code           : '
9514                                || p_var_rent_rec.negative_rent_code
9515                              , 3
9516                               );
9517       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Term Template Id             : '
9518                                || p_var_rent_rec.term_template_id
9519                              , 3
9520                               );
9521       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Currency Code                : '
9522                                || p_var_rent_rec.currency_code
9523                              , 3
9524                               );
9525       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Org Id                       : '
9526                                || g_org_id
9527                              , 3
9528                               );
9529       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Proration Rule Code          : '
9530                                || p_var_rent_rec.proration_rule_code
9531                              , 3
9532                               );
9533 
9534       IF p_validate_flag <> 'Y'
9535       THEN
9536          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Start of CALL_VAREN_INSERT_ROW Procedure'
9537                                 , 3
9538                                  );
9539          call_varen_insert_row (p_var_rent_id                 => l_var_rent_id
9540                               , p_var_rent_rec                => p_var_rent_rec
9541                               , x_return_status               => x_return_status
9542                                );
9543                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9544                     l_var_rent_err_count := l_var_rent_err_count+1;
9545                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9546                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : VAR RENT INSERTION Error');
9547                   fnd_msg_pub.ADD;
9548                   RAISE fnd_api.g_exc_error;
9549                 ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9550                     l_var_rent_err_count := l_var_rent_err_count+1;
9551                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9552                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : VAR RENT INSERTION Unexpected Error');
9553                   fnd_msg_pub.ADD;
9554                   RAISE fnd_api.g_exc_unexpected_error;
9555                 END IF;
9556          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: End of CALL_VAREN_INSERT_ROW Procedure status : '
9557                                   || x_return_status
9558                                 , 3
9559                                  );
9560       ELSE
9561          pn_varen_util.pvt_debug
9562                             ('PN_VAREN_PVT: Create_Var_Rent: Variable Rent not create as it is run in Validation Mode'
9563                            , 3
9564                             );
9565       END IF;
9566 
9567       IF l_var_rent_id IS NOT NULL
9568       THEN
9569          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Start of  OF CALLING Validate_Dates Procedure '
9570                                 , 3
9571                                  );
9572          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent:  Start of calling VALIDATE_DATES Procedure '
9573                                 , 3
9574                                  );
9575          ini_val_dates (p_var_rent_rec                => p_var_rent_rec
9576                       , x_return_status               => x_return_status
9577                        );
9578          validate_dates (p_var_rent_rec                => p_var_rent_rec
9579                        , x_return_status               => l_return_status
9580                         );
9581                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
9582                     --l_var_rent_err_count := l_var_rent_err_count+1;
9583                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9584                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Error');
9585                   fnd_msg_pub.ADD;
9586                   RAISE fnd_api.g_exc_error;
9587                 ELSIF(l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9588                     --l_var_rent_err_count := l_var_rent_err_count+1;
9589                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9590                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Unexpected Error');
9591                   fnd_msg_pub.ADD;
9592                   RAISE fnd_api.g_exc_unexpected_error;
9593                 END IF;
9594          pn_varen_util.pvt_debug
9595                                 (   'PN_VAREN_PVT: Create_Var_Rent:  End of calling VALIDATE_DATES Procedure status : '
9596                                  || l_return_status
9597                                , 3
9598                                 );
9599          pn_varen_util.pvt_debug
9600                              (   'PN_VAREN_PVT: Create_Var_Rent: CALLING Validate_Dates Procedure - l_return_status : '
9601                               || l_return_status
9602                             , 3
9603                              );
9604 
9605          IF l_return_status = fnd_api.g_ret_sts_success
9606          THEN
9607             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Before PN_VAR_RENT_DATES_PKG.INSERT_ROW PACKAGE'
9608                                    , 3
9609                                     );
9610             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Variable Rent Id           : '
9611                                      || l_var_rent_id
9612                                    , 3
9613                                     );
9614             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Use Gl Calendar               : '
9615                                      || p_var_rent_rec.use_gl_calendar
9616                                    , 3
9617                                     );
9618             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: GL Period Set Name            : '
9619                                      || p_var_rent_rec.gl_period_set_name
9620                                    , 3
9621                                     );
9622             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Annual Period Start Day       : '
9623                                      || p_var_rent_rec.year_start_date
9624                                    , 3
9625                                     );
9626             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Period Type                   : '
9627                                      || p_var_rent_rec.period_type
9628                                    , 3
9629                                     );
9630             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Calculation Frequency         : '
9631                                      || p_var_rent_rec.reptg_freq_code
9632                                    , 3
9633                                     );
9634             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Reporting Due Day             : '
9635                                      || p_var_rent_rec.reptg_day_of_month
9636                                    , 3
9637                                     );
9638             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Reporting No. of Days After   : '
9639                                      || p_var_rent_rec.reptg_days_after
9640                                    , 3
9641                                     );
9642             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Invoicing Frequency           : '
9643                                      || p_var_rent_rec.invg_freq_code
9644                                    , 3
9645                                     );
9646             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Invoicing Due Day             : '
9647                                      || p_var_rent_rec.invg_day_of_month
9648                                    , 3
9649                                     );
9650             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Invoicing No. of Days After   : '
9651                                      || p_var_rent_rec.invg_days_after
9652                                    , 3
9653                                     );
9654             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: Comments                      : '
9655                                      || p_var_rent_rec.comments
9656                                    , 3
9657                                     );
9658 
9659             IF p_validate_flag <> 'Y'
9660             THEN
9661                pn_varen_util.pvt_debug
9662                             ('PN_VAREN_PVT: Create_Var_Rent:  Start of calling CALL_VAREN_DATES_INSERT_ROW Procedure '
9663                            , 3
9664                             );
9665                call_varen_dates_insert_row (p_var_rent_id                 => l_var_rent_id
9666                                           , p_var_rent_rec                => p_var_rent_rec
9667                                           , x_return_status               => x_return_status
9668                                            );
9669                 IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9670                     --l_var_rent_err_count := l_var_rent_err_count+1;
9671                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9672                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Error');
9673                   fnd_msg_pub.ADD;
9674                   RAISE fnd_api.g_exc_error;
9675                 ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9676                     --l_var_rent_err_count := l_var_rent_err_count+1;
9677                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9678                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Unexpected Error');
9679                   fnd_msg_pub.ADD;
9680                   RAISE fnd_api.g_exc_unexpected_error;
9681                 END IF;
9682                pn_varen_util.pvt_debug
9683                    (   'PN_VAREN_PVT: Create_Var_Rent:  End of calling CALL_VAREN_DATES_INSERT_ROW Procedure status : '
9684                     || x_return_status
9685                   , 3
9686                    );
9687             ELSE
9688                pn_varen_util.pvt_debug
9689                   ('PN_VAREN_PVT: Create_Var_Rent: Validate Dates is run in Validation mode, Variable rent Dates will not be created'
9690                  , 3
9691                   );
9692                pn_varen_util.pvt_debug
9693                   ('PN_VAREN_PVT: Create_Var_Rent: Validate Dates is run in Validation mode, Variable rent Dates will not be created'
9694                  , 3
9695                   );
9696             END IF;
9697          ELSE
9698             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Call_Varen_Dates_Insert_Row Failed'
9699                                    , 3
9700                                     );
9701          END IF;
9702       END IF;
9703 
9704       -- Call generate periods procedure
9705       IF p_generate_periods = 'Y'
9706       THEN
9707          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent:  start of Calling Generate Periods procedure'
9708                                 , 3
9709                                  );
9710          generate_periods (p_api_version                 => 1.0
9711                          , p_commit                      => p_commit
9712                          , p_var_rent_id                 => l_var_rent_id
9713                          , p_var_rent_num                => NULL                                        --for future use
9714                          , p_org_id                      => g_org_id
9715                          , p_generate_periods            => p_generate_periods
9716                          , x_return_status               => l_return_status
9717                          , x_msg_count                   => x_msg_count
9718                          , x_msg_data                    => x_msg_data
9719                           );
9720           IF (l_return_status = fnd_api.g_ret_sts_error) THEN
9721                 --l_var_rent_err_count := l_var_rent_err_count+1;
9722                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9723                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Error');
9724                   fnd_msg_pub.ADD;
9725                   RAISE fnd_api.g_exc_error;
9726           ELSIF(l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9727               --l_var_rent_err_count := l_var_rent_err_count+1;
9728                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9729                   fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : GENERATE_PERIODS Return Status Unexpected Error');
9730                   fnd_msg_pub.ADD;
9731                   RAISE fnd_api.g_exc_unexpected_error;
9732           END IF;
9733          pn_varen_util.pvt_debug
9734                              (   'PN_VAREN_PVT: Create_Var_Rent: start of Calling Generate Periods procedure status : '
9735                               || l_return_status
9736                             , 3
9737                              );
9738       ELSE
9739          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: Couldnot GeneratePeriods as User passed p_generate_periods<>Y '
9740                                 , 3
9741                                  );
9742 
9743       END IF;
9744 
9745       -- Call Breakpoints, Constraints and Abatements creation procedure
9746       -- only if the breakpoint data is passed
9747       IF (p_variable_rent_lines_tbl.COUNT <> 0 OR p_constraints_tbl.COUNT <>0 OR p_allow_abat_tbl.COUNT<>0)
9748       THEN
9749          pn_varen_util.pvt_debug
9750                            (' PN_VAREN_PVT: Create_Var_Rent:  start of Calling CREATE_BKPT_CONST_ALLOW_ABAT procedure'
9751                           , 3
9752                            );
9753          pn_varen_util.pvt_debug ('------------------------------------'
9754                                 , 3
9755                                  );
9756          create_bkpt_const_allow_abat (p_api_version                 => 1.0
9757                                      , p_init_msg_list               => p_init_msg_list
9758                                      , p_commit                      => p_commit
9759                                      , p_validate_flag               => p_validate_flag
9760                                      , p_generate_breakpoints        => p_generate_breakpoints
9761                                      , p_generate_constraints        => p_generate_constraints
9762                                      , p_variable_rent_lines_tbl     => p_variable_rent_lines_tbl
9763                                      , p_breakpoint_header_tbl       => p_breakpoint_header_tbl
9764                                      , p_breakpoint_details_tbl      => p_breakpoint_details_tbl
9765                                      , p_constraints_tbl             => p_constraints_tbl
9766                                      , p_allow_abat_tbl              => p_allow_abat_tbl
9767                                      , x_return_status               => x_return_status
9768                                      , x_msg_count                   => x_msg_count
9769                                      , x_msg_data                    => x_msg_data
9770                                       );
9771                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
9772                   l_var_rent_err_count := l_var_rent_err_count+1;
9773                   --fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9774                  -- fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : CREATE_BKPT_CONST_ALLOW_ABAT Return Status Error'||x_return_status);
9775                   --fnd_msg_pub.ADD;
9776                   --RAISE fnd_api.g_exc_error;
9777                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
9778                    l_var_rent_err_count := l_var_rent_err_count+1;
9779                  -- fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
9780                  -- fnd_message.set_token ('ERR_MSG', 'CREATE_VAR_RENT : CREATE_BKPT_CONST_ALLOW_ABAT Return Status Unexpected Error'||x_return_status);
9781                  -- fnd_msg_pub.ADD;
9782                   --RAISE fnd_api.g_exc_unexpected_error;
9783                END IF;
9784          pn_varen_util.pvt_debug
9785                           (   ' PN_VAREN_PVT: Create_Var_Rent:  End of CREATE_BKPT_CONST_ALLOW_ABAT procedure status :'
9786                            || x_return_status
9787                          , 3
9788                           );
9789 
9790       ELSE
9791          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Create_Var_Rent: No paramters passed for Breakpoints creation'
9792                                 , 3
9793                                  );
9794       END IF;
9795 
9796           fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
9797                                    , p_count                       => x_msg_count
9798                                    , p_data                        => x_msg_data
9799                                    );
9800 
9801       x_var_rent_id                                                                := g_var_rent_id;
9802       x_var_rent_num                                                               := p_var_rent_rec.rent_num;
9803       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: x_var_rent_id : '
9804                                || x_var_rent_id
9805                              , 3
9806                               );
9807       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Var_Rent: x_var_rent_num : '
9808                                || x_var_rent_num
9809                              , 3
9810                               );
9811       IF(l_var_rent_err_count = 0) THEN
9812         x_return_status := fnd_api.g_ret_sts_success;
9813       ELSE
9814         x_return_status := fnd_api.g_ret_sts_error;
9815       END IF;
9816 
9817     EXCEPTION
9818       WHEN fnd_api.g_exc_error THEN
9819         x_return_status := fnd_api.g_ret_sts_error;
9820         pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_ERROR:Exception:'||SQLERRM,3);
9821         fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
9822                                    , p_count                       => x_msg_count
9823                                    , p_data                        => x_msg_data
9824                                    );
9825        RAISE;
9826       WHEN OTHERS THEN
9827         x_return_status := fnd_api.g_ret_sts_unexp_error;
9828         pn_varen_util.pvt_debug('PN_VAREN_PVT:FND_API.G_RET_STS_UNEXP_ERROR:Exception:'||SQLERRM,3);
9829         fnd_msg_pub.count_and_get (p_encoded                     => fnd_api.g_false
9830                                    , p_count                       => x_msg_count
9831                                    , p_data                        => x_msg_data
9832                                    );
9833       RAISE;
9834    END create_var_rent;
9835 
9836 --------------------------------------------------------------------------------
9837 --  NAME         : GENERATE_PERIODS
9838 --  DESCRIPTION  : Procedure of Generate Breakpoints
9839 --  PURPOSE      :
9840 --  INVOKED FROM :
9841 --  ARGUMENTS    : P_UPD_VAR_RENT_REC_TYPE           IN Parameter
9842 --               : p_api_version                      IN Parameter
9843 --         : p_init_msg_list                    IN Parameter
9844 --         : p_commit                           IN Parameter
9845 --         : p_var_rent_id                    IN Parameter
9846 --         : p_var_rent_num                     IN  Parameter
9847 --         : p_org_id                      IN  Parameter
9848 --         : p_generate_periods                IN Parameter
9849 --         : x_return_status                  OUT Parameter
9850 --         : x_msg_count                      OUT Parameter
9851 --         : x_msg_data                       OUT Parameter
9852 --  REFERENCE    :
9853 --  HISTORY      :
9854 --
9855 --  20-SEP-2010   vkatta   o Created
9856 --------------------------------------------------------------------------------
9857    PROCEDURE generate_periods (
9858       p_api_version              IN       NUMBER
9859     , p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
9860     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
9861     , p_var_rent_id              IN       NUMBER
9862     , p_var_rent_num             IN       VARCHAR2
9863     , p_org_id                   IN       NUMBER
9864     , p_generate_periods         IN       VARCHAR2 DEFAULT 'N'
9865     , x_return_status            OUT NOCOPY VARCHAR2
9866     , x_msg_count                OUT NOCOPY NUMBER
9867     , x_msg_data                 OUT NOCOPY VARCHAR2
9868    )
9869    IS
9870       ln_count                      NUMBER;
9871       l_varentid                    NUMBER;
9872       l_invoice_on_code             VARCHAR2 (30);
9873       l_period_exists               NUMBER;
9874       l_con_exist                   NUMBER;
9875       l_bkp_exist                   NUMBER;
9876       l_vol_exist                   NUMBER;
9877       l_grp_exist                   NUMBER;
9878       l_dates_created               NUMBER;
9879       l_var_rent_exist              NUMBER;
9880       l_use_gl_calendar             pn_var_rent_dates_all.use_gl_calendar%TYPE;
9881       l_cumulativevol               pn_var_rents_all.cumulative_vol%TYPE;
9882       l_yearstartdate               pn_var_rent_dates_all.year_start_date%TYPE;
9883       l_chg_cal_var_rent_id         pn_var_rents_all.chg_cal_var_rent_id%TYPE;
9884 
9885       CURSOR c_var_rent_exist
9886       IS
9887          SELECT COUNT (*)
9888            FROM pn_var_rents_all
9889           WHERE (   var_rent_id = p_var_rent_id
9890                  OR UPPER (rent_num) = UPPER (p_var_rent_num))
9891             AND org_id = p_org_id;
9892 
9893       CURSOR c_def_con_exist
9894       IS
9895          SELECT COUNT (*)
9896            FROM pn_var_constr_defaults_all
9897           WHERE var_rent_id = p_var_rent_id;
9898 
9899       CURSOR c_def_bkdtexist
9900       IS
9901          SELECT COUNT (*)
9902            FROM pn_var_bkhd_defaults_all
9903           WHERE line_default_id IN (SELECT line_default_id
9904                                       FROM pn_var_line_defaults_all
9905                                      WHERE var_rent_id = p_var_rent_id);
9906 
9907       CURSOR c_vol_histexist                                                            --(p_chg_cal_var_rent_id number)
9908       IS
9909          SELECT COUNT (*)
9910            FROM pn_var_vol_hist_all
9911           WHERE period_id IN (SELECT period_id
9912                                 FROM pn_var_periods_all
9913                                WHERE var_rent_id = l_chg_cal_var_rent_id);
9914 
9915       -- This sould be changed_var_rent_id
9916       CURSOR c_grp_dates_match
9917       IS
9918          SELECT COUNT (a.grp_date_id)
9919            FROM pn_var_grp_dates_all a
9920               , pn_var_grp_dates_all b
9921           WHERE a.var_rent_id = l_chg_cal_var_rent_id
9922             -- This sould be changed_var_rent_id
9923             AND b.var_rent_id = p_var_rent_id
9924             AND a.grp_start_date = b.grp_start_date
9925             AND a.grp_end_date = b.grp_end_date;
9926 
9927       CURSOR c_dates_created
9928       IS
9929          SELECT COUNT (*)
9930            FROM pn_var_rent_dates_all
9931           WHERE var_rent_id = p_var_rent_id;
9932 
9933 --       AND a.grp_start_date = l_comm_date;
9934       CURSOR c_var_details
9935       IS
9936          SELECT pvrd.use_gl_calendar
9937               , pvrd.year_start_date
9938               , pvra.var_rent_id
9939               , pvra.cumulative_vol
9940               , pvra.chg_cal_var_rent_id
9941            FROM pn_var_rents_all pvra
9942               , pn_var_rent_dates_all pvrd
9943           WHERE pvra.var_rent_id = pvrd.var_rent_id
9944             AND pvra.var_rent_id = p_var_rent_id;
9945    BEGIN
9946       x_return_status := fnd_api.g_ret_sts_success;
9947       /* Check if the variable rent details exist*/
9948       OPEN c_var_rent_exist;
9949 
9950       FETCH c_var_rent_exist
9951        INTO l_var_rent_exist;
9952 
9953       CLOSE c_var_rent_exist;
9954 
9955       IF l_var_rent_exist <> 0
9956       THEN
9957          /* Check if the dates are exist*/
9958          OPEN c_dates_created;
9959 
9960          FETCH c_dates_created
9961           INTO l_dates_created;
9962 
9963          CLOSE c_dates_created;
9964 
9965          /* Periods are created only when Dates are created, check for dates*/
9966          IF l_dates_created <> 0
9967          THEN
9968             OPEN c_var_details;
9969 
9970             FETCH c_var_details
9971              INTO l_use_gl_calendar
9972                 , l_yearstartdate
9973                 , l_varentid
9974                 , l_cumulativevol
9975                 , l_chg_cal_var_rent_id;
9976 
9977             CLOSE c_var_details;
9978 
9979             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_periods: Use GL Calendar :'
9980                                      || l_use_gl_calendar
9981                                    , 3
9982                                     );
9983             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_periods: Year Start Date :'
9984                                      || l_yearstartdate
9985                                    , 3
9986                                     );
9987             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Generate_periods: Cumulative Vol  :'
9988                                      || l_cumulativevol
9989                                    , 3
9990                                     );
9991             --Check if periods generated
9992             l_period_exists                                                              :=
9993                                                                       pn_var_rent_pkg.find_if_period_exists (l_varentid);
9994 
9995             IF NVL (l_period_exists
9996                   , 9898
9997                    ) = 9898
9998             THEN
9999                IF NVL (l_use_gl_calendar
10000                      , 'N'
10001                       ) = 'Y'
10002                THEN
10003                   pn_var_rent_pkg.create_var_rent_periods (l_varentid
10004                                                          , l_cumulativevol
10005                                                           );
10006                   x_return_status                                                              :=
10007                                                                                                fnd_api.g_ret_sts_success;
10008                ELSIF NVL (l_use_gl_calendar
10009                         , 'N'
10010                          ) = 'N'
10011                THEN
10012                   pn_var_rent_pkg.create_var_rent_periods_nocal (l_varentid
10013                                                                , l_cumulativevol
10014                                                                , l_yearstartdate
10015                                                                 );
10016                   x_return_status    :=fnd_api.g_ret_sts_success;
10017                END IF;
10018             ELSE
10019                x_return_status                                                              := fnd_api.g_ret_sts_error;
10020             END IF;
10021 
10022             IF l_chg_cal_var_rent_id IS NOT NULL
10023             THEN
10024                --Constraints Defaults
10025                OPEN c_def_con_exist;
10026 
10027                FETCH c_def_con_exist
10028                 INTO l_con_exist;
10029 
10030                CLOSE c_def_con_exist;
10031 
10032                IF l_con_exist = 0
10033                THEN
10034                   pn_var_defaults_pkg.create_default_constraints (l_varentid);
10035                ELSE
10036                   pn_var_chg_cal_pkg.copy_parent_constraints (l_varentid
10037                                                             , l_chg_cal_var_rent_id
10038                                                              );
10039                END IF;
10040 
10041                --Break points Defaults
10042                OPEN c_def_bkdtexist;
10043 
10044                FETCH c_def_bkdtexist
10045                 INTO l_bkp_exist;
10046 
10047                CLOSE c_def_bkdtexist;
10048 
10049                IF l_bkp_exist = 0
10050                THEN
10051                   pn_var_defaults_pkg.create_setup_data (x_var_rent_id                 => l_varentid);
10052                ELSE
10053                   pn_var_chg_cal_pkg.copy_parent_lines (l_varentid
10054                                                       , l_chg_cal_var_rent_id
10055                                                        );
10056                END IF;
10057 
10058                OPEN c_vol_histexist;
10059 
10060                FETCH c_vol_histexist
10061                 INTO l_vol_exist;
10062 
10063                CLOSE c_vol_histexist;
10064 
10065                IF l_vol_exist = 0
10066                THEN
10067                   OPEN c_grp_dates_match;
10068 
10069                   FETCH c_grp_dates_match
10070                    INTO l_grp_exist;
10071 
10072                   CLOSE c_grp_dates_match;
10073 
10074                   IF l_grp_exist = 0
10075                   THEN
10076                      pn_var_chg_cal_pkg.copy_parent_volhist (l_varentid
10077                                                            , l_chg_cal_var_rent_id
10078                                                             );
10079                   ELSE
10080                      NULL;
10081                   END IF;
10082                END IF;
10083             END IF;                                                                              -- Point to be constant
10084          ELSE
10085             x_return_status                                                              := fnd_api.g_ret_sts_error;
10086          END IF;
10087       ELSE
10088          x_return_status                                                              := fnd_api.g_ret_sts_error;
10089       END IF;
10090 
10091       --Commit the work
10092       IF p_commit = 'Y'
10093       THEN
10094          COMMIT;
10095       END IF;
10096    EXCEPTION
10097 
10098       WHEN OTHERS
10099       THEN
10100          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
10101          fnd_message.set_token ('ERR_MSG', 'Exception in GENERATE_PERIODS');
10102          fnd_msg_pub.ADD;
10103          x_return_status                                                              := fnd_api.g_ret_sts_error;
10104          RAISE;
10105    END generate_periods;
10106 
10107 --------------------------------------------------------------------------------
10108 --  NAME         : UNDO_PERIODS
10109 --  DESCRIPTION  : Procedure of Undo Periods
10110 --  PURPOSE      :
10111 --  INVOKED FROM :
10112 --  ARGUMENTS    : p_api_version                      IN Parameter
10113 --         : p_init_msg_list                    IN Parameter
10114 --         : p_commit                           IN Parameter
10115 --         : p_var_rent_id                    IN Parameter
10116 --         : p_var_rent_num                     IN  Parameter
10117 --         : p_org_id                      IN  Parameter
10118 --         : p_generate_periods                IN Parameter
10119 --         : x_return_status                  OUT Parameter
10120 --         : x_msg_count                      OUT Parameter
10121 --         : x_msg_data                       OUT Parameter
10122 --  REFERENCE    :
10123 --  HISTORY      :
10124 --
10125 --  11-OCT-2010   vkatta   o Created
10126 --------------------------------------------------------------------------------
10127    PROCEDURE undo_periods (
10128       p_api_version              IN       NUMBER
10129     , p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
10130     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
10131     , p_var_rent_id              IN       NUMBER
10132     , p_var_rent_num             IN       VARCHAR2
10133     , p_org_id                   IN       NUMBER
10134     , p_generate_periods         IN       VARCHAR2 DEFAULT 'N'
10135     , x_return_status            OUT NOCOPY VARCHAR2
10136     , x_msg_count                OUT NOCOPY NUMBER
10137     , x_msg_data                 OUT NOCOPY VARCHAR2
10138    )
10139    IS
10140       l_var_rent_ext                NUMBER;
10141       l_varentid                    NUMBER;
10142       l_dates_ctd                   NUMBER;
10143       l_period_ext                  NUMBER;
10144       l_chg_cal_var_rent_id         pn_var_rents_all.chg_cal_var_rent_id%TYPE;
10145 
10146       CURSOR c_var_rent_et
10147       IS
10148          SELECT COUNT (*)
10149            FROM pn_var_rents_all
10150           WHERE (   var_rent_id = p_var_rent_id
10151                  OR UPPER (rent_num) = UPPER (p_var_rent_num))
10152             AND org_id = p_org_id;
10153 
10154 /*
10155       CURSOR c_var_rent_num_exist
10156       IS
10157          SELECT COUNT (*)
10158            FROM pn_var_rents_all
10159           WHERE (   UPPER (rent_num) = UPPER (p_var_rent_num)
10160                  )
10161             AND org_id = p_org_id;
10162             */
10163       CURSOR c_dates_ctd
10164       IS
10165          SELECT COUNT (*)
10166            FROM pn_var_rent_dates_all
10167           WHERE var_rent_id = p_var_rent_id;
10168 
10169       CURSOR c_var_dtls
10170       IS
10171          SELECT pvra.var_rent_id
10172               , pvra.chg_cal_var_rent_id
10173            FROM pn_var_rents_all pvra
10174               , pn_var_rent_dates_all pvrd
10175           WHERE pvra.var_rent_id = pvrd.var_rent_id
10176             AND pvra.var_rent_id = p_var_rent_id;
10177    BEGIN
10178       x_return_status := fnd_api.g_ret_sts_success;
10179       /* Check if the variable rent details exist*/
10180       OPEN c_var_rent_et;
10181 
10182       FETCH c_var_rent_et
10183        INTO l_var_rent_ext;
10184 
10185       CLOSE c_var_rent_et;
10186 
10187 /*
10188       OPEN c_var_rent_num_exist;
10189 
10190       FETCH c_var_rent_num_exist
10191        INTO l_var_rent_num_exist;
10192 
10193       CLOSE c_var_rent_num_exist;
10194 */
10195       IF l_var_rent_ext <> 0
10196       THEN
10197          /* Check if the dates are exist*/
10198          OPEN c_dates_ctd;
10199 
10200          FETCH c_dates_ctd
10201           INTO l_dates_ctd;
10202 
10203          CLOSE c_dates_ctd;
10204 
10205          /* Periods are created only when Dates are created, check for dates*/
10206          IF l_dates_ctd <> 0
10207          THEN
10208             OPEN c_var_dtls;
10209 
10210             FETCH c_var_dtls
10211              INTO l_varentid
10212                 , l_chg_cal_var_rent_id;
10213 
10214             CLOSE c_var_dtls;
10215 
10216             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: l_varentid :'
10217                                      || l_varentid
10218                                    , 3
10219                                     );
10220             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: l_chg_cal_var_rent_id :'
10221                                      || l_chg_cal_var_rent_id
10222                                    , 3
10223                                     );
10224             --Check if periods generated
10225             l_period_ext                                                                 :=
10226                                                                       pn_var_rent_pkg.find_if_period_exists (l_varentid);
10227             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: Value of l_period_ext : '
10228                                      || l_period_ext
10229                                    , 3
10230                                     );
10231 
10232             IF l_period_ext IS NOT NULL
10233             THEN
10234                pn_varen_util.pvt_debug ('PN_VAREN_PVT: Undo_Periods: l_period_ext is not null '
10235                                       , 3
10236                                        );
10237                x_return_status                                                              := fnd_api.g_ret_sts_success;
10238 
10239                DELETE FROM pn_var_vol_hist_all
10240                      WHERE period_id IN (SELECT period_id
10241                                            FROM pn_var_periods_all
10242                                           WHERE var_rent_id = l_varentid);
10243 
10244                DELETE FROM pn_var_constraints_all
10245                      WHERE period_id IN (SELECT period_id
10246                                            FROM pn_var_periods_all
10247                                           WHERE var_rent_id = l_varentid);
10248 
10249                DELETE FROM pn_var_bkpts_det_all
10250                      WHERE var_rent_id = l_varentid;
10251 
10252                DELETE      pn_var_bkpts_head_all
10253                      WHERE var_rent_id = l_varentid;
10254 
10255                DELETE      pn_var_lines_all
10256                      WHERE var_rent_id = l_varentid;
10257 
10258                DELETE FROM pn_var_abatements_all abat
10259                      WHERE abat.var_rent_id = l_varentid;
10260 
10261                pn_var_rent_pkg.delete_var_rent_periods (l_varentid);
10262                pn_var_trx_pkg.delete_transactions (p_var_rent_id                 => l_varentid
10263                                                  , p_period_id                   => NULL
10264                                                  , p_line_item_id                => NULL
10265                                                   );
10266                pn_var_defaults_pkg.delete_default_lines (l_varentid);
10267 
10268                DELETE FROM pn_var_abat_defaults_all
10269                      WHERE var_rent_id = l_varentid;
10270 
10271                DELETE FROM pn_var_bkdt_defaults_all
10272                      WHERE var_rent_id = l_varentid;
10273 
10274                DELETE      pn_var_bkhd_defaults_all
10275                      WHERE var_rent_id = l_varentid;
10276 
10277                DELETE      pn_var_line_defaults_all
10278                      WHERE var_rent_id = l_varentid;
10279 
10280                DELETE      pn_var_constr_defaults_all
10281                      WHERE var_rent_id = l_varentid;
10282 
10283                pn_varen_util.pvt_debug ('PN_VAREN_PVT: Undo_Periods: All the periods were deleted : '
10284                                       , 3
10285                                        );
10286             ELSE
10287                pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: Period doesnot exists : '
10288                                         || l_period_ext
10289                                       , 3
10290                                        );
10291             END IF;                                                                                      -- l_period_ext
10292          ELSE
10293             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: Variable Rent Date record doesnot exists : '
10294                                      || l_dates_ctd
10295                                    , 3
10296                                     );
10297             x_return_status                                                              := fnd_api.g_ret_sts_error;
10298          END IF;                                                                                           --l_dates_ctd
10299       ELSE
10300          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods:  Variable Rent record doesnot exists : '
10301                                   || l_dates_ctd
10302                                 , 3
10303                                  );
10304          x_return_status                                                              := fnd_api.g_ret_sts_error;
10305       END IF;                                                                                          -- l_var_rent_ext
10306 
10307       IF p_commit = 'Y'
10308       THEN
10309          COMMIT;
10310       END IF;
10311    EXCEPTION
10312 
10313       WHEN OTHERS
10314       THEN
10315          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Undo_Periods: Variable Rent record doesnot exists : '
10316                                   || l_dates_ctd
10317                                 , 3
10318                                  );
10319          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
10320          fnd_message.set_token ('ERR_MSG', 'Exception in UNDO_PERIODS');
10321          fnd_msg_pub.ADD;
10322          x_return_status                                                              := fnd_api.g_ret_sts_error;
10323          RAISE;
10324    END undo_periods;
10325 
10326 --------------------------------------------------------------------------------
10327 --  NAME         : CREATE_BKPT_CONST_ALLOW_ABAT
10328 --  DESCRIPTION  : procedure to Create Variable Rent Lines, Breakpoints, Constraints, Allowances and Abatements
10329 --  PURPOSE      :
10330 --  INVOKED FROM :
10331 --  ARGUMENTS    : p_api_version                      IN Parameter
10332 --         : p_init_msg_list                    IN Parameter
10333 --         : p_commit                           IN Parameter
10334 --         : p_validate_flag                    IN Parameter
10335 --         : p_generate_breakpoints            IN Parameter
10336 --         : p_generate_constraints            IN Parameter
10337 --         : p_variable_rent_lines_tbl     IN OUT Parameter
10338 --         : p_breakpoint_header_tbl       IN OUT Parameter
10339 --         : p_breakpoint_details_tbl      IN OUT Parameter
10340 --         : p_constraints_tbl             IN OUT Parameter
10341 --         : p_allow_abat_tbl                 IN OUT Parameter
10342 --         : x_return_status                  OUT Parameter
10343 --         : x_msg_count                      OUT Parameter
10344 --         : x_msg_data                       OUT Parameter
10345 --  REFERENCE    :
10346 --  HISTORY      :
10347 --
10348 --  20-SEP-2010   vkatta   o Created
10349 --------------------------------------------------------------------------------
10350    PROCEDURE create_bkpt_const_allow_abat (
10351       p_api_version              IN       NUMBER
10352     , p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
10353     , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
10354     , p_validate_flag            IN       VARCHAR2 DEFAULT 'Y'
10355     , p_generate_breakpoints     IN       VARCHAR2 DEFAULT 'Y'
10356     , p_generate_constraints     IN       VARCHAR2 DEFAULT 'Y'
10357     , p_variable_rent_lines_tbl  IN OUT NOCOPY variable_rent_lines_tbl_type
10358     , p_breakpoint_header_tbl    IN OUT NOCOPY breakpoint_header_tbl_type
10359     , p_breakpoint_details_tbl   IN OUT NOCOPY breakpoint_details_tbl_type
10360     , p_constraints_tbl          IN OUT NOCOPY constraints_tbl_type
10361     , p_allow_abat_tbl           IN OUT NOCOPY allow_abat_tbl_type
10362     , x_return_status            OUT NOCOPY VARCHAR2
10363     , x_msg_count                OUT NOCOPY NUMBER
10364     , x_msg_data                 OUT NOCOPY VARCHAR2
10365    )
10366    IS
10367       l_return_status               VARCHAR2 (1) := fnd_api.g_ret_sts_error;
10368       l_err_count                   NUMBER := 0;
10369    BEGIN
10370       pn_varen_util.pvt_debug
10371                      ('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat: Calling Variable Rent Lines Validations Procedure '
10372                     , 3
10373                      );
10374 --      pn_varen_util.pvt_debug ('--------------------------------------------------', 3);
10375       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat: p_generate_breakpoints '
10376                                || p_generate_breakpoints
10377                              , 3
10378                               );                                                                               -- vkatta
10379  IF(p_variable_rent_lines_tbl.COUNT<>0) THEN
10380    BEGIN
10381       var_rent_lines_bkhd (p_variable_rent_lines_tbl     => p_variable_rent_lines_tbl
10382                          , p_breakpoint_header_tbl       => p_breakpoint_header_tbl
10383                          , p_breakpoint_details_tbl      => p_breakpoint_details_tbl
10384                          , p_generate_breakpoints        => p_generate_breakpoints                             -- vkatta
10385                          , p_validate_flag               => p_validate_flag
10386                          , x_return_status               => l_return_status
10387                           );
10388       pn_varen_util.pvt_debug
10389          (   'PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat: Return_Status Before calling variable rent lines insert procedure : '
10390           || l_return_status
10391         , 3
10392          );
10393               IF (l_return_status = fnd_api.g_ret_sts_error) THEN
10394                   l_err_count := l_err_count+1;
10395                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10396                   l_err_count := l_err_count+1;
10397                END IF;
10398   EXCEPTION
10399     WHEN OTHERS THEN
10400        pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat:var_rent_lines_bkhd:Exception:'||SQLERRM,3);
10401        l_err_count := l_err_count+1;
10402   END;
10403  END IF; -- p_variable_rent_lines_tbl.COUNT<>0
10404 ------------------------------------------------------
10405 -- Starting Constraints Validation and Insert procedure.
10406 ------------------------------------------------------
10407   IF(p_constraints_tbl.COUNT<>0) THEN
10408       BEGIN
10409          val_ins_constraints (p_constraints_tbl_type        => p_constraints_tbl
10410                             , p_validate_flag               => p_validate_flag
10411                             , p_generate_constraints        => p_generate_constraints
10412                             , x_return_status               => l_return_status
10413                              );
10414         pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat:val_ins_constraints Return Status'||l_return_status,3);
10415                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
10416                   l_err_count := l_err_count+1;
10417                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10418                   l_err_count := l_err_count+1;
10419                END IF;
10420      EXCEPTION
10421        WHEN OTHERS THEN
10422          pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat:val_ins_constraints:Exception:'||SQLERRM,3);
10423          l_err_count := l_err_count+1;
10424      END;
10425  END IF;--p_constraints_tbl.COUNT<>0
10426 ------------------------------------------------------
10427 -- Starting Abatements Validation and Insert procedure.
10428 ------------------------------------------------------
10429   IF(p_allow_abat_tbl.COUNT<>0) THEN
10430       BEGIN
10431          val_ins_allow_abat (p_allow_abat_tbl_type         => p_allow_abat_tbl
10432                            , p_validate_flag               => p_validate_flag
10433                            , x_return_status               => l_return_status
10434                             );
10435           pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat:val_ins_allow_abat Return Status:'||l_return_status,3);
10436                IF (l_return_status = fnd_api.g_ret_sts_error) THEN
10437                   l_err_count := l_err_count+1;
10438                ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
10439                   l_err_count := l_err_count+1;
10440                END IF;
10441      EXCEPTION
10442        WHEN OTHERS THEN
10443          pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat:val_ins_allow_abat:Return Status:'||l_return_status,3);
10444          l_err_count := l_err_count+1;
10445      END;
10446   END IF;--p_allow_abat_tbl.COUNT<>0
10447 ---------------------------------
10448       IF p_commit = 'Y'
10449       THEN
10450          COMMIT;
10451       END IF;
10452 
10453         IF (l_err_count = 0 ) THEN
10454           x_return_status := fnd_api.g_ret_sts_success;
10455         ELSE
10456           x_return_status := fnd_api.g_ret_sts_error;
10457         END IF;
10458 
10459    EXCEPTION
10460       WHEN OTHERS
10461       THEN
10462          pn_varen_util.pvt_debug('PN_VAREN_PVT: Create_Bkpt_Const_Allow_Abat: Exception Result of Create_Bkpt_Const_Allow_Abat PACKAGE'||SQLERRM, 3);
10463          x_return_status := fnd_api.g_ret_sts_error;
10464    END create_bkpt_const_allow_abat;
10465 
10466 
10467 
10468 --------------------------------------------------------------------------------
10469  --------------------------------------------------------------------------------
10470  --  NAME         : UPDATE_VAR_RENT
10471  --  DESCRIPTION  : procedure to Update Variable Rent, Variable Rent Lines, Breakpoints, Constraints, Allowances and Abatements
10472  --  PURPOSE      :
10473  --  INVOKED FROM :
10474  --  ARGUMENTS    : p_api_version                      IN Parameter
10475  --         : p_init_msg_list                    IN Parameter
10476  --         : p_commit                           IN Parameter
10477  --         : p_validate_flag                    IN Parameter
10478  --         : p_upd_var_rent_rec            IN OUT Parameter
10479  --         : p_var_rent_lines_tbl          IN OUT Parameter
10480  --         : p_variable_rent_lines_tbl     IN OUT Parameter
10481  --         : p_breakpoint_header_tbl       IN OUT Parameter
10482  --         : p_breakpoint_details_tbl      IN OUT Parameter
10483  --         : p_constraints_tbl             IN OUT Parameter
10484  --         : p_allow_abat_tbl                 IN OUT Parameter
10485  --         : p_undo_periods                    IN Parameter
10486  --         : p_undo_breakpoints                IN Parameter
10487  --         : p_undo_constraints                IN Parameter
10488  --         : x_return_status                  OUT Parameter
10489  --         : x_msg_count                      OUT Parameter
10490  --         : x_msg_data                       OUT Parameter
10491  --  REFERENCE    :
10492  --  HISTORY      :
10493  --
10494  --  11-OCT-2010   vkatta   o Created
10495  --------------------------------------------------------------------------------
10496 /* Formatted on 2010/12/10 11:31 (Formatter Plus v4.8.8) */
10497 PROCEDURE update_var_rent (
10498    p_api_version              IN       NUMBER
10499  , p_init_msg_list            IN       VARCHAR2 DEFAULT fnd_api.g_false
10500  , p_commit                   IN       VARCHAR2 DEFAULT fnd_api.g_false
10501  , p_validate_flag            IN       VARCHAR2 DEFAULT 'Y'
10502  , p_upd_var_rent_rec         IN OUT NOCOPY upd_var_rent_rec_type
10503  , p_var_rent_lines_tbl       IN OUT NOCOPY variable_rent_lines_tbl_type
10504  , p_breakpoint_header_tbl    IN OUT NOCOPY breakpoint_header_tbl_type
10505  , p_breakpoint_details_tbl   IN OUT NOCOPY breakpoint_details_tbl_type
10506  , p_constraints_tbl          IN OUT NOCOPY constraints_tbl_type
10507  , p_allow_abat_tbl           IN OUT NOCOPY allow_abat_tbl_type
10508  , p_undo_periods             IN       VARCHAR2 DEFAULT 'N'
10509  , p_undo_breakpoints         IN       VARCHAR2 DEFAULT 'N'
10510  , p_undo_constraints         IN       VARCHAR2 DEFAULT 'N'
10511  , x_return_status            OUT NOCOPY VARCHAR2
10512  , x_msg_count                OUT NOCOPY NUMBER
10513  , x_msg_data                 OUT NOCOPY VARCHAR2)
10514 IS
10515    l_api_version     CONSTANT NUMBER                                    := 1.0;
10516    l_api_name        CONSTANT VARCHAR2 (30)                             := 'UPDATE_VAR_RENT';
10517    l_api_name_full   CONSTANT VARCHAR2 (61)                      :=    g_pkg_name
10518                                                                     || '.'
10519                                                                     || l_api_name;
10520 
10521    CURSOR c_pn_var_rents
10522    IS
10523       SELECT var_rent_id
10524            , rent_num
10525            , last_update_date
10526            , last_updated_by
10527            , creation_date
10528            , created_by
10529            , last_update_login
10530            , lease_id
10531            , location_id
10532            , proration_days
10533            , purpose_code
10534            , type_code
10535            , commencement_date
10536            , termination_date
10537            , abstracted_by_user
10538            , cumulative_vol
10539            --, accrual
10540       ,      uom_code
10541            --, rounding
10542       ,      invoice_on
10543            , negative_rent
10544            , term_template_id
10545            --, abatement_amount
10546       ,      attribute_category
10547            , attribute1
10548            , attribute2
10549            , attribute3
10550            , attribute4
10551            , attribute5
10552            , attribute6
10553            , attribute7
10554            , attribute8
10555            , attribute9
10556            , attribute10
10557            , attribute11
10558            , attribute12
10559            , attribute13
10560            , attribute14
10561            , attribute15
10562            --, org_id
10563       ,      currency_code
10564            , proration_rule
10565            , agreement_template_id
10566            , chg_cal_var_rent_id
10567       --, order_of_appl_code
10568       --, excess_abat_code
10569       FROM   pn_var_rents_all
10570       WHERE  var_rent_id = p_upd_var_rent_rec.var_rent_id;
10571 
10572    CURSOR c_pn_var_rent_dates
10573    IS
10574       SELECT var_rent_date_id
10575            , last_update_date
10576            , last_updated_by
10577            , creation_date
10578            , created_by
10579            , last_update_login
10580            , var_rent_id
10581            , gl_period_set_name
10582            , period_freq_code
10583            , reptg_freq_code
10584            , reptg_day_of_month
10585            , reptg_days_after
10586            , invg_freq_code
10587            , invg_day_of_month
10588            , invg_days_after
10589            , invg_spread_code
10590            , invg_term
10591            , audit_freq_code
10592            , audit_day_of_month
10593            , audit_days_after
10594            --, recon_freq_code
10595       ,      recon_day_of_month
10596            , recon_days_after
10597            , attribute_category
10598            , attribute1
10599            , attribute2
10600            , attribute3
10601            , attribute4
10602            , attribute5
10603            , attribute6
10604            , attribute7
10605            , attribute8
10606            , attribute9
10607            , attribute10
10608            , attribute11
10609            , attribute12
10610            , attribute13
10611            , attribute14
10612            , attribute15
10613            --, org_id
10614       ,      use_gl_calendar
10615            , period_type
10616            , year_start_date
10617            , comments
10618            , effective_date
10619            , vrg_reptg_freq_code
10620       FROM   pn_var_rent_dates_all
10621       WHERE  var_rent_id = p_upd_var_rent_rec.var_rent_id;
10622 
10623    --CURSOR c_pn_var_line_defaults Commented by Vivek on 09-DEC-2010
10624    CURSOR c_pn_var_line_defaults (
10625       p_line_default_id          IN       NUMBER
10626     , p_var_rent_id              IN       NUMBER)                  --   Added by Vivek on 09DEC-2010
10627    IS
10628       SELECT line_default_id
10629            , line_num
10630            , var_rent_id
10631            , sales_type_code
10632            , item_category_code
10633            , line_template_id
10634            , agreement_template_id
10635            , line_start_date
10636            , line_end_date
10637            , processed_flag
10638            , last_update_date
10639            , last_updated_by
10640            , creation_date
10641            , created_by
10642            , last_update_login
10643            , attribute_category
10644            , attribute1
10645            , attribute2
10646            , attribute3
10647            , attribute4
10648            , attribute5
10649            , attribute6
10650            , attribute7
10651            , attribute8
10652            , attribute9
10653            , attribute10
10654            , attribute11
10655            , attribute12
10656            , attribute13
10657            , attribute14
10658            , attribute15
10659            , org_id
10660       FROM   pn_var_line_defaults_all
10661       -- WHERE var_rent_id = p_upd_var_rent_rec.var_rent_id; -- Commented by Vivek on 09-DEC-2010
10662       WHERE  line_default_id = p_line_default_id                   --   Added by Vivek on 09DEC-2010
10663       AND    var_rent_id = p_var_rent_id;
10664 
10665    --CURSOR c_pn_var_bkhd_defaults -- Commented by Vivek on 09-DEC-2010
10666    CURSOR c_pn_var_bkhd_defaults (
10667       p_bkhd_default_id          IN       NUMBER
10668     , p_var_rent_id              IN       NUMBER)                 --   Added by Vivek on 09-DEC-2010
10669    IS
10670       SELECT bkhd_default_id
10671            , bkhd_detail_num
10672            , line_default_id
10673            , bkhd_start_date
10674            , bkhd_end_date
10675            , break_type
10676            , base_rent_type
10677            , natural_break_rate
10678            , base_rent
10679            , breakpoint_type
10680            , breakpoint_level
10681            , line_template_id
10682            , bkpt_head_template_id
10683            , agreement_template_id
10684            , processed_flag
10685            , var_rent_id
10686            , bkpt_update_flag
10687            , last_update_date
10688            , last_updated_by
10689            , creation_date
10690            , created_by
10691            , last_update_login
10692            , attribute_category
10693            , attribute1
10694            , attribute2
10695            , attribute3
10696            , attribute4
10697            , attribute5
10698            , attribute6
10699            , attribute7
10700            , attribute8
10701            , attribute9
10702            , attribute10
10703            , attribute11
10704            , attribute12
10705            , attribute13
10706            , attribute14
10707            , attribute15
10708            , org_id
10709       FROM   pn_var_bkhd_defaults_all
10710       -- Commented by Vivek on 09-DEC-2010
10711       --WHERE var_rent_id = p_upd_var_rent_rec.var_rent_id;
10712       -- Below lines have been added by Vivek on 09-DEC-2010
10713       WHERE  bkhd_default_id = p_bkhd_default_id
10714       AND    var_rent_id = p_var_rent_id;
10715 
10716    CURSOR c_pn_var_bkdt_defaults (
10717       p_bkdt_default_id          IN       NUMBER
10718     , p_var_rent_id              IN       NUMBER)
10719    IS
10720       SELECT bkdt_default_id
10721            , bkdt_detail_num
10722            , bkhd_default_id
10723            , bkdt_start_date
10724            , bkdt_end_date
10725            , period_bkpt_vol_start
10726            , period_bkpt_vol_end
10727            , group_bkpt_vol_start
10728            , group_bkpt_vol_end
10729            , bkpt_rate
10730            , bkpt_det_template_id
10731            , processed_flag
10732            , var_rent_id
10733            , last_update_date
10734            , last_updated_by
10735            , creation_date
10736            , created_by
10737            , last_update_login
10738            , annual_basis_amount
10739            , attribute_category
10740            , attribute1
10741            , attribute2
10742            , attribute3
10743            , attribute4
10744            , attribute5
10745            , attribute6
10746            , attribute7
10747            , attribute8
10748            , attribute9
10749            , attribute10
10750            , attribute11
10751            , attribute12
10752            , attribute13
10753            , attribute14
10754            , attribute15
10755            , org_id
10756       FROM   pn_var_bkdt_defaults_all
10757       WHERE  bkdt_default_id = p_bkdt_default_id
10758       AND    var_rent_id = p_var_rent_id;
10759 
10760    CURSOR c_pn_var_constraints (
10761       p_constr_default_id        IN       NUMBER
10762     , p_var_rent_id              IN       NUMBER)
10763    IS
10764       SELECT constr_default_id
10765            , constr_default_num
10766            , var_rent_id
10767            , last_update_date
10768            , last_updated_by
10769            , creation_date
10770            , created_by
10771            , last_update_login
10772            , agreement_template_id
10773            , constr_template_id
10774            , constr_start_date
10775            , constr_end_date
10776            , constr_cat_code
10777            , type_code
10778            , amount
10779            , attribute_category
10780            , attribute1
10781            , attribute2
10782            , attribute3
10783            , attribute4
10784            , attribute5
10785            , attribute6
10786            , attribute7
10787            , attribute8
10788            , attribute9
10789            , attribute10
10790            , attribute11
10791            , attribute12
10792            , attribute13
10793            , attribute14
10794            , attribute15
10795            , org_id
10796       FROM   pn_var_constr_defaults_all
10797       --WHERE var_rent_id = p_upd_var_rent_rec.var_rent_id;
10798       WHERE  constr_default_id = p_constr_default_id
10799       AND    var_rent_id = p_var_rent_id;
10800 
10801    CURSOR c_pn_var_abat_defaults (
10802       p_abatement_id             IN       NUMBER
10803     , p_var_rent_id              IN       NUMBER)
10804    IS
10805       SELECT abatement_id
10806            , var_rent_id
10807            , start_date
10808            , end_date
10809            , type_code
10810            , amount
10811            , allowance_applied
10812            , description
10813            , last_update_date
10814            , last_updated_by
10815            , creation_date
10816            , created_by
10817            , last_update_login
10818            , comments
10819            , attribute_category
10820            , attribute1
10821            , attribute2
10822            , attribute3
10823            , attribute4
10824            , attribute5
10825            , attribute6
10826            , attribute7
10827            , attribute8
10828            , attribute9
10829            , attribute10
10830            , attribute11
10831            , attribute12
10832            , attribute13
10833            , attribute14
10834            , attribute15
10835            , org_id
10836       FROM   pn_var_abat_defaults_all
10837       --WHERE var_rent_id = p_upd_var_rent_rec.var_rent_id;
10838       WHERE  abatement_id = p_abatement_id
10839       AND    var_rent_id = p_var_rent_id;
10840 
10841    l_pn_var_rents_rec         c_pn_var_rents%ROWTYPE;
10842    l_pn_var_rent_dates_rec    c_pn_var_rent_dates%ROWTYPE;
10843    l_pn_var_line_defaults     c_pn_var_line_defaults%ROWTYPE;
10844    l_pn_var_bkhd_defaults     c_pn_var_bkhd_defaults%ROWTYPE;
10845    l_pn_var_bkdt_defaults     c_pn_var_bkdt_defaults%ROWTYPE;
10846    l_pn_var_constraints       c_pn_var_constraints%ROWTYPE;
10847    l_pn_var_abat              c_pn_var_abat_defaults%ROWTYPE;
10848    l_constr_count             NUMBER;
10849    l_allow_abat_update        VARCHAR2 (1)                              := 'N';
10850    l_return_status            VARCHAR2 (1);
10851    l_undo_periods             VARCHAR2 (1)                              := 'N';
10852    l_bkpt_exist               NUMBER                                    := 0;
10853    ln_const_count             NUMBER                                    := 0;
10854    l_return_msg               VARCHAR2 (2000);
10855    l_var_commencement_date    pn_var_rents_all.commencement_date%TYPE;
10856    l_var_termination_date     pn_var_rents_all.termination_date%TYPE;
10857    --l_var_comm_date               pn_var_rents_all.commencement_date%TYPE;
10858    --l_var_term_date               pn_var_rents_all.termination_date%TYPE;
10859    l_upd_allow_abat_val       VARCHAR2 (1)                              := 'S';
10860    l_commencement_date        DATE;
10861    l_termination_date         DATE;
10862    l_location_id              NUMBER;
10863    l_proration_days           NUMBER;
10864    l_date_range_count         NUMBER;
10865    l_date_range_bkdt_count    NUMBER;
10866 BEGIN
10867 
10868    l_undo_periods                       := p_undo_periods;         -- Added by Vivek on 07-Dec-2010
10869    x_return_status                      := fnd_api.g_ret_sts_success;
10870                                                                    -- Added by Vivek on 02-DEC-2010
10871 
10872    pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Start of Update_Var_Rent package', 3);
10873    SAVEPOINT update_var_rent;
10874 
10875    -- Standard call to check for call compatibility
10876    IF NOT fnd_api.compatible_api_call (l_api_version
10877                                      , p_api_version
10878                                      , l_api_name
10879                                      , g_pkg_name)
10880    THEN
10881       RAISE fnd_api.g_exc_error;
10882    END IF;
10883 
10884    pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Before opening cursor c_pn_var_rents'
10885                           , 3);
10886 
10887    OPEN c_pn_var_rents;
10888 
10889    FETCH c_pn_var_rents
10890    INTO  l_pn_var_rents_rec;
10891 
10892    IF (c_pn_var_rents%NOTFOUND)
10893    THEN
10894       x_return_status                      := fnd_api.g_ret_sts_error;
10895       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_rents not found', 3);
10896    ELSE
10897       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_rents found', 3);
10898 
10899       IF (   p_upd_var_rent_rec.rent_num IS NULL
10900           OR p_upd_var_rent_rec.rent_num = pn_varen_util.g_pn_miss_char)
10901       THEN
10902          p_upd_var_rent_rec.rent_num          := l_pn_var_rents_rec.rent_num;
10903          pn_varen_util.pvt_debug
10904                                (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.rent_num : '
10905                                 || l_pn_var_rents_rec.rent_num
10906                               , 3);
10907          pn_varen_util.pvt_debug
10908                                 (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.rent_num : '
10909                                  || p_upd_var_rent_rec.rent_num
10910                                , 3);
10911       END IF;
10912 
10913       -- The below IF block has been commented by Vivek on 03-DEC-2010
10914       /*
10915       IF (   p_upd_var_rent_rec.lease_id IS NULL
10916           OR p_upd_var_rent_rec.lease_id = pn_varen_util.g_pn_miss_num)
10917       THEN
10918          --l_pn_var_rents_rec.lease_id := p_upd_var_rent_rec.lease_id;
10919          p_upd_var_rent_rec.lease_id                                                  := l_pn_var_rents_rec.lease_id;
10920          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.lease_id : '
10921                                   || l_pn_var_rents_rec.lease_id
10922                                 , 3
10923                                  );
10924          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.lease_id : '
10925                                   || p_upd_var_rent_rec.lease_id
10926                                 , 3
10927                                  );
10928       END IF;
10929       */
10930 
10931       -- The below IF block has been added by Vivek on 03-DEC-2010
10932       IF (    p_upd_var_rent_rec.lease_id IS NOT NULL
10933           AND p_upd_var_rent_rec.lease_id <> pn_varen_util.g_pn_miss_num
10934           AND p_upd_var_rent_rec.lease_id <> l_pn_var_rents_rec.lease_id)
10935       --OR ( p_upd_var_rent_rec.lease_num IS NOT NULL AND p_upd_var_rent_rec.lease_num <> pn_varen_util.g_pn_miss_char)
10936       --OR ( p_upd_var_rent_rec.lease_name IS NOT NULL AND p_upd_var_rent_rec.lease_name  <> pn_varen_util.g_pn_miss_char)
10937       THEN
10938          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Validate_Var_Rent: Calling Lease Validation ', 3);
10939          pn_varen_util.pvt_debug
10940                ('PN_VAREN_PVT: Validate_Var_Rent: Start of pn_varen_util.validate_lease procedure'
10941               , 3);
10942          l_location_id                        := p_upd_var_rent_rec.location_id;
10943          pn_varen_util.validate_lease (p_lease_name                  => NULL
10944                                                                      --p_upd_var_rent_rec.lease_name
10945                                      , p_lease_num                   => NULL
10946                                                                       --p_upd_var_rent_rec.lease_num
10947                                      , x_lease_id                    => p_upd_var_rent_rec.lease_id
10948                                      , x_proration_days              => l_proration_days
10949                                      , x_location_id                 => l_location_id
10950                                      , p_location_code               => p_upd_var_rent_rec.location_code
10951                                      , x_lease_commencement_date     => l_commencement_date
10952                                      , x_lease_termination_date      => l_termination_date
10953                                      , p_org_id                      => g_org_id
10954                                      , x_return_status               => x_return_status);
10955          pn_varen_util.pvt_debug
10956             (   'PN_VAREN_PVT: Validate_Var_Rent: End of pn_varen_util.validate_lease procedure status :'
10957              || x_return_status
10958            , 3);
10959          pn_varen_util.pvt_debug
10960                                 (   'PN_VAREN_PVT: Validate_Var_Rent: Lease Id Validation Output :'
10961                                  || p_upd_var_rent_rec.lease_id
10962                                , 3);
10963 
10964          IF (x_return_status <> fnd_api.g_ret_sts_success)
10965          THEN
10966             pn_varen_util.pvt_debug
10967                             (   'PN_VAREN_PVT: Validate_Var_Rent: p_var_rent_rec.lease_id Error: '
10968                              || p_upd_var_rent_rec.lease_id
10969                            , 3);
10970             fnd_message.set_name ('PN', 'PN_VAR_INVALID_LEASE');
10971             fnd_msg_pub.ADD;
10972             RAISE fnd_api.g_exc_error;
10973          END IF;
10974 
10975          IF    p_upd_var_rent_rec.location_id IS NULL
10976             OR p_upd_var_rent_rec.location_id = pn_varen_util.g_pn_miss_num
10977          THEN
10978             p_upd_var_rent_rec.location_id       := l_location_id;
10979          END IF;
10980 
10981          IF    p_upd_var_rent_rec.proration_days IS NULL
10982             OR p_upd_var_rent_rec.proration_days = pn_varen_util.g_pn_miss_num
10983          THEN
10984             p_upd_var_rent_rec.proration_days    := l_proration_days;
10985          END IF;
10986 
10987          IF    p_upd_var_rent_rec.commencement_date IS NULL
10988             OR p_upd_var_rent_rec.commencement_date = pn_varen_util.g_pn_miss_date
10989          THEN
10990             p_upd_var_rent_rec.commencement_date := l_commencement_date;
10991          END IF;
10992 
10993          IF    p_upd_var_rent_rec.termination_date IS NULL
10994             OR p_upd_var_rent_rec.termination_date = pn_varen_util.g_pn_miss_date
10995          THEN
10996             p_upd_var_rent_rec.termination_date  := l_termination_date;
10997          END IF;
10998 
10999 
11000       ELSE
11001          p_upd_var_rent_rec.lease_id          := l_pn_var_rents_rec.lease_id;
11002       -- p_upd_var_rent_rec.lease_num                                                 := l_pn_var_rents_rec.lease_num;
11003        --p_upd_var_rent_rec.lease_name                                                := l_pn_var_rents_rec.lease_name;
11004        --p_upd_var_rent_rec.proration_days                                             := l_pn_var_rents_rec.proration_days
11005        --p_upd_var_rent_rec.location_id                                                := l_pn_var_rents_rec.location_id
11006        --p_upd_var_rent_rec.commencement_date                                          := l_pn_var_rents_rec.commencement_date
11007        --p_upd_var_rent_rec.termination_date                                           := l_pn_var_rents_rec.termination_date
11008       END IF;
11009 
11010       IF (    p_upd_var_rent_rec.abstracted_by_user IS NOT NULL
11011           AND p_upd_var_rent_rec.abstracted_by_user <> pn_varen_util.g_pn_miss_char)
11012       THEN
11013 --------------------------------------------------------------------------------
11014 --Abstracted by user validation
11015 --------------------------------------------------------------------------------
11016          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent: Calling User Validation', 3);
11017          pn_varen_util.validate_abst_user (x_user_name                   => p_upd_var_rent_rec.abstracted_by_user
11018                                          , x_user_id                     => p_upd_var_rent_rec.abstracted_by_user_id
11019                                          , x_return_status               => x_return_status);
11020          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: User Validation user id :'
11021                                   || p_upd_var_rent_rec.abstracted_by_user_id
11022                                 , 3);
11023          pn_varen_util.pvt_debug
11024                     (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of User Validation procedure '
11025                      || x_return_status
11026                    , 3);
11027          pn_varen_util.pvt_debug
11028                       (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.abstracted_by_user : '
11029                        || l_pn_var_rents_rec.abstracted_by_user
11030                      , 3);
11031          pn_varen_util.pvt_debug
11032                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.abstracted_by_user : '
11033                        || p_upd_var_rent_rec.abstracted_by_user
11034                      , 3);
11035 
11036          IF (x_return_status = fnd_api.g_ret_sts_error)
11037          THEN
11038             fnd_message.set_name ('PN', 'PN_VAR_ABS_USER');
11039             fnd_message.set_token ('ABSTRACTED_BY_USER_ID'
11040                                  ,    p_upd_var_rent_rec.abstracted_by_user
11041                                    || '/'
11042                                    || p_upd_var_rent_rec.abstracted_by_user_id);
11043             pn_varen_util.pvt_debug
11044                       (   'PN_VAREN_PVT: Upd_Val_Varent: User Validation User Name Expected Error:'
11045                        || p_upd_var_rent_rec.abstracted_by_user
11046                      , 3);
11047             fnd_msg_pub.ADD;
11048             RAISE fnd_api.g_exc_error;
11049          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11050          THEN
11051             fnd_message.set_name ('PN', 'PN_VAR_ABS_USER');
11052             fnd_message.set_token ('ABSTRACTED_BY_USER_ID'
11053                                  ,    p_upd_var_rent_rec.abstracted_by_user
11054                                    || '/'
11055                                    || p_upd_var_rent_rec.abstracted_by_user_id);
11056             pn_varen_util.pvt_debug
11057                    (   'PN_VAREN_PVT: Upd_Val_Varent: User Validation user Name Un-Expected Error:'
11058                     || p_upd_var_rent_rec.abstracted_by_user
11059                   , 3);
11060             fnd_msg_pub.ADD;
11061             RAISE fnd_api.g_exc_unexpected_error;
11062          ELSE
11063             pn_varen_util.pvt_debug
11064                               (   'PN_VAREN_PVT: Upd_Val_Varent: User Validation user id Success:'
11065                                || p_upd_var_rent_rec.abstracted_by_user_id
11066                              , 3);
11067          END IF;
11068       --END IF;
11069       ELSE
11070          p_upd_var_rent_rec.abstracted_by_user := l_pn_var_rents_rec.abstracted_by_user;
11071          pn_varen_util.pvt_debug
11072                      (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.abstracted_by_user : '
11073                       || l_pn_var_rents_rec.abstracted_by_user
11074                     , 3);
11075          pn_varen_util.pvt_debug
11076                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.abstracted_by_user : '
11077                        || p_upd_var_rent_rec.abstracted_by_user
11078                      , 3);
11079       END IF;
11080 
11081       IF (   p_upd_var_rent_rec.commencement_date IS NULL
11082           OR p_upd_var_rent_rec.commencement_date = pn_varen_util.g_pn_miss_date)
11083       THEN
11084          p_upd_var_rent_rec.commencement_date := l_pn_var_rents_rec.commencement_date;
11085          pn_varen_util.pvt_debug
11086                       (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.commencement_date : '
11087                        || l_pn_var_rents_rec.commencement_date
11088                      , 3);
11089          pn_varen_util.pvt_debug
11090                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.commencement_date : '
11091                         || p_upd_var_rent_rec.commencement_date
11092                       , 3);
11093       END IF;
11094 
11095       IF (   p_upd_var_rent_rec.termination_date IS NULL
11096           OR p_upd_var_rent_rec.termination_date = pn_varen_util.g_pn_miss_date)
11097       THEN
11098          p_upd_var_rent_rec.termination_date  := l_pn_var_rents_rec.termination_date;
11099          pn_varen_util.pvt_debug
11100                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.termination_date : '
11101                         || l_pn_var_rents_rec.termination_date
11102                       , 3);
11103          pn_varen_util.pvt_debug
11104                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.termination_date : '
11105                          || p_upd_var_rent_rec.termination_date
11106                        , 3);
11107       END IF;
11108 
11109       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11110       /*
11111       IF    (   p_upd_var_rent_rec.term_template_id IS NULL
11112              OR p_upd_var_rent_rec.term_template_id = pn_varen_util.g_pn_miss_num
11113             )
11114          OR (   p_upd_var_rent_rec.term_template_name IS NULL
11115              OR p_upd_var_rent_rec.term_template_name = pn_varen_util.g_pn_miss_char
11116             )
11117       THEN*/
11118       -- New IF block added by Vivek on 02-DEC-2010
11119       IF    (    p_upd_var_rent_rec.term_template_id IS NOT NULL
11120              AND p_upd_var_rent_rec.term_template_id <> pn_varen_util.g_pn_miss_num)
11121          OR (   p_upd_var_rent_rec.term_template_name IS NOT NULL
11122              OR p_upd_var_rent_rec.term_template_name <> pn_varen_util.g_pn_miss_char)
11123       THEN
11124 --------------------------------------------------------------------------------
11125 --Term template id or name validation
11126 --------------------------------------------------------------------------------
11127          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent:  Calling Term Template', 3);
11128          pn_varen_util.validate_term_template
11129                                     (p_org_id                      => g_org_id
11130                                    , x_term_template_id            => p_upd_var_rent_rec.term_template_id
11131                                    , x_term_template_name          => p_upd_var_rent_rec.term_template_name
11132                                    , x_return_status               => x_return_status);
11133          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Term Template Id :'
11134                                   || p_upd_var_rent_rec.term_template_id
11135                                 , 3);
11136          pn_varen_util.pvt_debug
11137                    (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Term Template Id procedure '
11138                     || x_return_status
11139                   , 3);
11140          pn_varen_util.pvt_debug
11141                  (   'PN_VAREN_PVT: Update_Var_Rent: Before p_upd_var_rent_rec.term_template_id : '
11142                   || p_upd_var_rent_rec.term_template_id
11143                 , 3);
11144          pn_varen_util.pvt_debug
11145                (   'PN_VAREN_PVT: Update_Var_Rent: Before p_upd_var_rent_rec.term_template_name : '
11146                 || p_upd_var_rent_rec.term_template_name
11147               , 3);
11148 
11149          IF (x_return_status = fnd_api.g_ret_sts_error)
11150          THEN
11151             fnd_message.set_name ('PN', 'PN_VAR_TRM_TEM');
11152             fnd_message.set_token ('TERM_TEMPLATE_ID_NAME'
11153                                  ,    p_upd_var_rent_rec.term_template_id
11154                                    || '/'
11155                                    || p_upd_var_rent_rec.term_template_name);
11156             pn_varen_util.pvt_debug
11157                             (   'PN_VAREN_PVT: Upd_Val_Varent: Term Template Name Expected Error :'
11158                              || p_upd_var_rent_rec.term_template_name
11159                            , 3);
11160             fnd_msg_pub.ADD;
11161             RAISE fnd_api.g_exc_error;
11162          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11163          THEN
11164             fnd_message.set_name ('PN', 'PN_VAR_TRM_TEM');
11165             fnd_message.set_token ('TERM_TEMPLATE_ID_NAME'
11166                                  ,    p_upd_var_rent_rec.term_template_id
11167                                    || '/'
11168                                    || p_upd_var_rent_rec.term_template_name);
11169             pn_varen_util.pvt_debug
11170                          (   'PN_VAREN_PVT: Upd_Val_Varent: Term Template Name Un-Expected Error :'
11171                           || p_upd_var_rent_rec.term_template_name
11172                         , 3);
11173             fnd_msg_pub.ADD;
11174             RAISE fnd_api.g_exc_unexpected_error;
11175          ELSE
11176             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Term Template Id Success :'
11177                                      || p_upd_var_rent_rec.term_template_id
11178                                    , 3);
11179          END IF;
11180       ELSE
11181          p_upd_var_rent_rec.term_template_id  := l_pn_var_rents_rec.term_template_id;
11182          pn_varen_util.pvt_debug
11183                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.term_template_id : '
11184                         || l_pn_var_rents_rec.term_template_id
11185                       , 3);
11186          pn_varen_util.pvt_debug
11187                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.term_template_id : '
11188                          || p_upd_var_rent_rec.term_template_id
11189                        , 3);
11190       --l_pn_var_rents_rec.term_template_name := p_upd_var_rent_rec.term_template_name;
11191       END IF;
11192 
11193       IF (    p_upd_var_rent_rec.currency_code IS NOT NULL
11194           AND p_upd_var_rent_rec.currency_code <> pn_varen_util.g_pn_miss_char)
11195       THEN
11196 --------------------------------------------------------------------------------
11197 --Currency Validation
11198 --------------------------------------------------------------------------------
11199          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent:  Calling Currency', 3);
11200          pn_varen_util.validate_currency (p_currency_code               => p_upd_var_rent_rec.currency_code
11201                                         , x_return_status               => x_return_status);
11202          pn_varen_util.pvt_debug
11203                (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Currency validation procedure '
11204                 || l_return_status
11205               , 3);
11206          pn_varen_util.pvt_debug
11207                            (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.currency_code : '
11208                             || l_pn_var_rents_rec.currency_code
11209                           , 3);
11210          pn_varen_util.pvt_debug
11211                            (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.currency_code : '
11212                             || p_upd_var_rent_rec.currency_code
11213                           , 3);
11214 
11215          IF (x_return_status = fnd_api.g_ret_sts_error)
11216          THEN
11217             fnd_message.set_name ('PN', 'PN_VAR_CUR_CODE');
11218             fnd_message.set_token ('CURRENCY_CODE', p_upd_var_rent_rec.currency_code);
11219             pn_varen_util.pvt_debug
11220                                (   'PN_VAREN_PVT: Upd_Val_Varent:  Currency Code Expected Error :'
11221                                 || p_upd_var_rent_rec.currency_code
11222                               , 3);
11223             fnd_msg_pub.ADD;
11224             RAISE fnd_api.g_exc_error;
11225          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11226          THEN
11227             fnd_message.set_name ('PN', 'PN_VAR_CUR_CODE');
11228             fnd_message.set_token ('CURRENCY_CODE', p_upd_var_rent_rec.currency_code);
11229             pn_varen_util.pvt_debug
11230                             (   'PN_VAREN_PVT: Upd_Val_Varent:  Currency Code Un-Expected Error :'
11231                              || p_upd_var_rent_rec.currency_code
11232                            , 3);
11233             fnd_msg_pub.ADD;
11234             RAISE fnd_api.g_exc_error;
11235          ELSE
11236             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent:  Currency Code Success :'
11237                                      || p_upd_var_rent_rec.currency_code
11238                                    , 3);
11239          END IF;
11240       ELSE
11241          p_upd_var_rent_rec.currency_code     := l_pn_var_rents_rec.currency_code;
11242          pn_varen_util.pvt_debug
11243                           (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.currency_code : '
11244                            || l_pn_var_rents_rec.currency_code
11245                          , 3);
11246          pn_varen_util.pvt_debug
11247                            (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.currency_code : '
11248                             || p_upd_var_rent_rec.currency_code
11249                           , 3);
11250       END IF;
11251 
11252       IF (   p_upd_var_rent_rec.proration_days IS NULL
11253           OR p_upd_var_rent_rec.proration_days = pn_varen_util.g_pn_miss_num)
11254       THEN
11255          p_upd_var_rent_rec.proration_days    := l_pn_var_rents_rec.proration_days;
11256          pn_varen_util.pvt_debug
11257                          (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.proration_days : '
11258                           || l_pn_var_rents_rec.proration_days
11259                         , 3);
11260          pn_varen_util.pvt_debug
11261                           (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.proration_days : '
11262                            || p_upd_var_rent_rec.proration_days
11263                          , 3);
11264       END IF;
11265 
11266       IF    (   p_upd_var_rent_rec.agreement_template_id IS NULL
11267              OR p_upd_var_rent_rec.agreement_template_id = pn_varen_util.g_pn_miss_num)
11268          OR (   p_upd_var_rent_rec.agreement_template_name IS NULL
11269              OR p_upd_var_rent_rec.agreement_template_name = pn_varen_util.g_pn_miss_char)
11270       THEN
11271          p_upd_var_rent_rec.agreement_template_id := l_pn_var_rents_rec.agreement_template_id;
11272          pn_varen_util.pvt_debug
11273                   (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.agreement_template_id : '
11274                    || l_pn_var_rents_rec.agreement_template_id
11275                  , 3);
11276          pn_varen_util.pvt_debug
11277                    (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.agreement_template_id : '
11278                     || p_upd_var_rent_rec.agreement_template_id
11279                   , 3);
11280       --l_pn_var_rents_rec.agreement_template_name := p_upd_var_rent_rec.agreement_template_name;
11281       END IF;
11282 
11283       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11284       /*
11285        IF    (   p_upd_var_rent_rec.cumulative_vol_code IS NULL
11286               OR p_upd_var_rent_rec.cumulative_vol_code = pn_varen_util.g_pn_miss_char
11287              )
11288           OR (   p_upd_var_rent_rec.cumulative_vol_meaning IS NULL
11289               OR p_upd_var_rent_rec.cumulative_vol_meaning = pn_varen_util.g_pn_miss_char
11290              )
11291        THEN
11292       */
11293 
11294       -- New IF block added by Vivek on 02-DEC-2010
11295       IF    (    p_upd_var_rent_rec.cumulative_vol_code IS NOT NULL
11296              AND p_upd_var_rent_rec.cumulative_vol_code <> pn_varen_util.g_pn_miss_char)
11297          OR (    p_upd_var_rent_rec.cumulative_vol_meaning IS NOT NULL
11298              AND p_upd_var_rent_rec.cumulative_vol_meaning <> pn_varen_util.g_pn_miss_char)
11299       THEN
11300 --------------------------------------------------------------------------------
11301 --Cumulative Volume or Method validation
11302 --------------------------------------------------------------------------------
11303          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent: Calling Cumulative Volume', 3);
11304          pn_varen_util.validate_lookups
11305                                     (p_lookup_type                 => g_cumulative_vol
11306                                    , x_lookup_meaning              => p_upd_var_rent_rec.cumulative_vol_meaning
11307                                    , x_lookup_code                 => p_upd_var_rent_rec.cumulative_vol_code
11308                                    , x_return_status               => x_return_status);
11309          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Cumulative Volume Code :'
11310                                   || p_upd_var_rent_rec.cumulative_vol_code
11311                                 , 3);
11312          pn_varen_util.pvt_debug
11313              (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Cumulative Volume Code procedure '
11314               || x_return_status
11315             , 3);
11316          pn_varen_util.pvt_debug
11317                       (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.cumulative_vol_code : '
11318                        || p_upd_var_rent_rec.cumulative_vol_code
11319                      , 3);
11320          pn_varen_util.pvt_debug
11321                    (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.cumulative_vol_meaning : '
11322                     || p_upd_var_rent_rec.cumulative_vol_meaning
11323                   , 3);
11324 
11325          IF (x_return_status = fnd_api.g_ret_sts_error)
11326          THEN
11327             fnd_message.set_name ('PN', 'PN_VAR_CUMM_VOL');
11328             fnd_message.set_token ('CUMULATIVE_VOL_CODE_MEANING'
11329                                  ,    p_upd_var_rent_rec.cumulative_vol_meaning
11330                                    || '/'
11331                                    || p_upd_var_rent_rec.cumulative_vol_code);
11332             pn_varen_util.pvt_debug
11333                       (   'PN_VAREN_PVT: Upd_Val_Varent: Cumulative Volume Meaning Expected Error:'
11334                        || p_upd_var_rent_rec.cumulative_vol_meaning
11335                      , 3);
11336             fnd_msg_pub.ADD;
11337             RAISE fnd_api.g_exc_error;
11338          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11339          THEN
11340             fnd_message.set_name ('PN', 'PN_VAR_CUMM_VOL');
11341             fnd_message.set_token ('CUMULATIVE_VOL_CODE_MEANING'
11342                                  ,    p_upd_var_rent_rec.cumulative_vol_meaning
11343                                    || '/'
11344                                    || p_upd_var_rent_rec.cumulative_vol_code);
11345             pn_varen_util.pvt_debug
11346                    (   'PN_VAREN_PVT: Upd_Val_Varent: Cumulative Volume Meaning Un-Expected Error:'
11347                     || p_upd_var_rent_rec.cumulative_vol_meaning
11348                   , 3);
11349             fnd_msg_pub.ADD;
11350             RAISE fnd_api.g_exc_unexpected_error;
11351          ELSE
11352             pn_varen_util.pvt_debug
11353                                (   'PN_VAREN_PVT: Upd_Val_Varent: Cumulative Volume Code Success:'
11354                                 || p_upd_var_rent_rec.cumulative_vol_code
11355                               , 3);
11356          END IF;                                                                  -- l_return_status
11357       ELSE
11358          p_upd_var_rent_rec.cumulative_vol_code := l_pn_var_rents_rec.cumulative_vol;
11359          pn_varen_util.pvt_debug
11360                          (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.cumulative_vol : '
11361                           || l_pn_var_rents_rec.cumulative_vol
11362                         , 3);
11363          pn_varen_util.pvt_debug
11364                      (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.cumulative_vol_code : '
11365                       || p_upd_var_rent_rec.cumulative_vol_code
11366                     , 3);
11367       --l_pn_var_rents_rec.cumulative_vol_meaning := p_upd_var_rent_rec.cumulative_vol_meaning;
11368       END IF;
11369 
11370       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11371       /*
11372        IF    (   p_upd_var_rent_rec.proration_rule_code IS NULL
11373               OR p_upd_var_rent_rec.proration_rule_code = pn_varen_util.g_pn_miss_char
11374              )
11375           OR (   p_upd_var_rent_rec.proration_rule_meaning IS NULL
11376               OR p_upd_var_rent_rec.proration_rule_meaning = pn_varen_util.g_pn_miss_char
11377              )
11378        THEN
11379        */
11380       -- New IF block added by Vivek on 02-DEC-2010
11381       IF    (    p_upd_var_rent_rec.proration_rule_code IS NOT NULL
11382              AND p_upd_var_rent_rec.proration_rule_code <> pn_varen_util.g_pn_miss_char)
11383          OR (    p_upd_var_rent_rec.proration_rule_meaning IS NOT NULL
11384              AND p_upd_var_rent_rec.proration_rule_meaning <> pn_varen_util.g_pn_miss_char)
11385       THEN
11386 --------------------------------------------------------------------------------
11387 --Proration Rule code validation or partial year method
11388 --------------------------------------------------------------------------------
11389          pn_varen_util.pvt_debug
11390                      ('PN_VAREN_PVT: Upd_Val_Varent:  Calling Proration Rule / Parial Year Method'
11391                     , 3);
11392          pn_varen_util.validate_lookups
11393                                     (p_lookup_type                 => g_proration_rule
11394                                    , x_lookup_meaning              => p_upd_var_rent_rec.proration_rule_meaning
11395                                    , x_lookup_code                 => p_upd_var_rent_rec.proration_rule_code
11396                                    , x_return_status               => x_return_status);
11397          pn_varen_util.pvt_debug
11398                      (   'PN_VAREN_PVT: Upd_Val_Varent: Proration Rule / Parial Year Method Code :'
11399                       || p_upd_var_rent_rec.proration_rule_code
11400                     , 3);
11401          pn_varen_util.pvt_debug
11402                 (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Proration Rule Code procedure '
11403                  || x_return_status
11404                , 3);
11405          pn_varen_util.pvt_debug
11406                    (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.proration_rule_meaning : '
11407                     || p_upd_var_rent_rec.proration_rule_meaning
11408                   , 3);
11409          pn_varen_util.pvt_debug
11410                       (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.proration_rule_code : '
11411                        || p_upd_var_rent_rec.proration_rule_code
11412                      , 3);
11413 
11414          IF (x_return_status = fnd_api.g_ret_sts_error)
11415          THEN
11416             fnd_message.set_name ('PN', 'PN_VAR_PRO_RUL');
11417             fnd_message.set_token ('PRORATION_RULE_CODE_MEANING'
11418                                  ,    p_upd_var_rent_rec.proration_rule_meaning
11419                                    || '/'
11420                                    || p_upd_var_rent_rec.proration_rule_code);
11421             pn_varen_util.pvt_debug
11422                (   'PN_VAREN_PVT: Upd_Val_Varent: Proration Rule / Parial Year Method Meaning Expected Error :'
11423                 || p_upd_var_rent_rec.proration_rule_meaning
11424               , 3);
11425             fnd_msg_pub.ADD;
11426             RAISE fnd_api.g_exc_error;
11427          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11428          THEN
11429             fnd_message.set_name ('PN', 'PN_VAR_PRO_RUL');
11430             fnd_message.set_token ('PRORATION_RULE_CODE_MEANING'
11431                                  ,    p_upd_var_rent_rec.proration_rule_meaning
11432                                    || '/'
11433                                    || p_upd_var_rent_rec.proration_rule_code);
11434             pn_varen_util.pvt_debug
11435                (   'PN_VAREN_PVT: Upd_Val_Varent: Proration Rule / Parial Year Method Meaning Un-Expected Error :'
11436                 || p_upd_var_rent_rec.proration_rule_meaning
11437               , 3);
11438             fnd_msg_pub.ADD;
11439             RAISE fnd_api.g_exc_unexpected_error;
11440          ELSE
11441             pn_varen_util.pvt_debug
11442                (   'PN_VAREN_PVT: Upd_Val_Varent: Proration Rule / Parial Year Method Code Success :'
11443                 || p_upd_var_rent_rec.proration_rule_code
11444               , 3);
11445          END IF;
11446       --END IF;
11447       ELSE
11448          p_upd_var_rent_rec.proration_rule_code := l_pn_var_rents_rec.proration_rule;
11449          pn_varen_util.pvt_debug
11450                          (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.proration_rule : '
11451                           || l_pn_var_rents_rec.proration_rule
11452                         , 3);
11453          pn_varen_util.pvt_debug
11454                      (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.proration_rule_code : '
11455                       || p_upd_var_rent_rec.proration_rule_code
11456                     , 3);
11457       --l_pn_var_rents_rec.proration_rule_meaning := p_upd_var_rent_rec.proration_rule_meaning;
11458       END IF;
11459 
11460       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11461       /*
11462        IF    (   p_upd_var_rent_rec.invoice_on_code IS NULL
11463               OR p_upd_var_rent_rec.invoice_on_code = pn_varen_util.g_pn_miss_char
11464              )
11465           OR (   p_upd_var_rent_rec.invoice_on_meaning IS NULL
11466               OR p_upd_var_rent_rec.invoice_on_meaning = pn_varen_util.g_pn_miss_char
11467              )
11468        THEN
11469       */
11470       -- New IF block added by Vivek on 02-DEC-2010
11471       IF    (    p_upd_var_rent_rec.invoice_on_code IS NOT NULL
11472              AND p_upd_var_rent_rec.invoice_on_code <> pn_varen_util.g_pn_miss_char)
11473          OR (    p_upd_var_rent_rec.invoice_on_meaning IS NOT NULL
11474              AND p_upd_var_rent_rec.invoice_on_meaning <> pn_varen_util.g_pn_miss_char)
11475       THEN
11476 --------------------------------------------------------------------------------
11477 --Invoice On Code validation
11478 --------------------------------------------------------------------------------
11479          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent:  Calling Invoice on', 3);
11480          pn_varen_util.validate_lookups (p_lookup_type                 => g_invoice_on
11481                                        , x_lookup_meaning              => p_upd_var_rent_rec.invoice_on_meaning
11482                                        , x_lookup_code                 => p_upd_var_rent_rec.invoice_on_code
11483                                        , x_return_status               => x_return_status);
11484          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent:  Invoice on Code  :'
11485                                   || p_upd_var_rent_rec.invoice_on_code
11486                                 , 3);
11487          pn_varen_util.pvt_debug
11488                     (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Invoice on Code procedure '
11489                      || x_return_status
11490                    , 3);
11491          pn_varen_util.pvt_debug
11492                        (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.invoice_on_meaning : '
11493                         || p_upd_var_rent_rec.invoice_on_meaning
11494                       , 3);
11495          pn_varen_util.pvt_debug
11496                           (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.invoice_on_code : '
11497                            || p_upd_var_rent_rec.invoice_on_code
11498                          , 3);
11499 
11500          IF (x_return_status = fnd_api.g_ret_sts_error)
11501          THEN
11502             fnd_message.set_name ('PN', 'PN_VAR_INV_ON');
11503             fnd_message.set_token ('INVOICE_ON_CODE_MEANING'
11504                                  ,    p_upd_var_rent_rec.invoice_on_meaning
11505                                    || '/'
11506                                    || p_upd_var_rent_rec.invoice_on_code);
11507             pn_varen_util.pvt_debug
11508                             (   'PN_VAREN_PVT: Upd_Val_Varent: Invoice on Meaning Expected Error :'
11509                              || p_upd_var_rent_rec.invoice_on_meaning
11510                            , 3);
11511             fnd_msg_pub.ADD;
11512             RAISE fnd_api.g_exc_error;
11513          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11514          THEN
11515             fnd_message.set_name ('PN', 'PN_VAR_INV_ON');
11516             fnd_message.set_token ('INVOICE_ON_CODE_MEANING'
11517                                  ,    p_upd_var_rent_rec.invoice_on_meaning
11518                                    || '/'
11519                                    || p_upd_var_rent_rec.invoice_on_code);
11520             pn_varen_util.pvt_debug
11521                          (   'PN_VAREN_PVT: Upd_Val_Varent: Invoice on Meaning Un-Expected Error :'
11522                           || p_upd_var_rent_rec.invoice_on_meaning
11523                         , 3);
11524             fnd_msg_pub.ADD;
11525             RAISE fnd_api.g_exc_unexpected_error;
11526          ELSE
11527             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Invoice on Code Success :'
11528                                      || p_upd_var_rent_rec.invoice_on_code
11529                                    , 3);
11530          END IF;
11531       --END IF;
11532       ELSE
11533          p_upd_var_rent_rec.invoice_on_code   := l_pn_var_rents_rec.invoice_on;
11534          pn_varen_util.pvt_debug
11535                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.invoice_on : '
11536                               || l_pn_var_rents_rec.invoice_on
11537                             , 3);
11538          pn_varen_util.pvt_debug
11539                          (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invoice_on_code : '
11540                           || p_upd_var_rent_rec.invoice_on_code
11541                         , 3);
11542       --l_pn_var_rents_rec.invoice_on_meaning := p_upd_var_rent_rec.invoice_on_meaning;
11543       END IF;
11544 
11545       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11546       /*
11547        IF    (   p_upd_var_rent_rec.negative_rent_code IS NULL
11548               OR p_upd_var_rent_rec.negative_rent_code = pn_varen_util.g_pn_miss_char
11549              )
11550           OR (   p_upd_var_rent_rec.negative_rent_meaning IS NULL
11551               OR p_upd_var_rent_rec.negative_rent_meaning = pn_varen_util.g_pn_miss_char
11552              )
11553        THEN
11554       */
11555       -- New IF block added by Vivek on 02-DEC-2010
11556       IF    (    p_upd_var_rent_rec.negative_rent_code IS NOT NULL
11557              AND p_upd_var_rent_rec.negative_rent_code <> pn_varen_util.g_pn_miss_char)
11558          OR (    p_upd_var_rent_rec.negative_rent_meaning IS NOT NULL
11559              AND p_upd_var_rent_rec.negative_rent_meaning <> pn_varen_util.g_pn_miss_char)
11560       THEN
11561 --------------------------------------------------------------------------------
11562 --Negative Rent Validation
11563 --------------------------------------------------------------------------------
11564          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent:  Calling Negative Rent', 3);
11565          pn_varen_util.validate_lookups
11566                                      (p_lookup_type                 => g_negative_rent
11567                                     , x_lookup_meaning              => p_upd_var_rent_rec.negative_rent_meaning
11568                                     , x_lookup_code                 => p_upd_var_rent_rec.negative_rent_code
11569                                     , x_return_status               => x_return_status);
11570          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Negative Rent :'
11571                                   || p_upd_var_rent_rec.negative_rent_code
11572                                 , 3);
11573          pn_varen_util.pvt_debug
11574                       (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Negative Rent procedure '
11575                        || x_return_status
11576                      , 3);
11577          pn_varen_util.pvt_debug
11578                     (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.negative_rent_meaning : '
11579                      || p_upd_var_rent_rec.negative_rent_meaning
11580                    , 3);
11581          pn_varen_util.pvt_debug
11582                        (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.negative_rent_code : '
11583                         || p_upd_var_rent_rec.negative_rent_code
11584                       , 3);
11585 
11586          IF (x_return_status = fnd_api.g_ret_sts_error)
11587          THEN
11588             pn_varen_util.pvt_debug
11589                         (   'PN_VAREN_PVT: Upd_Val_Varent: Negative Rent Meaning Expected Error :'
11590                          || p_upd_var_rent_rec.negative_rent_meaning
11591                        , 3);
11592             fnd_message.set_name ('PN', 'PN_VAR_NEG_REN');
11593             fnd_message.set_token ('NEGATIVE_RENT_CODE_MEANING'
11594                                  ,    p_upd_var_rent_rec.negative_rent_meaning
11595                                    || '/'
11596                                    || p_upd_var_rent_rec.negative_rent_code);
11597             fnd_msg_pub.ADD;
11598             RAISE fnd_api.g_exc_error;
11599          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11600          THEN
11601             pn_varen_util.pvt_debug
11602                      (   'PN_VAREN_PVT: Upd_Val_Varent: Negative Rent Meaning Un-Expected Error :'
11603                       || p_upd_var_rent_rec.negative_rent_meaning
11604                     , 3);
11605             fnd_message.set_name ('PN', 'PN_VAR_NEG_REN');
11606             fnd_message.set_token ('NEGATIVE_RENT_CODE_MEANING'
11607                                  ,    p_upd_var_rent_rec.negative_rent_meaning
11608                                    || '/'
11609                                    || p_upd_var_rent_rec.negative_rent_code);
11610             fnd_msg_pub.ADD;
11611             RAISE fnd_api.g_exc_unexpected_error;
11612          ELSE
11613             pn_varen_util.pvt_debug
11614                                   (   'PN_VAREN_PVT: Upd_Val_Varent: Negative Rent Code Success :'
11615                                    || p_upd_var_rent_rec.negative_rent_code
11616                                  , 3);
11617          END IF;
11618       --END IF;
11619       ELSE
11620          p_upd_var_rent_rec.negative_rent_code := l_pn_var_rents_rec.negative_rent;
11621          pn_varen_util.pvt_debug
11622                           (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.negative_rent : '
11623                            || l_pn_var_rents_rec.negative_rent
11624                          , 3);
11625          pn_varen_util.pvt_debug
11626                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.negative_rent_code : '
11627                        || p_upd_var_rent_rec.negative_rent_code
11628                      , 3);
11629       --l_pn_var_rents_rec.negative_rent_meaning := p_upd_var_rent_rec.negative_rent_meaning;
11630       END IF;
11631 
11632       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11633       /*
11634        IF    (   p_upd_var_rent_rec.type_code IS NULL
11635               OR p_upd_var_rent_rec.type_code = pn_varen_util.g_pn_miss_char)
11636           OR (   p_upd_var_rent_rec.type_meaning IS NULL
11637               OR p_upd_var_rent_rec.type_meaning = pn_varen_util.g_pn_miss_char
11638              )
11639        THEN
11640       */
11641 
11642       -- New IF block added by Vivek on 02-DEC-2010
11643       IF    (    p_upd_var_rent_rec.type_code IS NOT NULL
11644              AND p_upd_var_rent_rec.type_code <> pn_varen_util.g_pn_miss_char)
11645          OR (    p_upd_var_rent_rec.type_meaning IS NOT NULL
11646              AND p_upd_var_rent_rec.type_meaning <> pn_varen_util.g_pn_miss_char)
11647       THEN
11648 --------------------------------------------------------------------------------
11649 --Volume Type or Type Code validation
11650 --------------------------------------------------------------------------------
11651          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Upd_Val_Varent: Calling Rent Type Validation', 3);
11652          pn_varen_util.validate_lookups (p_lookup_type                 => g_rent_type
11653                                        , x_lookup_meaning              => p_upd_var_rent_rec.type_meaning
11654                                        , x_lookup_code                 => p_upd_var_rent_rec.type_code
11655                                        , x_return_status               => x_return_status);
11656          pn_varen_util.pvt_debug
11657                           (   'PN_VAREN_PVT: Upd_Val_Varent: Rent Type Meaning Validation Output :'
11658                            || p_upd_var_rent_rec.type_meaning
11659                          , 3);
11660          pn_varen_util.pvt_debug
11661                              (   'PN_VAREN_PVT: Upd_Val_Varent: Rent Type Code Validation Output :'
11662                               || p_upd_var_rent_rec.type_code
11663                             , 3);
11664          pn_varen_util.pvt_debug
11665                (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Rent type validation procedure '
11666                 || x_return_status
11667               , 3);
11668          pn_varen_util.pvt_debug
11669                              (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.type_meaning : '
11670                               || p_upd_var_rent_rec.type_meaning
11671                             , 3);
11672          pn_varen_util.pvt_debug
11673                                 (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.type_code : '
11674                                  || p_upd_var_rent_rec.type_code
11675                                , 3);
11676 
11677          IF (x_return_status = fnd_api.g_ret_sts_error)
11678          THEN
11679             fnd_message.set_name ('PN', 'PN_VAR_VOL_TY');
11680             fnd_message.set_token ('VOLUME_TYPE_CODE_MEANING'
11681                                  ,    p_upd_var_rent_rec.type_meaning
11682                                    || '/'
11683                                    || p_upd_var_rent_rec.type_code);
11684             pn_varen_util.pvt_debug
11685                   (   'PN_VAREN_PVT: Upd_Val_Varent: Rent Type Meaning Validation Expected Error :'
11686                    || p_upd_var_rent_rec.type_meaning
11687                  , 3);
11688             fnd_msg_pub.ADD;
11689             RAISE fnd_api.g_exc_error;
11690          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11691          THEN
11692             fnd_message.set_name ('PN', 'PN_VAR_VOL_TY');
11693             fnd_message.set_token ('VOLUME_TYPE_CODE_MEANING'
11694                                  ,    p_upd_var_rent_rec.type_meaning
11695                                    || '/'
11696                                    || p_upd_var_rent_rec.type_code);
11697             pn_varen_util.pvt_debug
11698                (   'PN_VAREN_PVT: Upd_Val_Varent: Rent Type Meaning Validation Un-Expected Error :'
11699                 || p_upd_var_rent_rec.type_meaning
11700               , 3);
11701             fnd_msg_pub.ADD;
11702             RAISE fnd_api.g_exc_unexpected_error;
11703          ELSE
11704             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Rent Type Code Success :'
11705                                      || p_upd_var_rent_rec.type_code
11706                                    , 3);
11707          END IF;
11708       --END IF;
11709       ELSE
11710          p_upd_var_rent_rec.type_code         := l_pn_var_rents_rec.type_code;
11711          pn_varen_util.pvt_debug
11712                               (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.type_code : '
11713                                || l_pn_var_rents_rec.type_code
11714                              , 3);
11715          pn_varen_util.pvt_debug
11716                                (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.type_code : '
11717                                 || p_upd_var_rent_rec.type_code
11718                               , 3);
11719       --l_pn_var_rents_rec.type_meaning := p_upd_var_rent_rec.type_meaning;
11720       END IF;
11721 
11722       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
11723       /*
11724        IF    (   p_upd_var_rent_rec.purpose_code IS NULL
11725               OR p_upd_var_rent_rec.purpose_code = pn_varen_util.g_pn_miss_char
11726              )
11727           OR (   p_upd_var_rent_rec.purpose_code_meaning IS NULL
11728               OR p_upd_var_rent_rec.purpose_code_meaning = pn_varen_util.g_pn_miss_char
11729              )
11730        THEN
11731       */
11732       -- New IF block added by Vivek on 02-DEC-2010
11733       IF    (    p_upd_var_rent_rec.purpose_code IS NOT NULL
11734              AND p_upd_var_rent_rec.purpose_code <> pn_varen_util.g_pn_miss_char)
11735          OR (    p_upd_var_rent_rec.purpose_code_meaning IS NOT NULL
11736              AND p_upd_var_rent_rec.purpose_code_meaning <> pn_varen_util.g_pn_miss_char)
11737       THEN
11738 --------------------------------------------------------------------------------
11739 --Purpose code or Category validation
11740 --------------------------------------------------------------------------------
11741          pn_varen_util.pvt_debug
11742                                ('PN_VAREN_PVT: Upd_Val_Varent: Calling Payment Purpose Validation'
11743                               , 3);
11744          pn_varen_util.validate_lookups
11745                                       (p_lookup_type                 => g_payment_purpose
11746                                      , x_lookup_meaning              => p_upd_var_rent_rec.purpose_code_meaning
11747                                      , x_lookup_code                 => p_upd_var_rent_rec.purpose_code
11748                                      , x_return_status               => x_return_status);
11749          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Upd_Val_Varent: Payment Purpose Output Code :'
11750                                   || p_upd_var_rent_rec.purpose_code
11751                                 , 3);
11752          pn_varen_util.pvt_debug
11753                     (   'PN_VAREN_PVT: Upd_Val_Varent: Return status of Payment Purpose procedure '
11754                      || x_return_status
11755                    , 3);
11756          pn_varen_util.pvt_debug
11757                      (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.purpose_code_meaning : '
11758                       || p_upd_var_rent_rec.purpose_code_meaning
11759                     , 3);
11760          pn_varen_util.pvt_debug
11761                              (   'PN_VAREN_PVT: Upd_Val_Varent: p_upd_var_rent_rec.purpose_code : '
11762                               || p_upd_var_rent_rec.purpose_code
11763                             , 3);
11764 
11765          IF (x_return_status = fnd_api.g_ret_sts_error)
11766          THEN
11767             fnd_message.set_name ('PN', 'PN_VAR_PUR_CODE');
11768             fnd_message.set_token ('PURPOSE_CODE_MEANING'
11769                                  ,    p_upd_var_rent_rec.purpose_code_meaning
11770                                    || '/'
11771                                    || p_upd_var_rent_rec.purpose_code);
11772             pn_varen_util.pvt_debug
11773                        (   'PN_VAREN_PVT: Upd_Val_Varent: Payment Purpose Meaning Expected Error :'
11774                         || p_upd_var_rent_rec.purpose_code_meaning
11775                       , 3);
11776             fnd_msg_pub.ADD;
11777             RAISE fnd_api.g_exc_error;
11778          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
11779          THEN
11780             fnd_message.set_name ('PN', 'PN_VAR_PUR_CODE');
11781             fnd_message.set_token ('PURPOSE_CODE_MEANING'
11782                                  ,    p_upd_var_rent_rec.purpose_code_meaning
11783                                    || '/'
11784                                    || p_upd_var_rent_rec.purpose_code);
11785             pn_varen_util.pvt_debug
11786                     (   'PN_VAREN_PVT: Upd_Val_Varent: Payment Purpose Meaning Un-Expected Error :'
11787                      || p_upd_var_rent_rec.purpose_code_meaning
11788                    , 3);
11789             fnd_msg_pub.ADD;
11790             RAISE fnd_api.g_exc_unexpected_error;
11791          ELSE
11792             pn_varen_util.pvt_debug
11793                                 (   'PN_VAREN_PVT: Upd_Val_Varent: Payment Purpose Code Success :'
11794                                  || p_upd_var_rent_rec.purpose_code
11795                                , 3);
11796          END IF;
11797       --END IF;
11798       ELSE
11799          p_upd_var_rent_rec.purpose_code      := l_pn_var_rents_rec.purpose_code;
11800          pn_varen_util.pvt_debug
11801                            (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.purpose_code : '
11802                             || l_pn_var_rents_rec.purpose_code
11803                           , 3);
11804          pn_varen_util.pvt_debug
11805                             (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.purpose_code : '
11806                              || p_upd_var_rent_rec.purpose_code
11807                            , 3);
11808       END IF;
11809 
11810       IF (   p_upd_var_rent_rec.last_update_date IS NULL
11811           OR p_upd_var_rent_rec.last_update_date = pn_varen_util.g_pn_miss_date)
11812       THEN
11813          p_upd_var_rent_rec.last_update_date  := g_sysdate;
11814          --l_pn_var_rents_rec.last_update_date ;
11815          pn_varen_util.pvt_debug
11816                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.last_update_date : '
11817                         || l_pn_var_rents_rec.last_update_date
11818                       , 3);
11819          pn_varen_util.pvt_debug
11820                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.last_update_date : '
11821                          || p_upd_var_rent_rec.last_update_date
11822                        , 3);
11823       END IF;
11824 
11825       IF (   p_upd_var_rent_rec.last_updated_by IS NULL
11826           OR p_upd_var_rent_rec.last_updated_by = pn_varen_util.g_pn_miss_num)
11827       THEN
11828          p_upd_var_rent_rec.last_updated_by   := g_user_id;
11829          --l_pn_var_rents_rec.last_updated_by ;
11830          pn_varen_util.pvt_debug
11831                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.last_updated_by : '
11832                          || l_pn_var_rents_rec.last_updated_by
11833                        , 3);
11834          pn_varen_util.pvt_debug
11835                          (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.last_updated_by : '
11836                           || p_upd_var_rent_rec.last_updated_by
11837                         , 3);
11838       END IF;
11839 
11840       IF (   p_upd_var_rent_rec.creation_date IS NULL
11841           OR p_upd_var_rent_rec.creation_date = pn_varen_util.g_pn_miss_date)
11842       THEN
11843          l_pn_var_rents_rec.creation_date     := p_upd_var_rent_rec.creation_date;
11844          pn_varen_util.pvt_debug
11845                           (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.creation_date : '
11846                            || l_pn_var_rents_rec.creation_date
11847                          , 3);
11848          pn_varen_util.pvt_debug
11849                            (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.creation_date : '
11850                             || p_upd_var_rent_rec.creation_date
11851                           , 3);
11852       END IF;
11853 
11854       IF (   p_upd_var_rent_rec.created_by IS NULL
11855           OR p_upd_var_rent_rec.created_by = pn_varen_util.g_pn_miss_num)
11856       THEN
11857          p_upd_var_rent_rec.created_by        := l_pn_var_rents_rec.created_by;
11858          pn_varen_util.pvt_debug
11859                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.created_by : '
11860                               || l_pn_var_rents_rec.created_by
11861                             , 3);
11862          pn_varen_util.pvt_debug
11863                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.created_by : '
11864                                || p_upd_var_rent_rec.created_by
11865                              , 3);
11866       END IF;
11867 
11868       IF (   p_upd_var_rent_rec.last_update_login IS NULL
11869           OR p_upd_var_rent_rec.last_update_login = pn_varen_util.g_pn_miss_num)
11870       THEN
11871          p_upd_var_rent_rec.last_update_login := l_pn_var_rents_rec.last_update_login;
11872          pn_varen_util.pvt_debug
11873                       (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.last_update_login : '
11874                        || l_pn_var_rents_rec.last_update_login
11875                      , 3);
11876          pn_varen_util.pvt_debug
11877                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.last_update_login : '
11878                         || p_upd_var_rent_rec.last_update_login
11879                       , 3);
11880       END IF;
11881 
11882       IF (   p_upd_var_rent_rec.attribute_category IS NULL
11883           OR p_upd_var_rent_rec.attribute_category = pn_varen_util.g_pn_miss_char)
11884       THEN
11885          p_upd_var_rent_rec.attribute_category := l_pn_var_rents_rec.attribute_category;
11886          pn_varen_util.pvt_debug
11887                      (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute_category : '
11888                       || l_pn_var_rents_rec.attribute_category
11889                     , 3);
11890          pn_varen_util.pvt_debug
11891                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute_category : '
11892                        || p_upd_var_rent_rec.attribute_category
11893                      , 3);
11894       END IF;
11895 
11896       IF (   p_upd_var_rent_rec.attribute1 IS NULL
11897           OR p_upd_var_rent_rec.attribute1 = pn_varen_util.g_pn_miss_char)
11898       THEN
11899          p_upd_var_rent_rec.attribute1        := l_pn_var_rents_rec.attribute1;
11900          pn_varen_util.pvt_debug
11901                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute1 : '
11902                               || l_pn_var_rents_rec.attribute1
11903                             , 3);
11904          pn_varen_util.pvt_debug
11905                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute1 : '
11906                                || p_upd_var_rent_rec.attribute1
11907                              , 3);
11908       END IF;
11909 
11910       IF (   p_upd_var_rent_rec.attribute2 IS NULL
11911           OR p_upd_var_rent_rec.attribute2 = pn_varen_util.g_pn_miss_char)
11912       THEN
11913          p_upd_var_rent_rec.attribute2        := l_pn_var_rents_rec.attribute2;
11914          pn_varen_util.pvt_debug
11915                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute2 : '
11916                               || l_pn_var_rents_rec.attribute2
11917                             , 3);
11918          pn_varen_util.pvt_debug
11919                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute2 : '
11920                                || p_upd_var_rent_rec.attribute2
11921                              , 3);
11922       END IF;
11923 
11924       IF (   p_upd_var_rent_rec.attribute3 IS NULL
11925           OR p_upd_var_rent_rec.attribute3 = pn_varen_util.g_pn_miss_char)
11926       THEN
11927          p_upd_var_rent_rec.attribute3        := l_pn_var_rents_rec.attribute3;
11928          pn_varen_util.pvt_debug
11929                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute3 : '
11930                               || l_pn_var_rents_rec.attribute3
11931                             , 3);
11932          pn_varen_util.pvt_debug
11933                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute3 : '
11934                                || p_upd_var_rent_rec.attribute3
11935                              , 3);
11936       END IF;
11937 
11938       IF (   p_upd_var_rent_rec.attribute4 IS NULL
11939           OR p_upd_var_rent_rec.attribute4 = pn_varen_util.g_pn_miss_char)
11940       THEN
11941          p_upd_var_rent_rec.attribute4        := l_pn_var_rents_rec.attribute4;
11942          pn_varen_util.pvt_debug
11943                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute4 : '
11944                               || l_pn_var_rents_rec.attribute4
11945                             , 3);
11946          pn_varen_util.pvt_debug
11947                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute4 : '
11948                                || p_upd_var_rent_rec.attribute4
11949                              , 3);
11950       END IF;
11951 
11952       IF (   p_upd_var_rent_rec.attribute5 IS NULL
11953           OR p_upd_var_rent_rec.attribute5 = pn_varen_util.g_pn_miss_char)
11954       THEN
11955          p_upd_var_rent_rec.attribute5        := l_pn_var_rents_rec.attribute5;
11956          pn_varen_util.pvt_debug
11957                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute5 : '
11958                               || l_pn_var_rents_rec.attribute5
11959                             , 3);
11960          pn_varen_util.pvt_debug
11961                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute5 : '
11962                                || p_upd_var_rent_rec.attribute5
11963                              , 3);
11964       END IF;
11965 
11966       IF (   p_upd_var_rent_rec.attribute6 IS NULL
11967           OR p_upd_var_rent_rec.attribute6 = pn_varen_util.g_pn_miss_char)
11968       THEN
11969          p_upd_var_rent_rec.attribute6        := l_pn_var_rents_rec.attribute6;
11970          pn_varen_util.pvt_debug
11971                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute6 : '
11972                               || l_pn_var_rents_rec.attribute6
11973                             , 3);
11974          pn_varen_util.pvt_debug
11975                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute6 : '
11976                                || p_upd_var_rent_rec.attribute6
11977                              , 3);
11978       END IF;
11979 
11980       IF (   p_upd_var_rent_rec.attribute7 IS NULL
11981           OR p_upd_var_rent_rec.attribute7 = pn_varen_util.g_pn_miss_char)
11982       THEN
11983          p_upd_var_rent_rec.attribute7        := l_pn_var_rents_rec.attribute7;
11984          pn_varen_util.pvt_debug
11985                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute7 : '
11986                               || l_pn_var_rents_rec.attribute7
11987                             , 3);
11988          pn_varen_util.pvt_debug
11989                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute7 : '
11990                                || p_upd_var_rent_rec.attribute7
11991                              , 3);
11992       END IF;
11993 
11994       IF (   p_upd_var_rent_rec.attribute8 IS NULL
11995           OR p_upd_var_rent_rec.attribute8 = pn_varen_util.g_pn_miss_char)
11996       THEN
11997          p_upd_var_rent_rec.attribute8        := l_pn_var_rents_rec.attribute8;
11998          pn_varen_util.pvt_debug
11999                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute8 : '
12000                               || l_pn_var_rents_rec.attribute8
12001                             , 3);
12002          pn_varen_util.pvt_debug
12003                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute8 : '
12004                                || p_upd_var_rent_rec.attribute8
12005                              , 3);
12006       END IF;
12007 
12008       IF (   p_upd_var_rent_rec.attribute9 IS NULL
12009           OR p_upd_var_rent_rec.attribute9 = pn_varen_util.g_pn_miss_char)
12010       THEN
12011          p_upd_var_rent_rec.attribute9        := l_pn_var_rents_rec.attribute9;
12012          pn_varen_util.pvt_debug
12013                              (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute9 : '
12014                               || l_pn_var_rents_rec.attribute9
12015                             , 3);
12016          pn_varen_util.pvt_debug
12017                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute9 : '
12018                                || p_upd_var_rent_rec.attribute9
12019                              , 3);
12020       END IF;
12021 
12022       IF (   p_upd_var_rent_rec.attribute10 IS NULL
12023           OR p_upd_var_rent_rec.attribute10 = pn_varen_util.g_pn_miss_char)
12024       THEN
12025          p_upd_var_rent_rec.attribute10       := l_pn_var_rents_rec.attribute10;
12026          pn_varen_util.pvt_debug
12027                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute10 : '
12028                              || l_pn_var_rents_rec.attribute10
12029                            , 3);
12030          pn_varen_util.pvt_debug
12031                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute10 : '
12032                               || p_upd_var_rent_rec.attribute10
12033                             , 3);
12034       END IF;
12035 
12036       IF (   p_upd_var_rent_rec.attribute11 IS NULL
12037           OR p_upd_var_rent_rec.attribute11 = pn_varen_util.g_pn_miss_char)
12038       THEN
12039          p_upd_var_rent_rec.attribute11       := l_pn_var_rents_rec.attribute11;
12040          pn_varen_util.pvt_debug
12041                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute11 : '
12042                              || l_pn_var_rents_rec.attribute11
12043                            , 3);
12044          pn_varen_util.pvt_debug
12045                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute11 : '
12046                               || p_upd_var_rent_rec.attribute11
12047                             , 3);
12048       END IF;
12049 
12050       IF (   p_upd_var_rent_rec.attribute12 IS NULL
12051           OR p_upd_var_rent_rec.attribute12 = pn_varen_util.g_pn_miss_char)
12052       THEN
12053          p_upd_var_rent_rec.attribute12       := l_pn_var_rents_rec.attribute12;
12054          pn_varen_util.pvt_debug
12055                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute12 : '
12056                              || l_pn_var_rents_rec.attribute12
12057                            , 3);
12058          pn_varen_util.pvt_debug
12059                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute12 : '
12060                               || p_upd_var_rent_rec.attribute12
12061                             , 3);
12062       END IF;
12063 
12064       IF (   p_upd_var_rent_rec.attribute13 IS NULL
12065           OR p_upd_var_rent_rec.attribute13 = pn_varen_util.g_pn_miss_char)
12066       THEN
12067          p_upd_var_rent_rec.attribute13       := l_pn_var_rents_rec.attribute13;
12068          pn_varen_util.pvt_debug
12069                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute13 : '
12070                              || l_pn_var_rents_rec.attribute13
12071                            , 3);
12072          pn_varen_util.pvt_debug
12073                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute13 : '
12074                               || p_upd_var_rent_rec.attribute13
12075                             , 3);
12076       END IF;
12077 
12078       IF (   p_upd_var_rent_rec.attribute14 IS NULL
12079           OR p_upd_var_rent_rec.attribute14 = pn_varen_util.g_pn_miss_char)
12080       THEN
12081          p_upd_var_rent_rec.attribute14       := l_pn_var_rents_rec.attribute14;
12082          pn_varen_util.pvt_debug
12083                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute14 : '
12084                              || l_pn_var_rents_rec.attribute14
12085                            , 3);
12086          pn_varen_util.pvt_debug
12087                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute14 : '
12088                               || p_upd_var_rent_rec.attribute14
12089                             , 3);
12090       END IF;
12091 
12092       IF (   p_upd_var_rent_rec.attribute15 IS NULL
12093           OR p_upd_var_rent_rec.attribute15 = pn_varen_util.g_pn_miss_char)
12094       THEN
12095          p_upd_var_rent_rec.attribute15       := l_pn_var_rents_rec.attribute15;
12096          pn_varen_util.pvt_debug
12097                             (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rents_rec.attribute15 : '
12098                              || l_pn_var_rents_rec.attribute15
12099                            , 3);
12100          pn_varen_util.pvt_debug
12101                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.attribute15 : '
12102                               || p_upd_var_rent_rec.attribute15
12103                             , 3);
12104       END IF;
12105 
12106       pn_varen_util.pvt_debug
12107                       ('PN_VAREN_PVT: Update_Var_Rent : Before calling validate_var_rent procedure'
12108                      , 3);
12109 -- call update validate variable rent details procedure
12110 
12111       upd_val_varent (p_upd_var_rent_rec_type       => p_upd_var_rent_rec
12112                     , x_return_status               => x_return_status);
12113       pn_varen_util.pvt_debug
12114                      (   'PN_VAREN_PVT: Update_Var_Rent: End of upd_val_varent Procedure status : '
12115                       || x_return_status
12116                     , 3);
12117       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent : Value of Validate Flag : '
12118                                || p_validate_flag
12119                              , 3);
12120       IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
12121       THEN
12122          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
12123          fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPD_VAL_VARENT returned error');
12124          fnd_msg_pub.ADD;
12125          RAISE fnd_api.g_exc_error;
12126       END IF;
12127 
12128       IF (p_validate_flag <> 'Y')                                       --and x_return_status = 'S')
12129       THEN
12130          pn_varen_util.pvt_debug
12131                                 ('PN_VAREN_PVT: Update_Var_Rent: Start of update_varent Procedure'
12132                                , 3);
12133          update_varent (p_upd_var_rent_rec_type       => p_upd_var_rent_rec
12134                       , x_return_status               => x_return_status);
12135          pn_varen_util.pvt_debug
12136                      (   'PN_VAREN_PVT: Update_Var_Rent: End of update_varent Procedure status : '
12137                       || x_return_status
12138                     , 3);
12139          IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
12140          THEN
12141             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
12142             fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPDATE_VARENT returned error');
12143             fnd_msg_pub.ADD;
12144             RAISE fnd_api.g_exc_error;
12145          END IF;
12146       END IF;                                                                      --p_validate_flag
12147    END IF;                                                                         -- c_pn_var_rents
12148 
12149    -- CLOSE c_pn_var_rents; -- Close this cursor at last.
12150    pn_varen_util.pvt_debug
12151                         ('PN_VAREN_PVT: Update_Var_Rent: Before opening cursor c_pn_var_rent_dates'
12152                        , 3);
12153 
12154    OPEN c_pn_var_rent_dates;
12155 
12156    FETCH c_pn_var_rent_dates
12157    INTO  l_pn_var_rent_dates_rec;
12158 
12159    IF (c_pn_var_rents%NOTFOUND)
12160    THEN
12161       x_return_status                      := fnd_api.g_ret_sts_error;
12162       pn_varen_util.pvt_debug
12163                             ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_rent_dates not found'
12164                            , 3);
12165    ELSE
12166       pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_rent_dates found'
12167                              , 3);
12168 
12169       -- The below IF statements have been commented by Vivek on 07-Dec-2010
12170       /*
12171       IF p_upd_var_rent_rec.year_start_date <> l_pn_var_rent_dates_rec.year_start_date
12172       THEN
12173          l_undo_periods                                                               := 'Y';
12174       END IF;
12175 
12176       IF p_upd_var_rent_rec.use_gl_calendar <> l_pn_var_rent_dates_rec.use_gl_calendar
12177       THEN
12178          l_undo_periods                                                               := 'Y';
12179       END IF;
12180 
12181       IF p_upd_var_rent_rec.gl_period_set_name <> l_pn_var_rent_dates_rec.gl_period_set_name
12182       THEN
12183          l_undo_periods                                                               := 'Y';
12184       END IF;
12185 
12186       IF p_upd_var_rent_rec.period_type <> l_pn_var_rent_dates_rec.period_type
12187       THEN
12188          l_undo_periods                                                               := 'Y';
12189       END IF;
12190 
12191       IF p_upd_var_rent_rec.year_start_date <> l_pn_var_rent_dates_rec.year_start_date
12192       THEN
12193          l_undo_periods                                                               := 'Y';
12194       END IF;
12195 
12196       IF (    p_upd_var_rent_rec.reptg_freq_code <> l_pn_var_rent_dates_rec.reptg_freq_code
12197           AND p_upd_var_rent_rec.vrg_reptg_freq_code <> l_pn_var_rent_dates_rec.vrg_reptg_freq_code
12198          )
12199       THEN
12200          l_undo_periods                                                               := 'Y';
12201       END IF;
12202 
12203       IF (    p_upd_var_rent_rec.reptg_freq_code <> l_pn_var_rent_dates_rec.reptg_freq_code
12204           AND p_upd_var_rent_rec.invg_freq_code <> l_pn_var_rent_dates_rec.invg_freq_code
12205          )
12206       THEN
12207          l_undo_periods                                                               := 'Y';
12208       END IF;
12209       */
12210 
12211       --l_undo_periods
12212       IF (   p_upd_var_rent_rec.var_rent_date_id IS NULL
12213           OR p_upd_var_rent_rec.var_rent_date_id = pn_varen_util.g_pn_miss_num)
12214       THEN
12215          p_upd_var_rent_rec.var_rent_date_id  := l_pn_var_rent_dates_rec.var_rent_date_id;
12216          pn_varen_util.pvt_debug
12217             (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.var_rent_date_id is : '
12218              || p_upd_var_rent_rec.use_gl_calendar
12219            , 3);
12220          pn_varen_util.pvt_debug
12221             (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.var_rent_date_id : '
12222              || l_pn_var_rent_dates_rec.use_gl_calendar
12223            , 3);
12224       --  ELSE
12225 
12226       --     p_upd_var_rent_rec.var_rent_date_id := l_pn_var_rent_dates_rec.var_rent_date_id;
12227       END IF;
12228 
12229       pn_varen_util.pvt_debug
12230                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.use_gl_calendar is '
12231                 || p_upd_var_rent_rec.use_gl_calendar
12232               , 3);
12233       pn_varen_util.pvt_debug
12234           (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.use_gl_calendar is '
12235            || l_pn_var_rent_dates_rec.use_gl_calendar
12236          , 3);
12237 
12238       IF (   p_upd_var_rent_rec.use_gl_calendar IS NULL
12239           OR p_upd_var_rent_rec.use_gl_calendar = pn_varen_util.g_pn_miss_char)
12240       THEN
12241          p_upd_var_rent_rec.use_gl_calendar   := l_pn_var_rent_dates_rec.use_gl_calendar;
12242          pn_varen_util.pvt_debug
12243             (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.use_gl_calendar is : '
12244              || p_upd_var_rent_rec.use_gl_calendar
12245            , 3);
12246          pn_varen_util.pvt_debug
12247             (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.use_gl_calendar : '
12248              || l_pn_var_rent_dates_rec.use_gl_calendar
12249            , 3);
12250       END IF;
12251 
12252       IF (   p_upd_var_rent_rec.year_start_date IS NULL
12253           OR p_upd_var_rent_rec.year_start_date = pn_varen_util.g_pn_miss_date)
12254       THEN
12255          p_upd_var_rent_rec.year_start_date   := l_pn_var_rent_dates_rec.year_start_date;
12256          pn_varen_util.pvt_debug
12257                    (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.year_start_date : '
12258                     || l_pn_var_rent_dates_rec.year_start_date
12259                   , 3);
12260          pn_varen_util.pvt_debug
12261                          (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.year_start_date : '
12262                           || p_upd_var_rent_rec.year_start_date
12263                         , 3);
12264       ELSE
12265          pn_varen_util.pvt_debug
12266              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.year_start_date is not null: '
12267               || p_upd_var_rent_rec.year_start_date
12268             , 3);
12269       END IF;
12270 
12271       --  pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of Period Set Name is '||p_upd_var_rent_rec.gl_period_set_name,3);
12272       --  pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.gl_period_set_name is '||l_pn_var_rent_dates_rec.gl_period_set_name, 3);
12273       --  pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of Period Type is '||p_upd_var_rent_rec.period_type, 3);
12274       --  pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.period_type is '||l_pn_var_rent_dates_rec.period_type,3);
12275       IF    (    p_upd_var_rent_rec.gl_period_set_name IS NOT NULL
12276              AND p_upd_var_rent_rec.gl_period_set_name <> pn_varen_util.g_pn_miss_char)
12277          OR (    p_upd_var_rent_rec.period_type IS NOT NULL
12278              AND p_upd_var_rent_rec.period_type <> pn_varen_util.g_pn_miss_char)
12279       THEN
12280 ------------------------------------------------
12281 -- Validation of Period Set Name and Period Type
12282 ------------------------------------------------
12283          pn_varen_util.pvt_debug
12284               ('PN_VAREN_PVT: Update_Var_Rent: Calling Period Set Name and Period Type Validation'
12285              , 3);
12286          pn_varen_util.validate_period_set_type
12287                                     (p_gl_period_set_name          => p_upd_var_rent_rec.gl_period_set_name
12288                                    , p_period_type                 => p_upd_var_rent_rec.period_type
12289                                    , x_return_status               => x_return_status);
12290          pn_varen_util.pvt_debug
12291                        (   'PN_VAREN_PVT: Update_Var_Rent: Period Set Name and Period Type status:'
12292                         || x_return_status
12293                       , 3);
12294          pn_varen_util.pvt_debug
12295                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.gl_period_set_name :'
12296                         || p_upd_var_rent_rec.gl_period_set_name
12297                       , 3);
12298          pn_varen_util.pvt_debug
12299                               (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.period_type :'
12300                                || p_upd_var_rent_rec.period_type
12301                              , 3);
12302 
12303          IF (x_return_status = fnd_api.g_ret_sts_error)
12304          THEN
12305             fnd_message.set_name ('PN', 'PN_VAR_PERIOD_SET_TYPE');
12306             fnd_message.set_token ('PERIOD_SET_TYPE'
12307                                  ,    p_upd_var_rent_rec.gl_period_set_name
12308                                    || '/'
12309                                    || p_upd_var_rent_rec.period_type);
12310             pn_varen_util.pvt_debug
12311                (   'PN_VAREN_PVT: Update_Var_Rent: Period Set Name and Period Type Expected Error :'
12312                 || p_upd_var_rent_rec.gl_period_set_name
12313                 || ' , '
12314                 || p_upd_var_rent_rec.period_type
12315               , 3);
12316             fnd_msg_pub.ADD;
12317             RAISE fnd_api.g_exc_error;
12318          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12319          THEN
12320             fnd_message.set_name ('PN', 'PN_VAR_PERIOD_SET_TYPE');
12321             fnd_message.set_token ('PERIOD_SET_TYPE'
12322                                  ,    p_upd_var_rent_rec.gl_period_set_name
12323                                    || '/'
12324                                    || p_upd_var_rent_rec.period_type);
12325             pn_varen_util.pvt_debug
12326                (   'PN_VAREN_PVT: Update_Var_Rent: Period Set Name and Period Type Un-Expected Error :'
12327                 || p_upd_var_rent_rec.gl_period_set_name
12328                 || ' , '
12329                 || p_upd_var_rent_rec.period_type
12330               , 3);
12331             fnd_msg_pub.ADD;
12332             RAISE fnd_api.g_exc_unexpected_error;
12333          --x_return_status                                                              :=fnd_api.g_ret_sts_unexp_error;
12334          ELSE
12335             pn_varen_util.pvt_debug
12336                     (   'PN_VAREN_PVT: Update_Var_Rent: Period Set Name and Period Type Success :'
12337                      || p_upd_var_rent_rec.reptg_freq_code
12338                    , 3);
12339             x_return_status                      := fnd_api.g_ret_sts_success;
12340          END IF;
12341       ELSE
12342          p_upd_var_rent_rec.gl_period_set_name := l_pn_var_rent_dates_rec.gl_period_set_name;
12343          pn_varen_util.pvt_debug
12344                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.gl_period_set_name : '
12345                  || l_pn_var_rent_dates_rec.gl_period_set_name
12346                , 3);
12347          pn_varen_util.pvt_debug
12348                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.gl_period_set_name : '
12349                        || p_upd_var_rent_rec.gl_period_set_name
12350                      , 3);
12351          p_upd_var_rent_rec.period_type       := l_pn_var_rent_dates_rec.period_type;
12352          pn_varen_util.pvt_debug
12353                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.period_type : '
12354                          || l_pn_var_rent_dates_rec.period_type
12355                        , 3);
12356          pn_varen_util.pvt_debug
12357                              (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.period_type : '
12358                               || p_upd_var_rent_rec.period_type
12359                             , 3);
12360       END IF;
12361 
12362       pn_varen_util.pvt_debug
12363            (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.vrg_reptg_freq_code is '
12364             || p_upd_var_rent_rec.vrg_reptg_freq_code
12365           , 3);
12366       pn_varen_util.pvt_debug
12367          (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.vrg_reptg_freq_code is '
12368           || l_pn_var_rent_dates_rec.vrg_reptg_freq_code
12369         , 3);
12370       pn_varen_util.pvt_debug
12371          (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.vrg_reptg_freq_meaning is '
12372           || p_upd_var_rent_rec.vrg_reptg_freq_meaning
12373         , 3);
12374 
12375       --pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.vrg_reptg_freq_meaning is '||l_pn_var_rent_dates_rec.vrg_reptg_freq_meaning, 3);
12376 
12377       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
12378       /*
12379        IF    (   p_upd_var_rent_rec.vrg_reptg_freq_code IS NULL
12380               OR p_upd_var_rent_rec.vrg_reptg_freq_code = pn_varen_util.g_pn_miss_char
12381              )
12382           OR (   p_upd_var_rent_rec.vrg_reptg_freq_meaning IS NULL
12383               OR p_upd_var_rent_rec.vrg_reptg_freq_meaning = pn_varen_util.g_pn_miss_char
12384              )
12385        THEN
12386       */
12387 
12388       IF    (    p_upd_var_rent_rec.vrg_reptg_freq_code IS NOT NULL
12389              AND p_upd_var_rent_rec.vrg_reptg_freq_code <> pn_varen_util.g_pn_miss_char)
12390          OR (    p_upd_var_rent_rec.vrg_reptg_freq_meaning IS NOT NULL
12391              AND p_upd_var_rent_rec.vrg_reptg_freq_meaning <> pn_varen_util.g_pn_miss_char)
12392       THEN
12393 ------------------------------------------------
12394 --Validation of Reporting Frequency   -- VRG_REPTG_FREQ_CODE
12395 -------------------------------------------------
12396          pn_varen_util.pvt_debug
12397                           ('PN_VAREN_PVT: Update_Var_Rent: Calling Reporting Frequency Validation'
12398                          , 3);
12399          pn_varen_util.validate_periods
12400                                     (p_lookup_type                 => g_payment_frequency
12401                                    , x_lookup_meaning              => p_upd_var_rent_rec.vrg_reptg_freq_meaning
12402                                    , x_lookup_code                 => p_upd_var_rent_rec.vrg_reptg_freq_code
12403                                    , x_return_status               => x_return_status);
12404          pn_varen_util.pvt_debug
12405                              (   'PN_VAREN_PVT: Update_Var_Rent: Reporting Frequency Output Code :'
12406                               || p_upd_var_rent_rec.vrg_reptg_freq_code
12407                             , 3);
12408          pn_varen_util.pvt_debug
12409                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.vrg_reptg_freq_code : '
12410                  || l_pn_var_rent_dates_rec.vrg_reptg_freq_code
12411                , 3);
12412          pn_varen_util.pvt_debug
12413                      (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.vrg_reptg_freq_code : '
12414                       || p_upd_var_rent_rec.vrg_reptg_freq_code
12415                     , 3);
12416          pn_varen_util.pvt_debug
12417                   (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.vrg_reptg_freq_meaning : '
12418                    || p_upd_var_rent_rec.vrg_reptg_freq_meaning
12419                  , 3);
12420 
12421          IF (x_return_status = fnd_api.g_ret_sts_error)
12422          THEN
12423             fnd_message.set_name ('PN', 'PN_VAR_VRG_REPT_CODE');
12424             fnd_message.set_token ('VRG_REPTG_FREQ_CODE_MEANING'
12425                                  ,    p_upd_var_rent_rec.vrg_reptg_freq_meaning
12426                                    || '/'
12427                                    || p_upd_var_rent_rec.vrg_reptg_freq_code);
12428             pn_varen_util.pvt_debug
12429                   (   'PN_VAREN_PVT: Update_Var_Rent: Reporting Frequency Meaning Expected Error :'
12430                    || p_upd_var_rent_rec.vrg_reptg_freq_meaning
12431                  , 3);
12432             x_return_status                      := fnd_api.g_ret_sts_error;
12433             fnd_msg_pub.ADD;
12434             RAISE fnd_api.g_exc_error;
12435          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12436          THEN
12437             fnd_message.set_name ('PN', 'PN_VAR_VRG_REPT_CODE');
12438             fnd_message.set_token ('VRG_REPTG_FREQ_CODE_MEANING'
12439                                  ,    p_upd_var_rent_rec.vrg_reptg_freq_meaning
12440                                    || '/'
12441                                    || p_upd_var_rent_rec.vrg_reptg_freq_code);
12442             pn_varen_util.pvt_debug
12443                (   'PN_VAREN_PVT: Update_Var_Rent: Reporting Frequency Meaning Un-Expected Error :'
12444                 || p_upd_var_rent_rec.vrg_reptg_freq_meaning
12445               , 3);
12446             --x_return_status                                                              :=fnd_api.g_ret_sts_unexp_error;
12447             fnd_msg_pub.ADD;
12448             RAISE fnd_api.g_exc_unexpected_error;
12449          ELSE
12450             pn_varen_util.pvt_debug
12451                            (   'PN_VAREN_PVT: Update_Var_Rent: Reporting Frequency Code Success :'
12452                             || p_upd_var_rent_rec.vrg_reptg_freq_code
12453                           , 3);
12454             x_return_status                      := fnd_api.g_ret_sts_success;
12455          END IF;
12456       ELSE
12457          p_upd_var_rent_rec.vrg_reptg_freq_code := l_pn_var_rent_dates_rec.vrg_reptg_freq_code;
12458          pn_varen_util.pvt_debug
12459                (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.vrg_reptg_freq_code : '
12460                 || l_pn_var_rent_dates_rec.vrg_reptg_freq_code
12461               , 3);
12462          pn_varen_util.pvt_debug
12463                      (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.vrg_reptg_freq_code : '
12464                       || p_upd_var_rent_rec.vrg_reptg_freq_code
12465                     , 3);
12466       END IF;
12467 
12468       pn_varen_util.pvt_debug
12469                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.reptg_freq_code is '
12470                 || p_upd_var_rent_rec.reptg_freq_code
12471               , 3);
12472       pn_varen_util.pvt_debug
12473           (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.reptg_freq_code is '
12474            || l_pn_var_rent_dates_rec.reptg_freq_code
12475          , 3);
12476       pn_varen_util.pvt_debug
12477             (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.reptg_freq_meaning is '
12478              || p_upd_var_rent_rec.reptg_freq_meaning
12479            , 3);
12480 
12481       --pn_varen_util.pvt_debug.put_line (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.reptg_freq_meaning is '||l_pn_var_rent_dates_rec.reptg_freq_meaning, 3);
12482 
12483       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
12484       /*
12485        IF    (   p_upd_var_rent_rec.reptg_freq_code IS NULL
12486               OR p_upd_var_rent_rec.reptg_freq_code = pn_varen_util.g_pn_miss_char
12487              )
12488           OR (   p_upd_var_rent_rec.reptg_freq_meaning IS NULL
12489               OR p_upd_var_rent_rec.reptg_freq_meaning = pn_varen_util.g_pn_miss_char
12490              )
12491        THEN
12492       */
12493        -- New IF block added by Vivek on 02-DEC-2010
12494       IF    (    p_upd_var_rent_rec.reptg_freq_code IS NOT NULL
12495              AND p_upd_var_rent_rec.reptg_freq_code <> pn_varen_util.g_pn_miss_char)
12496          OR (    p_upd_var_rent_rec.reptg_freq_meaning IS NOT NULL
12497              AND p_upd_var_rent_rec.reptg_freq_meaning = pn_varen_util.g_pn_miss_char)
12498       THEN
12499 ------------------------------------------------
12500 --Validation of Calculation Frequency
12501 -------------------------------------------------
12502          pn_varen_util.pvt_debug
12503                         ('PN_VAREN_PVT: Update_Var_Rent: Calling Calculation Frequency Validation'
12504                        , 3);
12505          pn_varen_util.validate_periods (p_lookup_type                 => g_payment_frequency
12506                                        , x_lookup_meaning              => p_upd_var_rent_rec.reptg_freq_meaning
12507                                        , x_lookup_code                 => p_upd_var_rent_rec.reptg_freq_code
12508                                        , x_return_status               => x_return_status);
12509          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Calculation Frequency status:'
12510                                   || x_return_status
12511                                 , 3);
12512          pn_varen_util.pvt_debug
12513                           (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.reptg_freq_code :'
12514                            || p_upd_var_rent_rec.reptg_freq_code
12515                          , 3);
12516          pn_varen_util.pvt_debug
12517                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.reptg_freq_meaning :'
12518                         || p_upd_var_rent_rec.reptg_freq_meaning
12519                       , 3);
12520 
12521          IF (x_return_status = fnd_api.g_ret_sts_error)
12522          THEN
12523             fnd_message.set_name ('PN', 'PN_VAR_REPT_CODE');
12524             fnd_message.set_token ('REPTG_FREQ_CODE_MEANING'
12525                                  ,    p_upd_var_rent_rec.reptg_freq_meaning
12526                                    || '/'
12527                                    || p_upd_var_rent_rec.reptg_freq_code);
12528             pn_varen_util.pvt_debug
12529                 (   'PN_VAREN_PVT: Update_Var_Rent: Calculation Frequency Meaning Expected Error :'
12530                  || p_upd_var_rent_rec.reptg_freq_meaning
12531                , 3);
12532             fnd_msg_pub.ADD;
12533             RAISE fnd_api.g_exc_error;
12534          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12535          THEN
12536             fnd_message.set_name ('PN', 'PN_VAR_REPT_CODE');
12537             fnd_message.set_token ('REPTG_FREQ_CODE_MEANING'
12538                                  ,    p_upd_var_rent_rec.reptg_freq_meaning
12539                                    || '/'
12540                                    || p_upd_var_rent_rec.reptg_freq_code);
12541             pn_varen_util.pvt_debug
12542                (   'PN_VAREN_PVT: Update_Var_Rent: Calculation Frequency Meaning Un-Expected Error :'
12543                 || p_upd_var_rent_rec.reptg_freq_meaning
12544               , 3);
12545             fnd_msg_pub.ADD;
12546             RAISE fnd_api.g_exc_unexpected_error;
12547          ELSE
12548             pn_varen_util.pvt_debug
12549                          (   'PN_VAREN_PVT: Update_Var_Rent: Calculation Frequency Code Success :'
12550                           || p_upd_var_rent_rec.reptg_freq_code
12551                         , 3);
12552             x_return_status                      := fnd_api.g_ret_sts_success;
12553          END IF;
12554       ELSE
12555          p_upd_var_rent_rec.reptg_freq_code   := l_pn_var_rent_dates_rec.reptg_freq_code;
12556          pn_varen_util.pvt_debug
12557                    (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.reptg_freq_code : '
12558                     || l_pn_var_rent_dates_rec.reptg_freq_code
12559                   , 3);
12560          pn_varen_util.pvt_debug
12561                          (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.reptg_freq_code : '
12562                           || p_upd_var_rent_rec.reptg_freq_code
12563                         , 3);
12564       END IF;
12565 
12566       IF (   p_upd_var_rent_rec.reptg_day_of_month IS NULL
12567           OR p_upd_var_rent_rec.reptg_day_of_month = pn_varen_util.g_pn_miss_num)
12568       THEN
12569          p_upd_var_rent_rec.reptg_day_of_month := l_pn_var_rent_dates_rec.reptg_day_of_month;
12570          pn_varen_util.pvt_debug
12571                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.reptg_day_of_month : '
12572                  || l_pn_var_rent_dates_rec.reptg_day_of_month
12573                , 3);
12574          pn_varen_util.pvt_debug
12575                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.reptg_day_of_month : '
12576                        || p_upd_var_rent_rec.reptg_day_of_month
12577                      , 3);
12578       -- ELSE condition has been added by Vivek on 03-DEC-2010 to raise an error if the reptg_day_of_month value is not in 1-28 range
12579       ELSE
12580          IF    p_upd_var_rent_rec.reptg_day_of_month < 1
12581             OR p_upd_var_rent_rec.reptg_day_of_month > 28
12582          THEN
12583             p_upd_var_rent_rec.reptg_day_of_month := NULL;
12584             fnd_message.set_name ('PN', 'PN_VAR_REPTG_DAY_OF_MONTH');
12585             fnd_msg_pub.ADD;
12586             RAISE fnd_api.g_exc_error;
12587          END IF;
12588       END IF;
12589 
12590       IF (   p_upd_var_rent_rec.reptg_days_after IS NULL
12591           OR p_upd_var_rent_rec.reptg_days_after = pn_varen_util.g_pn_miss_num)
12592       THEN
12593          p_upd_var_rent_rec.reptg_days_after  := l_pn_var_rent_dates_rec.reptg_days_after;
12594          pn_varen_util.pvt_debug
12595                   (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.reptg_days_after : '
12596                    || l_pn_var_rent_dates_rec.reptg_days_after
12597                  , 3);
12598          pn_varen_util.pvt_debug
12599                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.reptg_days_after : '
12600                          || p_upd_var_rent_rec.reptg_days_after
12601                        , 3);
12602       -- ELSE condition has been added by Vivek on 03-DEC-2010 to raise an error if the reptg_day_of_month value is not in 1-28 range
12603       ELSE
12604          IF    p_upd_var_rent_rec.reptg_days_after < 1
12605             OR p_upd_var_rent_rec.reptg_days_after > 28
12606          THEN
12607             p_upd_var_rent_rec.reptg_days_after  := NULL;
12608             fnd_message.set_name ('PN', 'PN_VAR_INVG_DAY_OF_MONTH');
12609             fnd_msg_pub.ADD;
12610             RAISE fnd_api.g_exc_error;
12611          END IF;
12612       END IF;
12613 
12614       -- pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.invg_day_of_month is '||p_upd_var_rent_rec.invg_day_of_month, 3);
12615       -- pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.invg_day_of_month is '||l_pn_var_rent_dates_rec.invg_day_of_month, 3);
12616       IF (   p_upd_var_rent_rec.invg_day_of_month IS NULL
12617           OR p_upd_var_rent_rec.invg_day_of_month = pn_varen_util.g_pn_miss_num)
12618       THEN
12619          p_upd_var_rent_rec.invg_day_of_month := l_pn_var_rent_dates_rec.invg_day_of_month;
12620          pn_varen_util.pvt_debug
12621                  (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.invg_day_of_month : '
12622                   || l_pn_var_rent_dates_rec.invg_day_of_month
12623                 , 3);
12624          pn_varen_util.pvt_debug
12625                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invg_day_of_month : '
12626                         || p_upd_var_rent_rec.invg_day_of_month
12627                       , 3);
12628       END IF;
12629 
12630       IF (   p_upd_var_rent_rec.invg_days_after IS NULL
12631           OR p_upd_var_rent_rec.invg_days_after = pn_varen_util.g_pn_miss_num)
12632       THEN
12633          p_upd_var_rent_rec.invg_days_after   := l_pn_var_rent_dates_rec.invg_days_after;
12634          pn_varen_util.pvt_debug
12635                    (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.invg_days_after : '
12636                     || l_pn_var_rent_dates_rec.invg_days_after
12637                   , 3);
12638          pn_varen_util.pvt_debug
12639                          (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invg_days_after : '
12640                           || p_upd_var_rent_rec.invg_days_after
12641                         , 3);
12642       -- ELSE condition has been added by Vivek on 03-DEC-2010 to raise an error if the reptg_day_of_month value is not in 1-28 range
12643       ELSE
12644          IF    p_upd_var_rent_rec.invg_day_of_month < 1
12645             OR p_upd_var_rent_rec.invg_day_of_month > 28
12646          THEN
12647             p_upd_var_rent_rec.invg_day_of_month := NULL;
12648             fnd_message.set_name ('PN', 'PN_VAR_INVG_DAY_OF_MONTH');
12649             fnd_msg_pub.ADD;
12650             RAISE fnd_api.g_exc_error;
12651          END IF;
12652       END IF;
12653 
12654       IF (   p_upd_var_rent_rec.comments IS NULL
12655           OR p_upd_var_rent_rec.comments = pn_varen_util.g_pn_miss_char)
12656       THEN
12657          p_upd_var_rent_rec.comments          := l_pn_var_rent_dates_rec.comments;
12658          pn_varen_util.pvt_debug
12659                           (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.comments : '
12660                            || l_pn_var_rent_dates_rec.comments
12661                          , 3);
12662          pn_varen_util.pvt_debug
12663                                 (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.comments : '
12664                                  || p_upd_var_rent_rec.comments
12665                                , 3);
12666       ELSE
12667          pn_varen_util.pvt_debug
12668                          ('PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.comments IS NOT NULL'
12669                         , 2);
12670          pn_varen_util.pvt_debug
12671                           (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.comments : '
12672                            || l_pn_var_rent_dates_rec.comments
12673                          , 3);
12674          pn_varen_util.pvt_debug
12675                                 (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.comments : '
12676                                  || p_upd_var_rent_rec.comments
12677                                , 3);
12678       END IF;
12679 
12680       pn_varen_util.pvt_debug
12681             (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.var_rent_date_id is : '
12682              || p_upd_var_rent_rec.var_rent_date_id
12683            , 3);
12684       pn_varen_util.pvt_debug
12685                 (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.invg_freq_code is '
12686                  || p_upd_var_rent_rec.invg_freq_code
12687                , 3);
12688       pn_varen_util.pvt_debug
12689            (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_rent_dates_rec.invg_freq_code is '
12690             || l_pn_var_rent_dates_rec.invg_freq_code
12691           , 3);
12692       pn_varen_util.pvt_debug
12693              (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.invg_freq_meaning is '
12694               || p_upd_var_rent_rec.invg_freq_meaning
12695             , 3);
12696 
12697       -- The below IF block has been commented and a new IF block has been added by Vivek on 02-DEC-2010
12698       /*
12699        IF    (   p_upd_var_rent_rec.invg_freq_code IS NULL
12700               OR p_upd_var_rent_rec.invg_freq_code = pn_varen_util.g_pn_miss_char
12701              )
12702           OR (   p_upd_var_rent_rec.invg_freq_meaning IS NULL
12703               OR p_upd_var_rent_rec.invg_freq_meaning = pn_varen_util.g_pn_miss_char
12704              )
12705        THEN
12706       */
12707       -- New IF block added by Vivek on 02-DEC-2010
12708       IF    (    p_upd_var_rent_rec.invg_freq_code IS NOT NULL
12709              AND p_upd_var_rent_rec.invg_freq_code <> pn_varen_util.g_pn_miss_char)
12710          OR (    p_upd_var_rent_rec.invg_freq_meaning IS NOT NULL
12711              AND p_upd_var_rent_rec.invg_freq_meaning <> pn_varen_util.g_pn_miss_char)
12712       THEN
12713 ------------------------------------------------
12714 --Validation of Invoicing  Frequency   -- INVG_FREQ_CODE
12715 -------------------------------------------------
12716          pn_varen_util.pvt_debug
12717                           ('PN_VAREN_PVT: Update_Var_Rent: Calling Invoicing Frequency Validation'
12718                          , 3);
12719          pn_varen_util.validate_periods (p_lookup_type                 => g_payment_frequency
12720                                        , x_lookup_meaning              => p_upd_var_rent_rec.invg_freq_meaning
12721                                        , x_lookup_code                 => p_upd_var_rent_rec.invg_freq_code
12722                                        , x_return_status               => x_return_status);
12723          pn_varen_util.pvt_debug
12724                              (   'PN_VAREN_PVT: Update_Var_Rent: Invoicing Frequency Output Code :'
12725                               || p_upd_var_rent_rec.invg_freq_code
12726                             , 3);
12727          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Invoicing Frequency status :'
12728                                   || x_return_status
12729                                 , 3);
12730          pn_varen_util.pvt_debug
12731                            (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invg_freq_code :'
12732                             || p_upd_var_rent_rec.invg_freq_code
12733                           , 3);
12734          pn_varen_util.pvt_debug
12735                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invg_freq_meaning :'
12736                          || p_upd_var_rent_rec.invg_freq_meaning
12737                        , 3);
12738 
12739          IF (x_return_status = fnd_api.g_ret_sts_error)
12740          THEN
12741             fnd_message.set_name ('PN', 'PN_VAR_INVG_FREQ_CODE');
12742             fnd_message.set_token ('INVG_FREQ_CODE_MEANING'
12743                                  ,    p_upd_var_rent_rec.invg_freq_meaning
12744                                    || '/'
12745                                    || p_upd_var_rent_rec.invg_freq_code);
12746             pn_varen_util.pvt_debug
12747                   (   'PN_VAREN_PVT: Update_Var_Rent: Invoicing Frequency Meaning Expected Error :'
12748                    || p_upd_var_rent_rec.invg_freq_meaning
12749                  , 3);
12750             fnd_msg_pub.ADD;
12751             RAISE fnd_api.g_exc_error;
12752          --x_return_status                                                              := fnd_api.g_ret_sts_error;
12753          ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
12754          THEN
12755             fnd_message.set_name ('PN', 'PN_VAR_INVG_FREQ_CODE');
12756             fnd_message.set_token ('INVG_FREQ_CODE_MEANING'
12757                                  ,    p_upd_var_rent_rec.invg_freq_meaning
12758                                    || '/'
12759                                    || p_upd_var_rent_rec.invg_freq_code);
12760             pn_varen_util.pvt_debug
12761                (   'PN_VAREN_PVT: Update_Var_Rent: Invoicing Frequency Meaning Un-Expected Error :'
12762                 || p_upd_var_rent_rec.invg_freq_meaning
12763               , 3);
12764             --x_return_status                                                              := fnd_api.g_ret_sts_unexp_error;
12765             fnd_msg_pub.ADD;
12766             RAISE fnd_api.g_exc_unexpected_error;
12767          ELSE
12768             pn_varen_util.pvt_debug
12769                            (   'PN_VAREN_PVT: Update_Var_Rent: Invoicing Frequency Code Success :'
12770                             || p_upd_var_rent_rec.invg_freq_code
12771                           , 3);
12772             x_return_status                      := fnd_api.g_ret_sts_success;
12773          END IF;
12774       ELSE
12775          p_upd_var_rent_rec.invg_freq_code    := l_pn_var_rent_dates_rec.invg_freq_code;
12776          pn_varen_util.pvt_debug
12777                     (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.invg_freq_code : '
12778                      || l_pn_var_rent_dates_rec.invg_freq_code
12779                    , 3);
12780          pn_varen_util.pvt_debug
12781                           (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.invg_freq_code : '
12782                            || p_upd_var_rent_rec.invg_freq_code
12783                          , 3);
12784          x_return_status                      := fnd_api.g_ret_sts_success;
12785       END IF;
12786 
12787       -- The below IF statements have been added by Vivek on 07-Dec-2010
12788 
12789       IF    (    p_upd_var_rent_rec.year_start_date IS NOT NULL
12790              AND p_upd_var_rent_rec.year_start_date <> pn_varen_util.g_pn_miss_date
12791              AND l_pn_var_rent_dates_rec.year_start_date IS NOT NULL
12792              AND p_upd_var_rent_rec.year_start_date <> l_pn_var_rent_dates_rec.year_start_date)
12793          OR (    p_upd_var_rent_rec.year_start_date IS NOT NULL
12794              AND p_upd_var_rent_rec.year_start_date <> pn_varen_util.g_pn_miss_date
12795              AND l_pn_var_rent_dates_rec.year_start_date IS NULL)
12796       THEN
12797          l_undo_periods                       := 'Y';
12798       END IF;
12799 
12800       IF    (    p_upd_var_rent_rec.use_gl_calendar IS NOT NULL
12801              AND p_upd_var_rent_rec.use_gl_calendar <> pn_varen_util.g_pn_miss_char
12802              AND l_pn_var_rent_dates_rec.use_gl_calendar IS NOT NULL
12803              AND p_upd_var_rent_rec.use_gl_calendar <> l_pn_var_rent_dates_rec.use_gl_calendar)
12804          OR (    p_upd_var_rent_rec.use_gl_calendar IS NOT NULL
12805              AND p_upd_var_rent_rec.use_gl_calendar <> pn_varen_util.g_pn_miss_char
12806              AND l_pn_var_rent_dates_rec.use_gl_calendar IS NULL)
12807       THEN
12808          l_undo_periods                       := 'Y';
12809       END IF;
12810 
12811       IF    (    p_upd_var_rent_rec.gl_period_set_name IS NOT NULL
12812              AND p_upd_var_rent_rec.gl_period_set_name <> pn_varen_util.g_pn_miss_char
12813              AND l_pn_var_rent_dates_rec.gl_period_set_name IS NOT NULL
12814              AND p_upd_var_rent_rec.gl_period_set_name <> l_pn_var_rent_dates_rec.gl_period_set_name)
12815          OR (    p_upd_var_rent_rec.gl_period_set_name IS NOT NULL
12816              AND p_upd_var_rent_rec.gl_period_set_name <> pn_varen_util.g_pn_miss_char
12817              AND l_pn_var_rent_dates_rec.gl_period_set_name IS NULL)
12818       THEN
12819          l_undo_periods                       := 'Y';
12820       END IF;
12821 
12822       IF    (    p_upd_var_rent_rec.period_type IS NOT NULL
12823              AND p_upd_var_rent_rec.period_type <> pn_varen_util.g_pn_miss_char
12824              AND l_pn_var_rent_dates_rec.period_type IS NOT NULL
12825              AND p_upd_var_rent_rec.period_type <> l_pn_var_rent_dates_rec.period_type)
12826          OR (    p_upd_var_rent_rec.period_type IS NOT NULL
12827              AND p_upd_var_rent_rec.period_type <> pn_varen_util.g_pn_miss_char
12828              AND l_pn_var_rent_dates_rec.period_type IS NULL)
12829       THEN
12830          l_undo_periods                       := 'Y';
12831       END IF;
12832 
12833       IF (    p_upd_var_rent_rec.reptg_freq_code IS NOT NULL
12834           AND p_upd_var_rent_rec.reptg_freq_code <> pn_varen_util.g_pn_miss_char
12835           AND p_upd_var_rent_rec.reptg_freq_code <> l_pn_var_rent_dates_rec.reptg_freq_code)
12836       THEN
12837          l_undo_periods                       := 'Y';
12838       END IF;
12839 
12840       IF (    p_upd_var_rent_rec.invg_freq_code IS NOT NULL
12841           AND p_upd_var_rent_rec.invg_freq_code <> pn_varen_util.g_pn_miss_char
12842           AND p_upd_var_rent_rec.invg_freq_code <> l_pn_var_rent_dates_rec.invg_freq_code)
12843       THEN
12844          l_undo_periods                       := 'Y';
12845       END IF;
12846 
12847       IF (    p_upd_var_rent_rec.vrg_reptg_freq_code IS NOT NULL
12848           AND p_upd_var_rent_rec.vrg_reptg_freq_code <> pn_varen_util.g_pn_miss_char
12849           AND p_upd_var_rent_rec.vrg_reptg_freq_code <> l_pn_var_rent_dates_rec.vrg_reptg_freq_code)
12850       THEN
12851          l_undo_periods                       := 'Y';
12852       END IF;
12853 
12854       -- End of IF statements added by Vivek on 07-Dec-2010
12855       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_undo_periods is '
12856                                || l_undo_periods
12857                              , 3);
12858 
12859       IF (    p_upd_var_rent_rec.commencement_date IS NOT NULL
12860           AND p_upd_var_rent_rec.commencement_date <> pn_varen_util.g_pn_miss_date
12861           AND p_upd_var_rent_rec.commencement_date <> l_pn_var_rents_rec.commencement_date)
12862       THEN
12863 
12864          l_undo_periods                       := 'Y';
12865       END IF;
12866 
12867       IF (    p_upd_var_rent_rec.termination_date IS NOT NULL
12868           AND p_upd_var_rent_rec.termination_date <> pn_varen_util.g_pn_miss_date
12869           AND p_upd_var_rent_rec.termination_date <> l_pn_var_rents_rec.termination_date)
12870       THEN
12871 
12872          l_undo_periods                       := 'Y';
12873       END IF;
12874 
12875       IF l_undo_periods = 'Y'
12876       THEN
12877          -- call undo periods procedure
12878          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Start of undo_periods Procedure'
12879                                 , 3);
12880          undo_periods (p_api_version                 => 1.0
12881                      , p_init_msg_list               => fnd_api.g_false
12882                      , p_commit                      => fnd_api.g_false
12883                      , p_var_rent_id                 => p_upd_var_rent_rec.var_rent_id
12884                      , p_var_rent_num                => p_upd_var_rent_rec.rent_num
12885                      , p_org_id                      => g_org_id
12886                      , p_generate_periods            => 'Y'
12887                      , x_return_status               => x_return_status
12888                      , x_msg_count                   => x_msg_count
12889                      , x_msg_data                    => x_msg_data);
12890          pn_varen_util.pvt_debug
12891                           (   'PN_VAREN_PVT: Update_Var_Rent: Status of undo_periods Procedure is '
12892                            || x_return_status
12893                          , 3);
12894          pn_varen_util.pvt_debug
12895                      (   'PN_VAREN_PVT: Update_Var_Rent: Error count of undo_periods Procedure is '
12896                       || x_msg_count
12897                     , 3);
12898 
12899 
12900          IF (x_return_status = fnd_api.g_ret_sts_error) THEN
12901 
12902             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
12903             fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : Undo Periods returned error');
12904             fnd_msg_pub.ADD;
12905             RAISE fnd_api.g_exc_error;
12906           ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
12907             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
12908             fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : Undo Periods returned error');
12909             fnd_msg_pub.ADD;
12910             RAISE fnd_api.g_exc_unexpected_error;
12911           END IF;
12912       END IF;
12913 
12914       IF (   p_upd_var_rent_rec.audit_day_of_month IS NULL
12915           OR p_upd_var_rent_rec.audit_day_of_month = pn_varen_util.g_pn_miss_num)
12916       THEN
12917          p_upd_var_rent_rec.audit_day_of_month := l_pn_var_rent_dates_rec.audit_day_of_month;
12918          pn_varen_util.pvt_debug
12919                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.audit_day_of_month : '
12920                  || l_pn_var_rent_dates_rec.audit_day_of_month
12921                , 3);
12922          pn_varen_util.pvt_debug
12923                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.audit_day_of_month : '
12924                        || p_upd_var_rent_rec.audit_day_of_month
12925                      , 3);
12926       END IF;
12927 
12928       IF (   p_upd_var_rent_rec.audit_days_after IS NULL
12929           OR p_upd_var_rent_rec.audit_days_after = pn_varen_util.g_pn_miss_num)
12930       THEN
12931          p_upd_var_rent_rec.audit_days_after  := l_pn_var_rent_dates_rec.audit_days_after;
12932          pn_varen_util.pvt_debug
12933                   (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.audit_days_after : '
12934                    || l_pn_var_rent_dates_rec.audit_days_after
12935                  , 3);
12936          pn_varen_util.pvt_debug
12937                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.audit_days_after : '
12938                          || p_upd_var_rent_rec.audit_days_after
12939                        , 3);
12940       END IF;
12941 
12942       IF (   p_upd_var_rent_rec.recon_day_of_month IS NULL
12943           OR p_upd_var_rent_rec.recon_day_of_month = pn_varen_util.g_pn_miss_num)
12944       THEN
12945          p_upd_var_rent_rec.recon_day_of_month := l_pn_var_rent_dates_rec.recon_day_of_month;
12946          pn_varen_util.pvt_debug
12947                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.recon_day_of_month : '
12948                  || l_pn_var_rent_dates_rec.recon_day_of_month
12949                , 3);
12950          pn_varen_util.pvt_debug
12951                       (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.recon_day_of_month : '
12952                        || p_upd_var_rent_rec.recon_day_of_month
12953                      , 3);
12954       END IF;
12955 
12956       IF (   p_upd_var_rent_rec.recon_days_after IS NULL
12957           OR p_upd_var_rent_rec.recon_days_after = pn_varen_util.g_pn_miss_num)
12958       THEN
12959          p_upd_var_rent_rec.recon_days_after  := l_pn_var_rent_dates_rec.recon_days_after;
12960          pn_varen_util.pvt_debug
12961                   (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.recon_days_after : '
12962                    || l_pn_var_rent_dates_rec.recon_days_after
12963                  , 3);
12964          pn_varen_util.pvt_debug
12965                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.recon_days_after : '
12966                          || p_upd_var_rent_rec.recon_days_after
12967                        , 3);
12968       END IF;
12969 
12970       IF (   p_upd_var_rent_rec.dates_attribute_category IS NULL
12971           OR p_upd_var_rent_rec.dates_attribute_category = pn_varen_util.g_pn_miss_char)
12972       THEN
12973          p_upd_var_rent_rec.dates_attribute_category := l_pn_var_rent_dates_rec.attribute_category;
12974          pn_varen_util.pvt_debug
12975                 (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute_category : '
12976                  || l_pn_var_rent_dates_rec.attribute_category
12977                , 3);
12978          pn_varen_util.pvt_debug
12979                 (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute_category : '
12980                  || p_upd_var_rent_rec.dates_attribute_category
12981                , 3);
12982       END IF;
12983 
12984       IF (   p_upd_var_rent_rec.dates_attribute1 IS NULL
12985           OR p_upd_var_rent_rec.dates_attribute1 = pn_varen_util.g_pn_miss_char)
12986       THEN
12987          p_upd_var_rent_rec.dates_attribute1  := l_pn_var_rent_dates_rec.attribute1;
12988          pn_varen_util.pvt_debug
12989                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute1 : '
12990                          || l_pn_var_rent_dates_rec.attribute1
12991                        , 3);
12992          pn_varen_util.pvt_debug
12993                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute1 : '
12994                          || p_upd_var_rent_rec.dates_attribute1
12995                        , 3);
12996       END IF;
12997 
12998       IF (   p_upd_var_rent_rec.dates_attribute2 IS NULL
12999           OR p_upd_var_rent_rec.dates_attribute2 = pn_varen_util.g_pn_miss_char)
13000       THEN
13001          p_upd_var_rent_rec.dates_attribute2  := l_pn_var_rent_dates_rec.attribute2;
13002          pn_varen_util.pvt_debug
13003                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute2 : '
13004                          || l_pn_var_rent_dates_rec.attribute2
13005                        , 3);
13006          pn_varen_util.pvt_debug
13007                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute2 : '
13008                          || p_upd_var_rent_rec.dates_attribute2
13009                        , 3);
13010       END IF;
13011 
13012       IF (   p_upd_var_rent_rec.dates_attribute3 IS NULL
13013           OR p_upd_var_rent_rec.dates_attribute3 = pn_varen_util.g_pn_miss_char)
13014       THEN
13015          p_upd_var_rent_rec.dates_attribute3  := l_pn_var_rent_dates_rec.attribute3;
13016          pn_varen_util.pvt_debug
13017                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute3 : '
13018                          || l_pn_var_rent_dates_rec.attribute3
13019                        , 3);
13020          pn_varen_util.pvt_debug
13021                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute3 : '
13022                          || p_upd_var_rent_rec.dates_attribute3
13023                        , 3);
13024       END IF;
13025 
13026       IF (   p_upd_var_rent_rec.dates_attribute4 IS NULL
13027           OR p_upd_var_rent_rec.dates_attribute4 = pn_varen_util.g_pn_miss_char)
13028       THEN
13029          p_upd_var_rent_rec.dates_attribute4  := l_pn_var_rent_dates_rec.attribute4;
13030          pn_varen_util.pvt_debug
13031                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute4 : '
13032                          || l_pn_var_rent_dates_rec.attribute4
13033                        , 3);
13034          pn_varen_util.pvt_debug
13035                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute4 : '
13036                          || p_upd_var_rent_rec.dates_attribute4
13037                        , 3);
13038       END IF;
13039 
13040       IF (   p_upd_var_rent_rec.dates_attribute5 IS NULL
13041           OR p_upd_var_rent_rec.dates_attribute5 = pn_varen_util.g_pn_miss_char)
13042       THEN
13043          p_upd_var_rent_rec.dates_attribute5  := l_pn_var_rent_dates_rec.attribute5;
13044          pn_varen_util.pvt_debug
13045                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute5 : '
13046                          || l_pn_var_rent_dates_rec.attribute5
13047                        , 3);
13048          pn_varen_util.pvt_debug
13049                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute5 : '
13050                          || p_upd_var_rent_rec.dates_attribute5
13051                        , 3);
13052       END IF;
13053 
13054       IF (   p_upd_var_rent_rec.dates_attribute6 IS NULL
13055           OR p_upd_var_rent_rec.dates_attribute6 = pn_varen_util.g_pn_miss_char)
13056       THEN
13057          p_upd_var_rent_rec.dates_attribute6  := l_pn_var_rent_dates_rec.attribute6;
13058          pn_varen_util.pvt_debug
13059                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute6 : '
13060                          || l_pn_var_rent_dates_rec.attribute6
13061                        , 3);
13062          pn_varen_util.pvt_debug
13063                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute6 : '
13064                          || p_upd_var_rent_rec.dates_attribute6
13065                        , 3);
13066       END IF;
13067 
13068       IF (   p_upd_var_rent_rec.dates_attribute7 IS NULL
13069           OR p_upd_var_rent_rec.dates_attribute7 = pn_varen_util.g_pn_miss_char)
13070       THEN
13071          p_upd_var_rent_rec.dates_attribute7  := l_pn_var_rent_dates_rec.attribute7;
13072          pn_varen_util.pvt_debug
13073                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute7 : '
13074                          || l_pn_var_rent_dates_rec.attribute7
13075                        , 3);
13076          pn_varen_util.pvt_debug
13077                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute7 : '
13078                          || p_upd_var_rent_rec.dates_attribute7
13079                        , 3);
13080       END IF;
13081 
13082       IF (   p_upd_var_rent_rec.dates_attribute8 IS NULL
13083           OR p_upd_var_rent_rec.dates_attribute8 = pn_varen_util.g_pn_miss_char)
13084       THEN
13085          p_upd_var_rent_rec.dates_attribute8  := l_pn_var_rent_dates_rec.attribute8;
13086          pn_varen_util.pvt_debug
13087                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute8 : '
13088                          || l_pn_var_rent_dates_rec.attribute8
13089                        , 3);
13090          pn_varen_util.pvt_debug
13091                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute8 : '
13092                          || p_upd_var_rent_rec.dates_attribute8
13093                        , 3);
13094       END IF;
13095 
13096       IF (   p_upd_var_rent_rec.dates_attribute9 IS NULL
13097           OR p_upd_var_rent_rec.dates_attribute9 = pn_varen_util.g_pn_miss_char)
13098       THEN
13099          p_upd_var_rent_rec.dates_attribute9  := l_pn_var_rent_dates_rec.attribute9;
13100          pn_varen_util.pvt_debug
13101                         (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute9 : '
13102                          || l_pn_var_rent_dates_rec.attribute9
13103                        , 3);
13104          pn_varen_util.pvt_debug
13105                         (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute9 : '
13106                          || p_upd_var_rent_rec.dates_attribute9
13107                        , 3);
13108       END IF;
13109 
13110       IF (   p_upd_var_rent_rec.dates_attribute10 IS NULL
13111           OR p_upd_var_rent_rec.dates_attribute10 = pn_varen_util.g_pn_miss_char)
13112       THEN
13113          p_upd_var_rent_rec.dates_attribute10 := l_pn_var_rent_dates_rec.attribute10;
13114          pn_varen_util.pvt_debug
13115                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute10 : '
13116                         || l_pn_var_rent_dates_rec.attribute10
13117                       , 3);
13118          pn_varen_util.pvt_debug
13119                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute10 : '
13120                         || p_upd_var_rent_rec.dates_attribute10
13121                       , 3);
13122       END IF;
13123 
13124       IF (   p_upd_var_rent_rec.dates_attribute11 IS NULL
13125           OR p_upd_var_rent_rec.dates_attribute11 = pn_varen_util.g_pn_miss_char)
13126       THEN
13127          p_upd_var_rent_rec.dates_attribute11 := l_pn_var_rent_dates_rec.attribute11;
13128          pn_varen_util.pvt_debug
13129                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute11 : '
13130                         || l_pn_var_rent_dates_rec.attribute11
13131                       , 3);
13132          pn_varen_util.pvt_debug
13133                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute11 : '
13134                         || p_upd_var_rent_rec.dates_attribute11
13135                       , 3);
13136       END IF;
13137 
13138       IF (   p_upd_var_rent_rec.dates_attribute12 IS NULL
13139           OR p_upd_var_rent_rec.dates_attribute12 = pn_varen_util.g_pn_miss_char)
13140       THEN
13141          p_upd_var_rent_rec.dates_attribute12 := l_pn_var_rent_dates_rec.attribute12;
13142          pn_varen_util.pvt_debug
13143                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute12 : '
13144                         || l_pn_var_rent_dates_rec.attribute12
13145                       , 3);
13146          pn_varen_util.pvt_debug
13147                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute12 : '
13148                         || p_upd_var_rent_rec.dates_attribute12
13149                       , 3);
13150       END IF;
13151 
13152       IF (   p_upd_var_rent_rec.dates_attribute13 IS NULL
13153           OR p_upd_var_rent_rec.dates_attribute13 = pn_varen_util.g_pn_miss_char)
13154       THEN
13155          p_upd_var_rent_rec.dates_attribute13 := l_pn_var_rent_dates_rec.attribute13;
13156          pn_varen_util.pvt_debug
13157                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute13 : '
13158                         || l_pn_var_rent_dates_rec.attribute13
13159                       , 3);
13160          pn_varen_util.pvt_debug
13161                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute13 : '
13162                         || p_upd_var_rent_rec.dates_attribute13
13163                       , 3);
13164       END IF;
13165 
13166       IF (   p_upd_var_rent_rec.dates_attribute14 IS NULL
13167           OR p_upd_var_rent_rec.dates_attribute14 = pn_varen_util.g_pn_miss_char)
13168       THEN
13169          p_upd_var_rent_rec.dates_attribute14 := l_pn_var_rent_dates_rec.attribute14;
13170          pn_varen_util.pvt_debug
13171                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute14 : '
13172                         || l_pn_var_rent_dates_rec.attribute14
13173                       , 3);
13174          pn_varen_util.pvt_debug
13175                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute14 : '
13176                         || p_upd_var_rent_rec.dates_attribute14
13177                       , 3);
13178       END IF;
13179 
13180       IF (   p_upd_var_rent_rec.dates_attribute15 IS NULL
13181           OR p_upd_var_rent_rec.dates_attribute15 = pn_varen_util.g_pn_miss_char)
13182       THEN
13183          p_upd_var_rent_rec.dates_attribute15 := l_pn_var_rent_dates_rec.attribute15;
13184          pn_varen_util.pvt_debug
13185                        (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_rent_dates_rec.attribute15 : '
13186                         || l_pn_var_rent_dates_rec.attribute15
13187                       , 3);
13188          pn_varen_util.pvt_debug
13189                        (   'PN_VAREN_PVT: Update_Var_Rent: p_upd_var_rent_rec.dates_attribute15 : '
13190                         || p_upd_var_rent_rec.dates_attribute15
13191                       , 3);
13192       END IF;
13193 
13194       -- update validate dates procedure..
13195       pn_varen_util.pvt_debug
13196                     ('PN_VAREN_PVT: Update_Var_Rent: Calling  of Upd_Validate_Rent_Dates Procedure'
13197                    , 3);
13198       upd_validate_rent_dates (p_upd_var_rent_rec_type       => p_upd_var_rent_rec
13199                              , x_return_status               => x_return_status);
13200 
13201       pn_varen_util.pvt_debug
13202                (   'PN_VAREN_PVT: Update_Var_Rent: Status of Upd_Validate_Rent_Dates Procedure is '
13203                 || x_return_status
13204               , 3);
13205       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_validate_flag is '
13206                                || p_validate_flag
13207                              , 3);
13208       IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
13209       THEN
13210          fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13211          fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:  UPD_VALIDATE_RENT_DATES returned error');
13212          fnd_msg_pub.ADD;
13213          RAISE fnd_api.g_exc_error;
13214       END IF;
13215 
13216 
13217       IF (p_validate_flag <> 'Y')                                       --and x_return_status = 'S')
13218       THEN
13219          pn_varen_util.pvt_debug
13220                            ('PN_VAREN_PVT: Update_Var_Rent: Start of update_varen_dates Procedure'
13221                           , 3);
13222          pn_varen_util.pvt_debug
13223             (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.year_start_date before update_varen_dates procedure is : '
13224              || p_upd_var_rent_rec.year_start_date
13225            , 3);
13226 
13227 
13228          update_varen_dates (p_upd_var_rent_rec_type       => p_upd_var_rent_rec
13229                            , x_return_status               => x_return_status);
13230          pn_varen_util.pvt_debug
13231                        (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_varen_dates Procedure '
13232                         || x_return_status
13233                       , 3);
13234          IF (x_return_status = fnd_api.g_ret_sts_error) THEN
13235 
13236             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13237             fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: update_varen_dates: Error');
13238             fnd_msg_pub.ADD;
13239             RAISE fnd_api.g_exc_error;
13240           ELSIF(x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
13241             fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13242             fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: update_varen_dates: Error');
13243             fnd_msg_pub.ADD;
13244             RAISE fnd_api.g_exc_unexpected_error;
13245           END IF;
13246 
13247       END IF;                                                                     -- p_validate_flag
13248    --END IF;                                                                 -- c_pn_var_rent_dates
13249 
13250    --CLOSE c_pn_var_rent_dates;
13251    END IF;                                                                    -- c_pn_var_rent_dates
13252 
13253    IF     p_var_rent_lines_tbl.COUNT > 0
13254       AND l_undo_periods <> 'Y'
13255    THEN
13256 
13257       FOR ul IN p_var_rent_lines_tbl.FIRST .. p_var_rent_lines_tbl.LAST
13258       LOOP
13259          l_pn_var_line_defaults:=NULL;
13260          OPEN c_pn_var_line_defaults (p_var_rent_lines_tbl (ul).line_default_id
13261                                     , p_var_rent_lines_tbl (ul).var_rent_id);
13262 
13263          FETCH c_pn_var_line_defaults
13264          INTO  l_pn_var_line_defaults;
13265 
13266          CLOSE c_pn_var_line_defaults;
13267 
13268          ---IF (c_pn_var_line_defaults%NOTFOUND)
13269          --THEN
13270          --x_return_status                                                              := fnd_api.g_ret_sts_error;
13271          -- pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_line_defaults not found'
13272          --                        , 3
13273          --                        );
13274 
13275          --ELSE
13276          pn_varen_util.pvt_debug
13277                               ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_line_defaults found'
13278                              , 3);
13279 --------------------------------------------------------------------------------
13280 -- Initialize Variable Rent Lines
13281 --------------------------------------------------------------------------------
13282 
13283          --FOR ul IN p_var_rent_lines_tbl.FIRST .. p_var_rent_lines_tbl.LAST
13284          --LOOP
13285          pn_varen_util.pvt_debug
13286                              ('PN_VAREN_PVT: Update_Var_Rent: Starting of Variable Rent Lines Loop'
13287                             , 3);
13288 
13289          IF (   p_var_rent_lines_tbl (ul).line_num IS NULL
13290              OR p_var_rent_lines_tbl (ul).line_num = pn_varen_util.g_pn_miss_num)
13291          THEN
13292             p_var_rent_lines_tbl (ul).line_num   := l_pn_var_line_defaults.line_num;
13293          END IF;
13294 
13295          IF    (   p_var_rent_lines_tbl (ul).var_rent_id IS NULL
13296                 OR p_var_rent_lines_tbl (ul).var_rent_id = pn_varen_util.g_pn_miss_num)
13297             OR (   p_var_rent_lines_tbl (ul).var_rent_num IS NULL
13298                 OR p_var_rent_lines_tbl (ul).var_rent_num = pn_varen_util.g_pn_miss_char)
13299          THEN
13300             p_var_rent_lines_tbl (ul).var_rent_id := l_pn_var_line_defaults.var_rent_id;
13301          --p_var_rent_lines_tbl (ul). var_rent_num                  :=  l_pn_var_line_defaults.var_rent_num;
13302          END IF;
13303 
13304          pn_varen_util.breakpoint_ext (p_var_rent_id                 => p_var_rent_lines_tbl (ul).var_rent_id
13305                                      , x_bkpt_exist                  => l_bkpt_exist
13306                                      , x_return_status               => x_return_status);
13307          pn_varen_util.pvt_debug
13308                                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_undo_breakpoints is '
13309                                 || p_undo_breakpoints
13310                               , 3);
13311          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_bkpt_exist is '
13312                                   || l_bkpt_exist
13313                                 , 3);
13314 
13315          IF (   p_undo_breakpoints = 'Y'
13316              OR l_bkpt_exist > 0)
13317          THEN
13318             undo_breakpoints (p_var_rent_id                 => p_var_rent_lines_tbl (ul).var_rent_id
13319                             , x_return_status               => x_return_status);
13320             pn_varen_util.pvt_debug
13321                      (   'PN_VAREN_PVT: Update_Var_Rent: status of undo_breakpoints procedure is '
13322                       || x_return_status
13323                     , 3);
13324             IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
13325             THEN
13326                fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13327                fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent: UNDO_BREAKPOINTS returned error');
13328                fnd_msg_pub.ADD;
13329                RAISE fnd_api.g_exc_error;
13330             END IF;
13331          END IF;
13332 
13333 --------------------------------------------------------------------------------
13334 --SALES_CHANNEL(Type 1) validation
13335 --------------------------------------------------------------------------------
13336          IF    (    p_var_rent_lines_tbl (ul).sales_channel_code IS NOT NULL
13337                 AND p_var_rent_lines_tbl (ul).sales_channel_code <> pn_varen_util.g_pn_miss_char)
13338             OR (    p_var_rent_lines_tbl (ul).sales_channel_meaning IS NOT NULL
13339                 AND p_var_rent_lines_tbl (ul).sales_channel_meaning <> pn_varen_util.g_pn_miss_char)
13340          THEN
13341             pn_varen_util.pvt_debug
13342                        ('PN_VAREN_PVT: Update_Var_Rent: Calling SALES_CHANNEL (Type 1) Validation'
13343                       , 3);
13344             pn_varen_util.validate_lookups
13345                                 (p_lookup_type                 => g_sales_channel
13346                                , x_lookup_meaning              => p_var_rent_lines_tbl (ul).sales_channel_meaning
13347                                , x_lookup_code                 => p_var_rent_lines_tbl (ul).sales_channel_code
13348                                , x_return_status               => x_return_status);
13349             pn_varen_util.pvt_debug
13350                (   'PN_VAREN_PVT: Update_Var_Rent: p_var_rent_lines_tbl (ul).sales_channel_meaning :'
13351                 || p_var_rent_lines_tbl (ul).sales_channel_meaning
13352               , 3);
13353             pn_varen_util.pvt_debug
13354                  (   'PN_VAREN_PVT: Update_Var_Rent: p_var_rent_lines_tbl (ul).sales_channel_code:'
13355                   || p_var_rent_lines_tbl (ul).sales_channel_code
13356                 , 3);
13357             pn_varen_util.pvt_debug
13358                           (   'PN_VAREN_PVT: Update_Var_Rent: SALES_CHANNEL (Type 1) Output Code :'
13359                            || p_var_rent_lines_tbl (ul).sales_channel_code
13360                          , 3);
13361 
13362             IF (x_return_status = fnd_api.g_ret_sts_error)
13363             THEN
13364                --
13365                fnd_message.set_name ('PN', 'PN_VAR_LIN_SAL_CHL');
13366                --x_return_status                                                              :=fnd_api.g_ret_sts_error;
13367                pn_varen_util.pvt_debug
13368                   (   'PN_VAREN_PVT: Update_Var_Rent: SALES_CHANNEL (Type 1) Meaning Expected Error :'
13369                    || p_var_rent_lines_tbl (ul).sales_channel_meaning
13370                  , 3);
13371                pn_varen_util.pvt_debug
13372                             ('PN_VAREN_PVT: Update_Var_Rent: Sales Channel Lookup Validation Error'
13373                            , 3);
13374                fnd_msg_pub.ADD;
13375                RAISE fnd_api.g_exc_error;
13376             --
13377             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
13378             THEN
13379                --
13380                fnd_message.set_name ('PN', 'PN_VAR_LIN_SAL_CHL');
13381                --x_return_status                                                              := fnd_api.g_ret_sts_unexp_error;
13382                pn_varen_util.pvt_debug
13383                   (   'PN_VAREN_PVT: Update_Var_Rent: SALES_CHANNEL (Type 1) Meaning Un-Expected Error :'
13384                    || p_var_rent_lines_tbl (ul).sales_channel_meaning
13385                  , 3);
13386                pn_varen_util.pvt_debug
13387                   ('PN_VAREN_PVT: Update_Var_Rent: Sales Channel Lookup Validation Unexpected Error'
13388                  , 3);
13389                fnd_msg_pub.ADD;
13390                RAISE fnd_api.g_exc_unexpected_error;
13391             --
13392             ELSE
13393                x_return_status                      := fnd_api.g_ret_sts_success;
13394                pn_varen_util.pvt_debug
13395                         (   'PN_VAREN_PVT: Update_Var_Rent: SALES_CHANNEL (Type 1) Code Success :'
13396                          || p_var_rent_lines_tbl (ul).sales_channel_code
13397                        , 3);
13398                pn_varen_util.pvt_debug
13399                           ('PN_VAREN_PVT: Update_Var_Rent: Sales Channel Lookup Validation Success'
13400                          , 3);
13401             END IF;
13402          ELSE
13403             p_var_rent_lines_tbl (ul).sales_channel_code := l_pn_var_line_defaults.sales_type_code;
13404             --p_var_rent_lines_tbl (ul). sales_channel_meaning      :=      l_pn_var_line_defaults.sales_channel_meaning;
13405             pn_varen_util.pvt_debug
13406                (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_line_defaults.sales_type_code is :'
13407                 || l_pn_var_line_defaults.sales_type_code
13408               , 3);
13409             pn_varen_util.pvt_debug
13410                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).sales_channel_code:'
13411                 || p_var_rent_lines_tbl (ul).sales_channel_code
13412               , 3);
13413          END IF;
13414 
13415 --------------------------------------------------------------------------------
13416 --ITEM_CATEGORY(Type 2) validation
13417 --------------------------------------------------------------------------------
13418          IF    (    p_var_rent_lines_tbl (ul).item_category_code IS NOT NULL
13419                 AND p_var_rent_lines_tbl (ul).item_category_code <> pn_varen_util.g_pn_miss_char)
13420             OR (    p_var_rent_lines_tbl (ul).item_category_meaning IS NOT NULL
13421                 AND p_var_rent_lines_tbl (ul).item_category_meaning <> pn_varen_util.g_pn_miss_char)
13422          THEN
13423             pn_varen_util.pvt_debug
13424                         ('PN_VAREN_PVT: Update_Var_Rent: Calling ITEM_CATEGORY(Type 2) Validation'
13425                        , 3);
13426             pn_varen_util.validate_lookups
13427                                 (p_lookup_type                 => g_item_category
13428                                , x_lookup_meaning              => p_var_rent_lines_tbl (ul).item_category_meaning
13429                                , x_lookup_code                 => p_var_rent_lines_tbl (ul).item_category_code
13430                                , x_return_status               => x_return_status);
13431             pn_varen_util.pvt_debug
13432                (   'PN_VAREN_PVT: Update_Var_Rent: p_var_rent_lines_tbl (ul).item_category_meaning :'
13433                 || p_var_rent_lines_tbl (ul).item_category_meaning
13434               , 3);
13435             pn_varen_util.pvt_debug
13436                  (   'PN_VAREN_PVT: Update_Var_Rent: p_var_rent_lines_tbl (ul).item_category_code:'
13437                   || p_var_rent_lines_tbl (ul).item_category_code
13438                 , 3);
13439             pn_varen_util.pvt_debug
13440                            (   'PN_VAREN_PVT: Update_Var_Rent: ITEM_CATEGORY(Type 2) Output Code :'
13441                             || p_var_rent_lines_tbl (ul).item_category_code
13442                           , 3);
13443 
13444             IF (x_return_status = fnd_api.g_ret_sts_error)
13445             THEN
13446                --
13447                fnd_message.set_name ('PN', 'PN_VAR_LIN_ITM_CAY');
13448                x_return_status                      := fnd_api.g_ret_sts_error;
13449                pn_varen_util.pvt_debug
13450                            ('PN_VAREN_PVT: Update_Var_Rent: Item Category Lookup Validation Error'
13451                           , 3);
13452                pn_varen_util.pvt_debug
13453                   (   'PN_VAREN_PVT: Update_Var_Rent: ITEM_CATEGORY(Type 2) Meaning Expected Error :'
13454                    || p_var_rent_lines_tbl (ul).item_category_meaning
13455                  , 3);
13456                fnd_msg_pub.ADD;
13457                RAISE fnd_api.g_exc_error;
13458             --
13459             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
13460             THEN
13461                --
13462                fnd_message.set_name ('PN', 'PN_VAR_LIN_ITM_CAY');
13463                --x_return_status                                                              :=fnd_api.g_ret_sts_unexp_error;
13464                pn_varen_util.pvt_debug
13465                   (   'PN_VAREN_PVT: Update_Var_Rent: Item Category Lookup Validation Unexpected Error :'
13466                    || p_var_rent_lines_tbl (ul).item_category_meaning
13467                  , 3);
13468                pn_varen_util.pvt_debug
13469                   (   'PN_VAREN_PVT: Update_Var_Rent: ITEM_CATEGORY(Type 2) Meaning Un-Expected Error :'
13470                    || p_var_rent_lines_tbl (ul).item_category_meaning
13471                  , 3);
13472                fnd_msg_pub.ADD;
13473                RAISE fnd_api.g_exc_error;
13474             --
13475 
13476             --RAISE fnd_api.g_exc_unexpected_error;
13477             ELSE
13478                x_return_status                      := fnd_api.g_ret_sts_success;
13479                pn_varen_util.pvt_debug
13480                          ('PN_VAREN_PVT: Update_Var_Rent: Item Category Lookup Validation Success'
13481                         , 3);
13482                --                 x_return_status    := fnd_api.g_ret_sts_success;
13483                pn_varen_util.pvt_debug
13484                          (   'PN_VAREN_PVT: Update_Var_Rent: ITEM_CATEGORY(Type 2) Code Success :'
13485                           || p_var_rent_lines_tbl (ul).item_category_code
13486                         , 3);
13487             END IF;
13488          ELSE
13489             p_var_rent_lines_tbl (ul).item_category_code :=
13490                                                           l_pn_var_line_defaults.item_category_code;
13491             --p_var_rent_lines_tbl (ul). item_category_meaning      :=      l_pn_var_line_defaults.item_category_meaning;
13492             pn_varen_util.pvt_debug
13493                (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_pn_var_line_defaults.item_category_meaning is :'
13494                 || l_pn_var_line_defaults.item_category_code
13495               , 3);
13496             pn_varen_util.pvt_debug
13497                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).item_category_code:'
13498                 || p_var_rent_lines_tbl (ul).item_category_code
13499               , 3);
13500          END IF;
13501 
13502          IF (   p_var_rent_lines_tbl (ul).agreement_template_id IS NULL
13503              OR p_var_rent_lines_tbl (ul).agreement_template_id = pn_varen_util.g_pn_miss_num)
13504          THEN
13505             p_var_rent_lines_tbl (ul).agreement_template_id :=
13506                                                        l_pn_var_line_defaults.agreement_template_id;
13507          END IF;
13508 
13509          IF (   p_var_rent_lines_tbl (ul).line_start_date IS NULL
13510              OR p_var_rent_lines_tbl (ul).line_start_date = pn_varen_util.g_pn_miss_date)
13511          THEN
13512             p_var_rent_lines_tbl (ul).line_start_date := l_pn_var_line_defaults.line_start_date;
13513          END IF;
13514 
13515          IF (   p_var_rent_lines_tbl (ul).line_end_date IS NULL
13516              OR p_var_rent_lines_tbl (ul).line_end_date = pn_varen_util.g_pn_miss_date)
13517          THEN
13518             p_var_rent_lines_tbl (ul).line_end_date := l_pn_var_line_defaults.line_end_date;
13519          END IF;
13520 
13521          IF (   p_var_rent_lines_tbl (ul).processed_flag IS NULL
13522              OR p_var_rent_lines_tbl (ul).processed_flag = pn_varen_util.g_pn_miss_num)
13523          THEN
13524             p_var_rent_lines_tbl (ul).processed_flag := l_pn_var_line_defaults.processed_flag;
13525          END IF;
13526 
13527          IF (   p_var_rent_lines_tbl (ul).last_update_date IS NULL
13528              OR p_var_rent_lines_tbl (ul).last_update_date = pn_varen_util.g_pn_miss_date)
13529          THEN
13530             p_var_rent_lines_tbl (ul).last_update_date := SYSDATE;
13531          --:=  l_pn_var_line_defaults.last_update_date;
13532          END IF;
13533 
13534          IF (   p_var_rent_lines_tbl (ul).last_updated_by IS NULL
13535              OR p_var_rent_lines_tbl (ul).last_updated_by = pn_varen_util.g_pn_miss_num)
13536          THEN
13537             p_var_rent_lines_tbl (ul).last_updated_by := g_user_id;
13538          -- := l_pn_var_line_defaults.last_updated_by;
13539          END IF;
13540 
13541          IF (   p_var_rent_lines_tbl (ul).creation_date IS NULL
13542              OR p_var_rent_lines_tbl (ul).creation_date = pn_varen_util.g_pn_miss_date)
13543          THEN
13544             p_var_rent_lines_tbl (ul).creation_date := l_pn_var_line_defaults.creation_date;
13545          END IF;
13546 
13547          IF (   p_var_rent_lines_tbl (ul).created_by IS NULL
13548              OR p_var_rent_lines_tbl (ul).created_by = pn_varen_util.g_pn_miss_num)
13549          THEN
13550             p_var_rent_lines_tbl (ul).created_by := l_pn_var_line_defaults.created_by;
13551          END IF;
13552 
13553          IF (   p_var_rent_lines_tbl (ul).last_update_login IS NULL
13554              OR p_var_rent_lines_tbl (ul).last_update_login = pn_varen_util.g_pn_miss_num)
13555          THEN
13556             p_var_rent_lines_tbl (ul).last_update_login := g_user_id;
13557          -- := l_pn_var_line_defaults.last_update_login;
13558          END IF;
13559 
13560          IF (   p_var_rent_lines_tbl (ul).attribute_category IS NULL
13561              OR p_var_rent_lines_tbl (ul).attribute_category = pn_varen_util.g_pn_miss_char)
13562          THEN
13563             p_var_rent_lines_tbl (ul).attribute_category :=
13564                                                           l_pn_var_line_defaults.attribute_category;
13565          END IF;
13566 
13567          IF (   p_var_rent_lines_tbl (ul).attribute1 IS NULL
13568              OR p_var_rent_lines_tbl (ul).attribute1 = pn_varen_util.g_pn_miss_char)
13569          THEN
13570             p_var_rent_lines_tbl (ul).attribute1 := l_pn_var_line_defaults.attribute1;
13571          END IF;
13572 
13573          IF (   p_var_rent_lines_tbl (ul).attribute2 IS NULL
13574              OR p_var_rent_lines_tbl (ul).attribute2 = pn_varen_util.g_pn_miss_char)
13575          THEN
13576             p_var_rent_lines_tbl (ul).attribute2 := l_pn_var_line_defaults.attribute2;
13577          END IF;
13578 
13579          IF (   p_var_rent_lines_tbl (ul).attribute3 IS NULL
13580              OR p_var_rent_lines_tbl (ul).attribute3 = pn_varen_util.g_pn_miss_char)
13581          THEN
13582             p_var_rent_lines_tbl (ul).attribute3 := l_pn_var_line_defaults.attribute3;
13583          END IF;
13584 
13585          IF (   p_var_rent_lines_tbl (ul).attribute4 IS NULL
13586              OR p_var_rent_lines_tbl (ul).attribute4 = pn_varen_util.g_pn_miss_char)
13587          THEN
13588             p_var_rent_lines_tbl (ul).attribute4 := l_pn_var_line_defaults.attribute4;
13589          END IF;
13590 
13591          IF (   p_var_rent_lines_tbl (ul).attribute5 IS NULL
13592              OR p_var_rent_lines_tbl (ul).attribute5 = pn_varen_util.g_pn_miss_char)
13593          THEN
13594             p_var_rent_lines_tbl (ul).attribute5 := l_pn_var_line_defaults.attribute5;
13595          END IF;
13596 
13597          IF (   p_var_rent_lines_tbl (ul).attribute6 IS NULL
13598              OR p_var_rent_lines_tbl (ul).attribute6 = pn_varen_util.g_pn_miss_char)
13599          THEN
13600             p_var_rent_lines_tbl (ul).attribute6 := l_pn_var_line_defaults.attribute6;
13601          END IF;
13602 
13603          IF (   p_var_rent_lines_tbl (ul).attribute7 IS NULL
13604              OR p_var_rent_lines_tbl (ul).attribute7 = pn_varen_util.g_pn_miss_char)
13605          THEN
13606             p_var_rent_lines_tbl (ul).attribute7 := l_pn_var_line_defaults.attribute7;
13607          END IF;
13608 
13609          IF (   p_var_rent_lines_tbl (ul).attribute8 IS NULL
13610              OR p_var_rent_lines_tbl (ul).attribute8 = pn_varen_util.g_pn_miss_char)
13611          THEN
13612             p_var_rent_lines_tbl (ul).attribute8 := l_pn_var_line_defaults.attribute8;
13613          END IF;
13614 
13615          IF (   p_var_rent_lines_tbl (ul).attribute9 IS NULL
13616              OR p_var_rent_lines_tbl (ul).attribute9 = pn_varen_util.g_pn_miss_char)
13617          THEN
13618             p_var_rent_lines_tbl (ul).attribute9 := l_pn_var_line_defaults.attribute9;
13619          END IF;
13620 
13621          IF (   p_var_rent_lines_tbl (ul).attribute10 IS NULL
13622              OR p_var_rent_lines_tbl (ul).attribute10 = pn_varen_util.g_pn_miss_char)
13623          THEN
13624             p_var_rent_lines_tbl (ul).attribute10 := l_pn_var_line_defaults.attribute10;
13625          END IF;
13626 
13627          IF (   p_var_rent_lines_tbl (ul).attribute11 IS NULL
13628              OR p_var_rent_lines_tbl (ul).attribute11 = pn_varen_util.g_pn_miss_char)
13629          THEN
13630             p_var_rent_lines_tbl (ul).attribute11 := l_pn_var_line_defaults.attribute11;
13631          END IF;
13632 
13633          IF (   p_var_rent_lines_tbl (ul).attribute12 IS NULL
13634              OR p_var_rent_lines_tbl (ul).attribute12 = pn_varen_util.g_pn_miss_char)
13635          THEN
13636             p_var_rent_lines_tbl (ul).attribute12 := l_pn_var_line_defaults.attribute12;
13637          END IF;
13638 
13639          IF (   p_var_rent_lines_tbl (ul).attribute13 IS NULL
13640              OR p_var_rent_lines_tbl (ul).attribute13 = pn_varen_util.g_pn_miss_char)
13641          THEN
13642             p_var_rent_lines_tbl (ul).attribute13 := l_pn_var_line_defaults.attribute13;
13643          END IF;
13644 
13645          IF (   p_var_rent_lines_tbl (ul).attribute14 IS NULL
13646              OR p_var_rent_lines_tbl (ul).attribute14 = pn_varen_util.g_pn_miss_char)
13647          THEN
13648             p_var_rent_lines_tbl (ul).attribute14 := l_pn_var_line_defaults.attribute14;
13649          END IF;
13650 
13651          IF (   p_var_rent_lines_tbl (ul).attribute15 IS NULL
13652              OR p_var_rent_lines_tbl (ul).attribute15 = pn_varen_util.g_pn_miss_char)
13653          THEN
13654             p_var_rent_lines_tbl (ul).attribute15 := l_pn_var_line_defaults.attribute15;
13655          END IF;
13656 
13657 -------------------------------------------------------------------------------------------
13658 -- Validating Descriptive Flex fields
13659 -------------------------------------------------------------------------------------------
13660 
13661 
13662         -- Below code has been commented by Vivek on 11-DEC-2010
13663         /*
13664          IF (p_var_rent_lines_tbl (ul).attribute_category IS NOT NULL)
13665          THEN
13666 
13667             pn_varen_util.validate_flex_fields
13668                                (p_desc_flex_name              => g_var_line_desc_name
13669                               , p_attribute_category          => p_var_rent_lines_tbl (ul).attribute_category
13670                               , p_attribute1                  => p_var_rent_lines_tbl (ul).attribute1
13671                               , p_attribute2                  => p_var_rent_lines_tbl (ul).attribute2
13672                               , p_attribute3                  => p_var_rent_lines_tbl (ul).attribute3
13673                               , p_attribute4                  => p_var_rent_lines_tbl (ul).attribute4
13674                               , p_attribute5                  => p_var_rent_lines_tbl (ul).attribute5
13675                               , p_attribute6                  => p_var_rent_lines_tbl (ul).attribute6
13676                               , p_attribute7                  => p_var_rent_lines_tbl (ul).attribute7
13677                               , p_attribute8                  => p_var_rent_lines_tbl (ul).attribute8
13678                               , p_attribute9                  => p_var_rent_lines_tbl (ul).attribute9
13679                               , p_attribute10                 => p_var_rent_lines_tbl (ul).attribute10
13680                               , p_attribute11                 => p_var_rent_lines_tbl (ul).attribute11
13681                               , p_attribute12                 => p_var_rent_lines_tbl (ul).attribute12
13682                               , p_attribute13                 => p_var_rent_lines_tbl (ul).attribute13
13683                               , p_attribute14                 => p_var_rent_lines_tbl (ul).attribute14
13684                               , p_attribute15                 => p_var_rent_lines_tbl (ul).attribute15
13685                               , x_return_msg                  => l_return_msg
13686                               , x_return_status               => l_return_status);
13687 
13688 
13689             IF l_return_msg = 'VALID'
13690             THEN
13691                x_return_status                      := fnd_api.g_ret_sts_success;
13692             ELSE
13693                x_return_status                      := fnd_api.g_ret_sts_error;
13694             END IF;
13695          END IF;
13696          */
13697 
13698         -- Below code has been added by Vivek on 11-DEC-2010
13699 
13700     IF (get_attribute_status('PN_VAR_RENTS') > 0) THEN
13701       IF NOT ((p_var_rent_lines_tbl (ul).attribute_category = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute_category IS NULL)
13702                                         AND (p_var_rent_lines_tbl (ul).attribute1 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute1 IS NULL)
13703                                         AND (p_var_rent_lines_tbl (ul).attribute2 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute2 IS NULL)
13704                                         AND (p_var_rent_lines_tbl (ul).attribute3 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute3 IS NULL)
13705                                         AND (p_var_rent_lines_tbl (ul).attribute4 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute4 IS NULL)
13706                                         AND (p_var_rent_lines_tbl (ul).attribute5 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute5 IS NULL)
13707                                         AND (p_var_rent_lines_tbl (ul).attribute6 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute6 IS NULL)
13708                                         AND (p_var_rent_lines_tbl (ul).attribute7 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute7 IS NULL)
13709                                         AND (p_var_rent_lines_tbl (ul).attribute8 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute8 IS NULL)
13710                                         AND (p_var_rent_lines_tbl (ul).attribute9 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute9 IS NULL)
13711                                         AND (p_var_rent_lines_tbl (ul).attribute10 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute10 IS NULL)
13712                                         AND (p_var_rent_lines_tbl (ul).attribute11 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute11 IS NULL)
13713                                         AND (p_var_rent_lines_tbl (ul).attribute12 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute12 IS NULL)
13714                                         AND (p_var_rent_lines_tbl (ul).attribute13 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute13 IS NULL)
13715                                         AND (p_var_rent_lines_tbl (ul).attribute14 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute14 IS NULL)
13716                                         AND (p_var_rent_lines_tbl (ul).attribute15 = pn_varen_util.g_pn_miss_char OR p_var_rent_lines_tbl (ul).attribute15 IS NULL)
13717                                 ) THEN
13718          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_RENTS'
13719                                            , p_attribute_category          => p_var_rent_lines_tbl (ul).attribute_category
13720                                            , p_attribute1                  => p_var_rent_lines_tbl (ul).attribute1
13721                                            , p_attribute2                  => p_var_rent_lines_tbl (ul).attribute2
13722                                            , p_attribute3                  => p_var_rent_lines_tbl (ul).attribute3
13723                                            , p_attribute4                  => p_var_rent_lines_tbl (ul).attribute4
13724                                            , p_attribute5                  => p_var_rent_lines_tbl (ul).attribute5
13725                                            , p_attribute6                  => p_var_rent_lines_tbl (ul).attribute6
13726                                            , p_attribute7                  => p_var_rent_lines_tbl (ul).attribute7
13727                                            , p_attribute8                  => p_var_rent_lines_tbl (ul).attribute8
13728                                            , p_attribute9                  => p_var_rent_lines_tbl (ul).attribute9
13729                                            , p_attribute10                 => p_var_rent_lines_tbl (ul).attribute10
13730                                            , p_attribute11                 => p_var_rent_lines_tbl (ul).attribute11
13731                                            , p_attribute12                 => p_var_rent_lines_tbl (ul).attribute12
13732                                            , p_attribute13                 => p_var_rent_lines_tbl (ul).attribute13
13733                                            , p_attribute14                 => p_var_rent_lines_tbl (ul).attribute14
13734                                            , p_attribute15                 => p_var_rent_lines_tbl (ul).attribute15
13735                                            , x_return_msg                  => l_return_msg
13736                                            , x_return_status               => x_return_status
13737                                             );
13738 
13739                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
13740                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13741                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : PN_VAR_RENTS Descriptive Fields Error '||l_return_msg);
13742                   fnd_msg_pub.ADD;
13743                   RAISE fnd_api.g_exc_error;
13744                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
13745                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
13746                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : PN_VAR_RENTS Descriptive Fields Error'||l_return_msg);
13747                   fnd_msg_pub.ADD;
13748                   RAISE fnd_api.g_exc_unexpected_error;
13749                END IF;
13750         END IF;
13751       END IF; -- End of attributes valitions in create var rent
13752 
13753         ------------------------End of 11-Dec-2010 DFF changes----------------------------
13754 
13755 
13756          pn_varen_util.pvt_debug
13757                      ('PN_VAREN_PVT: Update_Var_Rent: After all validations of Variable rent lines'
13758                     , 3);
13759          pn_varen_util.pvt_debug
13760             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).var_rent_id is '
13761              || p_var_rent_lines_tbl (ul).var_rent_id
13762            , 3);
13763          pn_varen_util.pvt_debug
13764             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).line_default_id is '
13765              || p_var_rent_lines_tbl (ul).line_default_id
13766            , 3);
13767          pn_varen_util.pvt_debug
13768             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).line_num is '
13769              || p_var_rent_lines_tbl (ul).line_num
13770            , 3);
13771          pn_varen_util.pvt_debug
13772             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).sales_channel_code is '
13773              || p_var_rent_lines_tbl (ul).sales_channel_code
13774            , 3);
13775          pn_varen_util.pvt_debug
13776             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).item_category_code is '
13777              || p_var_rent_lines_tbl (ul).item_category_code
13778            , 3);
13779          pn_varen_util.pvt_debug
13780             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).line_start_date is '
13781              || p_var_rent_lines_tbl (ul).line_start_date
13782            , 3);
13783          pn_varen_util.pvt_debug
13784             (   'PN_VAREN_PVT: Update_Var_Rent: Before - Value of p_var_rent_lines_tbl (ul).line_end_date is '
13785              || p_var_rent_lines_tbl (ul).line_end_date
13786            , 3);
13787 
13788          pn_varen_util.breakpoint_ext (p_var_rent_id                 => p_var_rent_lines_tbl (ul).var_rent_id
13789                                      , x_bkpt_exist                  => l_bkpt_exist
13790                                      , x_return_status               => x_return_status);
13791          pn_varen_util.pvt_debug
13792             (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_bkpt_exist after breakpoint_ext procedure is'
13793              || l_bkpt_exist
13794            , 3);
13795 
13796 
13797          IF (                                                         --x_return_status = 'S' or  OR
13798              l_bkpt_exist = 0)
13799          THEN
13800             pn_varen_util.pvt_debug
13801                ('PN_VAREN_PVT: Update_Var_Rent: Before calling update_variable_rent_lines procedure '
13802               , 3);
13803             pn_varen_util.pvt_debug
13804                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).var_rent_id is '
13805                 || p_var_rent_lines_tbl (ul).var_rent_id
13806               , 3);
13807             pn_varen_util.pvt_debug
13808                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_default_id is '
13809                 || p_var_rent_lines_tbl (ul).line_default_id
13810               , 3);
13811             pn_varen_util.pvt_debug
13812                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_num is '
13813                 || p_var_rent_lines_tbl (ul).line_num
13814               , 3);
13815             pn_varen_util.pvt_debug
13816                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).sales_channel_code is '
13817                 || p_var_rent_lines_tbl (ul).sales_channel_code
13818               , 3);
13819             pn_varen_util.pvt_debug
13820                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).item_category_code is '
13821                 || p_var_rent_lines_tbl (ul).item_category_code
13822               , 3);
13823             pn_varen_util.pvt_debug
13824                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_start_date is '
13825                 || p_var_rent_lines_tbl (ul).line_start_date
13826               , 3);
13827             pn_varen_util.pvt_debug
13828                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_end_date is '
13829                 || p_var_rent_lines_tbl (ul).line_end_date
13830               , 3);
13831 
13832 
13833             IF (   p_var_rent_lines_tbl (ul).line_default_id IS NULL
13834                 OR p_var_rent_lines_tbl (ul).line_default_id = pn_varen_util.g_pn_miss_num)
13835             THEN
13836                --pn_varen_util.pvt_debug
13837                pn_varen_util.pvt_debug
13838                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_default_id  is null'
13839                    || p_var_rent_lines_tbl (ul).line_default_id
13840                  , 3);
13841                pn_varen_util.pvt_debug
13842                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).sales_channel_code  is '
13843                    || p_var_rent_lines_tbl (ul).sales_channel_code
13844                  , 3);
13845                pn_varen_util.pvt_debug
13846                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).item_category_code  is '
13847                    || p_var_rent_lines_tbl (ul).item_category_code
13848                  , 3);
13849                pn_varen_util.pvt_debug
13850                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_start_date  is '
13851                    || p_var_rent_lines_tbl (ul).line_start_date
13852                  , 3);
13853                pn_varen_util.pvt_debug
13854                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_end_date  is '
13855                    || p_var_rent_lines_tbl (ul).line_end_date
13856                  , 3);
13857                pn_varen_util.pvt_debug
13858                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_num  is '
13859                    || p_var_rent_lines_tbl (ul).line_num
13860                  , 3);
13861                -- p_var_rent_lines_tbl (ul).line_default_id                                    :=
13862                --                                                                   l_pn_var_line_defaults.line_default_id;
13863 
13864                -- Call Create Variable Rent Lines
13865                pn_varen_util.pvt_debug
13866                    ('PN_VAREN_PVT: Update_Var_Rent: Start of insert_variable_rent_lines procedure '
13867                   , 3);
13868 
13869 -------------------------------------------------------------------------------------
13870 -- Start of Initialize before insertion of record
13871 -------------------------------------------------------------------------------------
13872                IF p_var_rent_lines_tbl (ul).line_default_id = pn_varen_util.g_pn_miss_num
13873                THEN
13874                   p_var_rent_lines_tbl (ul).line_default_id := NULL;
13875 
13876                END IF;
13877 
13878                IF p_var_rent_lines_tbl (ul).line_num = pn_varen_util.g_pn_miss_num
13879                THEN
13880                   p_var_rent_lines_tbl (ul).line_num   := NULL;
13881                END IF;
13882 
13883                IF p_var_rent_lines_tbl (ul).var_rent_id = pn_varen_util.g_pn_miss_num
13884                THEN
13885                   p_var_rent_lines_tbl (ul).var_rent_id := NULL;
13886                END IF;
13887 
13888                IF p_var_rent_lines_tbl (ul).var_rent_num = pn_varen_util.g_pn_miss_char
13889                THEN
13890                   p_var_rent_lines_tbl (ul).var_rent_num := NULL;
13891                END IF;
13892 
13893                IF p_var_rent_lines_tbl (ul).sales_channel_code = pn_varen_util.g_pn_miss_char
13894                THEN
13895                   p_var_rent_lines_tbl (ul).sales_channel_code := NULL;
13896                END IF;
13897 
13898                IF p_var_rent_lines_tbl (ul).sales_channel_meaning = pn_varen_util.g_pn_miss_char
13899                THEN
13900                   p_var_rent_lines_tbl (ul).sales_channel_meaning := NULL;
13901                END IF;
13902 
13903                IF p_var_rent_lines_tbl (ul).item_category_code = pn_varen_util.g_pn_miss_char
13904                THEN
13905                   p_var_rent_lines_tbl (ul).item_category_code := NULL;
13906                END IF;
13907 
13908                IF p_var_rent_lines_tbl (ul).item_category_meaning = pn_varen_util.g_pn_miss_char
13909                THEN
13910                   p_var_rent_lines_tbl (ul).item_category_meaning := NULL;
13911                END IF;
13912 
13913                IF p_var_rent_lines_tbl (ul).agreement_template_id = pn_varen_util.g_pn_miss_num
13914                THEN
13915                   p_var_rent_lines_tbl (ul).agreement_template_id := NULL;
13916                END IF;
13917 
13918                IF p_var_rent_lines_tbl (ul).line_start_date = pn_varen_util.g_pn_miss_date
13919                THEN
13920                   p_var_rent_lines_tbl (ul).line_start_date := NULL;
13921                END IF;
13922 
13923                IF p_var_rent_lines_tbl (ul).line_end_date = pn_varen_util.g_pn_miss_date
13924                THEN
13925                   p_var_rent_lines_tbl (ul).line_end_date := NULL;
13926                END IF;
13927 
13928                IF p_var_rent_lines_tbl (ul).processed_flag = pn_varen_util.g_pn_miss_num
13929                THEN
13930                   p_var_rent_lines_tbl (ul).processed_flag := NULL;
13931                END IF;
13932 
13933                IF p_var_rent_lines_tbl (ul).last_update_date = pn_varen_util.g_pn_miss_date
13934                THEN
13935                   p_var_rent_lines_tbl (ul).last_update_date := NULL;
13936                END IF;
13937 
13938                IF p_var_rent_lines_tbl (ul).last_updated_by = pn_varen_util.g_pn_miss_num
13939                THEN
13940                   p_var_rent_lines_tbl (ul).last_updated_by := NULL;
13941                END IF;
13942 
13943                IF p_var_rent_lines_tbl (ul).creation_date = pn_varen_util.g_pn_miss_date
13944                THEN
13945                   p_var_rent_lines_tbl (ul).creation_date := NULL;
13946                END IF;
13947 
13948                IF p_var_rent_lines_tbl (ul).created_by = pn_varen_util.g_pn_miss_num
13949                THEN
13950                   p_var_rent_lines_tbl (ul).created_by := NULL;
13951                END IF;
13952 
13953                IF p_var_rent_lines_tbl (ul).last_update_login = pn_varen_util.g_pn_miss_num
13954                THEN
13955                   p_var_rent_lines_tbl (ul).last_update_login := NULL;
13956                END IF;
13957 
13958                IF p_var_rent_lines_tbl (ul).attribute_category = pn_varen_util.g_pn_miss_char
13959                THEN
13960                   p_var_rent_lines_tbl (ul).attribute_category := NULL;
13961                END IF;
13962 
13963                IF p_var_rent_lines_tbl (ul).attribute1 = pn_varen_util.g_pn_miss_char
13964                THEN
13965                   p_var_rent_lines_tbl (ul).attribute1 := NULL;
13966                END IF;
13967 
13968                IF p_var_rent_lines_tbl (ul).attribute2 = pn_varen_util.g_pn_miss_char
13969                THEN
13970                   p_var_rent_lines_tbl (ul).attribute2 := NULL;
13971                END IF;
13972 
13973                IF p_var_rent_lines_tbl (ul).attribute3 = pn_varen_util.g_pn_miss_char
13974                THEN
13975                   p_var_rent_lines_tbl (ul).attribute3 := NULL;
13976                END IF;
13977 
13978                IF p_var_rent_lines_tbl (ul).attribute4 = pn_varen_util.g_pn_miss_char
13979                THEN
13980                   p_var_rent_lines_tbl (ul).attribute4 := NULL;
13981                END IF;
13982 
13983                IF p_var_rent_lines_tbl (ul).attribute5 = pn_varen_util.g_pn_miss_char
13984                THEN
13985                   p_var_rent_lines_tbl (ul).attribute5 := NULL;
13986                END IF;
13987 
13988                IF p_var_rent_lines_tbl (ul).attribute6 = pn_varen_util.g_pn_miss_char
13989                THEN
13990                   p_var_rent_lines_tbl (ul).attribute6 := NULL;
13991                END IF;
13992 
13993                IF p_var_rent_lines_tbl (ul).attribute7 = pn_varen_util.g_pn_miss_char
13994                THEN
13995                   p_var_rent_lines_tbl (ul).attribute7 := NULL;
13996                END IF;
13997 
13998                IF p_var_rent_lines_tbl (ul).attribute8 = pn_varen_util.g_pn_miss_char
13999                THEN
14000                   p_var_rent_lines_tbl (ul).attribute8 := NULL;
14001                END IF;
14002 
14003                IF p_var_rent_lines_tbl (ul).attribute9 = pn_varen_util.g_pn_miss_char
14004                THEN
14005                   p_var_rent_lines_tbl (ul).attribute9 := NULL;
14006                END IF;
14007 
14008                IF p_var_rent_lines_tbl (ul).attribute10 = pn_varen_util.g_pn_miss_char
14009                THEN
14010                   p_var_rent_lines_tbl (ul).attribute10 := NULL;
14011                END IF;
14012 
14013                IF p_var_rent_lines_tbl (ul).attribute11 = pn_varen_util.g_pn_miss_char
14014                THEN
14015                   p_var_rent_lines_tbl (ul).attribute11 := NULL;
14016                END IF;
14017 
14018                IF p_var_rent_lines_tbl (ul).attribute12 = pn_varen_util.g_pn_miss_char
14019                THEN
14020                   p_var_rent_lines_tbl (ul).attribute12 := NULL;
14021                END IF;
14022 
14023                IF p_var_rent_lines_tbl (ul).attribute13 = pn_varen_util.g_pn_miss_char
14024                THEN
14025                   p_var_rent_lines_tbl (ul).attribute13 := NULL;
14026                END IF;
14027 
14028                IF p_var_rent_lines_tbl (ul).attribute14 = pn_varen_util.g_pn_miss_char
14029                THEN
14030                   p_var_rent_lines_tbl (ul).attribute14 := NULL;
14031                END IF;
14032 
14033                IF p_var_rent_lines_tbl (ul).attribute15 = pn_varen_util.g_pn_miss_char
14034                THEN
14035                   p_var_rent_lines_tbl (ul).attribute15 := NULL;
14036                END IF;
14037 
14038                ---------
14039                -- End
14040                ---------
14041 
14042                insert_variable_rent_lines
14043                                          (p_variable_rent_lines_rec_type => p_var_rent_lines_tbl (ul)
14044                                         , x_return_status               => x_return_status);
14045                pn_varen_util.pvt_debug
14046                   (   'PN_VAREN_PVT: Update_Var_Rent: After Insertion of VRA Line, line_default_id is '
14047                    || p_var_rent_lines_tbl (ul).var_rent_id
14048                  , 3);
14049                --pn_varen_util.pvt_debug
14050                pn_varen_util.pvt_debug
14051                   (   'PN_VAREN_PVT: Update_Var_Rent: Status of insert_variable_rent_lines procedure is '
14052                    || x_return_status
14053                  , 3);
14054                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
14055                THEN
14056                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14057                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent: INSERT_VARIABLE_RENT_LINES procedure returned error');
14058                   fnd_msg_pub.ADD;
14059                   RAISE fnd_api.g_exc_error;
14060                END IF;
14061             ELSE
14062 
14063                --pn_varen_util.pvt_debug
14064                pn_varen_util.pvt_debug
14065                   ('PN_VAREN_PVT: Update_Var_Rent: Value of p_var_rent_lines_tbl (ul).line_default_id  is not null'
14066                  , 3);
14067                pn_varen_util.pvt_debug
14068                   ('PN_VAREN_PVT: Update_Var_Rent: Start of update_variable_rent_lines procedure '
14069                  , 3);
14070                update_variable_rent_lines
14071                                         (p_variable_rent_lines_rec_type => p_var_rent_lines_tbl (ul)
14072                                        , x_return_status               => x_return_status);
14073                pn_varen_util.pvt_debug
14074                   (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_variable_rent_lines procedure is '
14075                    || x_return_status
14076                  , 3);
14077                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
14078                THEN
14079                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14080                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent: UPDATE_VARIABLE_RENT_LINES procedure returned error');
14081                   fnd_msg_pub.ADD;
14082                   RAISE fnd_api.g_exc_error;
14083                END IF;
14084             END IF;                              --p_var_rent_lines_tbl (ul).line_default_id IS NULL
14085          END IF;
14086            --END LOOP;
14087       --END IF;
14088       END LOOP;
14089    END IF;                                                           -- p_var_rent_lines_tbl.count>0
14090 
14091    --CLOSE c_pn_var_line_defaults;
14092    IF     p_breakpoint_header_tbl.COUNT > 0
14093       AND l_undo_periods <> 'Y'
14094    THEN
14095       FOR ubk IN p_breakpoint_header_tbl.FIRST .. p_breakpoint_header_tbl.LAST
14096       LOOP
14097          l_pn_var_bkhd_defaults:=NULL;
14098          OPEN c_pn_var_bkhd_defaults (p_breakpoint_header_tbl (ubk).bkhd_default_id
14099                                     , p_breakpoint_header_tbl (ubk).var_rent_id);
14100 
14101          FETCH c_pn_var_bkhd_defaults
14102          INTO  l_pn_var_bkhd_defaults;
14103 
14104          CLOSE c_pn_var_bkhd_defaults;
14105 
14106            --IF (c_pn_var_bkhd_defaults%NOTFOUND)
14107            --THEN
14108             --x_return_status                                                              := fnd_api.g_ret_sts_error;
14109          --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_bkhd_defaults not found'
14110          --        , 3
14111          --         );
14112          --  ELSE
14113          --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_bkhd_defaults found'
14114          --        , 3
14115          --         );
14116          --pn_varen_util.pvt_debug
14117          --   (   'PN_VAREN_PVT: Update_Var_Rent: After the cursor c_pn_var_bkhd_defaults is open, value of p_upd_var_rent_rec.var_rent_id is '
14118          --    || p_upd_var_rent_rec.var_rent_id
14119          --  , 3
14120          --   );
14121 
14122          --------------------------------------------------------------------------------
14123 -- Initialize Update Breakpoint Headers
14124 -------------------------------------------------------------------------------
14125     --FOR ubk IN p_breakpoint_header_tbl.FIRST .. p_breakpoint_header_tbl.LAST
14126     --LOOP
14127          pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Inside Breakpoint Headers Loop'
14128                                 , 3);
14129 
14130          IF (   p_breakpoint_header_tbl (ubk).bkhd_detail_num IS NULL
14131              OR p_breakpoint_header_tbl (ubk).bkhd_detail_num = pn_varen_util.g_pn_miss_num)
14132          THEN
14133             p_breakpoint_header_tbl (ubk).bkhd_detail_num := l_pn_var_bkhd_defaults.bkhd_detail_num;
14134          END IF;
14135 
14136          IF (   p_breakpoint_header_tbl (ubk).line_default_id IS NULL
14137              OR p_breakpoint_header_tbl (ubk).line_default_id = pn_varen_util.g_pn_miss_num)
14138          THEN
14139             p_breakpoint_header_tbl (ubk).line_default_id := l_pn_var_bkhd_defaults.line_default_id;
14140          END IF;
14141 
14142          IF (   p_breakpoint_header_tbl (ubk).bkhd_start_date IS NULL
14143              OR p_breakpoint_header_tbl (ubk).bkhd_start_date = pn_varen_util.g_pn_miss_date)
14144          THEN
14145             p_breakpoint_header_tbl (ubk).bkhd_start_date := l_pn_var_bkhd_defaults.bkhd_start_date;
14146          END IF;
14147 
14148          IF (   p_breakpoint_header_tbl (ubk).bkhd_end_date IS NULL
14149              OR p_breakpoint_header_tbl (ubk).bkhd_end_date = pn_varen_util.g_pn_miss_date)
14150          THEN
14151             p_breakpoint_header_tbl (ubk).bkhd_end_date := l_pn_var_bkhd_defaults.bkhd_end_date;
14152          END IF;
14153 
14154 --------------------------------------------------------------------------------
14155 --BREAK_TYPE validation
14156 --------------------------------------------------------------------------------
14157          IF    (    p_breakpoint_header_tbl (ubk).break_type_code IS NOT NULL
14158                 AND p_breakpoint_header_tbl (ubk).break_type_code <> pn_varen_util.g_pn_miss_char)
14159             OR (    p_breakpoint_header_tbl (ubk).break_type_meaning IS NOT NULL
14160                 AND p_breakpoint_header_tbl (ubk).break_type_meaning <> pn_varen_util.g_pn_miss_char)
14161          THEN
14162             pn_varen_util.pvt_debug
14163                ('PN_VAREN_PVT: Update_Var_Rent: Calling BREAK_TYPE  Validation Lookup - Inside the Loop'
14164               , 3);
14165             pn_varen_util.pvt_debug
14166                                    ('PN_VAREN_PVT: Update_Var_Rent: Calling BREAK_TYPE Validation'
14167                                   , 3);
14168             pn_varen_util.validate_lookups
14169                               (p_lookup_type                 => g_break_type
14170                              , x_lookup_meaning              => p_breakpoint_header_tbl (ubk).break_type_meaning
14171                              , x_lookup_code                 => p_breakpoint_header_tbl (ubk).break_type_code
14172                              , x_return_status               => x_return_status);
14173             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Meaning :'
14174                                      || p_breakpoint_header_tbl (ubk).break_type_meaning
14175                                    , 3);
14176             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Code :'
14177                                      || p_breakpoint_header_tbl (ubk).break_type_code
14178                                    , 3);
14179             pn_varen_util.pvt_debug
14180                                 (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE validation status :'
14181                                  || x_return_status
14182                                , 3);
14183 
14184             IF (x_return_status = fnd_api.g_ret_sts_error)
14185             THEN
14186                --
14187                fnd_message.set_name ('PN', 'PN_VAR_BKHD_BRK_TY');
14188                --x_return_status                                                              := fnd_api.g_ret_sts_error;
14189                pn_varen_util.pvt_debug
14190                           (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Meaning Expected Error :'
14191                            || p_breakpoint_header_tbl (ubk).break_type_meaning
14192                          , 3);
14193                pn_varen_util.pvt_debug
14194                                ('PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Lookup Validation Error'
14195                               , 3);
14196                fnd_msg_pub.ADD;
14197                RAISE fnd_api.g_exc_error;
14198             --
14199             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14200             THEN
14201                --
14202                fnd_message.set_name ('PN', 'PN_VAR_BKHD_BRK_TY');
14203                --x_return_status                                                              := fnd_api.g_ret_sts_unexp_error;
14204                pn_varen_util.pvt_debug
14205                       (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE  Meaning Un-Expected Error :'
14206                        || p_breakpoint_header_tbl (ubk).break_type_meaning
14207                      , 3);
14208                pn_varen_util.pvt_debug
14209                     ('PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Lookup Validation Unexpected Error'
14210                    , 3);
14211                fnd_msg_pub.ADD;
14212                RAISE fnd_api.g_exc_unexpected_error;
14213             --
14214             ELSE
14215                x_return_status                      := fnd_api.g_ret_sts_success;
14216                pn_varen_util.pvt_debug
14217                                     (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Code Success :'
14218                                      || p_breakpoint_header_tbl (ubk).break_type_code
14219                                    , 3);
14220                pn_varen_util.pvt_debug
14221                              ('PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Lookup Validation Success'
14222                             , 3);
14223             END IF;
14224          ELSE
14225             p_breakpoint_header_tbl (ubk).break_type_code := l_pn_var_bkhd_defaults.break_type;
14226             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAK_TYPE Code :'
14227                                      || p_breakpoint_header_tbl (ubk).break_type_code
14228                                    , 3);
14229             pn_varen_util.pvt_debug
14230                            (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_bkhd_defaults.break_type :'
14231                             || l_pn_var_bkhd_defaults.break_type
14232                           , 3);
14233          END IF;
14234 
14235          IF (   p_breakpoint_header_tbl (ubk).natural_break_rate IS NULL
14236              OR p_breakpoint_header_tbl (ubk).natural_break_rate = pn_varen_util.g_pn_miss_num)
14237          THEN
14238             p_breakpoint_header_tbl (ubk).natural_break_rate :=
14239                                                           l_pn_var_bkhd_defaults.natural_break_rate;
14240          END IF;
14241 
14242 ------------------------------------
14243 --  Breakpoint Type Validation
14244 ------------------------------------
14245          IF    (    p_breakpoint_header_tbl (ubk).breakpoint_type_code IS NOT NULL
14246                 AND p_breakpoint_header_tbl (ubk).breakpoint_type_code <>
14247                                                                         pn_varen_util.g_pn_miss_char)
14248             OR (    p_breakpoint_header_tbl (ubk).breakpoint_type_meaning IS NOT NULL
14249                 AND p_breakpoint_header_tbl (ubk).breakpoint_type_meaning <>
14250                                                                         pn_varen_util.g_pn_miss_char)
14251          THEN
14252             pn_varen_util.pvt_debug
14253                ('PN_VAREN_PVT: Update_Var_Rent: Calling BREAKPOINT_TYPE  Validation Lookup - Inside the Loop'
14254               , 3);
14255             pn_varen_util.pvt_debug
14256                               ('PN_VAREN_PVT: Update_Var_Rent: Calling BREAKPOINT_TYPE Validation'
14257                              , 3);
14258             pn_varen_util.validate_lookups
14259                          (p_lookup_type                 => g_breakpoint_type
14260                         , x_lookup_meaning              => p_breakpoint_header_tbl (ubk).breakpoint_type_meaning
14261                         , x_lookup_code                 => p_breakpoint_header_tbl (ubk).breakpoint_type_code
14262                         , x_return_status               => x_return_status);
14263             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Meaning :'
14264                                      || p_breakpoint_header_tbl (ubk).breakpoint_type_meaning
14265                                    , 3);
14266             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE  Code :'
14267                                      || p_breakpoint_header_tbl (ubk).breakpoint_type_code
14268                                    , 3);
14269             pn_varen_util.pvt_debug
14270                            (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE validation status :'
14271                             || x_return_status
14272                           , 3);
14273 
14274             IF (x_return_status = fnd_api.g_ret_sts_error)
14275             THEN
14276                --
14277                fnd_message.set_name ('PN', 'PN_VAR_BKHD_BKPT_TY');
14278                x_return_status                      := fnd_api.g_ret_sts_error;
14279                pn_varen_util.pvt_debug
14280                      (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Meaning Expected Error :'
14281                       || p_breakpoint_header_tbl (ubk).breakpoint_type_meaning
14282                     , 3);
14283                pn_varen_util.pvt_debug
14284                           ('PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Lookup Validation Error'
14285                          , 3);
14286                fnd_msg_pub.ADD;
14287                RAISE fnd_api.g_exc_error;
14288             --
14289             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
14290             THEN
14291                --
14292                fnd_message.set_name ('PN', 'PN_VAR_BKHD_BKPT_TY');
14293                --x_return_status                                                              := fnd_api.g_ret_sts_unexp_error;
14294                pn_varen_util.pvt_debug
14295                   (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE  Meaning Un-Expected Error :'
14296                    || p_breakpoint_header_tbl (ubk).breakpoint_type_meaning
14297                  , 3);
14298                pn_varen_util.pvt_debug
14299                   ('PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Lookup Validation Unexpected Error'
14300                  , 3);
14301                fnd_msg_pub.ADD;
14302                RAISE fnd_api.g_exc_unexpected_error;
14303             --
14304             ELSE
14305                x_return_status                      := fnd_api.g_ret_sts_success;
14306                pn_varen_util.pvt_debug
14307                   (   'PN_VAREN_PVT: Update_Var_Rent: pn_varen_pvt-BREAKPOINT_TYPE Code Success :'
14308                    || p_breakpoint_header_tbl (ubk).breakpoint_type_code
14309                  , 3);
14310                pn_varen_util.pvt_debug
14311                         ('PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Lookup Validation Success'
14312                        , 3);
14313             END IF;
14314          ELSE
14315             p_breakpoint_header_tbl (ubk).breakpoint_type_code :=
14316                                                              l_pn_var_bkhd_defaults.breakpoint_type;
14317             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE Code :'
14318                                      || p_breakpoint_header_tbl (ubk).breakpoint_type_code
14319                                    , 3);
14320             pn_varen_util.pvt_debug
14321                       (   'PN_VAREN_PVT: Update_Var_Rent: l_pn_var_bkhd_defaults.breakpoint_type :'
14322                        || l_pn_var_bkhd_defaults.breakpoint_type
14323                      , 3);
14324          END IF;
14325 
14326 -----------------------------------------------------------------------
14327 --Conditional Validation of  Beakpoint Type  with Break type Procedure
14328 ------------------------------------------------------------------------
14329          IF p_breakpoint_header_tbl (ubk).break_type_code = 'NATURAL'
14330          THEN
14331             IF p_breakpoint_header_tbl (ubk).breakpoint_type_code <> 'FLAT'
14332             THEN
14333                fnd_message.set_name ('PN', 'PN_VAR_BKHD_BT_BKPT_TY');
14334                pn_varen_util.pvt_debug
14335                   (   'PN_VAREN_PVT: Update_Var_Rent: Provide a correct combination of BREAKPOINT_TYPE_code and Break Type code - Validation Error :'
14336                    || p_breakpoint_header_tbl (ubk).breakpoint_type_code
14337                  , 3);
14338                fnd_msg_pub.ADD;
14339                RAISE fnd_api.g_exc_error;
14340             --
14341             ELSE
14342                pn_varen_util.pvt_debug
14343                   ('PN_VAREN_PVT: Update_Var_Rent: Combination of BREAKPOINT_TYPE_code and Break Type code Validation success'
14344                  , 3);
14345             END IF;
14346 
14347             pn_varen_util.pvt_debug
14348                               (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE_code IS NATURAL '
14349                                || p_breakpoint_header_tbl (ubk).break_type_code
14350                              , 3);
14351          ELSIF p_breakpoint_header_tbl (ubk).break_type_code = 'ARTIFICIAL'
14352          THEN
14353             -- If p_breakpoint_header_tbl (ubk)..break_type_code = 'ARTIFICIAL' then natural_break_rate should be null
14354             p_breakpoint_header_tbl (ubk).natural_break_rate := NULL;
14355             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: BREAKPOINT_TYPE_code is '
14356                                      || p_breakpoint_header_tbl (ubk).break_type_code
14357                                    , 3);
14358             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Natural break rate is '
14359                                      || p_breakpoint_header_tbl (ubk).natural_break_rate
14360                                    , 3);
14361          END IF;
14362 
14363          IF (   p_breakpoint_header_tbl (ubk).var_rent_id IS NULL
14364              OR p_breakpoint_header_tbl (ubk).var_rent_id = pn_varen_util.g_pn_miss_num)
14365          THEN
14366             p_breakpoint_header_tbl (ubk).var_rent_id := l_pn_var_bkhd_defaults.var_rent_id;
14367          END IF;
14368 
14369          IF (   p_breakpoint_header_tbl (ubk).last_update_date IS NULL
14370              OR p_breakpoint_header_tbl (ubk).last_update_date = pn_varen_util.g_pn_miss_date)
14371          THEN
14372             p_breakpoint_header_tbl (ubk).last_update_date := g_sysdate;
14373          END IF;
14374 
14375          IF (   p_breakpoint_header_tbl (ubk).last_updated_by IS NULL
14376              OR p_breakpoint_header_tbl (ubk).last_updated_by = pn_varen_util.g_pn_miss_num)
14377          THEN
14378             p_breakpoint_header_tbl (ubk).last_updated_by := g_user_id;
14379          END IF;
14380 
14381          IF (   p_breakpoint_header_tbl (ubk).creation_date IS NULL
14382              OR p_breakpoint_header_tbl (ubk).creation_date = pn_varen_util.g_pn_miss_date)
14383          THEN
14384             p_breakpoint_header_tbl (ubk).creation_date := l_pn_var_bkhd_defaults.creation_date;
14385          END IF;
14386 
14387          IF (   p_breakpoint_header_tbl (ubk).created_by IS NULL
14388              OR p_breakpoint_header_tbl (ubk).created_by = pn_varen_util.g_pn_miss_num)
14389          THEN
14390             p_breakpoint_header_tbl (ubk).created_by := l_pn_var_bkhd_defaults.created_by;
14391          END IF;
14392 
14393          IF (   p_breakpoint_header_tbl (ubk).last_update_login IS NULL
14394              OR p_breakpoint_header_tbl (ubk).last_update_login = pn_varen_util.g_pn_miss_num)
14395          THEN
14396             p_breakpoint_header_tbl (ubk).last_update_login :=
14397                                                            l_pn_var_bkhd_defaults.last_update_login;
14398          END IF;
14399 
14400          IF (   p_breakpoint_header_tbl (ubk).attribute_category IS NULL
14401              OR p_breakpoint_header_tbl (ubk).attribute_category = pn_varen_util.g_pn_miss_char)
14402          THEN
14403             p_breakpoint_header_tbl (ubk).attribute_category :=
14404                                                           l_pn_var_bkhd_defaults.attribute_category;
14405          END IF;
14406 
14407          IF (   p_breakpoint_header_tbl (ubk).attribute1 IS NULL
14408              OR p_breakpoint_header_tbl (ubk).attribute1 = pn_varen_util.g_pn_miss_char)
14409          THEN
14410             p_breakpoint_header_tbl (ubk).attribute1 := l_pn_var_bkhd_defaults.attribute1;
14411          END IF;
14412 
14413          IF (   p_breakpoint_header_tbl (ubk).attribute2 IS NULL
14414              OR p_breakpoint_header_tbl (ubk).attribute2 = pn_varen_util.g_pn_miss_char)
14415          THEN
14416             p_breakpoint_header_tbl (ubk).attribute2 := l_pn_var_bkhd_defaults.attribute2;
14417          END IF;
14418 
14419          IF (   p_breakpoint_header_tbl (ubk).attribute3 IS NULL
14420              OR p_breakpoint_header_tbl (ubk).attribute3 = pn_varen_util.g_pn_miss_char)
14421          THEN
14422             p_breakpoint_header_tbl (ubk).attribute3 := l_pn_var_bkhd_defaults.attribute3;
14423          END IF;
14424 
14425          IF (   p_breakpoint_header_tbl (ubk).attribute4 IS NULL
14426              OR p_breakpoint_header_tbl (ubk).attribute4 = pn_varen_util.g_pn_miss_char)
14427          THEN
14428             p_breakpoint_header_tbl (ubk).attribute4 := l_pn_var_bkhd_defaults.attribute4;
14429          END IF;
14430 
14431          IF (   p_breakpoint_header_tbl (ubk).attribute5 IS NULL
14432              OR p_breakpoint_header_tbl (ubk).attribute5 = pn_varen_util.g_pn_miss_char)
14433          THEN
14434             p_breakpoint_header_tbl (ubk).attribute5 := l_pn_var_bkhd_defaults.attribute5;
14435          END IF;
14436 
14437          IF (   p_breakpoint_header_tbl (ubk).attribute6 IS NULL
14438              OR p_breakpoint_header_tbl (ubk).attribute6 = pn_varen_util.g_pn_miss_char)
14439          THEN
14440             p_breakpoint_header_tbl (ubk).attribute6 := l_pn_var_bkhd_defaults.attribute6;
14441          END IF;
14442 
14443          IF (   p_breakpoint_header_tbl (ubk).attribute7 IS NULL
14444              OR p_breakpoint_header_tbl (ubk).attribute7 = pn_varen_util.g_pn_miss_char)
14445          THEN
14446             p_breakpoint_header_tbl (ubk).attribute7 := l_pn_var_bkhd_defaults.attribute7;
14447          END IF;
14448 
14449          IF (   p_breakpoint_header_tbl (ubk).attribute8 IS NULL
14450              OR p_breakpoint_header_tbl (ubk).attribute8 = pn_varen_util.g_pn_miss_char)
14451          THEN
14452             p_breakpoint_header_tbl (ubk).attribute8 := l_pn_var_bkhd_defaults.attribute8;
14453          END IF;
14454 
14455          IF (   p_breakpoint_header_tbl (ubk).attribute9 IS NULL
14456              OR p_breakpoint_header_tbl (ubk).attribute9 = pn_varen_util.g_pn_miss_char)
14457          THEN
14458             p_breakpoint_header_tbl (ubk).attribute9 := l_pn_var_bkhd_defaults.attribute9;
14459          END IF;
14460 
14461          IF (   p_breakpoint_header_tbl (ubk).attribute10 IS NULL
14462              OR p_breakpoint_header_tbl (ubk).attribute10 = pn_varen_util.g_pn_miss_char)
14463          THEN
14464             p_breakpoint_header_tbl (ubk).attribute10 := l_pn_var_bkhd_defaults.attribute10;
14465          END IF;
14466 
14467          IF (   p_breakpoint_header_tbl (ubk).attribute11 IS NULL
14468              OR p_breakpoint_header_tbl (ubk).attribute11 = pn_varen_util.g_pn_miss_char)
14469          THEN
14470             p_breakpoint_header_tbl (ubk).attribute11 := l_pn_var_bkhd_defaults.attribute11;
14471          END IF;
14472 
14473          IF (   p_breakpoint_header_tbl (ubk).attribute12 IS NULL
14474              OR p_breakpoint_header_tbl (ubk).attribute12 = pn_varen_util.g_pn_miss_char)
14475          THEN
14476             p_breakpoint_header_tbl (ubk).attribute12 := l_pn_var_bkhd_defaults.attribute12;
14477          END IF;
14478 
14479          IF (   p_breakpoint_header_tbl (ubk).attribute13 IS NULL
14480              OR p_breakpoint_header_tbl (ubk).attribute13 = pn_varen_util.g_pn_miss_char)
14481          THEN
14482             p_breakpoint_header_tbl (ubk).attribute13 := l_pn_var_bkhd_defaults.attribute13;
14483          END IF;
14484 
14485          IF (   p_breakpoint_header_tbl (ubk).attribute14 IS NULL
14486              OR p_breakpoint_header_tbl (ubk).attribute14 = pn_varen_util.g_pn_miss_char)
14487          THEN
14488             p_breakpoint_header_tbl (ubk).attribute14 := l_pn_var_bkhd_defaults.attribute14;
14489          END IF;
14490 
14491          IF (   p_breakpoint_header_tbl (ubk).attribute15 IS NULL
14492              OR p_breakpoint_header_tbl (ubk).attribute15 = pn_varen_util.g_pn_miss_char)
14493          THEN
14494             p_breakpoint_header_tbl (ubk).attribute5 := l_pn_var_bkhd_defaults.attribute15;
14495          END IF;
14496 
14497 -------------------------------------------------------------------------------------------
14498 -- Validating Descriptive Flex fields
14499 -------------------------------------------------------------------------------------------
14500         -- Below code has been commented by Vivek on 11-DEC-2010
14501         /*
14502          IF (p_breakpoint_header_tbl (ubk).attribute_category IS NOT NULL)
14503          THEN
14504             pn_varen_util.validate_flex_fields
14505                           (p_desc_flex_name              => g_bkhd_desc_name
14506                          , p_attribute_category          => p_breakpoint_header_tbl (ubk).attribute_category
14507                          , p_attribute1                  => p_breakpoint_header_tbl (ubk).attribute1
14508                          , p_attribute2                  => p_breakpoint_header_tbl (ubk).attribute2
14509                          , p_attribute3                  => p_breakpoint_header_tbl (ubk).attribute3
14510                          , p_attribute4                  => p_breakpoint_header_tbl (ubk).attribute4
14511                          , p_attribute5                  => p_breakpoint_header_tbl (ubk).attribute5
14512                          , p_attribute6                  => p_breakpoint_header_tbl (ubk).attribute6
14513                          , p_attribute7                  => p_breakpoint_header_tbl (ubk).attribute7
14514                          , p_attribute8                  => p_breakpoint_header_tbl (ubk).attribute8
14515                          , p_attribute9                  => p_breakpoint_header_tbl (ubk).attribute9
14516                          , p_attribute10                 => p_breakpoint_header_tbl (ubk).attribute10
14517                          , p_attribute11                 => p_breakpoint_header_tbl (ubk).attribute11
14518                          , p_attribute12                 => p_breakpoint_header_tbl (ubk).attribute12
14519                          , p_attribute13                 => p_breakpoint_header_tbl (ubk).attribute13
14520                          , p_attribute14                 => p_breakpoint_header_tbl (ubk).attribute14
14521                          , p_attribute15                 => p_breakpoint_header_tbl (ubk).attribute15
14522                          , x_return_msg                  => l_return_msg
14523                          , x_return_status               => l_return_status);
14524 
14525             IF l_return_msg = 'VALID'
14526             THEN
14527                x_return_status                      := fnd_api.g_ret_sts_success;
14528             ELSE
14529                x_return_status                      := fnd_api.g_ret_sts_error;
14530             END IF;
14531          END IF;
14532         */
14533 
14534 
14535         -- Below code has been added by Vivek on 11-DEC-2010
14536 
14537     IF (get_attribute_status('PN_VAR_BKPTS_HEAD') > 0) THEN
14538       IF NOT ((p_breakpoint_header_tbl (ubk).attribute_category = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute_category IS NULL)
14539                                         AND (p_breakpoint_header_tbl (ubk).attribute1 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute1 IS NULL)
14540                                         AND (p_breakpoint_header_tbl (ubk).attribute2 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute2 IS NULL)
14541                                         AND (p_breakpoint_header_tbl (ubk).attribute3 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute3 IS NULL)
14542                                         AND (p_breakpoint_header_tbl (ubk).attribute4 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute4 IS NULL)
14543                                         AND (p_breakpoint_header_tbl (ubk).attribute5 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute5 IS NULL)
14544                                         AND (p_breakpoint_header_tbl (ubk).attribute6 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute6 IS NULL)
14545                                         AND (p_breakpoint_header_tbl (ubk).attribute7 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute7 IS NULL)
14546                                         AND (p_breakpoint_header_tbl (ubk).attribute8 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute8 IS NULL)
14547                                         AND (p_breakpoint_header_tbl (ubk).attribute9 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute9 IS NULL)
14548                                         AND (p_breakpoint_header_tbl (ubk).attribute10 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute10 IS NULL)
14549                                         AND (p_breakpoint_header_tbl (ubk).attribute11 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute11 IS NULL)
14550                                         AND (p_breakpoint_header_tbl (ubk).attribute12 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute12 IS NULL)
14551                                         AND (p_breakpoint_header_tbl (ubk).attribute13 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute13 IS NULL)
14552                                         AND (p_breakpoint_header_tbl (ubk).attribute14 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute14 IS NULL)
14553                                         AND (p_breakpoint_header_tbl (ubk).attribute15 = pn_varen_util.g_pn_miss_char OR p_breakpoint_header_tbl (ubk).attribute15 IS NULL)
14554                                 ) THEN
14555          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_BKPTS_HEAD'
14556                                            , p_attribute_category          => p_breakpoint_header_tbl (ubk).attribute_category
14557                                            , p_attribute1                  => p_breakpoint_header_tbl (ubk).attribute1
14558                                            , p_attribute2                  => p_breakpoint_header_tbl (ubk).attribute2
14559                                            , p_attribute3                  => p_breakpoint_header_tbl (ubk).attribute3
14560                                            , p_attribute4                  => p_breakpoint_header_tbl (ubk).attribute4
14561                                            , p_attribute5                  => p_breakpoint_header_tbl (ubk).attribute5
14562                                            , p_attribute6                  => p_breakpoint_header_tbl (ubk).attribute6
14563                                            , p_attribute7                  => p_breakpoint_header_tbl (ubk).attribute7
14564                                            , p_attribute8                  => p_breakpoint_header_tbl (ubk).attribute8
14565                                            , p_attribute9                  => p_breakpoint_header_tbl (ubk).attribute9
14566                                            , p_attribute10                 => p_breakpoint_header_tbl (ubk).attribute10
14567                                            , p_attribute11                 => p_breakpoint_header_tbl (ubk).attribute11
14568                                            , p_attribute12                 => p_breakpoint_header_tbl (ubk).attribute12
14569                                            , p_attribute13                 => p_breakpoint_header_tbl (ubk).attribute13
14570                                            , p_attribute14                 => p_breakpoint_header_tbl (ubk).attribute14
14571                                            , p_attribute15                 => p_breakpoint_header_tbl (ubk).attribute15
14572                                            , x_return_msg                  => l_return_msg
14573                                            , x_return_status               => x_return_status
14574                                             );
14575 
14576                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
14577                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14578                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : PN_VAR_BKPTS_HEAD Descriptive Fields Error '||l_return_msg);
14579                   fnd_msg_pub.ADD;
14580                   RAISE fnd_api.g_exc_error;
14581                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
14582                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14583                   fnd_message.set_token ('ERR_MSG','UPDATE_VAR_RENT : PN_VAR_BKPTS_HEAD Descriptive Fields Error '|| l_return_msg);
14584                   fnd_msg_pub.ADD;
14585                   RAISE fnd_api.g_exc_unexpected_error;
14586                END IF;
14587         END IF;
14588       END IF; -- End of attributes validations in PN_VAR_BKPTS_HEAD
14589 
14590         ------------------------End of 11-Dec-2010 DFF changes----------------------------
14591 
14592          pn_varen_util.pvt_debug
14593                       (   'PN_VAREN_PVT: Update_Var_Rent: Breakpoint header validations status is '
14594                        || x_return_status
14595                      , 3);
14596          pn_varen_util.pvt_debug
14597                  ('PN_VAREN_PVT: Update_Var_Rent: Calling Generate Breakpoint existence procedure '
14598                 , 3);
14599          pn_varen_util.breakpoint_ext (p_var_rent_id                 => p_breakpoint_header_tbl (ubk).var_rent_id
14600                                      , x_bkpt_exist                  => l_bkpt_exist
14601                                      , x_return_status               => x_return_status);
14602          pn_varen_util.pvt_debug
14603             (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_bkpt_exist from breakpoint_ext procedure is'
14604              || l_bkpt_exist
14605            , 3);
14606          pn_varen_util.pvt_debug
14607                            (   'PN_VAREN_PVT: Update_Var_Rent: Status of breakpoint_ext procedure '
14608                             || x_return_status
14609                           , 3);
14610          -- Below code has been added by Vivek on 10-DEC-2010
14611          IF    p_breakpoint_header_tbl (ubk).bkhd_start_date <l_pn_var_rents_rec.commencement_date
14612             OR p_breakpoint_header_tbl (ubk).bkhd_end_date >l_pn_var_rents_rec.termination_date
14613          THEN
14614 
14615                                   --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
14616                                   fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
14617                                   fnd_message.set_token('ERR_MSG', 'Please review each breakpoint header dates and remove any overlap with the variable rent dates.');
14618                                   fnd_msg_pub.ADD;
14619                                   RAISE fnd_api.g_exc_error;
14620          END IF;
14621 
14622                         l_date_range_count := 0;
14623                         BEGIN
14624 
14625 
14626                           SELECT COUNT(1)
14627                           INTO   l_date_range_count
14628                           FROM   pn_var_bkhd_defaults_all
14629                           WHERE  var_rent_id = p_breakpoint_header_tbl (ubk).var_rent_id
14630                           AND    bkhd_default_id<> p_breakpoint_header_tbl (ubk).bkhd_default_id
14631                           AND    line_default_id = p_breakpoint_header_tbl (ubk).line_default_id
14632                           AND   (bkhd_start_date <= p_breakpoint_header_tbl (ubk).bkhd_end_date  AND   bkhd_end_date >= p_breakpoint_header_tbl (ubk).bkhd_start_date);
14633 
14634 
14635                         EXCEPTION
14636                           WHEN OTHERS THEN
14637                                   pn_varen_util.pvt_debug('PN_VAREN_PVT:Remove any overlap in the breakpoint Headers',3);
14638                         END;
14639 
14640                           IF(NVL(l_date_range_count,0) > 0) THEN
14641                                   --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
14642                                   fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
14643                                   fnd_message.set_token('ERR_MSG', 'Please review each breakpoint component and remove any overlap in the breakpoint Header dates.');
14644                                   fnd_msg_pub.ADD;
14645                                   RAISE fnd_api.g_exc_error;
14646                           END IF;
14647 
14648          -- Below if block has been added by Vivek on 09-DEC-2010
14649          IF (    x_return_status = 'S'
14650              AND l_bkpt_exist <> 0)
14651          THEN
14652             -- Below if block has been uncommented by Vivek on 09-DEC-2010
14653             IF (   p_breakpoint_header_tbl (ubk).bkhd_default_id IS NULL
14654                 OR p_breakpoint_header_tbl (ubk).bkhd_default_id = pn_varen_util.g_pn_miss_num)
14655             THEN
14656                insert_breakpoint_headers
14657                                      (p_breakpoint_header_rec_type  => p_breakpoint_header_tbl (ubk)
14658                                     , x_return_status               => x_return_status);
14659                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
14660                THEN
14661                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14662                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:INSERT_BREAKPOINT_HEADERS procedure returned error');
14663                   fnd_msg_pub.ADD;
14664                   RAISE fnd_api.g_exc_error;
14665                END IF;
14666             END IF;
14667          END IF;
14668 
14669          IF (    x_return_status = 'S'
14670              AND l_bkpt_exist = 0)
14671          THEN
14672             p_breakpoint_header_tbl (ubk).bkhd_default_id := l_pn_var_bkhd_defaults.bkhd_default_id;
14673 
14674             -- Below IF condition has been added by Vivek on 09-DEC-2010
14675             IF (    p_breakpoint_header_tbl (ubk).bkhd_default_id IS NOT NULL
14676                 AND p_breakpoint_header_tbl (ubk).bkhd_default_id <> pn_varen_util.g_pn_miss_num)
14677             THEN
14678                -- Call update of breakpoint headers
14679                pn_varen_util.pvt_debug
14680                      ('PN_VAREN_PVT: Update_Var_Rent: Calling update_breakpoint_headers procedure'
14681                     , 3);
14682                update_breakpoint_headers
14683                                      (p_breakpoint_header_rec_type  => p_breakpoint_header_tbl (ubk)
14684                                     , x_return_status               => x_return_status);
14685                pn_varen_util.pvt_debug
14686                   (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_breakpoint_headers procedure is '
14687                    || x_return_status
14688                  , 3);
14689                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
14690                THEN
14691                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
14692                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPDATE_BREAKPOINT_HEADERS procedure returned error');
14693                   fnd_msg_pub.ADD;
14694                   RAISE fnd_api.g_exc_error;
14695                END IF;
14696 
14697             END IF;
14698          END IF;                                                                  --l_bkpt_exist = 0
14699       --END IF; -- p_breakpoint_header_tbl (ubk).bkhd_default_id IS NULL
14700         --END LOOP; -- Commented By Vivek on 09-DEC-2010
14701        --END IF;
14702 
14703       --CLOSE c_pn_var_bkhd_defaults;
14704       END LOOP;                                                      -- p_breakpoint_header_tbl LOOP
14705    END IF;                                                              -- p_breakpoint_header_tbl>0
14706 
14707 
14708    IF     p_breakpoint_details_tbl.COUNT > 0
14709       AND l_undo_periods <> 'Y'
14710    THEN
14711       FOR ubd IN p_breakpoint_details_tbl.FIRST .. p_breakpoint_details_tbl.LAST
14712       LOOP
14713          l_pn_var_bkdt_defaults:=NULL;
14714          OPEN c_pn_var_bkdt_defaults (p_breakpoint_details_tbl (ubd).bkdt_default_id
14715                                     , p_breakpoint_details_tbl (ubd).var_rent_id);
14716 
14717          FETCH c_pn_var_bkdt_defaults
14718          INTO  l_pn_var_bkdt_defaults;
14719 
14720          CLOSE c_pn_var_bkdt_defaults;
14721 
14722            --IF (c_pn_var_bkdt_defaults%NOTFOUND)
14723            --THEN
14724          --x_return_status                                                              := fnd_api.g_ret_sts_error;
14725 
14726          --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor C_pn_var_bkdt_defaults not found'
14727          --        , 3
14728          --         );
14729          --  ELSE
14730          --pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor C_pn_var_bkdt_defaults found'
14731          --        , 3
14732          --         );
14733          pn_varen_util.pvt_debug
14734             (   'PN_VAREN_PVT: Update_Var_Rent: After the cursor C_pn_var_bkdt_defaults is open, value of p_upd_var_rent_rec.var_rent_id is '
14735              || p_upd_var_rent_rec.var_rent_id
14736            , 3);
14737 --------------------------------------------------------------------------------
14738 -- Initialize Update Breakpoint Details
14739 -------------------------------------------------------------------------------
14740     --FOR ubd IN p_breakpoint_details_tbl.FIRST .. p_breakpoint_details_tbl.LAST
14741     --LOOP
14742          pn_varen_util.pvt_debug
14743                          ('PN_VAREN_PVT: Update_Var_Rent: Inside Breakpoint Details procedure loop'
14744                         , 3);
14745 
14746          IF (   p_breakpoint_details_tbl (ubd).bkdt_default_id IS NULL
14747              OR p_breakpoint_details_tbl (ubd).bkdt_default_id = pn_varen_util.g_pn_miss_num)
14748          THEN
14749             p_breakpoint_details_tbl (ubd).bkdt_default_id :=
14750                                                              l_pn_var_bkdt_defaults.bkdt_default_id;
14751          END IF;
14752 
14753          IF (   p_breakpoint_details_tbl (ubd).bkdt_detail_num IS NULL
14754              OR p_breakpoint_details_tbl (ubd).bkdt_detail_num = pn_varen_util.g_pn_miss_num)
14755          THEN
14756             p_breakpoint_details_tbl (ubd).bkdt_detail_num :=
14757                                                              l_pn_var_bkdt_defaults.bkdt_detail_num;
14758          END IF;
14759 
14760          IF (   p_breakpoint_details_tbl (ubd).bkhd_default_id IS NULL
14761              OR p_breakpoint_details_tbl (ubd).bkhd_default_id = pn_varen_util.g_pn_miss_num)
14762          THEN
14763             p_breakpoint_details_tbl (ubd).bkhd_default_id :=
14764                                                              l_pn_var_bkdt_defaults.bkhd_default_id;
14765          END IF;
14766 
14767          IF (   p_breakpoint_details_tbl (ubd).bkdt_start_date IS NULL
14768              OR p_breakpoint_details_tbl (ubd).bkdt_start_date = pn_varen_util.g_pn_miss_date)
14769          THEN
14770             p_breakpoint_details_tbl (ubd).bkdt_start_date :=
14771                                                              l_pn_var_bkdt_defaults.bkdt_start_date;
14772          END IF;
14773 
14774          IF (   p_breakpoint_details_tbl (ubd).bkdt_end_date IS NULL
14775              OR p_breakpoint_details_tbl (ubd).bkdt_end_date = pn_varen_util.g_pn_miss_date)
14776          THEN
14777             p_breakpoint_details_tbl (ubd).bkdt_end_date := l_pn_var_bkdt_defaults.bkdt_end_date;
14778          END IF;
14779 
14780          IF (   p_breakpoint_details_tbl (ubd).period_bkpt_vol_start IS NULL
14781              OR p_breakpoint_details_tbl (ubd).period_bkpt_vol_start = pn_varen_util.g_pn_miss_num)
14782          THEN
14783             p_breakpoint_details_tbl (ubd).period_bkpt_vol_start :=
14784                                                        l_pn_var_bkdt_defaults.period_bkpt_vol_start;
14785          END IF;
14786 
14787          IF (   p_breakpoint_details_tbl (ubd).period_bkpt_vol_end IS NULL
14788              OR p_breakpoint_details_tbl (ubd).period_bkpt_vol_end = pn_varen_util.g_pn_miss_num)
14789          THEN
14790             p_breakpoint_details_tbl (ubd).period_bkpt_vol_end :=
14791                                                          l_pn_var_bkdt_defaults.period_bkpt_vol_end;
14792          END IF;
14793 
14794          IF (   p_breakpoint_details_tbl (ubd).group_bkpt_vol_start IS NULL
14795              OR p_breakpoint_details_tbl (ubd).group_bkpt_vol_start = pn_varen_util.g_pn_miss_num)
14796          THEN
14797             p_breakpoint_details_tbl (ubd).group_bkpt_vol_start :=
14798                                                         l_pn_var_bkdt_defaults.group_bkpt_vol_start;
14799          END IF;
14800 
14801          IF (   p_breakpoint_details_tbl (ubd).group_bkpt_vol_end IS NULL
14802              OR p_breakpoint_details_tbl (ubd).group_bkpt_vol_end = pn_varen_util.g_pn_miss_num)
14803          THEN
14804             p_breakpoint_details_tbl (ubd).group_bkpt_vol_end :=
14805                                                           l_pn_var_bkdt_defaults.group_bkpt_vol_end;
14806          END IF;
14807 
14808          IF (   p_breakpoint_details_tbl (ubd).bkpt_rate IS NULL
14809              OR p_breakpoint_details_tbl (ubd).bkpt_rate = pn_varen_util.g_pn_miss_num)
14810          THEN
14811             p_breakpoint_details_tbl (ubd).bkpt_rate := l_pn_var_bkdt_defaults.bkpt_rate;
14812          END IF;
14813 
14814          IF (   p_breakpoint_details_tbl (ubd).annual_basis_amount IS NULL
14815              OR p_breakpoint_details_tbl (ubd).annual_basis_amount = pn_varen_util.g_pn_miss_num)
14816          THEN
14817             p_breakpoint_details_tbl (ubd).annual_basis_amount :=
14818                                                          l_pn_var_bkdt_defaults.annual_basis_amount;
14819          END IF;
14820 
14821          IF (   p_breakpoint_details_tbl (ubd).var_rent_id IS NULL
14822              OR p_breakpoint_details_tbl (ubd).var_rent_id = pn_varen_util.g_pn_miss_num)
14823          THEN
14824             p_breakpoint_details_tbl (ubd).var_rent_id := l_pn_var_bkdt_defaults.var_rent_id;
14825          END IF;
14826 
14827          IF (   p_breakpoint_details_tbl (ubd).last_update_date IS NULL
14828              OR p_breakpoint_details_tbl (ubd).last_update_date = pn_varen_util.g_pn_miss_date)
14829          THEN
14830             p_breakpoint_details_tbl (ubd).last_update_date := g_sysdate;
14831          END IF;
14832 
14833          IF (   p_breakpoint_details_tbl (ubd).last_updated_by IS NULL
14834              OR p_breakpoint_details_tbl (ubd).last_updated_by = pn_varen_util.g_pn_miss_num)
14835          THEN
14836             p_breakpoint_details_tbl (ubd).last_updated_by := g_user_id;
14837          END IF;
14838 
14839          IF (   p_breakpoint_details_tbl (ubd).creation_date IS NULL
14840              OR p_breakpoint_details_tbl (ubd).creation_date = pn_varen_util.g_pn_miss_date)
14841          THEN
14842             p_breakpoint_details_tbl (ubd).creation_date := l_pn_var_bkdt_defaults.creation_date;
14843          END IF;
14844 
14845          IF (   p_breakpoint_details_tbl (ubd).created_by IS NULL
14846              OR p_breakpoint_details_tbl (ubd).created_by = pn_varen_util.g_pn_miss_num)
14847          THEN
14848             p_breakpoint_details_tbl (ubd).created_by := l_pn_var_bkdt_defaults.created_by;
14849          END IF;
14850 
14851          IF (   p_breakpoint_details_tbl (ubd).last_update_login IS NULL
14852              OR p_breakpoint_details_tbl (ubd).last_update_login = pn_varen_util.g_pn_miss_num)
14853          THEN
14854             p_breakpoint_details_tbl (ubd).last_update_login := g_user_id;
14855          END IF;
14856 
14857          IF (   p_breakpoint_details_tbl (ubd).attribute_category IS NULL
14858              OR p_breakpoint_details_tbl (ubd).attribute_category = pn_varen_util.g_pn_miss_char)
14859          THEN
14860             p_breakpoint_details_tbl (ubd).attribute_category :=
14861                                                           l_pn_var_bkdt_defaults.attribute_category;
14862          END IF;
14863 
14864          IF (   p_breakpoint_details_tbl (ubd).attribute1 IS NULL
14865              OR p_breakpoint_details_tbl (ubd).attribute1 = pn_varen_util.g_pn_miss_char)
14866          THEN
14867             p_breakpoint_details_tbl (ubd).attribute1 := l_pn_var_bkdt_defaults.attribute1;
14868          END IF;
14869 
14870          IF (   p_breakpoint_details_tbl (ubd).attribute2 IS NULL
14871              OR p_breakpoint_details_tbl (ubd).attribute2 = pn_varen_util.g_pn_miss_char)
14872          THEN
14873             p_breakpoint_details_tbl (ubd).attribute2 := l_pn_var_bkdt_defaults.attribute2;
14874          END IF;
14875 
14876          IF (   p_breakpoint_details_tbl (ubd).attribute3 IS NULL
14877              OR p_breakpoint_details_tbl (ubd).attribute3 = pn_varen_util.g_pn_miss_char)
14878          THEN
14879             p_breakpoint_details_tbl (ubd).attribute3 := l_pn_var_bkdt_defaults.attribute3;
14880          END IF;
14881 
14882          IF (   p_breakpoint_details_tbl (ubd).attribute4 IS NULL
14883              OR p_breakpoint_details_tbl (ubd).attribute4 = pn_varen_util.g_pn_miss_char)
14884          THEN
14885             p_breakpoint_details_tbl (ubd).attribute4 := l_pn_var_bkdt_defaults.attribute4;
14886          END IF;
14887 
14888          IF (   p_breakpoint_details_tbl (ubd).attribute5 IS NULL
14889              OR p_breakpoint_details_tbl (ubd).attribute5 = pn_varen_util.g_pn_miss_char)
14890          THEN
14891             p_breakpoint_details_tbl (ubd).attribute5 := l_pn_var_bkdt_defaults.attribute5;
14892          END IF;
14893 
14894          IF (   p_breakpoint_details_tbl (ubd).attribute6 IS NULL
14895              OR p_breakpoint_details_tbl (ubd).attribute6 = pn_varen_util.g_pn_miss_char)
14896          THEN
14897             p_breakpoint_details_tbl (ubd).attribute6 := l_pn_var_bkdt_defaults.attribute6;
14898          END IF;
14899 
14900          IF (   p_breakpoint_details_tbl (ubd).attribute7 IS NULL
14901              OR p_breakpoint_details_tbl (ubd).attribute7 = pn_varen_util.g_pn_miss_char)
14902          THEN
14903             p_breakpoint_details_tbl (ubd).attribute7 := l_pn_var_bkdt_defaults.attribute7;
14904          END IF;
14905 
14906          IF (   p_breakpoint_details_tbl (ubd).attribute8 IS NULL
14907              OR p_breakpoint_details_tbl (ubd).attribute8 = pn_varen_util.g_pn_miss_char)
14908          THEN
14909             p_breakpoint_details_tbl (ubd).attribute8 := l_pn_var_bkdt_defaults.attribute8;
14910          END IF;
14911 
14912          IF (   p_breakpoint_details_tbl (ubd).attribute9 IS NULL
14913              OR p_breakpoint_details_tbl (ubd).attribute9 = pn_varen_util.g_pn_miss_char)
14914          THEN
14915             p_breakpoint_details_tbl (ubd).attribute9 := l_pn_var_bkdt_defaults.attribute9;
14916          END IF;
14917 
14918          IF (   p_breakpoint_details_tbl (ubd).attribute10 IS NULL
14919              OR p_breakpoint_details_tbl (ubd).attribute10 = pn_varen_util.g_pn_miss_char)
14920          THEN
14921             p_breakpoint_details_tbl (ubd).attribute10 := l_pn_var_bkdt_defaults.attribute10;
14922          END IF;
14923 
14924          IF (   p_breakpoint_details_tbl (ubd).attribute11 IS NULL
14925              OR p_breakpoint_details_tbl (ubd).attribute11 = pn_varen_util.g_pn_miss_char)
14926          THEN
14927             p_breakpoint_details_tbl (ubd).attribute11 := l_pn_var_bkdt_defaults.attribute11;
14928          END IF;
14929 
14930          IF (   p_breakpoint_details_tbl (ubd).attribute12 IS NULL
14931              OR p_breakpoint_details_tbl (ubd).attribute12 = pn_varen_util.g_pn_miss_char)
14932          THEN
14933             p_breakpoint_details_tbl (ubd).attribute12 := l_pn_var_bkdt_defaults.attribute12;
14934          END IF;
14935 
14936          IF (   p_breakpoint_details_tbl (ubd).attribute13 IS NULL
14937              OR p_breakpoint_details_tbl (ubd).attribute13 = pn_varen_util.g_pn_miss_char)
14938          THEN
14939             p_breakpoint_details_tbl (ubd).attribute13 := l_pn_var_bkdt_defaults.attribute13;
14940          END IF;
14941 
14942          IF (   p_breakpoint_details_tbl (ubd).attribute14 IS NULL
14943              OR p_breakpoint_details_tbl (ubd).attribute14 = pn_varen_util.g_pn_miss_char)
14944          THEN
14945             p_breakpoint_details_tbl (ubd).attribute14 := l_pn_var_bkdt_defaults.attribute14;
14946          END IF;
14947 
14948          IF (   p_breakpoint_details_tbl (ubd).attribute15 IS NULL
14949              OR p_breakpoint_details_tbl (ubd).attribute15 = pn_varen_util.g_pn_miss_char)
14950          THEN
14951             p_breakpoint_details_tbl (ubd).attribute5 := l_pn_var_bkdt_defaults.attribute15;
14952          END IF;
14953 
14954 -------------------------------------------------------------------------------------------
14955 -- Validating Descriptive Flex fields
14956 -------------------------------------------------------------------------------------------
14957         -- Below code has been commented by Vivek on 11-DEC-2010
14958         /*
14959          IF (p_breakpoint_details_tbl (ubd).attribute_category IS NOT NULL)
14960          THEN
14961             pn_varen_util.validate_flex_fields
14962                          (p_desc_flex_name              => g_bkdt_desc_name
14963                         , p_attribute_category          => p_breakpoint_details_tbl (ubd).attribute_category
14964                         , p_attribute1                  => p_breakpoint_details_tbl (ubd).attribute1
14965                         , p_attribute2                  => p_breakpoint_details_tbl (ubd).attribute2
14966                         , p_attribute3                  => p_breakpoint_details_tbl (ubd).attribute3
14967                         , p_attribute4                  => p_breakpoint_details_tbl (ubd).attribute4
14968                         , p_attribute5                  => p_breakpoint_details_tbl (ubd).attribute5
14969                         , p_attribute6                  => p_breakpoint_details_tbl (ubd).attribute6
14970                         , p_attribute7                  => p_breakpoint_details_tbl (ubd).attribute7
14971                         , p_attribute8                  => p_breakpoint_details_tbl (ubd).attribute8
14972                         , p_attribute9                  => p_breakpoint_details_tbl (ubd).attribute9
14973                         , p_attribute10                 => p_breakpoint_details_tbl (ubd).attribute10
14974                         , p_attribute11                 => p_breakpoint_details_tbl (ubd).attribute11
14975                         , p_attribute12                 => p_breakpoint_details_tbl (ubd).attribute12
14976                         , p_attribute13                 => p_breakpoint_details_tbl (ubd).attribute13
14977                         , p_attribute14                 => p_breakpoint_details_tbl (ubd).attribute14
14978                         , p_attribute15                 => p_breakpoint_details_tbl (ubd).attribute15
14979                         , x_return_msg                  => l_return_msg
14980                         , x_return_status               => l_return_status);
14981 
14982             IF l_return_msg = 'VALID'
14983             THEN
14984                x_return_status                      := fnd_api.g_ret_sts_success;
14985             ELSE
14986                x_return_status                      := fnd_api.g_ret_sts_error;
14987             END IF;
14988          END IF;
14989         */
14990 
14991 
14992         -- Below code has been added by Vivek on 11-DEC-2010
14993 
14994     IF (get_attribute_status('PN_VAR_BKPTS_DETAIL') > 0) THEN -- DFF Name to be checked for correctness
14995       IF NOT ((p_breakpoint_details_tbl (ubd).attribute_category = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute_category IS NULL)
14996                                         AND (p_breakpoint_details_tbl (ubd).attribute1 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute1 IS NULL)
14997                                         AND (p_breakpoint_details_tbl (ubd).attribute2 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute2 IS NULL)
14998                                         AND (p_breakpoint_details_tbl (ubd).attribute3 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute3 IS NULL)
14999                                         AND (p_breakpoint_details_tbl (ubd).attribute4 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute4 IS NULL)
15000                                         AND (p_breakpoint_details_tbl (ubd).attribute5 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute5 IS NULL)
15001                                         AND (p_breakpoint_details_tbl (ubd).attribute6 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute6 IS NULL)
15002                                         AND (p_breakpoint_details_tbl (ubd).attribute7 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute7 IS NULL)
15003                                         AND (p_breakpoint_details_tbl (ubd).attribute8 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute8 IS NULL)
15004                                         AND (p_breakpoint_details_tbl (ubd).attribute9 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute9 IS NULL)
15005                                         AND (p_breakpoint_details_tbl (ubd).attribute10 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute10 IS NULL)
15006                                         AND (p_breakpoint_details_tbl (ubd).attribute11 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute11 IS NULL)
15007                                         AND (p_breakpoint_details_tbl (ubd).attribute12 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute12 IS NULL)
15008                                         AND (p_breakpoint_details_tbl (ubd).attribute13 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute13 IS NULL)
15009                                         AND (p_breakpoint_details_tbl (ubd).attribute14 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute14 IS NULL)
15010                                         AND (p_breakpoint_details_tbl (ubd).attribute15 = pn_varen_util.g_pn_miss_char OR p_breakpoint_details_tbl (ubd).attribute15 IS NULL)
15011                                 ) THEN
15012          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_BKPTS_DETAIL'
15013                                            , p_attribute_category          => p_breakpoint_details_tbl (ubd).attribute_category
15014                                            , p_attribute1                  => p_breakpoint_details_tbl (ubd).attribute1
15015                                            , p_attribute2                  => p_breakpoint_details_tbl (ubd).attribute2
15016                                            , p_attribute3                  => p_breakpoint_details_tbl (ubd).attribute3
15017                                            , p_attribute4                  => p_breakpoint_details_tbl (ubd).attribute4
15018                                            , p_attribute5                  => p_breakpoint_details_tbl (ubd).attribute5
15019                                            , p_attribute6                  => p_breakpoint_details_tbl (ubd).attribute6
15020                                            , p_attribute7                  => p_breakpoint_details_tbl (ubd).attribute7
15021                                            , p_attribute8                  => p_breakpoint_details_tbl (ubd).attribute8
15022                                            , p_attribute9                  => p_breakpoint_details_tbl (ubd).attribute9
15023                                            , p_attribute10                 => p_breakpoint_details_tbl (ubd).attribute10
15024                                            , p_attribute11                 => p_breakpoint_details_tbl (ubd).attribute11
15025                                            , p_attribute12                 => p_breakpoint_details_tbl (ubd).attribute12
15026                                            , p_attribute13                 => p_breakpoint_details_tbl (ubd).attribute13
15027                                            , p_attribute14                 => p_breakpoint_details_tbl (ubd).attribute14
15028                                            , p_attribute15                 => p_breakpoint_details_tbl (ubd).attribute15
15029                                            , x_return_msg                  => l_return_msg
15030                                            , x_return_status               => x_return_status
15031                                             );
15032 
15033                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
15034                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15035                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : PN_VAR_BKPTS_DETAIL Descriptive Fields Error '||l_return_msg);
15036                   fnd_msg_pub.ADD;
15037                   RAISE fnd_api.g_exc_error;
15038                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
15039                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15040                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT: PN_VAR_BKPTS_DETAIL Descriptive Fields Error '||l_return_msg);
15041                   fnd_msg_pub.ADD;
15042                   RAISE fnd_api.g_exc_unexpected_error;
15043                END IF;
15044         END IF;
15045       END IF; -- End of attributes validations in PN_VAR_BKPTS_HEAD
15046 
15047         ------------------------End of 11-Dec-2010 DFF changes----------------------------
15048 
15049 
15050          pn_varen_util.pvt_debug
15051                  (   'PN_VAREN_PVT: Update_Var_Rent: Status of Breakpoint Details  validations is '
15052                   || x_return_status
15053                 , 3);
15054 
15055          -- Added by vivek on 10-Dec-2010
15056          IF    p_breakpoint_details_tbl (ubd).bkdt_start_date <l_pn_var_rents_rec.commencement_date
15057             OR p_breakpoint_details_tbl (ubd).bkdt_end_date >l_pn_var_rents_rec.termination_date
15058          THEN
15059 
15060                                   --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
15061                                   fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15062                                   fnd_message.set_token('ERR_MSG', 'Please review each breakpoint header dates and remove any overlap with the variable rent date.');
15063                                   fnd_msg_pub.ADD;
15064                                   RAISE fnd_api.g_exc_error;
15065          END IF;
15066                         l_date_range_bkdt_count :=0;
15067                   BEGIN
15068                          SELECT COUNT(1)
15069                          INTO   l_date_range_bkdt_count
15070                          FROM   pn_var_bkdt_defaults_all
15071                          WHERE  var_rent_id = p_breakpoint_details_tbl (ubd).var_rent_id
15072                          AND    bkdt_default_id<>p_breakpoint_details_tbl (ubd).bkdt_default_id
15073                          AND    bkhd_default_id =p_breakpoint_details_tbl (ubd).bkhd_default_id
15074                          AND   (bkdt_start_date <=p_breakpoint_details_tbl (ubd).bkdt_end_date  AND   bkdt_end_date >= p_breakpoint_details_tbl (ubd).bkdt_start_date);
15075                  EXCEPTION
15076                          WHEN OTHERS THEN
15077                                  pn_varen_util.pvt_debug('PN_VAREN_PVT:Remove any overlap in the breakpoint details',3);
15078                   END;
15079 
15080                          IF(NVL(l_date_range_bkdt_count,0) > 0) THEN
15081                                  --fnd_message.set_name('PN','PN_VAR_BKPT_OVERLAP');
15082                                  fnd_message.set_name('PN','PN_OTHERS_EXCEPTION');
15083                                  fnd_message.set_token('ERR_MSG', 'Please review each breakpoint component and remove any overlap in the breakpoint Details dates.');
15084                                  fnd_msg_pub.ADD;
15085                                  RAISE fnd_api.g_exc_error;
15086                          END IF;
15087          IF x_return_status = 'S'
15088          THEN
15089             -- call Breakpoint Details update procedure
15090             -- IF block and insert_breakpoint_details code has been added by Vivek on 09-DEC-2010
15091             IF     p_breakpoint_details_tbl (ubd).bkdt_default_id IS NOT NULL
15092                AND p_breakpoint_details_tbl (ubd).bkdt_default_id <> pn_varen_util.g_pn_miss_num
15093             THEN
15094                pn_varen_util.pvt_debug
15095                   ('PN_VAREN_PVT: Update_Var_Rent: Before calling update_breakpoint_details prcoedure '
15096                  , 3);
15097                update_breakpoint_details
15098                                    (p_breakpoint_details_rec_type => p_breakpoint_details_tbl (ubd)
15099                                   , x_return_status               => x_return_status);
15100                pn_varen_util.pvt_debug
15101                   (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_breakpoint_details prcoedure is '
15102                    || x_return_status
15103                  , 3);
15104                      IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
15105                      THEN
15106                         fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15107                         fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPDATE_BREAKPOINT_DETAILS procedure returned error');
15108                         fnd_msg_pub.ADD;
15109                         RAISE fnd_api.g_exc_error;
15110                      END IF;
15111             ELSE
15112                insert_breakpoint_details
15113                                    (p_breakpoint_details_rec_type => p_breakpoint_details_tbl (ubd)
15114                                   , x_return_status               => x_return_status);
15115                      IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
15116                      THEN
15117                         fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15118                         fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:INSERT_BREAKPOINT_DETAILS procedure returned error');
15119                         fnd_msg_pub.ADD;
15120                         RAISE fnd_api.g_exc_error;
15121                      END IF;
15122             END IF;
15123          END IF;
15124       --END LOOP; Commented by Vivek on 09-DEC-2010
15125          --END IF; --c_pn_var_bkdt_defaults%NOTFOUND
15126       END LOOP;
15127    END IF;                                                       -- p_breakpoint_details_tbl.COUNT>0
15128 
15129    IF     p_constraints_tbl.COUNT > 0
15130       AND l_undo_periods <> 'Y'
15131    THEN
15132       FOR uc IN p_constraints_tbl.FIRST .. p_constraints_tbl.LAST
15133       LOOP
15134          l_pn_var_constraints:=NULL;
15135          OPEN c_pn_var_constraints (p_constraints_tbl (uc).constr_default_id
15136                                   , p_constraints_tbl (uc).var_rent_id);
15137 
15138          FETCH c_pn_var_constraints
15139          INTO  l_pn_var_constraints;
15140 
15141          CLOSE c_pn_var_constraints;
15142 
15143       --IF (c_pn_var_constraints%NOTFOUND)
15144       --THEN
15145       --   x_return_status                                                              := fnd_api.g_ret_sts_error;
15146       --   pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_constraints not found'
15147       --                          , 3
15148       --                           );
15149       --ELSE
15150       --   pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_constraints found'
15151       --                          , 3
15152       --                           );
15153       --   pn_varen_util.pvt_debug
15154       --      (   'PN_VAREN_PVT: Update_Var_Rent: After the cursor c_pn_var_constraints is open, value of p_upd_var_rent_rec.var_rent_id is '
15155       --       || p_upd_var_rent_rec.var_rent_id
15156       --     , 3
15157       --      );
15158 --------------------------------------------------------------------------------
15159 -- Initialize Update Constraints
15160 --------------------------------------------------------------------------------
15161          l_var_commencement_date              := NULL;
15162          l_var_termination_date               := NULL;
15163 
15164          --FOR uc IN p_constraints_tbl.FIRST .. p_constraints_tbl.LAST -- Commented by Vivek on 09-DEC-2010
15165          --LOOP
15166          IF (   p_constraints_tbl (uc).constr_default_num IS NULL
15167              OR p_constraints_tbl (uc).constr_default_num = pn_varen_util.g_pn_miss_num)
15168          THEN
15169             p_constraints_tbl (uc).constr_default_num := l_pn_var_constraints.constr_default_num;
15170          END IF;
15171 
15172          IF    (   p_constraints_tbl (uc).var_rent_id IS NULL
15173                 OR p_constraints_tbl (uc).var_rent_id = pn_varen_util.g_pn_miss_num)
15174             OR (   p_constraints_tbl (uc).var_rent_num IS NULL
15175                 OR p_constraints_tbl (uc).var_rent_num = pn_varen_util.g_pn_miss_char)
15176          THEN
15177             p_constraints_tbl (uc).var_rent_id   := l_pn_var_constraints.var_rent_id;
15178             pn_varen_util.pvt_debug
15179                  (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_constraints_tbl(uc).var_rent_id :'
15180                   || p_constraints_tbl (uc).var_rent_id
15181                 , 3);
15182             pn_varen_util.pvt_debug
15183                             (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_var_commencement_date :'
15184                              || l_var_commencement_date
15185                            , 3);
15186          END IF;
15187 
15188          pn_varen_util.pvt_debug
15189                     (   'PN_VAREN_PVT: Update_Var_Rent: Before p_constraints_tbl(uc).var_rent_id :'
15190                      || p_constraints_tbl (uc).var_rent_id
15191                    , 3);
15192          pn_varen_util.pvt_debug
15193                               (   'PN_VAREN_PVT: Update_Var_Rent: Before l_var_commencement_date :'
15194                                || l_var_commencement_date
15195                              , 3);
15196          pn_varen_util.pvt_debug
15197                                (   'PN_VAREN_PVT: Update_Var_Rent: Before l_var_termination_date :'
15198                                 || l_var_termination_date
15199                               , 3);
15200          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Before x_return_status :'
15201                                   || x_return_status
15202                                 , 3);
15203 
15204 ------------------------------
15205 --- Validating Variable Rent Id
15206 -----------------------------------
15207          BEGIN
15208             pn_varen_util.pvt_debug
15209                                  (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Variable Rent Id '
15210                                   || p_constraints_tbl (uc).var_rent_id
15211                                 , 3);
15212             pn_varen_util.var_rent_details (p_var_rent_id                 => p_constraints_tbl (uc).var_rent_id
15213                                           , p_org_id                      => g_org_id
15214                                           , x_commencement_date           => l_var_commencement_date
15215                                           , x_termination_date            => l_var_termination_date
15216                                           , x_return_status               => x_return_status);
15217             pn_varen_util.pvt_debug
15218                       (   'PN_VAREN_PVT: Update_Var_Rent: Status of var_rent_details procedure is '
15219                        || x_return_status
15220                      , 3);
15221 
15222             IF x_return_status = fnd_api.g_ret_sts_success
15223             THEN
15224                pn_varen_util.pvt_debug
15225                         (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Variable Rent Id exists : '
15226                          || p_constraints_tbl (uc).var_rent_id
15227                        , 3);
15228                pn_varen_util.pvt_debug
15229                             (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent commencement date : '
15230                              || l_var_commencement_date
15231                            , 3);
15232                pn_varen_util.pvt_debug
15233                              (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent termination date : '
15234                               || l_var_termination_date
15235                             , 3);
15236             ELSE
15237                pn_varen_util.pvt_debug
15238                   (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Variable Rent Id doesnot exists : '
15239                    || p_constraints_tbl (uc).var_rent_id
15240                  , 3);
15241             --
15242             --l_const_val                                                                  :=
15243             --                                                                               'N';
15244             END IF;
15245          END;
15246 
15247          pn_varen_util.pvt_debug
15248                      (   'PN_VAREN_PVT: Update_Var_Rent: After p_constraints_tbl(uc).var_rent_id :'
15249                       || p_constraints_tbl (uc).var_rent_id
15250                     , 3);
15251          pn_varen_util.pvt_debug
15252                                (   'PN_VAREN_PVT: Update_Var_Rent: After l_var_commencement_date :'
15253                                 || l_var_commencement_date
15254                               , 3);
15255          pn_varen_util.pvt_debug
15256                                 (   'PN_VAREN_PVT: Update_Var_Rent: After l_var_termination_date :'
15257                                  || l_var_termination_date
15258                                , 3);
15259          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: After x_return_status :'
15260                                   || x_return_status
15261                                 , 3);
15262 
15263          BEGIN
15264             pn_varen_util.pvt_debug
15265                ('PN_VAREN_PVT: Update_Var_Rent: Verifying whether constraints are generated or not.'
15266               , 3);
15267 
15268             SELECT COUNT (1)
15269             INTO   ln_const_count
15270             FROM   pn_var_constraints_all
15271             WHERE  constr_default_id IN (SELECT constr_default_id
15272                                          FROM   pn_var_constr_defaults_all
15273                                          WHERE  var_rent_id = p_constraints_tbl (uc).var_rent_id);
15274 
15275             --l_pn_var_constraints.var_rent_id;
15276             pn_varen_util.pvt_debug
15277                                    (   'PN_VAREN_PVT: Update_Var_Rent: Value of ln_const_count is '
15278                                     || ln_const_count
15279                                   , 3);
15280 
15281             IF ln_const_count > 0
15282             THEN
15283                pn_varen_util.pvt_debug
15284                   (   'PN_VAREN_PVT: Update_Var_Rent: Constraints are already generated for the Variable Rent Id : '
15285                    || p_constraints_tbl (uc).var_rent_id
15286                  , 3);
15287                pn_varen_util.pvt_debug
15288                   (   'PN_VAREN_PVT: Update_Var_Rent: Constraints are already generated for the Variable Rent Id : '
15289                    || p_constraints_tbl (uc).var_rent_id
15290                  , 3);
15291                pn_varen_util.pvt_debug
15292                   (   'PN_VAREN_PVT: Update_Var_Rent: Before calling undo_constraints procedure, value of p_undo_constraints is '
15293                    || p_undo_constraints
15294                  , 3);
15295 
15296                IF p_undo_constraints = 'Y'
15297                THEN
15298                   pn_varen_util.pvt_debug
15299                      (   'PN_VAREN_PVT: Update_Var_Rent: Before undo_constraints procedure, value of constraints var_rent_id is '
15300                       || p_constraints_tbl (uc).var_rent_id
15301                     , 3);
15302                   undo_constraints (p_var_rent_id                 => p_constraints_tbl (uc).var_rent_id
15303                                   , x_return_status               => x_return_status);
15304                   pn_varen_util.pvt_debug
15305                       (   'PN_VAREN_PVT: Update_Var_Rent: Status of undo_constraints procedure is '
15306                        || x_return_status
15307                      , 3);
15308                END IF;                                                         -- p_undo_constraints
15309             END IF;                                                                -- ln_const_count
15310          EXCEPTION
15311             WHEN OTHERS
15312             THEN
15313                pn_varen_util.pvt_debug
15314                   ('PN_VAREN_PVT: Update_Var_Rent: Error occured while verifying whether constraints are generated or not.'
15315                  , 3);
15316          END;
15317 
15318          IF (   p_constraints_tbl (uc).agreement_template_id IS NULL
15319              OR p_constraints_tbl (uc).agreement_template_id = pn_varen_util.g_pn_miss_num)
15320          THEN
15321             p_constraints_tbl (uc).agreement_template_id :=
15322                                                          l_pn_var_constraints.agreement_template_id;
15323          END IF;
15324 
15325          IF (   p_constraints_tbl (uc).constr_template_id IS NULL
15326              OR p_constraints_tbl (uc).constr_template_id = pn_varen_util.g_pn_miss_num)
15327          THEN
15328             p_constraints_tbl (uc).constr_template_id := l_pn_var_constraints.constr_template_id;
15329          END IF;
15330 
15331          IF (   p_constraints_tbl (uc).constr_start_date IS NULL
15332              OR p_constraints_tbl (uc).constr_start_date = pn_varen_util.g_pn_miss_date)
15333          THEN
15334             p_constraints_tbl (uc).constr_start_date := l_pn_var_constraints.constr_start_date;
15335          END IF;
15336 
15337          IF (   p_constraints_tbl (uc).constr_end_date IS NULL
15338              OR p_constraints_tbl (uc).constr_end_date = pn_varen_util.g_pn_miss_date)
15339          THEN
15340             p_constraints_tbl (uc).constr_end_date := l_pn_var_constraints.constr_end_date;
15341          END IF;
15342 
15343 ----------------------------------------------------------------------
15344 --- Validation of Constratint start date
15345 ----------------------------------------------------------------------
15346          IF (    p_constraints_tbl (uc).constr_start_date IS NOT NULL
15347              AND p_constraints_tbl (uc).constr_start_date <> pn_varen_util.g_pn_miss_date)
15348          THEN
15349             pn_varen_util.pvt_debug
15350                         (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date is not null : '
15351                          || p_constraints_tbl (uc).constr_start_date
15352                        , 3);
15353             pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Constratint End Date : '
15354                                      || p_constraints_tbl (uc).constr_end_date
15355                                    , 3);
15356             pn_varen_util.pvt_debug
15357                             (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Commencement Date : '
15358                              || l_var_commencement_date
15359                            , 3);
15360             pn_varen_util.pvt_debug
15361                               (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Termination Date: '
15362                                || l_var_termination_date
15363                              , 3);
15364 
15365             IF (p_constraints_tbl (uc).constr_start_date = l_var_commencement_date)
15366             THEN
15367                x_return_status                      := fnd_api.g_ret_sts_success;
15368                pn_varen_util.pvt_debug
15369                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Success :'
15370                    || p_constraints_tbl (uc).constr_start_date
15371                  , 3);
15372                pn_varen_util.pvt_debug
15373                    (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Success :'
15374                     || p_constraints_tbl (uc).constr_start_date
15375                   , 3);
15376             ELSIF (   p_constraints_tbl (uc).constr_start_date < l_var_commencement_date
15377                    OR p_constraints_tbl (uc).constr_start_date > l_var_termination_date)
15378             THEN
15379                --
15380                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_STRDT_VAL_MSG');
15381                pn_varen_util.pvt_debug
15382                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Error :'
15383                    || p_constraints_tbl (uc).constr_start_date
15384                    || 'Please enter a constraint start date that is the same as or after the commencement date of the variable rent agreement.'
15385                  , 3);
15386                pn_varen_util.pvt_debug
15387                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Error : '
15388                    || p_constraints_tbl (uc).constr_start_date
15389                    || 'Please enter a constraint start date that is the same as or after the commencement date of the variable rent agreement.'
15390                  , 3);
15391                fnd_msg_pub.ADD;
15392                --x_return_status := fnd_api.g_ret_sts_error;
15393                RAISE fnd_api.g_exc_error;
15394             --
15395 
15396             --l_const_val                                                                  :=
15397             --                                                                               'N';
15398             ELSIF (p_constraints_tbl (uc).constr_start_date > l_var_commencement_date)
15399             THEN
15400                --
15401                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_STRDT_VAL_MSG');
15402                --x_return_status                                                              :=fnd_api.g_ret_sts_error;
15403                pn_varen_util.pvt_debug
15404                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Error :'
15405                    || p_constraints_tbl (uc).constr_start_date
15406                    || 'Please ensure that constraint dates you enter coincide with invoice period dates'
15407                  , 3);
15408                pn_varen_util.pvt_debug
15409                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date Validation Error : '
15410                    || p_constraints_tbl (uc).constr_start_date
15411                    || 'Please ensure that constraint dates you enter coincide with invoice period dates'
15412                  , 3);
15413                fnd_msg_pub.ADD;
15414                RAISE fnd_api.g_exc_error;
15415             --
15416 
15417             --l_const_val                                                                  :=
15418             --                                                                               'N';
15419             END IF;
15420          ELSE
15421             --
15422             p_constraints_tbl (uc).constr_start_date := l_var_commencement_date;
15423             --
15424             x_return_status                      := fnd_api.g_ret_sts_success;
15425             pn_varen_util.pvt_debug
15426                (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date is null then value is Defaulted Variable Rent Commencement Date : '
15427                 || l_var_commencement_date
15428                 || ' Success'
15429               , 3);
15430             pn_varen_util.pvt_debug
15431                (   'PN_VAREN_PVT: Update_Var_Rent: Constratint Start Date is null then value is Defaulted Variable Rent Commencement Date  : '
15432                 || l_var_commencement_date
15433                 || ' Success'
15434               , 3);
15435          END IF;
15436 
15437          pn_varen_util.pvt_debug
15438                   (   'PN_VAREN_PVT: Update_Var_Rent: , p_constraints_tbl (uc).constr_start_date :'
15439                    || p_constraints_tbl (uc).constr_start_date
15440                  , 3);
15441          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: , l_var_commencement_date :'
15442                                   || l_var_commencement_date
15443                                 , 3);
15444 
15445 ----------------------------------------------------------------------
15446 --- Validation of Constratint end date
15447 ----------------------------------------------------------------------
15448          IF (    p_constraints_tbl (uc).constr_end_date IS NOT NULL
15449              AND p_constraints_tbl (uc).constr_end_date <> pn_varen_util.g_pn_miss_date)
15450          THEN
15451             pn_varen_util.pvt_debug
15452                           (   'PN_VAREN_PVT: Update_Var_Rent: Constratint end Date is not null : '
15453                            || p_constraints_tbl (uc).constr_end_date
15454                          , 3);
15455             pn_varen_util.pvt_debug
15456                               (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Termination Date: '
15457                                || l_var_termination_date
15458                              , 3);
15459 
15460             IF (p_constraints_tbl (uc).constr_end_date = l_var_termination_date)
15461             THEN
15462                x_return_status                      := fnd_api.g_ret_sts_success;
15463                pn_varen_util.pvt_debug
15464                     (   'PN_VAREN_PVT: Update_Var_Rent: Constratint end Date Validation Success :'
15465                      || p_constraints_tbl (uc).constr_end_date
15466                    , 3);
15467                pn_varen_util.pvt_debug
15468                      (   'PN_VAREN_PVT: Update_Var_Rent: Constratint end Date Validation Success :'
15469                       || p_constraints_tbl (uc).constr_end_date
15470                     , 3);
15471             ELSIF (   p_constraints_tbl (uc).constr_end_date > l_var_termination_date
15472                    OR p_constraints_tbl (uc).constr_end_date < l_var_commencement_date)
15473             THEN
15474                --
15475                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_ENDDT_VAL_MSG');
15476                --x_return_status                                                              := fnd_api.g_ret_sts_error;
15477                pn_varen_util.pvt_debug
15478                   (   'PN_VAREN_PVT: Update_Var_Rent: Constratint end Date Validation Error :'
15479                    || p_constraints_tbl (uc).constr_end_date
15480                    || 'Please enter a constraint end date that is the same as or before the termination date of the variable rent agreement.'
15481                  , 3);
15482                pn_varen_util.pvt_debug
15483                   (   'PN_VAREN_PVT: Update_Var_Rent: Constraint end Date Validation Error : '
15484                    || p_constraints_tbl (uc).constr_end_date
15485                    || 'Please enter a constraint end date that is the same as or before the termination date of the variable rent agreement.'
15486                  , 3);
15487                fnd_msg_pub.ADD;
15488                RAISE fnd_api.g_exc_error;
15489             --
15490 
15491             --l_const_val                                                                  :=
15492             --                                                                               'N';
15493             ELSIF (p_constraints_tbl (uc).constr_end_date < l_var_termination_date)
15494             THEN
15495                --
15496                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_ENDDT_VAL_MSG');
15497                --x_return_status                                                              := fnd_api.g_ret_sts_error;
15498                pn_varen_util.pvt_debug
15499                       (   'PN_VAREN_PVT: Update_Var_Rent: Constraint end Date Validation Error :'
15500                        || p_constraints_tbl (uc).constr_end_date
15501                        || 'Please enter an end date that is greater than or equal to the start date.'
15502                      , 3);
15503                pn_varen_util.pvt_debug
15504                        (   'PN_VAREN_PVT: Update_Var_Rent: Constraint end Date Validation Error : '
15505                         || p_constraints_tbl (uc).constr_end_date
15506                         || 'Please enter an end date that is greater than or equal to the start date.'
15507                       , 3);
15508                fnd_msg_pub.ADD;
15509                RAISE fnd_api.g_exc_error;
15510             --
15511 
15512             --l_const_val                                                                  :=
15513             --                                                                               'N';
15514             END IF;
15515          ELSE
15516             --
15517             p_constraints_tbl (uc).constr_end_date := l_var_termination_date;
15518             --
15519             x_return_status                      := fnd_api.g_ret_sts_success;
15520             pn_varen_util.pvt_debug
15521                (   'PN_VAREN_PVT: Update_Var_Rent: Constraint end Date is null then value is defaulted Variable Rent Termination Date : '
15522                 || l_var_termination_date
15523                 || ' Success'
15524               , 3);
15525             pn_varen_util.pvt_debug
15526                (   'PN_VAREN_PVT: Update_Var_Rent: Constraint end Date is null then value is defaulted Termination Date  : '
15527                 || l_var_termination_date
15528                 || ' Success'
15529               , 3);
15530          END IF;
15531 
15532          pn_varen_util.pvt_debug
15533                       (   'PN_VAREN_PVT: Update_Var_Rent: p_constraints_tbl (uc).constr_end_date :'
15534                        || p_constraints_tbl (uc).constr_end_date
15535                      , 3);
15536 
15537          IF (p_constraints_tbl (uc).constr_start_date > p_constraints_tbl (uc).constr_end_date)
15538          THEN
15539             pn_varen_util.pvt_debug
15540                ('PN_VAREN_PVT: Update_Var_Rent: Please ensure that constraint dates you enter coincide with invoice period dates'
15541               , 3);
15542             pn_varen_util.pvt_debug
15543                ('PN_VAREN_PVT: Update_Var_Rent: Please ensure that constraint dates you enter coincide with invoice period dates'
15544               , 3);
15545          --   l_const_val                                                                  := 'N';
15546          END IF;
15547 
15548          IF (   p_constraints_tbl (uc).constr_cat_code IS NULL
15549              OR p_constraints_tbl (uc).constr_cat_code = pn_varen_util.g_pn_miss_char)
15550          THEN
15551             p_constraints_tbl (uc).constr_cat_code := l_pn_var_constraints.constr_cat_code;
15552          END IF;
15553 
15554          pn_varen_util.pvt_debug
15555                       (   'PN_VAREN_PVT: Update_Var_Rent: p_constraints_tbl (uc).constr_cat_code :'
15556                        || p_constraints_tbl (uc).constr_cat_code
15557                      , 3);
15558          pn_varen_util.pvt_debug
15559             (   'PN_VAREN_PVT: Update_Var_Rent: Before p_constraints_tbl (uc).constr_type_meaning :'
15560              || p_constraints_tbl (uc).constr_type_meaning
15561            , 3);
15562          pn_varen_util.pvt_debug
15563               (   'PN_VAREN_PVT: Update_Var_Rent: Before p_constraints_tbl (uc).constr_type_code :'
15564                || p_constraints_tbl (uc).constr_type_code
15565              , 3);
15566          pn_varen_util.pvt_debug
15567                        (   'PN_VAREN_PVT: Update_Var_Rent: Before l_pn_var_constraints.type_code :'
15568                         || l_pn_var_constraints.type_code
15569                       , 3);
15570 
15571          IF    (    p_constraints_tbl (uc).constr_type_code IS NOT NULL
15572                 AND p_constraints_tbl (uc).constr_type_code <> pn_varen_util.g_pn_miss_char)
15573             OR (    p_constraints_tbl (uc).constr_type_meaning IS NOT NULL
15574                 AND p_constraints_tbl (uc).constr_type_meaning <> pn_varen_util.g_pn_miss_char)
15575          THEN
15576 --------------------------------------------------------------------------------
15577 --Constraint Type validation
15578 --------------------------------------------------------------------------------
15579             pn_varen_util.pvt_debug
15580                              ('PN_VAREN_PVT: Update_Var_Rent: Validation Lookup - Inside the Loop'
15581                             , 3);
15582             pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Constraint Type Validation'
15583                                    , 3);
15584             pn_varen_util.validate_lookups
15585                                      (p_lookup_type                 => g_type_code
15586                                     , x_lookup_meaning              => p_constraints_tbl (uc).constr_type_meaning
15587                                     , x_lookup_code                 => p_constraints_tbl (uc).constr_type_code
15588                                     , x_return_status               => x_return_status);
15589             pn_varen_util.pvt_debug
15590                                  (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Type Output Code :'
15591                                   || p_constraints_tbl (uc).constr_type_code
15592                                 , 3);
15593 
15594             IF (x_return_status = fnd_api.g_ret_sts_error)
15595             THEN
15596                --
15597                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_TY');
15598                --x_return_status                                                              := fnd_api.g_ret_sts_error;
15599                pn_varen_util.pvt_debug
15600                      (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Type Meaning Expected Error :'
15601                       || p_constraints_tbl (uc).constr_type_meaning
15602                     , 3);
15603                pn_varen_util.pvt_debug
15604                           ('PN_VAREN_PVT: Update_Var_Rent: Constraint Type Lookup Validation Error'
15605                          , 3);
15606                fnd_msg_pub.ADD;
15607                RAISE fnd_api.g_exc_error;
15608                --
15609                --l_const_val                                                                  :=
15610                --                                                                               'N';
15611             --
15612             ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error)
15613             THEN
15614                --
15615                fnd_message.set_name ('PN', 'PN_VAR_CONSTR_TY');
15616                --x_return_status                                                              := fnd_api.g_ret_sts_unexp_error;
15617                pn_varen_util.pvt_debug
15618                   (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Type  Meaning Un-Expected Error :'
15619                    || p_constraints_tbl (uc).constr_type_meaning
15620                  , 3);
15621                pn_varen_util.pvt_debug
15622                   ('PN_VAREN_PVT: Update_Var_Rent: Constraint Type Lookup Validation Unexpected Error'
15623                  , 3);
15624                fnd_msg_pub.ADD;
15625                RAISE fnd_api.g_exc_unexpected_error;
15626             --
15627 
15628             --
15629               -- l_const_val                                                                  :=
15630               --                                                                                'N';
15631             --
15632             ELSE
15633                x_return_status                      := fnd_api.g_ret_sts_success;
15634                pn_varen_util.pvt_debug
15635                                (   'PN_VAREN_PVT: Update_Var_Rent: Constraint Type Code Success :'
15636                                 || p_constraints_tbl (uc).constr_type_code
15637                               , 3);
15638                pn_varen_util.pvt_debug
15639                         ('PN_VAREN_PVT: Update_Var_Rent: Constraint Type Lookup Validation Success'
15640                        , 3);
15641             END IF;
15642          ELSE
15643             p_constraints_tbl (uc).constr_type_code := l_pn_var_constraints.type_code;
15644          END IF;
15645 
15646          pn_varen_util.pvt_debug
15647             (   'PN_VAREN_PVT: Update_Var_Rent: After p_constraints_tbl (uc).constr_type_meaning :'
15648              || p_constraints_tbl (uc).constr_type_meaning
15649            , 3);
15650          pn_varen_util.pvt_debug
15651                (   'PN_VAREN_PVT: Update_Var_Rent: After p_constraints_tbl (uc).constr_type_code :'
15652                 || p_constraints_tbl (uc).constr_type_code
15653               , 3);
15654          pn_varen_util.pvt_debug
15655                         (   'PN_VAREN_PVT: Update_Var_Rent: After l_pn_var_constraints.type_code :'
15656                          || l_pn_var_constraints.type_code
15657                        , 3);
15658          pn_varen_util.pvt_debug
15659                  (   'PN_VAREN_PVT: Update_Var_Rent: Before p_constraints_tbl (uc).constr_amount :'
15660                   || p_constraints_tbl (uc).constr_amount
15661                 , 3);
15662          pn_varen_util.pvt_debug
15663                           (   'PN_VAREN_PVT: Update_Var_Rent: Before l_pn_var_constraints.amount :'
15664                            || l_pn_var_constraints.amount
15665                          , 3);
15666 
15667          IF (   p_constraints_tbl (uc).constr_amount IS NULL
15668              OR p_constraints_tbl (uc).constr_amount = pn_varen_util.g_pn_miss_num)
15669          THEN
15670             p_constraints_tbl (uc).constr_amount := l_pn_var_constraints.amount;
15671          END IF;
15672 
15673          pn_varen_util.pvt_debug
15674                   (   'PN_VAREN_PVT: Update_Var_Rent: After p_constraints_tbl (uc).constr_amount :'
15675                    || p_constraints_tbl (uc).constr_amount
15676                  , 3);
15677          pn_varen_util.pvt_debug
15678                            (   'PN_VAREN_PVT: Update_Var_Rent: After l_pn_var_constraints.amount :'
15679                             || l_pn_var_constraints.amount
15680                           , 3);
15681 
15682          IF (   p_constraints_tbl (uc).last_update_date IS NULL
15683              OR p_constraints_tbl (uc).last_update_date = pn_varen_util.g_pn_miss_date)
15684          THEN
15685             p_constraints_tbl (uc).last_update_date := g_sysdate;
15686          END IF;
15687 
15688          IF (   p_constraints_tbl (uc).last_updated_by IS NULL
15689              OR p_constraints_tbl (uc).last_updated_by = pn_varen_util.g_pn_miss_num)
15690          THEN
15691             p_constraints_tbl (uc).last_updated_by := g_user_id;
15692          END IF;
15693 
15694          IF (   p_constraints_tbl (uc).creation_date IS NULL
15695              OR p_constraints_tbl (uc).creation_date = pn_varen_util.g_pn_miss_date)
15696          THEN
15697             p_constraints_tbl (uc).creation_date := l_pn_var_constraints.creation_date;
15698          END IF;
15699 
15700          IF (   p_constraints_tbl (uc).created_by IS NULL
15701              OR p_constraints_tbl (uc).created_by = pn_varen_util.g_pn_miss_num)
15702          THEN
15703             p_constraints_tbl (uc).created_by    := l_pn_var_constraints.created_by;
15704          END IF;
15705 
15706          IF (   p_constraints_tbl (uc).last_update_login IS NULL
15707              OR p_constraints_tbl (uc).last_update_login = pn_varen_util.g_pn_miss_num)
15708          THEN
15709             p_constraints_tbl (uc).last_update_login := g_user_id;
15710          END IF;
15711 
15712          IF (   p_constraints_tbl (uc).attribute_category IS NULL
15713              OR p_constraints_tbl (uc).attribute_category = pn_varen_util.g_pn_miss_char)
15714          THEN
15715             p_constraints_tbl (uc).attribute_category := l_pn_var_constraints.attribute_category;
15716          END IF;
15717 
15718          IF (   p_constraints_tbl (uc).attribute1 IS NULL
15719              OR p_constraints_tbl (uc).attribute1 = pn_varen_util.g_pn_miss_char)
15720          THEN
15721             p_constraints_tbl (uc).attribute1    := l_pn_var_constraints.attribute1;
15722          END IF;
15723 
15724          IF (   p_constraints_tbl (uc).attribute2 IS NULL
15725              OR p_constraints_tbl (uc).attribute2 = pn_varen_util.g_pn_miss_char)
15726          THEN
15727             p_constraints_tbl (uc).attribute2    := l_pn_var_constraints.attribute2;
15728          END IF;
15729 
15730          IF (   p_constraints_tbl (uc).attribute3 IS NULL
15731              OR p_constraints_tbl (uc).attribute3 = pn_varen_util.g_pn_miss_char)
15732          THEN
15733             p_constraints_tbl (uc).attribute3    := l_pn_var_constraints.attribute3;
15734          END IF;
15735 
15736          IF (   p_constraints_tbl (uc).attribute4 IS NULL
15737              OR p_constraints_tbl (uc).attribute4 = pn_varen_util.g_pn_miss_char)
15738          THEN
15739             p_constraints_tbl (uc).attribute4    := l_pn_var_constraints.attribute4;
15740          END IF;
15741 
15742          IF (   p_constraints_tbl (uc).attribute5 IS NULL
15743              OR p_constraints_tbl (uc).attribute5 = pn_varen_util.g_pn_miss_char)
15744          THEN
15745             p_constraints_tbl (uc).attribute5    := l_pn_var_constraints.attribute5;
15746          END IF;
15747 
15748          IF (   p_constraints_tbl (uc).attribute6 IS NULL
15749              OR p_constraints_tbl (uc).attribute6 = pn_varen_util.g_pn_miss_char)
15750          THEN
15751             p_constraints_tbl (uc).attribute6    := l_pn_var_constraints.attribute6;
15752          END IF;
15753 
15754          IF (   p_constraints_tbl (uc).attribute7 IS NULL
15755              OR p_constraints_tbl (uc).attribute7 = pn_varen_util.g_pn_miss_char)
15756          THEN
15757             p_constraints_tbl (uc).attribute7    := l_pn_var_constraints.attribute7;
15758          END IF;
15759 
15760          IF (   p_constraints_tbl (uc).attribute8 IS NULL
15761              OR p_constraints_tbl (uc).attribute8 = pn_varen_util.g_pn_miss_char)
15762          THEN
15763             p_constraints_tbl (uc).attribute8    := l_pn_var_constraints.attribute8;
15764          END IF;
15765 
15766          IF (   p_constraints_tbl (uc).attribute9 IS NULL
15767              OR p_constraints_tbl (uc).attribute9 = pn_varen_util.g_pn_miss_char)
15768          THEN
15769             p_constraints_tbl (uc).attribute9    := l_pn_var_constraints.attribute9;
15770          END IF;
15771 
15772          IF (   p_constraints_tbl (uc).attribute10 IS NULL
15773              OR p_constraints_tbl (uc).attribute10 = pn_varen_util.g_pn_miss_char)
15774          THEN
15775             p_constraints_tbl (uc).attribute10   := l_pn_var_constraints.attribute10;
15776          END IF;
15777 
15778          IF (   p_constraints_tbl (uc).attribute11 IS NULL
15779              OR p_constraints_tbl (uc).attribute11 = pn_varen_util.g_pn_miss_char)
15780          THEN
15781             p_constraints_tbl (uc).attribute11   := l_pn_var_constraints.attribute11;
15782          END IF;
15783 
15784          IF (   p_constraints_tbl (uc).attribute12 IS NULL
15785              OR p_constraints_tbl (uc).attribute12 = pn_varen_util.g_pn_miss_char)
15786          THEN
15787             p_constraints_tbl (uc).attribute12   := l_pn_var_constraints.attribute12;
15788          END IF;
15789 
15790          IF (   p_constraints_tbl (uc).attribute13 IS NULL
15791              OR p_constraints_tbl (uc).attribute13 = pn_varen_util.g_pn_miss_char)
15792          THEN
15793             p_constraints_tbl (uc).attribute13   := l_pn_var_constraints.attribute13;
15794          END IF;
15795 
15796          IF (   p_constraints_tbl (uc).attribute14 IS NULL
15797              OR p_constraints_tbl (uc).attribute14 = pn_varen_util.g_pn_miss_char)
15798          THEN
15799             p_constraints_tbl (uc).attribute14   := l_pn_var_constraints.attribute14;
15800          END IF;
15801 
15802          IF (   p_constraints_tbl (uc).attribute15 IS NULL
15803              OR p_constraints_tbl (uc).attribute15 = pn_varen_util.g_pn_miss_char)
15804          THEN
15805             p_constraints_tbl (uc).attribute5    := l_pn_var_constraints.attribute15;
15806          END IF;
15807 
15808 -------------------------------------------------------------------------------------------
15809 -- Validating Descriptive Flex fields
15810 -------------------------------------------------------------------------------------------
15811         -- Below code has been commented by Vivek on 11-DEC-2010
15812         /*
15813          IF (p_constraints_tbl (uc).attribute_category IS NOT NULL)
15814          THEN
15815             pn_varen_util.validate_flex_fields
15816                                   (p_desc_flex_name              => g_const_desc_name
15817                                  , p_attribute_category          => p_constraints_tbl (uc).attribute_category
15818                                  , p_attribute1                  => p_constraints_tbl (uc).attribute1
15819                                  , p_attribute2                  => p_constraints_tbl (uc).attribute2
15820                                  , p_attribute3                  => p_constraints_tbl (uc).attribute3
15821                                  , p_attribute4                  => p_constraints_tbl (uc).attribute4
15822                                  , p_attribute5                  => p_constraints_tbl (uc).attribute5
15823                                  , p_attribute6                  => p_constraints_tbl (uc).attribute6
15824                                  , p_attribute7                  => p_constraints_tbl (uc).attribute7
15825                                  , p_attribute8                  => p_constraints_tbl (uc).attribute8
15826                                  , p_attribute9                  => p_constraints_tbl (uc).attribute9
15827                                  , p_attribute10                 => p_constraints_tbl (uc).attribute10
15828                                  , p_attribute11                 => p_constraints_tbl (uc).attribute11
15829                                  , p_attribute12                 => p_constraints_tbl (uc).attribute12
15830                                  , p_attribute13                 => p_constraints_tbl (uc).attribute13
15831                                  , p_attribute14                 => p_constraints_tbl (uc).attribute14
15832                                  , p_attribute15                 => p_constraints_tbl (uc).attribute15
15833                                  , x_return_msg                  => l_return_msg
15834                                  , x_return_status               => l_return_status);
15835 
15836             IF l_return_msg = 'VALID'
15837             THEN
15838                x_return_status                      := fnd_api.g_ret_sts_success;
15839             ELSE
15840                x_return_status                      := fnd_api.g_ret_sts_error;
15841             END IF;
15842          END IF;
15843         */
15844 
15845 
15846         -- Below code has been added by Vivek on 11-DEC-2010
15847 
15848       IF (get_attribute_status('PN_VAR_CONSTRAINTS') > 0) THEN
15849         IF NOT ((p_constraints_tbl (uc).attribute_category = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute_category IS NULL)
15850                                         AND (p_constraints_tbl (uc).attribute1 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute1 IS NULL)
15851                                         AND (p_constraints_tbl (uc).attribute2 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute2 IS NULL)
15852                                         AND (p_constraints_tbl (uc).attribute3 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute3 IS NULL)
15853                                         AND (p_constraints_tbl (uc).attribute4 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute4 IS NULL)
15854                                         AND (p_constraints_tbl (uc).attribute5 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute5 IS NULL)
15855                                         AND (p_constraints_tbl (uc).attribute6 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute6 IS NULL)
15856                                         AND (p_constraints_tbl (uc).attribute7 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute7 IS NULL)
15857                                         AND (p_constraints_tbl (uc).attribute8 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute8 IS NULL)
15858                                         AND (p_constraints_tbl (uc).attribute9 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute9 IS NULL)
15859                                         AND (p_constraints_tbl (uc).attribute10 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute10 IS NULL)
15860                                         AND (p_constraints_tbl (uc).attribute11 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute11 IS NULL)
15861                                         AND (p_constraints_tbl (uc).attribute12 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute12 IS NULL)
15862                                         AND (p_constraints_tbl (uc).attribute13 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute13 IS NULL)
15863                                         AND (p_constraints_tbl (uc).attribute14 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute14 IS NULL)
15864                                         AND (p_constraints_tbl (uc).attribute15 = pn_varen_util.g_pn_miss_char OR p_constraints_tbl (uc).attribute15 IS NULL)
15865                                 ) THEN
15866             pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_CONSTRAINTS'
15867                                            , p_attribute_category          => p_constraints_tbl (uc).attribute_category
15868                                            , p_attribute1                  => p_constraints_tbl (uc).attribute1
15869                                            , p_attribute2                  => p_constraints_tbl (uc).attribute2
15870                                            , p_attribute3                  => p_constraints_tbl (uc).attribute3
15871                                            , p_attribute4                  => p_constraints_tbl (uc).attribute4
15872                                            , p_attribute5                  => p_constraints_tbl (uc).attribute5
15873                                            , p_attribute6                  => p_constraints_tbl (uc).attribute6
15874                                            , p_attribute7                  => p_constraints_tbl (uc).attribute7
15875                                            , p_attribute8                  => p_constraints_tbl (uc).attribute8
15876                                            , p_attribute9                  => p_constraints_tbl (uc).attribute9
15877                                            , p_attribute10                 => p_constraints_tbl (uc).attribute10
15878                                            , p_attribute11                 => p_constraints_tbl (uc).attribute11
15879                                            , p_attribute12                 => p_constraints_tbl (uc).attribute12
15880                                            , p_attribute13                 => p_constraints_tbl (uc).attribute13
15881                                            , p_attribute14                 => p_constraints_tbl (uc).attribute14
15882                                            , p_attribute15                 => p_constraints_tbl (uc).attribute15
15883                                            , x_return_msg                  => l_return_msg
15884                                            , x_return_status               => x_return_status
15885                                             );
15886 
15887                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
15888                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15889                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT: PN_VAR_CONSTRAINTS Descriptive Fields Error '||l_return_msg);
15890                   fnd_msg_pub.ADD;
15891                   RAISE fnd_api.g_exc_error;
15892                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
15893                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15894                   fnd_message.set_token ('ERR_MSG', 'UPDATE_VAR_RENT : PN_VAR_CONSTRAINTS Descriptive Fields Error '||l_return_msg);
15895                   fnd_msg_pub.ADD;
15896                   RAISE fnd_api.g_exc_unexpected_error;
15897                END IF;
15898         END IF;
15899       END IF; -- End of attributes valitions in pn_var_constraints
15900 
15901         ------------------------End of 11-Dec-2010 DFF changes----------------------------
15902          IF (p_validate_flag <> 'Y')                                    --and l_return_status = 'S')
15903          THEN
15904             pn_varen_util.pvt_debug
15905                            ('PN_VAREN_PVT: Update_Var_Rent: Start of update_varen_dates Procedure'
15906                           , 3);
15907             pn_varen_util.pvt_debug
15908                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.year_start_date before update_varen_dates procedure is : '
15909                 || p_constraints_tbl (uc).constr_default_id
15910               , 3);
15911             pn_varen_util.pvt_debug
15912                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.year_start_date before update_varen_dates procedure is : '
15913                 || p_constraints_tbl (uc).constr_default_num
15914               , 3);
15915             pn_varen_util.pvt_debug
15916                (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_upd_var_rent_rec.year_start_date before update_varen_dates procedure is : '
15917                 || p_constraints_tbl (uc).var_rent_id
15918               , 3);
15919             pn_varen_util.pvt_debug
15920                ('PN_VAREN_PVT: Update_Var_Rent: Calling constr_ext procedure for no of constraint records. '
15921               , 3);
15922             pn_varen_util.constr_ext (p_var_rent_id                 => p_constraints_tbl (uc).var_rent_id
15923                                     , x_constr_count                => l_constr_count
15924                                     , x_return_status               => x_return_status);
15925             pn_varen_util.pvt_debug
15926                            (   'PN_VAREN_PVT: Update_Var_Rent: Status of constr_ext procedure is  '
15927                             || x_return_status
15928                           , 3);
15929             pn_varen_util.pvt_debug
15930                (   'PN_VAREN_PVT: Update_Var_Rent: No of Constratint records for the Variable Rent is  '
15931                 || l_constr_count
15932               , 3);
15933 
15934             IF (   p_constraints_tbl (uc).constr_default_id IS NULL
15935                 OR p_constraints_tbl (uc).constr_default_id = pn_varen_util.g_pn_miss_num)
15936             THEN
15937 --------------------------
15938 -- Create Constraints
15939 --------------------------
15940                IF (l_constr_count < 2)
15941                THEN
15942                   pn_varen_util.pvt_debug
15943                          ('PN_VAREN_PVT: Update_Var_Rent: Start of val_ins_constraints procedure '
15944                         , 3);
15945 
15946                   IF p_constraints_tbl (uc).constr_type_code <> l_pn_var_constraints.type_code
15947                   THEN
15948                      val_ins_constraints (p_constraints_tbl_type        => p_constraints_tbl
15949                                         , p_validate_flag               => p_validate_flag
15950                                         , p_generate_constraints        => 'N'
15951                                         , x_return_status               => x_return_status);
15952                      pn_varen_util.pvt_debug
15953                         (   'PN_VAREN_PVT: Update_Var_Rent: Status of val_ins_constraints procedure is '
15954                          || x_return_status
15955                        , 3);
15956                      IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
15957                      THEN
15958                         fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15959                         fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:VAL_INS_CONSTRAINTS procedure returned error');
15960                         fnd_msg_pub.ADD;
15961                         RAISE fnd_api.g_exc_error;
15962                      END IF;
15963                   END IF;
15964                ELSIF (l_constr_count > 2)
15965                THEN
15966                   --1234
15967                   pn_varen_util.pvt_debug
15968                      ('PN_VAREN_PVT: Update_Var_Rent: Only two constraints records can exists with constraint type as MAX and MIN.'
15969                     , 3);
15970                   fnd_message.set_name ('PN', 'PN_VAR_NO_CONSTR_REC');
15971                   fnd_msg_pub.ADD;
15972                   RAISE fnd_api.g_exc_error;
15973                --x_return_status := fnd_api.g_ret_sts_error;
15974                END IF;                                                         -- l_constr_count >=1
15975             --p_constraints_tbl (uc).constr_default_id                                     :=  l_pn_var_constraints.constr_default_id;
15976             ELSE
15977                IF ln_const_count = 0
15978                THEN
15979                   pn_varen_util.pvt_debug
15980                                   (   'PN_VAREN_PVT: Update_Var_Rent: Value of ln_const_count is '
15981                                    || ln_const_count
15982                                  , 3);
15983                   pn_varen_util.pvt_debug
15984                            ('PN_VAREN_PVT: Update_Var_Rent: Start of update_constraints Procedure '
15985                           , 3);
15986 --------------------------
15987 -- Update Constraints
15988 --------------------------
15989                   update_constraints (p_constraints_rec_type        => p_constraints_tbl (uc)
15990                                     , x_return_status               => x_return_status);
15991                   pn_varen_util.pvt_debug
15992                       (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_varen_dates Procedure :'
15993                        || x_return_status
15994                      , 3);
15995                   IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
15996                   THEN
15997                      fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
15998                      fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPDATE_CONSTRAINTS procedure returned error');
15999                      fnd_msg_pub.ADD;
16000                      RAISE fnd_api.g_exc_error;
16001                  END IF;
16002                ELSE
16003                   pn_varen_util.pvt_debug
16004                      (   'PN_VAREN_PVT: Update_Var_Rent: Value of p_undo_constratints should be ''Y'' then only record could be updated.'
16005                       || x_return_status
16006                     , 3);
16007                END IF;
16008             END IF;                              -- p_constraints_tbl (uc).constr_default_id IS NULL
16009          END IF;
16010          --END LOOP;                                                                               -- Constraints end loop
16011       --END IF;                                                                                    -- c_pn_var_constraints
16012       END LOOP;
16013    END IF;                                                               --p_constraints_tbl.COUNT>0
16014 
16015    IF     p_allow_abat_tbl.COUNT > 0
16016       AND l_undo_periods <> 'Y'
16017    THEN
16018       FOR ua IN p_allow_abat_tbl.FIRST .. p_allow_abat_tbl.LAST
16019       LOOP
16020          l_pn_var_abat:=NULL;
16021          OPEN c_pn_var_abat_defaults (p_allow_abat_tbl (ua).abatement_id
16022                                     , p_allow_abat_tbl (ua).var_rent_id);
16023 
16024          FETCH c_pn_var_abat_defaults
16025          INTO  l_pn_var_abat;
16026 
16027          CLOSE c_pn_var_abat_defaults;
16028 
16029       --IF (c_pn_var_abat_defaults%NOTFOUND)
16030       --THEN
16031       --   x_return_status                                                              := fnd_api.g_ret_sts_error;
16032       --   pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_abat_defaults not found'
16033       --                          , 3
16034       --                           );
16035       --ELSE
16036       --   pn_varen_util.pvt_debug ('PN_VAREN_PVT: Update_Var_Rent: Cursor c_pn_var_abat_defaults found'
16037       --                          , 3
16038       --                           );
16039       --   pn_varen_util.pvt_debug
16040       --       (   'PN_VAREN_PVT: Update_Var_Rent: After the cursor is open, value of p_upd_var_rent_rec.var_rent_id is '
16041       --        || p_upd_var_rent_rec.var_rent_id
16042       --      , 3
16043       --       );
16044 --------------------------------------------------------------------------------
16045 -- Initialize Update Allowances and Abatements
16046 --------------------------------------------------------------------------------
16047          l_var_commencement_date              := NULL;
16048          l_var_termination_date               := NULL;
16049 
16050          --FOR ua IN p_allow_abat_tbl.FIRST .. p_allow_abat_tbl.LAST
16051          --LOOP
16052 -------------------------------------------------------------------------------------------------
16053 -- Fetching commencement date, termination date for abatement start date and end date comparision
16054 -------------------------------------------------------------------------------------------------
16055          BEGIN
16056             SELECT   commencement_date
16057                    , termination_date
16058             INTO     l_var_commencement_date
16059                    , l_var_termination_date
16060             FROM     pn_var_rents_all
16061             WHERE    (   var_rent_id = p_allow_abat_tbl (ua).var_rent_id
16062                       OR rent_num = p_allow_abat_tbl (ua).var_rent_num)
16063             AND      org_id = g_org_id                                                    --l_org_id
16064             GROUP BY var_rent_id
16065                    , commencement_date
16066                    , termination_date;
16067 
16068             x_return_status                      := fnd_api.g_ret_sts_success;
16069          EXCEPTION
16070             WHEN OTHERS
16071             THEN
16072                pn_varen_util.pvt_debug
16073                   (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Number or Variable Rent Id doesnot exists :'
16074                    || SQLERRM
16075                  , 3);
16076                x_return_status                      := fnd_api.g_ret_sts_error;
16077                l_upd_allow_abat_val                 := 'N';
16078          END;
16079 
16080          IF    (   p_allow_abat_tbl (ua).var_rent_id IS NULL
16081                 OR p_allow_abat_tbl (ua).var_rent_id = pn_varen_util.g_pn_miss_num)
16082             OR (   p_allow_abat_tbl (ua).var_rent_num IS NULL
16083                 OR p_allow_abat_tbl (ua).var_rent_num = pn_varen_util.g_pn_miss_char)
16084          THEN
16085             p_allow_abat_tbl (ua).var_rent_id    := l_pn_var_abat.var_rent_id;
16086          --p_allow_abat_tbl (ua).var_rent_num                  := l_pn_var_abat.var_rent_num;
16087          END IF;
16088 
16089          IF    (    p_allow_abat_tbl (ua).abat_type_code IS NOT NULL
16090                 AND p_allow_abat_tbl (ua).abat_type_code <> pn_varen_util.g_pn_miss_char)
16091             OR (    p_allow_abat_tbl (ua).abat_type_meaning IS NOT NULL
16092                 AND p_allow_abat_tbl (ua).abat_type_meaning <> pn_varen_util.g_pn_miss_char)
16093          THEN
16094             pn_varen_util.pvt_debug
16095                ('PN_VAREN_PVT: Update_Var_Rent: Calling Allowance and Abatements  Validation Lookup - Inside the Loop'
16096               , 3);
16097             pn_varen_util.pvt_debug
16098                      ('PN_VAREN_PVT: Update_Var_Rent: Calling Allowance and Abatements Validation'
16099                     , 3);
16100             pn_varen_util.validate_lookups
16101                                         (p_lookup_type                 => g_abate_type_code
16102                                        , x_lookup_meaning              => p_allow_abat_tbl (ua).abat_type_meaning
16103                                        , x_lookup_code                 => p_allow_abat_tbl (ua).abat_type_code
16104                                        , x_return_status               => x_return_status);
16105             pn_varen_util.pvt_debug
16106                         (   'PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatements Output Code :'
16107                          || p_allow_abat_tbl (ua).abat_type_code
16108                        , 3);
16109 
16110             IF (x_return_status = fnd_api.g_ret_sts_error)
16111             THEN
16112                fnd_message.set_name ('PN', 'PN_VAR_ALL_ABA_TY');
16113                --x_return_status                                                              := fnd_api.g_ret_sts_error;
16114                pn_varen_util.pvt_debug
16115                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Please provide correct Allowance and Abatements Type Code Expected Error :'
16116                    || p_allow_abat_tbl (ua).abat_type_meaning
16117                  , 3);
16118                pn_varen_util.pvt_debug
16119                   ('PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatements Lookup Validation Error'
16120                  , 3);
16121                --
16122                l_upd_allow_abat_val                 := 'N';
16123                fnd_msg_pub.ADD;
16124                RAISE fnd_api.g_exc_error;
16125             --
16126 
16127             --
16128             ELSIF (l_return_status = fnd_api.g_ret_sts_unexp_error)
16129             THEN
16130                --x_return_status                                                              :=fnd_api.g_ret_sts_unexp_error;
16131                pn_varen_util.pvt_debug
16132                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatements  Meaning Un-Expected Error :'
16133                    || p_allow_abat_tbl (ua).abat_type_meaning
16134                  , 3);
16135                pn_varen_util.pvt_debug
16136                   ('PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatements Lookup Validation Unexpected Error'
16137                  , 3);
16138                l_upd_allow_abat_val                 := 'N';
16139                RAISE fnd_api.g_exc_unexpected_error;
16140                --
16141                fnd_message.set_name ('PN', 'PN_VAR_ALL_ABA_TY');
16142                fnd_msg_pub.ADD;
16143             --
16144 
16145             --
16146 
16147             --
16148             ELSE
16149                x_return_status                      := fnd_api.g_ret_sts_success;
16150                pn_varen_util.pvt_debug
16151                       (   'PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatements Code Success :'
16152                        || p_allow_abat_tbl (ua).abat_type_code
16153                      , 3);
16154                pn_varen_util.pvt_debug
16155                   ('PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatements Lookup Validation Success'
16156                  , 3);
16157             END IF;
16158          ELSE
16159             p_allow_abat_tbl (ua).abat_type_code := l_pn_var_abat.type_code;
16160          --p_allow_abat_tbl (ua).abat_type_meaning             := l_pn_var_abat.abat_type_meaning;
16161          END IF;
16162 
16163          /*         IF   ( p_allow_abat_tbl (ua).abat_start_date               is null
16164                        or p_allow_abat_tbl (ua).abat_start_date               = pn_varen_util.g_pn_miss_date
16165                        )
16166                   THEN
16167                        p_allow_abat_tbl (ua).abat_start_date               := l_pn_var_abat.start_date;
16168                   END IF;
16169          */
16170          IF (   p_allow_abat_tbl (ua).abat_end_date IS NULL
16171              OR p_allow_abat_tbl (ua).abat_end_date = pn_varen_util.g_pn_miss_date)
16172          THEN
16173             p_allow_abat_tbl (ua).abat_end_date  := l_pn_var_abat.end_date;
16174          END IF;
16175 
16176 -----------------------------------------------------------------------------
16177 -- Allowance and Abatement Start date should be always greater than end date
16178 -----------------------------------------------------------------------------
16179          IF (p_allow_abat_tbl (ua).abat_start_date < p_allow_abat_tbl (ua).abat_end_date)
16180          THEN
16181             x_return_status                      := fnd_api.g_ret_sts_success;
16182             pn_varen_util.pvt_debug
16183                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date is less than Allowance and Abatement end date: '
16184                 || p_allow_abat_tbl (ua).abat_start_date
16185                 || ' and '
16186                 || p_allow_abat_tbl (ua).abat_end_date
16187               , 3);
16188          ELSE
16189             --
16190             l_upd_allow_abat_val                 := 'N';
16191             --x_return_status                                                              := fnd_api.g_ret_sts_error;
16192             --
16193             fnd_message.set_name ('PN', 'PN_ST_DT_INV_MSG');
16194             pn_varen_util.pvt_debug
16195                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowances and abatements must start on the same date as the invoice period.Please change the allowance or abatement start date. '
16196                 || p_allow_abat_tbl (ua).abat_start_date
16197                 || ' and '
16198                 || p_allow_abat_tbl (ua).abat_end_date
16199               , 3);
16200             fnd_msg_pub.ADD;
16201             RAISE fnd_api.g_exc_error;
16202          --
16203 
16204          --
16205          END IF;
16206 
16207 ---------------------------------------------------------------------
16208 --- Validation of Allowance and Abatement Start date
16209 ----------------------------------------------------------------------
16210          IF (    p_allow_abat_tbl (ua).abat_start_date IS NOT NULL
16211              AND p_allow_abat_tbl (ua).abat_start_date <> pn_varen_util.g_pn_miss_date)
16212          THEN
16213             pn_varen_util.pvt_debug
16214                (   'PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatement Start date is not null : '
16215                 || p_allow_abat_tbl (ua).abat_start_date
16216               , 3);
16217             pn_varen_util.pvt_debug
16218                            (   'PN_VAREN_PVT: Update_Var_Rent: Allowance and Abatement end date : '
16219                             || p_allow_abat_tbl (ua).abat_end_date
16220                           , 3);
16221             pn_varen_util.pvt_debug
16222                             (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Commencement Date : '
16223                              || l_var_commencement_date
16224                            , 3);
16225             pn_varen_util.pvt_debug
16226                               (   'PN_VAREN_PVT: Update_Var_Rent: Variable Rent Termination Date: '
16227                                || l_var_termination_date
16228                              , 3);
16229 
16230             IF (p_allow_abat_tbl (ua).abat_start_date = l_var_commencement_date)
16231             THEN
16232                x_return_status                      := fnd_api.g_ret_sts_success;
16233                pn_varen_util.pvt_debug
16234                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date Validation Success :'
16235                    || p_allow_abat_tbl (ua).abat_start_date
16236                  , 3);
16237                pn_varen_util.pvt_debug
16238                   (   'PN_VAR_RENT_PVT: Update_Var_Rent:  Allowance and Abatement Start date Validation Success :'
16239                    || p_allow_abat_tbl (ua).abat_start_date
16240                  , 3);
16241             ELSIF (   p_allow_abat_tbl (ua).abat_start_date < l_var_commencement_date
16242                    OR p_allow_abat_tbl (ua).abat_start_date > l_var_termination_date)
16243             THEN
16244                --
16245 
16246                --x_return_status                                                              := fnd_api.g_ret_sts_error;
16247                l_upd_allow_abat_val                 := 'N';
16248                fnd_message.set_name ('PN', 'PN_VAR_ABT_STRDT_VAL_MSG');
16249                fnd_msg_pub.ADD;
16250                pn_varen_util.pvt_debug
16251                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date Validation Error : '
16252                    || p_allow_abat_tbl (ua).abat_start_date
16253                    || 'Please ensure that the start date for a rolling allowance or fixed abatement is within the variable rent agreement dates.'
16254                  , 3);
16255                RAISE fnd_api.g_exc_error;
16256             --
16257 
16258             --
16259             ELSIF (p_allow_abat_tbl (ua).abat_start_date > p_allow_abat_tbl (ua).abat_end_date)
16260             THEN
16261                --
16262                fnd_message.set_name ('PN', 'PN_STR_GRT_END_DT');
16263                pn_varen_util.pvt_debug
16264                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date Validation Error : '
16265                    || p_allow_abat_tbl (ua).abat_start_date
16266                    || ' and '
16267                    || p_allow_abat_tbl (ua).abat_end_date
16268                    || 'Please ensure that the start date for a rolling allowance or fixed abatement is less than the end date.'
16269                  , 3);
16270                --
16271                l_upd_allow_abat_val                 := 'N';
16272                --x_return_status                                                              := fnd_api.g_ret_sts_error;
16273                fnd_msg_pub.ADD;
16274                RAISE fnd_api.g_exc_error;
16275             --
16276 
16277             --
16278 
16279             --
16280             END IF;
16281          ELSE
16282             --
16283             p_allow_abat_tbl (ua).abat_start_date := l_var_commencement_date;
16284             --
16285             x_return_status                      := fnd_api.g_ret_sts_success;
16286             pn_varen_util.pvt_debug
16287                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date is null then value is Defaulted Variable Rent Commencement Date : '
16288                 || l_var_commencement_date
16289                 || ' Success'
16290               , 3);
16291             pn_varen_util.pvt_debug
16292                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement Start date is null then value is Defaulted Variable Rent Commencement Date  : '
16293                 || l_var_commencement_date
16294                 || ' Success'
16295               , 3);
16296          END IF;
16297 
16298 ----------------------------------------------------------------------
16299 --- Validation of Allowance and Abatement end date
16300 ----------------------------------------------------------------------
16301          IF (    p_allow_abat_tbl (ua).abat_end_date IS NOT NULL
16302              AND p_allow_abat_tbl (ua).abat_end_date <> pn_varen_util.g_pn_miss_date)
16303          THEN
16304             pn_varen_util.pvt_debug
16305                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement end date is not null : '
16306                 || p_allow_abat_tbl (ua).abat_end_date
16307               , 3);
16308             pn_varen_util.pvt_debug
16309                            (   'PN_VAR_RENT_PVT: Update_Var_Rent: Variable Rent Termination Date: '
16310                             || l_var_termination_date
16311                           , 3);
16312 
16313             IF (p_allow_abat_tbl (ua).abat_end_date = l_var_termination_date)
16314             THEN
16315                --
16316                x_return_status                      := fnd_api.g_ret_sts_success;
16317                --
16318                pn_varen_util.pvt_debug
16319                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement end date Validation Success :'
16320                    || p_allow_abat_tbl (ua).abat_end_date
16321                  , 3);
16322             --
16323             ELSIF (   p_allow_abat_tbl (ua).abat_end_date > l_var_termination_date
16324                    OR p_allow_abat_tbl (ua).abat_end_date < l_var_commencement_date)
16325             THEN
16326                --
16327                x_return_status                      := fnd_api.g_ret_sts_error;
16328                --
16329                pn_varen_util.pvt_debug
16330                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement end Date Validation Error : '
16331                    || p_allow_abat_tbl (ua).abat_end_date
16332                    || 'Please ensure that the end date for a roslling allowance or fixed abatement is within the variable rent agreement dates.'
16333                  , 3);
16334                l_upd_allow_abat_val                 := 'N';
16335                fnd_message.set_name ('PN', 'PN_VAR_ABT_END_MSG');
16336                fnd_msg_pub.ADD;
16337                --
16338                RAISE fnd_api.g_exc_error;
16339             --
16340 
16341             --
16342             ELSIF (p_allow_abat_tbl (ua).abat_start_date > p_allow_abat_tbl (ua).abat_end_date)
16343             THEN
16344                --
16345                --x_return_status                                                              := fnd_api.g_ret_sts_error;
16346                pn_varen_util.pvt_debug
16347                   (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement end Date Validation Error : '
16348                    || p_allow_abat_tbl (ua).abat_end_date
16349                    || 'Please ensure that the start date for a rolling allowance or fixed abatement is less than the end date.'
16350                  , 3);
16351                l_upd_allow_abat_val                 := 'N';
16352                fnd_message.set_name ('PN', 'PN_STR_GRT_END_DT');
16353                fnd_msg_pub.ADD;
16354                RAISE fnd_api.g_exc_error;
16355             END IF;
16356          ELSE
16357             --
16358             p_allow_abat_tbl (ua).abat_end_date  := l_var_termination_date;
16359             --
16360             x_return_status                      := fnd_api.g_ret_sts_success;
16361             --
16362             pn_varen_util.pvt_debug
16363                (   'PN_VAR_RENT_PVT: Update_Var_Rent: Allowance and Abatement end Date is null then value is defaulted Termination Date  : '
16364                 || l_var_termination_date
16365                 || ' Success'
16366               , 3);
16367          END IF;
16368 
16369          IF (   p_allow_abat_tbl (ua).abat_amount IS NULL
16370              OR p_allow_abat_tbl (ua).abat_amount = pn_varen_util.g_pn_miss_num)
16371          THEN
16372             p_allow_abat_tbl (ua).abat_amount    := l_pn_var_abat.amount;
16373          END IF;
16374 
16375          IF (   p_allow_abat_tbl (ua).description IS NULL
16376              OR p_allow_abat_tbl (ua).description = pn_varen_util.g_pn_miss_char)
16377          THEN
16378             p_allow_abat_tbl (ua).description    := l_pn_var_abat.description;
16379          END IF;
16380 
16381          IF (   p_allow_abat_tbl (ua).comments IS NULL
16382              OR p_allow_abat_tbl (ua).comments = pn_varen_util.g_pn_miss_char)
16383          THEN
16384             p_allow_abat_tbl (ua).comments       := l_pn_var_abat.comments;
16385          END IF;
16386 
16387          IF (   p_allow_abat_tbl (ua).last_update_date IS NULL
16388              OR p_allow_abat_tbl (ua).last_update_date = pn_varen_util.g_pn_miss_date)
16389          THEN
16390             p_allow_abat_tbl (ua).last_update_date := g_sysdate;
16391          --:= l_pn_var_abat.last_update_date;
16392          END IF;
16393 
16394          IF (   p_allow_abat_tbl (ua).last_updated_by IS NULL
16395              OR p_allow_abat_tbl (ua).last_updated_by = pn_varen_util.g_pn_miss_num)
16396          THEN
16397             p_allow_abat_tbl (ua).last_updated_by := g_user_id;
16398          --:= l_pn_var_abat.last_updated_by;
16399          END IF;
16400 
16401          IF (   p_allow_abat_tbl (ua).creation_date IS NULL
16402              OR p_allow_abat_tbl (ua).creation_date = pn_varen_util.g_pn_miss_date)
16403          THEN
16404             p_allow_abat_tbl (ua).creation_date  := l_pn_var_abat.creation_date;
16405          END IF;
16406 
16407          IF (   p_allow_abat_tbl (ua).created_by IS NULL
16408              OR p_allow_abat_tbl (ua).created_by = pn_varen_util.g_pn_miss_num)
16409          THEN
16410             p_allow_abat_tbl (ua).created_by     := l_pn_var_abat.created_by;
16411          END IF;
16412 
16413          IF (   p_allow_abat_tbl (ua).last_update_login IS NULL
16414              OR p_allow_abat_tbl (ua).last_update_login = pn_varen_util.g_pn_miss_num)
16415          THEN
16416             p_allow_abat_tbl (ua).last_update_login := g_user_id;
16417          --:= l_pn_var_abat.last_update_login;
16418          END IF;
16419 
16420          IF (   p_allow_abat_tbl (ua).attribute_category IS NULL
16421              OR p_allow_abat_tbl (ua).attribute_category = pn_varen_util.g_pn_miss_char)
16422          THEN
16423             p_allow_abat_tbl (ua).attribute_category := l_pn_var_abat.attribute_category;
16424          END IF;
16425 
16426          IF (   p_allow_abat_tbl (ua).attribute1 IS NULL
16427              OR p_allow_abat_tbl (ua).attribute1 = pn_varen_util.g_pn_miss_char)
16428          THEN
16429             p_allow_abat_tbl (ua).attribute1     := l_pn_var_abat.attribute1;
16430          END IF;
16431 
16432          IF (   p_allow_abat_tbl (ua).attribute2 IS NULL
16433              OR p_allow_abat_tbl (ua).attribute2 = pn_varen_util.g_pn_miss_char)
16434          THEN
16435             p_allow_abat_tbl (ua).attribute2     := l_pn_var_abat.attribute2;
16436          END IF;
16437 
16438          IF (   p_allow_abat_tbl (ua).attribute3 IS NULL
16439              OR p_allow_abat_tbl (ua).attribute3 = pn_varen_util.g_pn_miss_char)
16440          THEN
16441             p_allow_abat_tbl (ua).attribute3     := l_pn_var_abat.attribute3;
16442          END IF;
16443 
16444          IF (   p_allow_abat_tbl (ua).attribute4 IS NULL
16445              OR p_allow_abat_tbl (ua).attribute4 = pn_varen_util.g_pn_miss_char)
16446          THEN
16447             p_allow_abat_tbl (ua).attribute4     := l_pn_var_abat.attribute4;
16448          END IF;
16449 
16450          IF (   p_allow_abat_tbl (ua).attribute5 IS NULL
16451              OR p_allow_abat_tbl (ua).attribute5 = pn_varen_util.g_pn_miss_char)
16452          THEN
16453             p_allow_abat_tbl (ua).attribute5     := l_pn_var_abat.attribute5;
16454          END IF;
16455 
16456          IF (   p_allow_abat_tbl (ua).attribute6 IS NULL
16457              OR p_allow_abat_tbl (ua).attribute6 = pn_varen_util.g_pn_miss_char)
16458          THEN
16459             p_allow_abat_tbl (ua).attribute6     := l_pn_var_abat.attribute6;
16460          END IF;
16461 
16462          IF (   p_allow_abat_tbl (ua).attribute7 IS NULL
16463              OR p_allow_abat_tbl (ua).attribute7 = pn_varen_util.g_pn_miss_char)
16464          THEN
16465             p_allow_abat_tbl (ua).attribute7     := l_pn_var_abat.attribute7;
16466          END IF;
16467 
16468          IF (   p_allow_abat_tbl (ua).attribute8 IS NULL
16469              OR p_allow_abat_tbl (ua).attribute8 = pn_varen_util.g_pn_miss_char)
16470          THEN
16471             p_allow_abat_tbl (ua).attribute8     := l_pn_var_abat.attribute8;
16472          END IF;
16473 
16474          IF (   p_allow_abat_tbl (ua).attribute9 IS NULL
16475              OR p_allow_abat_tbl (ua).attribute9 = pn_varen_util.g_pn_miss_char)
16476          THEN
16477             p_allow_abat_tbl (ua).attribute9     := l_pn_var_abat.attribute9;
16478          END IF;
16479 
16480          IF (   p_allow_abat_tbl (ua).attribute10 IS NULL
16481              OR p_allow_abat_tbl (ua).attribute10 = pn_varen_util.g_pn_miss_char)
16482          THEN
16483             p_allow_abat_tbl (ua).attribute10    := l_pn_var_abat.attribute10;
16484          END IF;
16485 
16486          IF (   p_allow_abat_tbl (ua).attribute11 IS NULL
16487              OR p_allow_abat_tbl (ua).attribute11 = pn_varen_util.g_pn_miss_char)
16488          THEN
16489             p_allow_abat_tbl (ua).attribute11    := l_pn_var_abat.attribute11;
16490          END IF;
16491 
16492          IF (   p_allow_abat_tbl (ua).attribute12 IS NULL
16493              OR p_allow_abat_tbl (ua).attribute12 = pn_varen_util.g_pn_miss_char)
16494          THEN
16495             p_allow_abat_tbl (ua).attribute12    := l_pn_var_abat.attribute12;
16496          END IF;
16497 
16498          IF (   p_allow_abat_tbl (ua).attribute13 IS NULL
16499              OR p_allow_abat_tbl (ua).attribute13 = pn_varen_util.g_pn_miss_char)
16500          THEN
16501             p_allow_abat_tbl (ua).attribute13    := l_pn_var_abat.attribute13;
16502          END IF;
16503 
16504          IF (   p_allow_abat_tbl (ua).attribute14 IS NULL
16505              OR p_allow_abat_tbl (ua).attribute14 = pn_varen_util.g_pn_miss_char)
16506          THEN
16507             p_allow_abat_tbl (ua).attribute14    := l_pn_var_abat.attribute14;
16508          END IF;
16509 
16510          IF (   p_allow_abat_tbl (ua).attribute15 IS NULL
16511              OR p_allow_abat_tbl (ua).attribute15 = pn_varen_util.g_pn_miss_char)
16512          THEN
16513             p_allow_abat_tbl (ua).attribute15    := l_pn_var_abat.attribute15;
16514          END IF;
16515 
16516 -------------------------------------------------------------------------------------------
16517 -- Validating Descriptive Flex fields
16518 -------------------------------------------------------------------------------------------
16519         -- Below code has been commented by Vivek on 11-DEC-2010
16520         /*
16521          IF (    p_allow_abat_tbl (ua).attribute_category IS NOT NULL
16522              AND p_allow_abat_tbl (ua).attribute_category <> pn_varen_util.g_pn_miss_char)
16523          THEN
16524             pn_varen_util.validate_flex_fields
16525                                    (p_desc_flex_name              => g_abat_desc_name
16526                                   , p_attribute_category          => p_allow_abat_tbl (ua).attribute_category
16527                                   , p_attribute1                  => p_allow_abat_tbl (ua).attribute1
16528                                   , p_attribute2                  => p_allow_abat_tbl (ua).attribute2
16529                                   , p_attribute3                  => p_allow_abat_tbl (ua).attribute3
16530                                   , p_attribute4                  => p_allow_abat_tbl (ua).attribute4
16531                                   , p_attribute5                  => p_allow_abat_tbl (ua).attribute5
16532                                   , p_attribute6                  => p_allow_abat_tbl (ua).attribute6
16533                                   , p_attribute7                  => p_allow_abat_tbl (ua).attribute7
16534                                   , p_attribute8                  => p_allow_abat_tbl (ua).attribute8
16535                                   , p_attribute9                  => p_allow_abat_tbl (ua).attribute9
16536                                   , p_attribute10                 => p_allow_abat_tbl (ua).attribute10
16537                                   , p_attribute11                 => p_allow_abat_tbl (ua).attribute11
16538                                   , p_attribute12                 => p_allow_abat_tbl (ua).attribute12
16539                                   , p_attribute13                 => p_allow_abat_tbl (ua).attribute13
16540                                   , p_attribute14                 => p_allow_abat_tbl (ua).attribute14
16541                                   , p_attribute15                 => p_allow_abat_tbl (ua).attribute15
16542                                   , x_return_msg                  => l_return_msg
16543                                   , x_return_status               => l_return_status);
16544 
16545             IF l_return_msg = 'VALID'
16546             THEN
16547                x_return_status                      := fnd_api.g_ret_sts_success;
16548             ELSE
16549                x_return_status                      := fnd_api.g_ret_sts_error;
16550                l_upd_allow_abat_val                 := 'N';
16551             END IF;
16552          END IF;
16553          */
16554    /* --Commented as DFF is not available
16555         -- Below code has been added by Vivek on 11-DEC-2010
16556     IF (get_attribute_status('PN_VAR_DEDUCTIONS') > 0) THEN
16557       IF NOT ((p_allow_abat_tbl (ua).attribute_category = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute_category IS NULL)
16558                                         AND (p_allow_abat_tbl (ua).attribute1 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute1 IS NULL)
16559                                         AND (p_allow_abat_tbl (ua).attribute2 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute2 IS NULL)
16560                                         AND (p_allow_abat_tbl (ua).attribute3 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute3 IS NULL)
16561                                         AND (p_allow_abat_tbl (ua).attribute4 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute4 IS NULL)
16562                                         AND (p_allow_abat_tbl (ua).attribute5 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute5 IS NULL)
16563                                         AND (p_allow_abat_tbl (ua).attribute6 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute6 IS NULL)
16564                                         AND (p_allow_abat_tbl (ua).attribute7 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute7 IS NULL)
16565                                         AND (p_allow_abat_tbl (ua).attribute8 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute8 IS NULL)
16566                                         AND (p_allow_abat_tbl (ua).attribute9 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute9 IS NULL)
16567                                         AND (p_allow_abat_tbl (ua).attribute10 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute10 IS NULL)
16568                                         AND (p_allow_abat_tbl (ua).attribute11 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute11 IS NULL)
16569                                         AND (p_allow_abat_tbl (ua).attribute12 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute12 IS NULL)
16570                                         AND (p_allow_abat_tbl (ua).attribute13 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute13 IS NULL)
16571                                         AND (p_allow_abat_tbl (ua).attribute14 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute14 IS NULL)
16572                                         AND (p_allow_abat_tbl (ua).attribute15 = pn_varen_util.g_pn_miss_char OR p_allow_abat_tbl (ua).attribute15 IS NULL)
16573                                 ) THEN
16574          pn_varen_util.validate_flex_fields (p_desc_flex_name              => 'PN_VAR_DEDUCTIONS'
16575                                            , p_attribute_category          => p_allow_abat_tbl (ua).attribute_category
16576                                            , p_attribute1                  => p_allow_abat_tbl (ua).attribute1
16577                                            , p_attribute2                  => p_allow_abat_tbl (ua).attribute2
16578                                            , p_attribute3                  => p_allow_abat_tbl (ua).attribute3
16579                                            , p_attribute4                  => p_allow_abat_tbl (ua).attribute4
16580                                            , p_attribute5                  => p_allow_abat_tbl (ua).attribute5
16581                                            , p_attribute6                  => p_allow_abat_tbl (ua).attribute6
16582                                            , p_attribute7                  => p_allow_abat_tbl (ua).attribute7
16583                                            , p_attribute8                  => p_allow_abat_tbl (ua).attribute8
16584                                            , p_attribute9                  => p_allow_abat_tbl (ua).attribute9
16585                                            , p_attribute10                 => p_allow_abat_tbl (ua).attribute10
16586                                            , p_attribute11                 => p_allow_abat_tbl (ua).attribute11
16587                                            , p_attribute12                 => p_allow_abat_tbl (ua).attribute12
16588                                            , p_attribute13                 => p_allow_abat_tbl (ua).attribute13
16589                                            , p_attribute14                 => p_allow_abat_tbl (ua).attribute14
16590                                            , p_attribute15                 => p_allow_abat_tbl (ua).attribute15
16591                                            , x_return_msg                  => l_return_msg
16592                                            , x_return_status               => x_return_status
16593                                             );
16594 
16595                IF (x_return_status = fnd_api.g_ret_sts_error) THEN
16596                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
16597                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_ALLOW_ABATE Descriptive Fields Error');
16598                   fnd_msg_pub.ADD;
16599                   RAISE fnd_api.g_exc_error;
16600                ELSIF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
16601                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
16602                   fnd_message.set_token ('ERR_MSG', 'Var Rent : PN_ALLOW_ABATE Descriptive Fields Error');
16603                   fnd_msg_pub.ADD;
16604                   RAISE fnd_api.g_exc_unexpected_error;
16605                END IF;
16606         END IF;
16607       END IF; -- End of attributes valitions in update var Allow and Abate
16608       */
16609 
16610         ------------------------End of 11-Dec-2010 DFF changes----------------------------
16611          IF (   p_allow_abat_tbl (ua).org_id IS NULL
16612              OR p_allow_abat_tbl (ua).org_id = pn_varen_util.g_pn_miss_num)
16613          THEN
16614             p_allow_abat_tbl (ua).org_id         := l_pn_var_abat.org_id;
16615          END IF;
16616 
16617          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: x_return_status : '
16618                                   || x_return_status
16619                                 , 3);
16620          pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: l_upd_allow_abat_val : '
16621                                   || l_upd_allow_abat_val
16622                                 , 3);
16623 
16624          IF l_upd_allow_abat_val = 'N'
16625          THEN
16626             x_return_status                      := fnd_api.g_ret_sts_error;
16627          END IF;
16628 
16629 -------------------------------------------------------------------
16630 -- End of Allowances and Abatements validation and initialization
16631 -------------------------------------------------------------------
16632          IF (   p_allow_abat_tbl (ua).abatement_id IS NULL
16633              OR p_allow_abat_tbl (ua).abatement_id = pn_varen_util.g_pn_miss_num)
16634          THEN
16635 --------------------------------------------------
16636 -- Creation of New Allowance and Abatement record
16637 --------------------------------------------------
16638             pn_varen_util.pvt_debug
16639                           ('PN_VAREN_PVT: Update_Var_Rent: Start of val_ins_allow_abat procedure '
16640                          , 3);
16641             val_ins_allow_abat (p_allow_abat_tbl_type         => p_allow_abat_tbl
16642                               , p_validate_flag               => p_validate_flag
16643                               , x_return_status               => x_return_status);
16644                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
16645                THEN
16646                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
16647                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:VAL_INS_ALLOW_ABAT procedure returned error');
16648                   fnd_msg_pub.ADD;
16649                   RAISE fnd_api.g_exc_error;
16650               ELSE
16651                   l_allow_abat_update                  := 'Y';
16652               END IF;
16653 
16654             pn_varen_util.pvt_debug
16655                     (   'PN_VAREN_PVT: Update_Var_Rent: Status of val_ins_allow_abat procedure is '
16656                      || x_return_status
16657                    , 3);
16658             pn_varen_util.pvt_debug
16659                              (   'PN_VAREN_PVT: Update_Var_Rent: Value of l_allow_abat_update is :'
16660                               || l_allow_abat_update
16661                             , 3);
16662          ELSE
16663 ----------------------------------------------------
16664 -- Update of existing Allowance and Abatement record
16665 ----------------------------------------------------
16666             IF x_return_status = fnd_api.g_ret_sts_success                                    --'S'
16667             THEN
16668                pn_varen_util.pvt_debug
16669                            ('PN_VAREN_PVT: Update_Var_Rent: Start of update_allow_abat procedure '
16670                           , 3);
16671                update_allow_abat (p_allow_abat_rec_type         => p_allow_abat_tbl (ua)
16672                                 , x_return_status               => x_return_status);
16673                pn_varen_util.pvt_debug
16674                     (   'PN_VAREN_PVT: Update_Var_Rent: Status of update_allow_abat procedure is '
16675                      || x_return_status
16676                    , 3);
16677                IF x_return_status <> fnd_api.g_ret_sts_success                                    --'S'
16678                THEN
16679                   fnd_message.set_name ('PN', 'PN_OTHERS_EXCEPTION');
16680                   fnd_message.set_token ('ERR_MSG', 'PN_VAREN_PVT: Update_Var_Rent:UPDATE_ALLOW_ABAT procedure returned error');
16681                   fnd_msg_pub.ADD;
16682                   RAISE fnd_api.g_exc_error;
16683               END IF;
16684             END IF;                                                               -- x_return_status
16685          END IF;                                        --p_allow_abat_tbl (ua).abatement_id IS NULL
16686            --END LOOP;
16687         --END IF;
16688       --CLOSE c_pn_var_abat_defaults;
16689       END LOOP;
16690    END IF;                                                              --  p_allow_abat_tbl.COUNT>0
16691 
16692    -- c_pn_var_abat_defaults
16693    IF p_commit = fnd_api.g_true
16694    THEN
16695       COMMIT;
16696    END IF;
16697    --x_return_status                      := x_return_status;
16698 -- Commented by Vivek 0n 02-DEC-2010
16699 /*
16700 EXCEPTION
16701    WHEN OTHERS
16702    THEN
16703       pn_varen_util.pvt_debug (   'PN_VAREN_PVT: Update_Var_Rent: Exception Result of Update_Var_Rent :'
16704                                || SQLERRM
16705                              , 3
16706                               );*/
16707 -- Added by Vivek on 02-DEC-2010
16708 EXCEPTION
16709    WHEN fnd_api.g_exc_error
16710    THEN
16711       pn_index_rent_pvt.DEBUG
16712                         (   'PN_VAREN_PVT: Update_Var_Rent: Exception Result of Update_Var_Rent :'
16713                          || '-'
16714                          || SQLERRM
16715                        , 5);
16716       x_return_status                      := fnd_api.g_ret_sts_error;
16717       RAISE;
16718 
16719    WHEN OTHERS
16720    THEN
16721       pn_index_rent_pvt.DEBUG
16722                         (   'PN_VAREN_PVT: Update_Var_Rent: Exception Result of Update_Var_Rent :'
16723                          || '-'
16724                          || SQLERRM
16725                        , 5);
16726       x_return_status                      := fnd_api.g_ret_sts_unexp_error;
16727       RAISE;
16728 END update_var_rent;
16729 
16730 FUNCTION get_attribute_status (
16731    p_desc_name                         VARCHAR2)
16732    RETURN NUMBER
16733 AS
16734    l_count   NUMBER := 0;
16735 BEGIN
16736    SELECT COUNT (1)
16737    INTO   l_count
16738    FROM   fnd_descr_flex_col_usage_vl
16739    WHERE  descriptive_flexfield_name = UPPER (TRIM (p_desc_name))
16740    AND    enabled_flag = 'Y'
16741    AND    display_flag = 'Y';
16742 
16743    RETURN l_count;
16744 EXCEPTION
16745    WHEN OTHERS
16746    THEN
16747       l_count                              := 0;
16748       RETURN l_count;
16749 END get_attribute_status;
16750 END pn_varen_pvt;