DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_OU_UNIT_SET_PKG

Source


1 package body IGS_PR_OU_UNIT_SET_PKG AS
2 /* $Header: IGSQI08B.pls 115.6 2003/02/25 09:09:24 anilk ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references IGS_PR_OU_UNIT_SET_ALL%RowType;
6   new_references IGS_PR_OU_UNIT_SET_ALL%RowType;
7 
8   PROCEDURE Set_Column_Values (
9     p_action IN VARCHAR2,
10     x_rowid IN VARCHAR2 DEFAULT NULL,
11     x_progression_rule_cat IN VARCHAR2 DEFAULT NULL,
12     x_pra_sequence_number IN NUMBER DEFAULT NULL,
13     x_pro_sequence_number IN NUMBER DEFAULT NULL,
14     x_unit_set_cd IN VARCHAR2 DEFAULT NULL,
15     x_us_version_number IN NUMBER DEFAULT NULL,
16     x_creation_date IN DATE DEFAULT NULL,
17     x_created_by IN NUMBER DEFAULT NULL,
18     x_last_update_date IN DATE DEFAULT NULL,
19     x_last_updated_by IN NUMBER DEFAULT NULL,
20     x_last_update_login IN NUMBER DEFAULT NULL ,
21     x_org_id IN NUMBER DEFAULT NULL
22   ) AS
23 
24     CURSOR cur_old_ref_values IS
25       SELECT   *
26       FROM     IGS_PR_OU_UNIT_SET_ALL
27       WHERE    rowid = x_rowid;
28 
29   BEGIN
30 
31     l_rowid := x_rowid;
32 
33     -- Code for setting the Old and New Reference Values.
34     -- Populate Old Values.
35     Open cur_old_ref_values;
36     Fetch cur_old_ref_values INTO old_references;
37     IF (cur_old_ref_values%NOTFOUND) AND (p_action not in ('INSERT','VALIDATE_INSERT')) THEN
38       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
39       IGS_GE_MSG_STACK.ADD;
40 	  Close cur_old_ref_values;
41       App_Exception.Raise_Exception;
42       Return;
43     END IF;
44     Close cur_old_ref_values;
45 
46     -- Populate New Values.
47     new_references.progression_rule_cat := x_progression_rule_cat;
48     new_references.pra_sequence_number := x_pra_sequence_number;
49     new_references.pro_sequence_number := x_pro_sequence_number;
50     new_references.unit_set_cd := x_unit_set_cd;
51     new_references.us_version_number := x_us_version_number;
52     new_references.org_id := x_org_id;
53 
54     IF (p_action = 'UPDATE') THEN
55       new_references.creation_date := old_references.creation_date;
56       new_references.created_by := old_references.created_by;
57     ELSE
58       new_references.creation_date := x_creation_date;
59       new_references.created_by := x_created_by;
60     END IF;
61     new_references.last_update_date := x_last_update_date;
62     new_references.last_updated_by := x_last_updated_by;
63     new_references.last_update_login := x_last_update_login;
64 
65   END Set_Column_Values;
66   PROCEDURE Check_Parent_Existance AS
67   BEGIN
68 
69     IF (((old_references.progression_rule_cat = new_references.progression_rule_cat) AND
70          (old_references.pra_sequence_number = new_references.pra_sequence_number) AND
71          (old_references.pro_sequence_number = new_references.pro_sequence_number)) OR
72         ((new_references.progression_rule_cat IS NULL) OR
73          (new_references.pra_sequence_number IS NULL) OR
74          (new_references.pro_sequence_number IS NULL))) THEN
75       NULL;
76     ELSE
77       IF NOT IGS_PR_RU_OU_PKG.Get_PK_For_Validation (
78         new_references.progression_rule_cat,
79         new_references.pra_sequence_number,
80         new_references.pro_sequence_number
81         ) THEN
82     		Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
83       IGS_GE_MSG_STACK.ADD;
84 		App_Exception.Raise_Exception;
85 
86 	END IF;
87     END IF;
88 
89     IF (((old_references.unit_set_cd = new_references.unit_set_cd) AND
90          (old_references.us_version_number = new_references.us_version_number)) OR
91         ((new_references.unit_set_cd IS NULL) OR
92          (new_references.us_version_number IS NULL))) THEN
93       NULL;
94     ELSE
95       IF NOT IGS_EN_UNIT_SET_PKG.Get_PK_For_Validation (
96         new_references.unit_set_cd,
97         new_references.us_version_number
98         ) THEN
99 		Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
100       IGS_GE_MSG_STACK.ADD;
101 		App_Exception.Raise_Exception;
102 	END IF;
103 
104     END IF;
105 
106   END Check_Parent_Existance;
107 
108   FUNCTION Get_PK_For_Validation (
109     x_progression_rule_cat IN VARCHAR2,
110     x_pra_sequence_number IN NUMBER,
111     x_pro_sequence_number IN NUMBER,
112     x_unit_set_cd IN VARCHAR2,
113     x_us_version_number IN NUMBER
114     ) RETURN BOOLEAN AS
115 
116     CURSOR cur_rowid IS
117       SELECT   rowid
118       FROM     IGS_PR_OU_UNIT_SET_ALL
119       WHERE    progression_rule_cat = x_progression_rule_cat
120       AND      pra_sequence_number = x_pra_sequence_number
121       AND      pro_sequence_number = x_pro_sequence_number
122       AND      unit_set_cd = x_unit_set_cd
123       AND      us_version_number = x_us_version_number
124       FOR UPDATE NOWAIT;
125 
126     lv_rowid cur_rowid%RowType;
127 
128   BEGIN
129 
130     Open cur_rowid;
131     Fetch cur_rowid INTO lv_rowid;
132     	IF (cur_rowid%FOUND) THEN
133 		Close cur_rowid;
134 		Return (TRUE);
135 	ELSE
136 		Close cur_rowid;
137 		Return (FALSE);
138 	END IF;
139 
140   END Get_PK_For_Validation;
141 
142   PROCEDURE GET_FK_IGS_PR_RU_OU (
143     x_progression_rule_cat IN VARCHAR2,
144     x_pra_sequence_number IN NUMBER,
145     x_sequence_number IN NUMBER
146     ) AS
147 
148     CURSOR cur_rowid IS
149       SELECT   rowid
150       FROM     IGS_PR_OU_UNIT_SET_ALL
151       WHERE    progression_rule_cat = x_progression_rule_cat
152       AND      pra_sequence_number = x_pra_sequence_number
153       AND      pro_sequence_number = x_sequence_number ;
154 
155     lv_rowid cur_rowid%RowType;
156 
157   BEGIN
158 
159     Open cur_rowid;
160     Fetch cur_rowid INTO lv_rowid;
161     IF (cur_rowid%FOUND) THEN
162       Fnd_Message.Set_Name ('IGS', 'IGS_PR_POUS_PRO_FK');
163       IGS_GE_MSG_STACK.ADD;
164 	  Close cur_rowid;
165       App_Exception.Raise_Exception;
166       Return;
167     END IF;
168     Close cur_rowid;
169 
170   END GET_FK_IGS_PR_RU_OU;
171 
172   PROCEDURE GET_FK_IGS_EN_UNIT_SET (
173     x_unit_set_cd IN VARCHAR2,
174     x_version_number IN NUMBER
175     ) AS
176 
177     CURSOR cur_rowid IS
178       SELECT   rowid
179       FROM     IGS_PR_OU_UNIT_SET_ALL
180       WHERE    unit_set_cd = x_unit_set_cd
181       AND      us_version_number = x_version_number ;
182 
183     lv_rowid cur_rowid%RowType;
184 
185   BEGIN
186 
187     Open cur_rowid;
188     Fetch cur_rowid INTO lv_rowid;
189     IF (cur_rowid%FOUND) THEN
190       Fnd_Message.Set_Name ('IGS', 'IGS_PR_POUS_US_FK');
191       IGS_GE_MSG_STACK.ADD;
192 	  Close cur_rowid;
193       App_Exception.Raise_Exception;
194       Return;
195     END IF;
196     Close cur_rowid;
197 
198   END GET_FK_IGS_EN_UNIT_SET;
199 
200 	PROCEDURE BeforeInsertUpdate( p_action VARCHAR2 ) AS
201   /*
202   ||  Created By : anilk
203   ||  Created On : 25-FEB-2003
204   ||  Known limitations, enhancements or remarks :
205   ||  Change History :
206   ||  Who             When            What
207   ||  (reverse chronological order - newest change first)
208   */
209     CURSOR c_parent (
210          cp_progression_rule_cat    IGS_PR_RU_OU.progression_rule_cat%TYPE,
211          cp_pra_sequence_number     IGS_PR_RU_OU.pra_sequence_number%TYPE,
212          cp_sequence_number         IGS_PR_RU_OU.sequence_number%TYPE  ) IS
213      SELECT 1
214      FROM   IGS_PR_RU_OU pro
215      WHERE  pro.progression_rule_cat = cp_progression_rule_cat    AND
216             pro.pra_sequence_number  = cp_pra_sequence_number AND
217             pro.sequence_number      = cp_sequence_number     AND
218             pro.logical_delete_dt is NULL;
219 
220     l_dummy NUMBER;
221 
222   BEGIN
223 
224    IF (p_action = 'INSERT') THEN
225       OPEN c_parent( new_references.progression_rule_cat, new_references.pra_sequence_number, new_references.pro_sequence_number );
226       FETCH c_parent INTO l_dummy;
227       IF c_parent%NOTFOUND THEN
228           CLOSE c_parent;
229           FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_DELETED');
230           IGS_GE_MSG_STACK.ADD;
231           APP_EXCEPTION.RAISE_EXCEPTION;
232       END IF;
233       CLOSE c_parent;
234    ELSIF(p_action = 'UPDATE') THEN
235       IF new_references.progression_rule_cat <> old_references.progression_rule_cat  OR
236          new_references.pra_sequence_number <> old_references.pra_sequence_number  OR
237          new_references.pro_sequence_number <> old_references.pro_sequence_number  THEN
238         OPEN c_parent( new_references.progression_rule_cat,  new_references.pra_sequence_number, new_references.pro_sequence_number );
239         FETCH c_parent INTO l_dummy;
240         IF c_parent%NOTFOUND THEN
241           CLOSE c_parent;
242           FND_MESSAGE.SET_NAME('FND', 'FORM_RECORD_DELETED');
243           IGS_GE_MSG_STACK.ADD;
244           APP_EXCEPTION.RAISE_EXCEPTION;
245         END IF;
246         CLOSE c_parent;
247       END IF;
248    END IF;
249 
250   END BeforeInsertUpdate;
251 
252   PROCEDURE Before_DML (
253     p_action IN VARCHAR2,
254     x_rowid IN VARCHAR2 DEFAULT NULL,
255     x_progression_rule_cat IN VARCHAR2 DEFAULT NULL,
256     x_pra_sequence_number IN NUMBER DEFAULT NULL,
257     x_pro_sequence_number IN NUMBER DEFAULT NULL,
258     x_unit_set_cd IN VARCHAR2 DEFAULT NULL,
259     x_us_version_number IN NUMBER DEFAULT NULL,
260     x_creation_date IN DATE DEFAULT NULL,
261     x_created_by IN NUMBER DEFAULT NULL,
262     x_last_update_date IN DATE DEFAULT NULL,
263     x_last_updated_by IN NUMBER DEFAULT NULL,
264     x_last_update_login IN NUMBER DEFAULT NULL,
265      x_org_id IN NUMBER DEFAULT NULL
266   ) AS
267   BEGIN
268 
269     Set_Column_Values (
270       p_action,
271       x_rowid,
272       x_progression_rule_cat,
273       x_pra_sequence_number,
274       x_pro_sequence_number,
275       x_unit_set_cd,
276       x_us_version_number,
277       x_creation_date,
278       x_created_by,
279       x_last_update_date,
280       x_last_updated_by,
281       x_last_update_login ,
282       x_org_id
283     );
284 
285     IF (p_action = 'INSERT') THEN
286       -- Call all the procedures related to Before Insert.
287 	Check_Parent_Existance;
288 	IF Get_PK_For_Validation (
289 		    new_references.progression_rule_cat,
290 		    new_references.pra_sequence_number,
291 		    new_references.pro_sequence_number,
292 		    new_references.unit_set_cd,
293 		    new_references.us_version_number)  THEN
294 		Fnd_Message.Set_Name('IGS','IGS_GE_MULTI_ORG_DUP_REC');
295       IGS_GE_MSG_STACK.ADD;
296 		App_Exception.Raise_Exception;
297 	END IF;
298 	CHECK_CONSTRAINTS;
299 
300     ELSIF (p_action = 'UPDATE') THEN
301       -- Call all the procedures related to Before Update.
302       CHECK_CONSTRAINTS;
303       Check_Parent_Existance;
304 	ELSIF (p_action = 'VALIDATE_INSERT') THEN
305 		IF Get_PK_For_Validation (
306 		    new_references.progression_rule_cat,
307 		    new_references.pra_sequence_number,
308 		    new_references.pro_sequence_number,
309 		    new_references.unit_set_cd,
310 		    new_references.us_version_number)  THEN
311 			Fnd_Message.Set_Name('IGS','IGS_GE_MULTI_ORG_DUP_REC');
312       IGS_GE_MSG_STACK.ADD;
313 			App_Exception.Raise_Exception;
314 		END IF;
315 
316 		CHECK_CONSTRAINTS;
317 	ELSIF (p_action = 'VALIDATE_UPDATE') THEN
318 	CHECK_CONSTRAINTS;
319    END IF;
320 
321    -- anilk, bug#2784198
322    BeforeInsertUpdate(p_action);
323 
324   END Before_DML;
325 
326 procedure INSERT_ROW (
327   X_ROWID in out NOCOPY VARCHAR2,
328   X_PROGRESSION_RULE_CAT in VARCHAR2,
329   X_PRA_SEQUENCE_NUMBER in NUMBER,
330   X_PRO_SEQUENCE_NUMBER in NUMBER,
331   X_UNIT_SET_CD in VARCHAR2,
332   X_US_VERSION_NUMBER in NUMBER,
333   X_MODE in VARCHAR2 default 'R',
334   X_ORG_ID IN NUMBER
335   ) AS
336     cursor C is select ROWID from IGS_PR_OU_UNIT_SET_ALL
337       where PROGRESSION_RULE_CAT = X_PROGRESSION_RULE_CAT
338       and PRA_SEQUENCE_NUMBER = X_PRA_SEQUENCE_NUMBER
339       and PRO_SEQUENCE_NUMBER = X_PRO_SEQUENCE_NUMBER
340       and UNIT_SET_CD = X_UNIT_SET_CD
341       and US_VERSION_NUMBER = X_US_VERSION_NUMBER;
342     X_LAST_UPDATE_DATE DATE;
343     X_LAST_UPDATED_BY NUMBER;
344     X_LAST_UPDATE_LOGIN NUMBER;
345 begin
346   X_LAST_UPDATE_DATE := SYSDATE;
347   if(X_MODE = 'I') then
348     X_LAST_UPDATED_BY := 1;
349     X_LAST_UPDATE_LOGIN := 0;
350   elsif (X_MODE = 'R') then
351     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
352     if X_LAST_UPDATED_BY is NULL then
353       X_LAST_UPDATED_BY := -1;
354     end if;
355     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
356     if X_LAST_UPDATE_LOGIN is NULL then
357       X_LAST_UPDATE_LOGIN := -1;
358     end if;
359   else
360     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
361       IGS_GE_MSG_STACK.ADD;
362     app_exception.raise_exception;
363   end if;
364 Before_DML (
365     p_action => 'INSERT',
366     x_rowid => x_rowid ,
367     x_progression_rule_cat => x_progression_rule_cat ,
368     x_pra_sequence_number => x_pra_sequence_number ,
369     x_pro_sequence_number => x_pro_sequence_number ,
370     x_unit_set_cd => x_unit_set_cd ,
371     x_us_version_number => x_us_version_number ,
372     x_creation_date => x_last_update_date,
373     x_created_by => x_last_updated_by,
374     x_last_update_date => x_last_update_date ,
375     x_last_updated_by => x_last_updated_by ,
376     x_last_update_login => x_last_update_login ,
377     x_org_id => igs_ge_gen_003.get_org_id
378   );
379   insert into IGS_PR_OU_UNIT_SET_ALL (
380     PROGRESSION_RULE_CAT,
381     PRA_SEQUENCE_NUMBER,
382     PRO_SEQUENCE_NUMBER,
383     UNIT_SET_CD,
384     US_VERSION_NUMBER,
385     CREATION_DATE,
386     CREATED_BY,
387     LAST_UPDATE_DATE,
388     LAST_UPDATED_BY,
389     LAST_UPDATE_LOGIN,
390     ORG_ID
391   ) values (
392     NEW_REFERENCES.PROGRESSION_RULE_CAT,
393     NEW_REFERENCES.PRA_SEQUENCE_NUMBER,
394     NEW_REFERENCES.PRO_SEQUENCE_NUMBER,
395     NEW_REFERENCES.UNIT_SET_CD,
396     NEW_REFERENCES.US_VERSION_NUMBER,
397     X_LAST_UPDATE_DATE,
398     X_LAST_UPDATED_BY,
399     X_LAST_UPDATE_DATE,
400     X_LAST_UPDATED_BY,
401     X_LAST_UPDATE_LOGIN,
402     NEW_REFERENCES.ORG_ID
403   );
404 
405   open c;
406   fetch c into X_ROWID;
407   if (c%notfound) then
408     close c;
409     raise no_data_found;
410   end if;
411   close c;
412 end INSERT_ROW;
413 
414 procedure LOCK_ROW (
415   X_ROWID in VARCHAR2,
416   X_PROGRESSION_RULE_CAT in VARCHAR2,
417   X_PRA_SEQUENCE_NUMBER in NUMBER,
418   X_PRO_SEQUENCE_NUMBER in NUMBER,
419   X_UNIT_SET_CD in VARCHAR2,
420   X_US_VERSION_NUMBER in NUMBER
421 ) AS
422   cursor c1 is select
423         rowid
424     from IGS_PR_OU_UNIT_SET_ALL
425     where ROWID = X_ROWID for update nowait;
426   tlinfo c1%rowtype;
427 
428 begin
429   open c1;
430   fetch c1 into tlinfo;
431   if (c1%notfound) then
432     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
433       IGS_GE_MSG_STACK.ADD;
434 	close c1;
435     app_exception.raise_exception;
436     return;
437   end if;
438   close c1;
439   return;
440 end LOCK_ROW;
441 
442 procedure DELETE_ROW (
443   X_ROWID in VARCHAR2
444 ) is
445 begin
446 Before_DML (
447     p_action => 'DELETE',
448     x_rowid => X_ROWID
449   );
450 
451   delete from IGS_PR_OU_UNIT_SET_ALL
452   where ROWID  = X_ROWID;
453   if (sql%notfound) then
454     raise no_data_found;
455   end if;
456 
457 end DELETE_ROW;
458 
459 PROCEDURE Check_Constraints (
460 	Column_Name IN VARCHAR2 DEFAULT NULL,
461 	Column_Value IN VARCHAR2 DEFAULT NULL
462 	) AS
463     BEGIN
464 
465 IF Column_Name is null THEN
466   NULL;
467 ELSIF upper(Column_name) = 'PROGRESSION_RULE_CAT' THEN
468   new_references.PROGRESSION_RULE_CAT:= COLUMN_VALUE ;
469 
470 ELSIF upper(Column_name) = 'UNIT_SET_CD' THEN
471   new_references.UNIT_SET_CD:= COLUMN_VALUE ;
472 
473 ELSIF upper(Column_name) = 'PRA_SEQUENCE_NUMBER' THEN
474   new_references.PRA_SEQUENCE_NUMBER:= IGS_GE_NUMBER.to_num(COLUMN_VALUE) ;
475 
476 ELSIF upper(Column_name) = 'PRO_SEQUENCE_NUMBER' THEN
477   new_references.PRO_SEQUENCE_NUMBER:= IGS_GE_NUMBER.to_num(COLUMN_VALUE) ;
478 
479 END IF ;
480 
481 IF upper(Column_name) = 'PROGRESSION_RULE_CAT' OR COLUMN_NAME IS NULL THEN
482   IF new_references.PROGRESSION_RULE_CAT<> upper(new_references.PROGRESSION_RULE_CAT) then
483     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
484       IGS_GE_MSG_STACK.ADD;
485     App_Exception.Raise_Exception ;
486   END IF;
487 
488 END IF ;
489 
490 IF upper(Column_name) = 'UNIT_SET_CD' OR COLUMN_NAME IS NULL THEN
491   IF new_references.UNIT_SET_CD<> upper(new_references.UNIT_SET_CD) then
492     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
493       IGS_GE_MSG_STACK.ADD;
494     App_Exception.Raise_Exception ;
495   END IF;
496 
497 END IF ;
498 
499 IF upper(Column_name) = 'PRA_SEQUENCE_NUMBER' OR COLUMN_NAME IS NULL THEN
500   IF new_references.PRA_SEQUENCE_NUMBER < 1 or new_references.PRA_SEQUENCE_NUMBER > 999999 then
501     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
502       IGS_GE_MSG_STACK.ADD;
503     App_Exception.Raise_Exception ;
504   END IF;
505 
506 END IF ;
507 
508 IF upper(Column_name) = 'PRO_SEQUENCE_NUMBER' OR COLUMN_NAME IS NULL THEN
509   IF new_references.PRO_SEQUENCE_NUMBER < 1 or new_references.PRO_SEQUENCE_NUMBER > 999999 then
510     Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
511       IGS_GE_MSG_STACK.ADD;
512     App_Exception.Raise_Exception ;
513   END IF;
514 
515 END IF ;
516 
517 
518 END Check_Constraints;
519 
520 end IGS_PR_OU_UNIT_SET_PKG;