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