DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_GOVT_TYPE_PKG

Source


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