[Home] [Help]
PACKAGE BODY: APPS.AS_LEAD_ABANDON_WF
Source
1 PACKAGE BODY AS_LEAD_ABANDON_WF AS
2 /* $Header: asxslabb.pls 115.3 2002/11/06 00:49:18 appldev ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AS_LEAD_ABANDON_WF';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asxslabb.pls';
6
7
8 PROCEDURE StartProcess(
9 p_sales_lead_id in INTEGER,
10 p_assigned_resource_id in INTEGER,
11 x_return_status in out VARCHAR2,
12 x_item_type out VARCHAR2,
13 x_item_key out VARCHAR2 )
14 IS
15 Item_Type VARCHAR2(8) := 'ASXLABDW' ;
16 Item_Key VARCHAR2(30);
17 l_status VARCHAR2(80);
18 l_result VARCHAR2(80);
19 l_sequence VARCHAR2(240);
20 l_seqnum NUMBER(38);
21 workflowprocess VARCHAR2(30) := 'LEAD_ABANDON_PROCESS';
22
23 BEGIN
24 -- dbms_output.put_line('AS_LEAD_ABANDON_WF: Startprocess begin'||Item_Key);
25
26 -- Start Process :
27 -- If workflowprocess is passed, it will be run.
28 -- If workflowprocess is NOT passed, the selector FUNCTION
29 -- defined in the item type will determine which process to run.
30
31 SELECT TO_CHAR(AS_WORKFLOW_KEYS_S.nextval)
32 INTO Item_Key
33 FROM dual;
34
35 -- dbms_output.put_line('Startprocess: '||Item_Key);
36
37 wf_engine.CreateProcess(
38 ItemType => Item_Type,
39 ItemKey => Item_Key,
40 process => Workflowprocess);
41
42 -- Initialize workflow item attributes
43 --
44 wf_engine.SetItemAttrNumber (
45 itemtype => Item_Type,
46 itemkey => Item_Key,
47 aname => 'SALES_LEAD_ID',
48 avalue => p_sales_lead_id);
49
50 wf_engine.SetItemAttrNumber (
51 itemtype => Item_Type,
52 itemkey => Item_Key,
53 aname => 'ASSIGN_ID',
54 avalue => p_assigned_resource_id);
55
56 wf_engine.AddItemAttr (
57 itemtype => Item_Type,
58 itemkey => Item_Key,
59 aname => 'ORIG_RESOURCE_ID',
60 number_value => p_assigned_resource_id);
61
62 wf_engine.AddItemAttr (
63 itemtype => Item_Type,
64 itemkey => Item_Key,
65 aname => 'RESOURCE_ID',
66 number_value => p_assigned_resource_id);
67
68 wf_engine.AddItemAttr (
69 itemtype => Item_Type,
70 itemkey => Item_Key,
71 aname => 'BUSINESS_GROUP_ID',
72 number_value => 0);
73
74 wf_engine.StartProcess (
75 itemtype => Item_Type,
76 itemkey => Item_Key );
77
78 wf_engine.ItemStatus (
79 itemtype => Item_Type,
80 itemkey => Item_Key,
81 status => l_status,
82 result => l_result);
83
84 x_item_type := Item_Type;
85 x_item_key := Item_Key;
86 x_return_status := l_result ;
87
88 -- dbms_output.put_line('AS_LEAD_ABANDON_WF: Startprocess end');
89
90 EXCEPTION
91 when others then
92 wf_core.context(Item_type, 'StartProcess', p_sales_lead_id,
93 Workflowprocess);
94 x_return_status := 'ERROR';
95 raise;
96 END StartProcess;
97
98
99 PROCEDURE GetAbandonTime (
100 itemtype in VARCHAR2,
101 itemkey in VARCHAR2,
102 actid in NUMBER,
103 funcmode in VARCHAR2,
104 result out VARCHAR2 )
105 IS
106 l_abandondays Number := 0 ;
107 wait_mode varchar2(100);
108 wakeup number;
109
110 BEGIN
111
112 -- dbms_output.put_line ('GetAcceptTime '||itemkey);
113 IF funcmode = 'RUN'
114 THEN
115 l_abandondays := fnd_profile.value('AS_AGING_DAYS_ABANDON');
116
117 -- dbms_output.put_line ('Time to Wait: '||l_abandondays);
118
119 wf_engine.SetItemAttrNumber (
120 itemtype ,
121 itemkey ,
122 aname => 'DAYS_TO_ABANDON',
123 avalue => l_abandondays);
124
125 result := 'COMPLETE:';
126 END IF;
127
128 EXCEPTION
129 when others then
130 wf_core.context(Itemtype, 'GetAcceptTime', itemtype, itemkey,
131 to_char(actid),funcmode);
132 raise;
133
134 END GetAbandonTime;
135
136
137 PROCEDURE GetAbandonAction (
138 itemtype in VARCHAR2,
139 itemkey in VARCHAR2,
140 actid in NUMBER,
141 funcmode in VARCHAR2,
142 result out VARCHAR2 )
143 IS
144 l_action VARCHAR2(240);
145
146 BEGIN
147 -- dbms_output.put_line ('GetAbandonAction '||itemkey);
148 IF funcmode = 'RUN' THEN
149 l_action := fnd_profile.value('AS_AGING_ABANDON_ACTIONS');
150 -- dbms_output.put_line ('Decision: '||l_action);
151 IF UPPER(l_action) = 'ABANDON' THEN
152 result := 'COMPLETE:ABANDON';
153 ELSE
154 result := 'COMPLETE:';
155 END IF;
156 END IF ;
157
158 EXCEPTION
159 when others then
160 wf_core.context(Itemtype, 'GetAbandonAction', itemtype, itemkey,
161 to_char(actid),funcmode);
162 raise;
163 END GetAbandonAction;
164
165
166 PROCEDURE GetResourceGroup (
167 itemtype in VARCHAR2,
168 itemkey in VARCHAR2,
169 actid in NUMBER,
170 funcmode in VARCHAR2,
171 result out VARCHAR2 )
172 IS
173 CURSOR c_resourcegroup (resource_id_in number) IS
174 SELECT b.business_group_id
175 FROM jtf_rs_emp_dtls_vl a,
176 per_assignments_x b
177 WHERE a.source_id = b.person_id
178 and b.primary_flag = 'Y'
179 and b.assignment_type = 'E'
180 and a.resource_id = resource_id_in
181 ORDER BY resource_id;
182
183 l_resource_id NUMBER;
184 l_business_group_id NUMBER;
185
186 BEGIN
187 -- dbms_output.put_line('GetResourceGroup: '||itemkey);
188
189 IF funcmode = 'RUN' THEN
190 l_resource_id := wf_engine.GetItemAttrNumber(
191 itemtype => itemtype,
192 itemkey => itemkey,
193 aname => 'RESOURCE_ID' );
194
195 -- dbms_output.put_line ('Resource ID: ' || to_char(l_resource_id));
196
197 OPEN c_resourcegroup (l_resource_id);
198 FETCH c_resourcegroup
199 INTO l_business_group_id;
200 CLOSE c_resourcegroup;
201
202 wf_engine.SetItemAttrNumber(itemtype => itemtype,
203 itemkey => itemkey,
204 aname => 'BUSINESS_GROUP_ID',
205 avalue => l_business_group_id);
206
207 -- dbms_output.put_line('Group ID: '||to_char(l_business_group_id));
208 -- dbms_output.put_line('Resource: '||to_char(l_resource_id));
209
210 result := 'COMPLETE:';
211
212 END IF;
213
214 EXCEPTION
215 when others then
216 wf_core.context(itemtype, 'GetResourceGroup', itemtype, itemkey,
217 to_char(actid),funcmode);
218 result := 'COMPLETE:ERROR';
219 raise;
220 END GetResourceGroup;
221
222 END AS_LEAD_ABANDON_WF;
223