[Home] [Help]
PACKAGE BODY: APPS.IGF_AP_APPL_STATUS_PKG
Source
1 PACKAGE BODY igf_ap_appl_status_pkg AS
2 /* $Header: IGFAI77B.pls 120.0 2005/09/09 17:14:26 appldev noship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references igf_ap_appl_status_all%ROWTYPE;
6 new_references igf_ap_appl_status_all%ROWTYPE;
7
8 PROCEDURE set_column_values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2,
11 x_application_code IN VARCHAR2,
12 x_base_id IN NUMBER,
13 x_application_status_code IN VARCHAR2,
14 x_creation_date IN DATE,
15 x_created_by IN NUMBER,
16 x_last_update_date IN DATE,
17 x_last_updated_by IN NUMBER,
18 x_last_update_login IN NUMBER
19 ) AS
20 /*
21 || Created By :
22 || Created On : 05-JUL-2005
23 || Purpose : Initialises the Old and New references for the columns of the table.
24 || Known limitations, enhancements or remarks :
25 || Change History :
26 || Who When What
27 || (reverse chronological order - newest change first)
28 */
29
30 CURSOR cur_old_ref_values IS
31 SELECT *
32 FROM igf_ap_appl_status_all
33 WHERE rowid = x_rowid;
34
35 BEGIN
36
37 l_rowid := x_rowid;
38
39 -- Code for setting the Old and New Reference Values.
40 -- Populate Old Values.
41 OPEN cur_old_ref_values;
42 FETCH cur_old_ref_values INTO old_references;
43 IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
44 CLOSE cur_old_ref_values;
45 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
46 igs_ge_msg_stack.add;
47 app_exception.raise_exception;
48 RETURN;
49 END IF;
50 CLOSE cur_old_ref_values;
51
52 -- Populate New Values.
53 new_references.application_code := x_application_code;
54 new_references.base_id := x_base_id;
55 new_references.application_status_code := x_application_status_code;
56
57 IF (p_action = 'UPDATE') THEN
58 new_references.creation_date := old_references.creation_date;
59 new_references.created_by := old_references.created_by;
60 ELSE
61 new_references.creation_date := x_creation_date;
62 new_references.created_by := x_created_by;
63 END IF;
64
65 new_references.last_update_date := x_last_update_date;
66 new_references.last_updated_by := x_last_updated_by;
67 new_references.last_update_login := x_last_update_login;
68
69 END set_column_values;
70
71
72 PROCEDURE before_dml (
73 p_action IN VARCHAR2,
74 x_rowid IN VARCHAR2,
75 x_application_code IN VARCHAR2,
76 x_base_id IN NUMBER,
77 x_application_status_code IN VARCHAR2,
78 x_creation_date IN DATE,
79 x_created_by IN NUMBER,
80 x_last_update_date IN DATE,
81 x_last_updated_by IN NUMBER,
82 x_last_update_login IN NUMBER
83 ) AS
84 /*
85 || Created By :
86 || Created On : 05-JUL-2005
87 || Purpose : Initialises the columns, Checks Constraints, Calls the
88 || Trigger Handlers for the table, before any DML operation.
89 || Known limitations, enhancements or remarks :
90 || Change History :
91 || Who When What
92 || (reverse chronological order - newest change first)
93 */
94 BEGIN
95
96 set_column_values (
97 p_action,
98 x_rowid,
99 x_application_code,
100 x_base_id,
101 x_application_status_code,
102 x_creation_date,
103 x_created_by,
104 x_last_update_date,
105 x_last_updated_by,
106 x_last_update_login
107 );
108
109 IF (p_action = 'INSERT') THEN
110 -- Call all the procedures related to Before Insert.
111 IF ( get_pk_for_validation(
112 x_base_id,
113 x_application_code
114 )
115 ) THEN
116 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
117 igs_ge_msg_stack.add;
118 app_exception.raise_exception;
119 END IF;
120 ELSIF (p_action = 'VALIDATE_INSERT') THEN
121 -- Call all the procedures related to Before Insert.
122 IF ( get_pk_for_validation (
123 x_base_id,
124 x_application_code
125 )
126 ) THEN
127 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
128 igs_ge_msg_stack.add;
129 app_exception.raise_exception;
130 END IF;
131 END IF;
132
133 END before_dml;
134
135
136 FUNCTION get_pk_for_validation (
137 x_base_id IN NUMBER,
138 x_application_code IN VARCHAR2
139 ) RETURN BOOLEAN AS
140 /*
141 || Created By : upinjark
142 || Created On : 06-JUL-2005
143 || Purpose : Validates the Primary Key of 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 igf_ap_appl_status_all
152 WHERE base_id = x_base_id
153 AND application_code = x_application_code
154 FOR UPDATE NOWAIT;
155
156 lv_rowid cur_rowid%RowType;
157
158 BEGIN
159
160 OPEN cur_rowid;
161 FETCH cur_rowid INTO lv_rowid;
162 IF (cur_rowid%FOUND) THEN
163 CLOSE cur_rowid;
164 RETURN(TRUE);
165 ELSE
166 CLOSE cur_rowid;
167 RETURN(FALSE);
168 END IF;
169
170 END get_pk_for_validation;
171
172
173
174 PROCEDURE insert_row (
175 x_rowid IN OUT NOCOPY VARCHAR2,
176 x_application_code IN VARCHAR2,
177 x_base_id IN OUT NOCOPY NUMBER,
178 x_application_status_code IN VARCHAR2,
179 x_mode IN VARCHAR2
180 ) AS
181 /*
182 || Created By :
183 || Created On : 05-JUL-2005
184 || Purpose : Handles the INSERT DML logic for the table.
185 || Known limitations, enhancements or remarks :
186 || Change History :
187 || Who When What
188 || (reverse chronological order - newest change first)
189 */
190
191 x_last_update_date DATE;
192 x_last_updated_by NUMBER;
193 x_last_update_login NUMBER;
194
195 BEGIN
196
197 x_last_update_date := SYSDATE;
198 IF (x_mode = 'I') THEN
199 x_last_updated_by := 1;
200 x_last_update_login := 0;
201 ELSIF (x_mode = 'R') THEN
202 x_last_updated_by := fnd_global.user_id;
203 IF (x_last_updated_by IS NULL) THEN
204 x_last_updated_by := -1;
205 END IF;
206 x_last_update_login := fnd_global.login_id;
207 IF (x_last_update_login IS NULL) THEN
208 x_last_update_login := -1;
209 END IF;
210 ELSE
211 fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
212 fnd_message.set_token ('ROUTINE', 'IGF_AP_APPL_STATUS_PKG.INSERT_ROW');
213 igs_ge_msg_stack.add;
214 app_exception.raise_exception;
215 END IF;
216
217 before_dml(
218 p_action => 'INSERT',
219 x_rowid => x_rowid,
220 x_application_code => x_application_code,
221 x_base_id => x_base_id,
222 x_application_status_code => x_application_status_code,
223 x_creation_date => x_last_update_date,
224 x_created_by => x_last_updated_by,
225 x_last_update_date => x_last_update_date,
226 x_last_updated_by => x_last_updated_by,
227 x_last_update_login => x_last_update_login
228 );
229
230 INSERT INTO igf_ap_appl_status_all (
231 application_code,
232 base_id,
233 application_status_code,
234 creation_date,
235 created_by,
236 last_update_date,
237 last_updated_by,
238 last_update_login
239 ) VALUES (
240 new_references.application_code,
241 new_references.base_id,
242 new_references.application_status_code,
243 x_last_update_date,
244 x_last_updated_by,
245 x_last_update_date,
246 x_last_updated_by,
247 x_last_update_login
248 ) RETURNING ROWID, base_id INTO x_rowid, x_base_id;
249
250 END insert_row;
251
252
253 PROCEDURE lock_row (
254 x_rowid IN VARCHAR2,
255 x_application_code IN VARCHAR2,
256 x_base_id IN NUMBER,
257 x_application_status_code IN VARCHAR2
258 ) AS
259 /*
260 || Created By :
261 || Created On : 05-JUL-2005
262 || Purpose : Handles the LOCK mechanism for the table.
263 || Known limitations, enhancements or remarks :
264 || Change History :
265 || Who When What
266 || (reverse chronological order - newest change first)
267 */
268 CURSOR c1 IS
269 SELECT
270 application_code,
271 base_id,
272 application_status_code
273 FROM igf_ap_appl_status_all
274 WHERE rowid = x_rowid
275 FOR UPDATE NOWAIT;
276
277 tlinfo c1%ROWTYPE;
278
279 BEGIN
280
281 OPEN c1;
282 FETCH c1 INTO tlinfo;
283 IF (c1%notfound) THEN
284 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
285 igs_ge_msg_stack.add;
286 CLOSE c1;
287 app_exception.raise_exception;
288 RETURN;
289 END IF;
290 CLOSE c1;
291
292 IF (
293 (tlinfo.application_code = x_application_code)
294 AND (tlinfo.base_id = x_base_id)
295 AND ((tlinfo.application_status_code = x_application_status_code) OR ((tlinfo.application_status_code IS NULL) AND (X_application_status_code IS NULL)))
296 ) THEN
297 NULL;
298 ELSE
299 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
300 igs_ge_msg_stack.add;
301 app_exception.raise_exception;
302 END IF;
303
304 RETURN;
305
306 END lock_row;
307
308
309 PROCEDURE update_row (
310 x_rowid IN VARCHAR2,
311 x_application_code IN VARCHAR2,
312 x_base_id IN NUMBER,
313 x_application_status_code IN VARCHAR2,
314 x_mode IN VARCHAR2
315 ) AS
316 /*
317 || Created By :
318 || Created On : 05-JUL-2005
319 || Purpose : Handles the UPDATE DML logic for the table.
320 || Known limitations, enhancements or remarks :
321 || Change History :
322 || Who When What
323 || (reverse chronological order - newest change first)
324 */
325 x_last_update_date DATE ;
326 x_last_updated_by NUMBER;
327 x_last_update_login NUMBER;
328
329 BEGIN
330
331 x_last_update_date := SYSDATE;
332 IF (X_MODE = 'I') THEN
333 x_last_updated_by := 1;
334 x_last_update_login := 0;
335 ELSIF (x_mode = 'R') THEN
336 x_last_updated_by := fnd_global.user_id;
337 IF x_last_updated_by IS NULL THEN
338 x_last_updated_by := -1;
339 END IF;
340 x_last_update_login := fnd_global.login_id;
341 IF (x_last_update_login IS NULL) THEN
342 x_last_update_login := -1;
343 END IF;
344 ELSE
345 fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
346 fnd_message.set_token ('ROUTINE', 'IGF_AP_APPL_STATUS_PKG.UPDATE_ROW');
347 igs_ge_msg_stack.add;
348 app_exception.raise_exception;
349 END IF;
350
351 before_dml(
355 x_base_id => x_base_id,
352 p_action => 'UPDATE',
353 x_rowid => x_rowid,
354 x_application_code => x_application_code,
356 x_application_status_code => x_application_status_code,
357 x_creation_date => x_last_update_date,
358 x_created_by => x_last_updated_by,
359 x_last_update_date => x_last_update_date,
360 x_last_updated_by => x_last_updated_by,
361 x_last_update_login => x_last_update_login
362 );
363
364 UPDATE igf_ap_appl_status_all
365 SET
366 application_code = new_references.application_code,
367 base_id = new_references.base_id,
368 application_status_code = new_references.application_status_code,
369 last_update_date = x_last_update_date,
370 last_updated_by = x_last_updated_by,
371 last_update_login = x_last_update_login
372 WHERE rowid = x_rowid;
373
374 IF (SQL%NOTFOUND) THEN
375 RAISE NO_DATA_FOUND;
376 END IF;
377
378 END update_row;
379
380
381 PROCEDURE add_row (
382 x_rowid IN OUT NOCOPY VARCHAR2,
383 x_application_code IN VARCHAR2,
384 x_base_id IN OUT NOCOPY NUMBER,
385 x_application_status_code IN VARCHAR2,
386 x_mode IN VARCHAR2
387 ) AS
388 /*
389 || Created By :
390 || Created On : 05-JUL-2005
391 || Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
392 || Known limitations, enhancements or remarks :
393 || Change History :
394 || Who When What
395 || (reverse chronological order - newest change first)
396 */
397 CURSOR c1 IS
398 SELECT rowid
399 FROM igf_ap_appl_status_all
400 WHERE base_id = x_base_id
401 AND application_code = x_application_code;
402
403 BEGIN
404
405 OPEN c1;
406 FETCH c1 INTO x_rowid;
407 IF (c1%NOTFOUND) THEN
408 CLOSE c1;
409
410 insert_row (
411 x_rowid,
412 x_application_code,
413 x_base_id,
414 x_application_status_code,
415 x_mode
416 );
417 RETURN;
418 END IF;
419 CLOSE c1;
420
421 update_row (
422 x_rowid,
423 x_application_code,
424 x_base_id,
425 x_application_status_code,
426 x_mode
427 );
428
429 END add_row;
430
431
432 PROCEDURE delete_row (
433 x_rowid IN VARCHAR2
434 ) AS
435 /*
436 || Created By :
437 || Created On : 05-JUL-2005
438 || Purpose : Handles the DELETE DML logic for the table.
439 || Known limitations, enhancements or remarks :
440 || Change History :
441 || Who When What
442 || (reverse chronological order - newest change first)
443 */
444 BEGIN
445
446 before_dml (
447 p_action => 'DELETE',
448 x_rowid => x_rowid
449 );
450
451 DELETE FROM igf_ap_appl_status_all
452 WHERE rowid = x_rowid;
453
454 IF (SQL%NOTFOUND) THEN
455 RAISE NO_DATA_FOUND;
456 END IF;
457
458 END delete_row;
459
460
461 END igf_ap_appl_status_pkg;