DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_UNIT_FEE_TRG_PKG

Source


1 package body IGS_FI_UNIT_FEE_TRG_PKG AS
2 /* $Header: IGSSI64B.pls 120.6 2006/05/25 08:28:19 abshriva ship $ */
3  l_rowid VARCHAR2(25);
4   old_references IGS_FI_UNIT_FEE_TRG%RowType;
5   new_references IGS_FI_UNIT_FEE_TRG%RowType;
6   PROCEDURE Set_Column_Values (
7     p_action IN VARCHAR2,
8     x_rowid IN VARCHAR2 DEFAULT NULL,
9     x_fee_cat IN VARCHAR2 DEFAULT NULL,
10     x_fee_cal_type IN VARCHAR2 DEFAULT NULL,
11     x_fee_ci_sequence_number IN NUMBER DEFAULT NULL,
12     x_fee_type IN VARCHAR2 DEFAULT NULL,
13     x_unit_cd IN VARCHAR2 DEFAULT NULL,
14     x_sequence_number IN NUMBER DEFAULT NULL,
15     x_version_number IN NUMBER DEFAULT NULL,
16     x_cal_type IN VARCHAR2 DEFAULT NULL,
17     x_ci_sequence_number IN NUMBER DEFAULT NULL,
18     x_location_cd IN VARCHAR2 DEFAULT NULL,
19     x_unit_class IN VARCHAR2 DEFAULT NULL,
20     x_create_dt IN DATE DEFAULT NULL,
21     x_fee_trigger_group_number IN NUMBER DEFAULT NULL,
22     x_logical_delete_dt IN DATE DEFAULT NULL,
23     x_creation_date IN DATE DEFAULT NULL,
24     x_created_by IN NUMBER DEFAULT NULL,
25     x_last_update_date IN DATE DEFAULT NULL,
26     x_last_updated_by IN NUMBER DEFAULT NULL,
27     x_last_update_login IN NUMBER DEFAULT NULL
28   ) AS
29     CURSOR cur_old_ref_values IS
30       SELECT   *
31       FROM     IGS_FI_UNIT_FEE_TRG
32       WHERE    rowid = x_rowid;
33   BEGIN
34     l_rowid := x_rowid;
35     -- Code for setting the Old and New Reference Values.
36     -- Populate Old Values.
37     Open cur_old_ref_values;
38     Fetch cur_old_ref_values INTO old_references;
39     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
40       Close cur_old_ref_values;
41       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
42       IGS_GE_MSG_STACK.ADD;
43       App_Exception.Raise_Exception;
44       Return;
45     END IF;
46     Close cur_old_ref_values;
47     -- Populate New Values.
48     new_references.fee_cat := x_fee_cat;
49     new_references.fee_cal_type := x_fee_cal_type;
50     new_references.fee_ci_sequence_number := x_fee_ci_sequence_number;
51     new_references.fee_type := x_fee_type;
52     new_references.unit_cd := x_unit_cd;
53     new_references.sequence_number := x_sequence_number;
54     new_references.version_number := x_version_number;
55     new_references.cal_type := x_cal_type;
56     new_references.ci_sequence_number := x_ci_sequence_number;
57     new_references.location_cd := x_location_cd;
58     new_references.unit_class := x_unit_class;
59     new_references.create_dt := x_create_dt;
60     new_references.fee_trigger_group_number := x_fee_trigger_group_number;
61     new_references.logical_delete_dt := x_logical_delete_dt;
62     IF (p_action = 'UPDATE') THEN
63       new_references.creation_date := old_references.creation_date;
64       new_references.created_by := old_references.created_by;
65     ELSE
66       new_references.creation_date := x_creation_date;
67       new_references.created_by := x_created_by;
68     END IF;
69     new_references.last_update_date := x_last_update_date;
70     new_references.last_updated_by := x_last_updated_by;
71     new_references.last_update_login := x_last_update_login;
72   END Set_Column_Values;
73 
74 
75    -- Trigger description :-
76   -- BEFORE INSERT OR UPDATE
77   -- ON IGS_FI_UNIT_FEE_TRG
78   -- FOR EACH ROW
79   PROCEDURE BeforeRowInsertUpdate1(
80     p_inserting IN BOOLEAN DEFAULT FALSE,
81     p_updating IN BOOLEAN DEFAULT FALSE,
82     p_deleting IN BOOLEAN DEFAULT FALSE
83     ) AS
84 
85     v_message_name varchar2(30);
86   BEGIN
87         IF p_inserting THEN
88                 -- Validate unit fee trigger can be inserted
89                 IF IGS_FI_VAL_UFT.finp_val_uft_ins (
90                                 new_references.fee_type,
91                                 v_message_name) = FALSE THEN
92                         Fnd_Message.Set_Name('IGS',v_message_name);
93                         IGS_GE_MSG_STACK.ADD;
94                         App_Exception.Raise_Exception;
95                 END IF;
96         END IF;
97 
98        -- Bug# 5070980. Not able to delete Unit Fee Trigger When Unit Version Is Inactive.
99        -- Added a condition to avoid validating unit status while deleting a record.
100        IF  NOT (new_references.LOGICAL_DELETE_DT IS NOT NULL AND p_updating ) THEN
101         -- Validate unit version is is active or planned.
102           IF (new_references.unit_cd IS NOT NULL AND
103                new_references.version_number IS NOT NULL) THEN
104                -- As part of the bug# 1956374 changed to the below call from IGS_FI_VAL_UFT.crsp_val_uv_sys_sts
105                   IF IGS_PS_VAL_CALUL.crsp_val_uv_sys_sts (
106                                   new_references.unit_cd,
107                                   new_references.version_number,
108                                   v_message_name) = FALSE THEN
109                           Fnd_Message.Set_Name('IGS',v_message_name);
110                           IGS_GE_MSG_STACK.ADD;
111                           App_Exception.Raise_Exception;
112                   END IF;
113           END IF;
114         END IF;
115         -- Validate fee trigger group can be defined.
116         IF (new_references.fee_trigger_group_number IS NOT NULL) THEN
117                 IF IGS_FI_VAL_UFT.finp_val_uft_ftg (
118                                 new_references.fee_type,
119                                 new_references.fee_trigger_group_number,
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         -- Validate calendar type is not closed and is of type teaching.
127         IF (new_references.cal_type IS NOT NULL) THEN
128 
129         -- As part of the bug# 1956374 changed to the below call from IGS_FI_VAL_UFT.crsp_val_posp_cat
130                 IF IGS_PS_VAL_POSP.crsp_val_posp_cat (
131                                 new_references.cal_type,
132                                 v_message_name) = FALSE THEN
133                         Fnd_Message.Set_Name('IGS',v_message_name);
134                         IGS_GE_MSG_STACK.ADD;
135                         App_Exception.Raise_Exception;
136                 END IF;
137         END IF;
138         -- Validate calendar instance is not inactive.
139         IF (new_references.cal_type IS NOT NULL AND
140              new_references.ci_sequence_number IS NOT NULL)  THEN
141              -- BUG #1956374 , Procedure assp_val_ci_status reference is changed
142                 IF IGS_AS_VAL_EVSA.assp_val_ci_status (
143                                 new_references.cal_type,
144                                 new_references.ci_sequence_number,
145                                 v_message_name) = FALSE THEN
146                         Fnd_Message.Set_Name('IGS',v_message_name);
147                         IGS_GE_MSG_STACK.ADD;
148                         App_Exception.Raise_Exception;
149                 END IF;
150         END IF;
151         -- Validate location code is not closed and is of type campus.
152         IF (new_references.location_cd IS NOT NULL) THEN
153         -- As part of the bug# 1956374 changed to the below call from IGS_FI_VAL_UFT.crsp_val_loc_cd
154                 IF IGS_PS_VAL_UOO.crsp_val_loc_cd (
155                                 new_references.location_cd,
156                                 v_message_name) = FALSE THEN
157                         Fnd_Message.Set_Name('IGS',v_message_name);
158                         IGS_GE_MSG_STACK.ADD;
159                         App_Exception.Raise_Exception;
160                 END IF;
161         END IF;
162         -- Validate unit class is not closed.
163         IF (new_references.unit_class IS NOT NULL) THEN
164         -- As part of the bug# 1956374 changed to the below call from IGS_FI_VAL_UFT.crsp_val_ucl_closed
165                 IF IGS_AS_VAL_UAI.crsp_val_ucl_closed (
166                                 new_references.unit_class,
167                                 v_message_name) = FALSE THEN
168                         Fnd_Message.Set_Name('IGS',v_message_name);
169                         IGS_GE_MSG_STACK.ADD;
170                         App_Exception.Raise_Exception;
171                 END IF;
172         END IF;
173   END BeforeRowInsertUpdate1;
174   -- Trigger description :-
175   -- AFTER UPDATE
176   -- ON IGS_FI_UNIT_FEE_TRG
177   -- FOR EACH ROW
178   PROCEDURE AfterRowUpdate3(
179     p_inserting IN BOOLEAN DEFAULT FALSE,
180     p_updating IN BOOLEAN DEFAULT FALSE,
181     p_deleting IN BOOLEAN DEFAULT FALSE
182     ) AS
183   BEGIN
184         -- create a history
185         IGS_FI_GEN_002.FINP_INS_UFT_HIST( old_references.fee_cat,
186                 old_references.fee_cal_type,
187                 old_references.fee_ci_sequence_number,
188                 old_references.fee_type,
189                 old_references.unit_cd,
190                 old_references.sequence_number,
191                 new_references.version_number,
192                 old_references.version_number,
193                 new_references.cal_type,
194                 old_references.cal_type,
195                 new_references.ci_sequence_number,
196                 old_references.ci_sequence_number,
197                 new_references.location_cd,
198                 old_references.location_cd,
199                 new_references.unit_class,
200                 old_references.unit_class,
201                 new_references.create_dt,
202                 old_references.create_dt,
203                 new_references.fee_trigger_group_number,
204                 old_references.fee_trigger_group_number,
205                 new_references.last_updated_by,
206                 old_references.last_updated_by,
207                 new_references.last_update_date,
208                 old_references.last_update_date);
209   END AfterRowUpdate3;
210   -- Trigger description :-
211   -- AFTER INSERT OR UPDATE
212   -- ON IGS_FI_UNIT_FEE_TRG
213   PROCEDURE AfterStmtInsertUpdate4(
214     p_inserting IN BOOLEAN DEFAULT FALSE,
215     p_updating IN BOOLEAN DEFAULT FALSE,
216     p_deleting IN BOOLEAN DEFAULT FALSE
217     ) AS
218         v_message_name varchar2(30);
219         v_message_string VARCHAR2(512);
220   BEGIN
221         -- Validate for open ended IGS_FI_UNIT_FEE_TRG records.
222         IF (p_inserting OR p_updating) THEN
223                 IF new_references.logical_delete_dt IS NULL THEN
224                         IF IGS_FI_VAL_UFT.finp_val_uft_open(
225                                         new_references.fee_cat,
226                                         new_references.fee_cal_type,
227                                         new_references.fee_ci_sequence_number,
228                                         new_references.fee_type,
229                                         new_references.unit_cd,
230                                         new_references.sequence_number,
231                                         new_references.version_number,
232                                         new_references.cal_type,
233                                         new_references.ci_sequence_number,
234                                         new_references.unit_class,
235                                         new_references.location_cd,
236                                         new_references.create_dt,
237                                         new_references.fee_trigger_group_number,
238                                         v_message_name) = FALSE THEN
239                                 Fnd_Message.Set_Name('IGS',v_message_name);
240                                 IGS_GE_MSG_STACK.ADD;
241                                 App_Exception.Raise_Exception;
242                         END IF;
243                 END IF;
244         END IF;
245   END AfterStmtInsertUpdate4;
246   PROCEDURE Check_Constraints (
247     column_name  IN  VARCHAR2 DEFAULT NULL,
248     column_value IN  VARCHAR2 DEFAULT NULL
249   ) AS
250    /*----------------------------------------------------------------------------
251   ||  Created By :
252   ||  Created On :
253   ||  Purpose :
254   ||  Known limitations, enhancements or remarks :
255   ||  Change History :
256   ||  Who             When            What
257   ||  (reverse chronological order - newest change first)
258   ||  vvutukur        18-May-2002  removed upper check on fee_type,fee_cat columns.bug#2344826.
259   ----------------------------------------------------------------------------*/
260   BEGIN
261     IF (column_name IS NULL) THEN
262       NULL;
263     ELSIF (UPPER (column_name) = 'SEQUENCE_NUMBER') THEN
264       new_references.sequence_number := igs_ge_number.To_Num (column_value);
265     ELSIF (UPPER (column_name) = 'CI_SEQUENCE_NUMBER') THEN
266       new_references.ci_sequence_number := igs_ge_number.To_Num (column_value);
267     ELSIF (UPPER (column_name) = 'VERSION_NUMBER') THEN
268       new_references.version_number := igs_ge_number.To_Num (column_value);
269     ELSIF (UPPER (column_name) = 'FEE_TRIGGER_GROUP_NUMBER') THEN
270       new_references.fee_trigger_group_number := igs_ge_number.To_Num (column_value);
271     ELSIF (UPPER (column_name) = 'FEE_CI_SEQUENCE_NUMBER') THEN
272       new_references.fee_ci_sequence_number := igs_ge_number.To_Num (column_value);
273     ELSIF (UPPER (column_name) = 'CAL_TYPE') THEN
274       new_references.cal_type := column_value;
275     ELSIF (UPPER (column_name) = 'FEE_CAL_TYPE') THEN
276       new_references.fee_cal_type := column_value;
277     ELSIF (UPPER (column_name) = 'LOCATION_CD') THEN
278       new_references.location_cd := column_value;
279     ELSIF (UPPER (column_name) = 'UNIT_CD') THEN
280       new_references.unit_cd := column_value;
281     ELSIF (UPPER (column_name) = 'UNIT_CLASS') THEN
282       new_references.unit_class := column_value;
283     END IF;
284     IF ((UPPER (column_name) = 'SEQUENCE_NUMBER') OR (column_name IS NULL)) THEN
285       IF ((new_references.sequence_number < 1) OR (new_references.sequence_number > 999999)) THEN
286         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
287         IGS_GE_MSG_STACK.ADD;
288         App_Exception.Raise_Exception;
289       END IF;
290     END IF;
291     IF ((UPPER (column_name) = 'CI_SEQUENCE_NUMBER') OR (column_name IS NULL)) THEN
292       IF ((new_references.ci_sequence_number < 1) OR (new_references.ci_sequence_number > 999999)) THEN
293         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
294         IGS_GE_MSG_STACK.ADD;
295         App_Exception.Raise_Exception;
296       END IF;
297     END IF;
298     IF ((UPPER (column_name) = 'VERSION_NUMBER') OR (column_name IS NULL)) THEN
299       IF ((new_references.version_number < 1) OR (new_references.version_number > 999)) THEN
300         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
301         IGS_GE_MSG_STACK.ADD;
302         App_Exception.Raise_Exception;
303       END IF;
304     END IF;
305     IF ((UPPER (column_name) = 'FEE_TRIGGER_GROUP_NUMBER') OR (column_name IS NULL)) THEN
306       IF ((new_references.fee_trigger_group_number < 1) OR (new_references.fee_trigger_group_number > 999999)) THEN
307         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
308         IGS_GE_MSG_STACK.ADD;
309         App_Exception.Raise_Exception;
310       END IF;
311     END IF;
312     IF ((UPPER (column_name) = 'FEE_CI_SEQUENCE_NUMBER') OR (column_name IS NULL)) THEN
313       IF ((new_references.fee_ci_sequence_number < 1) OR (new_references.fee_ci_sequence_number > 999999)) 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     IF ((UPPER (column_name) = 'CAL_TYPE') OR (column_name IS NULL)) THEN
320       IF (new_references.cal_type <> UPPER (new_references.cal_type)) THEN
321         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
322         IGS_GE_MSG_STACK.ADD;
323         App_Exception.Raise_Exception;
324       END IF;
325     END IF;
326     IF ((UPPER (column_name) = 'FEE_CAL_TYPE') OR (column_name IS NULL)) THEN
327       IF (new_references.fee_cal_type <> UPPER (new_references.fee_cal_type)) THEN
328         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
329         IGS_GE_MSG_STACK.ADD;
330         App_Exception.Raise_Exception;
331       END IF;
332     END IF;
333     IF ((UPPER (column_name) = 'LOCATION_CD') OR (column_name IS NULL)) THEN
334       IF (new_references.location_cd <> UPPER (new_references.location_cd)) THEN
335         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
336         IGS_GE_MSG_STACK.ADD;
337         App_Exception.Raise_Exception;
338       END IF;
339     END IF;
340     IF ((UPPER (column_name) = 'UNIT_CD') OR (column_name IS NULL)) THEN
341       IF (new_references.unit_cd <> UPPER (new_references.unit_cd)) THEN
342         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
343         IGS_GE_MSG_STACK.ADD;
344         App_Exception.Raise_Exception;
345       END IF;
346     END IF;
347     IF ((UPPER (column_name) = 'UNIT_CLASS') OR (column_name IS NULL)) THEN
348       IF (new_references.unit_class <> UPPER (new_references.unit_class)) THEN
349         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
350         IGS_GE_MSG_STACK.ADD;
351         App_Exception.Raise_Exception;
352       END IF;
353     END IF;
354   END Check_Constraints;
355   PROCEDURE Check_Uniqueness AS
356   BEGIN
357     IF (Get_UK1_For_Validation (
358           new_references.fee_cat,
359           new_references.fee_cal_type,
360           new_references.fee_ci_sequence_number,
361           new_references.fee_type,
362           new_references.unit_cd,
363           new_references.version_number,
364           new_references.cal_type,
365           new_references.ci_sequence_number,
366           new_references.location_cd,
367           new_references.unit_class,
368           new_references.create_dt
369         )) THEN
370       Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
371       IGS_GE_MSG_STACK.ADD;
372       App_Exception.Raise_Exception;
373     END IF;
374   END Check_Uniqueness;
375   PROCEDURE Check_Parent_Existance AS
376   BEGIN
377     IF (((old_references.cal_type = new_references.cal_type)) OR
378         ((new_references.cal_type IS NULL))) THEN
379       NULL;
380     ELSE
381       IF NOT IGS_CA_TYPE_PKG.Get_PK_For_Validation (
382                new_references.cal_type
383                ) THEN
384         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
385         IGS_GE_MSG_STACK.ADD;
386         App_Exception.Raise_Exception;
387       END IF;
388     END IF;
389     IF (((old_references.cal_type = new_references.cal_type) AND
390          (old_references.ci_sequence_number = new_references.ci_sequence_number)) OR
391         ((new_references.cal_type IS NULL) OR
392          (new_references.ci_sequence_number IS NULL))) THEN
393       NULL;
394     ELSE
395       IF NOT IGS_CA_INST_PKG.Get_PK_For_Validation (
396                new_references.cal_type,
397                new_references.ci_sequence_number
398                ) THEN
399         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
400         IGS_GE_MSG_STACK.ADD;
401         App_Exception.Raise_Exception;
402       END IF;
403     END IF;
404     IF (((old_references.fee_cat = new_references.fee_cat) AND
405          (old_references.fee_cal_type = new_references.fee_cal_type) AND
406          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number) AND
407          (old_references.fee_type = new_references.fee_type)) OR
408         ((new_references.fee_cat IS NULL) OR
409          (new_references.fee_cal_type IS NULL) OR
410          (new_references.fee_ci_sequence_number IS NULL) OR
411          (new_references.fee_type IS NULL))) THEN
412       NULL;
413     ELSE
414       IF NOT IGS_FI_F_CAT_FEE_LBL_PKG.Get_PK_For_Validation (
415                new_references.fee_cat,
416                new_references.fee_cal_type,
417                new_references.fee_ci_sequence_number,
418                new_references.fee_type
419                ) THEN
420         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
421         IGS_GE_MSG_STACK.ADD;
422         App_Exception.Raise_Exception;
423       END IF;
424     END IF;
425     IF (((old_references.fee_cat = new_references.fee_cat) AND
426          (old_references.fee_cal_type = new_references.fee_cal_type) AND
427          (old_references.fee_ci_sequence_number = new_references.fee_ci_sequence_number) AND
428          (old_references.fee_type = new_references.fee_type) AND
429          (old_references.fee_trigger_group_number = new_references.fee_trigger_group_number)) OR
430         ((new_references.fee_cat IS NULL) OR
431          (new_references.fee_cal_type IS NULL) OR
432          (new_references.fee_ci_sequence_number IS NULL) OR
433          (new_references.fee_type IS NULL) OR
434          (new_references.fee_trigger_group_number IS NULL))) THEN
435       NULL;
436     ELSE
437       IF NOT IGS_FI_FEE_TRG_GRP_PKG.Get_PK_For_Validation (
438                new_references.fee_cat,
439                new_references.fee_cal_type,
440                new_references.fee_ci_sequence_number,
441                new_references.fee_type,
442                new_references.fee_trigger_group_number
443                ) THEN
444         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
445         IGS_GE_MSG_STACK.ADD;
446         App_Exception.Raise_Exception;
447       END IF;
448     END IF;
449     IF (((old_references.location_cd = new_references.location_cd)) OR
450         ((new_references.location_cd IS NULL))) THEN
451       NULL;
452     ELSE
453       IF NOT IGS_AD_LOCATION_PKG.Get_PK_For_Validation (
454                new_references.location_cd ,
455                'N'
456                ) THEN
457         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
458         IGS_GE_MSG_STACK.ADD;
459         App_Exception.Raise_Exception;
460       END IF;
461     END IF;
462     IF (((old_references.unit_class = new_references.unit_class)) OR
463         ((new_references.unit_class IS NULL))) THEN
464       NULL;
465     ELSE
466       IF NOT IGS_AS_UNIT_CLASS_PKG.Get_PK_For_Validation (
467                new_references.unit_class
468                ) THEN
469         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
470         IGS_GE_MSG_STACK.ADD;
471         App_Exception.Raise_Exception;
472       END IF;
473     END IF;
474     IF (((old_references.unit_cd = new_references.unit_cd)) OR
475         ((new_references.unit_cd IS NULL))) THEN
476       NULL;
477     ELSE
478       IF NOT IGS_PS_UNIT_PKG.Get_PK_For_Validation (
479                new_references.unit_cd
480                ) THEN
481         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
482         IGS_GE_MSG_STACK.ADD;
483         App_Exception.Raise_Exception;
484       END IF;
485     END IF;
486     IF (((old_references.unit_cd = new_references.unit_cd) AND
487          (old_references.version_number = new_references.version_number)) OR
488         ((new_references.unit_cd IS NULL) OR
489          (new_references.version_number IS NULL))) THEN
490       NULL;
491     ELSE
492       IF NOT IGS_PS_UNIT_VER_PKG.Get_PK_For_Validation (
493                new_references.unit_cd,
494                new_references.version_number
495                ) THEN
496         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
497         IGS_GE_MSG_STACK.ADD;
498         App_Exception.Raise_Exception;
499       END IF;
500     END IF;
501   END Check_Parent_Existance;
502   FUNCTION Get_PK_For_Validation (
503     x_fee_cat IN VARCHAR2,
504     x_fee_cal_type IN VARCHAR2,
505     x_fee_ci_sequence_number IN NUMBER,
506     x_fee_type IN VARCHAR2,
507     x_unit_cd IN VARCHAR2,
508     x_sequence_number IN NUMBER
509     ) RETURN BOOLEAN AS
510     CURSOR cur_rowid IS
511       SELECT   rowid
512       FROM     IGS_FI_UNIT_FEE_TRG
513       WHERE    fee_cat = x_fee_cat
514       AND      fee_cal_type = x_fee_cal_type
515       AND      fee_ci_sequence_number = x_fee_ci_sequence_number
516       AND      fee_type = x_fee_type
517       AND      unit_cd = x_unit_cd
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   FUNCTION Get_UK1_For_Validation (
533     x_fee_cat IN VARCHAR2,
534     x_fee_cal_type IN VARCHAR2,
535     x_fee_ci_sequence_number IN NUMBER,
536     x_fee_type IN VARCHAR2,
537     x_unit_cd IN VARCHAR2,
538     x_version_number IN NUMBER,
539     x_cal_type IN VARCHAR2,
540     x_ci_sequence_number IN NUMBER,
541     x_location_cd IN VARCHAR2,
542     x_unit_class IN VARCHAR2,
543     x_create_dt IN DATE
544   ) RETURN BOOLEAN AS
545     CURSOR cur_rowid IS
546       SELECT   rowid
547       FROM     IGS_FI_UNIT_FEE_TRG
548       WHERE    fee_cat = x_fee_cat
549       AND      fee_cal_type = x_fee_cal_type
550       AND      fee_ci_sequence_number = x_fee_ci_sequence_number
551       AND      fee_type = x_fee_type
552       AND      unit_cd = x_unit_cd
553       AND      version_number = x_version_number
554       AND      cal_type = x_cal_type
555       AND      ci_sequence_number = x_ci_sequence_number
556       AND      location_cd = x_location_cd
557       AND      unit_class = x_unit_class
558       AND      create_dt = x_create_dt
559       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid))
560           FOR UPDATE NOWAIT;
561     lv_rowid cur_rowid%RowType;
562   BEGIN
563     Open cur_rowid;
564     Fetch cur_rowid INTO lv_rowid;
565     IF (cur_rowid%FOUND) THEN
566       Close cur_rowid;
567       Return (TRUE);
568     ELSE
569       Close cur_rowid;
570       Return (FALSE);
571     END IF;
572   END Get_UK1_For_Validation;
573   PROCEDURE GET_FK_IGS_CA_TYPE (
574     x_cal_type IN VARCHAR2
575     ) AS
576     CURSOR cur_rowid IS
577       SELECT   rowid
578       FROM     IGS_FI_UNIT_FEE_TRG
579       WHERE    cal_type = x_cal_type ;
580     lv_rowid cur_rowid%RowType;
581   BEGIN
582     Open cur_rowid;
583     Fetch cur_rowid INTO lv_rowid;
584     IF (cur_rowid%FOUND) THEN
585       Close cur_rowid;
586       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_CAT_FK');
587       IGS_GE_MSG_STACK.ADD;
588       App_Exception.Raise_Exception;
589       Return;
590     END IF;
591     Close cur_rowid;
592   END GET_FK_IGS_CA_TYPE;
593   PROCEDURE GET_FK_IGS_CA_INST (
594     x_cal_type IN VARCHAR2,
595     x_sequence_number IN NUMBER
596     ) AS
597     CURSOR cur_rowid IS
598       SELECT   rowid
599       FROM     IGS_FI_UNIT_FEE_TRG
600       WHERE    cal_type = x_cal_type
601       AND      ci_sequence_number = x_sequence_number ;
602     lv_rowid cur_rowid%RowType;
603   BEGIN
604     Open cur_rowid;
605     Fetch cur_rowid INTO lv_rowid;
606     IF (cur_rowid%FOUND) THEN
607       Close cur_rowid;
608       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_CI_FK');
609       IGS_GE_MSG_STACK.ADD;
610       App_Exception.Raise_Exception;
611       Return;
612     END IF;
613     Close cur_rowid;
614   END GET_FK_IGS_CA_INST;
615 
616   PROCEDURE GET_FK_IGS_FI_FEE_TRG_GRP (
617     x_fee_cat IN VARCHAR2,
618     x_fee_cal_type IN VARCHAR2,
619     x_fee_ci_sequence_number IN NUMBER,
620     x_fee_type IN VARCHAR2,
621     x_fee_trigger_group_number IN NUMBER
622     ) AS
623     CURSOR cur_rowid IS
624       SELECT   rowid
625       FROM     IGS_FI_UNIT_FEE_TRG
626       WHERE    fee_cat = x_fee_cat
627       AND      fee_cal_type = x_fee_cal_type
628       AND      fee_ci_sequence_number = x_fee_ci_sequence_number
629       AND      fee_type = x_fee_type
630       AND      fee_trigger_group_number = x_fee_trigger_group_number ;
631     lv_rowid cur_rowid%RowType;
632   BEGIN
633     Open cur_rowid;
634     Fetch cur_rowid INTO lv_rowid;
635     IF (cur_rowid%FOUND) THEN
636       Close cur_rowid;
637       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_FTG_FK');
638       IGS_GE_MSG_STACK.ADD;
639       App_Exception.Raise_Exception;
640       Return;
641     END IF;
642     Close cur_rowid;
643   END GET_FK_IGS_FI_FEE_TRG_GRP;
644   PROCEDURE GET_FK_IGS_AD_LOCATION (
645     x_location_cd IN VARCHAR2
646     ) AS
647     CURSOR cur_rowid IS
648       SELECT   rowid
649       FROM     IGS_FI_UNIT_FEE_TRG
650       WHERE    location_cd = x_location_cd ;
651     lv_rowid cur_rowid%RowType;
652   BEGIN
653     Open cur_rowid;
654     Fetch cur_rowid INTO lv_rowid;
655     IF (cur_rowid%FOUND) THEN
656       Close cur_rowid;
657       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_LOC_FK');
658       IGS_GE_MSG_STACK.ADD;
659       App_Exception.Raise_Exception;
660       Return;
661     END IF;
662     Close cur_rowid;
663   END GET_FK_IGS_AD_LOCATION;
664   PROCEDURE GET_FK_IGS_PS_UNIT (
665     x_unit_cd IN VARCHAR2
666     ) AS
667     CURSOR cur_rowid IS
668       SELECT   rowid
669       FROM     IGS_FI_UNIT_FEE_TRG
670       WHERE    unit_cd = x_unit_cd ;
671     lv_rowid cur_rowid%RowType;
672   BEGIN
673     Open cur_rowid;
674     Fetch cur_rowid INTO lv_rowid;
675     IF (cur_rowid%FOUND) THEN
676       Close cur_rowid;
677       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_UN_FK');
678       IGS_GE_MSG_STACK.ADD;
679       App_Exception.Raise_Exception;
680       Return;
681     END IF;
682     Close cur_rowid;
683   END GET_FK_IGS_PS_UNIT;
684   PROCEDURE GET_FK_IGS_PS_UNIT_VER (
685     x_unit_cd IN VARCHAR2,
686     x_version_number IN NUMBER
687     ) AS
688     CURSOR cur_rowid IS
689       SELECT   rowid
690       FROM     IGS_FI_UNIT_FEE_TRG
691       WHERE    unit_cd = x_unit_cd
692       AND      version_number = x_version_number ;
693     lv_rowid cur_rowid%RowType;
694   BEGIN
695     Open cur_rowid;
696     Fetch cur_rowid INTO lv_rowid;
697     IF (cur_rowid%FOUND) THEN
698       Close cur_rowid;
699       Fnd_Message.Set_Name ('IGS', 'IGS_FI_UFT_UV_FK');
700       IGS_GE_MSG_STACK.ADD;
701       App_Exception.Raise_Exception;
702       Return;
703     END IF;
704     Close cur_rowid;
705   END GET_FK_IGS_PS_UNIT_VER;
706   PROCEDURE Before_DML (
707     p_action IN VARCHAR2,
708     x_rowid IN  VARCHAR2 DEFAULT NULL,
709     x_fee_cat IN VARCHAR2 DEFAULT NULL,
710     x_fee_cal_type IN VARCHAR2 DEFAULT NULL,
711     x_fee_ci_sequence_number IN NUMBER DEFAULT NULL,
712     x_fee_type IN VARCHAR2 DEFAULT NULL,
713     x_unit_cd IN VARCHAR2 DEFAULT NULL,
714     x_sequence_number IN NUMBER DEFAULT NULL,
715     x_version_number IN NUMBER DEFAULT NULL,
716     x_cal_type IN VARCHAR2 DEFAULT NULL,
717     x_ci_sequence_number IN NUMBER DEFAULT NULL,
718     x_location_cd IN VARCHAR2 DEFAULT NULL,
719     x_unit_class IN VARCHAR2 DEFAULT NULL,
720     x_create_dt IN DATE DEFAULT NULL,
721     x_fee_trigger_group_number IN NUMBER DEFAULT NULL,
722     x_logical_delete_dt IN DATE DEFAULT NULL,
723      x_creation_date IN DATE DEFAULT NULL,
724     x_created_by IN NUMBER DEFAULT NULL,
725     x_last_update_date IN DATE DEFAULT NULL,
726     x_last_updated_by IN NUMBER DEFAULT NULL,
727     x_last_update_login IN NUMBER DEFAULT NULL
728   ) AS
729   BEGIN
730     Set_Column_Values (
731       p_action,
732       x_rowid,
733       x_fee_cat,
734       x_fee_cal_type,
735       x_fee_ci_sequence_number,
736       x_fee_type,
737       x_unit_cd,
738       x_sequence_number,
739       x_version_number,
740       x_cal_type,
741       x_ci_sequence_number,
742       x_location_cd,
743       x_unit_class,
744       x_create_dt,
745       x_fee_trigger_group_number,
746       x_logical_delete_dt,
747       x_creation_date,
748       x_created_by,
749       x_last_update_date,
750       x_last_updated_by,
751       x_last_update_login
752     );
753     IF (p_action = 'INSERT') THEN
754       -- Call all the procedures related to Before Insert.
755       BeforeRowInsertUpdate1 ( p_inserting => TRUE );
756       IF (Get_PK_For_Validation (
757             new_references.fee_cat,
758             new_references.fee_cal_type,
759             new_references.fee_ci_sequence_number,
760             new_references.fee_type,
761             new_references.unit_cd,
762             new_references.sequence_number
763             )) THEN
764         Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
765         IGS_GE_MSG_STACK.ADD;
766         App_Exception.Raise_Exception;
767       END IF;
768       Check_Uniqueness;
769       Check_Constraints;
770       Check_Parent_Existance;
771     ELSIF (p_action = 'UPDATE') THEN
772       -- Call all the procedures related to Before Update.
773       BeforeRowInsertUpdate1 ( p_updating => TRUE );
774       Check_Uniqueness;
775       Check_Constraints;
776       Check_Parent_Existance;
777     ELSIF (p_action = 'VALIDATE_INSERT') THEN
778       IF (Get_PK_For_Validation (
779             new_references.fee_cat,
780             new_references.fee_cal_type,
781             new_references.fee_ci_sequence_number,
782             new_references.fee_type,
783             new_references.unit_cd,
784             new_references.sequence_number
785           )) THEN
786         Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
787         IGS_GE_MSG_STACK.ADD;
788         App_Exception.Raise_Exception;
789       END IF;
790       Check_Uniqueness;
791       Check_Constraints;
792     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
793       Check_Uniqueness;
794       Check_Constraints;
795     END IF;
796   END Before_DML;
797   PROCEDURE After_DML (
798     p_action IN VARCHAR2,
799     x_rowid IN VARCHAR2
800   ) AS
801   BEGIN
802     l_rowid := x_rowid;
803     IF (p_action = 'INSERT') THEN
804       -- Call all the procedures related to After Insert.
805       AfterStmtInsertUpdate4 ( p_inserting => TRUE );
806     ELSIF (p_action = 'UPDATE') THEN
807       -- Call all the procedures related to After Update.
808       AfterRowUpdate3 ( p_updating => TRUE );
809       AfterStmtInsertUpdate4 ( p_updating => TRUE );
810     END IF;
811   END After_DML;
812 procedure INSERT_ROW (
813   X_ROWID in out NOCOPY VARCHAR2,
814   X_FEE_CAT in VARCHAR2,
815   X_FEE_CAL_TYPE in VARCHAR2,
816   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
817   X_UNIT_CD in VARCHAR2,
818   X_SEQUENCE_NUMBER in NUMBER,
819   X_FEE_TYPE in VARCHAR2,
820   X_VERSION_NUMBER in NUMBER,
821   X_CAL_TYPE in VARCHAR2,
822   X_CI_SEQUENCE_NUMBER in NUMBER,
823   X_LOCATION_CD in VARCHAR2,
824   X_UNIT_CLASS in VARCHAR2,
825   X_CREATE_DT in DATE,
826   X_FEE_TRIGGER_GROUP_NUMBER in NUMBER,
827   X_LOGICAL_DELETE_DT in DATE,
828   X_MODE in VARCHAR2 default 'R'
829   ) AS
830     cursor C is select ROWID from IGS_FI_UNIT_FEE_TRG
831       where FEE_CAT = X_FEE_CAT
832       and FEE_CAL_TYPE = X_FEE_CAL_TYPE
833       and FEE_CI_SEQUENCE_NUMBER = X_FEE_CI_SEQUENCE_NUMBER
834       and UNIT_CD = X_UNIT_CD
835       and SEQUENCE_NUMBER = X_SEQUENCE_NUMBER
836       and FEE_TYPE = X_FEE_TYPE;
837     X_LAST_UPDATE_DATE DATE;
838     X_LAST_UPDATED_BY NUMBER;
839     X_LAST_UPDATE_LOGIN NUMBER;
840 begin
841   X_LAST_UPDATE_DATE := SYSDATE;
842   if(X_MODE = 'I') then
843     X_LAST_UPDATED_BY := 1;
844     X_LAST_UPDATE_LOGIN := 0;
845   elsif (X_MODE = 'R') then
846     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
847     if X_LAST_UPDATED_BY is NULL then
848       X_LAST_UPDATED_BY := -1;
849     end if;
850     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
851     if X_LAST_UPDATE_LOGIN is NULL then
852       X_LAST_UPDATE_LOGIN := -1;
853     end if;
854   else
855     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
856     IGS_GE_MSG_STACK.ADD;
857     app_exception.raise_exception;
858   end if;
859  Before_DML(
860   p_action=>'INSERT',
861   x_rowid=>X_ROWID,
862   x_cal_type=>X_CAL_TYPE,
863   x_ci_sequence_number=>X_CI_SEQUENCE_NUMBER,
864   x_create_dt=>NVL(X_CREATE_DT,sysdate),
865   x_fee_cal_type=>X_FEE_CAL_TYPE,
866   x_fee_cat=>X_FEE_CAT,
867   x_fee_ci_sequence_number=>X_FEE_CI_SEQUENCE_NUMBER,
868   x_fee_trigger_group_number=>X_FEE_TRIGGER_GROUP_NUMBER,
869   x_fee_type=>X_FEE_TYPE,
870   x_location_cd=>X_LOCATION_CD,
871   x_sequence_number=>X_SEQUENCE_NUMBER,
872   x_unit_cd=>X_UNIT_CD,
873   x_unit_class=>X_UNIT_CLASS,
874   x_version_number=>X_VERSION_NUMBER,
875   x_logical_delete_dt => X_LOGICAL_DELETE_DT,
876   x_creation_date=>X_LAST_UPDATE_DATE,
877   x_created_by=>X_LAST_UPDATED_BY,
878  x_last_update_date=>X_LAST_UPDATE_DATE,
879  x_last_updated_by=>X_LAST_UPDATED_BY,
880  x_last_update_login=>X_LAST_UPDATE_LOGIN
881  );
882   insert into IGS_FI_UNIT_FEE_TRG (
883     FEE_CAT,
884     FEE_CAL_TYPE,
885     FEE_CI_SEQUENCE_NUMBER,
886     FEE_TYPE,
887     UNIT_CD,
888     SEQUENCE_NUMBER,
889     VERSION_NUMBER,
890     CAL_TYPE,
891     CI_SEQUENCE_NUMBER,
892     LOCATION_CD,
893     UNIT_CLASS,
894     CREATE_DT,
895     FEE_TRIGGER_GROUP_NUMBER,
896     LOGICAL_DELETE_DT,
897     CREATION_DATE,
898     CREATED_BY,
899     LAST_UPDATE_DATE,
900     LAST_UPDATED_BY,
901     LAST_UPDATE_LOGIN
902   ) values (
903     NEW_REFERENCES.FEE_CAT,
904     NEW_REFERENCES.FEE_CAL_TYPE,
905     NEW_REFERENCES.FEE_CI_SEQUENCE_NUMBER,
906     NEW_REFERENCES.FEE_TYPE,
907     NEW_REFERENCES.UNIT_CD,
908     NEW_REFERENCES.SEQUENCE_NUMBER,
909     NEW_REFERENCES.VERSION_NUMBER,
910     NEW_REFERENCES.CAL_TYPE,
911     NEW_REFERENCES.CI_SEQUENCE_NUMBER,
912     NEW_REFERENCES.LOCATION_CD,
913     NEW_REFERENCES.UNIT_CLASS,
914     NEW_REFERENCES.CREATE_DT,
915     NEW_REFERENCES.FEE_TRIGGER_GROUP_NUMBER,
916     NEW_REFERENCES.LOGICAL_DELETE_DT,
917     X_LAST_UPDATE_DATE,
918     X_LAST_UPDATED_BY,
919     X_LAST_UPDATE_DATE,
920     X_LAST_UPDATED_BY,
921     X_LAST_UPDATE_LOGIN
922   );
923   open c;
924   fetch c into X_ROWID;
925   if (c%notfound) then
926     close c;
927     raise no_data_found;
928   end if;
929   close c;
930 end INSERT_ROW;
931 procedure LOCK_ROW (
932   X_ROWID in VARCHAR2,
933   X_FEE_CAT in VARCHAR2,
934   X_FEE_CAL_TYPE in VARCHAR2,
935   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
936   X_UNIT_CD in VARCHAR2,
937   X_SEQUENCE_NUMBER in NUMBER,
938   X_FEE_TYPE in VARCHAR2,
939   X_VERSION_NUMBER in NUMBER,
940   X_CAL_TYPE in VARCHAR2,
941   X_CI_SEQUENCE_NUMBER in NUMBER,
942   X_LOCATION_CD in VARCHAR2,
943   X_UNIT_CLASS in VARCHAR2,
944   X_CREATE_DT in DATE,
945   X_FEE_TRIGGER_GROUP_NUMBER in NUMBER,
946   X_LOGICAL_DELETE_DT in DATE
947 ) AS
948   cursor c1 is select
949       VERSION_NUMBER,
950       CAL_TYPE,
951       CI_SEQUENCE_NUMBER,
952       LOCATION_CD,
953       UNIT_CLASS,
954       CREATE_DT,
955       FEE_TRIGGER_GROUP_NUMBER,
956       LOGICAL_DELETE_DT
957     from IGS_FI_UNIT_FEE_TRG
958     where ROWID=X_ROWID
959     for update nowait;
960   tlinfo c1%rowtype;
961 begin
962   open c1;
963   fetch c1 into tlinfo;
964   if (c1%notfound) then
965     close c1;
966     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
967     IGS_GE_MSG_STACK.ADD;
968     app_exception.raise_exception;
969     return;
970   end if;
971   close c1;
972       if ( ((tlinfo.VERSION_NUMBER = X_VERSION_NUMBER)
973            OR ((tlinfo.VERSION_NUMBER is null)
974                AND (X_VERSION_NUMBER is null)))
975       AND ((tlinfo.CAL_TYPE = X_CAL_TYPE)
976            OR ((tlinfo.CAL_TYPE is null)
977                AND (X_CAL_TYPE is null)))
978       AND ((tlinfo.CI_SEQUENCE_NUMBER = X_CI_SEQUENCE_NUMBER)
979            OR ((tlinfo.CI_SEQUENCE_NUMBER is null)
980                AND (X_CI_SEQUENCE_NUMBER is null)))
981       AND ((tlinfo.LOCATION_CD = X_LOCATION_CD)
982            OR ((tlinfo.LOCATION_CD is null)
983                AND (X_LOCATION_CD is null)))
984       AND ((tlinfo.UNIT_CLASS = X_UNIT_CLASS)
985            OR ((tlinfo.UNIT_CLASS is null)
986                AND (X_UNIT_CLASS is null)))
987       AND (tlinfo.CREATE_DT = X_CREATE_DT)
988       AND ((tlinfo.FEE_TRIGGER_GROUP_NUMBER = X_FEE_TRIGGER_GROUP_NUMBER)
989            OR ((tlinfo.FEE_TRIGGER_GROUP_NUMBER is null)
990                AND (X_FEE_TRIGGER_GROUP_NUMBER is null)))
991       AND ((tlinfo.LOGICAL_DELETE_DT = X_LOGICAL_DELETE_DT)
992            OR ((tlinfo.LOGICAL_DELETE_DT is null)
993                AND (X_LOGICAL_DELETE_DT is null)))
994   ) then
995     null;
996   else
997     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
998     IGS_GE_MSG_STACK.ADD;
999     app_exception.raise_exception;
1000   end if;
1001   return;
1002 end LOCK_ROW;
1003 procedure UPDATE_ROW (
1004   X_ROWID in VARCHAR2,
1005   X_FEE_CAT in VARCHAR2,
1006   X_FEE_CAL_TYPE in VARCHAR2,
1007   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
1008   X_UNIT_CD in VARCHAR2,
1009   X_SEQUENCE_NUMBER in NUMBER,
1010   X_FEE_TYPE in VARCHAR2,
1011   X_VERSION_NUMBER in NUMBER,
1012   X_CAL_TYPE in VARCHAR2,
1013   X_CI_SEQUENCE_NUMBER in NUMBER,
1014   X_LOCATION_CD in VARCHAR2,
1015   X_UNIT_CLASS in VARCHAR2,
1016   X_CREATE_DT in DATE,
1017   X_FEE_TRIGGER_GROUP_NUMBER in NUMBER,
1018   X_LOGICAL_DELETE_DT in DATE,
1019   X_MODE in VARCHAR2 default 'R'
1020   ) AS
1021     X_LAST_UPDATE_DATE DATE;
1022     X_LAST_UPDATED_BY NUMBER;
1023     X_LAST_UPDATE_LOGIN NUMBER;
1024 begin
1025   X_LAST_UPDATE_DATE := SYSDATE;
1026   if(X_MODE = 'I') then
1027     X_LAST_UPDATED_BY := 1;
1028     X_LAST_UPDATE_LOGIN := 0;
1029   elsif (X_MODE = 'R') then
1030     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1031     if X_LAST_UPDATED_BY is NULL then
1032       X_LAST_UPDATED_BY := -1;
1033     end if;
1034     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
1035     if X_LAST_UPDATE_LOGIN is NULL then
1036       X_LAST_UPDATE_LOGIN := -1;
1037     end if;
1038   else
1039     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
1040     IGS_GE_MSG_STACK.ADD;
1041     app_exception.raise_exception;
1042   end if;
1043  Before_DML(
1044   p_action=>'UPDATE',
1045   x_rowid=>X_ROWID,
1046   x_cal_type=>X_CAL_TYPE,
1047   x_ci_sequence_number=>X_CI_SEQUENCE_NUMBER,
1048   x_create_dt=>X_CREATE_DT,
1049   x_fee_cal_type=>X_FEE_CAL_TYPE,
1050   x_fee_cat=>X_FEE_CAT,
1051   x_fee_ci_sequence_number=>X_FEE_CI_SEQUENCE_NUMBER,
1052   x_fee_trigger_group_number=>X_FEE_TRIGGER_GROUP_NUMBER,
1053   x_fee_type=>X_FEE_TYPE,
1054   x_location_cd=>X_LOCATION_CD,
1055   x_sequence_number=>X_SEQUENCE_NUMBER,
1056   x_unit_cd=>X_UNIT_CD,
1057   x_unit_class=>X_UNIT_CLASS,
1058   x_version_number=>X_VERSION_NUMBER,
1059   x_logical_delete_dt=>X_LOGICAL_DELETE_DT,
1060   x_creation_date=>X_LAST_UPDATE_DATE,
1061   x_created_by=>X_LAST_UPDATED_BY,
1062  x_last_update_date=>X_LAST_UPDATE_DATE,
1063  x_last_updated_by=>X_LAST_UPDATED_BY,
1064  x_last_update_login=>X_LAST_UPDATE_LOGIN
1065  );
1066   update IGS_FI_UNIT_FEE_TRG set
1067     VERSION_NUMBER = NEW_REFERENCES.VERSION_NUMBER,
1068     CAL_TYPE = NEW_REFERENCES.CAL_TYPE,
1069     CI_SEQUENCE_NUMBER = NEW_REFERENCES.CI_SEQUENCE_NUMBER,
1070     LOCATION_CD = NEW_REFERENCES.LOCATION_CD,
1071     UNIT_CLASS = NEW_REFERENCES.UNIT_CLASS,
1072     CREATE_DT = NEW_REFERENCES.CREATE_DT,
1073     FEE_TRIGGER_GROUP_NUMBER = NEW_REFERENCES.FEE_TRIGGER_GROUP_NUMBER,
1074     LOGICAL_DELETE_DT = NEW_REFERENCES.LOGICAL_DELETE_DT,
1075     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
1076     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
1077     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
1078   where ROWID=X_ROWID
1079   ;
1080   if (sql%notfound) then
1081     raise no_data_found;
1082   end if;
1083 After_DML(
1084    p_action =>'UPDATE',
1085    x_rowid => X_ROWID
1086 );
1087 end UPDATE_ROW;
1088 procedure ADD_ROW (
1089   X_ROWID in out NOCOPY VARCHAR2,
1090   X_FEE_CAT in VARCHAR2,
1091   X_FEE_CAL_TYPE in VARCHAR2,
1092   X_FEE_CI_SEQUENCE_NUMBER in NUMBER,
1093   X_UNIT_CD in VARCHAR2,
1094   X_SEQUENCE_NUMBER in NUMBER,
1095   X_FEE_TYPE in VARCHAR2,
1096   X_VERSION_NUMBER in NUMBER,
1097   X_CAL_TYPE in VARCHAR2,
1098   X_CI_SEQUENCE_NUMBER in NUMBER,
1099   X_LOCATION_CD in VARCHAR2,
1100   X_UNIT_CLASS in VARCHAR2,
1101   X_CREATE_DT in DATE,
1102   X_FEE_TRIGGER_GROUP_NUMBER in NUMBER,
1103   X_LOGICAL_DELETE_DT in DATE,
1104   X_MODE in VARCHAR2 default 'R'
1105   ) AS
1106   cursor c1 is select rowid from IGS_FI_UNIT_FEE_TRG
1107      where FEE_CAT = X_FEE_CAT
1108      and FEE_CAL_TYPE = X_FEE_CAL_TYPE
1109      and FEE_CI_SEQUENCE_NUMBER = X_FEE_CI_SEQUENCE_NUMBER
1110      and UNIT_CD = X_UNIT_CD
1111      and SEQUENCE_NUMBER = X_SEQUENCE_NUMBER
1112      and FEE_TYPE = X_FEE_TYPE
1113   ;
1114 begin
1115   open c1;
1116   fetch c1 into X_ROWID;
1117   if (c1%notfound) then
1118     close c1;
1119     INSERT_ROW (
1120      X_ROWID,
1121      X_FEE_CAT,
1122      X_FEE_CAL_TYPE,
1123      X_FEE_CI_SEQUENCE_NUMBER,
1124      X_UNIT_CD,
1125      X_SEQUENCE_NUMBER,
1126      X_FEE_TYPE,
1127      X_VERSION_NUMBER,
1128      X_CAL_TYPE,
1129      X_CI_SEQUENCE_NUMBER,
1130      X_LOCATION_CD,
1131      X_UNIT_CLASS,
1132      X_CREATE_DT,
1133      X_FEE_TRIGGER_GROUP_NUMBER,
1134      X_LOGICAL_DELETE_DT,
1135      X_MODE);
1136     return;
1137   end if;
1138   close c1;
1139   UPDATE_ROW (
1140    X_ROWID,
1141    X_FEE_CAT,
1142    X_FEE_CAL_TYPE,
1143    X_FEE_CI_SEQUENCE_NUMBER,
1144    X_UNIT_CD,
1145    X_SEQUENCE_NUMBER,
1146    X_FEE_TYPE,
1147    X_VERSION_NUMBER,
1148    X_CAL_TYPE,
1149    X_CI_SEQUENCE_NUMBER,
1150    X_LOCATION_CD,
1151    X_UNIT_CLASS,
1152    X_CREATE_DT,
1153    X_FEE_TRIGGER_GROUP_NUMBER,
1154    X_LOGICAL_DELETE_DT,
1155    X_MODE);
1156 end ADD_ROW;
1157 procedure DELETE_ROW (
1158   X_ROWID in VARCHAR2
1159 ) AS
1160 begin
1161   delete from IGS_FI_UNIT_FEE_TRG
1162   where ROWID=X_ROWID;
1163   if (sql%notfound) then
1164     raise no_data_found;
1165   end if;
1166 end DELETE_ROW;
1167 end IGS_FI_UNIT_FEE_TRG_PKG;