DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_FEE_RET_SCHD_PKG

Source


1 package body IGS_FI_FEE_RET_SCHD_PKG AS
2  /* $Header: IGSSI33B.pls 120.1 2006/05/26 10:55:26 sapanigr noship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_FI_FEE_RET_SCHD%RowType;
5   new_references IGS_FI_FEE_RET_SCHD%RowType;
6   PROCEDURE Set_Column_Values (
7     p_action IN VARCHAR2,
8     x_rowid IN VARCHAR2 DEFAULT NULL,
9     x_fee_cal_type IN VARCHAR2 DEFAULT NULL,
10     x_fee_ci_sequence_number IN NUMBER DEFAULT NULL,
11     x_s_relation_type IN VARCHAR2 DEFAULT NULL,
12     x_sequence_number IN NUMBER DEFAULT NULL,
13     x_fee_cat IN VARCHAR2 DEFAULT NULL,
14     x_fee_type IN VARCHAR2 DEFAULT NULL,
15     x_schedule_number IN NUMBER DEFAULT NULL,
16     x_dt_alias IN VARCHAR2 DEFAULT NULL,
17     x_dai_sequence_number IN NUMBER DEFAULT NULL,
18     x_retention_percentage IN NUMBER DEFAULT NULL,
19     x_retention_amount IN NUMBER 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   ||  Created By :
28   ||  Created On :
29   ||  Purpose :
30   ||  Known limitations, enhancements or remarks :
31   ||  Change History :
32   ||  Who             When            What
33   ||  (reverse chronological order - newest change first)
34   ||  vvutukur        24-Jul-2002  Bug#2425767.removed parameter x_deduction_amount and its reference in
35   ||                               copying old_references value into new_references.value.
36   ----------------------------------------------------------------------------*/
37     CURSOR cur_old_ref_values IS
38       SELECT   *
39       FROM     IGS_FI_FEE_RET_SCHD
40       WHERE    rowid = x_rowid;
41   BEGIN
42     l_rowid := x_rowid;
43     -- Code for setting the Old and New Reference Values.
44     -- Populate Old Values.
45     Open cur_old_ref_values;
46     Fetch cur_old_ref_values INTO old_references;
47     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
48       Close cur_old_ref_values;
49       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
50       IGS_GE_MSG_STACK.ADD;
51       App_Exception.Raise_Exception;
52       Return;
53     END IF;
54     Close cur_old_ref_values;
55     -- Populate New Values.
56     new_references.fee_cal_type := x_fee_cal_type;
57     new_references.fee_ci_sequence_number := x_fee_ci_sequence_number;
58     new_references.s_relation_type := x_s_relation_type;
59     new_references.sequence_number := x_sequence_number;
60     new_references.fee_cat := x_fee_cat;
61     new_references.fee_type := x_fee_type;
62     new_references.schedule_number := x_schedule_number;
63     new_references.dt_alias := x_dt_alias;
64     new_references.dai_sequence_number := x_dai_sequence_number;
65     new_references.retention_percentage := x_retention_percentage;
66     new_references.retention_amount := x_retention_amount;
67     IF (p_action = 'UPDATE') THEN
68       new_references.creation_date := old_references.creation_date;
69       new_references.created_by := old_references.created_by;
70     ELSE
71       new_references.creation_date := x_creation_date;
72       new_references.created_by := x_created_by;
73     END IF;
74     new_references.last_update_date := x_last_update_date;
75     new_references.last_updated_by := x_last_updated_by;
76     new_references.last_update_login := x_last_update_login;
77   END Set_Column_Values;
78   -- Trigger description :-
79   -- "OSS_TST".trg_frtns_br_iu
80   -- BEFORE INSERT OR UPDATE
81   -- ON IGS_FI_FEE_RET_SCHD
82   -- FOR EACH ROW
83   PROCEDURE BeforeRowInsertUpdate1(
84     p_inserting IN BOOLEAN DEFAULT FALSE,
85     p_updating IN BOOLEAN DEFAULT FALSE,
86     p_deleting IN BOOLEAN DEFAULT FALSE
87     ) AS
88 	v_message_name varchar2(30);
89   BEGIN
90 	-- Validate the fee relationship
91 	IF (p_inserting) THEN
92 		IF IGS_FI_VAL_FE.finp_val_sched_mbrs (
93 				new_references.s_relation_type,
94 				new_references.fee_cat,
95 				new_references.fee_type,
96 				v_message_name) = FALSE THEN
97 			Fnd_Message.Set_Name('IGS',v_message_name);
98                   IGS_GE_MSG_STACK.ADD;
99 			App_Exception.Raise_Exception;
100 		END IF;
101 	END IF;
102 	-- Validate the Fee Type Fee Trigger Cat
103 	IF (p_inserting) THEN
104 		IF IGS_FI_VAL_FRTNS.finp_val_frtns_ft (
105 				new_references.fee_type,
106 				new_references.s_relation_type,
107 				v_message_name) = FALSE THEN
108 			Fnd_Message.Set_Name('IGS',v_message_name);
109                   IGS_GE_MSG_STACK.ADD;
110 			App_Exception.Raise_Exception;
111 		END IF;
112 	END IF;
113 	-- Validate the retention amount and percentage
114 	IF (p_inserting OR
115 		nvl(old_references.retention_amount,0) <> nvl(new_references.retention_amount,0) OR
116 		nvl(old_references.retention_percentage,0) <> nvl(new_references.retention_percentage,0)) THEN
117 		IF IGS_FI_VAL_FRTNS.finp_val_frtns_amt (
118 				new_references.retention_amount,
119 				new_references.retention_percentage,
120 				v_message_name) = FALSE THEN
121 			Fnd_Message.Set_Name('IGS',v_message_name);
122                   IGS_GE_MSG_STACK.ADD;
123 			App_Exception.Raise_Exception;
124 		END IF;
125 	END IF;
126 	-- Check related fee cat fee liabilities do not clash with the local currency
127 	IF p_inserting THEN
128 		IF IGS_FI_VAL_FRTNS.finp_val_frtns_cur (
129 				new_references.fee_cal_type,
130 				new_references.fee_ci_sequence_number,
131 				new_references.fee_type,
132 				new_references.s_relation_type,
133 				v_message_name) = FALSE THEN
134 			Fnd_Message.Set_Name('IGS',v_message_name);
135                   IGS_GE_MSG_STACK.ADD;
136 			App_Exception.Raise_Exception;
137 		END IF;
138 	END IF;
139   END BeforeRowInsertUpdate1;
140   -- Trigger description :-
141   -- "OSS_TST".trg_frtns_ar_u_hist
142   -- AFTER UPDATE
143   -- ON IGS_FI_FEE_RET_SCHD
144   -- FOR EACH ROW
145   PROCEDURE AfterRowUpdate3(
146     p_inserting IN BOOLEAN DEFAULT FALSE,
147     p_updating IN BOOLEAN DEFAULT FALSE,
148     p_deleting IN BOOLEAN DEFAULT FALSE
149     ) AS
150   /*----------------------------------------------------------------------------
151   ||  Created By :
152   ||  Created On :
153   ||  Purpose :
154   ||  Known limitations, enhancements or remarks :
155   ||  Change History :
156   ||  Who             When            What
157   ||  (reverse chronological order - newest change first)
158   ||  vvutukur        24-Jul-2002  Bug#2425767.removed references to deduction_amount from call to
159   ||                               IGS_FI_GEN_002.FINP_INS_FRTNS_HIST.
160   ----------------------------------------------------------------------------*/
161   BEGIN
162 	-- create a history
163 	IGS_FI_GEN_002.FINP_INS_FRTNS_HIST( old_references.fee_cal_type,
164 		old_references.fee_ci_sequence_number,
165 		old_references.s_relation_type,
166 		old_references.sequence_number,
167 		new_references.fee_type,
168 		old_references.fee_type,
169 		new_references.fee_cat,
170 		old_references.fee_cat,
171 		new_references.schedule_number,
172 		old_references.schedule_number,
173 		new_references.dt_alias,
174 		old_references.dt_alias,
175 		new_references.dai_sequence_number,
176 		old_references.dai_sequence_number,
177 		new_references.retention_percentage,
178 		old_references.retention_percentage,
179 		new_references.retention_amount,
180 		old_references.retention_amount,
181 		new_references.last_updated_by,
182 		old_references.last_updated_by,
183 		new_references.last_update_date,
184 		old_references.last_update_date);
185   END AfterRowUpdate3;
186   -- Trigger description :-
187   -- "OSS_TST".trg_frtns_as_iu
188   -- AFTER INSERT OR UPDATE
189   -- ON IGS_FI_FEE_RET_SCHD
190   PROCEDURE AfterStmtInsertUpdate4(
191     p_inserting IN BOOLEAN DEFAULT FALSE,
192     p_updating IN BOOLEAN DEFAULT FALSE,
193     p_deleting IN BOOLEAN DEFAULT FALSE
194     ) AS
195 	v_message_name varchar2(30);
196   BEGIN
197   	-- Validate the dt alias.
198   	IF p_inserting OR p_updating THEN
199   		IF IGS_FI_VAL_FRTNS.finp_val_frtns_creat (
200   		    	              new_references.fee_type,
201   			              new_references.fee_cal_type,
202   			              new_references.fee_ci_sequence_number,
203   		    	              new_references.s_relation_type,
204   			              v_message_name) = FALSE THEN
205 			Fnd_Message.Set_Name('IGS',v_message_name);
206                   IGS_GE_MSG_STACK.ADD;
207 			App_Exception.Raise_Exception;
208   		END IF;
209   	END IF;
210   END AfterStmtInsertUpdate4;
211   PROCEDURE Check_Constraints (
212    	 Column_Name	IN	VARCHAR2	DEFAULT NULL,
213 	 Column_Value 	IN	VARCHAR2	DEFAULT NULL
214   ) AS
215   /*----------------------------------------------------------------------------
216   ||  Created By :
217   ||  Created On :
218   ||  Purpose :
219   ||  Known limitations, enhancements or remarks :
220   ||  Change History :
221   ||  Who             When            What
222   ||  (reverse chronological order - newest change first)
223   ||  sapanigr        26-May-2006  Enh 5217319. Removed highest value criteria for item 'CHG_RATE'
224   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed reference to deduction_amount.
225   ||  agairola        14-Jun-2002  Bug 2403209: Removed the validation for deduction amount
226   ||  vvutukur        17-May-2002  removed upper check on fee_type,fee_cat columns.bug#2344826.
227   ----------------------------------------------------------------------------*/
228   BEGIN
229     IF Column_Name is NULL THEN
230        	NULL;
231     ELSIF upper(Column_Name) = 'S_RELATION_TYPE' then
232        	new_references.s_relation_type := Column_Value;
233     ELSIF upper(Column_Name) = 'SCHEDULE_NUMBER' then
234        	new_references.schedule_number := igs_ge_number.to_num(Column_Value);
235     ELSIF upper(Column_Name) = 'SEQUENCE_NUMBER' then
236        	new_references.sequence_number := igs_ge_number.to_num(Column_Value);
237     ELSIF upper(Column_Name) = 'DAI_SEQUENCE_NUMBER' then
238        	new_references.dai_sequence_number := igs_ge_number.to_num(Column_Value);
239     ELSIF upper(Column_Name) = 'DT_ALIAS' then
240        	new_references.dt_alias:= Column_Value;
241     ELSIF upper(Column_Name) = 'FEE_CAL_TYPE' then
242        	new_references.fee_cal_type := Column_Value;
243     ELSIF upper(Column_Name) = 'RETENTION_AMOUNT' then
244        	new_references.retention_amount := igs_ge_number.to_num(Column_Value);
245     ELSIF upper(Column_Name) = 'RETENTION_PERCENTAGE' then
246        	new_references.retention_percentage := igs_ge_number.to_num(Column_Value);
247     ELSIF upper(Column_Name) = 'FEE_CI_SEQUENCE_NUMBER' then
248        	new_references.fee_ci_sequence_number := igs_ge_number.to_num(Column_Value);
249     END IF;
250 
251 
252   IF upper(Column_Name) = 'FEE_CI_SEQUENCE_NUMBER' OR
253      		column_name is NULL THEN
254    		IF new_references.fee_ci_sequence_number < 1 OR
255 		   new_references.fee_ci_sequence_number > 999999 THEN
256    			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
257                   IGS_GE_MSG_STACK.ADD;
258    			App_Exception.Raise_Exception;
259    		END IF;
260   END IF;
261 
262     -- The following code checks for check constraints on the Columns.
263   IF upper(Column_Name) = 'SEQUENCE_NUMBER' OR
264      		column_name is NULL THEN
265    		IF new_references.sequence_number < 1 OR
266 		   new_references.sequence_number > 999999 THEN
267    			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
268                   IGS_GE_MSG_STACK.ADD;
269    			App_Exception.Raise_Exception;
270    		END IF;
271   END IF;
272 
273     -- The following code checks for check constraints on the Columns.
274   IF upper(Column_Name) = 'DAI_SEQUENCE_NUMBER' OR
275      		column_name is NULL THEN
276    		IF new_references.dai_sequence_number < 1 OR
277 		   new_references.dai_sequence_number > 999999 THEN
278    			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
279                   IGS_GE_MSG_STACK.ADD;
280    			App_Exception.Raise_Exception;
281    		END IF;
282   END IF;
283     -- The following code checks for check constraints on the Columns.
284   IF upper(Column_Name) = 'SCHEDULE_NUMBER' OR
285      		column_name is NULL THEN
286    		IF new_references.schedule_number < 1 OR
287 		   new_references.schedule_number > 999999 THEN
288    			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
289                   IGS_GE_MSG_STACK.ADD;
290    			App_Exception.Raise_Exception;
291    		END IF;
292   END IF;
293   IF upper(Column_Name) = 'S_RELATION_TYPE' OR 	column_name is NULL THEN
294        		IF new_references.S_RELATION_TYPE <> 'FTCI' AND
295   			   new_references.S_RELATION_TYPE <> 'FCCI' AND
296   			   new_references.S_RELATION_TYPE <> 'FCFL'
297   			   THEN
298        				Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
299                   IGS_GE_MSG_STACK.ADD;
300        				App_Exception.Raise_Exception;
301        		END IF;
302   END IF;
303   IF upper(Column_Name) = 'DT_ALIAS' OR
304     		column_name is NULL THEN
305   		IF new_references.dt_alias <> UPPER(new_references.dt_alias) THEN
306   			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
307                   IGS_GE_MSG_STACK.ADD;
308   			App_Exception.Raise_Exception;
309   		END IF;
310   END IF;
311   IF upper(Column_Name) = 'FEE_CAL_TYPE' OR
312     		column_name is NULL THEN
313   		IF new_references.fee_cal_type <> UPPER(new_references.fee_cal_type) THEN
314   			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
315                   IGS_GE_MSG_STACK.ADD;
316   			App_Exception.Raise_Exception;
317   		END IF;
318   END IF;
319 
320   IF upper(Column_Name) = 'RETENTION_AMOUNT' OR
321 	     		column_name is NULL THEN
322 	   		IF new_references.retention_amount < 0 THEN
323 	   			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
324                   IGS_GE_MSG_STACK.ADD;
325 	   			App_Exception.Raise_Exception;
326 	   		END IF;
327   END IF;
328   IF upper(Column_Name) = 'RETENTION_PERCENTAGE' OR
329 	     		column_name is NULL THEN
330 	   		IF new_references.retention_percentage < 0 OR
331 			   new_references.retention_percentage > 100 THEN
332 	   			Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
333                   IGS_GE_MSG_STACK.ADD;
334 	   			App_Exception.Raise_Exception;
335 	   		END IF;
336   END IF;
337   END Check_Constraints;
338 FUNCTION Get_UK1_For_Validation (
339 	      x_fee_cal_type IN VARCHAR2,
340 	      x_fee_ci_sequence_number IN NUMBER,
341 	      x_fee_cat		IN VARCHAR2,
342   	      x_fee_type		IN VARCHAR2,
343   	      x_dt_alias		IN VARCHAR2,
344               x_s_relation_type IN VARCHAR2,
345               x_dai_sequence_number IN NUMBER
346       )RETURN BOOLEAN AS
347 	  CURSOR cur_rowid IS
348 	        SELECT   rowid
349 	        FROM     IGS_FI_FEE_RET_SCHD
350          WHERE    fee_cal_type = x_fee_cal_type
351          AND      fee_ci_sequence_number = x_fee_ci_sequence_number
352          AND      ((fee_cat = x_fee_cat) OR (fee_cat IS NULL AND x_fee_cat IS NULL))
353          AND      ((fee_type = x_fee_type) OR (fee_type IS NULL AND x_fee_type IS NULL))
354          AND      dt_alias = x_dt_alias
355          AND      dai_sequence_number = x_dai_sequence_number
356          AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
357    lv_rowid cur_rowid%RowType;
358 BEGIN
359 
360 /*x_s_relation_type is not used for UK checks - it is retained as is, in parameter list as of now */
361 
362 	    Open cur_rowid;
363 	    Fetch cur_rowid INTO lv_rowid;
364 	 IF (cur_rowid%FOUND) THEN
365 	       Close cur_rowid;
366 	       Return (TRUE);
367 	 ELSE
368 	       Close cur_rowid;
369 	       Return (FALSE);
370      END IF;
371 END   Get_UK1_For_Validation;
372 
373 
374 FUNCTION Get_UK2_For_Validation (
375     x_fee_cal_type IN VARCHAR2,
376     x_fee_ci_sequence_number IN NUMBER,
377   	x_fee_cat		IN VARCHAR2,
378   	x_fee_type		IN VARCHAR2,
379   	x_schedule_number IN NUMBER
380     )RETURN BOOLEAN
381 	AS
382 	CURSOR cur_rowid IS
383 		  SELECT   rowid
384 	        FROM     IGS_FI_FEE_RET_SCHD
385            WHERE    fee_cal_type = x_fee_cal_type
386              AND      fee_ci_sequence_number = x_fee_ci_sequence_number
387              AND      ((fee_type = x_fee_type) OR (fee_type IS NULL AND x_fee_type IS NULL))
388              AND      ((fee_cat = x_fee_cat) OR (fee_cat IS NULL AND x_fee_cat IS NULL))
389              AND      schedule_number = x_schedule_number
390              AND      ((l_rowid IS NULL) OR (rowid <> l_rowid)) ;
391    lv_rowid cur_rowid%RowType;
392 	BEGIN
393 	    Open cur_rowid;
394 	    Fetch cur_rowid INTO lv_rowid;
395 	 IF (cur_rowid%FOUND) THEN
396 	       Close cur_rowid;
397 	       Return (TRUE);
398 	 ELSE
399 	       Close cur_rowid;
400 	       Return (FALSE);
401 	 END IF;
402 END Get_UK2_For_Validation;
403 
404 PROCEDURE Check_Uniqueness
405 AS
406 BEGIN
407 IF Get_UK1_For_Validation (
408 	      new_references.fee_cal_type ,
409 	      new_references.fee_ci_sequence_number ,
410 	  	  new_references.fee_cat,
411   		  new_references.fee_type,
412   	      new_references.dt_alias,
413           new_references.s_relation_type,
414           new_references.dai_sequence_number) THEN
415 	          Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
416                   IGS_GE_MSG_STACK.ADD;
417 	          App_Exception.Raise_Exception;
418 END IF;
419 IF Get_UK2_For_Validation (
420 		    new_references.fee_cal_type,
421 		    new_references.fee_ci_sequence_number,
422 		  	new_references.fee_cat,
423 		  	new_references.fee_type,
424   			new_references.schedule_number) THEN
425 		         Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
426                   IGS_GE_MSG_STACK.ADD;
427 		         App_Exception.Raise_Exception;
428 END IF;
429 
430 END Check_Uniqueness;
431 
432   PROCEDURE Check_Parent_Existance AS
433   BEGIN
434     IF (((old_references.dt_alias = new_references.dt_alias) AND
435          (old_references.dai_sequence_number = new_references.dai_sequence_number) AND
436          (old_references.fee_cal_type = new_references.fee_cal_type) AND
437          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number)) OR
438         ((new_references.dt_alias IS NULL) OR
439          (new_references.dai_sequence_number IS NULL) OR
440          (new_references.fee_cal_type IS NULL) OR
441          (new_references.fee_ci_sequence_number IS NULL))) THEN
442       NULL;
443     ELSIF NOT IGS_CA_DA_INST_PKG.Get_PK_For_Validation (
444         new_references.dt_alias,
445         new_references.dai_sequence_number,
446         new_references.fee_cal_type,
447         new_references.fee_ci_sequence_number
448         ) THEN
449 		     Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
450                   IGS_GE_MSG_STACK.ADD;
451      		 App_Exception.Raise_Exception;
452     END IF;
453     IF (((old_references.fee_cat = new_references.fee_cat) AND
454          (old_references.fee_cal_type = new_references.fee_cal_type) AND
455          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number)) OR
456         ((new_references.fee_cat IS NULL) OR
457          (new_references.fee_cal_type IS NULL) OR
458          (new_references.fee_ci_sequence_number IS NULL))) THEN
459       NULL;
460     ELSIF NOT IGS_FI_F_CAT_CA_INST_PKG.Get_PK_For_Validation (
461         new_references.fee_cat,
462         new_references.fee_cal_type,
463         new_references.fee_ci_sequence_number
464         ) THEN
465 		     Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
466                   IGS_GE_MSG_STACK.ADD;
467      		 App_Exception.Raise_Exception;
468     END IF ;
469     IF (((old_references.fee_cat = new_references.fee_cat) AND
470          (old_references.fee_cal_type = new_references.fee_cal_type) AND
471          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number) AND
472          (old_references.fee_type = new_references.fee_type)) OR
473         ((new_references.fee_cat IS NULL) OR
474          (new_references.fee_cal_type IS NULL) OR
475          (new_references.fee_ci_sequence_number IS NULL) OR
476          (new_references.fee_type IS NULL))) THEN
477       NULL;
478     ELSIF NOT IGS_FI_F_CAT_FEE_LBL_PKG.Get_PK_For_Validation (
479         new_references.fee_cat,
480         new_references.fee_cal_type,
481         new_references.fee_ci_sequence_number,
482         new_references.fee_type
483         ) THEN
484 	     Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
485                   IGS_GE_MSG_STACK.ADD;
486      	 App_Exception.Raise_Exception;
487     END IF;
488     IF (((old_references.fee_type = new_references.fee_type) AND
489          (old_references.fee_cal_type = new_references.fee_cal_type) AND
490          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number)) OR
491         ((new_references.fee_type IS NULL) OR
492          (new_references.fee_cal_type IS NULL) OR
493          (new_references.fee_ci_sequence_number IS NULL))) THEN
494       NULL;
495     ELSIF NOT IGS_FI_F_TYP_CA_INST_PKG.Get_PK_For_Validation (
496         new_references.fee_type,
497         new_references.fee_cal_type,
498         new_references.fee_ci_sequence_number
499         ) THEN
500 		     Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
501                   IGS_GE_MSG_STACK.ADD;
502      		 App_Exception.Raise_Exception;
503     END IF;
504   END Check_Parent_Existance;
505 
506   FUNCTION Get_PK_For_Validation (
507     x_fee_cal_type IN VARCHAR2,
508     x_fee_ci_sequence_number IN NUMBER,
509     x_s_relation_type IN VARCHAR2,
510     x_sequence_number IN NUMBER
511     ) RETURN BOOLEAN AS
512     CURSOR cur_rowid IS
513       SELECT   rowid
514       FROM     IGS_FI_FEE_RET_SCHD
515       WHERE    fee_cal_type = x_fee_cal_type
516       AND      fee_ci_sequence_number = x_fee_ci_sequence_number
517       AND      s_relation_type = x_s_relation_type
518       AND      sequence_number = x_sequence_number
519       FOR UPDATE NOWAIT;
520     lv_rowid cur_rowid%RowType;
521  BEGIN
522     Open cur_rowid;
523     Fetch cur_rowid INTO lv_rowid;
524  IF (cur_rowid%FOUND) THEN
525        Close cur_rowid;
526        Return (TRUE);
527  ELSE
528        Close cur_rowid;
529        Return (FALSE);
530  END IF;
531  END Get_PK_For_Validation;
532 
533 
534   PROCEDURE GET_FK_IGS_CA_DA_INST (
535     x_dt_alias IN VARCHAR2,
536     x_sequence_number IN NUMBER,
537     x_cal_type IN VARCHAR2,
538     x_ci_sequence_number IN NUMBER
539     ) AS
540     CURSOR cur_rowid IS
541       SELECT   rowid
542       FROM     IGS_FI_FEE_RET_SCHD
543       WHERE    dt_alias = x_dt_alias
544       AND      dai_sequence_number = x_sequence_number
545       AND      fee_cal_type = x_cal_type
546       AND      fee_ci_sequence_number = x_ci_sequence_number ;
547     lv_rowid cur_rowid%RowType;
548   BEGIN
549     Open cur_rowid;
550     Fetch cur_rowid INTO lv_rowid;
551     IF (cur_rowid%FOUND) THEN
552       Close cur_rowid;
553       Fnd_Message.Set_Name ('IGS', 'IGS_FI_FRTNS_DAI_FK');
554                   IGS_GE_MSG_STACK.ADD;
555       App_Exception.Raise_Exception;
556       Return;
557     END IF;
558     Close cur_rowid;
559   END GET_FK_IGS_CA_DA_INST;
560   PROCEDURE GET_FK_IGS_FI_F_CAT_CA_INST (
561     x_fee_cat IN VARCHAR2,
562     x_fee_cal_type IN VARCHAR2,
563     x_fee_ci_sequence_number IN NUMBER
564     ) AS
565     CURSOR cur_rowid IS
566       SELECT   rowid
567       FROM     IGS_FI_FEE_RET_SCHD
568       WHERE    fee_cat = x_fee_cat
569       AND      fee_cal_type = x_fee_cal_type
570       AND      fee_ci_sequence_number = x_fee_ci_sequence_number ;
571     lv_rowid cur_rowid%RowType;
572   BEGIN
573     Open cur_rowid;
574     Fetch cur_rowid INTO lv_rowid;
575     IF (cur_rowid%FOUND) THEN
576       Close cur_rowid;
577       Fnd_Message.Set_Name ('IGS', 'IGS_FI_FRTNS_FCCI_FK');
578                   IGS_GE_MSG_STACK.ADD;
579       App_Exception.Raise_Exception;
580       Return;
581     END IF;
582     Close cur_rowid;
583   END GET_FK_IGS_FI_F_CAT_CA_INST;
584 
585   PROCEDURE Before_DML (
586     p_action IN VARCHAR2,
587     x_rowid IN  VARCHAR2 DEFAULT NULL,
588     x_fee_cal_type IN VARCHAR2 DEFAULT NULL,
589     x_fee_ci_sequence_number IN NUMBER DEFAULT NULL,
590     x_s_relation_type IN VARCHAR2 DEFAULT NULL,
591     x_sequence_number IN NUMBER DEFAULT NULL,
592     x_fee_cat IN VARCHAR2 DEFAULT NULL,
593     x_fee_type IN VARCHAR2 DEFAULT NULL,
594     x_schedule_number IN NUMBER DEFAULT NULL,
595     x_dt_alias IN VARCHAR2 DEFAULT NULL,
596     x_dai_sequence_number IN NUMBER DEFAULT NULL,
597     x_retention_percentage IN NUMBER DEFAULT NULL,
598     x_retention_amount IN NUMBER DEFAULT NULL,
599     x_creation_date IN DATE DEFAULT NULL,
600     x_created_by IN NUMBER DEFAULT NULL,
601     x_last_update_date IN DATE DEFAULT NULL,
602     x_last_updated_by IN NUMBER DEFAULT NULL,
603     x_last_update_login IN NUMBER DEFAULT NULL
604   ) AS
605   /*----------------------------------------------------------------------------
606   ||  Created By :
607   ||  Created On :
608   ||  Purpose :
609   ||  Known limitations, enhancements or remarks :
610   ||  Change History :
611   ||  Who             When            What
612   ||  (reverse chronological order - newest change first)
613   ||  shtatiko        13-MAR-2003     Bug# 2473845, Added statement l_rowid := null; because, this
614   ||                                  is creating problems when get_uk_for_validation is directly
615   ||                                  from pld.
616   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed references of deduction_amount(from call to
617   ||                               set_column_values procedure).
618   ----------------------------------------------------------------------------*/
619   BEGIN
620     Set_Column_Values (
621       p_action,
622       x_rowid,
623       x_fee_cal_type,
624       x_fee_ci_sequence_number,
625       x_s_relation_type,
626       x_sequence_number,
627       x_fee_cat,
628       x_fee_type,
629       x_schedule_number,
630       x_dt_alias,
631       x_dai_sequence_number,
632       x_retention_percentage,
633       x_retention_amount,
634       x_creation_date,
635       x_created_by,
636       x_last_update_date,
637       x_last_updated_by,
638       x_last_update_login
639     );
640     IF (p_action = 'INSERT') THEN
641       -- Call all the procedures related to Before Insert.
642       BeforeRowInsertUpdate1 ( p_inserting => TRUE );
643 	  IF Get_PK_For_Validation (
644     			new_references.fee_cal_type,
645 			    new_references.fee_ci_sequence_number,
646 			    new_references.s_relation_type,
647 			    new_references.sequence_number ) THEN
648 	         		Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
649                   IGS_GE_MSG_STACK.ADD;
650 			        App_Exception.Raise_Exception;
651 	  END IF;
652       Check_Uniqueness;
653 	  Check_Constraints;
654       Check_Parent_Existance;
655     ELSIF (p_action = 'UPDATE') THEN
656       -- Call all the procedures related to Before Update.
657       BeforeRowInsertUpdate1 ( p_updating => TRUE );
658       Check_Uniqueness;
659 	  Check_Constraints;
660       Check_Parent_Existance;
661     ELSIF (p_action = 'VALIDATE_INSERT') THEN
662 	      -- Call all the procedures related to Before Insert.
663 	  IF Get_PK_For_Validation (
664     			new_references.fee_cal_type,
665 			    new_references.fee_ci_sequence_number,
666 			    new_references.s_relation_type,
667 			    new_references.sequence_number ) THEN
668 	         		Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
669                   IGS_GE_MSG_STACK.ADD;
670 			        App_Exception.Raise_Exception;
671 	  END IF;
672       Check_Uniqueness;
673 	  Check_Constraints;
674     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
675 			Check_Uniqueness;
676 		 	Check_Constraints;
677     END IF;
678     l_rowid := NULL;
679   END Before_DML;
680 
681   PROCEDURE after_dml (
682     p_action IN VARCHAR2,
683     x_rowid IN VARCHAR2
684   ) AS
685   /*----------------------------------------------------------------------------
686   ||  Created By :
687   ||  Created On :
688   ||  Purpose :
689   ||  Known limitations, enhancements or remarks :
690   ||  Change History :
691   ||  Who             When            What
692   ||  (reverse chronological order - newest change first)
693   ||  smadathi        18-FEB-2003     Bug 2473845.Added logic to re initialize l_rowid to null.
694   ||  shtatiko        07-FEB-2003     Removed the statement l_rowid := x_rowid; as
695   ||                                  l_rowid is not at all used after assignment.
696   ||                                  And this assignment is causing the problems
697   ||                                  when get_uk is called directly from the pld.
698     ----------------------------------------------------------------------------*/
699   BEGIN
700     IF (p_action = 'INSERT') THEN
701       -- Call all the procedures related to After Insert.
702       AfterStmtInsertUpdate4 ( p_inserting => TRUE );
703     ELSIF (p_action = 'UPDATE') THEN
704       -- Call all the procedures related to After Update.
705       AfterRowUpdate3 ( p_updating => TRUE );
706       AfterStmtInsertUpdate4 ( p_updating => TRUE );
707     END IF;
708     l_rowid := NULL;
709   END after_dml;
710 
711 procedure INSERT_ROW (
712   X_ROWID in out NOCOPY VARCHAR2,
713   X_FEE_CAL_TYPE in VARCHAR2,
714   X_SEQUENCE_NUMBER in NUMBER,
715   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
716   X_S_RELATION_TYPE in VARCHAR2,
717   X_FEE_CAT in VARCHAR2,
718   X_FEE_TYPE in VARCHAR2,
719   X_SCHEDULE_NUMBER in NUMBER,
720   X_DT_ALIAS in VARCHAR2,
721   X_DAI_SEQUENCE_NUMBER in NUMBER,
722   X_RETENTION_PERCENTAGE in NUMBER,
723   X_RETENTION_AMOUNT in NUMBER,
724   X_MODE in VARCHAR2 default 'R'
725   ) AS
726   /*----------------------------------------------------------------------------
727   ||  Created By :
728   ||  Created On :
729   ||  Purpose :
730   ||  Known limitations, enhancements or remarks :
731   ||  Change History :
732   ||  Who             When            What
733   ||  (reverse chronological order - newest change first)
734   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed references to deduction_amount(from call to
735   ||                               before_dml and from insert statement).
736   ----------------------------------------------------------------------------*/
737     cursor C is select ROWID from IGS_FI_FEE_RET_SCHD
738       where FEE_CAL_TYPE = X_FEE_CAL_TYPE
739       and SEQUENCE_NUMBER = X_SEQUENCE_NUMBER
740       and FEE_CI_SEQUENCE_NUMBER = X_FEE_CI_SEQUENCE_NUMBER
741       and S_RELATION_TYPE = X_S_RELATION_TYPE;
742     X_LAST_UPDATE_DATE DATE;
743     X_LAST_UPDATED_BY NUMBER;
744     X_LAST_UPDATE_LOGIN NUMBER;
745     X_REQUEST_ID NUMBER;
746     X_PROGRAM_ID NUMBER;
747     X_PROGRAM_APPLICATION_ID NUMBER;
748     X_PROGRAM_UPDATE_DATE DATE;
749 begin
750   X_LAST_UPDATE_DATE := SYSDATE;
751   if(X_MODE = 'I') then
752     X_LAST_UPDATED_BY := 1;
753     X_LAST_UPDATE_LOGIN := 0;
754   elsif (X_MODE = 'R') then
755     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
756     if X_LAST_UPDATED_BY is NULL then
757       X_LAST_UPDATED_BY := -1;
758     end if;
759     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
760     if X_LAST_UPDATE_LOGIN is NULL then
761       X_LAST_UPDATE_LOGIN := -1;
762     end if;
763     X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
764     X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
765     X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
766     if (X_REQUEST_ID =  -1) then
767       X_REQUEST_ID := NULL;
768       X_PROGRAM_ID := NULL;
769       X_PROGRAM_APPLICATION_ID := NULL;
770       X_PROGRAM_UPDATE_DATE := NULL;
771     else
772       X_PROGRAM_UPDATE_DATE := SYSDATE;
773     end if;
774   else
775     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
776                   IGS_GE_MSG_STACK.ADD;
777     app_exception.raise_exception;
778   end if;
779 Before_DML(
780  p_action=>'INSERT',
781  x_rowid=>X_ROWID,
782  x_dai_sequence_number=>X_DAI_SEQUENCE_NUMBER,
783  x_dt_alias=>X_DT_ALIAS,
784  x_fee_cal_type=>X_FEE_CAL_TYPE,
785  x_fee_cat=>X_FEE_CAT,
786  x_fee_ci_sequence_number=>X_FEE_CI_SEQUENCE_NUMBER,
787  x_fee_type=>X_FEE_TYPE,
788  x_retention_amount=>X_RETENTION_AMOUNT,
789  x_retention_percentage=>X_RETENTION_PERCENTAGE,
790  x_s_relation_type=>X_S_RELATION_TYPE,
791  x_schedule_number=>X_SCHEDULE_NUMBER,
792  x_sequence_number=>X_SEQUENCE_NUMBER,
793  x_creation_date=>X_LAST_UPDATE_DATE,
794  x_created_by=>X_LAST_UPDATED_BY,
795  x_last_update_date=>X_LAST_UPDATE_DATE,
796  x_last_updated_by=>X_LAST_UPDATED_BY,
797  x_last_update_login=>X_LAST_UPDATE_LOGIN
798  );
799   insert into IGS_FI_FEE_RET_SCHD (
800     FEE_CAL_TYPE,
801     FEE_CI_SEQUENCE_NUMBER,
802     S_RELATION_TYPE,
803     SEQUENCE_NUMBER,
804     FEE_CAT,
805     FEE_TYPE,
806     SCHEDULE_NUMBER,
807     DT_ALIAS,
808     DAI_SEQUENCE_NUMBER,
809     RETENTION_PERCENTAGE,
810     RETENTION_AMOUNT,
811     CREATION_DATE,
812     CREATED_BY,
813     LAST_UPDATE_DATE,
814     LAST_UPDATED_BY,
815     LAST_UPDATE_LOGIN,
816     REQUEST_ID,
817     PROGRAM_ID,
818     PROGRAM_APPLICATION_ID,
819     PROGRAM_UPDATE_DATE
820   ) values (
821     NEW_REFERENCES.FEE_CAL_TYPE,
822     NEW_REFERENCES.FEE_CI_SEQUENCE_NUMBER,
823     NEW_REFERENCES.S_RELATION_TYPE,
824     NEW_REFERENCES.SEQUENCE_NUMBER,
825     NEW_REFERENCES.FEE_CAT,
826     NEW_REFERENCES.FEE_TYPE,
827     NEW_REFERENCES.SCHEDULE_NUMBER,
828     NEW_REFERENCES.DT_ALIAS,
829     NEW_REFERENCES.DAI_SEQUENCE_NUMBER,
830     NEW_REFERENCES.RETENTION_PERCENTAGE,
831     NEW_REFERENCES.RETENTION_AMOUNT,
832     X_LAST_UPDATE_DATE,
833     X_LAST_UPDATED_BY,
834     X_LAST_UPDATE_DATE,
835     X_LAST_UPDATED_BY,
836     X_LAST_UPDATE_LOGIN,
837     X_REQUEST_ID,
838     X_PROGRAM_ID,
839     X_PROGRAM_APPLICATION_ID,
840     X_PROGRAM_UPDATE_DATE
841   );
842   open c;
843   fetch c into X_ROWID;
844   if (c%notfound) then
845     close c;
846     raise no_data_found;
847   end if;
848   close c;
849 After_DML (
850  p_action => 'INSERT',
851  x_rowid => X_ROWID
852 );
853 end INSERT_ROW;
854 procedure LOCK_ROW (
855   X_ROWID in VARCHAR2,
856   X_FEE_CAL_TYPE in VARCHAR2,
857   X_SEQUENCE_NUMBER in NUMBER,
858   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
859   X_S_RELATION_TYPE in VARCHAR2,
860   X_FEE_CAT in VARCHAR2,
861   X_FEE_TYPE in VARCHAR2,
862   X_SCHEDULE_NUMBER in NUMBER,
863   X_DT_ALIAS in VARCHAR2,
864   X_DAI_SEQUENCE_NUMBER in NUMBER,
865   X_RETENTION_PERCENTAGE in NUMBER,
866   X_RETENTION_AMOUNT in NUMBER
867 ) AS
868   /*----------------------------------------------------------------------------
869   ||  Created By :
870   ||  Created On :
871   ||  Purpose :
872   ||  Known limitations, enhancements or remarks :
873   ||  Change History :
874   ||  Who             When            What
875   ||  (reverse chronological order - newest change first)
876   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed references to deduction_amount(from cursor c1 and
877   ||                               from if condition).
878   ----------------------------------------------------------------------------*/
879   cursor c1 is select
880       FEE_CAT,
881       FEE_TYPE,
882       SCHEDULE_NUMBER,
883       DT_ALIAS,
884       DAI_SEQUENCE_NUMBER,
885       RETENTION_PERCENTAGE,
886       RETENTION_AMOUNT
887     from IGS_FI_FEE_RET_SCHD
888     where ROWID = X_ROWID
889     for update nowait;
890   tlinfo c1%rowtype;
891 begin
892   open c1;
893   fetch c1 into tlinfo;
894   if (c1%notfound) then
895     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
896                   IGS_GE_MSG_STACK.ADD;
897     app_exception.raise_exception;
898     close c1;
899     return;
900   end if;
901   close c1;
902       if ( ((tlinfo.FEE_CAT = X_FEE_CAT)
903            OR ((tlinfo.FEE_CAT is null)
904                AND (X_FEE_CAT is null)))
905       AND ((tlinfo.FEE_TYPE = X_FEE_TYPE)
906            OR ((tlinfo.FEE_TYPE is null)
907                AND (X_FEE_TYPE is null)))
908       AND (tlinfo.SCHEDULE_NUMBER = X_SCHEDULE_NUMBER)
909       AND (tlinfo.DT_ALIAS = X_DT_ALIAS)
910       AND (tlinfo.DAI_SEQUENCE_NUMBER = X_DAI_SEQUENCE_NUMBER)
911       AND ((tlinfo.RETENTION_PERCENTAGE = X_RETENTION_PERCENTAGE)
912            OR ((tlinfo.RETENTION_PERCENTAGE is null)
913                AND (X_RETENTION_PERCENTAGE is null)))
914       AND ((tlinfo.RETENTION_AMOUNT = X_RETENTION_AMOUNT)
915            OR ((tlinfo.RETENTION_AMOUNT is null)
916                AND (X_RETENTION_AMOUNT is null)))
917   ) then
918     null;
919   else
920     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
921                   IGS_GE_MSG_STACK.ADD;
922     app_exception.raise_exception;
923   end if;
924   return;
925 end LOCK_ROW;
926 procedure UPDATE_ROW (
927   X_ROWID in VARCHAR2,
928   X_FEE_CAL_TYPE in VARCHAR2,
929   X_SEQUENCE_NUMBER in NUMBER,
930   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
931   X_S_RELATION_TYPE in VARCHAR2,
932   X_FEE_CAT in VARCHAR2,
933   X_FEE_TYPE in VARCHAR2,
934   X_SCHEDULE_NUMBER in NUMBER,
935   X_DT_ALIAS in VARCHAR2,
936   X_DAI_SEQUENCE_NUMBER in NUMBER,
937   X_RETENTION_PERCENTAGE in NUMBER,
938   X_RETENTION_AMOUNT in NUMBER,
939   X_MODE in VARCHAR2 default 'R'
940   ) AS
941   /*----------------------------------------------------------------------------
942   ||  Created By :
943   ||  Created On :
944   ||  Purpose :
945   ||  Known limitations, enhancements or remarks :
946   ||  Change History :
947   ||  Who             When            What
948   ||  (reverse chronological order - newest change first)
949   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed references to deduction_amount(from call to
950   ||                               before_dml and from update statement).
951   ----------------------------------------------------------------------------*/
952     X_LAST_UPDATE_DATE DATE;
953     X_LAST_UPDATED_BY NUMBER;
954     X_LAST_UPDATE_LOGIN NUMBER;
955     X_REQUEST_ID NUMBER;
956     X_PROGRAM_ID NUMBER;
957     X_PROGRAM_APPLICATION_ID NUMBER;
958     X_PROGRAM_UPDATE_DATE DATE;
959 begin
960   X_LAST_UPDATE_DATE := SYSDATE;
961   if(X_MODE = 'I') then
962     X_LAST_UPDATED_BY := 1;
963     X_LAST_UPDATE_LOGIN := 0;
964   elsif (X_MODE = 'R') then
965     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
966     if X_LAST_UPDATED_BY is NULL then
967       X_LAST_UPDATED_BY := -1;
968     end if;
969     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
970     if X_LAST_UPDATE_LOGIN is NULL then
971       X_LAST_UPDATE_LOGIN := -1;
972     end if;
973     X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
974     X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
975     X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
976     if (X_REQUEST_ID =  -1) then
977       X_REQUEST_ID := OLD_REFERENCES.REQUEST_ID;
978       X_PROGRAM_ID := OLD_REFERENCES.PROGRAM_ID;
979       X_PROGRAM_APPLICATION_ID := OLD_REFERENCES.PROGRAM_APPLICATION_ID;
980       X_PROGRAM_UPDATE_DATE := OLD_REFERENCES.PROGRAM_UPDATE_DATE;
981     else
982       X_PROGRAM_UPDATE_DATE := SYSDATE;
983     end if;
984   else
985     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
986                   IGS_GE_MSG_STACK.ADD;
987     app_exception.raise_exception;
988   end if;
989 Before_DML(
990  p_action=>'UPDATE',
991  x_rowid=>X_ROWID,
992  x_dai_sequence_number=>X_DAI_SEQUENCE_NUMBER,
993  x_dt_alias=>X_DT_ALIAS,
994  x_fee_cal_type=>X_FEE_CAL_TYPE,
995  x_fee_cat=>X_FEE_CAT,
996  x_fee_ci_sequence_number=>X_FEE_CI_SEQUENCE_NUMBER,
997  x_fee_type=>X_FEE_TYPE,
998  x_retention_amount=>X_RETENTION_AMOUNT,
999  x_retention_percentage=>X_RETENTION_PERCENTAGE,
1000  x_s_relation_type=>X_S_RELATION_TYPE,
1001  x_schedule_number=>X_SCHEDULE_NUMBER,
1002  x_sequence_number=>X_SEQUENCE_NUMBER,
1003  x_creation_date=>X_LAST_UPDATE_DATE,
1004  x_created_by=>X_LAST_UPDATED_BY,
1005  x_last_update_date=>X_LAST_UPDATE_DATE,
1006  x_last_updated_by=>X_LAST_UPDATED_BY,
1007  x_last_update_login=>X_LAST_UPDATE_LOGIN
1008  );
1009   update IGS_FI_FEE_RET_SCHD set
1010     FEE_CAT = NEW_REFERENCES.FEE_CAT,
1011     FEE_TYPE = NEW_REFERENCES.FEE_TYPE,
1012     SCHEDULE_NUMBER = NEW_REFERENCES.SCHEDULE_NUMBER,
1013     DT_ALIAS = NEW_REFERENCES.DT_ALIAS,
1014     DAI_SEQUENCE_NUMBER = NEW_REFERENCES.DAI_SEQUENCE_NUMBER,
1015     RETENTION_PERCENTAGE = NEW_REFERENCES.RETENTION_PERCENTAGE,
1016     RETENTION_AMOUNT = NEW_REFERENCES.RETENTION_AMOUNT,
1017     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
1018     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
1019     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
1020     REQUEST_ID = X_REQUEST_ID,
1021     PROGRAM_ID = X_PROGRAM_ID,
1022     PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
1023     PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE
1024   where ROWID = X_ROWID;
1025   if (sql%notfound) then
1026     raise no_data_found;
1027   end if;
1028 After_DML (
1029  p_action => 'UPDATE',
1030  x_rowid => X_ROWID
1031 );
1032 end UPDATE_ROW;
1033 procedure ADD_ROW (
1034   X_ROWID in out NOCOPY VARCHAR2,
1035   X_FEE_CAL_TYPE in VARCHAR2,
1036   X_SEQUENCE_NUMBER in NUMBER,
1037   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
1038   X_S_RELATION_TYPE in VARCHAR2,
1039   X_FEE_CAT in VARCHAR2,
1040   X_FEE_TYPE in VARCHAR2,
1041   X_SCHEDULE_NUMBER in NUMBER,
1042   X_DT_ALIAS in VARCHAR2,
1043   X_DAI_SEQUENCE_NUMBER in NUMBER,
1044   X_RETENTION_PERCENTAGE in NUMBER,
1045   X_RETENTION_AMOUNT in NUMBER,
1046   X_MODE in VARCHAR2 default 'R'
1047   ) AS
1048   /*----------------------------------------------------------------------------
1049   ||  Created By :
1050   ||  Created On :
1051   ||  Purpose :
1052   ||  Known limitations, enhancements or remarks :
1053   ||  Change History :
1054   ||  Who             When            What
1055   ||  (reverse chronological order - newest change first)
1056   ||  vvutukur        24-Jul-2002  Bug#2425767.Removed references to deduction_amount(from calls to
1057   ||                               insert_row and update_row).
1058   ----------------------------------------------------------------------------*/
1059   cursor c1 is select rowid from IGS_FI_FEE_RET_SCHD
1060      where FEE_CAL_TYPE = X_FEE_CAL_TYPE
1061      and SEQUENCE_NUMBER = X_SEQUENCE_NUMBER
1062      and FEE_CI_SEQUENCE_NUMBER = X_FEE_CI_SEQUENCE_NUMBER
1063      and S_RELATION_TYPE = X_S_RELATION_TYPE
1064   ;
1065 begin
1066   open c1;
1067   fetch c1 into X_ROWID;
1068   if (c1%notfound) then
1069     close c1;
1070     INSERT_ROW (
1071      X_ROWID,
1072      X_FEE_CAL_TYPE,
1073      X_SEQUENCE_NUMBER,
1074      X_FEE_CI_SEQUENCE_NUMBER,
1075      X_S_RELATION_TYPE,
1076      X_FEE_CAT,
1077      X_FEE_TYPE,
1078      X_SCHEDULE_NUMBER,
1079      X_DT_ALIAS,
1080      X_DAI_SEQUENCE_NUMBER,
1081      X_RETENTION_PERCENTAGE,
1082      X_RETENTION_AMOUNT,
1083      X_MODE);
1084     return;
1085   end if;
1086   close c1;
1087   UPDATE_ROW (
1088   X_ROWID,
1089    X_FEE_CAL_TYPE,
1090    X_SEQUENCE_NUMBER,
1091    X_FEE_CI_SEQUENCE_NUMBER,
1092    X_S_RELATION_TYPE,
1093    X_FEE_CAT,
1094    X_FEE_TYPE,
1095    X_SCHEDULE_NUMBER,
1096    X_DT_ALIAS,
1097    X_DAI_SEQUENCE_NUMBER,
1098    X_RETENTION_PERCENTAGE,
1099    X_RETENTION_AMOUNT,
1100    X_MODE);
1101 end ADD_ROW;
1102 procedure DELETE_ROW (
1103   X_ROWID in VARCHAR2
1104 ) AS
1105 begin
1106 Before_DML (
1107  p_action => 'DELETE',
1108  x_rowid => X_ROWID
1109      );
1110   delete from IGS_FI_FEE_RET_SCHD
1111   where ROWID = X_ROWID;
1112   if (sql%notfound) then
1113     raise no_data_found;
1114   end if;
1115 end DELETE_ROW;
1116 end IGS_FI_FEE_RET_SCHD_PKG;