DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGP_AC_ACCOUNTS_PKG

Source


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