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