DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_UNIT_VER_NOTE_PKG

Source


1 package body IGS_PS_UNIT_VER_NOTE_PKG as
2 /* $Header: IGSPI94B.pls 115.3 2002/11/29 02:42:57 nsidana ship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_PS_UNIT_VER_NOTE%RowType;
5   new_references IGS_PS_UNIT_VER_NOTE%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_unit_cd IN VARCHAR2 DEFAULT NULL,
11     x_version_number IN NUMBER DEFAULT NULL,
12     x_reference_number IN NUMBER DEFAULT NULL,
13     x_crs_note_type 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_PS_UNIT_VER_NOTE
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.unit_cd := x_unit_cd;
45     new_references.version_number := x_version_number;
46     new_references.reference_number := x_reference_number;
47     new_references.crs_note_type := x_crs_note_type;
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 PROCEDURE Check_Constraints(
62 				Column_Name 	IN	VARCHAR2	DEFAULT NULL,
63 				Column_Value 	IN	VARCHAR2	DEFAULT NULL)
64 AS
65 BEGIN
66 
67 	IF Column_Name IS NULL Then
68 		NULL;
69 	ELSIF Upper(Column_Name)='CRS_NOTE_TYPE' Then
70 		New_References.Crs_Note_Type := Column_Value;
71 	ELSIF Upper(Column_Name)='UNIT_CD' Then
72 		New_References.Unit_Cd := Column_Value;
73 	END IF;
74 
75 	IF Upper(Column_Name)='CRS_NOTE_TYPE' OR Column_Name IS NULL Then
76 		IF New_References.Crs_Note_Type <> UPPER(New_References.Crs_Note_Type) Then
77 			        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
78       IGS_GE_MSG_STACK.ADD;
79 			        App_Exception.Raise_Exception;
80 		END IF;
81 	END IF;
82 
83 
84 	IF Upper(Column_Name)='UNIT_CD' OR Column_Name IS NULL Then
85 		IF New_References.Unit_Cd <> UPPER(New_References.Unit_CD) Then
86 			        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
87       IGS_GE_MSG_STACK.ADD;
88 			        App_Exception.Raise_Exception;
89 		END IF;
90 	END IF;
91 
92 END Check_Constraints;
93 
94   PROCEDURE Check_Parent_Existance AS
95   BEGIN
96 
97     IF (((old_references.crs_note_type = new_references.crs_note_type)) OR
98         ((new_references.crs_note_type IS NULL))) THEN
99       NULL;
100     ELSE
101       IF NOT IGS_PS_NOTE_TYPE_PKG.Get_PK_For_Validation (
102         new_references.crs_note_type) THEN
103 				  Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
104       IGS_GE_MSG_STACK.ADD;
105 			        App_Exception.Raise_Exception;
106 	END IF;
107 
108     END IF;
109 
110     IF (((old_references.reference_number = new_references.reference_number)) OR
111         ((new_references.reference_number IS NULL))) THEN
112       NULL;
113     ELSE
114       IF NOT IGS_GE_NOTE_PKG.Get_PK_For_Validation (
115         new_references.reference_number) THEN
116 				  Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
117       IGS_GE_MSG_STACK.ADD;
118 			        App_Exception.Raise_Exception;
119 	END IF;
120 
121 
122     END IF;
123 
124     IF (((old_references.unit_cd = new_references.unit_cd) AND
125          (old_references.version_number = new_references.version_number)) OR
126         ((new_references.unit_cd IS NULL) OR
127          (new_references.version_number IS NULL))) THEN
128       NULL;
129     ELSE
130       IF NOT IGS_PS_UNIT_VER_PKG.Get_PK_For_Validation (
131         new_references.unit_cd,
132         new_references.version_number) THEN
133 				  Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
134       IGS_GE_MSG_STACK.ADD;
135 			        App_Exception.Raise_Exception;
136 	END IF;
137 
138 
139     END IF;
140 
141   END Check_Parent_Existance;
142 
143   FUNCTION Get_PK_For_Validation (
144     x_unit_cd IN VARCHAR2,
145     x_version_number IN NUMBER,
146     x_reference_number IN NUMBER
147     ) RETURN BOOLEAN AS
148 
149     CURSOR cur_rowid IS
150       SELECT   rowid
151       FROM     IGS_PS_UNIT_VER_NOTE
152       WHERE    unit_cd = x_unit_cd
153       AND      version_number = x_version_number
154       AND      reference_number = x_reference_number
155       FOR UPDATE NOWAIT;
156 
157     lv_rowid cur_rowid%RowType;
158 
159   BEGIN
160 
161     Open cur_rowid;
162     Fetch cur_rowid INTO lv_rowid;
163 IF (cur_rowid%FOUND) THEN
164 	Close cur_rowid;
165       Return(TRUE);
166     ELSE
167 	Close cur_rowid;
168       Return(FALSE);
169     END IF;
170 
171   END Get_PK_For_Validation;
172 
173   PROCEDURE GET_FK_IGS_PS_NOTE_TYPE (
174     x_crs_note_type IN VARCHAR2
175     ) AS
176 
177     CURSOR cur_rowid IS
178       SELECT   rowid
179       FROM     IGS_PS_UNIT_VER_NOTE
180       WHERE    crs_note_type = x_crs_note_type ;
181 
182     lv_rowid cur_rowid%RowType;
183 
184   BEGIN
185 
186     Open cur_rowid;
187     Fetch cur_rowid INTO lv_rowid;
188     IF (cur_rowid%FOUND) THEN
189 	Close cur_rowid;
190       Fnd_Message.Set_Name ('IGS', 'IGS_PS_UVN_CNT_FK');
191       IGS_GE_MSG_STACK.ADD;
192       App_Exception.Raise_Exception;
193       Return;
194     END IF;
195     Close cur_rowid;
196 
197   END GET_FK_IGS_PS_NOTE_TYPE;
198 
199   PROCEDURE GET_FK_IGS_GE_NOTE (
200     x_reference_number IN NUMBER
201     ) AS
202 
203     CURSOR cur_rowid IS
204       SELECT   rowid
205       FROM     IGS_PS_UNIT_VER_NOTE
206       WHERE    reference_number = x_reference_number ;
207 
208     lv_rowid cur_rowid%RowType;
209 
210   BEGIN
211 
212     Open cur_rowid;
213     Fetch cur_rowid INTO lv_rowid;
214     IF (cur_rowid%FOUND) THEN
215 	Close cur_rowid;
216       Fnd_Message.Set_Name ('IGS', 'IGS_PS_UVN_NOTE_FK');
217       IGS_GE_MSG_STACK.ADD;
218       App_Exception.Raise_Exception;
219       Return;
220     END IF;
221     Close cur_rowid;
222 
223   END GET_FK_IGS_GE_NOTE;
224 
225   PROCEDURE GET_FK_IGS_PS_UNIT_VER (
226     x_unit_cd IN VARCHAR2,
227     x_version_number IN NUMBER
228     ) AS
229 
230     CURSOR cur_rowid IS
231       SELECT   rowid
232       FROM     IGS_PS_UNIT_VER_NOTE
233       WHERE    unit_cd = x_unit_cd
234       AND      version_number = x_version_number ;
235 
236     lv_rowid cur_rowid%RowType;
237 
238   BEGIN
239 
240     Open cur_rowid;
241     Fetch cur_rowid INTO lv_rowid;
242     IF (cur_rowid%FOUND) THEN
243 	Close cur_rowid;
244       Fnd_Message.Set_Name ('IGS', 'IGS_PS_UVN_UV_FK');
245       IGS_GE_MSG_STACK.ADD;
246       App_Exception.Raise_Exception;
247       Return;
248     END IF;
249     Close cur_rowid;
250 
251   END GET_FK_IGS_PS_UNIT_VER;
252 
253   PROCEDURE Before_DML (
254     p_action IN VARCHAR2,
255     x_rowid IN VARCHAR2 DEFAULT NULL,
256     x_unit_cd IN VARCHAR2 DEFAULT NULL,
257     x_version_number IN NUMBER DEFAULT NULL,
258     x_reference_number IN NUMBER DEFAULT NULL,
259     x_crs_note_type IN VARCHAR2 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   ) AS
266   BEGIN
267 
268     Set_Column_Values (
269       p_action,
270       x_rowid,
271       x_unit_cd,
272       x_version_number,
273       x_reference_number,
274       x_crs_note_type,
275       x_creation_date,
276       x_created_by,
277       x_last_update_date,
278       x_last_updated_by,
279       x_last_update_login
280     );
281 
282     IF (p_action = 'INSERT') THEN
283       -- Call all the procedures related to Before Insert.
284 	   IF Get_PK_For_Validation (New_References.unit_cd,
285 					    New_References.version_number,
286 					    New_References.reference_number) THEN
287 		      Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
288       IGS_GE_MSG_STACK.ADD;
289 		      App_Exception.Raise_Exception;
290 	   END IF;
291 	   Check_Constraints;
292 	  Check_Parent_Existance;
293     ELSIF (p_action = 'UPDATE') THEN
294       -- Call all the procedures related to Before Update.
295       Check_Constraints;
296       Check_Parent_Existance;
297 
298 ELSIF (p_action = 'VALIDATE_INSERT') THEN
299 	   IF Get_PK_For_Validation (New_References.unit_cd,
300 					    New_References.version_number,
301 					    New_References.reference_number) THEN
302 		      Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
303       IGS_GE_MSG_STACK.ADD;
304 		      App_Exception.Raise_Exception;
305 	   END IF;
306 	   Check_Constraints;
307    ELSIF (p_action = 'VALIDATE_UPDATE') THEN
308 	   Check_Constraints;
309 
310     END IF;
311 
312   END Before_DML;
313 
314   PROCEDURE After_DML (
315     p_action IN VARCHAR2,
316     x_rowid IN VARCHAR2
317   ) AS
318   BEGIN
319 
320     l_rowid := x_rowid;
321 
322 
323   END After_DML;
324 
325 procedure INSERT_ROW (
326   X_ROWID in out NOCOPY VARCHAR2,
327   X_UNIT_CD in VARCHAR2,
328   X_REFERENCE_NUMBER in NUMBER,
329   X_VERSION_NUMBER in NUMBER,
330   X_CRS_NOTE_TYPE in VARCHAR2,
331   X_MODE in VARCHAR2 default 'R'
332   ) AS
333     cursor C is select ROWID from IGS_PS_UNIT_VER_NOTE
334       where UNIT_CD = X_UNIT_CD
335       and REFERENCE_NUMBER = X_REFERENCE_NUMBER
336       and VERSION_NUMBER = X_VERSION_NUMBER;
337     X_LAST_UPDATE_DATE DATE;
338     X_LAST_UPDATED_BY NUMBER;
339     X_LAST_UPDATE_LOGIN NUMBER;
340 begin
341   X_LAST_UPDATE_DATE := SYSDATE;
342   if(X_MODE = 'I') then
343     X_LAST_UPDATED_BY := 1;
344     X_LAST_UPDATE_LOGIN := 0;
345   elsif (X_MODE = 'R') then
346     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
347     if X_LAST_UPDATED_BY is NULL then
348       X_LAST_UPDATED_BY := -1;
349     end if;
350     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
351     if X_LAST_UPDATE_LOGIN is NULL then
352       X_LAST_UPDATE_LOGIN := -1;
353     end if;
354   else
355     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
356       IGS_GE_MSG_STACK.ADD;
357     app_exception.raise_exception;
358   end if;
359 
360   Before_DML(
361   p_action => 'INSERT',
362   x_rowid => X_ROWID,
363   x_unit_cd => X_UNIT_CD,
364   x_reference_number => X_REFERENCE_NUMBER,
365   x_version_number => X_VERSION_NUMBER,
366   x_crs_note_type => X_CRS_NOTE_TYPE,
367   x_creation_date => X_LAST_UPDATE_DATE,
368   x_created_by => X_LAST_UPDATED_BY,
369   x_last_update_date => X_LAST_UPDATE_DATE,
370   x_last_updated_by => X_LAST_UPDATED_BY,
371   x_last_update_login => X_LAST_UPDATE_LOGIN
372   );
373 
374   insert into IGS_PS_UNIT_VER_NOTE (
375     UNIT_CD,
376     VERSION_NUMBER,
377     REFERENCE_NUMBER,
378     CRS_NOTE_TYPE,
379     CREATION_DATE,
380     CREATED_BY,
381     LAST_UPDATE_DATE,
382     LAST_UPDATED_BY,
383     LAST_UPDATE_LOGIN
384   ) values (
385     NEW_REFERENCES.UNIT_CD,
386     NEW_REFERENCES.VERSION_NUMBER,
387     NEW_REFERENCES.REFERENCE_NUMBER,
388     NEW_REFERENCES.CRS_NOTE_TYPE,
389     X_LAST_UPDATE_DATE,
390     X_LAST_UPDATED_BY,
391     X_LAST_UPDATE_DATE,
392     X_LAST_UPDATED_BY,
393     X_LAST_UPDATE_LOGIN
394   );
395 
396   open c;
397   fetch c into X_ROWID;
398   if (c%notfound) then
399     close c;
400     raise no_data_found;
401   end if;
402   close c;
403   After_DML (
404      p_action => 'INSERT',
405      x_rowid => X_ROWID
406     );
407 
408 end INSERT_ROW;
409 
410 procedure LOCK_ROW (
411   X_ROWID in VARCHAR2,
412   X_UNIT_CD in VARCHAR2,
413   X_REFERENCE_NUMBER in NUMBER,
414   X_VERSION_NUMBER in NUMBER,
415   X_CRS_NOTE_TYPE in VARCHAR2
416 ) AS
417   cursor c1 is select
418       CRS_NOTE_TYPE
419     from IGS_PS_UNIT_VER_NOTE
420     where ROWID = X_ROWID for update nowait;
421   tlinfo c1%rowtype;
422 
423 begin
424   open c1;
425   fetch c1 into tlinfo;
426   if (c1%notfound) then
427 	close c1;
428     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
429       IGS_GE_MSG_STACK.ADD;
430     app_exception.raise_exception;
431     return;
432   end if;
433   close c1;
434 
435   if ( (tlinfo.CRS_NOTE_TYPE = X_CRS_NOTE_TYPE)
436   ) then
437     null;
438   else
439     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
440       IGS_GE_MSG_STACK.ADD;
441     app_exception.raise_exception;
442   end if;
443   return;
444 end LOCK_ROW;
445 
446 procedure UPDATE_ROW (
447   X_ROWID in VARCHAR2,
448   X_UNIT_CD in VARCHAR2,
449   X_REFERENCE_NUMBER in NUMBER,
450   X_VERSION_NUMBER in NUMBER,
451   X_CRS_NOTE_TYPE in VARCHAR2,
452   X_MODE in VARCHAR2 default 'R'
453   ) AS
454     X_LAST_UPDATE_DATE DATE;
455     X_LAST_UPDATED_BY NUMBER;
456     X_LAST_UPDATE_LOGIN NUMBER;
457 begin
458   X_LAST_UPDATE_DATE := SYSDATE;
459   if(X_MODE = 'I') then
460     X_LAST_UPDATED_BY := 1;
461     X_LAST_UPDATE_LOGIN := 0;
462   elsif (X_MODE = 'R') then
463     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
464     if X_LAST_UPDATED_BY is NULL then
465       X_LAST_UPDATED_BY := -1;
466     end if;
467     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
468     if X_LAST_UPDATE_LOGIN is NULL then
469       X_LAST_UPDATE_LOGIN := -1;
470     end if;
471   else
472     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
473       IGS_GE_MSG_STACK.ADD;
474     app_exception.raise_exception;
475   end if;
476   Before_DML(
477   p_action => 'UPDATE',
478   x_rowid => X_ROWID,
479   x_unit_cd => X_UNIT_CD,
480   x_reference_number => X_REFERENCE_NUMBER,
481   x_version_number => X_VERSION_NUMBER,
482   x_crs_note_type => X_CRS_NOTE_TYPE,
483   x_creation_date => X_LAST_UPDATE_DATE,
484   x_created_by => X_LAST_UPDATED_BY,
485   x_last_update_date => X_LAST_UPDATE_DATE,
486   x_last_updated_by => X_LAST_UPDATED_BY,
487   x_last_update_login => X_LAST_UPDATE_LOGIN
488   );
489   update IGS_PS_UNIT_VER_NOTE set
490     CRS_NOTE_TYPE = NEW_REFERENCES.CRS_NOTE_TYPE,
491     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
492     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
493     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
494   where ROWID = X_ROWID
495   ;
496   if (sql%notfound) then
497     raise no_data_found;
498   end if;
499   After_DML (
500      p_action => 'UPDATE',
501      x_rowid => X_ROWID
502     );
503 end UPDATE_ROW;
504 
505 procedure ADD_ROW (
506   X_ROWID in out NOCOPY VARCHAR2,
507   X_UNIT_CD in VARCHAR2,
508   X_REFERENCE_NUMBER in NUMBER,
509   X_VERSION_NUMBER in NUMBER,
510   X_CRS_NOTE_TYPE in VARCHAR2,
511   X_MODE in VARCHAR2 default 'R'
512   ) AS
513   cursor c1 is select rowid from IGS_PS_UNIT_VER_NOTE
514      where UNIT_CD = X_UNIT_CD
515      and REFERENCE_NUMBER = X_REFERENCE_NUMBER
516      and VERSION_NUMBER = X_VERSION_NUMBER
517   ;
518 begin
519   open c1;
520   fetch c1 into X_ROWID;
521   if (c1%notfound) then
522     close c1;
523     INSERT_ROW (
524      X_ROWID,
525      X_UNIT_CD,
526      X_REFERENCE_NUMBER,
527      X_VERSION_NUMBER,
528      X_CRS_NOTE_TYPE,
529      X_MODE);
530     return;
531   end if;
532   close c1;
533   UPDATE_ROW (
534    X_ROWID,
535    X_UNIT_CD,
536    X_REFERENCE_NUMBER,
537    X_VERSION_NUMBER,
538    X_CRS_NOTE_TYPE,
539    X_MODE);
540 end ADD_ROW;
541 
542 procedure DELETE_ROW (
543  X_ROWID in VARCHAR2
544 ) AS
545 begin
546   Before_DML (
547      p_action => 'DELETE',
548      x_rowid => X_ROWID
549     );
550   delete from IGS_PS_UNIT_VER_NOTE
551   where ROWID = X_ROWID;
552   if (sql%notfound) then
553     raise no_data_found;
554   end if;
555   After_DML (
556      p_action => 'DELETE',
557      x_rowid => X_ROWID
558     );
559 
560 end DELETE_ROW;
561 
562 end IGS_PS_UNIT_VER_NOTE_PKG;