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