DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_SA_SEGMENTS_PKG

Source


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