DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_ANL_LOAD_U_LN_PKG

Source


1 package body IGS_PS_ANL_LOAD_U_LN_PKG AS
2   /* $Header: IGSPI05B.pls 115.3 2002/11/29 01:53:31 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references IGS_PS_ANL_LOAD_U_LN%RowType;
6   new_references IGS_PS_ANL_LOAD_U_LN%RowType;
7 
8   PROCEDURE Set_Column_Values (
9     p_action IN VARCHAR2,
10     x_rowid IN VARCHAR2 DEFAULT NULL,
11     x_course_cd IN VARCHAR2 DEFAULT NULL,
12     x_crv_version_number IN NUMBER DEFAULT NULL,
13     x_yr_num IN NUMBER DEFAULT NULL,
14     x_effective_start_dt IN DATE DEFAULT NULL,
15     x_unit_cd IN VARCHAR2 DEFAULT NULL,
16     x_uv_version_number IN NUMBER DEFAULT NULL,
17     x_creation_date IN DATE DEFAULT NULL,
18     x_created_by IN NUMBER DEFAULT NULL,
19     x_last_update_date IN DATE DEFAULT NULL,
20     x_last_updated_by IN NUMBER DEFAULT NULL,
21     x_last_update_login IN NUMBER DEFAULT NULL
22   ) AS
23 
24     CURSOR cur_old_ref_values IS
25       SELECT   *
26       FROM     IGS_PS_ANL_LOAD_U_LN
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       Close cur_old_ref_values;
39       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
40       IGS_GE_MSG_STACK.ADD;
41       App_Exception.Raise_Exception;
42       Return;
43     END IF;
44     Close cur_old_ref_values;
45 
46     -- Populate New Values.
47     new_references.course_cd := x_course_cd;
48     new_references.crv_version_number := x_crv_version_number;
49     new_references.yr_num := x_yr_num;
50     new_references.effective_start_dt := x_effective_start_dt;
51     new_references.unit_cd := x_unit_cd;
52     new_references.uv_version_number := x_uv_version_number;
53     IF (p_action = 'UPDATE') THEN
54       new_references.creation_date := old_references.creation_date;
55       new_references.created_by := old_references.created_by;
56     ELSE
57       new_references.creation_date := x_creation_date;
58       new_references.created_by := x_created_by;
59     END IF;
60     new_references.last_update_date := x_last_update_date;
61     new_references.last_updated_by := x_last_updated_by;
62     new_references.last_update_login := x_last_update_login;
63 
64   END Set_Column_Values;
65 
66   -- Trigger description :-
67   -- "OSS_TST".trg_calul_br_iud
68   -- BEFORE INSERT OR DELETE OR UPDATE
69   -- ON IGS_PS_ANL_LOAD_U_LN
70   -- FOR EACH ROW
71 
72   PROCEDURE BeforeRowInsertUpdateDelete1(
73     p_inserting IN BOOLEAN DEFAULT FALSE,
74     p_updating IN BOOLEAN DEFAULT FALSE,
75     p_deleting IN BOOLEAN DEFAULT FALSE
76     ) AS
77 	v_message_name		 varchar2(30);
78 	v_course_cd			IGS_PS_ANL_LOAD_U_LN.course_cd%TYPE;
79 	v_crv_version_number	IGS_PS_ANL_LOAD_U_LN.crv_version_number%TYPE;
80   BEGIN
81 
82 	-- Set variables.
83 	IF p_deleting THEN
84 		v_course_cd := old_references.course_cd;
85 		v_crv_version_number := old_references.crv_version_number;
86 	ELSE -- p_inserting or p_updating
87 		v_course_cd := new_references.course_cd;
88 		v_crv_version_number := new_references.crv_version_number;
89 	END IF;
90 	-- Validate the insert/update/delete.
91 	IF  IGS_PS_VAL_CRS.crsp_val_iud_crv_dtl (
92 			v_course_cd,
93 			v_crv_version_number,
94 			v_message_name) = FALSE THEN
95 		Fnd_Message.Set_Name('IGS',v_message_name);
96 		IGS_GE_MSG_STACK.ADD;
97 		App_Exception.Raise_Exception;
98 	END IF;
99 	-- Validate the IGS_PS_UNIT version.  IGS_PS_UNIT version is not updateable.
100 	IF p_inserting THEN
101 		IF IGS_PS_VAL_CALul.crsp_val_uv_sys_sts (
102 				new_references.unit_cd,
103 				new_references.uv_version_number,
104 				v_message_name) = FALSE THEN
105 			Fnd_Message.Set_Name('IGS',v_message_name);
106 			IGS_GE_MSG_STACK.ADD;
107 			App_Exception.Raise_Exception;
108 		END IF;
109 	END IF;
110 
111 
112   END BeforeRowInsertUpdateDelete1;
113 
114 PROCEDURE Check_Constraints (
115 Column_Name	IN VARCHAR2	DEFAULT NULL,
116 Column_Value 	IN VARCHAR2	DEFAULT NULL
117 )
118 AS
119 BEGIN
120 
121 	IF column_name is null then
122 	    NULL;
123 	ELSIF upper(Column_name) = 'COURSE_CD' then
124 	    new_references.course_cd := column_value;
125 	ELSIF upper(Column_name) = 'UNIT_CD' then
126 	    new_references.unit_cd := column_value;
127      END IF;
128 
129     IF upper(column_name) = 'COURSE_CD' OR
130     column_name is null Then
131    IF ( new_references.course_cd <> UPPER(new_references.course_cd) ) Then
132        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
133        IGS_GE_MSG_STACK.ADD;
134              App_Exception.Raise_Exception;
135           END IF;
136       END IF;
137 
138     IF upper(column_name) = 'UNIT_CD' OR
139     column_name is null Then
140    IF ( new_references.unit_cd <> UPPER(new_references.unit_cd) ) Then
141        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
142        IGS_GE_MSG_STACK.ADD;
143              App_Exception.Raise_Exception;
144           END IF;
145       END IF;
146 
147   END Check_Constraints;
148 
149   PROCEDURE Check_Parent_Existance AS
150   BEGIN
151 
152     IF (((old_references.course_cd = new_references.course_cd) AND
153          (old_references.crv_version_number = new_references.crv_version_number) AND
154          (old_references.yr_num = new_references.yr_num) AND
155          (old_references.effective_start_dt = new_references.effective_start_dt)) OR
156         ((new_references.course_cd IS NULL) OR
157          (new_references.crv_version_number IS NULL) OR
158          (new_references.yr_num IS NULL) OR
159          (new_references.effective_start_dt IS NULL))) THEN
160       NULL;
161     ELSE
162       IF NOT IGS_PS_ANL_LOAD_PKG.Get_PK_For_Validation (
163         new_references.course_cd,
164         new_references.crv_version_number,
165         new_references.yr_num,
166         new_references.effective_start_dt
167         ) THEN
168 	        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
169 	        IGS_GE_MSG_STACK.ADD;
170 	        App_Exception.Raise_Exception;
171 	END IF;
172     END IF;
173 
174     IF (((old_references.unit_cd = new_references.unit_cd) AND
175          (old_references.uv_version_number = new_references.uv_version_number)) OR
176         ((new_references.unit_cd IS NULL) OR
177          (new_references.uv_version_number IS NULL))) THEN
178       NULL;
179     ELSE
180       IF NOT IGS_PS_UNIT_VER_PKG.Get_PK_For_Validation (
181         new_references.unit_cd,
182         new_references.uv_version_number
183         ) THEN
184 	        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
185 	        IGS_GE_MSG_STACK.ADD;
186 	        App_Exception.Raise_Exception;
187 	END IF;
188     END IF;
189 
190   END Check_Parent_Existance;
191 
192   FUNCTION Get_PK_For_Validation (
193     x_course_cd IN VARCHAR2,
194     x_crv_version_number IN NUMBER,
195     x_yr_num IN NUMBER,
196     x_effective_start_dt IN DATE,
197     x_unit_cd IN VARCHAR2,
198     x_uv_version_number IN NUMBER
199     )
200   RETURN BOOLEAN AS
201 
202     CURSOR cur_rowid IS
203       SELECT   rowid
204       FROM     IGS_PS_ANL_LOAD_U_LN
205       WHERE    course_cd = x_course_cd
206       AND      crv_version_number = x_crv_version_number
207       AND      yr_num = x_yr_num
208       AND      effective_start_dt = x_effective_start_dt
209       AND      unit_cd = x_unit_cd
210       AND      uv_version_number = x_uv_version_number
211       FOR UPDATE NOWAIT;
212 
213     lv_rowid cur_rowid%RowType;
214 
215   BEGIN
216 
217     Open cur_rowid;
218     Fetch cur_rowid INTO lv_rowid;
219     IF (cur_rowid%FOUND) THEN
220       Close cur_rowid;
221       Return (TRUE);
222     ELSE
223 	Close cur_rowid;
224       Return (FALSE);
225     END IF;
226 
227   END Get_PK_For_Validation;
228 
229   PROCEDURE GET_FK_IGS_PS_ANL_LOAD (
230     x_course_cd IN VARCHAR2,
231     x_version_number IN NUMBER,
232     x_yr_num IN NUMBER,
233     x_effective_start_dt IN DATE
234     ) AS
235 
236     CURSOR cur_rowid IS
237       SELECT   rowid
238       FROM     IGS_PS_ANL_LOAD_U_LN
239       WHERE    course_cd = x_course_cd
240       AND      crv_version_number = x_version_number
241       AND      yr_num = x_yr_num
242       AND      effective_start_dt = x_effective_start_dt ;
243 
244     lv_rowid cur_rowid%RowType;
245 
246   BEGIN
247 
248     Open cur_rowid;
249     Fetch cur_rowid INTO lv_rowid;
250     IF (cur_rowid%FOUND) THEN
251       Close cur_rowid;
252       Fnd_Message.Set_Name ('IGS', 'IGS_PS_CALUL_CAL_FK');
253       IGS_GE_MSG_STACK.ADD;
254       App_Exception.Raise_Exception;
255        Return;
256     END IF;
257     Close cur_rowid;
258 
259   END GET_FK_IGS_PS_ANL_LOAD;
260 
261   PROCEDURE GET_FK_IGS_PS_UNIT_VER (
262     x_unit_cd IN VARCHAR2,
263     x_version_number IN NUMBER
264     ) AS
265 
266     CURSOR cur_rowid IS
267       SELECT   rowid
268       FROM     IGS_PS_ANL_LOAD_U_LN
269       WHERE    unit_cd = x_unit_cd
270       AND      uv_version_number = x_version_number ;
271 
272     lv_rowid cur_rowid%RowType;
273 
274   BEGIN
275 
276     Open cur_rowid;
277     Fetch cur_rowid INTO lv_rowid;
278     IF (cur_rowid%FOUND) THEN
279       Close cur_rowid;
280       Fnd_Message.Set_Name ('IGS', 'IGS_PS_CALUL_UV_FK');
281       IGS_GE_MSG_STACK.ADD;
282       App_Exception.Raise_Exception;
283       Return;
284     END IF;
285     Close cur_rowid;
286 
287   END GET_FK_IGS_PS_UNIT_VER;
288 
289   PROCEDURE Before_DML (
290     p_action IN VARCHAR2,
291     x_rowid IN VARCHAR2 DEFAULT NULL,
292     x_course_cd IN VARCHAR2 DEFAULT NULL,
293     x_crv_version_number IN NUMBER DEFAULT NULL,
294     x_yr_num IN NUMBER DEFAULT NULL,
295     x_effective_start_dt IN DATE DEFAULT NULL,
296     x_unit_cd IN VARCHAR2 DEFAULT NULL,
297     x_uv_version_number IN NUMBER DEFAULT NULL,
298     x_creation_date IN DATE DEFAULT NULL,
299     x_created_by IN NUMBER DEFAULT NULL,
300     x_last_update_date IN DATE DEFAULT NULL,
301     x_last_updated_by IN NUMBER DEFAULT NULL,
302     x_last_update_login IN NUMBER DEFAULT NULL
303   ) AS
304   BEGIN
305 
306     Set_Column_Values (
307       p_action,
308       x_rowid,
309       x_course_cd,
310       x_crv_version_number,
311       x_yr_num,
312       x_effective_start_dt,
313       x_unit_cd,
314       x_uv_version_number,
315       x_creation_date,
316       x_created_by,
317       x_last_update_date,
318       x_last_updated_by,
319       x_last_update_login
320     );
321 
322     IF (p_action = 'INSERT') THEN
323       -- Call all the procedures related to Before Insert.
324       BeforeRowInsertUpdateDelete1 ( p_inserting => TRUE );
325 	IF Get_PK_For_Validation (
326       new_references.course_cd ,
327       new_references.crv_version_number ,
328       new_references.yr_num ,
329       new_references.effective_start_dt ,
330       new_references.unit_cd ,
331       new_references.uv_version_number) THEN
332 	   Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
333 	   IGS_GE_MSG_STACK.ADD;
334          App_Exception.Raise_Exception;
335 	END IF;
336       Check_Constraints;
337       Check_Parent_Existance;
338     ELSIF (p_action = 'UPDATE') THEN
339       -- Call all the procedures related to Before Update.
340       BeforeRowInsertUpdateDelete1 ( p_updating => TRUE );
341       Check_Constraints;
342       Check_Parent_Existance;
343     ELSIF (p_action = 'DELETE') THEN
344       -- Call all the procedures related to Before Delete.
345       BeforeRowInsertUpdateDelete1 ( p_deleting => TRUE );
346     ELSIF (p_action = 'VALIDATE_INSERT') THEN
347 	IF  Get_PK_For_Validation (
348       new_references.course_cd ,
349       new_references.crv_version_number ,
350       new_references.yr_num ,
351       new_references.effective_start_dt ,
352       new_references.unit_cd ,
353       new_references.uv_version_number) THEN
354 	    Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
355 	    IGS_GE_MSG_STACK.ADD;
356 	    App_Exception.Raise_Exception;
357 	END IF;
358 	Check_Constraints;
359     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
360 	Check_Constraints;
361     END IF;
362 
363   END Before_DML;
364 
365   PROCEDURE After_DML (
366     p_action IN VARCHAR2,
367     x_rowid IN VARCHAR2
368   ) AS
369   BEGIN
370 
371     l_rowid := x_rowid;
372 
373   END After_DML;
374 
375 procedure INSERT_ROW (
376   X_ROWID in out NOCOPY VARCHAR2,
377   X_COURSE_CD in VARCHAR2,
378   X_CRV_VERSION_NUMBER in NUMBER,
379   X_EFFECTIVE_START_DT in DATE,
380   X_YR_NUM in NUMBER,
381   X_UV_VERSION_NUMBER in NUMBER,
382   X_UNIT_CD in VARCHAR2,
383   X_MODE in VARCHAR2 default 'R'
384   ) AS
385     cursor C is select ROWID from IGS_PS_ANL_LOAD_U_LN
386       where COURSE_CD = X_COURSE_CD
387       and CRV_VERSION_NUMBER = X_CRV_VERSION_NUMBER
388       and EFFECTIVE_START_DT = X_EFFECTIVE_START_DT
389       and YR_NUM = X_YR_NUM
390       and UV_VERSION_NUMBER = X_UV_VERSION_NUMBER
391       and UNIT_CD = X_UNIT_CD;
392     X_LAST_UPDATE_DATE DATE;
393     X_LAST_UPDATED_BY NUMBER;
394     X_LAST_UPDATE_LOGIN NUMBER;
395 begin
396   X_LAST_UPDATE_DATE := SYSDATE;
397   if(X_MODE = 'I') then
398     X_LAST_UPDATED_BY := 1;
399     X_LAST_UPDATE_LOGIN := 0;
400   elsif (X_MODE = 'R') then
401     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
402     if X_LAST_UPDATED_BY is NULL then
403       X_LAST_UPDATED_BY := -1;
404     end if;
405     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
406     if X_LAST_UPDATE_LOGIN is NULL then
407       X_LAST_UPDATE_LOGIN := -1;
408     end if;
409   else
410     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
411     IGS_GE_MSG_STACK.ADD;
412     app_exception.raise_exception;
413   end if;
414 
415 Before_DML (
416     p_action => 'INSERT',
417     x_rowid => X_ROWID,
418     x_course_cd => X_COURSE_CD,
419     x_crv_version_number => X_CRV_VERSION_NUMBER,
420     x_yr_num => X_YR_NUM,
421     x_effective_start_dt => X_EFFECTIVE_START_DT,
422     x_unit_cd => X_UNIT_CD,
423     x_uv_version_number => X_UV_VERSION_NUMBER,
424     x_creation_date => X_LAST_UPDATE_DATE  ,
425     x_created_by => X_LAST_UPDATED_BY ,
426     x_last_update_date => X_LAST_UPDATE_DATE  ,
427     x_last_updated_by => X_LAST_UPDATED_BY ,
428     x_last_update_login => X_LAST_UPDATE_LOGIN
429  );
430 
431   insert into IGS_PS_ANL_LOAD_U_LN (
432     COURSE_CD,
433     CRV_VERSION_NUMBER,
434     YR_NUM,
435     EFFECTIVE_START_DT,
436     UNIT_CD,
437     UV_VERSION_NUMBER,
438     CREATION_DATE,
439     CREATED_BY,
440     LAST_UPDATE_DATE,
441     LAST_UPDATED_BY,
442     LAST_UPDATE_LOGIN
443   ) values (
444     NEW_REFERENCES.COURSE_CD,
445     NEW_REFERENCES.CRV_VERSION_NUMBER,
446     NEW_REFERENCES.YR_NUM,
447     NEW_REFERENCES.EFFECTIVE_START_DT,
448     NEW_REFERENCES.UNIT_CD,
449     NEW_REFERENCES.UV_VERSION_NUMBER,
450     X_LAST_UPDATE_DATE,
451     X_LAST_UPDATED_BY,
452     X_LAST_UPDATE_DATE,
453     X_LAST_UPDATED_BY,
454     X_LAST_UPDATE_LOGIN
455   );
456 
457   open c;
458   fetch c into X_ROWID;
459   if (c%notfound) then
460     close c;
461     raise no_data_found;
462   end if;
463   close c;
464 
465 After_DML (
466 	p_action => 'INSERT',
467 	x_rowid => X_ROWID
468 );
469 
470 end INSERT_ROW;
471 
472 procedure LOCK_ROW (
473   X_ROWID IN VARCHAR2,
474   X_COURSE_CD in VARCHAR2,
475   X_CRV_VERSION_NUMBER in NUMBER,
476   X_EFFECTIVE_START_DT in DATE,
477   X_YR_NUM in NUMBER,
478   X_UV_VERSION_NUMBER in NUMBER,
479   X_UNIT_CD in VARCHAR2
480 ) AS
481   cursor c1 is select ROWID
482     from IGS_PS_ANL_LOAD_U_LN
483     where ROWID = X_ROWID
484     for update nowait;
485   tlinfo c1%rowtype;
486 
487 begin
488   open c1;
489   fetch c1 into tlinfo;
490   if (c1%notfound) then
491     close c1;
492     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
493     IGS_GE_MSG_STACK.ADD;
494     app_exception.raise_exception;
495     return;
496   end if;
497   close c1;
498 
499   return;
500 end LOCK_ROW;
501 
502 procedure DELETE_ROW (
503   X_ROWID in VARCHAR2
504 ) AS
505 begin
506 
507 Before_DML (
508 	p_action => 'DELETE',
509 	x_rowid => X_ROWID
510 );
511 
512   delete from IGS_PS_ANL_LOAD_U_LN
513   where ROWID = X_ROWID;
514   if (sql%notfound) then
515     raise no_data_found;
516   end if;
517 
518 After_DML (
519 	p_action => 'DELETE',
520 	x_rowid => X_ROWID
521 );
522 
523 end DELETE_ROW;
524 
525 end IGS_PS_ANL_LOAD_U_LN_PKG;