DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_GR_CRM_ROUND_PRD_PKG

Source


1 package body IGS_GR_CRM_ROUND_PRD_PKG as
2 /* $Header: IGSGI10B.pls 120.0 2005/07/05 11:33:41 appldev noship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_GR_CRM_ROUND_PRD%RowType;
5   new_references IGS_GR_CRM_ROUND_PRD%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_grd_cal_type IN VARCHAR2 DEFAULT NULL,
11     x_grd_ci_sequence_number IN NUMBER DEFAULT NULL,
12     x_completion_year IN NUMBER DEFAULT NULL,
13     x_completion_period IN VARCHAR2 DEFAULT NULL,
14     x_creation_date IN DATE DEFAULT NULL,
15     x_created_by IN NUMBER DEFAULT NULL,
16     x_last_update_date IN DATE DEFAULT NULL,
17     x_last_updated_by IN NUMBER DEFAULT NULL,
18     x_last_update_login IN NUMBER DEFAULT NULL
19   ) AS
20 
21     CURSOR cur_old_ref_values IS
22       SELECT   *
23       FROM     IGS_GR_CRM_ROUND_PRD
24       WHERE    rowid = x_rowid;
25 
26   BEGIN
27 
28     l_rowid := x_rowid;
29 
30     -- Code for setting the Old and New Reference Values.
31     -- Populate Old Values.
32     Open cur_old_ref_values;
33     Fetch cur_old_ref_values INTO old_references;
34     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
35       Close cur_old_ref_values;
36       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
37       IGS_GE_MSG_STACK.ADD;
38       App_Exception.Raise_Exception;
39       Return;
40     END IF;
41     Close cur_old_ref_values;
42 
43     -- Populate New Values.
44     new_references.grd_cal_type := x_grd_cal_type;
45     new_references.grd_ci_sequence_number := x_grd_ci_sequence_number;
46     new_references.completion_year := x_completion_year;
47     new_references.completion_period := x_completion_period;
48     IF (p_action = 'UPDATE') THEN
49       new_references.creation_date := old_references.creation_date;
50       new_references.created_by := old_references.created_by;
51     ELSE
52       new_references.creation_date := x_creation_date;
53       new_references.created_by := x_created_by;
54     END IF;
55     new_references.last_update_date := x_last_update_date;
56     new_references.last_updated_by := x_last_updated_by;
57     new_references.last_update_login := x_last_update_login;
58 
59   END Set_Column_Values;
60 
61   -- Trigger description :-
62   -- "OSS_TST".trg_crdp_br_iu
63   -- BEFORE INSERT OR UPDATE
64   -- ON IGS_GR_CRM_ROUND_PRD
65   -- FOR EACH ROW
66 
67   PROCEDURE BeforeRowInsertUpdate1(
68     p_inserting IN BOOLEAN DEFAULT FALSE,
69     p_updating IN BOOLEAN DEFAULT FALSE,
70     p_deleting IN BOOLEAN DEFAULT FALSE
71     ) AS
72 	v_message_name	VARCHAR2(30);
73   BEGIN
74 	-- Validate the graduation cal instance is of the correct category and status
75 	IF p_inserting OR p_updating THEN
76 		IF IGS_GR_VAL_CRDP.grdp_val_crdp_iud(
77 				new_references.grd_cal_type,
78 				new_references.grd_ci_sequence_number,
79 				v_message_name) = FALSE THEN
80 			Fnd_Message.Set_Name('IGS', v_message_name);
81 			IGS_GE_MSG_STACK.ADD;
82   				App_Exception.Raise_Exception;
83 		END IF;
84 	END IF;
85 
86 
87   END BeforeRowInsertUpdate1;
88 
89   PROCEDURE Check_Parent_Existance AS
90     --smaddali added a parent check for bug#2237194 ARCR043 ccr
91     -- as new foreign key has been added with table igs_en_nom_cmpl_prd
92 
93   BEGIN
94 
95     IF (((old_references.grd_cal_type = new_references.grd_cal_type) AND
96          (old_references.grd_ci_sequence_number = new_references.grd_ci_sequence_number)) OR
97         ((new_references.grd_cal_type IS NULL) OR
98          (new_references.grd_ci_sequence_number IS NULL))) THEN
99       NULL;
100     ELSE
101       IF NOT IGS_GR_CRMN_ROUND_PKG.Get_PK_For_Validation (
102         new_references.grd_cal_type,
103         new_references.grd_ci_sequence_number
104         ) THEN
105 		FND_MESSAGE.SET_NAME ('FND', 'FORM_RECORD_DELETED');
106 		IGS_GE_MSG_STACK.ADD;
107 		APP_EXCEPTION.RAISE_EXCEPTION;
108       END IF;
109 
110     END IF;
111 
112     --smaddali added this check for bug#2237194 ARCR043 ccr
113     -- as new foreign key has been added with table igs_en_nom_cmpl_prd
114     IF (old_references.completion_period = new_references.completion_period) OR
115         (new_references.completion_period IS NULL) THEN
116       NULL;
117     ELSE
118       IF NOT IGS_EN_NOM_CMPL_PRD_PKG.Get_PK_For_Validation (
119         new_references.completion_period
120         ) THEN
121 		FND_MESSAGE.SET_NAME ('FND', 'FORM_RECORD_DELETED');
122 		IGS_GE_MSG_STACK.ADD;
123 		APP_EXCEPTION.RAISE_EXCEPTION;
124       END IF;
125 
126     END IF;
127 
128   END Check_Parent_Existance;
129 
130   PROCEDURE CHECK_CONSTRAINTS(
131 	Column_Name IN VARCHAR2 DEFAULT NULL,
132 	Column_Value IN VARCHAR2 DEFAULT NULL
133 	) AS
134 --smaddali removed a constraint for item completion_period to check if
135 -- values are in list ('E','S','M') for bug # 2237194 ARCR043 ccr
136 
137   BEGIN
138 
139 IF Column_Name is null THEN
140   NULL;
141 ELSIF upper(Column_name) = 'GRD_CI_SEQUENCE_NUMBER' THEN
142   new_references.GRD_CI_SEQUENCE_NUMBER:= IGS_GE_NUMBER.to_num(COLUMN_VALUE) ;
143 
144 ELSIF upper(Column_name) = 'COMPLETION_YEAR' THEN
145   new_references.COMPLETION_YEAR:= IGS_GE_NUMBER.to_num(COLUMN_VALUE) ;
146 
147 ELSIF upper(Column_name) = 'COMPLETION_PERIOD' THEN
148   new_references.COMPLETION_PERIOD:= COLUMN_VALUE ;
149 
150 ELSIF upper(Column_name) = 'GRD_CAL_TYPE' THEN
151   new_references.GRD_CAL_TYPE:= COLUMN_VALUE ;
152 
153 ELSIF upper(Column_name) = 'COMPLETION_PERIOD' THEN
154   new_references.COMPLETION_PERIOD:= COLUMN_VALUE ;
155 
156 END IF ;
157 
158 IF upper(Column_name) = 'GRD_CI_SEQUENCE_NUMBER' OR COLUMN_NAME IS NULL THEN
159   IF new_references.GRD_CI_SEQUENCE_NUMBER < 1 OR new_references.GRD_CI_SEQUENCE_NUMBER > 999999 then
160     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
161     IGS_GE_MSG_STACK.ADD;
162     App_Exception.Raise_Exception ;
163   END IF;
164 END IF ;
165 
166 IF upper(Column_name) = 'COMPLETION_YEAR' OR COLUMN_NAME IS NULL THEN
167   IF new_references.COMPLETION_YEAR < 1000 OR new_references.COMPLETION_YEAR > 9999 then
168     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
169     IGS_GE_MSG_STACK.ADD;
170     App_Exception.Raise_Exception ;
171   END IF;
172 END IF ;
173 
174 IF upper(Column_name) = 'COMPLETION_PERIOD' OR COLUMN_NAME IS NULL THEN
175 --smaddali removed a constraint to check values in list ('E','S','M')
176 --for bug # 2237194 ARCR043 ccr
177   IF new_references.COMPLETION_PERIOD<> upper(NEW_REFERENCES.COMPLETION_PERIOD) then
178     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
179     IGS_GE_MSG_STACK.ADD;
180     App_Exception.Raise_Exception ;
181   END IF;
182 END IF ;
183 
184 IF upper(Column_name) = 'GRD_CAL_TYPE' OR COLUMN_NAME IS NULL THEN
185   IF new_references.GRD_CAL_TYPE<> upper(NEW_REFERENCES.GRD_CAL_TYPE) then
186     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
187     IGS_GE_MSG_STACK.ADD;
188     App_Exception.Raise_Exception ;
189   END IF;
190 
191 END IF ;
192   END;
193 
194   FUNCTION Get_PK_For_Validation (
195     x_grd_cal_type IN VARCHAR2,
196     x_grd_ci_sequence_number IN NUMBER,
197     x_completion_year IN NUMBER,
198     x_completion_period IN VARCHAR2
199     )RETURN BOOLEAN AS
200 
201     CURSOR cur_rowid IS
202       SELECT   rowid
203       FROM     IGS_GR_CRM_ROUND_PRD
204       WHERE    grd_cal_type = x_grd_cal_type
205       AND      grd_ci_sequence_number = x_grd_ci_sequence_number
206       AND      completion_year = x_completion_year
207       AND      completion_period = x_completion_period
208       FOR UPDATE NOWAIT;
209 
210     lv_rowid cur_rowid%RowType;
211 
212   BEGIN
213 
214     Open cur_rowid;
215     Fetch cur_rowid INTO lv_rowid;
216     	IF (cur_rowid%FOUND) THEN
217 		Close cur_rowid;
218 		Return (TRUE);
219 	ELSE
220 		Close cur_rowid;
221 		Return (FALSE);
222 	END IF;
223 
224   END Get_PK_For_Validation;
225 
226   PROCEDURE GET_FK_IGS_GR_CRMN_ROUND (
227     x_grd_cal_type IN VARCHAR2,
228     x_grd_ci_sequence_number IN NUMBER
229     ) AS
230 
231     CURSOR cur_rowid IS
232       SELECT   rowid
233       FROM     IGS_GR_CRM_ROUND_PRD
234       WHERE    grd_cal_type = x_grd_cal_type
235       AND      grd_ci_sequence_number = x_grd_ci_sequence_number ;
236 
237     lv_rowid cur_rowid%RowType;
238 
239   BEGIN
240 
241     Open cur_rowid;
242     Fetch cur_rowid INTO lv_rowid;
243     IF (cur_rowid%FOUND) THEN
244       Close cur_rowid;
245       Fnd_Message.Set_Name ('IGS', 'IGS_GR_CRDP_CRD_FK');
246       IGS_GE_MSG_STACK.ADD;
247       App_Exception.Raise_Exception;
248       Return;
249     END IF;
250     Close cur_rowid;
251 
252   END GET_FK_IGS_GR_CRMN_ROUND;
253 
254 
255 
256   PROCEDURE Before_DML (
257     p_action IN VARCHAR2,
258     x_rowid IN VARCHAR2 DEFAULT NULL,
259     x_grd_cal_type IN VARCHAR2 DEFAULT NULL,
260     x_grd_ci_sequence_number IN NUMBER DEFAULT NULL,
261     x_completion_year IN NUMBER DEFAULT NULL,
262     x_completion_period IN VARCHAR2 DEFAULT NULL,
263     x_creation_date IN DATE DEFAULT NULL,
264     x_created_by IN NUMBER DEFAULT NULL,
265     x_last_update_date IN DATE DEFAULT NULL,
266     x_last_updated_by IN NUMBER DEFAULT NULL,
267     x_last_update_login IN NUMBER DEFAULT NULL
268   ) AS
269   BEGIN
270 
271     Set_Column_Values (
272       p_action,
273       x_rowid,
274       x_grd_cal_type,
275       x_grd_ci_sequence_number,
276       x_completion_year,
277       x_completion_period,
278       x_creation_date,
279       x_created_by,
280       x_last_update_date,
281       x_last_updated_by,
282       x_last_update_login
283     );
284 
285     IF (p_action = 'INSERT') THEN
286       -- Call all the procedures related to Before Insert.
287       BeforeRowInsertUpdate1 ( p_inserting => TRUE );
288 	IF GET_PK_FOR_VALIDATION(
289 	    NEW_REFERENCES.grd_cal_type,
290 	    NEW_REFERENCES.grd_ci_sequence_number,
291 	    NEW_REFERENCES.completion_year,
292 	    NEW_REFERENCES.completion_period
293 	) THEN
294 		Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
295 		IGS_GE_MSG_STACK.ADD;
296 		App_Exception.Raise_Exception;
297 	END IF;
298 
299 	check_constraints;
300       Check_Parent_Existance;
301     ELSIF (p_action = 'UPDATE') THEN
302       -- Call all the procedures related to Before Update.
303       BeforeRowInsertUpdate1 ( p_updating => TRUE );
304 
305 	check_constraints;
306       Check_Parent_Existance;
307     ELSIF (p_action = 'VALIDATE_INSERT') THEN
308 	IF GET_PK_FOR_VALIDATION(
309 	    NEW_REFERENCES.grd_cal_type,
310 	    NEW_REFERENCES.grd_ci_sequence_number,
311 	    NEW_REFERENCES.completion_year,
312 	    NEW_REFERENCES.completion_period
313 	) THEN
314 		Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
315 		IGS_GE_MSG_STACK.ADD;
316 		App_Exception.Raise_Exception;
317 	END IF;
318 	check_constraints;
319     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
320 	check_constraints;
321     END IF;
322 
323   END Before_DML;
324 
325 procedure INSERT_ROW (
326   X_ROWID in out NOCOPY VARCHAR2,
327   X_GRD_CAL_TYPE in VARCHAR2,
328   X_GRD_CI_SEQUENCE_NUMBER in NUMBER,
329   X_COMPLETION_YEAR in NUMBER,
330   X_COMPLETION_PERIOD in out NOCOPY VARCHAR2,
331   X_MODE in VARCHAR2 default 'R'
332   ) AS
333     cursor C is select ROWID from IGS_GR_CRM_ROUND_PRD
334       where GRD_CAL_TYPE = X_GRD_CAL_TYPE
335       and GRD_CI_SEQUENCE_NUMBER = X_GRD_CI_SEQUENCE_NUMBER
336       and COMPLETION_YEAR = X_COMPLETION_YEAR
337       and COMPLETION_PERIOD = NEW_REFERENCES.COMPLETION_PERIOD;
338     X_LAST_UPDATE_DATE DATE;
339     X_LAST_UPDATED_BY NUMBER;
340     X_LAST_UPDATE_LOGIN NUMBER;
341 begin
342   X_LAST_UPDATE_DATE := SYSDATE;
343   if(X_MODE = 'I') then
344     X_LAST_UPDATED_BY := 1;
345     X_LAST_UPDATE_LOGIN := 0;
346   elsif (X_MODE = 'R') then
347     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
348     if X_LAST_UPDATED_BY is NULL then
349       X_LAST_UPDATED_BY := -1;
350     end if;
351     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
352     if X_LAST_UPDATE_LOGIN is NULL then
353       X_LAST_UPDATE_LOGIN := -1;
354     end if;
355   else
356     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
357     IGS_GE_MSG_STACK.ADD;
358     app_exception.raise_exception;
359   end if;
360 
361  Before_DML (
362      p_action => 'INSERT',
363      x_rowid => X_ROWID,
364     x_grd_cal_type => X_GRD_CAL_TYPE,
365     x_grd_ci_sequence_number => X_GRD_CI_SEQUENCE_NUMBER,
366     x_completion_year => X_COMPLETION_YEAR,
367     x_completion_period => NVL(X_COMPLETION_PERIOD, 'E'),
368     x_creation_date => X_LAST_UPDATE_DATE,
369      x_created_by => X_LAST_UPDATED_BY,
370      x_last_update_date => X_LAST_UPDATE_DATE,
371      x_last_updated_by => X_LAST_UPDATED_BY,
372      x_last_update_login => X_LAST_UPDATE_LOGIN
373   );
374 
375   insert into IGS_GR_CRM_ROUND_PRD (
376     GRD_CAL_TYPE,
377     GRD_CI_SEQUENCE_NUMBER,
378     COMPLETION_YEAR,
379     COMPLETION_PERIOD,
380     CREATION_DATE,
381     CREATED_BY,
382     LAST_UPDATE_DATE,
383     LAST_UPDATED_BY,
384     LAST_UPDATE_LOGIN
385   ) values (
386     NEW_REFERENCES.GRD_CAL_TYPE,
387     NEW_REFERENCES.GRD_CI_SEQUENCE_NUMBER,
388     NEW_REFERENCES.COMPLETION_YEAR,
389     NEW_REFERENCES.COMPLETION_PERIOD,
390     X_LAST_UPDATE_DATE,
391     X_LAST_UPDATED_BY,
392     X_LAST_UPDATE_DATE,
393     X_LAST_UPDATED_BY,
394     X_LAST_UPDATE_LOGIN
395   );
396 
397   open c;
398   fetch c into X_ROWID;
399   if (c%notfound) then
400     close c;
401     raise no_data_found;
402   end if;
403   close c;
404 
405 end INSERT_ROW;
406 
407 procedure LOCK_ROW (
408   X_ROWID in VARCHAR2,
409   X_GRD_CAL_TYPE in VARCHAR2,
410   X_GRD_CI_SEQUENCE_NUMBER in NUMBER,
411   X_COMPLETION_YEAR in NUMBER,
412   X_COMPLETION_PERIOD in VARCHAR2
413 ) AS
414   cursor c1 is select
415      rowid
416     from IGS_GR_CRM_ROUND_PRD
417     where ROWID = X_ROWID for update nowait;
418   tlinfo c1%rowtype;
419 
420 begin
421   open c1;
422   fetch c1 into tlinfo;
423   if (c1%notfound) then
424     close c1;
425     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
426     app_exception.raise_exception;
427     return;
428   end if;
429   close c1;
430 
431   return;
432 end LOCK_ROW;
433 
434 procedure DELETE_ROW (
435   X_ROWID in VARCHAR2
436 ) AS
437 begin
438 
439   delete from IGS_GR_CRM_ROUND_PRD
440   where ROWID = X_ROWID;
441   if (sql%notfound) then
442     raise no_data_found;
443   end if;
444 end;
445 
446 end IGS_GR_CRM_ROUND_PRD_PKG;