DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_MS_STAT_PKG

Source


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