[Home] [Help]
PACKAGE BODY: APPS.OKL_SUBSIDY_POOL_WF
Source
1 PACKAGE BODY okl_subsidy_pool_wf AS
2 /* $Header: OKLRSWFB.pls 120.4 2011/07/27 11:35:11 rgooty ship $ */
3
4 G_NO_MATCHING_RECORD CONSTANT fnd_new_messages.message_name%TYPE DEFAULT 'OKL_LLA_NO_MATCHING_RECORD';
5 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
6 G_SUBSIDY_POOL_APPROVAL_WF CONSTANT VARCHAR2(2) DEFAULT 'WF';
7 G_SUBSIDY_POOL_APPROVAL_AME CONSTANT VARCHAR2(3) DEFAULT 'AME';
8 G_ITEM_TYPE_WF CONSTANT VARCHAR2(10) DEFAULT 'OKLSPAPP';
9 G_POOL_APPROVAL_PROCESS_WF CONSTANT VARCHAR2(30) DEFAULT 'SUBSIDY_POOL_APPROVAL_WF';
10 G_LINE_APPROVAL_PROCESS_WF CONSTANT VARCHAR2(30) DEFAULT 'BUDGET_LINE_APPROVAL_WF';
11 G_ITEM_TYPE_AME CONSTANT VARCHAR2(10) DEFAULT 'OKLAMAPP';
12 G_APPROVAL_PROCESS_AME CONSTANT VARCHAR2(30) DEFAULT 'APPROVAL_PROC';
13 G_TRANS_APP_NAME_POOL CONSTANT ame_calling_apps.application_name%TYPE DEFAULT 'OKL LA Subsidy Pool Approval';
14 G_TRANS_APP_NAME_LINE CONSTANT ame_calling_apps.application_name%TYPE DEFAULT 'OKL LA Subsidy Pool Budget Approval';
15 G_TRX_TYPE_POOL_APPROVAL CONSTANT okl_trx_types_b.trx_type_class%TYPE DEFAULT 'SUBSIDY_POOL_APPROVAL';
16
17 G_WF_ITM_SUBSIDY_POOL_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'SUBSIDY_POOL_ID';
18 G_WF_ITM_SUBSIDY_POOL_NAME CONSTANT wf_item_attributes.name%TYPE DEFAULT 'SUBSIDY_POOL_NAME';
19 G_WF_ITM_FROM_DATE CONSTANT wf_item_attributes.name%TYPE DEFAULT 'FROM_DATE';
20 G_WF_ITM_TO_DATE CONSTANT wf_item_attributes.name%TYPE DEFAULT 'TO_DATE';
21 G_WF_ITM_TOTAL_BUDGETS CONSTANT wf_item_attributes.name%TYPE DEFAULT 'TOTAL_BUDGETS';
22 G_WF_ITM_POOL_CURRENCY CONSTANT wf_item_attributes.name%TYPE DEFAULT 'CURRENCY_CODE';
23 G_WF_ITM_POOL_DESCR CONSTANT wf_item_attributes.name%TYPE DEFAULT 'POOL_DESCRIPTION';
24 G_WF_ITM_BUDGET_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'BUDGET_LINE_ID';
25 G_WF_ITM_BUDGET_AMOUNT CONSTANT wf_item_attributes.name%TYPE DEFAULT 'BUDGET_AMOUNT';
26 G_WF_ITM_BUDGET_FROM_DATE CONSTANT wf_item_attributes.name%TYPE DEFAULT 'BUDGET_EFFECTIVE_DATE';
27 G_WF_ITM_BUDGET_TYPE CONSTANT wf_item_attributes.name%TYPE DEFAULT 'BUDGET_TYPE_CODE';
28 G_WF_ITM_REQUESTOR CONSTANT wf_item_attributes.name%TYPE DEFAULT 'REQUESTER';
29 G_WF_ITM_REQUESTOR_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'REQUESTOR_ID';
30 G_WF_ITM_APP_REQUEST_SUB CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_REQUEST_SUB';
31 G_WF_ITM_APP_REMINDER_SUB CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_REMINDER_SUB';
32 G_WF_ITM_APP_APPROVED_SUB CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_APPROVED_SUB';
33 G_WF_ITM_APP_REJECTED_SUB CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_REJECTED_SUB';
34 G_WF_ITM_APP_REMINDER_HEAD CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_REMINDER_HEAD';
35 G_WF_ITM_APP_APPROVED_HEAD CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_APPROVED_HEAD';
36 G_WF_ITM_APP_REJECTED_HEAD CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APP_REJECTED_HEAD';
37 G_WF_ITM_APPLICATION_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APPLICATION_ID';
38 G_WF_ITM_TRANSACTION_TYPE_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'TRX_TYPE_ID';
39 G_WF_ITM_TRANSACTION_ID CONSTANT wf_item_attributes.name%TYPE DEFAULT 'TRANSACTION_ID';
40
41 G_WF_ITM_APPROVER CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APPROVER';
42 G_WF_ITM_MESSAGE_SUBJECT CONSTANT wf_item_attributes.name%TYPE DEFAULT 'MESSAGE_SUBJECT';
43 G_WF_ITM_MESSAGE_DESCR CONSTANT wf_item_attributes.name%TYPE DEFAULT 'MESSAGE_DESCRIPTION';
44 G_WF_ITM_MESSAGE_BODY CONSTANT wf_item_attributes.name%TYPE DEFAULT 'MESSAGE_DOC';
45 G_WF_ITM_RESULT CONSTANT wf_item_attributes.name%TYPE DEFAULT 'RESULT';
46 G_WF_ITM_APPROVED_YN_YES CONSTANT wf_item_attributes.name%TYPE DEFAULT 'APPROVED';
47 G_WF_ITM_APPROVED_YN_NO CONSTANT wf_item_attributes.name%TYPE DEFAULT 'REJECTED';
48
49 G_POOL_APPROVAL_EVENT CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.subsidy_pool.approval_requested';
50 G_POOL_BUDGET_APPROVAL_EVENT CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.subsidy_pool.approval_budget_requested';
51
52 G_DEFAULT_USER CONSTANT VARCHAR2(10) := 'SYSADMIN';
53 G_DEFAULT_USER_DESC CONSTANT VARCHAR2(30) := 'System Administrator';
54 G_WF_USER_ORIG_SYSTEM_HR CONSTANT VARCHAR2(5) := 'PER';
55 -- local procedure. START
56 PROCEDURE l_get_agent(p_user_id IN NUMBER,
57 x_return_status OUT NOCOPY VARCHAR2,
58 x_name OUT NOCOPY VARCHAR2,
59 x_description OUT NOCOPY VARCHAR2) IS
60
61 CURSOR wf_users_csr(cp_user_id NUMBER)IS
62 SELECT NAME, DISPLAY_NAME
63 FROM WF_USERS
64 WHERE orig_system_id = p_user_id
65 AND ORIG_SYSTEM = G_WF_USER_ORIG_SYSTEM_HR;
66
67 CURSOR fnd_users_csr(c_user_id NUMBER)
68 IS
69 SELECT USER_NAME, DESCRIPTION
70 FROM FND_USER
71 WHERE user_id = c_user_id;
72 BEGIN
73 x_return_status := OKL_API.G_RET_STS_SUCCESS;
74 OPEN wf_users_csr(p_user_id);
75 FETCH wf_users_csr INTO x_name, x_description;
76 CLOSE wf_users_csr;
77 IF x_name IS NULL THEN
78 OPEN fnd_users_csr(p_user_id);
79 FETCH fnd_users_csr INTO x_name, x_description;
80 CLOSE fnd_users_csr;
81 IF x_name IS NULL THEN
82 x_name := G_DEFAULT_USER;
83 x_description := G_DEFAULT_USER_DESC;
84 END IF;
85 END IF;
86 EXCEPTION
87 WHEN OTHERS THEN
88 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
89 END l_get_agent;
90
91 FUNCTION get_item_key_wf RETURN NUMBER IS
92 CURSOR c_wf_item_key_csr IS
93 SELECT okl_wf_item_s.NEXTVAL item_key
94 FROM dual;
95
96 lv_item_key NUMBER;
97 BEGIN
98 OPEN c_wf_item_key_csr; FETCH c_wf_item_key_csr INTO lv_item_key;
99 CLOSE c_wf_item_key_csr;
100
101 RETURN lv_item_key;
102 END get_item_key_wf;
103
104 FUNCTION get_message(p_msg_name IN fnd_new_messages.message_name%TYPE
105 ,p_msg_token IN VARCHAR2
106 ,p_token_value IN VARCHAR2
107 ) RETURN VARCHAR2 IS
108 BEGIN
109 fnd_message.set_name(G_APP_NAME,p_msg_name);
110 IF(p_msg_token IS NOT NULL)THEN
111 fnd_message.set_token(p_msg_token,p_token_value);
112 END IF;
113 RETURN fnd_message.get;
114 END get_message;
115
116 FUNCTION get_pool_msg_body(itemtype IN VARCHAR2
117 ,itemkey IN VARCHAR2) RETURN VARCHAR2 IS
118 lv_pool_name okl_subsidy_pools_b.subsidy_pool_name%TYPE;
119 lv_total_budget VARCHAR2(200);
120 lv_currency_code okl_subsidy_pools_b.currency_code%TYPE;
121 lv_from_date okl_subsidy_pools_b.effective_from_date%TYPE;
122 lv_to_date okl_subsidy_pools_b.effective_to_date%TYPE;
123 lv_pool_description okl_subsidy_pools_v.short_description%TYPE;
124 lv_requestor VARCHAR2(100);
125 lv_message_body VARCHAR2(4000);
126 BEGIN
127 lv_pool_name := wf_engine.GetItemAttrText(itemtype => itemtype,
128 itemkey => itemkey,
129 aname => G_WF_ITM_SUBSIDY_POOL_NAME);
130
131 lv_requestor := wf_engine.GetItemAttrText(itemtype => itemtype,
132 itemkey => itemkey,
133 aname => G_WF_ITM_REQUESTOR);
134
135 lv_currency_code := wf_engine.GetItemAttrText(itemtype => itemtype,
136 itemkey => itemkey,
137 aname => G_WF_ITM_POOL_CURRENCY);
138
139 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
140 itemkey => itemkey,
141 aname => G_WF_ITM_FROM_DATE);
142 lv_from_date := to_date(lv_from_date,'DD/MM/RRRR');
143
144 lv_to_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
145 itemkey => itemkey,
146 aname => G_WF_ITM_TO_DATE);
147
148 lv_pool_description := wf_engine.GetItemAttrText(itemtype => itemtype,
149 itemkey => itemkey,
150 aname => G_WF_ITM_POOL_DESCR);
151 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
152 itemkey => itemkey,
153 aname => G_WF_ITM_TOTAL_BUDGETS);
154 -- format this amount
155 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
156
157 lv_message_body := get_message('OKL_TOTAL_BUDGETS','TOTAL_BUDGET',lv_total_budget)||' '||lv_currency_code||'<br>'||
158 get_message('OKL_EFFECTIVE_FROM','FROM_DATE',fnd_Date.date_to_displaydate(lv_from_date, calendar_aware => FND_DATE.calendar_aware))||'<br>'||
159 get_message('OKL_EFFECTIVE_TO','TO_DATE',fnd_Date.date_to_displaydate(lv_to_date, calendar_aware => FND_DATE.calendar_aware))||'<br>'||
160 get_message('OKL_POOL_DESCRIPTION','DESCR',lv_pool_description)||'<br><br>'||
161 get_message('OKL_REQUESTOR','REQUESTOR',lv_requestor);
162 RETURN lv_message_body;
163 END get_pool_msg_body;
164
165 FUNCTION get_pool_line_msg_body(itemtype IN VARCHAR2
166 ,itemkey IN VARCHAR2) RETURN VARCHAR2 IS
167 lv_pool_name okl_subsidy_pools_b.subsidy_pool_name%TYPE;
168 lv_total_budget VARCHAR2(200);
169 lv_currency_code okl_subsidy_pools_b.currency_code%TYPE;
170 lv_from_date okl_subsidy_pools_b.effective_from_date%TYPE;
171 lv_requestor VARCHAR2(100);
172 lv_budget_type fnd_lookups.meaning%TYPE;
173 lv_message_body VARCHAR2(4000);
174 BEGIN
175 lv_pool_name := wf_engine.GetItemAttrText(itemtype => itemtype,
176 itemkey => itemkey,
177 aname => G_WF_ITM_SUBSIDY_POOL_NAME);
178
179 lv_requestor := wf_engine.GetItemAttrText(itemtype => itemtype,
180 itemkey => itemkey,
181 aname => G_WF_ITM_REQUESTOR);
182
183 lv_currency_code := wf_engine.GetItemAttrText(itemtype => itemtype,
184 itemkey => itemkey,
185 aname => G_WF_ITM_POOL_CURRENCY);
186
187 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
188 itemkey => itemkey,
189 aname => G_WF_ITM_BUDGET_FROM_DATE);
190
191 lv_from_date := to_date(lv_from_date,'DD/MM/RRRR');
192
193 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
194 itemkey => itemkey,
195 aname => G_WF_ITM_BUDGET_AMOUNT);
196 -- format this amount
197 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
198 lv_budget_type := wf_engine.GetItemAttrText(itemtype => itemtype,
199 itemkey => itemkey,
200 aname => G_WF_ITM_BUDGET_TYPE);
201 lv_budget_type := okl_accounting_util.get_lookup_meaning('OKL_SUB_POOL_LINE_TYPE',lv_budget_type);
202
203 lv_message_body := '<body>'||get_message('OKL_TOTAL_BUDGETS','TOTAL_BUDGET',lv_total_budget)||' '||lv_currency_code||'<br>'||
204 get_message('OKL_EFFECTIVE_FROM','FROM_DATE',fnd_Date.date_to_displaydate(lv_from_date, calendar_aware => FND_DATE.calendar_aware))||'<br>'||
205 get_message('OKL_SUB_POOL_LINE_TYPE','TYPE',lv_budget_type)||'<br>'||
206 get_message('OKL_SUB_POOL_NAME','SUB_POOL',lv_pool_name)||'<br><br>'||
207 get_message('OKL_REQUESTOR','REQUESTOR',lv_requestor)||'</body>';
208 RETURN lv_message_body;
209
210 END get_pool_line_msg_body;
211
212 PROCEDURE set_attrib_message(itemtype IN VARCHAR2
213 ,itemkey IN VARCHAR2
214 ,message fnd_new_messages.message_name%TYPE
215 ,attrib wf_item_attributes.name%TYPE
216 ,pool_or_line IN VARCHAR2
217 ) IS
218 lv_pool_name okl_subsidy_pools_b.subsidy_pool_name%TYPE;
219 lv_total_budget VARCHAR2(200);
220 lv_currency_code okl_subsidy_pools_b.currency_code%TYPE;
221
222 BEGIN
223 lv_currency_code := wf_engine.GetItemAttrText(itemtype => itemtype,
224 itemkey => itemkey,
225 aname => G_WF_ITM_POOL_CURRENCY);
226
227 lv_pool_name := wf_engine.GetItemAttrText(itemtype => itemtype,
228 itemkey => itemkey,
229 aname => G_WF_ITM_SUBSIDY_POOL_NAME);
230 IF('POOL' = pool_or_line)THEN
231 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
232 itemkey => itemkey,
233 aname => G_WF_ITM_TOTAL_BUDGETS);
234 ELSIF('BUDGET' = pool_or_line)THEN
235 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
236 itemkey => itemkey,
237 aname => G_WF_ITM_BUDGET_AMOUNT);
238 END IF;
239 -- format this amount
240 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
241
242 fnd_message.set_name(G_APP_NAME,message);
243 fnd_message.set_token('NAME', lv_pool_name);
244
245 IF('POOL' = pool_or_line)THEN
246 fnd_message.set_token('TOTAL_BUDGET', lv_total_budget);
247 ELSIF('BUDGET' = pool_or_line)THEN
248 fnd_message.set_token('BUDGET', lv_total_budget);
249 END IF;
250
251 fnd_message.set_token('CURR', lv_currency_code);
252 wf_engine.SetItemAttrText(itemtype => itemtype,
253 itemkey => itemkey,
254 aname => attrib,
255 avalue => fnd_message.get
256 );
257
258 END set_attrib_message;
259
260
261 PROCEDURE get_pool_msg_doc(document_id IN VARCHAR2,
262 display_type IN VARCHAR2,
263 document IN OUT nocopy VARCHAR2,
264 document_type IN OUT nocopy VARCHAR2) IS
265 BEGIN
266 document := get_pool_msg_body(G_ITEM_TYPE_WF,document_id);
267 document_type := display_type;
268 END get_pool_msg_doc;
269
270 PROCEDURE get_pool_line_msg_doc(document_id IN VARCHAR2,
271 display_type IN VARCHAR2,
272 document IN OUT nocopy VARCHAR2,
273 document_type IN OUT nocopy VARCHAR2) IS
274 BEGIN
275 document := get_pool_line_msg_body(G_ITEM_TYPE_WF,document_id);
276 document_type := display_type;
277 END get_pool_line_msg_doc;
278
279
280 -- local procedure. END
281
282 PROCEDURE process_pool_ame (itemtype IN VARCHAR2
283 ,itemkey IN VARCHAR2
284 ,actid IN NUMBER
285 ,funcmode IN VARCHAR2
286 ,resultout OUT NOCOPY VARCHAR2) IS
287 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'process_pool_ame';
288 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.PROCESS_POOL_AME';
289 l_debug_enabled VARCHAR2(10);
290 is_debug_procedure_on BOOLEAN;
291
292 BEGIN
293 l_debug_enabled := okl_debug_pub.check_log_enabled;
294 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
295 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
296 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call process_pool_ame');
297 END IF;
298
299 -- RUN mode
300 IF(funcmode = 'RUN')THEN
301 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_APPROVAL_SUB', G_WF_ITM_APP_REQUEST_SUB, 'POOL');
302 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_APPROVAL_REM', G_WF_ITM_APP_REMINDER_SUB, 'POOL');
303 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_APPROVAL_REM', G_WF_ITM_APP_REMINDER_HEAD, 'POOL');
304 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_APPROVED_SUB', G_WF_ITM_APP_APPROVED_SUB, 'POOL');
305 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_APPROVED_SUB', G_WF_ITM_APP_APPROVED_HEAD, 'POOL');
306 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_REJECT_SUB', G_WF_ITM_APP_REJECTED_SUB, 'POOL');
307 set_attrib_message(itemtype, itemkey, 'OKL_SUB_POOL_REQ_REJECT_SUB', G_WF_ITM_APP_REJECTED_HEAD, 'POOL');
308
309 -- OKL_SUB_POOL_REQ_APPROVAL_BOD (TOTAL_BUDGET, CURR, FROM_DATE, TO_DATE, POOL_DESCR, REQUESTOR) G_WF_ITM_MESSAGE_BODY
310 wf_engine.SetItemAttrText(itemtype => itemtype,
311 itemkey => itemkey,
312 aname => G_WF_ITM_MESSAGE_BODY,
313 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_msg_doc/'||itemkey
314 );
315
316 wf_engine.SetItemAttrText(itemtype => itemtype,
317 itemkey => itemkey,
318 aname => G_WF_ITM_MESSAGE_DESCR,
319 avalue => get_pool_msg_body(itemtype, itemkey)
320 );
321
322 resultout := 'COMPLETE:';
323 END IF;
324
325 -- CANCEL mode
326 IF (funcmode = 'CANCEL') THEN
327 resultout := 'COMPLETE:';
328 RETURN;
329 END IF;
330
331 -- TIMEOUT mode
332 IF (funcmode = 'TIMEOUT') THEN
333 resultout := 'COMPLETE:';
334 RETURN;
335 END IF;
336
337 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
338 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call process_pool_ame');
339 END IF;
340 EXCEPTION
341 WHEN OTHERS THEN
342 wf_core.context(G_PKG_NAME , l_api_name, itemtype, itemkey, actid, funcmode);
343 RAISE;
344 END process_pool_ame;
345
346 PROCEDURE process_pool_line_ame (itemtype IN VARCHAR2
347 ,itemkey IN VARCHAR2
348 ,actid IN NUMBER
349 ,funcmode IN VARCHAR2
350 ,resultout OUT NOCOPY VARCHAR2) IS
351 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'process_pool_line_ame';
352 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.PROCESS_POOL_LINE_AME';
353 l_debug_enabled VARCHAR2(10);
354 is_debug_procedure_on BOOLEAN;
355 BEGIN
356 l_debug_enabled := okl_debug_pub.check_log_enabled;
357 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
358 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
359 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call process_pool_line_ame');
360 END IF;
361
362 -- RUN mode
363 IF(funcmode = 'RUN')THEN
364 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_APPROVAL_SUB', G_WF_ITM_APP_REQUEST_SUB, 'BUDGET');
365 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_APPROVAL_REM', G_WF_ITM_APP_REMINDER_SUB, 'BUDGET');
366 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_APPROVAL_REM', G_WF_ITM_APP_REMINDER_HEAD, 'BUDGET');
367 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_APPROVED_SUB', G_WF_ITM_APP_APPROVED_SUB, 'BUDGET');
368 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_APPROVED_SUB', G_WF_ITM_APP_APPROVED_HEAD, 'BUDGET');
369 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_REJECT_SUB', G_WF_ITM_APP_REJECTED_SUB, 'BUDGET');
370 set_attrib_message(itemtype, itemkey, 'OKL_SUB_LINE_REQ_REJECT_SUB', G_WF_ITM_APP_REJECTED_HEAD, 'BUDGET');
371
372 -- OKL_SUB_LINE_REQ_APPROVAL_BOD (BUDGET, FROM_DATE, NAME, REQUESTOR)
373 wf_engine.SetItemAttrText(itemtype => itemtype,
374 itemkey => itemkey,
375 aname => G_WF_ITM_MESSAGE_BODY,
376 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_line_msg_doc/'||itemkey
377 );
378
379 wf_engine.SetItemAttrText(itemtype => itemtype,
380 itemkey => itemkey,
381 aname => G_WF_ITM_MESSAGE_DESCR,
382 avalue => get_pool_line_msg_body(itemtype, itemkey)
383 );
384 resultout := 'COMPLETE:';
385 END IF;
386
387 -- CANCEL mode
388 IF (funcmode = 'CANCEL') THEN
389 resultout := 'COMPLETE:';
390 RETURN;
391 END IF;
392
393 -- TIMEOUT mode
394 IF (funcmode = 'TIMEOUT') THEN
395 resultout := 'COMPLETE:';
396 RETURN;
397 END IF;
398 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
399 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call process_pool_line_ame');
400 END IF;
401
402 EXCEPTION
403 WHEN OTHERS THEN
404 wf_core.context(G_PKG_NAME , l_api_name, itemtype, itemkey, actid, funcmode);
405 RAISE;
406
407 END process_pool_line_ame;
408
409 PROCEDURE check_approval_process(itemtype IN VARCHAR2
410 ,itemkey IN VARCHAR2
411 ,actid IN NUMBER
412 ,funcmode IN VARCHAR2
413 ,resultout OUT NOCOPY VARCHAR2) IS
414 l_approval_option VARCHAR2(10);
415 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'check_approval_process';
416 BEGIN
417 IF(funcmode = 'RUN')THEN
418 l_approval_option := fnd_profile.value('OKL_SUBSIDY_POOL_APPROVAL_PROCESS');
419 IF l_approval_option = G_SUBSIDY_POOL_APPROVAL_AME THEN
420 resultout := 'COMPLETE:AME';
421 ELSIF l_approval_option = G_SUBSIDY_POOL_APPROVAL_WF THEN
422 resultout := 'COMPLETE:WF';
423 END IF;
424 RETURN;
425 END IF;
426
427 -- CANCEL mode
428 IF (funcmode = 'CANCEL') THEN
429 resultout := 'COMPLETE:';
430 RETURN;
431 END IF;
432
433 -- TIMEOUT mode
434 IF (funcmode = 'TIMEOUT') THEN
435 resultout := 'COMPLETE:';
436 RETURN;
437 END IF;
438
439 EXCEPTION
440 WHEN OTHERS THEN
441 wf_core.context(G_PKG_NAME , l_api_name, itemtype, itemkey, actid, funcmode);
442 RAISE;
443 END check_approval_process;
444
445
446 PROCEDURE update_pool_approval_status(itemtype IN VARCHAR2
447 ,itemkey IN VARCHAR2
448 ,actid IN NUMBER
449 ,funcmode IN VARCHAR2
450 ,resultout OUT NOCOPY VARCHAR2) IS
451 CURSOR c_get_bud_line_csr (cp_subsidy_pool_id okl_subsidy_pools_b.id%TYPE)IS
452 SELECT id
453 FROM okl_subsidy_pool_budgets_b
454 WHERE subsidy_pool_id = cp_subsidy_pool_id;
455
456 lv_approval_status VARCHAR2(10);
457 lv_approval_status_ame VARCHAR2(10);
458 lv_total_budget VARCHAR2(200);
459 lv_subsidy_pool_id okl_subsidy_pools_b.id%TYPE;
460 lv_budget_line_id okl_subsidy_pool_budgets_b.id%TYPE;
461 x_return_status VARCHAR2(10);
462 x_msg_data VARCHAR2(1000);
463 x_msg_count NUMBER;
464 lv_decision_status_code fnd_lookups.lookup_code%TYPE;
465 l_api_name CONSTANT VARCHAR2(60) DEFAULT 'update_pool_status';
466 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.UPDATE_POOL_APPROVAL_STATUS';
467 l_debug_enabled VARCHAR2(10);
468 is_debug_procedure_on BOOLEAN;
469 is_debug_statement_on BOOLEAN;
470
471 BEGIN
472 l_debug_enabled := okl_debug_pub.check_log_enabled;
473 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
474 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
475 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call update_pool_approval_status');
476 END IF;
477
478 -- check for logging on STATEMENT level
479 is_debug_statement_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_STATEMENT);
480
481 IF(funcmode = 'RUN')THEN
482 lv_approval_status := wf_engine.GetItemAttrText(itemtype => itemtype,
483 itemkey => itemkey,
484 aname => G_WF_ITM_RESULT);
485
486 lv_approval_status_ame := wf_engine.GetItemAttrText(itemtype => itemtype,
487 itemkey => itemkey,
488 aname => 'APPROVED_YN');
489 -- get the subsidy pool id here, this can be used for case or approval or rejected also
490 lv_subsidy_pool_id := wf_engine.GetItemAttrText(itemtype => itemtype,
491 itemkey => itemkey,
492 aname => G_WF_ITM_SUBSIDY_POOL_ID);
493 -- also get the budget line id, since this is pool approval, there will be only one budget line for
494 -- the pool in context.
495 OPEN c_get_bud_line_csr(cp_subsidy_pool_id => lv_subsidy_pool_id); FETCH c_get_bud_line_csr INTO lv_budget_line_id;
496 CLOSE c_get_bud_line_csr;
497
498 IF(G_WF_ITM_APPROVED_YN_YES = lv_approval_status OR lv_approval_status_ame = 'Y')THEN
499 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
500 itemkey => itemkey,
501 aname => G_WF_ITM_TOTAL_BUDGETS);
502 okl_subsidy_pool_pvt.update_total_budget(p_api_version => '1.0'
503 ,p_init_msg_list => OKL_API.G_TRUE
504 ,x_return_status => x_return_status
505 ,x_msg_count => x_msg_count
506 ,x_msg_data => x_msg_data
507 ,p_subsidy_pool_id => lv_subsidy_pool_id
508 ,p_total_budget_amt => lv_total_budget
509 );
510 -- write to log
511 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
512 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
513 l_module,
514 'okl_subsidy_pool_pvt.update_total_budget with total budget amount '||lv_total_budget||
515 ' returned with status '||x_return_status ||' x_msg_data '||x_msg_data
516 );
517 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
518
519 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
520 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
521 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
522 RAISE OKL_API.G_EXCEPTION_ERROR;
523 END IF;
524 lv_decision_status_code := 'ACTIVE';
525 okl_subsidy_pool_budget_pvt.set_decision_status_code(p_api_version => '1.0'
526 ,p_init_msg_list => OKL_API.G_TRUE
527 ,x_return_status => x_return_status
528 ,x_msg_count => x_msg_count
529 ,x_msg_data => x_msg_data
530 ,p_sub_pool_budget_id => lv_budget_line_id
531 ,p_decision_status_code => lv_decision_status_code
532 );
533 -- write to log
534 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
535 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
536 l_module,
537 'okl_subsidy_pool_budget_pvt.set_decision_status_code to '||lv_decision_status_code||' lv_budget_line_id '||lv_budget_line_id ||
538 ' returned with status '||x_return_status ||' x_msg_data '||x_msg_data
539 );
540 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
541
542 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
543 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
544 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
545 RAISE OKL_API.G_EXCEPTION_ERROR;
546 END IF;
547
548 okl_subsidy_pool_pvt.set_decision_status_code(p_api_version => '1.0'
549 ,p_init_msg_list => OKL_API.G_TRUE
550 ,x_return_status => x_return_status
551 ,x_msg_count => x_msg_count
552 ,x_msg_data => x_msg_data
553 ,p_subsidy_pool_id => lv_subsidy_pool_id
554 ,p_decision_status_code => lv_decision_status_code);
555 -- write to log
556 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
557 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
558 l_module,
559 'okl_subsidy_pool_pvt.set_decision_status_code to '||lv_decision_status_code||' lv_subsidy_pool_id '||lv_subsidy_pool_id ||
560 ' returned with status '||x_return_status ||' x_msg_data '||x_msg_data
561 );
562 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
563
564 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
565 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
566 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
567 RAISE OKL_API.G_EXCEPTION_ERROR;
568 END IF;
569 resultout := 'COMPLETE:';
570 ELSIF(G_WF_ITM_APPROVED_YN_NO = lv_approval_status OR lv_approval_status_ame = 'N')THEN
571 lv_decision_status_code := 'REJECTED';
572 okl_subsidy_pool_budget_pvt.set_decision_status_code(p_api_version => '1.0'
573 ,p_init_msg_list => OKL_API.G_TRUE
574 ,x_return_status => x_return_status
575 ,x_msg_count => x_msg_count
576 ,x_msg_data => x_msg_data
577 ,p_sub_pool_budget_id => lv_budget_line_id
578 ,p_decision_status_code => lv_decision_status_code
579 );
580 -- write to log
581 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
582 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
583 l_module,
584 'okl_subsidy_pool_budget_pvt.set_decision_status_code to '||lv_decision_status_code||' lv_budget_line_id '||lv_budget_line_id ||
585 ' returned with status '||x_return_status ||' x_msg_data '||x_msg_data
586 );
587 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
588
589 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
590 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
591 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
592 RAISE OKL_API.G_EXCEPTION_ERROR;
593 END IF;
594 okl_subsidy_pool_pvt.set_decision_status_code(p_api_version => '1.0'
595 ,p_init_msg_list => OKL_API.G_TRUE
596 ,x_return_status => x_return_status
597 ,x_msg_count => x_msg_count
598 ,x_msg_data => x_msg_data
599 ,p_subsidy_pool_id => lv_subsidy_pool_id
600 ,p_decision_status_code => lv_decision_status_code);
601 -- write to log
602 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
603 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
604 l_module,
605 'okl_subsidy_pool_pvt.set_decision_status_code to '||lv_decision_status_code||' lv_subsidy_pool_id '||lv_subsidy_pool_id ||
606 ' returned with status '||x_return_status ||' x_msg_data '||x_msg_data
607 );
608 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
609
610 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
611 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
612 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
613 RAISE OKL_API.G_EXCEPTION_ERROR;
614 END IF;
615 resultout := 'COMPLETE:';
616 ELSE
617 NULL;
618 END IF;
619 END IF;
620 -- CANCEL mode
621 IF (funcmode = 'CANCEL') THEN
622 resultout := 'COMPLETE:';
623 RETURN;
624 END IF;
625
626 -- TIMEOUT mode
627 IF (funcmode = 'TIMEOUT') THEN
628 resultout := 'COMPLETE:';
629 RETURN;
630 END IF;
631 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
632 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call update_pool_approval_status');
633 END IF;
634
635 EXCEPTION
636 WHEN OKL_API.G_EXCEPTION_ERROR THEN
637 wf_core.context(G_PKG_NAME,
638 l_api_name,
639 itemtype,
640 itemkey,
641 TO_CHAR(actid),
642 funcmode);
643 RAISE;
644 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
645 wf_core.context(G_PKG_NAME,
646 l_api_name,
647 itemtype,
648 itemkey,
649 TO_CHAR(actid),
650 funcmode);
651 RAISE;
652 WHEN OTHERS THEN
653 wf_core.context(G_PKG_NAME,
654 l_api_name,
655 itemtype,
656 itemkey,
657 TO_CHAR(actid),
658 funcmode);
659 RAISE;
660
661 END update_pool_approval_status;
662
663 PROCEDURE update_line_approval_status(itemtype IN VARCHAR2
664 ,itemkey IN VARCHAR2
665 ,actid IN NUMBER
666 ,funcmode IN VARCHAR2
667 ,resultout OUT NOCOPY VARCHAR2) IS
668 lv_budget_type_code okl_subsidy_pool_budgets_b.budget_type_code%TYPE;
669 CURSOR c_get_total_budget_csr (cp_subsidy_pool_id okl_subsidy_pools_b.id%TYPE) IS
670 SELECT total_budgets
671 FROM okl_subsidy_pools_b
672 WHERE id = cp_subsidy_pool_id;
673 lv_approval_status VARCHAR2(10);
674 lv_approval_status_ame VARCHAR2(10);
675 lv_subsidy_pool_id okl_subsidy_pools_b.id%TYPE;
676 lv_budget_line_id okl_subsidy_pool_budgets_b.id%TYPE;
677 lv_total_budget okl_subsidy_pools_b.total_budgets%TYPE;
678 lv_line_amount NUMBER;
679 lv_decision_status_code fnd_lookups.lookup_code%TYPE;
680 x_return_status VARCHAR2(10);
681 x_msg_data VARCHAR2(1000);
682 x_msg_count NUMBER;
683 l_api_name CONSTANT VARCHAR2(60) DEFAULT 'update_line_status';
684 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.UPDATE_LINE_APPROVAL_STATUS';
685 l_debug_enabled VARCHAR2(10);
686 is_debug_procedure_on BOOLEAN;
687 is_debug_statement_on BOOLEAN;
688 BEGIN
689 l_debug_enabled := okl_debug_pub.check_log_enabled;
690 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
691 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
692 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call update_line_approval_status');
693 END IF;
694
695 -- RUN mode
696 IF(funcmode = 'RUN')THEN
697 -- check for logging on STATEMENT level
698 is_debug_statement_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_STATEMENT);
699
700 lv_approval_status := wf_engine.GetItemAttrText(itemtype => itemtype,
701 itemkey => itemkey,
702 aname => G_WF_ITM_RESULT);
703
704 lv_approval_status_ame := wf_engine.GetItemAttrText(itemtype => itemtype,
705 itemkey => itemkey,
706 aname => 'APPROVED_YN');
707
708
709 lv_budget_type_code := wf_engine.GetItemAttrText(itemtype => itemtype,
710 itemkey => itemkey,
711 aname => G_WF_ITM_BUDGET_TYPE);
712
713 lv_line_amount := wf_engine.GetItemAttrText(itemtype => itemtype,
714 itemkey => itemkey,
715 aname => G_WF_ITM_BUDGET_AMOUNT);
716 -- get the subsidy pool id here, this can be used for case or approval or rejected also
717 lv_subsidy_pool_id := wf_engine.GetItemAttrText(itemtype => itemtype,
718 itemkey => itemkey,
719 aname => G_WF_ITM_SUBSIDY_POOL_ID);
720 OPEN c_get_total_budget_csr(cp_subsidy_pool_id => lv_subsidy_pool_id);
721 FETCH c_get_total_budget_csr INTO lv_total_budget;
722 CLOSE c_get_total_budget_csr;
723 lv_budget_line_id := wf_engine.GetItemAttrText(itemtype => itemtype,
724 itemkey => itemkey,
725 aname => G_WF_ITM_BUDGET_ID);
726
727 IF(G_WF_ITM_APPROVED_YN_YES = lv_approval_status OR lv_approval_status_ame = 'Y')THEN
728 -- if the budget line is of type ADDITION, then add this amount to the total budgets on the subsidy pool
729 -- for all other cases in approval, do not do nuthing
730 IF(lv_budget_type_code = 'ADDITION')THEN
731 lv_total_budget := lv_total_budget + lv_line_amount;
732 okl_subsidy_pool_pvt.update_total_budget(p_api_version => '1.0'
733 ,p_init_msg_list => OKL_API.G_TRUE
734 ,x_return_status => x_return_status
735 ,x_msg_count => x_msg_count
736 ,x_msg_data => x_msg_data
737 ,p_subsidy_pool_id => lv_subsidy_pool_id
738 ,p_total_budget_amt => lv_total_budget
739 );
740 -- write to log
741 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
742 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
743 l_module,
744 'okl_subsidy_pool_pvt.update_total_budget of budget amount '||lv_total_budget||' returned with status '||x_return_status||
745 ' x_msg_data '||x_msg_data
746 );
747 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
748
749 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
750 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
751 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
752 RAISE OKL_API.G_EXCEPTION_ERROR;
753 END IF;
754 END IF; -- end of lv_budget_type_code = 'ADDITION'
755 lv_decision_status_code := 'ACTIVE';
756 okl_subsidy_pool_budget_pvt.set_decision_status_code(p_api_version => '1.0'
757 ,p_init_msg_list => OKL_API.G_TRUE
758 ,x_return_status => x_return_status
759 ,x_msg_count => x_msg_count
760 ,x_msg_data => x_msg_data
761 ,p_sub_pool_budget_id => lv_budget_line_id
762 ,p_decision_status_code => lv_decision_status_code
763 );
764 -- write to log
765 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
766 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
767 l_module,
768 'okl_subsidy_pool_budget_pvt.set_decision_status_code code '||lv_decision_status_code||' returned with status '||x_return_status||
769 ' x_msg_data '||x_msg_data
770 );
771 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
772
773 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
774 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
775 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
776 RAISE OKL_API.G_EXCEPTION_ERROR;
777 END IF;
778 resultout := 'COMPLETE:';
779 ELSIF(G_WF_ITM_APPROVED_YN_NO = lv_approval_status OR lv_approval_status_ame = 'N')THEN
780 IF(lv_budget_type_code = 'REDUCTION')THEN
781 lv_total_budget := lv_total_budget + lv_line_amount;
782 okl_subsidy_pool_pvt.update_total_budget(p_api_version => '1.0'
783 ,p_init_msg_list => OKL_API.G_TRUE
784 ,x_return_status => x_return_status
785 ,x_msg_count => x_msg_count
786 ,x_msg_data => x_msg_data
787 ,p_subsidy_pool_id => lv_subsidy_pool_id
788 ,p_total_budget_amt => lv_total_budget
789 );
790 -- write to log
791 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
792 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
793 l_module,
794 'okl_subsidy_pool_pvt.update_total_budget budget '||lv_total_budget||' returned with status '||x_return_status||
795 ' x_msg_data '||x_msg_data
796 );
797 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
798
799 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
800 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
801 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
802 RAISE OKL_API.G_EXCEPTION_ERROR;
803 END IF;
804 END IF; -- end of lv_budget_type_code = 'REDUCTION'
805 lv_decision_status_code := 'REJECTED';
806 okl_subsidy_pool_budget_pvt.set_decision_status_code(p_api_version => '1.0'
807 ,p_init_msg_list => OKL_API.G_TRUE
808 ,x_return_status => x_return_status
809 ,x_msg_count => x_msg_count
810 ,x_msg_data => x_msg_data
811 ,p_sub_pool_budget_id => lv_budget_line_id
812 ,p_decision_status_code => lv_decision_status_code
813 );
814 -- write to log
815 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
816 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
817 l_module,
818 'okl_subsidy_pool_budget_pvt.set_decision_status_code code '||lv_decision_status_code||' returned with status '||x_return_status||
819 ' x_msg_data '||x_msg_data
820 );
821 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
822
823 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
824 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
825 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
826 RAISE OKL_API.G_EXCEPTION_ERROR;
827 END IF;
828 resultout := 'COMPLETE:';
829 ELSE
830 NULL;
831 END IF;
832 END IF;
833
834 -- CANCEL mode
835 IF (funcmode = 'CANCEL') THEN
836 resultout := 'COMPLETE:';
837 RETURN;
838 END IF;
839
840 -- TIMEOUT mode
841 IF (funcmode = 'TIMEOUT') THEN
842 resultout := 'COMPLETE:';
843 RETURN;
844 END IF;
845
846 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
847 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call update_line_approval_status');
848 END IF;
849
850 EXCEPTION
851 WHEN OKL_API.G_EXCEPTION_ERROR THEN
852 wf_core.context(G_PKG_NAME,
853 l_api_name,
854 itemtype,
855 itemkey,
856 TO_CHAR(actid),
857 funcmode);
858 RAISE;
859 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
860 wf_core.context(G_PKG_NAME,
861 l_api_name,
862 itemtype,
863 itemkey,
864 TO_CHAR(actid),
865 funcmode);
866 RAISE;
867 WHEN OTHERS THEN
868 wf_core.context(G_PKG_NAME,
869 l_api_name,
870 itemtype,
871 itemkey,
872 TO_CHAR(actid),
873 funcmode);
874 RAISE;
875 END update_line_approval_status;
876
877 PROCEDURE get_subsidy_pool_approver (itemtype IN VARCHAR2
878 ,itemkey IN VARCHAR2
879 ,actid IN NUMBER
880 ,funcmode IN VARCHAR2
881 ,resultout OUT NOCOPY VARCHAR2) IS
882 CURSOR l_fnd_users_csr(p_user_id NUMBER)
883 IS
884 SELECT USER_NAME
885 FROM FND_USER
886 WHERE user_id = p_user_id;
887
888 l_api_name CONSTANT VARCHAR2(200) DEFAULT 'get_subsidy_pool_approver';
889
890 l_user_id VARCHAR2(200);
891 lv_receiving_event wf_events.name%TYPE;
892 lv_pool_name okl_subsidy_pools_b.subsidy_pool_name%TYPE;
893 lv_total_budget VARCHAR2(200);
894 lv_currency_code okl_subsidy_pools_b.currency_code%TYPE;
895 lv_from_date okl_subsidy_pools_b.effective_from_date%TYPE;
896 lv_to_date okl_subsidy_pools_b.effective_to_date%TYPE;
897 lv_pool_description okl_subsidy_pools_v.short_description%TYPE;
898 lv_requestor VARCHAR2(100);
899 lv_budget_type fnd_lookups.meaning%TYPE;
900
901 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.GET_SUBSIDY_POOL_APPROVER';
902 l_debug_enabled VARCHAR2(10);
903 is_debug_procedure_on BOOLEAN;
904 is_debug_statement_on BOOLEAN; -- not using this as of now
905
906 BEGIN
907 l_debug_enabled := okl_debug_pub.check_log_enabled;
908 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
909 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
910 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call get_subsidy_pool_approver');
911 END IF;
912
913 IF(funcmode = 'RUN')THEN
914 l_user_id := wf_engine.GetItemAttrText(itemtype => itemtype,
915 itemkey => itemkey,
916 aname => G_WF_ITM_REQUESTOR_ID);
917
918 lv_receiving_event := wf_engine.GetItemAttrText(itemtype => itemtype,
919 itemkey => itemkey,
920 aname => 'LAUNCHING_EVENT');
921
922 resultout := 'COMPLETE:N'; -- default
923 IF l_user_id IS NOT NULL THEN
924 FOR l_fnd_users_rec IN l_fnd_users_csr(l_user_id) LOOP
925 wf_engine.SetItemAttrText (itemtype => itemtype,
926 itemkey => itemkey,
927 aname => G_WF_ITM_APPROVER,
928 avalue => l_fnd_users_rec.user_name);
929
930 lv_pool_name := wf_engine.GetItemAttrText(itemtype => itemtype,
931 itemkey => itemkey,
932 aname => G_WF_ITM_SUBSIDY_POOL_NAME);
933
934 lv_requestor := wf_engine.GetItemAttrText(itemtype => itemtype,
935 itemkey => itemkey,
936 aname => G_WF_ITM_REQUESTOR);
937
938 lv_currency_code := wf_engine.GetItemAttrText(itemtype => itemtype,
939 itemkey => itemkey,
940 aname => G_WF_ITM_POOL_CURRENCY);
941
942 IF(lv_receiving_event = G_POOL_APPROVAL_EVENT)THEN
943 -- prepare the message subject and message body for subsidy pool approval
944 -- OKL_SUB_POOL_REQ_APPROVAL_SUB (NAME, TOTAL_BUDGET, CURR)
945 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
946 itemkey => itemkey,
947 aname => G_WF_ITM_TOTAL_BUDGETS);
948 -- format this amount
949 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
950
951 fnd_message.set_name(G_APP_NAME,'OKL_SUB_POOL_REQ_APPROVAL_SUB');
952 fnd_message.set_token('NAME', lv_pool_name);
953 fnd_message.set_token('TOTAL_BUDGET', lv_total_budget);
954 fnd_message.set_token('CURR', lv_currency_code);
955
956 wf_engine.SetItemAttrText (itemtype => itemtype,
957 itemkey => itemkey,
958 aname => G_WF_ITM_MESSAGE_SUBJECT,
959 avalue => fnd_message.get);
960
961 -- OKL_SUB_POOL_REQ_APPROVAL_BOD (TOTAL_BUDGET, CURR, FROM_DATE, TO_DATE, POOL_DESCR, REQUESTOR) G_WF_ITM_MESSAGE_BODY
962 wf_engine.SetItemAttrText (itemtype => itemtype,
963 itemkey => itemkey,
964 aname => G_WF_ITM_MESSAGE_BODY,
965 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_msg_doc/'||itemkey
966 );
967
968 ELSIF(G_POOL_BUDGET_APPROVAL_EVENT = lv_receiving_event)THEN
969 -- prepare the message subject and message body for subsidy pool budget line approval
970 -- OKL_SUB_LINE_REQ_APPROVAL_SUB (BUDGET, CURR)
971 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
972 itemkey => itemkey,
973 aname => G_WF_ITM_BUDGET_AMOUNT);
974 -- format this amount
975 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
976 lv_budget_type := wf_engine.GetItemAttrText(itemtype => itemtype,
977 itemkey => itemkey,
978 aname => G_WF_ITM_BUDGET_TYPE);
979 lv_budget_type := okl_accounting_util.get_lookup_meaning('OKL_SUB_POOL_LINE_TYPE',lv_budget_type);
980
981 fnd_message.set_name(G_APP_NAME,'OKL_SUB_LINE_REQ_APPROVAL_SUB');
982 fnd_message.set_token('NAME', lv_pool_name);
983 fnd_message.set_token('BUDGET', lv_total_budget);
984 fnd_message.set_token('CURR', lv_currency_code);
985
986 wf_engine.SetItemAttrText (itemtype => itemtype,
987 itemkey => itemkey,
988 aname => G_WF_ITM_MESSAGE_SUBJECT,
989 avalue => fnd_message.get);
990
991 -- OKL_SUB_LINE_REQ_APPROVAL_BOD (BUDGET, FROM_DATE, NAME, REQUESTOR)
992 wf_engine.SetItemAttrText (itemtype => itemtype,
993 itemkey => itemkey,
994 aname => G_WF_ITM_MESSAGE_BODY,
995 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_line_msg_doc/'||itemkey
996 );
997
998 END IF;
999 resultout := 'COMPLETE:Y';
1000 END LOOP;
1001 END IF; -- l_user_id
1002 -- CANCEL mode
1003 ELSIF (funcmode = 'CANCEL') THEN
1004 resultout := 'COMPLETE:';
1005 RETURN;
1006 -- TIMEOUT mode
1007 ELSIF (funcmode = 'TIMEOUT') THEN
1008 resultout := 'COMPLETE:';
1009 RETURN;
1010 END IF; -- funcmode
1011
1012 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1013 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call get_subsidy_pool_approver');
1014 END IF;
1015
1016 EXCEPTION
1017 WHEN OTHERS THEN
1018 wf_core.context(G_PKG_NAME,l_api_name,itemtype,itemkey,TO_CHAR(actid),funcmode);
1019 RAISE;
1020 END get_subsidy_pool_approver;
1021
1022 PROCEDURE set_msg_attributes (itemtype IN VARCHAR2
1023 ,itemkey IN VARCHAR2
1024 ,actid IN NUMBER
1025 ,funcmode IN VARCHAR2
1026 ,resultout OUT NOCOPY VARCHAR2) IS
1027 lv_approval_status VARCHAR2(10);
1028 lv_receiving_event wf_events.name%TYPE;
1029 lv_pool_name okl_subsidy_pools_b.subsidy_pool_name%TYPE;
1030 lv_total_budget VARCHAR2(200);
1031 lv_currency_code okl_subsidy_pools_b.currency_code%TYPE;
1032 lv_from_date okl_subsidy_pools_b.effective_from_date%TYPE;
1033 lv_to_date okl_subsidy_pools_b.effective_to_date%TYPE;
1034 lv_pool_description okl_subsidy_pools_v.short_description%TYPE;
1035 lv_approver VARCHAR2(100);
1036 lv_budget_type fnd_lookups.meaning%TYPE;
1037 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'set_msg_attributes';
1038
1039 l_module CONSTANT fnd_log_messages.module%TYPE DEFAULT'okl.plsql.OKL_SUBSIDY_POOL_WF.SET_MSG_ATTRIBUTES';
1040 l_debug_enabled VARCHAR2(10);
1041 is_debug_procedure_on BOOLEAN;
1042
1043 BEGIN
1044
1045 l_debug_enabled := okl_debug_pub.check_log_enabled;
1046 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
1047 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1048 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call set_msg_attributes');
1049 END IF;
1050
1051 -- RUN mode
1052 IF(funcmode = 'RUN')THEN
1053 lv_approval_status := wf_engine.GetItemAttrText(itemtype => itemtype,
1054 itemkey => itemkey,
1055 aname => G_WF_ITM_RESULT);
1056 lv_receiving_event := wf_engine.GetItemAttrText(itemtype => itemtype,
1057 itemkey => itemkey,
1058 aname => 'LAUNCHING_EVENT');
1059
1060 lv_pool_name := wf_engine.GetItemAttrText(itemtype => itemtype,
1061 itemkey => itemkey,
1062 aname => G_WF_ITM_SUBSIDY_POOL_NAME);
1063
1064 lv_approver := wf_engine.GetItemAttrText(itemtype => itemtype,
1065 itemkey => itemkey,
1066 aname => G_WF_ITM_APPROVER);
1067
1068 lv_currency_code := wf_engine.GetItemAttrText(itemtype => itemtype,
1069 itemkey => itemkey,
1070 aname => G_WF_ITM_POOL_CURRENCY);
1071
1072 IF(G_WF_ITM_APPROVED_YN_YES = lv_approval_status)THEN
1073 IF(lv_receiving_event = G_POOL_APPROVAL_EVENT)THEN
1074 -- prepare the message subject and message body for subsidy pool approval
1075 -- OKL_SUB_POOL_REQ_APPROVED_SUB (NAME, TOTAL_BUDGET, CURR)
1076 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
1077 itemkey => itemkey,
1078 aname => G_WF_ITM_TOTAL_BUDGETS);
1079 -- format this amount
1080 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
1081
1082 fnd_message.set_name(G_APP_NAME,'OKL_SUB_POOL_REQ_APPROVED_SUB');
1083 fnd_message.set_token('NAME', lv_pool_name);
1084 fnd_message.set_token('TOTAL_BUDGET', lv_total_budget);
1085 fnd_message.set_token('CURR', lv_currency_code);
1086
1087 wf_engine.SetItemAttrText (itemtype => itemtype,
1088 itemkey => itemkey,
1089 aname => G_WF_ITM_MESSAGE_SUBJECT,
1090 avalue => fnd_message.get);
1091
1092 -- OKL_SUB_POOL_REQ_APPROVED_BOD (TOTAL_BUDGET, CURR, FROM_DATE, TO_DATE, POOL_DESCR, REQUESTOR) G_WF_ITM_MESSAGE_BODY
1093 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1094 itemkey => itemkey,
1095 aname => G_WF_ITM_FROM_DATE);
1096 lv_to_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1097 itemkey => itemkey,
1098 aname => G_WF_ITM_TO_DATE);
1099 lv_pool_description := wf_engine.GetItemAttrText(itemtype => itemtype,
1100 itemkey => itemkey,
1101 aname => G_WF_ITM_POOL_DESCR);
1102
1103 /*fnd_message.set_name(G_APP_NAME,'OKL_SUB_POOL_REQ_APPROVED_BOD');
1104 fnd_message.set_token('TOTAL_BUDGET',lv_total_budget);
1105 fnd_message.set_token('CURR',lv_currency_code);
1106 fnd_message.set_token('FROM_DATE',lv_from_date);
1107 fnd_message.set_token('TO_DATE',lv_to_date);
1108 fnd_message.set_token('POOL_DESCR',lv_pool_description);
1109 fnd_message.set_token('APPROVER',lv_approver);*/
1110
1111 wf_engine.SetItemAttrText (itemtype => itemtype,
1112 itemkey => itemkey,
1113 aname => G_WF_ITM_MESSAGE_BODY,
1114 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_msg_doc/'||itemkey);
1115
1116 ELSIF(G_POOL_BUDGET_APPROVAL_EVENT = lv_receiving_event)THEN
1117 -- prepare the message subject and message body for subsidy pool budget line approval
1118 -- OKL_SUB_LINE_REQ_APPROVED_SUB (BUDGET, CURR)
1119 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
1120 itemkey => itemkey,
1121 aname => G_WF_ITM_BUDGET_AMOUNT);
1122 -- format this amount
1123 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
1124 lv_budget_type := wf_engine.GetItemAttrText(itemtype => itemtype,
1125 itemkey => itemkey,
1126 aname => G_WF_ITM_BUDGET_TYPE);
1127 lv_budget_type := okl_accounting_util.get_lookup_meaning('OKL_SUB_POOL_LINE_TYPE',lv_budget_type);
1128
1129 fnd_message.set_name(G_APP_NAME,'OKL_SUB_LINE_REQ_APPROVED_SUB');
1130 fnd_message.set_token('NAME', lv_pool_name);
1131 fnd_message.set_token('BUDGET', lv_total_budget);
1132 fnd_message.set_token('CURR', lv_currency_code);
1133
1134 wf_engine.SetItemAttrText (itemtype => itemtype,
1135 itemkey => itemkey,
1136 aname => G_WF_ITM_MESSAGE_SUBJECT,
1137 avalue => fnd_message.get);
1138
1139 -- OKL_SUB_LINE_REQ_APPROVED_BOD (BUDGET, FROM_DATE, NAME, REQUESTOR)
1140 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1141 itemkey => itemkey,
1142 aname => G_WF_ITM_BUDGET_FROM_DATE);
1143
1144 lv_from_date := to_date(lv_from_date,'DD/MM/RRRR');
1145
1146 /*fnd_message.set_name(G_APP_NAME, 'OKL_SUB_LINE_REQ_APPROVED_BOD');
1147 fnd_message.set_token('BUDGET', lv_total_budget);
1148 fnd_message.set_token('CURR', lv_currency_code);
1149 fnd_message.set_token('FROM_DATE', lv_from_date);
1150 fnd_message.set_token('TYPE', lv_budget_type);
1151 fnd_message.set_token('NAME', lv_pool_name);
1152 fnd_message.set_token('APPROVER', lv_approver);*/
1153
1154 wf_engine.SetItemAttrText (itemtype => itemtype,
1155 itemkey => itemkey,
1156 aname => G_WF_ITM_MESSAGE_BODY,
1157 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_line_msg_doc/'||itemkey);
1158 END IF;
1159 resultout := 'COMPLETE:';
1160 ELSIF(G_WF_ITM_APPROVED_YN_NO = lv_approval_status)THEN
1161 IF(lv_receiving_event = G_POOL_APPROVAL_EVENT)THEN
1162 -- prepare the message subject and message body for subsidy pool approval
1163 -- OKL_SUB_POOL_REQ_REJECT_SUB (NAME, TOTAL_BUDGET, CURR)
1164 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
1165 itemkey => itemkey,
1166 aname => G_WF_ITM_TOTAL_BUDGETS);
1167 -- format this amount
1168 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
1169
1170 fnd_message.set_name(G_APP_NAME,'OKL_SUB_POOL_REQ_REJECT_SUB');
1171 fnd_message.set_token('NAME', lv_pool_name);
1172 fnd_message.set_token('TOTAL_BUDGET', lv_total_budget);
1173 fnd_message.set_token('CURR', lv_currency_code);
1174
1175 wf_engine.SetItemAttrText (itemtype => itemtype,
1176 itemkey => itemkey,
1177 aname => G_WF_ITM_MESSAGE_SUBJECT,
1178 avalue => fnd_message.get);
1179
1180 -- OKL_SUB_POOL_REQ_REJECT_BOD (TOTAL_BUDGET, CURR, FROM_DATE, TO_DATE, POOL_DESCR, REQUESTOR) G_WF_ITM_MESSAGE_BODY
1181 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1182 itemkey => itemkey,
1183 aname => G_WF_ITM_FROM_DATE);
1184 lv_to_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1185 itemkey => itemkey,
1186 aname => G_WF_ITM_TO_DATE);
1187 lv_pool_description := wf_engine.GetItemAttrText(itemtype => itemtype,
1188 itemkey => itemkey,
1189 aname => G_WF_ITM_POOL_DESCR);
1190
1191 /*fnd_message.set_name(G_APP_NAME,'OKL_SUB_POOL_REQ_REJECT_BOD');
1192 fnd_message.set_token('TOTAL_BUDGET',lv_total_budget);
1193 fnd_message.set_token('CURR',lv_currency_code);
1194 fnd_message.set_token('FROM_DATE',lv_from_date);
1195 fnd_message.set_token('TO_DATE',lv_to_date);
1196 fnd_message.set_token('POOL_DESCR',lv_pool_description);
1197 fnd_message.set_token('APPROVER',lv_approver);*/
1198
1199 wf_engine.SetItemAttrText (itemtype => itemtype,
1200 itemkey => itemkey,
1201 aname => G_WF_ITM_MESSAGE_BODY,
1202 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_msg_doc/'||itemkey);
1203
1204 ELSIF(G_POOL_BUDGET_APPROVAL_EVENT = lv_receiving_event)THEN
1205 -- prepare the message subject and message body for subsidy pool budget line approval
1206 -- OKL_SUB_LINE_REQ_REJECT_SUB (BUDGET, CURR)
1207 lv_total_budget := wf_engine.GetItemAttrText(itemtype => itemtype,
1208 itemkey => itemkey,
1209 aname => G_WF_ITM_BUDGET_AMOUNT);
1210 -- format this amount
1211 lv_total_budget := okl_accounting_util.format_amount(lv_total_budget,lv_currency_code);
1212 lv_budget_type := wf_engine.GetItemAttrText(itemtype => itemtype,
1213 itemkey => itemkey,
1214 aname => G_WF_ITM_BUDGET_TYPE);
1215 lv_budget_type := okl_accounting_util.get_lookup_meaning('OKL_SUB_POOL_LINE_TYPE',lv_budget_type);
1216
1217 fnd_message.set_name(G_APP_NAME,'OKL_SUB_LINE_REQ_REJECT_SUB');
1218 fnd_message.set_token('NAME', lv_pool_name);
1219 fnd_message.set_token('BUDGET', lv_total_budget);
1220 fnd_message.set_token('CURR', lv_currency_code);
1221
1222 wf_engine.SetItemAttrText (itemtype => itemtype,
1223 itemkey => itemkey,
1224 aname => G_WF_ITM_MESSAGE_SUBJECT,
1225 avalue => fnd_message.get);
1226
1227 -- OKL_SUB_LINE_REQ_REJECT_BOD (BUDGET, FROM_DATE, NAME, REQUESTOR)
1228 lv_from_date := wf_engine.GetItemAttrDate(itemtype => itemtype,
1229 itemkey => itemkey,
1230 aname => G_WF_ITM_BUDGET_FROM_DATE);
1231
1232 lv_from_date := to_date(lv_from_date,'DD/MM/RRRR');
1233
1234 /*fnd_message.set_name(G_APP_NAME, 'OKL_SUB_LINE_REQ_REJECT_BOD');
1235 fnd_message.set_token('BUDGET', lv_total_budget);
1236 fnd_message.set_token('CURR', lv_currency_code);
1237 fnd_message.set_token('FROM_DATE', lv_from_date);
1238 fnd_message.set_token('TYPE', lv_budget_type);
1239 fnd_message.set_token('NAME', lv_pool_name);
1240 fnd_message.set_token('APPROVER', lv_approver);*/
1241
1242 wf_engine.SetItemAttrText (itemtype => itemtype,
1243 itemkey => itemkey,
1244 aname => G_WF_ITM_MESSAGE_BODY,
1245 avalue => 'plsql:okl_subsidy_pool_wf.get_pool_line_msg_doc/'||itemkey);
1246 END IF;
1247 resultout := 'COMPLETE:';
1248 ELSE
1249 NULL; -- status other than approval or rejected, no operation
1250 END IF; -- end of approval value comparision
1251 END IF; -- end of run mode
1252
1253 -- CANCEL mode
1254 IF (funcmode = 'CANCEL') THEN
1255 resultout := 'COMPLETE:';
1256 RETURN;
1257 END IF;
1258
1259 -- TIMEOUT mode
1260 IF (funcmode = 'TIMEOUT') THEN
1261 resultout := 'COMPLETE:';
1262 RETURN;
1263 END IF;
1264
1265 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1266 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call set_msg_attributes');
1267 END IF;
1268
1269 EXCEPTION
1270 WHEN OTHERS THEN
1271 wf_core.context(G_PKG_NAME,l_api_name,itemtype,itemkey,TO_CHAR(actid),funcmode);
1272 RAISE;
1273 END set_msg_attributes;
1274
1275 PROCEDURE raise_pool_event_approval(p_api_version IN NUMBER
1276 ,p_init_msg_list IN VARCHAR2
1277 ,x_return_status OUT NOCOPY VARCHAR2
1278 ,x_msg_count OUT NOCOPY NUMBER
1279 ,x_msg_data OUT NOCOPY VARCHAR2
1280 ,p_subsidy_pool_id IN okl_subsidy_pools_b.id%TYPE) IS
1281
1282 l_api_name CONSTANT VARCHAR2(150) DEFAULT 'raise_pool_event';
1283 l_parameter_list wf_parameter_list_t;
1284 l_approval_option VARCHAR2(10);
1285 l_requester VARCHAR2(200);
1286 l_name VARCHAR2(200);
1287 -- cursor to fetch the initial budget amount and the pool details
1288 -- at this point of approval, only one budget line is allowed.
1289 CURSOR c_get_pool_info_csr (cp_subsidy_pool_id okl_subsidy_pools_b.id%TYPE)IS
1290 SELECT pool.subsidy_pool_name
1291 ,pool.effective_from_date
1292 ,pool.effective_to_date
1293 ,pool.total_budgets
1294 ,pool.currency_code
1295 ,pool.short_description
1296 ,bud.budget_amount
1297 FROM okl_subsidy_pools_v pool
1298 ,okl_subsidy_pool_budgets_b bud
1299 WHERE pool.id = cp_subsidy_pool_id
1300 AND pool.id = bud.subsidy_pool_id;
1301 cv_get_pool_info c_get_pool_info_csr%ROWTYPE;
1302
1303 lv_wf_item_key NUMBER;
1304
1305 -- Get the valid application id from FND
1306 CURSOR c_get_app_id_csr
1307 IS
1308 SELECT APPLICATION_ID
1309 FROM FND_APPLICATION
1310 WHERE APPLICATION_SHORT_NAME = G_APP_NAME;
1311
1312 -- Get the Transaction Type Id from OAM
1313 CURSOR c_get_trx_type_csr(cp_trx_type VARCHAR2) IS
1314 SELECT transaction_type_id,
1315 fnd_application_id
1316 FROM ame_transaction_types_v
1317 --WHERE transaction_type_id = cp_trx_type;
1318 -- 12754397: RGOOTY
1319 WHERE DESCRIPTION = cp_trx_type;
1320 c_get_trx_type_csr_rec c_get_trx_type_csr%ROWTYPE;
1321
1322 CURSOR l_trx_try_csr IS
1323 SELECT id
1324 FROM okl_trx_types_b
1325 WHERE trx_type_class = G_TRX_TYPE_POOL_APPROVAL;
1326
1327 l_application_id fnd_application.application_id%TYPE;
1328 l_trans_appl_id ame_calling_apps.application_id%TYPE;
1329 l_trans_type_id ame_calling_apps.transaction_type_id%TYPE;
1330
1331 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.RAISE_POOL_EVENT_APPROVAL';
1332 l_debug_enabled VARCHAR2(10);
1333 is_debug_procedure_on BOOLEAN;
1334 is_debug_statement_on BOOLEAN;
1335
1336 BEGIN
1337 l_debug_enabled := okl_debug_pub.check_log_enabled;
1338 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
1339 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1340 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call raise_pool_event_approval');
1341 END IF;
1342
1343 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1344 -- Call start_activity to create savepoint, check compatibility and initialize message list
1345 x_return_status := OKL_API.START_ACTIVITY(l_api_name,
1346 p_init_msg_list,
1347 '_PVT',
1348 x_return_status);
1349 -- Check if activity started successfully
1350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1353 RAISE OKL_API.G_EXCEPTION_ERROR;
1354 END IF;
1355
1356 -- check for logging on STATEMENT level
1357 is_debug_statement_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_STATEMENT);
1358
1359 l_get_agent(p_user_id => fnd_global.user_id
1360 ,x_return_status => x_return_status
1361 ,x_name => l_requester
1362 ,x_description => l_name);
1363 -- write to log
1364 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1365 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1366 l_module,
1367 'l_get_agent return staus '||x_return_status||' l_requester '||l_requester||' l_name '||l_name
1368 );
1369 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1370
1371 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1372 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1373 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
1374 RAISE OKL_API.G_EXCEPTION_ERROR;
1375 END IF;
1376
1377 l_approval_option := fnd_profile.value('OKL_SUBSIDY_POOL_APPROVAL_PROCESS');
1378 IF(l_approval_option = G_SUBSIDY_POOL_APPROVAL_AME)THEN
1379 -- Get the Application ID
1380 OPEN c_get_app_id_csr;
1381 FETCH c_get_app_id_csr INTO l_application_id;
1382 IF c_get_app_id_csr%NOTFOUND THEN
1383 OKL_API.set_message(p_app_name => G_APP_NAME,
1384 p_msg_name => G_NO_MATCHING_RECORD,
1385 p_token1 => G_COL_NAME_TOKEN,
1386 p_token1_value => 'Application id');
1387 RAISE OKL_API.G_EXCEPTION_ERROR;
1388 END IF;
1389 CLOSE c_get_app_id_csr;
1390
1391 -- Get the Transaction Type ID
1392 OPEN c_get_trx_type_csr(G_TRANS_APP_NAME_POOL);
1393 FETCH c_get_trx_type_csr INTO l_trans_type_id,
1394 l_trans_appl_id;
1395 IF c_get_trx_type_csr%NOTFOUND THEN
1396 OKL_API.set_message(p_app_name => G_APP_NAME,
1397 p_msg_name => G_NO_MATCHING_RECORD,
1398 p_token1 => G_COL_NAME_TOKEN,
1399 p_token1_value => 'AME Transcation TYPE id, Application id');
1400 RAISE OKL_API.G_EXCEPTION_ERROR;
1401 END IF;
1402 CLOSE c_get_trx_type_csr;
1403 IF l_application_id = l_trans_appl_id THEN
1404 wf_event.AddParameterToList(G_WF_ITM_APPLICATION_ID,l_application_id,l_parameter_list);
1405 wf_event.AddParameterToList(G_WF_ITM_TRANSACTION_TYPE_ID,l_trans_type_id,l_parameter_list);
1406 END IF;
1407 -- write to log
1408 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1409 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1410 l_module,
1411 'l_approval_option '||l_approval_option||' raising budget line approval event '
1412 );
1413 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1414
1415 ELSIF(l_approval_option = G_SUBSIDY_POOL_APPROVAL_WF)THEN
1416 -- write to log
1417 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1418 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1419 l_module,
1420 'l_approval_option '||l_approval_option||' raising budget line approval event '
1421 );
1422 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1423 ELSE
1424 RAISE OKL_API.G_EXCEPTION_ERROR;
1425 END IF;
1426
1427 IF(l_approval_option IN (G_SUBSIDY_POOL_APPROVAL_WF, G_SUBSIDY_POOL_APPROVAL_AME))THEN
1428 OPEN c_get_pool_info_csr (cp_subsidy_pool_id => p_subsidy_pool_id);
1429 FETCH c_get_pool_info_csr INTO cv_get_pool_info;
1430 CLOSE c_get_pool_info_csr;
1431 wf_event.AddParameterToList(G_WF_ITM_SUBSIDY_POOL_ID,p_subsidy_pool_id,l_parameter_list);
1432 wf_event.AddParameterToList(G_WF_ITM_SUBSIDY_POOL_NAME,cv_get_pool_info.subsidy_pool_name,l_parameter_list);
1433 wf_event.AddParameterToList(G_WF_ITM_FROM_DATE,to_date(cv_get_pool_info.effective_from_date,'DD/MM/RRRR'),l_parameter_list);
1434 wf_event.AddParameterToList(G_WF_ITM_TO_DATE,to_date(cv_get_pool_info.effective_to_date,'DD/MM/RRRR'),l_parameter_list);
1435 wf_event.AddParameterToList(G_WF_ITM_TOTAL_BUDGETS,cv_get_pool_info.budget_amount,l_parameter_list);
1436 wf_event.AddParameterToList(G_WF_ITM_POOL_CURRENCY,cv_get_pool_info.currency_code,l_parameter_list);
1437 wf_event.AddParameterToList(G_WF_ITM_POOL_DESCR,cv_get_pool_info.short_description,l_parameter_list);
1438
1439 wf_event.AddParameterToList(G_WF_ITM_TRANSACTION_ID,p_subsidy_pool_id,l_parameter_list);
1440
1441 wf_event.AddParameterToList(G_WF_ITM_REQUESTOR,l_requester,l_parameter_list);
1442 wf_event.AddParameterToList(G_WF_ITM_REQUESTOR_ID,fnd_global.user_id,l_parameter_list);
1443
1444 lv_wf_item_key := get_item_key_wf;
1445 -- Raise Event
1446 wf_event.RAISE(p_event_name => G_POOL_APPROVAL_EVENT,
1447 p_event_key => lv_wf_item_key,
1448 p_parameters => l_parameter_list);
1449 l_parameter_list.DELETE;
1450 END IF;
1451
1452 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,x_msg_data => x_msg_data);
1453
1454 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1455 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call raise_pool_event_approval');
1456 END IF;
1457
1458 EXCEPTION
1459 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1460 x_return_status := OKL_API.G_RET_STS_ERROR;
1461 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1462 p_api_name => l_api_name,
1463 p_pkg_name => G_PKG_NAME,
1464 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1465 x_msg_count => x_msg_count,
1466 x_msg_data => x_msg_data,
1467 p_api_type => G_API_TYPE);
1468 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1469 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1470 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1471 p_api_name => l_api_name,
1472 p_pkg_name => G_PKG_NAME,
1473 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1474 x_msg_count => x_msg_count,
1475 x_msg_data => x_msg_data,
1476 p_api_type => G_API_TYPE);
1477 WHEN OTHERS THEN
1478 -- store SQL error message on message stack
1479 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1480 p_api_name => l_api_name,
1481 p_pkg_name => G_PKG_NAME,
1482 p_exc_name => 'OTHERS',
1483 x_msg_count => x_msg_count,
1484 x_msg_data => x_msg_data,
1485 p_api_type => G_API_TYPE);
1486 END raise_pool_event_approval;
1487
1488 PROCEDURE raise_budget_event_approval(p_api_version IN NUMBER
1489 ,p_init_msg_list IN VARCHAR2
1490 ,x_return_status OUT NOCOPY VARCHAR2
1491 ,x_msg_count OUT NOCOPY NUMBER
1492 ,x_msg_data OUT NOCOPY VARCHAR2
1493 ,p_subsidy_pool_budget_id IN okl_subsidy_pool_budgets_b.id%TYPE) IS
1494 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'raise_budget_event';
1495 l_parameter_list wf_parameter_list_t;
1496 l_approval_option VARCHAR2(10);
1497 l_requester VARCHAR2(200);
1498 l_name VARCHAR2(200);
1499 lv_wf_item_key NUMBER;
1500
1501 CURSOR c_get_budget_info_csr (cp_pool_budget_id okl_subsidy_pool_budgets_b.id%TYPE) IS
1502 SELECT sub.subsidy_pool_name
1503 ,sub.id subsidy_pool_id
1504 ,sub.effective_from_date pool_start_date
1505 ,sub.effective_to_date
1506 ,sub.total_budgets
1507 ,bud.budget_type_code
1508 ,bud.effective_from_date budget_line_date
1509 ,bud.budget_amount
1510 ,sub.currency_code
1511 FROM okl_subsidy_pools_b sub
1512 ,okl_subsidy_pool_budgets_b bud
1513 WHERE bud.subsidy_pool_id = sub.id
1514 AND bud.id = cp_pool_budget_id;
1515 cv_get_budget_info c_get_budget_info_csr%ROWTYPE;
1516
1517 -- Get the valid application id from FND
1518 CURSOR c_get_app_id_csr
1519 IS
1520 SELECT APPLICATION_ID
1521 FROM FND_APPLICATION
1522 WHERE APPLICATION_SHORT_NAME = G_APP_NAME;
1523
1524 -- Get the Transaction Type Id from OAM
1525 CURSOR c_get_trx_type_csr(cp_trx_type VARCHAR2) IS
1526 SELECT transaction_type_id,
1527 fnd_application_id
1528 FROM ame_transaction_types_v
1529 --WHERE transaction_type_id = cp_trx_type;
1530 -- 12754397: RGOOTY
1531 WHERE description = cp_trx_type;
1532 c_get_trx_type_csr_rec c_get_trx_type_csr%ROWTYPE;
1533
1534 CURSOR l_trx_try_csr IS
1535 SELECT id
1536 FROM okl_trx_types_b
1537 WHERE trx_type_class = G_TRX_TYPE_POOL_APPROVAL;
1538
1539 l_application_id fnd_application.application_id%TYPE;
1540 l_trans_appl_id ame_calling_apps.application_id%TYPE;
1541 l_trans_type_id ame_calling_apps.transaction_type_id%TYPE;
1542
1543 l_module CONSTANT fnd_log_messages.module%TYPE := 'okl.plsql.OKL_SUBSIDY_POOL_WF.RAISE_BUDGET_EVENT_APPROVAL';
1544 l_debug_enabled VARCHAR2(10);
1545 is_debug_procedure_on BOOLEAN;
1546 is_debug_statement_on BOOLEAN;
1547 BEGIN
1548 l_debug_enabled := okl_debug_pub.check_log_enabled;
1549 is_debug_procedure_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_PROCEDURE);
1550 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1551 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'begin debug OKLRBWFB.pls call raise_budget_event_approval');
1552 END IF;
1553 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1554 -- Call start_activity to create savepoint, check compatibility and initialize message list
1555 x_return_status := OKL_API.START_ACTIVITY(l_api_name,
1556 p_init_msg_list,
1557 '_PVT',
1558 x_return_status);
1559 -- Check if activity started successfully
1560 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1561 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1562 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1563 RAISE OKL_API.G_EXCEPTION_ERROR;
1564 END IF;
1565
1566 -- check for logging on STATEMENT level
1567 is_debug_statement_on := okl_debug_pub.check_log_on(l_module,FND_LOG.LEVEL_STATEMENT);
1568
1569 l_get_agent(p_user_id => fnd_global.user_id
1570 ,x_return_status => x_return_status
1571 ,x_name => l_requester
1572 ,x_description => l_name);
1573 -- write to log
1574 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1575 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1576 l_module,
1577 'l_get_agent return staus '||x_return_status||' l_requester '||l_requester||' l_name '||l_name
1578 );
1579 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1580
1581 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1582 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1583 ELSIF (x_return_Status = OKL_API.G_RET_STS_ERROR) THEN
1584 RAISE OKL_API.G_EXCEPTION_ERROR;
1585 END IF;
1586
1587 l_approval_option := fnd_profile.value('OKL_SUBSIDY_POOL_APPROVAL_PROCESS');
1588 IF(l_approval_option = G_SUBSIDY_POOL_APPROVAL_AME)THEN
1589 -- Get the Application ID
1590 OPEN c_get_app_id_csr;
1591 FETCH c_get_app_id_csr INTO l_application_id;
1592 IF c_get_app_id_csr%NOTFOUND THEN
1593 OKL_API.set_message(p_app_name => G_APP_NAME,
1594 p_msg_name => G_NO_MATCHING_RECORD,
1595 p_token1 => G_COL_NAME_TOKEN,
1596 p_token1_value => 'Application id');
1597 RAISE OKL_API.G_EXCEPTION_ERROR;
1598 END IF;
1599 CLOSE c_get_app_id_csr;
1600
1601 -- Get the Transaction Type ID
1602 OPEN c_get_trx_type_csr(G_TRANS_APP_NAME_LINE);
1603 FETCH c_get_trx_type_csr INTO l_trans_type_id,
1604 l_trans_appl_id;
1605 IF c_get_trx_type_csr%NOTFOUND THEN
1606 OKL_API.set_message(p_app_name => G_APP_NAME,
1607 p_msg_name => G_NO_MATCHING_RECORD,
1608 p_token1 => G_COL_NAME_TOKEN,
1609 p_token1_value => 'AME Transcation TYPE id, Application id');
1610 RAISE OKL_API.G_EXCEPTION_ERROR;
1611 END IF;
1612 CLOSE c_get_trx_type_csr;
1613 IF l_application_id = l_trans_appl_id THEN
1614 wf_event.AddParameterToList(G_WF_ITM_APPLICATION_ID,l_application_id,l_parameter_list);
1615 wf_event.AddParameterToList(G_WF_ITM_TRANSACTION_TYPE_ID,l_trans_type_id,l_parameter_list);
1616 END IF;
1617 -- write to log
1618 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1619 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1620 l_module,
1621 'l_approval_option '||l_approval_option||' raising budget line approval event '
1622 );
1623 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1624
1625 ELSIF(l_approval_option = G_SUBSIDY_POOL_APPROVAL_WF)THEN
1626 -- write to log
1627 IF(NVL(l_debug_enabled,'N')='Y' AND is_debug_statement_on) THEN
1628 okl_debug_pub.log_debug(FND_LOG.LEVEL_STATEMENT,
1629 l_module,
1630 'l_approval_option '||l_approval_option||' raising budget line approval event '
1631 );
1632 END IF; -- end of NVL(l_debug_enabled,'N')='Y'
1633 ELSE
1634 RAISE OKL_API.G_EXCEPTION_ERROR;
1635 END IF;
1636 IF(l_approval_option IN (G_SUBSIDY_POOL_APPROVAL_WF, G_SUBSIDY_POOL_APPROVAL_AME))THEN
1637 OPEN c_get_budget_info_csr(cp_pool_budget_id => p_subsidy_pool_budget_id);
1638 FETCH c_get_budget_info_csr INTO cv_get_budget_info;
1639 CLOSE c_get_budget_info_csr;
1640
1641 wf_event.AddParameterToList(G_WF_ITM_SUBSIDY_POOL_ID,cv_get_budget_info.subsidy_pool_id,l_parameter_list); -- pool id
1642 wf_event.AddParameterToList(G_WF_ITM_SUBSIDY_POOL_NAME,cv_get_budget_info.subsidy_pool_name,l_parameter_list); -- pool name
1643 wf_event.AddParameterToList(G_WF_ITM_FROM_DATE,cv_get_budget_info.pool_start_date,l_parameter_list); -- pool start date
1644 wf_event.AddParameterToList(G_WF_ITM_TO_DATE,cv_get_budget_info.effective_to_date,l_parameter_list); -- pool end date
1645 wf_event.AddParameterToList(G_WF_ITM_TOTAL_BUDGETS,cv_get_budget_info.total_budgets,l_parameter_list); -- pool total budget
1646
1647 wf_event.AddParameterToList(G_WF_ITM_BUDGET_ID,p_subsidy_pool_budget_id,l_parameter_list); -- budget line id
1648 wf_event.AddParameterToList(G_WF_ITM_BUDGET_AMOUNT,cv_get_budget_info.budget_amount,l_parameter_list); -- budget amount
1649 wf_event.AddParameterToList(G_WF_ITM_BUDGET_FROM_DATE,to_date(cv_get_budget_info.budget_line_date,'DD/MM/RRRR'),l_parameter_list); -- budget line date
1650 wf_event.AddParameterToList(G_WF_ITM_BUDGET_TYPE,cv_get_budget_info.budget_type_code,l_parameter_list); -- type of budget (Addition or Reduction)
1651 wf_event.AddParameterToList(G_WF_ITM_POOL_CURRENCY,cv_get_budget_info.currency_code,l_parameter_list); -- pool currency code
1652
1653 wf_event.AddParameterToList(G_WF_ITM_TRANSACTION_ID,p_subsidy_pool_budget_id,l_parameter_list);
1654
1655 wf_event.AddParameterToList(G_WF_ITM_REQUESTOR,l_requester,l_parameter_list);
1656 wf_event.AddParameterToList(G_WF_ITM_REQUESTOR_ID,fnd_global.user_id,l_parameter_list);
1657
1658 lv_wf_item_key := get_item_key_wf;
1659 -- Raise Event
1660 wf_event.RAISE(p_event_name => G_POOL_BUDGET_APPROVAL_EVENT,
1661 p_event_key => lv_wf_item_key,
1662 p_parameters => l_parameter_list);
1663 l_parameter_list.DELETE;
1664 END IF;
1665
1666 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,x_msg_data => x_msg_data);
1667 IF(l_debug_enabled='Y' AND is_debug_procedure_on) THEN
1668 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,l_module,'end debug OKLRBWFB.pls call raise_budget_event_approval');
1669 END IF;
1670
1671 EXCEPTION
1672 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1673 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1674 p_api_name => l_api_name,
1675 p_pkg_name => G_PKG_NAME,
1676 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1677 x_msg_count => x_msg_count,
1678 x_msg_data => x_msg_data,
1679 p_api_type => G_API_TYPE);
1680 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1681 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1682 p_api_name => l_api_name,
1683 p_pkg_name => G_PKG_NAME,
1684 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1685 x_msg_count => x_msg_count,
1686 x_msg_data => x_msg_data,
1687 p_api_type => G_API_TYPE);
1688 WHEN OTHERS THEN
1689 -- store SQL error message on message stack
1690 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1691 p_api_name => l_api_name,
1692 p_pkg_name => G_PKG_NAME,
1693 p_exc_name => 'OTHERS',
1694 x_msg_count => x_msg_count,
1695 x_msg_data => x_msg_data,
1696 p_api_type => G_API_TYPE);
1697 END raise_budget_event_approval;
1698
1699 END okl_subsidy_pool_wf;