[Home] [Help]
PACKAGE BODY: APPS.AS_LEAD_ASSIGN_WF
Source
1 package body AS_LEAD_ASSIGN_WF AS
2 /* $Header: asxlasnb.pls 115.7 2002/11/06 00:43:01 appldev ship $ */
3 --Declarations
4
5
6 PROCEDURE StartProcess(
7 p_sales_lead_id in INTEGER,
8 p_assigned_resource_id in INTEGER,
9 x_return_status in out VARCHAR2,
10 x_item_type out VARCHAR2,
11 x_item_key out VARCHAR2 )
12 IS
13 Item_Type VARCHAR2(8) := 'ASXLDASW' ;
14 Item_Key VARCHAR2(30);
15 l_status VARCHAR2(80);
16 l_result VARCHAR2(80);
17 l_sequence VARCHAR2(240);
18 l_seqnum NUMBER(38);
19 workflowprocess VARCHAR2(30) := 'LEAD_ASSIGNMENT_PROCESS';
20 l_resource_id NUMBER;
21 BEGIN
22 -- Start Process :
23 -- If workflowprocess is passed, it will be run.
24 -- If workflowprocess is NOT passed, the selector FUNCTION
25 -- defined in the item type will determine which process to run.
26
27 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: Startprocess Begin'||item_key);
28
29 SELECT TO_CHAR(AS_WORKFLOW_KEYS_S.nextval) INTO Item_Key FROM dual;
30
31 -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
32 -- 'Startprocess: '||item_key);
33
34 wf_engine.CreateProcess(
35 ItemType => Item_Type,
36 ItemKey => Item_Key,
37 process => Workflowprocess);
38
39 -- Initialize workflow item attributes
40 --
41 wf_engine.SetItemAttrNumber (
42 itemtype => Item_Type,
43 itemkey => Item_Key,
44 aname => 'SALES_LEAD_ID',
45 avalue => p_sales_lead_id);
46
47 wf_engine.SetItemAttrNumber (
48 itemtype => Item_Type,
49 itemkey => Item_Key,
50 aname => 'ASSIGN_ID',
51 avalue => p_assigned_resource_id);
52
53 l_resource_id := wf_engine.GetItemAttrNumber(
54 itemtype => Item_Type,
55 itemkey => Item_Key,
56 aname => 'ASSIGN_ID' );
57 -- dbms_output.put_line('l_resource_id' || l_resource_id);
58
59 wf_engine.SetItemAttrNumber (
60 itemtype => Item_Type,
61 itemkey =>Item_key,
62 aname => 'DAYS_TO_ACCEPT',
63 avalue => 0);
64
65 wf_engine.AddItemAttr(
66 itemtype => Item_Type,
67 itemkey => Item_Key,
68 aname => 'RESOURCE_ID',
69 number_value => 0);
70
71 wf_engine.AddItemAttr(
72 itemtype => Item_Type,
73 itemkey => Item_Key,
74 aname => 'ORIG_RESOURCE_ID',
75 number_value => p_assigned_resource_id);
76
77 wf_engine.AddItemAttr(
78 itemtype => Item_Type,
79 itemkey => Item_Key,
80 aname => 'BUSINESS_GROUP_ID',
81 number_value => 0);
82
83 wf_engine.StartProcess(
84 itemtype => Item_Type,
85 itemkey => Item_Key);
86
87 wf_engine.ItemStatus(
88 itemtype => Item_Type,
89 itemkey => Item_Key,
90 status => l_status,
91 result => l_result);
92
93 x_item_type := Item_Type;
94 x_item_key := Item_Key;
95 x_return_status := l_status;
96
97 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: Startprocess End');
98 EXCEPTION
99 when others then
100 wf_core.context(Item_type, 'StartProcess', p_sales_lead_id,
101 Workflowprocess);
102 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
103 'error in StartProcess');
104 -- dbms_output.put_line('Error in AS_LEAD_ASSIGN_WF: Startprocess ');
105 raise;
106 END StartProcess;
107
108
109 PROCEDURE CheckAssignID(
110 itemtype in VARCHAR2,
111 itemkey in VARCHAR2,
112 actid in NUMBER,
113 funcmode in VARCHAR2,
114 result out VARCHAR2)
115 IS
116 l_resource_id NUMBER;
117
118 BEGIN
119
120 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckAssignID begin');
121 l_resource_id := wf_engine.GetItemAttrNumber(
122 itemtype => itemtype,
123 itemkey => itemkey,
124 aname => 'ASSIGN_ID' );
125
126 -- dbms_output.put_line('l_resource_id: '||l_resource_id);
127 if (l_resource_id is not null) then
128 result := 'COMPLETE:Y';
129 else
130 result := 'COMPLETE:N';
131 end if ;
132
133 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckAssignID end - '||result);
134 EXCEPTION
135 when others then
136 wf_core.context(Itemtype, 'CheckAssignID', itemtype, itemkey,
137 to_char(actid), funcmode);
138 raise;
139
140 END CheckAssignID;
141
142
143 PROCEDURE AssignLead (
144 itemtype in VARCHAR2,
145 itemkey in VARCHAR2,
146 actid in NUMBER,
147 funcmode in VARCHAR2,
148 result out VARCHAR2 )
149 IS
150 CURSOR c_sales_lead(x_sales_lead_id NUMBER) IS
151 SELECT last_update_date,
152 customer_id,
153 address_id,
154 assign_sales_group_id,
155 sales_lead_id
156 FROM as_sales_leads
157 WHERE sales_lead_id = x_sales_lead_id;
158
159 l_sales_lead_id NUMBER;
160 l_resource_id NUMBER;
161 l_sales_lead_rec AS_SALES_LEADS_PUB.sales_lead_rec_type ;
162 l_sales_lead_profile_tbl AS_UTILITY_PUB.Profile_Tbl_Type;
163 l_api_version_number NUMBER := 2.0;
164 l_cnt NUMBER := 0;
165 l_tt NUMBER := 0;
166 l_status_code VARCHAR2(30);
167 l_last_update_date DATE := SYSDATE;
168 l_return_status VARCHAR2(15);
169 l_msg_count NUMBER;
170 l_msg_data VARCHAR2(2000);
171 l_msg_index_out NUMBER;
172
173 BEGIN
174 -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
175 -- 'AssignLead '||itemkey);
176 IF funcmode = 'RUN' then
177 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: AssignLead begin '||itemkey);
178 l_sales_lead_id := wf_engine.GetItemAttrNumber(
179 itemtype => itemtype,
180 itemkey => itemkey,
181 aname => 'SALES_LEAD_ID' );
182
183 l_resource_id := wf_engine.GetItemAttrNumber(
184 itemtype => itemtype,
185 itemkey => itemkey,
186 aname => 'ASSIGN_ID' );
187
188 OPEN c_sales_lead(l_sales_lead_id);
189 FETCH c_sales_lead INTO
190 l_sales_lead_rec.last_update_date,
191 l_sales_lead_rec.customer_id,
192 l_sales_lead_rec.address_id,
193 l_sales_lead_rec.assign_sales_group_id,
194 l_sales_lead_rec.sales_lead_id;
195 CLOSE c_sales_lead;
196
197 l_sales_lead_rec.assign_to_salesforce_id := l_resource_id;
198
199 AS_SALES_LEADS_PUB.update_sales_lead(
200 p_api_version_number => l_api_version_number
201 ,p_init_msg_list => fnd_api.g_false
202 ,p_commit => fnd_api.g_false
203 ,p_validation_level => 0 -- fnd_api.g_valid_level_full
204 ,p_check_access_flag => 'N' -- fnd_api.g_miss_char
205 ,p_admin_flag => fnd_api.g_miss_char
206 ,p_admin_group_id => fnd_api.g_miss_num
207 ,p_identity_salesforce_id => fnd_api.g_miss_num
208 ,p_sales_lead_profile_tbl => l_sales_lead_profile_tbl
209 ,p_sales_lead_rec => l_sales_lead_rec
210 ,x_return_status => l_return_status
211 ,x_msg_count => l_msg_count
212 ,x_msg_data => l_msg_data );
213
214 -- AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
215 -- 'return status: ' || l_return_status );
216
217 FOR j in 1..FND_MSG_PUB.Count_Msg LOOP
218 FND_MSG_PUB.Get(p_msg_index=>j,
219 p_encoded=>'F',
220 p_data=>l_msg_data,
221 p_msg_index_out=>l_msg_index_out);
222 END LOOP;
223
224 if l_return_status = fnd_api.g_ret_sts_success then
225 result := 'COMPLETE:S';
226 else
227 result := 'COMPLETE:ERROR';
228 end if;
229 end if;
230
231 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: AssignLead end');
232 EXCEPTION
233 when others then
234 wf_core.context(Itemtype, 'AssignLead', itemtype, itemkey,
235 to_char(actid), funcmode);
236 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
237 'error in AssignLead');
238 raise;
239
240 END AssignLead;
241
242
243 PROCEDURE GetAcceptTime (
244 itemtype in VARCHAR2,
245 itemkey in VARCHAR2,
246 actid in NUMBER,
247 funcmode in VARCHAR2,
248 result out VARCHAR2 )
249 IS
250 l_acceptdays Number := 0 ;
251 wait_mode varchar2(100);
252 wakeup number;
253
254 BEGIN
255 -- dbms_output.put_line ('GetAcceptTime '||itemkey);
256 IF funcmode = 'RUN' THEN
257 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: GetAcceptTime begin'||itemkey);
258 l_acceptdays := fnd_profile.value('AS_AGING_DAYS_NOACT');
259
260 -- dbms_output.put_line ('Time to Wait: '||l_acceptdays);
261
262 wf_engine.SetItemAttrNumber ( itemtype ,
263 itemkey ,
264 aname => 'DAYS_TO_ACCEPT',
265 avalue => l_acceptdays);
266 result := 'COMPLETE:';
267 END IF;
268
269 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: GetAcceptTime end');
270 EXCEPTION
271 when others then
272 wf_core.context(Itemtype, 'GetAcceptTime', itemtype, itemkey,
273 to_char(actid), funcmode);
274 raise;
275
276 END GetAcceptTime;
277
278
279 PROCEDURE CheckAccepted (
280 itemtype in VARCHAR2,
281 itemkey in VARCHAR2,
282 actid in NUMBER,
283 funcmode in VARCHAR2,
284 result out VARCHAR2 )
285 IS
286 CURSOR c_lead_status (lead_id_in in number) IS
287 SELECT accept_flag
288 FROM as_sales_leads
289 WHERE sales_lead_id = lead_id_in;
290
291 l_accept_flag VARCHAR2(50);
292 l_sales_lead_id NUMBER;
293
294 BEGIN
295 -- dbms_output.put_line ('CheckAccepted '||itemkey);
296 IF funcmode = 'RUN' then
297 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckAccepted begin'||itemkey);
298 l_sales_lead_id := wf_engine.GetItemAttrNumber(
299 itemtype => itemtype,
300 itemkey => itemkey,
301 aname => 'SALES_LEAD_ID' );
302
303 OPEN c_lead_status (l_sales_lead_id);
304 FETCH c_lead_status INTO l_accept_flag;
305 CLOSE c_lead_status;
306
307 IF upper(l_accept_flag) = 'Y' THEN
308 result := 'COMPLETE:Y';
309 ELSE
310 result := 'COMPLETE:N';
311 END IF;
312 END IF;
313
314 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckAccepted end');
315 EXCEPTION
316 when others then
317 wf_core.context(Itemtype, 'CheckAccepted', itemtype, itemkey,
318 to_char(actid), funcmode);
319 raise;
320
321 END CheckAccepted;
322
323
324 PROCEDURE CheckforAbandon (
325 itemtype in VARCHAR2,
326 itemkey in VARCHAR2,
327 actid in NUMBER,
328 funcmode in VARCHAR2,
329 result out VARCHAR2 )
330 IS
331
332 l_action VARCHAR2(50);
333
334 BEGIN
335 -- dbms_output.put_line ('CheckforAbandon '||itemkey);
336 IF funcmode = 'RUN' THEN
337 --dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckforAbandon begin'||itemkey);
338 l_action := fnd_profile.value('AS_AGING_NOACT_ACTIONS');
339 IF UPPER(l_action) = 'ABANDON' THEN
340 result := 'COMPLETE:Y';
341 ELSE
342 result := 'COMPLETE:N';
343 END IF;
344 END IF ;
345
346 -- dbms_output.put_line('AS_LEAD_ASSIGN_WF: CheckforAbandon end');
347 EXCEPTION
348 when others then
349 wf_core.context(Itemtype, 'CheckforAbandon', itemtype, itemkey,
350 to_char(actid), funcmode);
351 raise;
352
353 END CheckforAbandon;
354
355
356 END AS_LEAD_ASSIGN_WF ;
357
358