DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_UNIT_DISC_CRT_PKG

Source


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