DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_APPLICATIONS_PKG

Source


1 PACKAGE BODY igs_fi_applications_pkg AS
2 /* $Header: IGSSI94B.pls 115.12 2003/02/17 08:46:58 pathipat ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_fi_applications%ROWTYPE;
6   new_references igs_fi_applications%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    ,
11     x_application_id                    IN     NUMBER      ,
12     x_application_type                  IN     VARCHAR2    ,
13     x_invoice_id                        IN     NUMBER      ,
14     x_credit_id                         IN     NUMBER      ,
15     x_credit_activity_id                IN     NUMBER      ,
16     x_amount_applied                    IN     NUMBER      ,
17     x_apply_date                        IN     DATE        ,
18     x_link_application_id               IN     NUMBER      ,
19     x_dr_account_cd                     IN     VARCHAR2    ,
20     x_cr_account_cd                     IN     VARCHAR2    ,
21     x_dr_gl_code_ccid                   IN     NUMBER      ,
22     x_cr_gl_code_ccid                   IN     NUMBER      ,
23     x_applied_invoice_lines_id          IN     NUMBER      ,
24     x_appl_hierarchy_id                 IN     NUMBER      ,
25     x_posting_id                        IN     NUMBER      ,
26     x_creation_date                     IN     DATE        ,
27     x_created_by                        IN     NUMBER      ,
28     x_last_update_date                  IN     DATE        ,
29     x_last_updated_by                   IN     NUMBER      ,
30     x_last_update_login                 IN     NUMBER      ,
31     x_gl_date                           IN     DATE        ,
32     x_gl_posted_date                    IN     DATE        ,
33     x_posting_control_id                IN     NUMBER
34   ) AS
35   /*
36   ||  Created By : BDEVARAK
37   ||  Created On : 26-APR-2001
38   ||  Purpose : Initialises the Old and New references for the columns of the table.
39   ||  Known limitations, enhancements or remarks :
40   ||  Change History :
41   ||  Who             When            What
42   ||smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
43   ||                                POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
44   ||  (reverse chronological order - newest change first)
45   */
46 
47     CURSOR cur_old_ref_values IS
48       SELECT   *
49       FROM     IGS_FI_APPLICATIONS
50       WHERE    rowid = x_rowid;
51 
52   BEGIN
53 
54     l_rowid := x_rowid;
55 
56     -- Code for setting the Old and New Reference Values.
57     -- Populate Old Values.
58     OPEN cur_old_ref_values;
59     FETCH cur_old_ref_values INTO old_references;
60     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
61       CLOSE cur_old_ref_values;
62       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
63       igs_ge_msg_stack.add;
64       app_exception.raise_exception;
65       RETURN;
66     END IF;
67     CLOSE cur_old_ref_values;
68 
69     -- Populate New Values.
70     new_references.application_id                    := x_application_id;
71     new_references.application_type                  := x_application_type;
72     new_references.invoice_id                        := x_invoice_id;
73     new_references.credit_id                         := x_credit_id;
74     new_references.credit_activity_id                := x_credit_activity_id;
75     new_references.amount_applied                    := x_amount_applied;
76     new_references.apply_date                        := x_apply_date;
77     new_references.link_application_id               := x_link_application_id;
78     new_references.dr_account_cd                     := x_dr_account_cd;
79     new_references.cr_account_cd                     := x_cr_account_cd;
80     new_references.dr_gl_code_ccid                   := x_dr_gl_code_ccid;
81     new_references.cr_gl_code_ccid                   := x_cr_gl_code_ccid;
82     new_references.applied_invoice_lines_id          := x_applied_invoice_lines_id;
83     new_references.appl_hierarchy_id                 := x_appl_hierarchy_id;
84     new_references.posting_id                        := x_posting_id;
85     new_references.gl_date                           := TRUNC(x_gl_date);
86     new_references.gl_posted_date                    := x_gl_posted_date;
87     new_references.posting_control_id                := x_posting_control_id;
88 
89     IF (p_action = 'UPDATE') THEN
90       new_references.creation_date                   := old_references.creation_date;
91       new_references.created_by                      := old_references.created_by;
92     ELSE
93       new_references.creation_date                   := x_creation_date;
94       new_references.created_by                      := x_created_by;
95     END IF;
96 
97     new_references.last_update_date                  := x_last_update_date;
98     new_references.last_updated_by                   := x_last_updated_by;
99     new_references.last_update_login                 := x_last_update_login;
100 
101   END set_column_values;
102 
103 
104   PROCEDURE check_parent_existance AS
105   /*
106   ||  Created By : BDEVARAK
107   ||  Created On : 26-APR-2001
108   ||  Purpose : Checks for the existance of Parent records.
109   ||  Known limitations, enhancements or remarks :
110   ||  Change History :
111   ||  Who             When            What
112   ||  (reverse chronological order - newest change first)
113   */
114   BEGIN
115 
116     IF ((old_references.cr_account_cd = new_references.cr_account_cd) OR
117          (new_references.cr_account_cd IS NULL)) THEN
118       NULL;
119     ELSE
120       IF NOT IGS_FI_ACC_PKG.Get_PK_For_Validation (
121                new_references.cr_account_cd
122                ) THEN
123         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
124         IGS_GE_MSG_STACK.ADD;
125         App_Exception.Raise_Exception;
126       END IF;
127     END IF;
128     IF ((old_references.dr_account_cd = new_references.dr_account_cd) OR
129          (new_references.dr_account_cd IS NULL)) THEN
130       NULL;
131     ELSE
132       IF NOT IGS_FI_ACC_PKG.Get_PK_For_Validation (
133                new_references.dr_account_cd
134                ) THEN
135         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
136         IGS_GE_MSG_STACK.ADD;
137         App_Exception.Raise_Exception;
138       END IF;
139     END IF;
140 
141     IF (((old_references.application_type = new_references.application_type)) OR
142         ((new_references.application_type IS NULL))) THEN
143              NULL;
144     ELSIF NOT IGS_LOOKUPS_VIEW_PKG.Get_PK_For_Validation(
145           'IGS_FI_APPLICATION_TYPE',
146           new_references.application_type
147           )THEN
148             Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
149             IGS_GE_MSG_STACK.ADD;
150             App_Exception.Raise_Exception;
151     END IF;
152 
153     IF (((old_references.credit_id = new_references.credit_id)) OR
154         ((new_references.credit_id IS NULL))) THEN
155       NULL;
156     ELSIF NOT igs_fi_credits_pkg.get_pk_for_validation (
157                 new_references.credit_id
158               ) THEN
159       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
160       igs_ge_msg_stack.add;
161       app_exception.raise_exception;
162     END IF;
163 
164     IF (((old_references.credit_activity_id = new_references.credit_activity_id)) OR
165         ((new_references.credit_activity_id IS NULL))) THEN
166       NULL;
167     ELSIF NOT igs_fi_cr_activities_pkg.get_pk_for_validation (
168                 new_references.credit_activity_id
169               ) THEN
170       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
171       igs_ge_msg_stack.add;
172       app_exception.raise_exception;
173     END IF;
174 
175     IF (((old_references.posting_id = new_references.posting_id)) OR
176         ((new_references.posting_id IS NULL))) THEN
177       NULL;
178     ELSIF NOT igs_fi_posting_int_pkg.get_pk_for_validation (
179                 new_references.posting_id
180               ) THEN
181       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
182       igs_ge_msg_stack.add;
183       app_exception.raise_exception;
184     END IF;
185 
186     IF (((old_references.appl_hierarchy_id = new_references.appl_hierarchy_id)) OR
187         ((new_references.appl_hierarchy_id IS NULL))) THEN
188       NULL;
189     ELSIF NOT igs_fi_a_hierarchies_pkg.get_pk_for_validation (
190                 new_references.appl_hierarchy_id
191               ) THEN
192       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
193       igs_ge_msg_stack.add;
194       app_exception.raise_exception;
195     END IF;
196 
197     IF (((old_references.invoice_id = new_references.invoice_id)) OR
198         ((new_references.invoice_id IS NULL))) THEN
199       NULL;
200     ELSIF NOT igs_fi_inv_int_pkg.get_pk_for_validation (
201                 new_references.invoice_id
202               ) THEN
203       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
204       igs_ge_msg_stack.add;
205       app_exception.raise_exception;
206     END IF;
207 
208     IF (((old_references.applied_invoice_lines_id = new_references.applied_invoice_lines_id)) OR
209         ((new_references.applied_invoice_lines_id IS NULL))) THEN
210       NULL;
211     ELSIF NOT igs_fi_invln_int_pkg.get_pk_for_validation (
212                 new_references.applied_invoice_lines_id
213               ) THEN
214       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
215       igs_ge_msg_stack.add;
216       app_exception.raise_exception;
217     END IF;
218 
219   END check_parent_existance;
220 
221 
222   FUNCTION get_pk_for_validation (
223     x_application_id                    IN     NUMBER
224   ) RETURN BOOLEAN AS
225   /*
226   ||  Created By : BDEVARAK
227   ||  Created On : 26-APR-2001
228   ||  Purpose : Validates the Primary Key of the table.
229   ||  Known limitations, enhancements or remarks :
230   ||  Change History :
231   ||  Who             When            What
232   ||  (reverse chronological order - newest change first)
233   */
234     CURSOR cur_rowid IS
235       SELECT   rowid
236       FROM     igs_fi_applications
237       WHERE    application_id = x_application_id
238       FOR UPDATE NOWAIT;
239 
240     lv_rowid cur_rowid%RowType;
241 
242   BEGIN
243 
244     OPEN cur_rowid;
245     FETCH cur_rowid INTO lv_rowid;
246     IF (cur_rowid%FOUND) THEN
247       CLOSE cur_rowid;
248       RETURN(TRUE);
249     ELSE
250       CLOSE cur_rowid;
251       RETURN(FALSE);
252     END IF;
253 
254   END get_pk_for_validation;
255 
256 
257   PROCEDURE get_fk_igs_fi_credits_all (
258     x_credit_id                         IN     NUMBER
259   ) AS
260   /*
261   ||  Created By : BDEVARAK
262   ||  Created On : 26-APR-2001
263   ||  Purpose : Validates the Foreign Keys for the table.
264   ||  Known limitations, enhancements or remarks :
265   ||  Change History :
266   ||  Who             When            What
267   ||  (reverse chronological order - newest change first)
268   */
269     CURSOR cur_rowid IS
270       SELECT   rowid
271       FROM     igs_fi_applications
272       WHERE   ((credit_id = x_credit_id));
273 
274     lv_rowid cur_rowid%RowType;
275 
276   BEGIN
277 
278     OPEN cur_rowid;
279     FETCH cur_rowid INTO lv_rowid;
280     IF (cur_rowid%FOUND) THEN
281       CLOSE cur_rowid;
282       fnd_message.set_name ('IGS', 'IGS_FI_APPL_CRDT_FK');
283       igs_ge_msg_stack.add;
284       app_exception.raise_exception;
285       RETURN;
286     END IF;
287     CLOSE cur_rowid;
288 
289   END get_fk_igs_fi_credits_all;
290 
291 
292   PROCEDURE get_fk_igs_fi_cr_activities (
293     x_credit_activity_id                IN     NUMBER
294   ) AS
295   /*
296   ||  Created By : BDEVARAK
297   ||  Created On : 26-APR-2001
298   ||  Purpose : Validates the Foreign Keys for the table.
299   ||  Known limitations, enhancements or remarks :
300   ||  Change History :
301   ||  Who             When            What
302   ||  (reverse chronological order - newest change first)
303   */
304     CURSOR cur_rowid IS
305       SELECT   rowid
306       FROM     igs_fi_applications
307       WHERE   ((credit_activity_id = x_credit_activity_id));
308 
309     lv_rowid cur_rowid%RowType;
310 
311   BEGIN
312 
313     OPEN cur_rowid;
314     FETCH cur_rowid INTO lv_rowid;
315     IF (cur_rowid%FOUND) THEN
316       CLOSE cur_rowid;
317       fnd_message.set_name ('IGS', 'IGS_FI_APPL_CRAC_FK');
318       igs_ge_msg_stack.add;
319       app_exception.raise_exception;
320       RETURN;
321     END IF;
322     CLOSE cur_rowid;
323 
324   END get_fk_igs_fi_cr_activities;
325 
326 
327   PROCEDURE get_fk_igs_fi_posting_int_all (
328     x_posting_id                        IN     NUMBER
329   ) AS
330   /*
331   ||  Created By : BDEVARAK
332   ||  Created On : 26-APR-2001
333   ||  Purpose : Validates the Foreign Keys for the table.
334   ||  Known limitations, enhancements or remarks :
335   ||  Change History :
336   ||  Who             When            What
337   ||  (reverse chronological order - newest change first)
338   */
339     CURSOR cur_rowid IS
340       SELECT   rowid
341       FROM     igs_fi_applications
342       WHERE   ((posting_id = x_posting_id));
343 
344     lv_rowid cur_rowid%RowType;
345 
346   BEGIN
347 
348     OPEN cur_rowid;
349     FETCH cur_rowid INTO lv_rowid;
350     IF (cur_rowid%FOUND) THEN
351       CLOSE cur_rowid;
352       fnd_message.set_name ('IGS', 'IGS_FI_APPL_PINT_FK');
353       igs_ge_msg_stack.add;
354       app_exception.raise_exception;
355       RETURN;
356     END IF;
357     CLOSE cur_rowid;
358 
359   END get_fk_igs_fi_posting_int_all;
360 
361 
362   PROCEDURE get_fk_igs_fi_a_hierarchies (
363     x_appl_hierarchy_id                 IN     NUMBER
364   ) AS
365   /*
366   ||  Created By : BDEVARAK
367   ||  Created On : 26-APR-2001
368   ||  Purpose : Validates the Foreign Keys for the table.
369   ||  Known limitations, enhancements or remarks :
370   ||  Change History :
371   ||  Who             When            What
372   ||  (reverse chronological order - newest change first)
373   */
374     CURSOR cur_rowid IS
375       SELECT   rowid
376       FROM     igs_fi_applications
377       WHERE   ((appl_hierarchy_id = x_appl_hierarchy_id));
378 
379     lv_rowid cur_rowid%RowType;
380 
381   BEGIN
382 
383     OPEN cur_rowid;
384     FETCH cur_rowid INTO lv_rowid;
385     IF (cur_rowid%FOUND) THEN
386       CLOSE cur_rowid;
387       fnd_message.set_name ('IGS', 'IGS_FI_APPL_APHR_FK');
388       igs_ge_msg_stack.add;
389       app_exception.raise_exception;
390       RETURN;
391     END IF;
392     CLOSE cur_rowid;
393 
394   END get_fk_igs_fi_a_hierarchies;
395 
396 
397   PROCEDURE get_fk_igs_fi_inv_int_all (
398     x_invoice_id                        IN     NUMBER
399   ) AS
400   /*
401   ||  Created By : BDEVARAK
402   ||  Created On : 26-APR-2001
403   ||  Purpose : Validates the Foreign Keys for the table.
404   ||  Known limitations, enhancements or remarks :
405   ||  Change History :
406   ||  Who             When            What
407   ||  (reverse chronological order - newest change first)
408   */
409     CURSOR cur_rowid IS
410       SELECT   rowid
411       FROM     igs_fi_applications
412       WHERE   ((invoice_id = x_invoice_id));
413 
414     lv_rowid cur_rowid%RowType;
415 
416   BEGIN
417 
418     OPEN cur_rowid;
419     FETCH cur_rowid INTO lv_rowid;
420     IF (cur_rowid%FOUND) THEN
421       CLOSE cur_rowid;
422       fnd_message.set_name ('IGS', 'IGS_FI_APPL_INVI_FK');
423       igs_ge_msg_stack.add;
424       app_exception.raise_exception;
425       RETURN;
426     END IF;
427     CLOSE cur_rowid;
428 
429   END get_fk_igs_fi_inv_int_all;
430 
431 
432   PROCEDURE get_fk_igs_fi_invln_int_all (
433     x_invoice_lines_id                  IN     NUMBER
434   ) AS
435   /*
436   ||  Created By : BDEVARAK
437   ||  Created On : 26-APR-2001
438   ||  Purpose : Validates the Foreign Keys for the table.
439   ||  Known limitations, enhancements or remarks :
440   ||  Change History :
441   ||  Who             When            What
442   ||  (reverse chronological order - newest change first)
443   */
444     CURSOR cur_rowid IS
445       SELECT   rowid
446       FROM     igs_fi_applications
447       WHERE   ((applied_invoice_lines_id = x_invoice_lines_id));
448 
449     lv_rowid cur_rowid%RowType;
450 
451   BEGIN
452 
453     OPEN cur_rowid;
454     FETCH cur_rowid INTO lv_rowid;
455     IF (cur_rowid%FOUND) THEN
456       CLOSE cur_rowid;
457       fnd_message.set_name ('IGS', 'IGS_FI_APPL_INLI_FK');
458       igs_ge_msg_stack.add;
459       app_exception.raise_exception;
460       RETURN;
461     END IF;
462     CLOSE cur_rowid;
463 
464   END get_fk_igs_fi_invln_int_all;
465 
466 
467   PROCEDURE before_dml (
468     p_action                            IN     VARCHAR2,
469     x_rowid                             IN     VARCHAR2    ,
470     x_application_id                    IN     NUMBER      ,
471     x_application_type                  IN     VARCHAR2    ,
472     x_invoice_id                        IN     NUMBER      ,
473     x_credit_id                         IN     NUMBER      ,
474     x_credit_activity_id                IN     NUMBER      ,
475     x_amount_applied                    IN     NUMBER      ,
476     x_apply_date                        IN     DATE        ,
477     x_link_application_id               IN     NUMBER      ,
478     x_dr_account_cd                     IN     VARCHAR2    ,
479     x_cr_account_cd                     IN     VARCHAR2    ,
480     x_dr_gl_code_ccid                   IN     NUMBER      ,
481     x_cr_gl_code_ccid                   IN     NUMBER      ,
482     x_applied_invoice_lines_id          IN     NUMBER      ,
483     x_appl_hierarchy_id                 IN     NUMBER      ,
484     x_posting_id                        IN     NUMBER      ,
485     x_creation_date                     IN     DATE        ,
486     x_created_by                        IN     NUMBER      ,
487     x_last_update_date                  IN     DATE        ,
488     x_last_updated_by                   IN     NUMBER      ,
489     x_last_update_login                 IN     NUMBER      ,
490     x_gl_date                           IN     DATE        ,
491     x_gl_posted_date                    IN     DATE        ,
492     x_posting_control_id                IN     NUMBER
493 
494   ) AS
495   /*
496   ||  Created By : BDEVARAK
497   ||  Created On : 26-APR-2001
498   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
499   ||            Trigger Handlers for the table, before any DML operation.
500   ||  Known limitations, enhancements or remarks :
501   ||  Change History :
502   ||  Who             When            What
503   ||  smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
504   ||                                  POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
505   ||  (reverse chronological order - newest change first)
506   */
507   BEGIN
508 
509     set_column_values (
510       p_action,
511       x_rowid,
512       x_application_id,
513       x_application_type,
514       x_invoice_id,
515       x_credit_id,
516       x_credit_activity_id,
517       x_amount_applied,
518       x_apply_date,
519       x_link_application_id,
520       x_dr_account_cd,
521       x_cr_account_cd,
522       x_dr_gl_code_ccid,
523       x_cr_gl_code_ccid,
524       x_applied_invoice_lines_id,
525       x_appl_hierarchy_id,
526       x_posting_id,
527       x_creation_date,
528       x_created_by,
529       x_last_update_date,
530       x_last_updated_by,
531       x_last_update_login,
532       x_gl_date,
533       x_gl_posted_date,
534       x_posting_control_id
535     );
536 
537     IF (p_action = 'INSERT') THEN
538       -- Call all the procedures related to Before Insert.
539       IF ( get_pk_for_validation(
540              new_references.application_id
541            )
542          ) THEN
543         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
544         igs_ge_msg_stack.add;
545         app_exception.raise_exception;
546       END IF;
547       check_parent_existance;
548     ELSIF (p_action = 'UPDATE') THEN
549       -- Call all the procedures related to Before Update.
550       check_parent_existance;
551     ELSIF (p_action = 'VALIDATE_INSERT') THEN
552       -- Call all the procedures related to Before Insert.
553       IF ( get_pk_for_validation (
554              new_references.application_id
555            )
556          ) THEN
557         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
558         igs_ge_msg_stack.add;
559         app_exception.raise_exception;
560       END IF;
561     END IF;
562 
563   END before_dml;
564 
565 
566   PROCEDURE insert_row (
567     x_rowid                             IN OUT NOCOPY VARCHAR2,
568     x_application_id                    IN OUT NOCOPY NUMBER,
569     x_application_type                  IN     VARCHAR2,
570     x_invoice_id                        IN     NUMBER,
571     x_credit_id                         IN     NUMBER,
572     x_credit_activity_id                IN     NUMBER,
573     x_amount_applied                    IN     NUMBER,
574     x_apply_date                        IN     DATE,
575     x_link_application_id               IN     NUMBER,
576     x_dr_account_cd                     IN     VARCHAR2,
577     x_cr_account_cd                     IN     VARCHAR2,
578     x_dr_gl_code_ccid                   IN     NUMBER,
579     x_cr_gl_code_ccid                   IN     NUMBER,
580     x_applied_invoice_lines_id          IN     NUMBER,
581     x_appl_hierarchy_id                 IN     NUMBER,
582     x_posting_id                        IN     NUMBER,
583     x_mode                              IN     VARCHAR2,
584     x_gl_date                           IN     DATE    ,
585     x_gl_posted_date                    IN     DATE    ,
586     x_posting_control_id                IN     NUMBER
587   ) AS
588   /*
589   ||  Created By : BDEVARAK
590   ||  Created On : 26-APR-2001
591   ||  Purpose : Handles the INSERT DML logic for the table.
592   ||  Known limitations, enhancements or remarks :
593   ||  Change History :
594   ||  Who             When            What
595   ||  smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
596   ||                                  POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
597   ||  (reverse chronological order - newest change first)
598   */
599     CURSOR c IS
600       SELECT   rowid
601       FROM     igs_fi_applications
602       WHERE    application_id                    = x_application_id;
603 
604     x_last_update_date           DATE;
605     x_last_updated_by            NUMBER;
606     x_last_update_login          NUMBER;
607     x_request_id                 NUMBER;
608     x_program_id                 NUMBER;
609     x_program_application_id     NUMBER;
610     x_program_update_date        DATE;
611 
612   BEGIN
613 
614     x_last_update_date := SYSDATE;
615     IF (x_mode = 'I') THEN
616       x_last_updated_by := 1;
617       x_last_update_login := 0;
618     ELSIF (x_mode = 'R') THEN
619       x_last_updated_by := fnd_global.user_id;
620       IF (x_last_updated_by IS NULL) THEN
621         x_last_updated_by := -1;
622       END IF;
623       x_last_update_login := fnd_global.login_id;
624       IF (x_last_update_login IS NULL) THEN
625         x_last_update_login := -1;
626       END IF;
627       x_request_id             := fnd_global.conc_request_id;
628       x_program_id             := fnd_global.conc_program_id;
629       x_program_application_id := fnd_global.prog_appl_id;
630 
631       IF (x_request_id = -1) THEN
632         x_request_id             := NULL;
633         x_program_id             := NULL;
634         x_program_application_id := NULL;
635         x_program_update_date    := NULL;
636       ELSE
637         x_program_update_date    := SYSDATE;
638       END IF;
639     ELSE
640       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
641       igs_ge_msg_stack.add;
642       app_exception.raise_exception;
643     END IF;
644 
645     SELECT    igs_fi_applications_s.NEXTVAL
646     INTO      x_application_id
647     FROM      dual;
648 
649     before_dml(
650       p_action                            => 'INSERT',
651       x_rowid                             => x_rowid,
652       x_application_id                    => x_application_id,
653       x_application_type                  => x_application_type,
654       x_invoice_id                        => x_invoice_id,
655       x_credit_id                         => x_credit_id,
656       x_credit_activity_id                => x_credit_activity_id,
657       x_amount_applied                    => x_amount_applied,
658       x_apply_date                        => x_apply_date,
659       x_link_application_id               => x_link_application_id,
660       x_dr_account_cd                     => x_dr_account_cd,
661       x_cr_account_cd                     => x_cr_account_cd,
662       x_dr_gl_code_ccid                   => x_dr_gl_code_ccid,
663       x_cr_gl_code_ccid                   => x_cr_gl_code_ccid,
664       x_applied_invoice_lines_id          => x_applied_invoice_lines_id,
665       x_appl_hierarchy_id                 => x_appl_hierarchy_id,
666       x_posting_id                        => x_posting_id,
667       x_creation_date                     => x_last_update_date,
668       x_created_by                        => x_last_updated_by,
669       x_last_update_date                  => x_last_update_date,
670       x_last_updated_by                   => x_last_updated_by,
671       x_last_update_login                 => x_last_update_login ,
672       x_gl_date                           => x_gl_date,
673       x_gl_posted_date                    => x_gl_posted_date,
674       x_posting_control_id                => x_posting_control_id
675     );
676 
677     INSERT INTO igs_fi_applications (
678       application_id,
679       application_type,
680       invoice_id,
681       credit_id,
682       credit_activity_id,
683       amount_applied,
684       apply_date,
685       link_application_id,
686       dr_account_cd,
687       cr_account_cd,
688       dr_gl_code_ccid,
689       cr_gl_code_ccid,
690       applied_invoice_lines_id,
691       appl_hierarchy_id,
692       posting_id,
693       creation_date,
694       created_by,
695       last_update_date,
696       last_updated_by,
697       last_update_login,
698       request_id,
699       program_id,
700       program_application_id,
701       program_update_date ,
702       gl_date,
703       gl_posted_date,
704       posting_control_id
705     ) VALUES (
706       new_references.application_id,
707       new_references.application_type,
708       new_references.invoice_id,
709       new_references.credit_id,
710       new_references.credit_activity_id,
711       new_references.amount_applied,
712       new_references.apply_date,
713       new_references.link_application_id,
714       new_references.dr_account_cd,
715       new_references.cr_account_cd,
716       new_references.dr_gl_code_ccid,
717       new_references.cr_gl_code_ccid,
718       new_references.applied_invoice_lines_id,
719       new_references.appl_hierarchy_id,
720       new_references.posting_id,
721       x_last_update_date,
722       x_last_updated_by,
723       x_last_update_date,
724       x_last_updated_by,
725       x_last_update_login ,
726       x_request_id,
727       x_program_id,
728       x_program_application_id,
729       x_program_update_date ,
730       new_references.gl_date,
731       new_references.gl_posted_date,
732       new_references.posting_control_id
733     );
734 
735     OPEN c;
736     FETCH c INTO x_rowid;
737     IF (c%NOTFOUND) THEN
738       CLOSE c;
739       RAISE NO_DATA_FOUND;
740     END IF;
741     CLOSE c;
742 
743   END insert_row;
744 
745 
746   PROCEDURE lock_row (
747     x_rowid                             IN     VARCHAR2,
748     x_application_id                    IN     NUMBER,
749     x_application_type                  IN     VARCHAR2,
750     x_invoice_id                        IN     NUMBER,
751     x_credit_id                         IN     NUMBER,
752     x_credit_activity_id                IN     NUMBER,
753     x_amount_applied                    IN     NUMBER,
754     x_apply_date                        IN     DATE,
755     x_link_application_id               IN     NUMBER,
756     x_dr_account_cd                     IN     VARCHAR2,
757     x_cr_account_cd                     IN     VARCHAR2,
758     x_dr_gl_code_ccid                   IN     NUMBER,
759     x_cr_gl_code_ccid                   IN     NUMBER,
760     x_applied_invoice_lines_id          IN     NUMBER,
761     x_appl_hierarchy_id                 IN     NUMBER,
762     x_posting_id                        IN     NUMBER,
763     x_gl_date                           IN     DATE,
764     x_gl_posted_date                    IN     DATE,
765     x_posting_control_id                IN     NUMBER
766   ) AS
767   /*
768   ||  Created By : BDEVARAK
769   ||  Created On : 26-APR-2001
770   ||  Purpose : Handles the LOCK mechanism for the table.
771   ||  Known limitations, enhancements or remarks :
772   ||  Change History :
773   ||  Who             When            What
774   ||  smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
775   ||                                  POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
776   ||  (reverse chronological order - newest change first)
777   */
778     CURSOR c1 IS
779       SELECT
780         application_type,
781         invoice_id,
782         credit_id,
783         credit_activity_id,
784         amount_applied,
785         apply_date,
786         link_application_id,
787         dr_account_cd,
788         cr_account_cd,
789         dr_gl_code_ccid,
790         cr_gl_code_ccid,
791         applied_invoice_lines_id,
792         appl_hierarchy_id,
793         posting_id,
794         gl_date,
795         gl_posted_date,
796         posting_control_id
797       FROM  igs_fi_applications
798       WHERE rowid = x_rowid
799       FOR UPDATE NOWAIT;
800 
801     tlinfo c1%ROWTYPE;
802 
803   BEGIN
804 
805     OPEN c1;
806     FETCH c1 INTO tlinfo;
807     IF (c1%notfound) THEN
808       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
809       igs_ge_msg_stack.add;
810       CLOSE c1;
811       app_exception.raise_exception;
812       RETURN;
813     END IF;
814     CLOSE c1;
815 
816     IF (
817         (tlinfo.application_type = x_application_type)
818         AND (tlinfo.invoice_id = x_invoice_id)
819         AND (tlinfo.credit_id = x_credit_id)
820         AND (tlinfo.credit_activity_id = x_credit_activity_id)
821         AND (tlinfo.amount_applied = x_amount_applied)
822         AND (trunc(tlinfo.apply_date) = trunc(x_apply_date))
823         AND ((tlinfo.link_application_id = x_link_application_id) OR ((tlinfo.link_application_id IS NULL) AND (X_link_application_id IS NULL)))
824         AND ((tlinfo.dr_account_cd = x_dr_account_cd) OR ((tlinfo.dr_account_cd IS NULL) AND (X_dr_account_cd IS NULL)))
825         AND ((tlinfo.cr_account_cd = x_cr_account_cd) OR ((tlinfo.cr_account_cd IS NULL) AND (X_cr_account_cd IS NULL)))
826         AND ((tlinfo.dr_gl_code_ccid = x_dr_gl_code_ccid) OR ((tlinfo.dr_gl_code_ccid IS NULL) AND (X_dr_gl_code_ccid IS NULL)))
827         AND ((tlinfo.cr_gl_code_ccid = x_cr_gl_code_ccid) OR ((tlinfo.cr_gl_code_ccid IS NULL) AND (X_cr_gl_code_ccid IS NULL)))
828         AND ((tlinfo.applied_invoice_lines_id = x_applied_invoice_lines_id) OR ((tlinfo.applied_invoice_lines_id IS NULL) AND (X_applied_invoice_lines_id IS NULL)))
829         AND ((tlinfo.appl_hierarchy_id = x_appl_hierarchy_id) OR ((tlinfo.appl_hierarchy_id IS NULL) AND (X_appl_hierarchy_id IS NULL)))
830         AND ((tlinfo.posting_id = x_posting_id) OR ((tlinfo.posting_id IS NULL) AND (X_posting_id IS NULL)))
831         AND ((TRUNC(tlinfo.gl_date) = TRUNC(x_gl_date)) OR ((tlinfo.gl_date IS NULL) AND (X_gl_date IS NULL)))
832         AND ((tlinfo.gl_posted_date = x_gl_posted_date) OR ((tlinfo.gl_posted_date IS NULL) AND (X_gl_posted_date IS NULL)))
833         AND ((tlinfo.posting_control_id = x_posting_control_id) OR ((tlinfo.posting_control_id IS NULL) AND (X_posting_control_id IS NULL)))
834        ) THEN
835       NULL;
836     ELSE
837       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
838       igs_ge_msg_stack.add;
839       app_exception.raise_exception;
840     END IF;
841 
842     RETURN;
843 
844   END lock_row;
845 
846 
847   PROCEDURE update_row (
848     x_rowid                             IN     VARCHAR2,
849     x_application_id                    IN     NUMBER,
850     x_application_type                  IN     VARCHAR2,
851     x_invoice_id                        IN     NUMBER,
852     x_credit_id                         IN     NUMBER,
853     x_credit_activity_id                IN     NUMBER,
854     x_amount_applied                    IN     NUMBER,
855     x_apply_date                        IN     DATE,
856     x_link_application_id               IN     NUMBER,
857     x_dr_account_cd                     IN     VARCHAR2,
858     x_cr_account_cd                     IN     VARCHAR2,
859     x_dr_gl_code_ccid                   IN     NUMBER,
860     x_cr_gl_code_ccid                   IN     NUMBER,
861     x_applied_invoice_lines_id          IN     NUMBER,
862     x_appl_hierarchy_id                 IN     NUMBER,
863     x_posting_id                        IN     NUMBER,
864     x_mode                              IN     VARCHAR2,
865     x_gl_date                           IN     DATE,
866     x_gl_posted_date                    IN     DATE,
867     x_posting_control_id                IN     NUMBER
868   ) AS
869   /*
870   ||  Created By : BDEVARAK
871   ||  Created On : 26-APR-2001
872   ||  Purpose : Handles the UPDATE DML logic for the table.
873   ||  Known limitations, enhancements or remarks :
874   ||  Change History :
875   ||  Who             When            What
876   ||  smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
877   ||                                  POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
878   ||  (reverse chronological order - newest change first)
879   */
880     x_last_update_date           DATE ;
881     x_last_updated_by            NUMBER;
882     x_last_update_login          NUMBER;
883     x_request_id                 NUMBER;
884     x_program_id                 NUMBER;
885     x_program_application_id     NUMBER;
886     x_program_update_date        DATE;
887 
888   BEGIN
889 
890     x_last_update_date := SYSDATE;
891     IF (X_MODE = 'I') THEN
892       x_last_updated_by := 1;
893       x_last_update_login := 0;
894     ELSIF (x_mode = 'R') THEN
895       x_last_updated_by := fnd_global.user_id;
896       IF x_last_updated_by IS NULL THEN
897         x_last_updated_by := -1;
898       END IF;
899       x_last_update_login := fnd_global.login_id;
900       IF (x_last_update_login IS NULL) THEN
901         x_last_update_login := -1;
902       END IF;
903     ELSE
904       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
905       igs_ge_msg_stack.add;
906       app_exception.raise_exception;
907     END IF;
908 
909     before_dml(
910       p_action                            => 'UPDATE',
911       x_rowid                             => x_rowid,
912       x_application_id                    => x_application_id,
913       x_application_type                  => x_application_type,
914       x_invoice_id                        => x_invoice_id,
915       x_credit_id                         => x_credit_id,
916       x_credit_activity_id                => x_credit_activity_id,
917       x_amount_applied                    => x_amount_applied,
918       x_apply_date                        => x_apply_date,
919       x_link_application_id               => x_link_application_id,
920       x_dr_account_cd                     => x_dr_account_cd,
921       x_cr_account_cd                     => x_cr_account_cd,
922       x_dr_gl_code_ccid                   => x_dr_gl_code_ccid,
923       x_cr_gl_code_ccid                   => x_cr_gl_code_ccid,
924       x_applied_invoice_lines_id          => x_applied_invoice_lines_id,
925       x_appl_hierarchy_id                 => x_appl_hierarchy_id,
926       x_posting_id                        => x_posting_id,
927       x_creation_date                     => x_last_update_date,
928       x_created_by                        => x_last_updated_by,
929       x_last_update_date                  => x_last_update_date,
930       x_last_updated_by                   => x_last_updated_by,
931       x_last_update_login                 => x_last_update_login ,
932       x_gl_date                           => x_gl_date,
933       x_gl_posted_date                    => x_gl_posted_date,
934       x_posting_control_id                => x_posting_control_id
935     );
936 
937     IF (x_mode = 'R') THEN
938       x_request_id := fnd_global.conc_request_id;
939       x_program_id := fnd_global.conc_program_id;
940       x_program_application_id := fnd_global.prog_appl_id;
941       IF (x_request_id =  -1) THEN
942         x_request_id := old_references.request_id;
943         x_program_id := old_references.program_id;
944         x_program_application_id := old_references.program_application_id;
945         x_program_update_date := old_references.program_update_date;
946       ELSE
947         x_program_update_date := SYSDATE;
948       END IF;
949     END IF;
950 
951     UPDATE igs_fi_applications
952       SET
953         application_type                  = new_references.application_type,
954         invoice_id                        = new_references.invoice_id,
955         credit_id                         = new_references.credit_id,
956         credit_activity_id                = new_references.credit_activity_id,
957         amount_applied                    = new_references.amount_applied,
958         apply_date                        = new_references.apply_date,
959         link_application_id               = new_references.link_application_id,
960         dr_account_cd                     = new_references.dr_account_cd,
961         cr_account_cd                     = new_references.cr_account_cd,
962         dr_gl_code_ccid                   = new_references.dr_gl_code_ccid,
963         cr_gl_code_ccid                   = new_references.cr_gl_code_ccid,
964         applied_invoice_lines_id          = new_references.applied_invoice_lines_id,
965         appl_hierarchy_id                 = new_references.appl_hierarchy_id,
966         posting_id                        = new_references.posting_id,
967         last_update_date                  = x_last_update_date,
968         last_updated_by                   = x_last_updated_by,
969         last_update_login                 = x_last_update_login ,
970         request_id                        = x_request_id,
971         program_id                        = x_program_id,
972         program_application_id            = x_program_application_id,
973         program_update_date               = x_program_update_date ,
974         gl_date                           = new_references.gl_date,
975         gl_posted_date                    = new_references.gl_posted_date,
976         posting_control_id                = new_references.posting_control_id
977       WHERE rowid = x_rowid;
978 
979     IF (SQL%NOTFOUND) THEN
980       RAISE NO_DATA_FOUND;
981     END IF;
982 
983   END update_row;
984 
985 
986   PROCEDURE add_row (
987     x_rowid                             IN OUT NOCOPY VARCHAR2,
988     x_application_id                    IN OUT NOCOPY NUMBER,
989     x_application_type                  IN     VARCHAR2,
990     x_invoice_id                        IN     NUMBER,
991     x_credit_id                         IN     NUMBER,
992     x_credit_activity_id                IN     NUMBER,
993     x_amount_applied                    IN     NUMBER,
994     x_apply_date                        IN     DATE,
995     x_link_application_id               IN     NUMBER,
996     x_dr_account_cd                     IN     VARCHAR2,
997     x_cr_account_cd                     IN     VARCHAR2,
998     x_dr_gl_code_ccid                   IN     NUMBER,
999     x_cr_gl_code_ccid                   IN     NUMBER,
1000     x_applied_invoice_lines_id          IN     NUMBER,
1001     x_appl_hierarchy_id                 IN     NUMBER,
1002     x_posting_id                        IN     NUMBER,
1003     x_mode                              IN     VARCHAR2,
1004     x_gl_date                           IN     DATE,
1005     x_gl_posted_date                    IN     DATE,
1006     x_posting_control_id                IN     NUMBER
1007   ) AS
1008   /*
1009   ||  Created By : BDEVARAK
1010   ||  Created On : 26-APR-2001
1011   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
1012   ||  Known limitations, enhancements or remarks :
1013   ||  Change History :
1014   ||  Who             When            What
1015   ||  smadathi     01-Nov-2002        Enh. Bug 2584986. Added new column GL_DATE,GL_POSTED_DATE,
1016   ||                                  POSTING_CONTROL_ID. Also removed all DEFAULT CLAUSES
1017   ||  (reverse chronological order - newest change first)
1018   */
1019     CURSOR c1 IS
1020       SELECT   rowid
1021       FROM     igs_fi_applications
1022       WHERE    application_id                    = x_application_id;
1023 
1024   BEGIN
1025 
1026     OPEN c1;
1027     FETCH c1 INTO x_rowid;
1028     IF (c1%NOTFOUND) THEN
1029       CLOSE c1;
1030 
1031       insert_row (
1032         x_rowid,
1033         x_application_id,
1034         x_application_type,
1035         x_invoice_id,
1036         x_credit_id,
1037         x_credit_activity_id,
1038         x_amount_applied,
1039         x_apply_date,
1040         x_link_application_id,
1041         x_dr_account_cd,
1042         x_cr_account_cd,
1043         x_dr_gl_code_ccid,
1044         x_cr_gl_code_ccid,
1045         x_applied_invoice_lines_id,
1046         x_appl_hierarchy_id,
1047         x_posting_id,
1048         x_mode ,
1049         x_gl_date,
1050         x_gl_posted_date,
1051         x_posting_control_id
1052       );
1053       RETURN;
1054     END IF;
1055     CLOSE c1;
1056 
1057     update_row (
1058       x_rowid,
1059       x_application_id,
1060       x_application_type,
1061       x_invoice_id,
1062       x_credit_id,
1063       x_credit_activity_id,
1064       x_amount_applied,
1065       x_apply_date,
1066       x_link_application_id,
1067       x_dr_account_cd,
1068       x_cr_account_cd,
1069       x_dr_gl_code_ccid,
1070       x_cr_gl_code_ccid,
1071       x_applied_invoice_lines_id,
1072       x_appl_hierarchy_id,
1073       x_posting_id,
1074       x_mode,
1075       x_gl_date,
1076       x_gl_posted_date,
1077       x_posting_control_id
1078     );
1079 
1080   END add_row;
1081 
1082 
1083   PROCEDURE delete_row (
1084     x_rowid IN VARCHAR2
1085   ) AS
1086   /*
1087   ||  Created By : BDEVARAK
1088   ||  Created On : 26-APR-2001
1089   ||  Purpose : Handles the DELETE DML logic for the table.
1090   ||  Known limitations, enhancements or remarks :
1091   ||  Change History :
1092   ||  Who             When            What
1093   ||  (reverse chronological order - newest change first)
1094   */
1095   BEGIN
1096 
1097     before_dml (
1098       p_action => 'DELETE',
1099       x_rowid => x_rowid
1100     );
1101 
1102     DELETE FROM igs_fi_applications
1103     WHERE rowid = x_rowid;
1104 
1105     IF (SQL%NOTFOUND) THEN
1106       RAISE NO_DATA_FOUND;
1107     END IF;
1108 
1109   END delete_row;
1110 
1111 
1112 END igs_fi_applications_pkg;