[Home] [Help]
PACKAGE BODY: APPS.GMI_WF_LOT_CM
Source
1 PACKAGE BODY gmi_wf_lot_cm AS
2 /* $Header: gmiltcmb.pls 120.1 2005/10/03 12:09:47 jsrivast noship $ */
3
4 PROCEDURE init_wf IS
5
6 CURSOR ic_lots_mst_cursor IS
7 SELECT lot_id, lot_no , sublot_no ,expire_date ,
8 retest_date , item_id , created_by
9 FROM ic_lots_mst
10 WHERE delete_mark = 0 AND inactive_ind = 0
11 FOR UPDATE; -- table is NOT updated, see NOTES section above
12
13 l_lot_ctl ic_item_mst.lot_ctl%TYPE ;
14 l_grade_ctl ic_item_mst.grade_ctl%TYPE ;
15
16
17 l_date_at_start DATE ;
18 l_notify_date DATE ;
19
20
21 l_retest_interval NUMBER(3);
22 l_expiry_interval NUMBER(3);
23 l_retest_interval_from_tab NUMBER(3);
24 l_expiry_interval_from_tab NUMBER(3);
25 l_default_retest_interval NUMBER(3) := 7;
26 l_default_expiry_interval NUMBER(3) := 7;
27
28 l_date_now DATE ;
29
30 BEGIN
31
32 SELECT SYSDATE INTO l_date_at_start FROM DUAL ;
33
34
35 IF (FND_PROFILE.DEFINED ('WF$RETEST_INTERVAL')) THEN
36 l_retest_interval := FND_PROFILE.VALUE ('WF$RETEST_INTERVAL');
37 END IF;
38
39 IF l_retest_interval = NULL THEN
40 l_retest_interval := l_default_retest_interval;
41 END IF;
42
43 IF (FND_PROFILE.DEFINED ('WF$EXPIRY_INTERVAL')) THEN
44 l_expiry_interval := FND_PROFILE.VALUE ('WF$EXPIRY_INTERVAL');
45 END IF;
46
47 IF l_expiry_interval = NULL THEN
48 l_expiry_interval := l_default_expiry_interval;
49 END IF;
50
51 FOR ic_lots_mst_record IN ic_lots_mst_cursor
52 LOOP
53
54 SELECT lot_ctl,grade_ctl
55 INTO l_lot_ctl,l_grade_ctl
56 FROM ic_item_mst
57 WHERE item_id = ic_lots_mst_record.item_id
58 AND delete_mark = 0 ;
59
60
61 IF (l_lot_ctl = 1) and (l_grade_ctl = 1) THEN
62
63
64 SELECT nvl(lot_retest_note,0),nvl(lot_expiry_note,0)
65 INTO l_retest_interval_from_tab, l_expiry_interval_from_tab
66 FROM sy_wf_item_roles
67 WHERE item_id = ic_lots_mst_record.item_id;
68
69 IF l_retest_interval_from_tab <> 0 then
70 l_retest_interval:= l_retest_interval_from_tab;
71 END IF;
72 IF l_expiry_interval_from_tab <> 0 then
73 l_expiry_interval:= l_expiry_interval_from_tab;
74 END IF;
75
76
77 IF ( ic_lots_mst_record.retest_date IS NOT NULL ) THEN
78 l_notify_date := ( ic_lots_mst_record.retest_date - l_retest_interval ) ;
79 IF ( l_date_at_start >= l_notify_date ) THEN
80 gmi_wf_lot_retest.init_wf (
81 ic_lots_mst_record.lot_id ,
82 ic_lots_mst_record.lot_no ,
83 ic_lots_mst_record.sublot_no ,
84 ic_lots_mst_record.retest_date ,
85 ic_lots_mst_record.item_id ,
86 ic_lots_mst_record.created_by);
87
88 END IF ;
89
90 END IF;
91
92 IF ( ic_lots_mst_record.expire_date IS NOT NULL ) THEN
93 l_notify_date := ( ic_lots_mst_record.expire_date - l_expiry_interval ) ;
94
95 IF ( l_date_at_start >= l_notify_date ) THEN
96
97 gmi_wf_lot_expiry.init_wf (
98 ic_lots_mst_record.lot_id ,
99 ic_lots_mst_record.lot_no ,
100 ic_lots_mst_record.sublot_no ,
101 ic_lots_mst_record.expire_date ,
102 ic_lots_mst_record.item_id ,
103 ic_lots_mst_record.created_by);
104 END IF ;
105
106 END IF ;
107
108 END IF ;
109
110 COMMIT ;
111
112 END LOOP ;
113
114 END init_wf;
115
116 END gmi_wf_lot_cm;