DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_PRCS_CAT_LTR_PKG

Source


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