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