DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_HZ_PARTY_REL_PKG

Source


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