[Home] [Help]
PACKAGE BODY: APPS.GCS_ADJ_APPROVAL_WF_PKG
Source
1 PACKAGE BODY GCS_ADJ_APPROVAL_WF_PKG AS
2 /* $Header: gcsameintgb.pls 120.0 2007/11/21 18:09:37 hakumar ship $ */
3 --------------------------------------------------------------
4 -- Global Variables --
5 --------------------------------------------------------------
6 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
8 G_MODULE_NAME CONSTANT VARCHAR2(100) := 'GCS_INTG_APPROVALS_PKG.';
9 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
10
11
12 --------------------------------------------------------------------------------
13 -- PRIVATE CONSTANTS
14 --------------------------------------------------------------------------------
15
16 G_PKG_NAME constant varchar2(30) := 'GCS_INTG_APPROVALS_PKG';
17
18 -- Item Type Constants
19 G_FCHAPPR constant varchar2(30) := 'GCSADJ';
20 G_FCH_APPROVAL_PROCESS constant varchar2(30) := 'MASTER';
21 G_FCH_APPLICATION_ID constant number := 266;
22
23 -- Workflow Directory Services Constants
24 G_PER constant varchar2(30) := 'PER';
25 G_FND_USR constant varchar2(30) := 'FND_USR';
26
27 -- Types and constants representing all notification response values
28 G_APPROVE constant varchar2(30) := 'APPROVED';
29 G_REJECT constant varchar2(30) := 'REJECTED';
30 G_NO_RESPONSE constant varchar2(30) := 'NO_RESPONSE';
31 G_SUCCESS constant varchar2(30) := 'SUCCESS';
32 G_FAILURE constant varchar2(30) := 'FAILURE';
33
34 -- Types and constants representing yes/no values
35 G_YES constant varchar2(1) := 'Y';
36 G_NO constant varchar2(1) := 'N';
37
38 -- Types and constants representing boolean values
39 G_TRUE constant varchar2(30) := 'TRUE';
40 G_FALSE constant varchar2(30) := 'FALSE';
41
42 -- Workflow
43 t_item_type WF_ITEMS.item_type%TYPE;
44 t_item_key WF_ITEMS.item_key%TYPE;
45
46 -- Oracle Applications
47 t_org_id number;
48 t_user_id FND_USER.user_id%TYPE;
49 t_user_name FND_USER.user_name%TYPE;
50 t_responsibility_id FND_RESPONSIBILITY.responsibility_id%TYPE;
51 t_application_id FND_APPLICATION.application_id%TYPE;
52
53 -- Oracle Approval Management (AME)
54 t_approval_status varchar2(50);
55 g_next_approvers ame_util.approversTable2;
56 g_next_approver ame_util.approverRecord2;
57
58 -- Workflow Directory Services
59 t_id number;
60 t_name varchar2(30);
61 t_display_name varchar2(80);
62 t_orig_system varchar2(30);
63
64 -- API Error Messages
65 t_msg_count number;
66 t_msg_data varchar2(2000);
67
68 --------------------------------------------------------------------------------
69 -- PRIVATE SPECIFICATIONS
70 --------------------------------------------------------------------------------
71
72 PROCEDURE BuildErrorMsg (
73 p_api_name in varchar2
74 ,p_item_type in varchar2
75 ,p_item_key in varchar2
76 ,p_act_id in number);
77
78
79 --------------------------------------------------------------------------------
80 -- PUBLIC BODIES
81 --------------------------------------------------------------------------------
82 PROCEDURE Fch_Check_Approvals (p_item_type IN VARCHAR2,
83 p_item_key IN varchar2,
84 p_act_id IN NUMBER,
85 p_funcmode IN VARCHAR2,
86 x_result_out out nocopy varchar2) IS
87
88 l_api_name constant varchar2(200) := 'fch_check_approvals';
89 l_debug_info VARCHAR2(2000);
90 l_calling_sequence VARCHAR2(2000);
91
92 l_entry_id gcs_entry_headers.entry_id%type;
93
94 l_user_name t_user_name%TYPE;
95 l_submitter_orig_system t_orig_system%TYPE;
96 l_submitter_id t_id%TYPE;
97 l_submitter_name t_name%TYPE;
98 l_submitter_display_name t_display_name%TYPE;
99
100 l_request_id NUMBER(15);
101 l_entity_id gcs_entry_headers.entity_id%type;
102 BEGIN
103
104 l_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
105 p_item_key,
106 'FCH_ENTRY_ID');
107
108 l_entity_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
109 p_item_key,
110 'FCH_ENTITY_ID');
111
112 l_calling_sequence := l_api_name;
113 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, 'CALLING_SEQUENCE', l_calling_sequence);
114
115 -- Set all the Submitter information on the Item Attributes
116 l_user_name := WF_ENGINE.GetItemAttrText(p_item_type, p_item_key, 'USER_NAME');
117
118 l_debug_info := 'Before Calling get Role Info ' || p_item_key ;
119 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
120 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
121 l_api_name,l_debug_info);
122 END IF;
123
124 WF_DIRECTORY.GetRoleOrigSysInfo(
125 l_user_name,
126 l_submitter_orig_system,
127 l_submitter_id);
128
129 WF_DIRECTORY.GetRoleName(
130 l_submitter_orig_system
131 ,l_submitter_id
132 ,l_submitter_name
133 ,l_submitter_display_name);
134
135 WF_ENGINE.SetItemAttrText(
136 p_item_type, p_item_key, 'FCH_SUBMITTED_BY', l_submitter_id);
137
138 WF_ENGINE.SetItemAttrText(
139 p_item_type, p_item_key, 'FCH_SUBMITTER_NAME', l_submitter_name);
140
141 WF_ENGINE.SetItemOwner(
142 p_item_type, p_item_key, l_submitter_name);
143
144
145 -- Set the Approval information on the Item Attributes
146 WF_ENGINE.SetItemAttrDate(
147 p_item_type, p_item_key, 'REQUEST_DATE', trunc(sysdate));
148
149 l_debug_info := 'Before calling Update GCS Entry Headers, item_key: ' || p_item_key || 'Submitter Name '|| l_submitter_name;
150
151 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
152 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
153 l_api_name,l_debug_info);
154 END IF;
155
156 --- By default adjustment is approved, and later if there are
157 -- approvers on the list then gets changed to IN_PROGRESS
158
159 UPDATE GCS_ENTRY_HEADERS
160 SET approval_status_code = 'IN_PROGRESS'
161 WHERE entry_id = p_item_key;
162
163 -- Create PDF file to be attached to Notification
164 l_request_id := fnd_request.submit_request(
165 application => 'GCS',
166 program => 'FCH_PDF_GEN',
167 sub_request => FALSE,
168 argument1 => l_entry_id,
169 argument2 => 'NA',
170 argument3 => null);
171
172 l_debug_info := 'Generate PDF request ID ' || to_char(l_request_id) ;
173
174 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
175 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
176 l_api_name,l_debug_info);
177 END IF;
178
179
180 x_result_out := WF_ENGINE.eng_completed || ':' || G_YES;
181
182 EXCEPTION
183
184 when FND_API.G_EXC_ERROR or FND_API.G_EXC_UNEXPECTED_ERROR then
185 BuildErrorMsg(l_api_name, p_item_type, p_item_key, p_act_id);
186 raise;
187
188 when others then
189 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
190 BuildErrorMsg(l_api_name, p_item_type, p_item_key, p_act_id);
191 raise;
192
193 end Fch_Check_approvals;
194
195
196 PROCEDURE create_gcsadj_process(p_entry_id IN NUMBER
197 ,p_user_id IN NUMBER
198 ,p_user_name IN VARCHAR2
199 ,p_orig_entry_id IN NUMBER
200 ,p_ledger_id IN NUMBER
201 ,p_cal_period_name IN VARCHAR2
202 ,p_conversion_type IN VARCHAR2
203 ,p_writeback_flag IN VARCHAR2
204 ,p_wfitemkey OUT NOCOPY VARCHAR2) IS
205 /*-----------------------------------------------------------------------+
206 | Cursor Declarations |
207 +-----------------------------------------------------------------------*/
208
209 CURSOR csr_gcs_entry_details IS
210 SELECT ENTRY_ID
211 , ENTRY_NAME
212 , HIERARCHY_ID
213 , ENTITY_ID
214 , CURRENCY_CODE
215 , BALANCE_TYPE_CODE
216 , START_CAL_PERIOD_ID
217 , END_CAL_PERIOD_ID
218 , DESCRIPTION
219 , ENTRY_TYPE_CODE
220 , CATEGORY_CODE
221 , CREATED_BY
222 , WORKFLOW_KEY
223 FROM GCS_ENTRY_HEADERS
224 WHERE ENTRY_ID = p_entry_id;
225
226 l_entry_id gcs_entry_headers.entry_id%type;
227 l_entry_name gcs_entry_headers.entry_name%type;
228 l_hierarchy_id gcs_entry_headers.hierarchy_id%type;
229 l_entity_id gcs_entry_headers.entity_id%type;
230 l_currency_code gcs_entry_headers.currency_code%type;
231 l_balance_type_code gcs_entry_headers.balance_type_code%type;
232 l_start_cal_period_id gcs_entry_headers.start_cal_period_id%type;
233 l_end_cal_period_id gcs_entry_headers.end_cal_period_id%type;
234 l_description gcs_entry_headers.description%type;
235 l_entry_type_code gcs_entry_headers.entry_type_code%type;
236 l_category_code gcs_entry_headers.category_code%type;
237 l_submitted_by gcs_entry_headers.created_by%type;
238 l_itemkey VARCHAR2(80);
239
240 l_entity_name fem_entities_tl.entity_name%type;
241 l_hierarchy_name gcs_hierarchies_tl.hierarchy_name%type;
242 l_period_name fem_cal_periods_tl.cal_period_name%type;
243
244 Cursor c_entity_details IS
245 Select Entity_name
246 From fem_entities_tl
247 where entity_id = l_entity_id
248 and language = userenv('LANG');
249
250 Cursor c_hierarchy_details IS
251 Select hierarchy_name
252 From gcs_hierarchies_tl
253 Where hierarchy_id = l_hierarchy_id
254 and language = userenv('LANG');
255
256 Cursor c_period_details IS
257 Select fctl.cal_period_name
258 From fem_cal_periods_tl fctl
259 Where fctl.cal_period_id = l_start_cal_period_id
260 and fctl.language = USERENV('LANG');
261
262
263 l_api_name CONSTANT VARCHAR2(200) := 'create_gcsadj_process';
264 l_debug_info VARCHAR2(2000);
265 l_calling_sequence VARCHAR2(2000);
266 l_num NUMBER;
267
268 l_message_text Varchar2(1000);
269
270 BEGIN
271 l_debug_info := 'Start Adjustment Approval Workflow Process';
272 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
273 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
274 l_api_name,l_debug_info);
275 END IF;
276
277
278 l_debug_info := 'Before ame_api2.clearAllApprovals';
279 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
280 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
281 l_api_name,l_debug_info);
282 END IF;
283
284 ame_api2.clearAllApprovals( applicationidin => G_FCH_APPLICATION_ID,
285 transactiontypein => 'GCS_ADJUSTMENT',
286 transactionidin => to_char(p_entry_id));
287
288
289
290 l_debug_info := 'Getting Attibutes values';
291 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
292 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
293 l_api_name,l_debug_info);
294 END IF;
295
296
297 OPEN csr_gcs_entry_details;
298 FETCH csr_gcs_entry_details INTO
299 l_entry_id ,
300 l_entry_name ,
301 l_hierarchy_id ,
302 l_entity_id ,
303 l_currency_code ,
304 l_balance_type_code ,
305 l_start_cal_period_id ,
306 l_end_cal_period_id ,
307 l_description ,
308 l_entry_type_code ,
309 l_category_code ,
310 l_submitted_by ,
311 l_itemkey;
312 CLOSE csr_gcs_entry_details;
313
314
315 Open c_entity_details;
316 Fetch c_entity_details into l_entity_name;
317 Close c_entity_details;
318
319 Open c_hierarchy_details;
320 Fetch c_hierarchy_details into l_hierarchy_name;
321 Close c_hierarchy_details;
322
323 Open c_period_details;
324 Fetch c_period_details into l_period_name;
325 Close c_period_details;
326
327
328
329 IF l_itemkey is not Null THEN
330 --
331 -- Abort previous workflow process
332 Begin
333 wf_engine.AbortProcess('GCSADJ', l_itemkey, 'MASTER', null);
334
335 l_debug_info := 'Previous WF Process aborted';
336 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
337 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
338 l_api_name,l_debug_info);
339 END IF;
340
341
342 EXCEPTION
343 WHEN OTHERS THEN
344 l_debug_info := 'Previous WF Process aborted error';
345 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
346 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
347 l_api_name,l_debug_info);
348 END IF;
349
350 End;
351
352 -- delete previous pdf.
353 delete fnd_attached_documents
354 where pk1_value = to_char(l_entry_id);
355
356 l_debug_info := ' Deleted Doc :'|| to_char(l_entry_id) || '.pdf';
357 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
358 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
359 l_api_name,l_debug_info);
360 END IF;
361
362
363 END IF;
364
365 -- Setting the Workflow Item Key
366 l_itemkey := to_char(p_entry_id) || to_char(sysdate, 'ddss');
367
368
369 l_debug_info := 'Calling WF_ENGINE.createProcess(GCSADJ, ' || l_itemkey || ', MASTER);';
370 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
371 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
372 l_api_name,l_debug_info);
373 END IF;
374
375
376 wf_engine.createProcess('GCSADJ', l_itemkey, 'MASTER');
377
378 l_debug_info := 'Before Update of Adjustments to Initiated';
379 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
380 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
381 l_api_name,l_debug_info);
382 END IF;
383
384 UPDATE GCS_ENTRY_HEADERS
385 SET approval_status_code = 'IN_PROGRESS' ,
386 WORKFLOW_KEY = l_itemkey
387 WHERE entry_id = p_entry_id;
388
389
390 l_debug_info := 'Before setting item attributes' ;
391 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
392 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
393 l_api_name,l_debug_info);
394 END IF;
395
396 l_calling_sequence := l_api_name;
397 WF_ENGINE.SetItemAttrText('GCSADJ', l_itemkey, 'CALLING_SEQUENCE', l_calling_sequence);
398
399 WF_ENGINE.SetItemAttrNumber('GCSADJ',
400 l_itemkey,
401 'MASTERKEY',
402 p_entry_id);
403 WF_ENGINE.SetItemAttrNumber('GCSADJ',
404 l_itemkey,
405 'FCH_ENTRY_ID',
406 l_entry_id);
407 WF_ENGINE.SetItemAttrText('GCSADJ',
408 l_itemkey,
409 'FCH_ENTRY_NAME',
410 l_entry_name);
411
412 WF_ENGINE.SetItemAttrText('GCSADJ',
413 l_itemkey,
414 'FCH_ENTRY_DESCRIPTION',
415 l_description);
416
417 WF_ENGINE.SetItemAttrNumber('GCSADJ',
418 l_itemkey,
419 'FCH_HIERARCHY_ID',
420 l_hierarchy_id);
421 WF_ENGINE.SetItemAttrNumber('GCSADJ',
422 l_itemkey,
423 'FCH_ENTITY_ID',
424 l_entity_id);
425 WF_ENGINE.SetItemAttrText('GCSADJ',
426 l_itemkey,
427 'FCH_CURRENCY_CODE',
428 l_currency_code);
429 WF_ENGINE.SetItemAttrText('GCSADJ',
430 l_itemkey,
431 'FCH_BALANCE_TYPE',
432 l_balance_type_code);
433 WF_ENGINE.SetItemAttrNumber('GCSADJ',
434 l_itemkey,
435 'FCH_START_PERIOD',
436 l_start_cal_period_id);
437 WF_ENGINE.SetItemAttrNumber('GCSADJ',
438 l_itemkey,
439 'FCH_END_PERIOD',
440 l_end_cal_period_id);
441
442 WF_ENGINE.SetItemAttrText('GCSADJ',
443 l_itemkey,
444 'FCH_CATEGORY_CODE',
445 l_category_code);
446
447 WF_ENGINE.SetItemAttrNumber('GCSADJ',
448 l_itemkey,
449 'USER_ID',
450 p_user_id);
451
452 WF_ENGINE.SetItemAttrText('GCSADJ',
453 l_itemkey,
454 'USER_NAME',
455 p_user_name);
456
457 WF_ENGINE.SetItemAttrText('GCSADJ',
458 l_itemkey,
459 'FCH_ENTITY_NAME',
460 l_entity_name);
461
462 WF_ENGINE.SetItemAttrText('GCSADJ',
463 l_itemkey,
464 'FCH_HIERARCHY_NAME',
465 l_hierarchy_name);
466
467 WF_ENGINE.SetItemAttrText('GCSADJ',
468 l_itemkey,
469 'FCH_PERIOD_NAME',
470 l_period_name);
471
472 WF_ENGINE.SetItemAttrText('GCSADJ',
473 l_itemkey,
474 'WRITEBACK_FLAG',
475 p_writeback_flag);
476
477 WF_ENGINE.SetItemAttrText('GCSADJ',
478 l_itemkey,
479 'CAL_PERIOD_NAME',
480 p_cal_period_name);
481
482 WF_ENGINE.SetItemAttrText('GCSADJ',
483 l_itemkey,
484 'CONVERSION_TYPE',
485 p_conversion_type);
486
487 WF_ENGINE.SetItemAttrNumber('GCSADJ',
488 l_itemkey,
489 'ORIG_ENTRY_ID',
490 p_orig_entry_id);
491
492 WF_ENGINE.SetItemAttrNumber('GCSADJ',
493 l_itemkey,
494 'LEDGER_ID',
495 p_ledger_id);
496
497
498
499 l_message_text:= 'An adjustment has been submitted for the hierarchy ' || L_HIERARCHY_NAME || ' , and the entity ' || L_ENTITY_NAME || ' on '|| L_PERIOD_NAME ||' that requires your approval';
500
501 WF_ENGINE.SetItemAttrText('GCSADJ',
502 l_itemkey,
503 'MESSAGE_TEXT',
504 l_message_text);
505
506 l_debug_info := 'Before Calling WF_ENGINE.startProcess(GCSADJ,'
507 || l_itemkey || ');';
508 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
509 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
510 l_api_name,l_debug_info);
511 END IF;
512
513 WF_ENGINE.startProcess('GCSADJ', l_itemkey);
514
515 COMMIT;
516
517 l_debug_info := 'After Calling WF_ENGINE.startProcess' ;
518 p_wfitemkey := l_itemkey;
519 l_debug_info := 'End';
520
521 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
522 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
523 l_api_name,l_debug_info);
524 END IF;
525
526 EXCEPTION
527
528 WHEN OTHERS THEN
529 IF (SQLCODE <> -20001) THEN
530 FND_MESSAGE.SET_NAME('SQLAP','AP_DEBUG');
531 FND_MESSAGE.SET_TOKEN('ERROR',SQLERRM);
532 FND_MESSAGE.SET_TOKEN('CALLING_SEQUENCE', l_calling_sequence);
533 FND_MESSAGE.SET_TOKEN('DEBUG_INFO', l_debug_info);
534 END IF;
535 APP_EXCEPTION.RAISE_EXCEPTION;
536
537 END create_gcsadj_process;
538
539 --
540 -- PROCEDURE
541 -- GetNextApprover
542 --
543 -- DESCRIPTION
544 -- Gets the next approver for the approval request.
545 --
546 -- IN
547 -- p_item_type - The workflow item type (FEMAPPR)
548 -- p_item_key - The workflow request id (FEM_WF_REQUEST_ID_SEQ)
549 -- p_act_id - The function activity
550 -- p_func_mode - Run/Cancel/Timeout
551 --
552 -- OUT
553 -- x_result_out - Indicates completion of workflow activity and it's result
554 --
555 -- USED BY ACTIVITIES
556 -- FEMAPPR FEM_GET_NEXT_APPROVER
557 --
558 --------------------------------------------------------------------------------
559 PROCEDURE Get_Next_Approver (
560 p_item_type IN VARCHAR2,
561 p_item_key IN VARCHAR2,
562 p_act_id IN NUMBER,
563 p_funcmode IN VARCHAR2,
564 x_result_out out nocopy varchar2) IS
565
566 l_entry_id NUMBER(15);
567 l_application_id t_application_id%TYPE;
568 l_approver_id t_id%TYPE;
569 l_approver_user_id t_id%TYPE;
570 l_approver_name t_name%TYPE;
571 l_approver_display_name t_display_name%TYPE;
572 l_approver_orig_system t_orig_system%TYPE;
573
574 l_role_name t_name%TYPE;
575 l_role_display_name t_display_name%TYPE;
576
577 l_next_approver_rec AME_UTIL.approverRecord;
578
579 l_next_approvers ame_util.approversTable2;
580 l_next_approver ame_util.approverRecord2;
581 l_complete VARCHAR2(50);
582 l_valid_approver BOOLEAN;
583
584 l_api_name CONSTANT VARCHAR2(200) := 'get_next_approver';
585 l_debug_info VARCHAR2(2000);
586 l_calling_sequence VARCHAR2(2000);
587
588 l_wf_region VARCHAR2(200);
589 l_attachment VARCHAR2(200);
590
591 BEGIN
592
593 -- Initialize API message list
594 FND_MSG_PUB.Initialize;
595
596 l_application_id := G_FCH_APPLICATION_ID;
597
598 l_debug_info := 'Calling Get Next Approvers ' || p_item_key ;
599 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
600 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
601 l_api_name,l_debug_info);
602 END IF;
603
604 l_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
605 p_item_key,
606 'FCH_ENTRY_ID');
607
608
609 AME_API2.GetNextApprovers4(
610 applicationIdIn => l_application_id,
611 transactionTypeIn => 'GCS_ADJUSTMENT',
612 transactionIdIn => to_char(l_entry_id),
613 flagApproversAsNotifiedIn => ame_util.booleanFalse,
614 approvalProcessCompleteYNOut => l_complete,
615 nextApproversOut => l_next_approvers );
616
617 l_debug_info := 'Approval Process Status ' || l_complete;
618 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
619 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
620 END IF;
621
622 -- IF l_complete = ame_util.booleanFalse THEN -- there is a status of complete no approvers
623
624 IF l_next_approvers.count < 1 THEN
625 -- No more approvers
626 l_debug_info := 'No more approvers ' || p_item_key ;
627 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
628 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
629 l_api_name,l_debug_info);
630 END IF;
631
632 x_result_out := WF_ENGINE.eng_completed || ':' || G_NO;
633
634 ELSE
635 l_debug_info := 'New Approver ';
636 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
637 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
638 END IF;
639
640 l_next_approver := l_next_approvers(1);
641 g_next_approver := l_next_approver;
642 l_valid_approver :=AME_API2.validateApprover(l_next_approver);
643
644 IF l_valid_approver = FALSE Then
645 l_debug_info := 'Invalid approver, does not have wf role';
646 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
647 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
648 END IF;
649
650 end if;
651
652 if (l_next_approver.approval_status = AME_UTIL.exceptionStatus) then
653 l_debug_info := 'Next approver exception error';
654
655 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
656 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
657 END IF;
658
659 end if;
660
661 l_approver_id:=l_next_approver.ORIG_SYSTEM_ID;
662 l_approver_orig_system:= l_next_approver.ORIG_SYSTEM;
663
664 -- Setting all approver attributes
665 WF_DIRECTORY.GetRoleName(l_next_approver.ORIG_SYSTEM
666 ,l_next_approver.ORIG_SYSTEM_ID
667 ,l_role_name,l_role_display_name);
668
669 WF_DIRECTORY.GetUserName(l_next_approver.ORIG_SYSTEM,
670 l_next_approver.ORIG_SYSTEM_ID,
671 l_approver_name,
672 l_approver_display_name);
673
674
675 l_debug_info := 'Approver found, item: ' || p_item_key || 'Role: ' || l_role_name || ' ID:' || to_char(l_approver_id) ||
676 ' Name: ' || l_approver_name;
677
678 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
679 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
680 END IF;
681
682 WF_ENGINE.SetItemAttrNumber(
683 p_item_type, p_item_key, 'APPROVER_ID', l_approver_id);
684
685 WF_ENGINE.SetItemAttrText(
686 p_item_type, p_item_key, 'APPROVER', l_approver_name);
687
688
689 -- WF_ENGINE.SetItemAttrNumber(
690 -- p_item_type, p_item_key, G_APPROVER_USER_ID, l_approver_user_id);
691
692 -- WF_ENGINE.SetItemAttrText(
693 -- p_item_type, p_item_key, G_APPROVER_DISPLAY_NAME, l_approver_display_name);
694
695 WF_ENGINE.SetItemAttrText(
696 p_item_type, p_item_key, 'ROLE_NAME', l_role_name);
697
698 WF_ENGINE.SetItemAttrText(
699 p_item_type, p_item_key, 'ORIG_SYSTEM', l_approver_orig_system);
700
701 -- set the workflow history region
702 l_debug_info:='setting history region attribute information';
703 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
704 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
705 l_api_name,l_debug_info);
706 END IF;
707
708 l_wf_region := 'JSP:/OA_HTML/OA.jsp?page=/oracle/apps/per/ame/transactionhistory/webui/TransactionHistoryRN' || '&' || 'AMETxnID='|| TO_CHAR(l_entry_id) || '&' || 'AMETxnType=GCS_ADJUSTMENT'|| '&' || 'AMEFndAppID=266';
709
710 l_debug_info:='setting attachment attribute information';
711 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
712 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
713 l_api_name,l_debug_info);
714 END IF;
715
716 l_attachment := 'FND:entity=GCS_ENTRY_HEADERS'||'&'||'pk1name=ENTRY_ID'||'&'||'pk1value='||l_entry_id;
717
718 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, 'WFREGION', l_wf_region);
719 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, '#ATTACHMENTS', l_attachment);
720
721 x_result_out := WF_ENGINE.eng_completed || ':' || G_YES;
722
723 END IF;
724 --ELSE
725 -- Process Complete
726 -- l_debug_info := 'Process Complete' || p_item_key ;
727 -- IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
728 -- FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
729 -- l_api_name,l_debug_info);
730 -- END IF;
731 -- x_result_out := WF_ENGINE.eng_completed || ':' || G_NO;
732 -- END IF;
733
734 EXCEPTION
735
736 when FND_API.G_EXC_ERROR or FND_API.G_EXC_UNEXPECTED_ERROR then
737 BuildErrorMsg(l_api_name, p_item_type, p_item_key, p_act_id);
738 raise;
739
740 when others then
741 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
742 BuildErrorMsg(l_api_name, p_item_type, p_item_key, p_act_id);
743 raise;
744
745 END Get_Next_Approver;
746
747 PROCEDURE process_approval(p_item_type IN VARCHAR2,
748 p_item_key IN VARCHAR2,
749 p_actid IN NUMBER,
750 p_funcmode IN VARCHAR2,
751 x_result_out OUT NOCOPY VARCHAR2 ) IS
752 l_entry_id NUMBER(15);
753 l_comments VARCHAR2(240);
754 l_status VARCHAR2(50);
755 l_user_id NUMBER(15);
756 l_api_name CONSTANT VARCHAR2(200) := 'process_approval';
757 l_debug_info VARCHAR2(2000);
758 l_approver_name VARCHAR2(150);
759 l_approver_id NUMBER;
760 l_approver_orig_system t_orig_system%TYPE;
761 l_role_name VARCHAR2(150);
762 l_calling_sequence VARCHAR2(2000);
763
764 BEGIN
765
766 l_debug_info := 'Start Process Approval';
767 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
768 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
769 l_api_name,l_debug_info);
770 END IF;
771
772 l_calling_sequence := l_api_name;
773 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, 'CALLING_SEQUENCE', l_calling_sequence);
774
775 l_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
776 p_item_key,
777 'FCH_ENTRY_ID');
778
779 l_comments := WF_ENGINE.GetItemAttrText(p_item_type,
780 p_item_key,
781 'WF_NOTE');
782
783 l_approver_name := WF_ENGINE.GetItemAttrText(p_item_type,
784 p_item_key,
785 'APPROVER');
786
787 l_approver_id := WF_ENGINE.GETITEMATTRNumber(p_item_type,
788 p_item_key,
789 'APPROVER_ID');
790
791 l_role_name := WF_ENGINE.GetItemAttrText(p_item_type,
792 p_item_key,
793 'ROLE_NAME');
794
795 l_approver_orig_system:= WF_ENGINE.GETITEMATTRText(p_item_type,
796 p_item_key,
797 'ORIG_SYSTEM');
798
799 l_user_id := nvl(to_number(fnd_profile.value('USER_ID')),-1);
800
801 l_debug_info := 'Before calling AME Update Status, entry : ' || l_entry_id || ', Status' || AME_UTIL.approvedStatus || ' role name: '|| l_role_name || 'Approver id: ' || l_approver_id ;
802
803 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
804 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
805 END IF;
806
807 l_debug_info := 'AME relevant info, itemclass: ' ||ame_util.headerItemClassName ||',item id ' || l_entry_id ;
808
809 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
810 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
811 END IF;
812
813 g_next_approver.orig_system:= l_approver_orig_system;
814 g_next_approver.orig_system_id:=l_approver_id;
815 g_next_approver.name := l_role_name;
816
817 g_next_approver.approval_status:=AME_UTIL.approvedStatus;
818 g_next_approver.item_class:=ame_util.headerItemClassName;
819 g_next_approver.item_id:=to_char(l_entry_id);
820
821
822 AME_API2.updateApprovalStatus(applicationIdIn => G_FCH_APPLICATION_ID,
823 transactionTypeIn => 'GCS_ADJUSTMENT',
824 transactionIdIn => to_char(l_entry_id),
825 approverIn => g_next_approver);
826
827 /*
828 AME_API2.updateApprovalStatus2(applicationIdIn => G_FCH_APPLICATION_ID,
829 transactionTypeIn => 'GCS_ADJUSTMENT',
830 transactionIdIn => to_char(l_entry_id),
831 approvalStatusIn => AME_UTIL.approvedStatus,
832 approverNameIn => l_role_name,
833 itemClassIn => ame_util.headerItemClassName,
834 itemIdIn => to_char(l_entry_id));
835 */
836 l_debug_info := 'Updated Approval status in AME records';
837 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
838 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
839 END IF;
840
841 WF_ENGINE.SetItemAttrText('GCSADJ',
842 p_item_key,
843 'WF_NOTE',
844 null);
845
846 l_debug_info := 'End';
847 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
848 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
849 END IF;
850 x_result_out := wf_engine.eng_completed||':'|| AME_UTIL.approvedStatus;
851
852 EXCEPTION
853 WHEN OTHERS
854 THEN
855 WF_CORE.CONTEXT('GCSADJ','process_approval',p_item_type,
856 p_item_key, to_char(p_actid), p_funcmode);
857 RAISE;
858 END process_approval;
859
860
861 PROCEDURE process_rejected(p_item_type IN VARCHAR2,
862 p_item_key IN VARCHAR2,
863 p_actid IN NUMBER,
864 p_funcmode IN VARCHAR2,
865 x_result_out OUT NOCOPY VARCHAR2 ) IS
866 l_entry_id NUMBER(15);
867 l_comments VARCHAR2(240);
868 l_status VARCHAR2(50);
869 l_user_id NUMBER(15);
870 l_api_name CONSTANT VARCHAR2(200) := 'process_rejected';
871 l_debug_info VARCHAR2(2000);
872 l_approver_name VARCHAR2(150);
873 l_approver_id NUMBER;
874 l_approver_orig_system t_orig_system%TYPE;
875 l_role_name VARCHAR2(150);
876 l_calling_sequence VARCHAR2(2000);
877
878 BEGIN
879
880 l_debug_info := 'Start Process Rejected';
881 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
882 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
883 l_api_name,l_debug_info);
884 END IF;
885
886 l_calling_sequence := l_api_name;
887 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, 'CALLING_SEQUENCE', l_calling_sequence);
888
889 l_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
890 p_item_key,
891 'FCH_ENTRY_ID');
892
893 l_comments := WF_ENGINE.GetItemAttrText(p_item_type,
894 p_item_key,
895 'WF_NOTE');
896
897 l_approver_name := WF_ENGINE.GetItemAttrText(p_item_type,
898 p_item_key,
899 'APPROVER');
900
901 l_approver_id := WF_ENGINE.GETITEMATTRNumber(p_item_type,
902 p_item_key,
903 'APPROVER_ID');
904
905 l_role_name := WF_ENGINE.GetItemAttrText(p_item_type,
906 p_item_key,
907 'ROLE_NAME');
908
909 l_approver_orig_system:= WF_ENGINE.GETITEMATTRText(p_item_type,
910 p_item_key,
911 'ORIG_SYSTEM');
912
913 l_debug_info := 'Before calling AME Update Status, entry : ' || l_entry_id || ', Status' || AME_UTIL.approvedStatus || ' role name '|| l_role_name || 'Approver id ' || l_approver_id ;
914
915 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
916 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
917 END IF;
918
919 l_debug_info := 'AME relevant info, itemclass: ' ||ame_util.headerItemClassName ||',item id ' || l_entry_id ;
920
921 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
922 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
923 END IF;
924
925 g_next_approver.orig_system:= l_approver_orig_system;
926 g_next_approver.orig_system_id:=l_approver_id;
927 g_next_approver.name := l_role_name;
928
929 g_next_approver.approval_status:=AME_UTIL.rejectStatus;
930 g_next_approver.item_class:=ame_util.headerItemClassName;
931 g_next_approver.item_id:=to_char(l_entry_id);
932
933
934 AME_API2.updateApprovalStatus(applicationIdIn => G_FCH_APPLICATION_ID,
935 transactionTypeIn => 'GCS_ADJUSTMENT',
936 transactionIdIn => to_char(l_entry_id),
937 approverIn => g_next_approver);
938
939 /*
940 AME_API2.updateApprovalStatus2(applicationIdIn => G_FCH_APPLICATION_ID,
941 transactionIdIn => to_char(l_entry_id),
942 approvalStatusIn => AME_UTIL.rejectStatus,
943 approverNameIn => l_role_name,
944 transactionTypeIn => 'GCS_ADJUSTMENT',
945 itemClassIn => ame_util.headerItemClassName,
946 itemIdIn => to_char(l_entry_id));
947 */
948
949 l_debug_info := 'Updated Approval status ';
950 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
951 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
952 END IF;
953
954 WF_ENGINE.SetItemAttrText('GCSADJ',
955 p_item_key,
956 'WF_NOTE',
957 null);
958
959 l_debug_info := 'End';
960 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
961 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
962 END IF;
963 x_result_out := wf_engine.eng_completed||':'||AME_UTIL.approvedStatus;
964
965 EXCEPTION
966 WHEN OTHERS
967 THEN
968 WF_CORE.CONTEXT('GCSADJ','process_rejected',p_item_type,
969 p_item_key, to_char(p_actid), p_funcmode);
970 RAISE;
971 END process_rejected;
972
973 PROCEDURE update_adjustment(p_item_type IN VARCHAR2,
974 p_item_key IN VARCHAR2,
975 p_actid IN NUMBER,
976 p_funcmode IN VARCHAR2,
977 x_result_out OUT NOCOPY VARCHAR2 ) IS
978 l_entry_id NUMBER(15);
979 l_comments VARCHAR2(240);
980 l_status VARCHAR2(50);
981 l_user_id NUMBER(15);
982 l_api_name CONSTANT VARCHAR2(200) := 'update_adjustment';
983 l_debug_info VARCHAR2(2000);
984 l_approver_name VARCHAR2(150);
985 l_approver_id NUMBER;
986 l_role_name VARCHAR2(150);
987 l_calling_sequence VARCHAR2(2000);
988 l_prev_calling_sequence VARCHAR2(2000);
989
990 l_event_name VARCHAR2 (100) := 'oracle.apps.gcs.transaction.adjustment.update';
991 l_event_key VARCHAR2 (100) := NULL;
992 l_parameter_list wf_parameter_list_t;
993 l_request_id NUMBER(15);
994 l_orig_entry_id NUMBER (15);
995 l_writeback VARCHAR2(30);
996 l_ledger_id NUMBER(15);
997 l_cal_period_name VARCHAR2(80);
998 l_conversion_type VARCHAR2(80);
999
1000
1001 BEGIN
1002
1003 l_debug_info := 'Start Update Adjustment';
1004 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1005 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
1006 l_api_name,l_debug_info);
1007 END IF;
1008
1009 l_prev_calling_sequence := WF_ENGINE.GetItemAttrText(p_item_type, p_item_key, 'CALLING_SEQUENCE');
1010
1011 l_debug_info := l_prev_calling_sequence;
1012 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1013 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||
1014 l_api_name,l_debug_info);
1015 END IF;
1016
1017 l_calling_sequence := l_api_name;
1018 WF_ENGINE.SetItemAttrText(p_item_type, p_item_key, 'CALLING_SEQUENCE', l_calling_sequence);
1019
1020 l_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
1021 p_item_key,
1022 'FCH_ENTRY_ID');
1023
1024 l_comments := WF_ENGINE.GetItemAttrText(p_item_type,
1025 p_item_key,
1026 'WF_NOTE');
1027
1028 l_approver_name := WF_ENGINE.GetItemAttrText(p_item_type,
1029 p_item_key,
1030 'APPROVER');
1031
1032 l_approver_id := WF_ENGINE.GETITEMATTRNumber(p_item_type,
1033 p_item_key,
1034 'APPROVER_ID');
1035
1036 l_role_name := WF_ENGINE.GetItemAttrText(p_item_type,
1037 p_item_key,
1038 'ROLE_NAME');
1039
1040 l_debug_info := 'Before Updating GCS Entries, entry : ' || l_entry_id || ' calling sequence '|| l_prev_calling_sequence;
1041 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1042 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1043 END IF;
1044
1045
1046 if l_prev_calling_sequence = 'process_approval' then
1047 l_status := G_APPROVE;
1048
1049 elsif l_prev_calling_sequence = 'process_rejected' then
1050 l_status := G_REJECT;
1051 elsif l_prev_calling_sequence = 'fch_check_approvals' then
1052 -- No rules found
1053 l_status := G_APPROVE;
1054 else
1055 l_status :='ERROR';
1056 end if;
1057
1058 UPDATE GCS_ENTRY_HEADERS
1059 SET approval_status_code = l_status
1060 WHERE entry_id = l_entry_id;
1061
1062 COMMIT;
1063
1064 l_debug_info := 'Updated GCS Entries with status : ' || nvl(l_status,'NULL');
1065
1066 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1067 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME|| l_api_name,l_debug_info);
1068 END IF;
1069
1070
1071 IF (l_prev_calling_sequence = 'process_approval' OR l_prev_calling_sequence = 'fch_check_approvals' ) THEN
1072
1073 l_debug_info := 'Preparing Consolidation Impact Event: ' || l_event_name;
1074 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1075 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1076 END IF;
1077
1078 l_orig_entry_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
1079 p_item_key,
1080 'ORIG_ENTRY_ID');
1081
1082
1083 wf_event.addparametertolist (p_name => 'ENTRY_ID',
1084 p_value => l_entry_id,
1085 p_parameterlist => l_parameter_list
1086 );
1087 --Bugfix 6470903: Set l_orig_entry_id to NULL if it is the same as l_entry_id
1088 IF (l_orig_entry_id = l_entry_id) THEN
1089 l_orig_entry_id := NULL;
1090 END IF;
1091
1092 wf_event.addparametertolist (p_name => 'ORIG_ENTRY_ID',
1093 p_value => l_orig_entry_id,
1094 p_parameterlist => l_parameter_list
1095 );
1096
1097 wf_event.RAISE (p_event_name => l_event_name,
1098 p_event_key => l_event_key,
1099 p_parameters => l_parameter_list);
1100
1101 l_debug_info := ' Event Raised';
1102
1103 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1104 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1105 END IF;
1106
1107 l_writeback := WF_ENGINE.GetItemAttrText(p_item_type,
1108 p_item_key,
1109 'WRITEBACK_FLAG');
1110
1111 -- Call write back only once is approved
1112 If l_writeback='Y' Then
1113
1114 l_ledger_id := WF_ENGINE.GetItemAttrNumber(p_item_type,
1115 p_item_key,
1116 'LEDGER_ID');
1117
1118 l_cal_period_name := WF_ENGINE.GetItemAttrText(p_item_type,
1119 p_item_key,
1120 'CAL_PERIOD_NAME');
1121
1122
1123 l_conversion_type := WF_ENGINE.GetItemAttrText(p_item_type,
1124 p_item_key,
1125 'CONVERSION_TYPE');
1126
1127
1128 l_request_id := fnd_request.submit_request(
1129 application => 'GCS',
1130 program => 'FCH_ENTRY_WRITEBACK',
1131 sub_request => FALSE,
1132 argument1 => l_entry_id,
1133 argument2 => l_entry_id,
1134 argument3 => l_ledger_id,
1135 argument4 => l_cal_period_name,
1136 argument5 => l_conversion_type );
1137
1138 l_debug_info := ' Submitted Writeback request ID : ' || l_request_id;
1139 IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1140 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,l_debug_info);
1141 END IF;
1142
1143 end if;
1144 end if;
1145
1146
1147 x_result_out := wf_engine.eng_completed||':'||'COMPLETED';
1148
1149 EXCEPTION
1150 WHEN OTHERS
1151 THEN
1152 WF_CORE.CONTEXT('GCSADJ','process_rejected',p_item_type,
1153 p_item_key, to_char(p_actid), p_funcmode);
1154 RAISE;
1155 END update_adjustment;
1156
1157 --
1158 -- PROCEDURE
1159 -- BuildErrorMsg
1160 --
1161 -- DESCRIPTION
1162 -- Builds the Workflow Error Message by checking if there are any errors
1163 -- in the FND_MSG_PUB message stack.
1164 --
1165 -- IN
1166 -- p_api_name - The PL/SQL Procedure or Function name.
1167 -- p_item_type - The workflow item type (FEMAPPR)
1168 -- p_item_key - The workflow request id (FEM_WF_REQUEST_ID_SEQ)
1169 -- p_act_id - The function activity
1170 --
1171 --------------------------------------------------------------------------------
1172 PROCEDURE BuildErrorMsg (
1173 p_api_name in varchar2
1174 ,p_item_type in varchar2
1175 ,p_item_key in varchar2
1176 ,p_act_id in number
1177 )
1178 --------------------------------------------------------------------------------
1179 IS
1180
1181 l_msg_count t_msg_count%TYPE;
1182 l_msg_data t_msg_data%TYPE;
1183
1184 BEGIN
1185
1186 FND_MSG_PUB.Count_And_Get(
1187 p_count => l_msg_count
1188 ,p_data => l_msg_data
1189 );
1190
1191 if (l_msg_count > 1) then
1192
1193 l_msg_data := FND_MSG_PUB.Get(FND_MSG_PUB.G_FIRST);
1194
1195 end if;
1196
1197 WF_CORE.Context(
1198 G_PKG_NAME
1199 ,p_api_name
1200 ,p_item_type
1201 ,p_item_key
1202 ,to_char(p_act_id)
1203 ,l_msg_data
1204 );
1205
1206 END BuildErrorMsg;
1207
1208 END GCS_ADJ_APPROVAL_WF_PKG;