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