DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_CAT_PKG

Source


1 package body IGS_PS_CAT_PKG AS
2   /* $Header: IGSPI08B.pls 115.3 2002/11/29 01:54:22 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references IGS_PS_CAT%RowType;
6   new_references IGS_PS_CAT%RowType;
7 
8   PROCEDURE Set_Column_Values (
9     p_action IN VARCHAR2,
10     x_rowid IN VARCHAR2 DEFAULT NULL,
11     x_course_cat IN VARCHAR2 DEFAULT NULL,
12     x_description IN VARCHAR2 DEFAULT NULL,
13     x_closed_ind 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_CAT
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.course_cat := x_course_cat;
45     new_references.description := x_description;
46     new_references.closed_ind := x_closed_ind;
47     IF (p_action = 'UPDATE') THEN
48       new_references.creation_date := old_references.creation_date;
49       new_references.created_by := old_references.created_by;
50     ELSE
51       new_references.creation_date := x_creation_date;
52       new_references.created_by := x_created_by;
53     END IF;
54     new_references.last_update_date := x_last_update_date;
55     new_references.last_updated_by := x_last_updated_by;
56     new_references.last_update_login := x_last_update_login;
57 
58   END Set_Column_Values;
59 
60  PROCEDURE Check_Constraints (
61  Column_Name	IN VARCHAR2	DEFAULT NULL,
62  Column_Value 	IN VARCHAR2	DEFAULT NULL
63  )
64  AS
65  BEGIN
66 
67 	IF column_name is null then
68 	    NULL;
69 	ELSIF upper(Column_name) = 'CLOSED_IND' then
70 	    new_references.closed_ind := column_value;
71 	ELSIF upper(Column_name) = 'COURSE_CAT' then
72 	    new_references.course_cat := column_value;
73      END IF;
74 
75     IF upper(column_name) = 'CLOSED_IND' OR
76     column_name is null Then
77   	IF ( new_references.closed_ind NOT IN ( 'Y' , 'N' ) ) Then
78 	       Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
79 	       IGS_GE_MSG_STACK.ADD;
80              App_Exception.Raise_Exception;
81           END IF;
82       END IF;
83 
84     IF upper(column_name) = 'COURSE_CAT' OR
85     column_name is null Then
86 	   IF ( new_references.course_cat <> UPPER(new_references.course_cat) ) Then
87       	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
88       	 IGS_GE_MSG_STACK.ADD;
89              App_Exception.Raise_Exception;
90           END IF;
91       END IF;
92 
93   END Check_Constraints;
94 
95   PROCEDURE Check_Child_Existance AS
96   BEGIN
97 
98     IGS_PS_CATEGORISE_PKG.GET_FK_IGS_PS_CAT (
99       old_references.course_cat
100       );
101 
102   END Check_Child_Existance;
103 
104   FUNCTION Get_PK_For_Validation (
105     x_course_cat IN VARCHAR2
106     )
107   RETURN BOOLEAN AS
108 
109     CURSOR cur_rowid IS
110       SELECT   rowid
111       FROM     IGS_PS_CAT
112       WHERE    course_cat = x_course_cat
113       FOR UPDATE NOWAIT;
114 
115     lv_rowid cur_rowid%RowType;
116 
117   BEGIN
118 
119     Open cur_rowid;
120     Fetch cur_rowid INTO lv_rowid;
121     IF (cur_rowid%FOUND) THEN
122       Close cur_rowid;
123       Return (TRUE);
124     ELSE
125 	Close cur_rowid;
126       Return (FALSE);
127     END IF;
128 
129   END Get_PK_For_Validation;
130 
131   PROCEDURE Before_DML (
132     p_action IN VARCHAR2,
133     x_rowid IN VARCHAR2 DEFAULT NULL,
134     x_course_cat IN VARCHAR2 DEFAULT NULL,
135     x_description IN VARCHAR2 DEFAULT NULL,
136     x_closed_ind IN VARCHAR2 DEFAULT NULL,
137     x_creation_date IN DATE DEFAULT NULL,
138     x_created_by IN NUMBER DEFAULT NULL,
139     x_last_update_date IN DATE DEFAULT NULL,
140     x_last_updated_by IN NUMBER DEFAULT NULL,
141     x_last_update_login IN NUMBER DEFAULT NULL
142   ) AS
143   BEGIN
144 
145     Set_Column_Values (
146       p_action,
147       x_rowid,
148       x_course_cat,
149       x_description,
150       x_closed_ind,
151       x_creation_date,
152       x_created_by,
153       x_last_update_date,
154       x_last_updated_by,
155       x_last_update_login
156     );
157 
158     IF (p_action = 'INSERT') THEN
159       -- Call all the procedures related to Before Insert.
160 	IF Get_PK_For_Validation (
161 	   new_references.course_cat ) THEN
162 	   Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
163 	   IGS_GE_MSG_STACK.ADD;
164          App_Exception.Raise_Exception;
165 	END IF;
166       Check_Constraints;
167     ELSIF (p_action = 'UPDATE') THEN
168       -- Call all the procedures related to Before Update.
169       Null;
170       Check_Constraints;
171     ELSIF (p_action = 'DELETE') THEN
172       -- Call all the procedures related to Before Delete.
173       Null;
174       Check_Child_Existance;
175     ELSIF (p_action = 'VALIDATE_INSERT') THEN
176 	IF  Get_PK_For_Validation (
177 	new_references.course_cat ) THEN
178 	    Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
179 	     IGS_GE_MSG_STACK.ADD;
180 	    App_Exception.Raise_Exception;
181 	END IF;
182 	Check_Constraints;
183     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
184 	Check_Constraints;
185     ELSIF (p_action = 'VALIDATE_DELETE') THEN
186 	Check_Child_Existance;
187     END IF;
188 
189   END Before_DML;
190 
191   PROCEDURE After_DML (
192     p_action IN VARCHAR2,
193     x_rowid IN VARCHAR2
194   ) AS
195   BEGIN
196 
197     l_rowid := x_rowid;
198 
199 
200   END After_DML;
201 
202 procedure INSERT_ROW (
203   X_ROWID in out NOCOPY VARCHAR2,
204   X_COURSE_CAT in VARCHAR2,
205   X_DESCRIPTION in VARCHAR2,
206   X_CLOSED_IND in VARCHAR2,
207   X_MODE in VARCHAR2 default 'R'
208   ) AS
209     cursor C is select ROWID from IGS_PS_CAT
210       where COURSE_CAT = X_COURSE_CAT;
211     X_LAST_UPDATE_DATE DATE;
212     X_LAST_UPDATED_BY NUMBER;
213     X_LAST_UPDATE_LOGIN NUMBER;
214 begin
215   X_LAST_UPDATE_DATE := SYSDATE;
216   if(X_MODE = 'I') then
217     X_LAST_UPDATED_BY := 1;
218     X_LAST_UPDATE_LOGIN := 0;
219   elsif (X_MODE = 'R') then
220     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
221     if X_LAST_UPDATED_BY is NULL then
222       X_LAST_UPDATED_BY := -1;
223     end if;
224     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
225     if X_LAST_UPDATE_LOGIN is NULL then
226       X_LAST_UPDATE_LOGIN := -1;
227     end if;
228   else
229     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
230     IGS_GE_MSG_STACK.ADD;
231     app_exception.raise_exception;
232   end if;
233 
234 Before_DML (
235     p_action => 'INSERT',
236     x_rowid => X_ROWID,
237     x_course_cat => X_COURSE_CAT,
238     x_description => X_DESCRIPTION ,
239     x_closed_ind => NVL(X_CLOSED_IND,'N'),
240     x_creation_date => X_LAST_UPDATE_DATE  ,
241     x_created_by => X_LAST_UPDATED_BY ,
242     x_last_update_date => X_LAST_UPDATE_DATE  ,
243     x_last_updated_by => X_LAST_UPDATED_BY ,
244     x_last_update_login => X_LAST_UPDATE_LOGIN
245  );
246 
247   insert into IGS_PS_CAT (
248     COURSE_CAT,
249     DESCRIPTION,
250     CLOSED_IND,
251     CREATION_DATE,
252     CREATED_BY,
253     LAST_UPDATE_DATE,
254     LAST_UPDATED_BY,
255     LAST_UPDATE_LOGIN
256   ) values (
257     NEW_REFERENCES.COURSE_CAT,
258     NEW_REFERENCES.DESCRIPTION,
259     NEW_REFERENCES.CLOSED_IND,
260     X_LAST_UPDATE_DATE,
261     X_LAST_UPDATED_BY,
262     X_LAST_UPDATE_DATE,
263     X_LAST_UPDATED_BY,
264     X_LAST_UPDATE_LOGIN
265   );
266 
267   open c;
268   fetch c into X_ROWID;
269   if (c%notfound) then
270     close c;
271     raise no_data_found;
272   end if;
273   close c;
274 
275 After_DML (
276 	p_action => 'INSERT',
277 	x_rowid => X_ROWID
278 );
279 
280 end INSERT_ROW;
281 
282 procedure LOCK_ROW (
283   X_ROWID IN VARCHAR2,
284   X_COURSE_CAT in VARCHAR2,
285   X_DESCRIPTION in VARCHAR2,
286   X_CLOSED_IND in VARCHAR2
287 ) AS
288   cursor c1 is select
289       DESCRIPTION,
290       CLOSED_IND
291     from IGS_PS_CAT
292     where ROWID = X_ROWID
293     for update nowait;
294   tlinfo c1%rowtype;
295 
296 begin
297   open c1;
298   fetch c1 into tlinfo;
299   if (c1%notfound) then
300     close c1;
301     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
302     IGS_GE_MSG_STACK.ADD;
303     app_exception.raise_exception;
304     return;
305   end if;
306   close c1;
307 
308   if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
309       AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
310   ) then
311     null;
312   else
313     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
314     IGS_GE_MSG_STACK.ADD;
315     app_exception.raise_exception;
316   end if;
317   return;
318 end LOCK_ROW;
319 
320 procedure UPDATE_ROW (
321   X_ROWID IN VARCHAR2,
322   X_COURSE_CAT in VARCHAR2,
323   X_DESCRIPTION in VARCHAR2,
324   X_CLOSED_IND in VARCHAR2,
325   X_MODE in VARCHAR2 default 'R'
326   ) AS
327     X_LAST_UPDATE_DATE DATE;
328     X_LAST_UPDATED_BY NUMBER;
329     X_LAST_UPDATE_LOGIN NUMBER;
330 begin
331   X_LAST_UPDATE_DATE := SYSDATE;
332   if(X_MODE = 'I') then
333     X_LAST_UPDATED_BY := 1;
334     X_LAST_UPDATE_LOGIN := 0;
335   elsif (X_MODE = 'R') then
336     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
337     if X_LAST_UPDATED_BY is NULL then
338       X_LAST_UPDATED_BY := -1;
339     end if;
340     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
341     if X_LAST_UPDATE_LOGIN is NULL then
342       X_LAST_UPDATE_LOGIN := -1;
343     end if;
344   else
345     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
346     IGS_GE_MSG_STACK.ADD;
347     app_exception.raise_exception;
348   end if;
349 
350 Before_DML (
351     p_action => 'UPDATE',
352     x_rowid => X_ROWID,
353     x_course_cat => X_COURSE_CAT,
354     x_description => X_DESCRIPTION ,
355     x_closed_ind => X_CLOSED_IND,
356     x_creation_date => X_LAST_UPDATE_DATE  ,
357     x_created_by => X_LAST_UPDATED_BY ,
358     x_last_update_date => X_LAST_UPDATE_DATE  ,
359     x_last_updated_by => X_LAST_UPDATED_BY ,
360     x_last_update_login => X_LAST_UPDATE_LOGIN
361  );
362 
363   update IGS_PS_CAT set
364     DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
365     CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
366     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
367     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
368     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
369   where ROWID = X_ROWID
370   ;
371   if (sql%notfound) then
372     raise no_data_found;
373   end if;
374 
375 After_DML (
376 	p_action => 'UPDATE',
377 	x_rowid => X_ROWID
378 );
379 
380 end UPDATE_ROW;
381 
382 procedure ADD_ROW (
383   X_ROWID in out NOCOPY VARCHAR2,
384   X_COURSE_CAT in VARCHAR2,
385   X_DESCRIPTION in VARCHAR2,
386   X_CLOSED_IND in VARCHAR2,
387   X_MODE in VARCHAR2 default 'R'
388   ) AS
389   cursor c1 is select rowid from IGS_PS_CAT
390      where COURSE_CAT = X_COURSE_CAT
391   ;
392 begin
393   open c1;
394   fetch c1 into X_ROWID;
395   if (c1%notfound) then
396     close c1;
397     INSERT_ROW (
398      X_ROWID,
399      X_COURSE_CAT,
400      X_DESCRIPTION,
401      X_CLOSED_IND,
402      X_MODE);
403     return;
404   end if;
405   close c1;
406   UPDATE_ROW (
407    X_ROWID,
408    X_COURSE_CAT,
409    X_DESCRIPTION,
410    X_CLOSED_IND,
411    X_MODE);
412 end ADD_ROW;
413 
414 procedure DELETE_ROW (
415   X_ROWID in VARCHAR2
416 ) AS
417 begin
418 
419 Before_DML (
420 	p_action => 'DELETE',
421 	x_rowid => X_ROWID
422 );
423 
424   delete from IGS_PS_CAT
425   where ROWID = X_ROWID;
426   if (sql%notfound) then
427     raise no_data_found;
428   end if;
429 
430 After_DML (
431 	p_action => 'DELETE',
432 	x_rowid => X_ROWID
433 );
434 
435 end DELETE_ROW;
436 
437 end IGS_PS_CAT_PKG;