DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_RU_LOV_PKG

Source


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