DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_HZ_PTY_SITES_PKG

Source


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