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