1 package body IGS_PE_UNT_SET_EXCL_PKG AS
2 /* $Header: IGSNI35B.pls 115.4 2002/11/29 01:22:46 nsidana ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_PE_UNT_SET_EXCL%RowType;
6 new_references IGS_PE_UNT_SET_EXCL%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_pee_sequence_number IN NUMBER DEFAULT NULL,
12 x_unit_set_cd IN VARCHAR2 DEFAULT NULL,
13 x_us_version_number IN NUMBER DEFAULT NULL,
14 x_puse_start_dt IN DATE DEFAULT NULL,
15 x_expiry_dt IN DATE DEFAULT NULL,
16 x_person_id IN NUMBER DEFAULT NULL,
17 x_encumbrance_type IN VARCHAR2 DEFAULT NULL,
18 x_pen_start_dt IN DATE DEFAULT NULL,
19 x_s_encmb_effect_type IN VARCHAR2 DEFAULT NULL,
20 x_pee_start_dt IN DATE DEFAULT NULL,
21 x_creation_date IN DATE DEFAULT NULL,
22 x_created_by IN NUMBER DEFAULT NULL,
23 x_last_update_date IN DATE DEFAULT NULL,
24 x_last_updated_by IN NUMBER DEFAULT NULL,
25 x_last_update_login IN NUMBER DEFAULT NULL
26 ) AS
27
28 CURSOR cur_old_ref_values IS
29 SELECT *
30 FROM IGS_PE_UNT_SET_EXCL
31 WHERE rowid = x_rowid;
32
33 BEGIN
34
35 l_rowid := x_rowid;
36
37 -- Code for setting the Old and New Reference Values.
38 -- Populate Old Values.
39 Open cur_old_ref_values;
40 Fetch cur_old_ref_values INTO old_references;
41 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN( 'INSERT','VALIDATE_INSERT')) THEN
42 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
43 IGS_GE_MSG_STACK.ADD;
44 Close cur_old_ref_values;
45 App_Exception.Raise_Exception;
46 Return;
47 END IF;
48 Close cur_old_ref_values;
49
50 -- Populate New Values.
51 new_references.pee_sequence_number := x_pee_sequence_number;
52 new_references.unit_set_cd := x_unit_set_cd;
53 new_references.us_version_number := x_us_version_number;
54 new_references.puse_start_dt := x_puse_start_dt;
55 new_references.expiry_dt := x_expiry_dt;
56 new_references.person_id := x_person_id;
57 new_references.encumbrance_type := x_encumbrance_type;
58 new_references.pen_start_dt := x_pen_start_dt;
59 new_references.s_encmb_effect_type := x_s_encmb_effect_type;
60 new_references.pee_start_dt := x_pee_start_dt;
61 IF (p_action = 'UPDATE') THEN
62 new_references.creation_date := old_references.creation_date;
63 new_references.created_by := old_references.created_by;
64 ELSE
65 new_references.creation_date := x_creation_date;
66 new_references.created_by := x_created_by;
67 END IF;
68 new_references.last_update_date := x_last_update_date;
69 new_references.last_updated_by := x_last_updated_by;
70 new_references.last_update_login := x_last_update_login;
71
72 END Set_Column_Values;
73
74 PROCEDURE BeforeRowInsertUpdate1(
75 p_inserting IN BOOLEAN DEFAULT FALSE,
76 p_updating IN BOOLEAN DEFAULT FALSE,
77 p_deleting IN BOOLEAN DEFAULT FALSE
78 ) AS
79 v_message_name varchar2(30);
80 BEGIN
81 -- Validate that start date is not less than the current date.
82 IF (new_references.puse_start_dt IS NOT NULL) AND
83 (p_inserting OR (p_updating AND
84 (NVL(old_references.puse_start_dt, IGS_GE_DATE.IGSDATE('1900/01/01'))
85 <> new_references.puse_start_dt)))
86 THEN
87 IF IGS_EN_VAL_PCE.enrp_val_encmb_dt (
88 new_references.puse_start_dt,
89 v_message_name ) = FALSE THEN
90 Fnd_Message.Set_Name('IGS', v_message_name);
91 IGS_GE_MSG_STACK.ADD;
92 App_Exception.Raise_Exception;
93 END IF;
94 END IF;
95 -- Validate that start date is not less than the parent IGS_PE_PERSON
96 -- Encumbrance Effect start date.
97 IF p_inserting THEN
98 IF IGS_EN_VAL_PCE.enrp_val_encmb_dts (
99 new_references.pee_start_dt,
100 new_references.puse_start_dt,
101 v_message_name ) = FALSE THEN
102 Fnd_Message.Set_Name('IGS', v_message_name);
103 IGS_GE_MSG_STACK.ADD;
104 App_Exception.Raise_Exception;
105 END IF;
106 END IF;
107 -- Validate that if expiry date is specified, then expiry date is not
108 -- less than the start date.
109 IF (new_references.expiry_dt IS NOT NULL) AND
110 (p_inserting OR (p_updating AND
111 (NVL(old_references.expiry_dt, IGS_GE_DATE.IGSDATE('1900/01/01'))
112 <> new_references.expiry_dt)))
113 THEN
114 IF IGS_EN_VAL_PCE.enrp_val_strt_exp_dt (
115 new_references.puse_start_dt,
116 new_references.expiry_dt,
117 v_message_name ) = FALSE THEN
118 IGS_GE_MSG_STACK.ADD;
119 Fnd_Message.Set_Name('IGS', v_message_name);
120 IGS_GE_MSG_STACK.ADD;
121 App_Exception.Raise_Exception;
122 END IF;
123 IF IGS_EN_VAL_PCE.enrp_val_encmb_dt (
124 new_references.expiry_dt,
125 v_message_name ) = FALSE THEN
126 Fnd_Message.Set_Name('IGS', v_message_name);
127 IGS_GE_MSG_STACK.ADD;
128 App_Exception.Raise_Exception;
129 END IF;
130 END IF;
131 -- Validate that records for this table can be created for the encumbrance
132 -- effect type.
133 IF p_inserting THEN
134 IF IGS_EN_VAL_PCE.enrp_val_pee_table (
135 new_references.s_encmb_effect_type,
136 'IGS_PE_UNT_SET_EXCL',
137 v_message_name ) = FALSE THEN
138 Fnd_Message.Set_Name('IGS', v_message_name);
139 IGS_GE_MSG_STACK.ADD;
140 App_Exception.Raise_Exception;
141 END IF;
142 END IF;
143 -- Validate if IGS_PE_PERSON is enrolled in the IGS_PS_UNIT set which is to be excluded.
144 -- If so, raise an error as this is not allowable.
145 IF p_inserting THEN
146 IF IGS_EN_VAL_PUSE.enrp_val_puse_us (
147 new_references.person_id,
148 new_references.unit_set_cd,
149 new_references.us_version_number,
150 null,
151 v_message_name ) = FALSE THEN
152 Fnd_Message.Set_Name('IGS', v_message_name);
153 IGS_GE_MSG_STACK.ADD;
154 App_Exception.Raise_Exception;
155 END IF;
156 END IF;
157
158
159 END BeforeRowInsertUpdate1;
160
161 -- Trigger description :-
162 -- "OSS_TST".trg_puse_ar_iu
163 -- AFTER INSERT OR UPDATE
164 -- ON IGS_PE_UNT_SET_EXCL
165 -- FOR EACH ROW
166
167 PROCEDURE AfterRowInsertUpdate2(
168 p_inserting IN BOOLEAN DEFAULT FALSE,
169 p_updating IN BOOLEAN DEFAULT FALSE,
170 p_deleting IN BOOLEAN DEFAULT FALSE
171 ) AS
172 v_message_name varchar2(30);
173 v_rowid_saved BOOLEAN := FALSE;
174 BEGIN
175 -- Validate for open ended IGS_PE_PERSON IGS_PS_UNIT set exclusion records.
176 IF new_references.expiry_dt IS NULL THEN
177 -- Validate for open ended IGS_PE_UNT_SET_EXCL records.
178 IF new_references.expiry_dt IS NULL THEN
179 IF IGS_EN_VAL_PUSE.enrp_val_puse_open (
180 new_references.person_id,
181 new_references.encumbrance_type,
182 new_references.pen_start_dt,
183 new_references.s_encmb_effect_type,
184 new_references.pee_start_dt,
185 new_references.unit_set_cd,
186 new_references.us_version_number,
187 new_references.puse_start_dt,
188 v_message_name) = FALSE THEN
189 Fnd_Message.Set_Name('IGS', v_message_name);
190 IGS_GE_MSG_STACK.ADD;
191 App_Exception.Raise_Exception;
192 END IF;
193 END IF;
194
195 END IF;
196
197
198 END AfterRowInsertUpdate2;
199
200 -- Trigger description :-
201 -- "OSS_TST".trg_puse_as_iu
202 -- AFTER INSERT OR UPDATE
203 -- ON IGS_PE_UNT_SET_EXCL
204
205
206
207 PROCEDURE Check_Constraints (
208 Column_Name IN VARCHAR2 DEFAULT NULL,
209 Column_Value IN VARCHAR2 DEFAULT NULL
210 )
211 AS
212 BEGIN
213 IF column_name is null then
214 NULL;
215
216 ELSIF upper(Column_name) = 'ENCUMBRANCE_TYPE' then
217 new_references.encumbrance_type := column_value;
218 ELSIF upper(Column_name) = 'S_ENCMB_EFFECT_TYPE' then
219 new_references.s_encmb_effect_type := column_value;
220 ELSIF upper(Column_name) = 'UNIT_SET_CD' then
221 new_references.unit_set_cd:= column_value;
222 END IF;
223 IF upper(column_name) = 'ENCUMBRANCE_TYPE' OR
224 column_name is null Then
225 IF new_references.encumbrance_type <>UPPER(new_references.encumbrance_type)Then
226 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
227 IGS_GE_MSG_STACK.ADD;
228 App_Exception.Raise_Exception;
229 END IF;
230 END IF;
231 IF upper(column_name) = 'S_ENCMB_EFFECT_TYPE' OR
232 column_name is null Then
233 IF new_references.s_encmb_effect_type <>UPPER(new_references.s_encmb_effect_type)Then
234 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
235 IGS_GE_MSG_STACK.ADD;
236 App_Exception.Raise_Exception;
237 END IF;
238 END IF;
239 IF upper(column_name) = 'UNIT_SET_CD' OR
240 column_name is null Then
241 IF new_references.unit_set_cd <>UPPER(new_references.unit_set_cd)Then
242 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
243 IGS_GE_MSG_STACK.ADD;
244 App_Exception.Raise_Exception;
245 END IF;
246 END IF;
247
248 END Check_Constraints;
249
250
251 PROCEDURE Check_Parent_Existance AS
252 BEGIN
253
254 IF (((old_references.person_id = new_references.person_id) AND
255 (old_references.encumbrance_type = new_references.encumbrance_type) AND
256 (old_references.pen_start_dt = new_references.pen_start_dt) AND
257 (old_references.s_encmb_effect_type = new_references.s_encmb_effect_type) AND
258 (old_references.pee_start_dt = new_references.pee_start_dt) AND
259 (old_references.pee_sequence_number = new_references.pee_sequence_number)) OR
260 ((new_references.person_id IS NULL) OR
261 (new_references.encumbrance_type IS NULL) OR
262 (new_references.pen_start_dt IS NULL) OR
263 (new_references.s_encmb_effect_type IS NULL) OR
264 (new_references.pee_start_dt IS NULL) OR
265 (new_references.pee_sequence_number IS NULL))) THEN
266 NULL;
267 ELSE
268
269 IF NOT IGS_PE_PERSENC_EFFCT_PKG.Get_PK_For_Validation (
270 new_references.person_id,
271 new_references.encumbrance_type,
272 new_references.pen_start_dt,
273 new_references.s_encmb_effect_type,
274 new_references.pee_start_dt,
275 new_references.pee_sequence_number ) THEN
276 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
277 IGS_GE_MSG_STACK.ADD;
278 App_Exception.Raise_Exception;
279 END IF;
280 END IF;
281
282 IF (((old_references.unit_set_cd = new_references.unit_set_cd) AND
283 (old_references.us_version_number = new_references.us_version_number)) OR
284 ((new_references.unit_set_cd IS NULL) OR
285 (new_references.us_version_number IS NULL))) THEN
286 NULL;
287 ELSE
288 IF NOT IGS_EN_UNIT_SET_PKG.Get_PK_For_Validation (
289 new_references.unit_set_cd,
290 new_references.us_version_number ) THEN
291 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
292 IGS_GE_MSG_STACK.ADD;
293 App_Exception.Raise_Exception;
294 END IF;
295 END IF;
296
297 END Check_Parent_Existance;
298
299 FUNCTION Get_PK_For_Validation (
300 x_s_encmb_effect_type IN VARCHAR2,
301 x_pen_start_dt IN DATE,
302 x_person_id IN NUMBER,
303 x_encumbrance_type IN VARCHAR2,
304 x_pee_start_dt IN DATE,
305 x_pee_sequence_number IN NUMBER,
306 x_unit_set_cd IN VARCHAR2,
307 x_us_version_number IN NUMBER,
308 x_puse_start_dt IN DATE
309 ) RETURN BOOLEAN AS
310
311 CURSOR cur_rowid IS
312 SELECT rowid
313 FROM IGS_PE_UNT_SET_EXCL
314 WHERE s_encmb_effect_type = x_s_encmb_effect_type
315 AND pen_start_dt = x_pen_start_dt
316 AND person_id = x_person_id
317 AND encumbrance_type = x_encumbrance_type
318 AND pee_start_dt = x_pee_start_dt
319 AND pee_sequence_number = x_pee_sequence_number
320 AND unit_set_cd = x_unit_set_cd
321 AND us_version_number = x_us_version_number
322 AND puse_start_dt = x_puse_start_dt
323 FOR UPDATE NOWAIT;
324
325 lv_rowid cur_rowid%RowType;
326
327 BEGIN
328
329 Open cur_rowid;
330 Fetch cur_rowid INTO lv_rowid;
331 IF (cur_rowid%FOUND) THEN
332 Close cur_rowid;
333 Return (TRUE);
334 ELSE
335 Close cur_rowid;
336 Return (FALSE);
337 END IF;
338
339 END Get_PK_For_Validation;
340
341 PROCEDURE GET_FK_IGS_PE_PERSENC_EFFCT (
342 x_person_id IN NUMBER,
343 x_encumbrance_type IN VARCHAR2,
344 x_pen_start_dt IN DATE,
345 x_s_encmb_effect_type IN VARCHAR2,
346 x_pee_start_dt IN DATE,
347 x_pee_sequence_number IN NUMBER
348 ) AS
349
350 CURSOR cur_rowid IS
351 SELECT rowid
352 FROM IGS_PE_UNT_SET_EXCL
353 WHERE person_id = x_person_id
354 AND encumbrance_type = x_encumbrance_type
355 AND pen_start_dt = x_pen_start_dt
356 AND s_encmb_effect_type = x_s_encmb_effect_type
357 AND pee_start_dt = x_pee_start_dt
358 AND pee_sequence_number = x_pee_sequence_number ;
359
360 lv_rowid cur_rowid%RowType;
361
362 BEGIN
363
364 Open cur_rowid;
365 Fetch cur_rowid INTO lv_rowid;
366 IF (cur_rowid%FOUND) THEN
367 Fnd_Message.Set_Name ('IGS', 'IGS_PE_PUSE_PEE_FK');
368 IGS_GE_MSG_STACK.ADD;
369 Close cur_rowid;
370 App_Exception.Raise_Exception;
371 Return;
372 END IF;
373 Close cur_rowid;
374
375 END GET_FK_IGS_PE_PERSENC_EFFCT;
376
377 PROCEDURE GET_FK_IGS_EN_UNIT_SET (
378 x_unit_set_cd IN VARCHAR2,
379 x_version_number IN NUMBER
380 ) AS
381
382 CURSOR cur_rowid IS
383 SELECT rowid
384 FROM IGS_PE_UNT_SET_EXCL
385 WHERE unit_set_cd = x_unit_set_cd
386 AND us_version_number = x_version_number ;
387
388 lv_rowid cur_rowid%RowType;
389
390 BEGIN
391
392 Open cur_rowid;
393 Fetch cur_rowid INTO lv_rowid;
394 IF (cur_rowid%FOUND) THEN
395 Fnd_Message.Set_Name ('IGS', 'IGS_PE_PUSE_US_FK');
396 IGS_GE_MSG_STACK.ADD;
397 Close cur_rowid;
398 App_Exception.Raise_Exception;
399 Return;
400 END IF;
401 Close cur_rowid;
402
403 END GET_FK_IGS_EN_UNIT_SET;
404
405 PROCEDURE Before_DML (
406 p_action IN VARCHAR2,
407 x_rowid IN VARCHAR2 DEFAULT NULL,
408 x_pee_sequence_number IN NUMBER DEFAULT NULL,
409 x_unit_set_cd IN VARCHAR2 DEFAULT NULL,
410 x_us_version_number IN NUMBER DEFAULT NULL,
411 x_puse_start_dt IN DATE DEFAULT NULL,
412 x_expiry_dt IN DATE DEFAULT NULL,
413 x_person_id IN NUMBER DEFAULT NULL,
414 x_encumbrance_type IN VARCHAR2 DEFAULT NULL,
415 x_pen_start_dt IN DATE DEFAULT NULL,
416 x_s_encmb_effect_type IN VARCHAR2 DEFAULT NULL,
417 x_pee_start_dt IN DATE DEFAULT NULL,
418 x_creation_date IN DATE DEFAULT NULL,
419 x_created_by IN NUMBER DEFAULT NULL,
420 x_last_update_date IN DATE DEFAULT NULL,
421 x_last_updated_by IN NUMBER DEFAULT NULL,
422 x_last_update_login IN NUMBER DEFAULT NULL
423 ) AS
424 BEGIN
425
426 Set_Column_Values (
427 p_action,
428 x_rowid,
429 x_pee_sequence_number,
430 x_unit_set_cd,
431 x_us_version_number,
432 x_puse_start_dt,
433 x_expiry_dt,
434 x_person_id,
435 x_encumbrance_type,
436 x_pen_start_dt,
437 x_s_encmb_effect_type,
438 x_pee_start_dt,
439 x_creation_date,
440 x_created_by,
441 x_last_update_date,
442 x_last_updated_by,
443 x_last_update_login
444 );
445
446 IF (p_action = 'INSERT') THEN
447 -- Call all the procedures related to Before Insert.
448 BeforeRowInsertUpdate1 ( p_inserting => TRUE );
449 IF Get_PK_For_Validation (
450 new_references.s_encmb_effect_type ,
451 new_references.pen_start_dt ,
452 new_references.person_id ,
453 new_references.encumbrance_type ,
454 new_references.pee_start_dt ,
455 new_references.pee_sequence_number ,
456 new_references.unit_set_cd ,
457 new_references.us_version_number ,
458 new_references.puse_start_dt ) THEN
459 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
460 IGS_GE_MSG_STACK.ADD;
461 App_Exception.Raise_Exception;
462 END IF;
463
464 Check_Constraints; -- if procedure present
465 Check_Parent_Existance; -- if procedure present
466 ELSIF (p_action = 'UPDATE') THEN
467 -- Call all the procedures related to Before Update.
468 BeforeRowInsertUpdate1 ( p_updating => TRUE );
469
470 Check_Constraints; -- if procedure present
471 Check_Parent_Existance; -- if procedure present
472
473 ELSIF (p_action = 'DELETE') THEN
474 -- Call all the procedures related to Before Delete.
475
476 NULL;
477 ELSIF (p_action = 'VALIDATE_INSERT') THEN
478 IF Get_PK_For_Validation (
479 new_references.s_encmb_effect_type ,
480 new_references.pen_start_dt ,
481 new_references.person_id ,
482 new_references.encumbrance_type ,
483 new_references.pee_start_dt ,
484 new_references.pee_sequence_number ,
485 new_references.unit_set_cd ,
486 new_references.us_version_number ,
487 new_references.puse_start_dt ) THEN
488 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
489 IGS_GE_MSG_STACK.ADD;
490 App_Exception.Raise_Exception;
491 END IF;
492
493 Check_Constraints; -- if procedure present
494 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
495
496 Check_Constraints; -- if procedure present
497
498 ELSIF (p_action = 'VALIDATE_DELETE') THEN
499 NULL;
500 END IF;
501
502 END Before_DML;
503
504 PROCEDURE After_DML (
505 p_action IN VARCHAR2,
506 x_rowid IN VARCHAR2
507 ) AS
508 BEGIN
509
510 l_rowid := x_rowid;
511
512 IF (p_action = 'INSERT') THEN
513 -- Call all the procedures related to After Insert.
514 AfterRowInsertUpdate2 ( p_inserting => TRUE );
515
516 ELSIF (p_action = 'UPDATE') THEN
517 -- Call all the procedures related to After Update.
518 AfterRowInsertUpdate2 ( p_updating => TRUE );
519 ELSIF (p_action = 'DELETE') THEN
520 -- Call all the procedures related to After Delete.
521 Null;
522 END IF;
523
524 END After_DML;
525
526 procedure INSERT_ROW (
527 X_ROWID in out NOCOPY VARCHAR2,
528 X_PERSON_ID in NUMBER,
529 X_ENCUMBRANCE_TYPE in VARCHAR2,
530 X_PEN_START_DT in DATE,
531 X_S_ENCMB_EFFECT_TYPE in VARCHAR2,
532 X_PEE_START_DT in DATE,
533 X_PEE_SEQUENCE_NUMBER in NUMBER,
534 X_UNIT_SET_CD in VARCHAR2,
535 X_US_VERSION_NUMBER in NUMBER,
536 X_PUSE_START_DT in DATE,
537 X_EXPIRY_DT in DATE,
538 X_MODE in VARCHAR2 default 'R'
539 ) AS
540 cursor C is select ROWID from IGS_PE_UNT_SET_EXCL
541 where PERSON_ID = X_PERSON_ID
542 and ENCUMBRANCE_TYPE = X_ENCUMBRANCE_TYPE
543 and PEN_START_DT = X_PEN_START_DT
544 and S_ENCMB_EFFECT_TYPE = X_S_ENCMB_EFFECT_TYPE
545 and PEE_START_DT = X_PEE_START_DT
546 and PEE_SEQUENCE_NUMBER = X_PEE_SEQUENCE_NUMBER
547 and UNIT_SET_CD = X_UNIT_SET_CD
548 and US_VERSION_NUMBER = X_US_VERSION_NUMBER
549 and PUSE_START_DT = X_PUSE_START_DT;
550 X_LAST_UPDATE_DATE DATE;
551 X_LAST_UPDATED_BY NUMBER;
552 X_LAST_UPDATE_LOGIN NUMBER;
553 begin
554 X_LAST_UPDATE_DATE := SYSDATE;
555 if(X_MODE = 'I') then
556 X_LAST_UPDATED_BY := 1;
557 X_LAST_UPDATE_LOGIN := 0;
558 elsif (X_MODE = 'R') then
559 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
560 if X_LAST_UPDATED_BY is NULL then
561 X_LAST_UPDATED_BY := -1;
562 end if;
563 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
564 if X_LAST_UPDATE_LOGIN is NULL then
565 X_LAST_UPDATE_LOGIN := -1;
566 end if;
567 else
568 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
569 IGS_GE_MSG_STACK.ADD;
570 app_exception.raise_exception;
571 end if;
572
573 Before_DML(
574 p_action=>'INSERT',
575 x_rowid=>X_ROWID,
576 x_encumbrance_type=>X_ENCUMBRANCE_TYPE,
577 x_expiry_dt=>X_EXPIRY_DT,
578 x_pee_sequence_number=>X_PEE_SEQUENCE_NUMBER,
579 x_pee_start_dt=>X_PEE_START_DT,
580 x_pen_start_dt=>X_PEN_START_DT,
581 x_person_id=>X_PERSON_ID,
582 x_puse_start_dt=>X_PUSE_START_DT,
583 x_s_encmb_effect_type=>X_S_ENCMB_EFFECT_TYPE,
584 x_unit_set_cd=>X_UNIT_SET_CD,
585 x_us_version_number=>X_US_VERSION_NUMBER,
586 x_creation_date=>X_LAST_UPDATE_DATE,
587 x_created_by=>X_LAST_UPDATED_BY,
588 x_last_update_date=>X_LAST_UPDATE_DATE,
589 x_last_updated_by=>X_LAST_UPDATED_BY,
590 x_last_update_login=>X_LAST_UPDATE_LOGIN
591 );
592 insert into IGS_PE_UNT_SET_EXCL (
593 PERSON_ID,
594 ENCUMBRANCE_TYPE,
595 PEN_START_DT,
596 S_ENCMB_EFFECT_TYPE,
597 PEE_START_DT,
598 PEE_SEQUENCE_NUMBER,
599 UNIT_SET_CD,
600 US_VERSION_NUMBER,
601 PUSE_START_DT,
602 EXPIRY_DT,
603 CREATION_DATE,
604 CREATED_BY,
605 LAST_UPDATE_DATE,
606 LAST_UPDATED_BY,
607 LAST_UPDATE_LOGIN
608 ) values (
609 NEW_REFERENCES.PERSON_ID,
610 NEW_REFERENCES.ENCUMBRANCE_TYPE,
611 NEW_REFERENCES.PEN_START_DT,
612 NEW_REFERENCES.S_ENCMB_EFFECT_TYPE,
613 NEW_REFERENCES.PEE_START_DT,
614 NEW_REFERENCES.PEE_SEQUENCE_NUMBER,
615 NEW_REFERENCES.UNIT_SET_CD,
616 NEW_REFERENCES.US_VERSION_NUMBER,
617 NEW_REFERENCES.PUSE_START_DT,
618 NEW_REFERENCES.EXPIRY_DT,
619 X_LAST_UPDATE_DATE,
620 X_LAST_UPDATED_BY,
621 X_LAST_UPDATE_DATE,
622 X_LAST_UPDATED_BY,
623 X_LAST_UPDATE_LOGIN
624 );
625
626 open c;
627 fetch c into X_ROWID;
628 if (c%notfound) then
629 close c;
630 raise no_data_found;
631 end if;
632 close c;
633 After_DML(
634 p_action => 'INSERT',
635 x_rowid => X_ROWID
636 );
637 end INSERT_ROW;
638
639 procedure LOCK_ROW (
640 X_ROWID in VARCHAR2,
641 X_PERSON_ID in NUMBER,
642 X_ENCUMBRANCE_TYPE in VARCHAR2,
643 X_PEN_START_DT in DATE,
644 X_S_ENCMB_EFFECT_TYPE in VARCHAR2,
645 X_PEE_START_DT in DATE,
646 X_PEE_SEQUENCE_NUMBER in NUMBER,
647 X_UNIT_SET_CD in VARCHAR2,
648 X_US_VERSION_NUMBER in NUMBER,
649 X_PUSE_START_DT in DATE,
650 X_EXPIRY_DT in DATE
651 ) AS
652 cursor c1 is select
653 EXPIRY_DT
654 from IGS_PE_UNT_SET_EXCL
655 where ROWID = X_ROWID
656 for update nowait;
657 tlinfo c1%rowtype;
658
659 begin
660 open c1;
661 fetch c1 into tlinfo;
662 if (c1%notfound) then
663 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
664
665 close c1;
666 App_Exception.Raise_Exception;
667 return;
668 end if;
669 close c1;
670
671 if ( ((tlinfo.EXPIRY_DT = X_EXPIRY_DT)
672 OR ((tlinfo.EXPIRY_DT is null)
673 AND (X_EXPIRY_DT is null)))
674 ) then
675 null;
676 else
677 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
678 app_exception.raise_exception;
679 end if;
680 return;
681 end LOCK_ROW;
682
683 procedure UPDATE_ROW (
684 X_ROWID in VARCHAR2,
685 X_PERSON_ID in NUMBER,
686 X_ENCUMBRANCE_TYPE in VARCHAR2,
687 X_PEN_START_DT in DATE,
688 X_S_ENCMB_EFFECT_TYPE in VARCHAR2,
689 X_PEE_START_DT in DATE,
690 X_PEE_SEQUENCE_NUMBER in NUMBER,
691 X_UNIT_SET_CD in VARCHAR2,
692 X_US_VERSION_NUMBER in NUMBER,
693 X_PUSE_START_DT in DATE,
694 X_EXPIRY_DT in DATE,
695 X_MODE in VARCHAR2 default 'R'
696 ) AS
697 X_LAST_UPDATE_DATE DATE;
698 X_LAST_UPDATED_BY NUMBER;
699 X_LAST_UPDATE_LOGIN NUMBER;
700 begin
701 X_LAST_UPDATE_DATE := SYSDATE;
702 if(X_MODE = 'I') then
703 X_LAST_UPDATED_BY := 1;
704 X_LAST_UPDATE_LOGIN := 0;
705 elsif (X_MODE = 'R') then
706 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
707 if X_LAST_UPDATED_BY is NULL then
708 X_LAST_UPDATED_BY := -1;
709 end if;
710 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
711 if X_LAST_UPDATE_LOGIN is NULL then
712 X_LAST_UPDATE_LOGIN := -1;
713 end if;
714 else
715 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
716 IGS_GE_MSG_STACK.ADD;
717 app_exception.raise_exception;
718 end if;
719 Before_DML(
720 p_action=>'UPDATE',
721 x_rowid=>X_ROWID,
722 x_encumbrance_type=>X_ENCUMBRANCE_TYPE,
723 x_expiry_dt=>X_EXPIRY_DT,
724 x_pee_sequence_number=>X_PEE_SEQUENCE_NUMBER,
725 x_pee_start_dt=>X_PEE_START_DT,
726 x_pen_start_dt=>X_PEN_START_DT,
727 x_person_id=>X_PERSON_ID,
728 x_puse_start_dt=>X_PUSE_START_DT,
729 x_s_encmb_effect_type=>X_S_ENCMB_EFFECT_TYPE,
730 x_unit_set_cd=>X_UNIT_SET_CD,
731 x_us_version_number=>X_US_VERSION_NUMBER,
732 x_creation_date=>X_LAST_UPDATE_DATE,
733 x_created_by=>X_LAST_UPDATED_BY,
734 x_last_update_date=>X_LAST_UPDATE_DATE,
735 x_last_updated_by=>X_LAST_UPDATED_BY,
736 x_last_update_login=>X_LAST_UPDATE_LOGIN
737 );
738 update IGS_PE_UNT_SET_EXCL set
739 EXPIRY_DT = NEW_REFERENCES.EXPIRY_DT,
740 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
741 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
742 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
743 where ROWID = X_ROWID
744 ;
745 if (sql%notfound) then
746 raise no_data_found;
747 end if;
748 After_DML(
749 p_action => 'UPDATE',
750 x_rowid => X_ROWID
751 );
752 end UPDATE_ROW;
753
754 procedure ADD_ROW (
755 X_ROWID in out NOCOPY VARCHAR2,
756 X_PERSON_ID in NUMBER,
757 X_ENCUMBRANCE_TYPE in VARCHAR2,
758 X_PEN_START_DT in DATE,
759 X_S_ENCMB_EFFECT_TYPE in VARCHAR2,
760 X_PEE_START_DT in DATE,
761 X_PEE_SEQUENCE_NUMBER in NUMBER,
762 X_UNIT_SET_CD in VARCHAR2,
763 X_US_VERSION_NUMBER in NUMBER,
764 X_PUSE_START_DT in DATE,
765 X_EXPIRY_DT in DATE,
766 X_MODE in VARCHAR2 default 'R'
767 ) AS
768 cursor c1 is select rowid from IGS_PE_UNT_SET_EXCL
769 where PERSON_ID = X_PERSON_ID
770 and ENCUMBRANCE_TYPE = X_ENCUMBRANCE_TYPE
771 and PEN_START_DT = X_PEN_START_DT
772 and S_ENCMB_EFFECT_TYPE = X_S_ENCMB_EFFECT_TYPE
773 and PEE_START_DT = X_PEE_START_DT
774 and PEE_SEQUENCE_NUMBER = X_PEE_SEQUENCE_NUMBER
775 and UNIT_SET_CD = X_UNIT_SET_CD
776 and US_VERSION_NUMBER = X_US_VERSION_NUMBER
777 and PUSE_START_DT = X_PUSE_START_DT
778 ;
779
780 begin
781 open c1;
782 fetch c1 into X_ROWID;
783 if (c1%notfound) then
784 close c1;
785 INSERT_ROW (
786 X_ROWID,
787 X_PERSON_ID,
788 X_ENCUMBRANCE_TYPE,
789 X_PEN_START_DT,
790 X_S_ENCMB_EFFECT_TYPE,
791 X_PEE_START_DT,
792 X_PEE_SEQUENCE_NUMBER,
793 X_UNIT_SET_CD,
794 X_US_VERSION_NUMBER,
795 X_PUSE_START_DT,
796 X_EXPIRY_DT,
797 X_MODE);
798 return;
799 end if;
800 close c1;
801 UPDATE_ROW (
802 X_ROWID,
803 X_PERSON_ID,
804 X_ENCUMBRANCE_TYPE,
805 X_PEN_START_DT,
806 X_S_ENCMB_EFFECT_TYPE,
807 X_PEE_START_DT,
808 X_PEE_SEQUENCE_NUMBER,
809 X_UNIT_SET_CD,
810 X_US_VERSION_NUMBER,
811 X_PUSE_START_DT,
812 X_EXPIRY_DT,
813 X_MODE);
814 end ADD_ROW;
815
816 procedure DELETE_ROW (
817 X_ROWID in VARCHAR2
818 ) AS
819 begin
820
821 Before_DML(
822 p_action => 'DELETE',
823 x_rowid => X_ROWID
824 );
825 delete from IGS_PE_UNT_SET_EXCL
826 where ROWID = X_ROWID;
827 if (sql%notfound) then
828 raise no_data_found;
829 end if;
830 After_DML(
831 p_action => 'DELETE',
832 x_rowid => X_ROWID
833 );
834 end DELETE_ROW;
835
836 end IGS_PE_UNT_SET_EXCL_PKG;