DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGR_I_A_LINES_PKG

Source


1 PACKAGE BODY igr_i_a_lines_pkg AS
2 /* $Header: IGSRH17B.pls 120.0 2005/06/01 22:35:22 appldev noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igr_i_a_lines%ROWTYPE;
6   new_references igr_i_a_lines%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_person_id                         IN     NUMBER,
12     x_enquiry_appl_number               IN     NUMBER,
13     x_sales_lead_line_id                IN     NUMBER,
14     x_preference                        IN     NUMBER,
15     x_creation_date                     IN     DATE,
16     x_created_by                        IN     NUMBER,
17     x_last_update_date                  IN     DATE,
18     x_last_updated_by                   IN     NUMBER,
19     x_last_update_login                 IN     NUMBER
20   ) AS
21   /*
22   ||  Created By : hreddych
23   ||  Created On : 22-JAN-2003
24   ||  Purpose : Initialises the Old and New references for the columns of the table.
25   ||  Known limitations, enhancements or remarks :
26   ||  Change History :
27   ||  Who             When            What
28   ||  (reverse chronological order - newest change first)
29   */
30 
31     CURSOR cur_old_ref_values IS
32       SELECT   *
33       FROM     igr_i_a_lines
34       WHERE    rowid = x_rowid;
35 
36   BEGIN
37 
38     l_rowid := x_rowid;
39 
40     -- Code for setting the Old and New Reference Values.
41     -- Populate Old Values.
42     OPEN cur_old_ref_values;
43     FETCH cur_old_ref_values INTO old_references;
44     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
45       CLOSE cur_old_ref_values;
46       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
47       igs_ge_msg_stack.add;
48       app_exception.raise_exception;
49       RETURN;
50     END IF;
51     CLOSE cur_old_ref_values;
52 
53     -- Populate New Values.
54     new_references.person_id                         := x_person_id;
55     new_references.enquiry_appl_number               := x_enquiry_appl_number;
56     new_references.sales_lead_line_id                := x_sales_lead_line_id;
57     new_references.preference                        := x_preference;
58 
59     IF (p_action = 'UPDATE') THEN
60       new_references.creation_date                   := old_references.creation_date;
61       new_references.created_by                      := old_references.created_by;
62     ELSE
63       new_references.creation_date                   := x_creation_date;
64       new_references.created_by                      := x_created_by;
65     END IF;
66 
67     new_references.last_update_date                  := x_last_update_date;
68     new_references.last_updated_by                   := x_last_updated_by;
69     new_references.last_update_login                 := x_last_update_login;
70 
71   END set_column_values;
72 
73 
74   PROCEDURE check_parent_existance AS
75   /*
76   ||  Created By : hreddych
77   ||  Created On : 22-JAN-2003
78   ||  Purpose : Checks for the existance of Parent records.
79   ||  Known limitations, enhancements or remarks :
80   ||  Change History :
81   ||  Who             When            What
82   ||  (reverse chronological order - newest change first)
83   */
84   BEGIN
85 
86     IF (((old_references.person_id = new_references.person_id) AND
87          (old_references.enquiry_appl_number = new_references.enquiry_appl_number)) OR
88         ((new_references.person_id IS NULL) OR
89          (new_references.enquiry_appl_number IS NULL))) THEN
90       NULL;
91     ELSIF NOT igr_i_appl_pkg.get_pk_For_validation (
92                 new_references.person_id,
93                 new_references.enquiry_appl_number
94               ) THEN
95       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
96       igs_ge_msg_stack.add;
97       app_exception.raise_exception;
98     END IF;
99 
100   END check_parent_existance;
101 
102 
103   FUNCTION get_pk_for_validation (
104     x_sales_lead_line_id                IN     NUMBER
105   ) RETURN BOOLEAN AS
106   /*
107   ||  Created By : hreddych
108   ||  Created On : 22-JAN-2003
109   ||  Purpose : Validates the Primary Key of the table.
110   ||  Known limitations, enhancements or remarks :
111   ||  Change History :
112   ||  Who             When            What
113   ||  (reverse chronological order - newest change first)
114   */
115     CURSOR cur_rowid IS
116       SELECT   rowid
117       FROM     igr_i_a_lines
118       WHERE    sales_lead_line_id = x_sales_lead_line_id
119       FOR UPDATE NOWAIT;
120 
121     lv_rowid cur_rowid%RowType;
122 
123   BEGIN
124 
125     OPEN cur_rowid;
126     FETCH cur_rowid INTO lv_rowid;
127     IF (cur_rowid%FOUND) THEN
128       CLOSE cur_rowid;
129       RETURN(TRUE);
130     ELSE
131       CLOSE cur_rowid;
132       RETURN(FALSE);
133     END IF;
134 
135   END get_pk_for_validation;
136 
137 
138   PROCEDURE get_fk_igr_i_appl (
139     x_person_id                         IN     NUMBER,
140     x_enquiry_appl_number               IN     NUMBER
141   ) AS
142   /*
143   ||  Created By : hreddych
144   ||  Created On : 22-JAN-2003
145   ||  Purpose : Validates the Foreign Keys for the table.
146   ||  Known limitations, enhancements or remarks :
147   ||  Change History :
148   ||  Who             When            What
149   ||  (reverse chronological order - newest change first)
150   */
151     CURSOR cur_rowid IS
152       SELECT   rowid
153       FROM     igr_i_a_lines
154       WHERE   ((enquiry_appl_number = x_enquiry_appl_number) AND
155                (person_id = x_person_id));
156 
157     lv_rowid cur_rowid%RowType;
158 
159   BEGIN
160 
161     OPEN cur_rowid;
162     FETCH cur_rowid INTO lv_rowid;
163     IF (cur_rowid%FOUND) THEN
164       CLOSE cur_rowid;
165       fnd_message.set_name ('IGS', 'IGS_FOREIGN_KEY_REFERENCE');
166       igs_ge_msg_stack.add;
167       app_exception.raise_exception;
168       RETURN;
169     END IF;
170     CLOSE cur_rowid;
171 
172   END get_fk_igr_i_appl;
173 
174 
175   PROCEDURE before_dml (
176     p_action                            IN     VARCHAR2,
177     x_rowid                             IN     VARCHAR2,
178     x_person_id                         IN     NUMBER,
179     x_enquiry_appl_number               IN     NUMBER,
180     x_sales_lead_line_id                IN     NUMBER,
181     x_preference                        IN     NUMBER,
182     x_creation_date                     IN     DATE,
183     x_created_by                        IN     NUMBER,
184     x_last_update_date                  IN     DATE,
185     x_last_updated_by                   IN     NUMBER,
186     x_last_update_login                 IN     NUMBER
187   ) AS
188   /*
189   ||  Created By : hreddych
190   ||  Created On : 22-JAN-2003
191   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
192   ||            Trigger Handlers for the table, before any DML operation.
193   ||  Known limitations, enhancements or remarks :
194   ||  Change History :
195   ||  Who             When            What
196   ||  (reverse chronological order - newest change first)
197   */
198   BEGIN
199 
200     set_column_values (
201       p_action,
202       x_rowid,
203       x_person_id,
204       x_enquiry_appl_number,
205       x_sales_lead_line_id,
206       x_preference,
207       x_creation_date,
208       x_created_by,
209       x_last_update_date,
210       x_last_updated_by,
211       x_last_update_login
212     );
213 
214     IF (p_action = 'INSERT') THEN
215       -- Call all the procedures related to Before Insert.
216       IF ( get_pk_for_validation(
217              new_references.sales_lead_line_id
218            )
219          ) THEN
220         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
221         igs_ge_msg_stack.add;
222         app_exception.raise_exception;
223       END IF;
224       check_parent_existance;
225     ELSIF (p_action = 'UPDATE') THEN
226       -- Call all the procedures related to Before Update.
227       check_parent_existance;
228     ELSIF (p_action = 'VALIDATE_INSERT') THEN
229       -- Call all the procedures related to Before Insert.
230       IF ( get_pk_for_validation (
231              new_references.sales_lead_line_id
232            )
233          ) THEN
234         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
235         igs_ge_msg_stack.add;
236         app_exception.raise_exception;
237       END IF;
238     END IF;
239 
240   END before_dml;
241 
242 
243   PROCEDURE insert_row (
244     x_rowid                             IN OUT NOCOPY VARCHAR2,
245     x_person_id                         IN     NUMBER,
246     x_enquiry_appl_number               IN     NUMBER,
247     x_sales_lead_line_id                IN     NUMBER,
248     x_preference                        IN     NUMBER,
249     x_mode                              IN     VARCHAR2
250   ) AS
251   /*
252   ||  Created By : hreddych
253   ||  Created On : 22-JAN-2003
254   ||  Purpose : Handles the INSERT DML logic for the table.
255   ||  Known limitations, enhancements or remarks :
256   ||  Change History :
257   ||  Who             When            What
258   ||  (reverse chronological order - newest change first)
259   */
260 
261     x_last_update_date           DATE;
262     x_last_updated_by            NUMBER;
263     x_last_update_login          NUMBER;
264     x_request_id                 NUMBER;
265     x_program_id                 NUMBER;
266     x_program_application_id     NUMBER;
267     x_program_update_date        DATE;
268 
269   BEGIN
270 
271     x_last_update_date := SYSDATE;
272     IF (x_mode = 'I') THEN
273       x_last_updated_by := 1;
274       x_last_update_login := 0;
275     ELSIF (x_mode = 'R') THEN
276       x_last_updated_by := fnd_global.user_id;
277       IF (x_last_updated_by IS NULL) THEN
278         x_last_updated_by := -1;
279       END IF;
280       x_last_update_login := fnd_global.login_id;
281       IF (x_last_update_login IS NULL) THEN
282         x_last_update_login := -1;
283       END IF;
284       x_request_id             := fnd_global.conc_request_id;
285       x_program_id             := fnd_global.conc_program_id;
286       x_program_application_id := fnd_global.prog_appl_id;
287 
288       IF (x_request_id = -1) THEN
289         x_request_id             := NULL;
290         x_program_id             := NULL;
291         x_program_application_id := NULL;
292         x_program_update_date    := NULL;
293       ELSE
294         x_program_update_date    := SYSDATE;
295       END IF;
296     ELSE
297       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
298       fnd_message.set_token ('ROUTINE', 'IGR_I_A_LINES_PKG.INSERT_ROW');
299       igs_ge_msg_stack.add;
300       app_exception.raise_exception;
301     END IF;
302 
303     before_dml(
304       p_action                            => 'INSERT',
305       x_rowid                             => x_rowid,
306       x_person_id                         => x_person_id,
307       x_enquiry_appl_number               => x_enquiry_appl_number,
308       x_sales_lead_line_id                => x_sales_lead_line_id,
309       x_preference                        => x_preference,
310       x_creation_date                     => x_last_update_date,
311       x_created_by                        => x_last_updated_by,
312       x_last_update_date                  => x_last_update_date,
313       x_last_updated_by                   => x_last_updated_by,
314       x_last_update_login                 => x_last_update_login
315     );
316 
317     INSERT INTO igr_i_a_lines (
318       person_id,
319       enquiry_appl_number,
320       sales_lead_line_id,
321       preference,
322       creation_date,
323       created_by,
324       last_update_date,
325       last_updated_by,
326       last_update_login,
327       request_id,
328       program_id,
329       program_application_id,
330       program_update_date
331     ) VALUES (
332       new_references.person_id,
333       new_references.enquiry_appl_number,
334       new_references.sales_lead_line_id,
335       new_references.preference,
336       x_last_update_date,
337       x_last_updated_by,
338       x_last_update_date,
339       x_last_updated_by,
340       x_last_update_login ,
341       x_request_id,
342       x_program_id,
343       x_program_application_id,
344       x_program_update_date
345     ) RETURNING ROWID INTO x_rowid;
346 
347   END insert_row;
348 
349 
350   PROCEDURE lock_row (
351     x_rowid                             IN     VARCHAR2,
352     x_person_id                         IN     NUMBER,
353     x_enquiry_appl_number               IN     NUMBER,
354     x_sales_lead_line_id                IN     NUMBER,
355     x_preference                        IN     NUMBER
356   ) AS
357   /*
358   ||  Created By : hreddych
359   ||  Created On : 22-JAN-2003
360   ||  Purpose : Handles the LOCK mechanism for the table.
361   ||  Known limitations, enhancements or remarks :
362   ||  Change History :
363   ||  Who             When            What
364   ||  (reverse chronological order - newest change first)
365   */
366     CURSOR c1 IS
367       SELECT
368         person_id,
369         enquiry_appl_number,
370         preference
371       FROM  igr_i_a_lines
372       WHERE rowid = x_rowid
373       FOR UPDATE NOWAIT;
374 
375     tlinfo c1%ROWTYPE;
376 
377   BEGIN
378 
379     OPEN c1;
380     FETCH c1 INTO tlinfo;
381     IF (c1%notfound) THEN
382       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
383       igs_ge_msg_stack.add;
384       CLOSE c1;
385       app_exception.raise_exception;
386       RETURN;
387     END IF;
388     CLOSE c1;
389 
390     IF (
391         (tlinfo.person_id = x_person_id)
392         AND (tlinfo.enquiry_appl_number = x_enquiry_appl_number)
393         AND ((tlinfo.preference = x_preference) OR ((tlinfo.preference IS NULL) AND (X_preference IS NULL)))
394        ) THEN
395       NULL;
396     ELSE
397       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
398       igs_ge_msg_stack.add;
399       app_exception.raise_exception;
400     END IF;
401 
402     RETURN;
403 
404   END lock_row;
405 
406 
407   PROCEDURE update_row (
408     x_rowid                             IN     VARCHAR2,
409     x_person_id                         IN     NUMBER,
410     x_enquiry_appl_number               IN     NUMBER,
411     x_sales_lead_line_id                IN     NUMBER,
412     x_preference                        IN     NUMBER,
413     x_mode                              IN     VARCHAR2
414   ) AS
415   /*
416   ||  Created By : hreddych
417   ||  Created On : 22-JAN-2003
418   ||  Purpose : Handles the UPDATE DML logic for the table.
419   ||  Known limitations, enhancements or remarks :
420   ||  Change History :
421   ||  Who             When            What
422   ||  (reverse chronological order - newest change first)
423   */
424     x_last_update_date           DATE ;
425     x_last_updated_by            NUMBER;
426     x_last_update_login          NUMBER;
427     x_request_id                 NUMBER;
428     x_program_id                 NUMBER;
429     x_program_application_id     NUMBER;
430     x_program_update_date        DATE;
431 
432   BEGIN
433 
434     x_last_update_date := SYSDATE;
435     IF (X_MODE = 'I') THEN
436       x_last_updated_by := 1;
437       x_last_update_login := 0;
438     ELSIF (x_mode = 'R') THEN
439       x_last_updated_by := fnd_global.user_id;
440       IF x_last_updated_by IS NULL THEN
441         x_last_updated_by := -1;
442       END IF;
443       x_last_update_login := fnd_global.login_id;
444       IF (x_last_update_login IS NULL) THEN
445         x_last_update_login := -1;
446       END IF;
447     ELSE
448       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
449       fnd_message.set_token ('ROUTINE', 'IGR_I_A_LINES_PKG.UPDATE_ROW');
450       igs_ge_msg_stack.add;
451       app_exception.raise_exception;
452     END IF;
453 
454     before_dml(
455       p_action                            => 'UPDATE',
456       x_rowid                             => x_rowid,
457       x_person_id                         => x_person_id,
458       x_enquiry_appl_number               => x_enquiry_appl_number,
459       x_sales_lead_line_id                => x_sales_lead_line_id,
460       x_preference                        => x_preference,
461       x_creation_date                     => x_last_update_date,
462       x_created_by                        => x_last_updated_by,
463       x_last_update_date                  => x_last_update_date,
464       x_last_updated_by                   => x_last_updated_by,
465       x_last_update_login                 => x_last_update_login
466     );
467 
468     IF (x_mode = 'R') THEN
469       x_request_id := fnd_global.conc_request_id;
470       x_program_id := fnd_global.conc_program_id;
471       x_program_application_id := fnd_global.prog_appl_id;
472       IF (x_request_id =  -1) THEN
473         x_request_id := old_references.request_id;
474         x_program_id := old_references.program_id;
475         x_program_application_id := old_references.program_application_id;
476         x_program_update_date := old_references.program_update_date;
477       ELSE
478         x_program_update_date := SYSDATE;
479       END IF;
480     END IF;
481 
482     UPDATE igr_i_a_lines
483       SET
484         person_id                         = new_references.person_id,
485         enquiry_appl_number               = new_references.enquiry_appl_number,
486         preference                        = new_references.preference,
487         last_update_date                  = x_last_update_date,
488         last_updated_by                   = x_last_updated_by,
489         last_update_login                 = x_last_update_login ,
490         request_id                        = x_request_id,
491         program_id                        = x_program_id,
492         program_application_id            = x_program_application_id,
493         program_update_date               = x_program_update_date
494       WHERE rowid = x_rowid;
495 
496     IF (SQL%NOTFOUND) THEN
497       RAISE NO_DATA_FOUND;
498     END IF;
499 
500   END update_row;
501 
502 
503   PROCEDURE add_row (
504     x_rowid                             IN OUT NOCOPY VARCHAR2,
505     x_person_id                         IN     NUMBER,
506     x_enquiry_appl_number               IN     NUMBER,
507     x_sales_lead_line_id                IN     NUMBER,
508     x_preference                        IN     NUMBER,
509     x_mode                              IN     VARCHAR2
510   ) AS
511   /*
512   ||  Created By : hreddych
513   ||  Created On : 22-JAN-2003
514   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
515   ||  Known limitations, enhancements or remarks :
516   ||  Change History :
517   ||  Who             When            What
518   ||  (reverse chronological order - newest change first)
519   */
520     CURSOR c1 IS
521       SELECT   rowid
522       FROM     igr_i_a_lines
523       WHERE    sales_lead_line_id                = x_sales_lead_line_id;
524 
525   BEGIN
526 
527     OPEN c1;
528     FETCH c1 INTO x_rowid;
529     IF (c1%NOTFOUND) THEN
530       CLOSE c1;
531 
532       insert_row (
533         x_rowid,
534         x_person_id,
535         x_enquiry_appl_number,
536         x_sales_lead_line_id,
537         x_preference,
538         x_mode
539       );
540       RETURN;
541     END IF;
542     CLOSE c1;
543 
544     update_row (
545       x_rowid,
546       x_person_id,
547       x_enquiry_appl_number,
548       x_sales_lead_line_id,
549       x_preference,
550       x_mode
551     );
552 
553   END add_row;
554 
555 
556   PROCEDURE delete_row (
557     x_rowid IN VARCHAR2
558   ) AS
559   /*
560   ||  Created By : hreddych
561   ||  Created On : 22-JAN-2003
562   ||  Purpose : Handles the DELETE DML logic for the table.
563   ||  Known limitations, enhancements or remarks :
564   ||  Change History :
565   ||  Who             When            What
566   ||  (reverse chronological order - newest change first)
567   */
568   BEGIN
569 
570     before_dml (
571       p_action => 'DELETE',
572       x_rowid => x_rowid
573     );
574 
575     DELETE FROM igr_i_a_lines
576     WHERE rowid = x_rowid;
577 
578     IF (SQL%NOTFOUND) THEN
579       RAISE NO_DATA_FOUND;
580     END IF;
581 
582   END delete_row;
583 
584 
585 END igr_i_a_lines_pkg;