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