DBA Data[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