DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_WF_REQ_FLEXBUILDER_UPGRADE

Source


1 PACKAGE BODY PO_WF_REQ_FLEXBUILDER_UPGRADE AS
2 /* $Header: POXWRFUB.pls 115.9 2002/11/22 22:04:52 sbull ship $ */
3 
4 -- Read the profile option that enables/disables the debug log
5 g_po_wf_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('PO_SET_DEBUG_WORKFLOW_ON'),'N');
6 
7  /*=======================================================================+
8  | FILENAME
9  |   POXWRFUB.pls
10  |
11  | DESCRIPTION
12  |   PL/SQL spec for package:  PO_WF_REQ_FLEXBUILDER_UPGRADE
13  |
14  | NOTES
15  | MODIFIED    IMRAN ALI (09/11/97) - Created
16  | 	       Imran     (08/11/98) - Rewrote some initialization code
17  *=====================================================================*/
18 
19 -- Cursors
20 
21 /*****************************************************************************
22 * The following are local/Private procedure that support the workflow APIs:  *
23 *****************************************************************************/
24 
25 function req_build_account  (    itemtype        in     varchar2,
26                                  itemkey         in     varchar2,
27 				 accountType     in     varchar2,
28 				 FB_FLEX_SEG     in out NOCOPY VARCHAR2,
29         			 FB_ERROR_MSG    in out NOCOPY VARCHAR2  )
30 return boolean;
31 
32 procedure Get_att (itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY varchar2,
33 			 l_aname in varchar2);
34 procedure Get_number_att (itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY number,
35 			 l_aname in varchar2);
36 procedure Get_date_att (itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY date,
37 			 l_aname in varchar2);
38 
39 --
40 -- charge_account
41 -- Build charge account for the specified structure
42 --
43 procedure charge_account  (     itemtype        in  varchar2,
44                                 itemkey         in  varchar2,
45 			        actid	     	in number,
46                                 funcmode        in  varchar2,
47                                 result          out NOCOPY varchar2    )
48 is
49 	l_result_flag		BOOLEAN;
50 	x_progress              varchar2(1000);
51 	FB_FLEX_SEG		varchar2(2000);
52  	FB_ERROR_MSG		varchar2(2000);
53 	x_destination_type	varchar2(25);
54 
55 BEGIN
56 
57   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.charge_account: 01';
58   IF (g_po_wf_debug = 'Y') THEN
59      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
60   END IF;
61 
62 
63   -- Do nothing in cancel or timeout mode
64   --
65   if (funcmode <> wf_engine.eng_run) then
66 
67       result := wf_engine.eng_null;
68       return;
69 
70   end if;
71 
72   -- Get the required item attributes and then call the upgrade charge account
73   -- routine PO_REQ_CHARGE_ACCOUNT.BUILD ( );
74 
75   l_result_flag := req_build_account(    itemtype,
76                                 	 itemkey,
77 					 'CHARGE',
78 					 FB_FLEX_SEG,
79         				 FB_ERROR_MSG  );
80 
81   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.charge_account: 02';
82   IF (g_po_wf_debug = 'Y') THEN
83      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
84   END IF;
85 
86   if l_result_flag then
87 
88 	-- Load the concated segment values returned by the BUILD function on to WF item
89 	-- attributes.
90 
91 	FND_FLEX_WORKFLOW.LOAD_CONCATENATED_SEGMENTS ( itemtype, itemkey, FB_FLEX_SEG );
92 
93 	result := 'COMPLETE:SUCCESS';
94 	return;
95   else
96 	--If the build_account call returns an error message then set the ERROR_MSG attrib.
97 
98 	wf_engine.SetItemAttrText  (  itemtype=>itemtype,
99 				      itemkey=>itemkey,
100 				      aname=>'ERROR_MESSAGE',
101 				      avalue=>FB_ERROR_MSG );
102 
103 --	result := 'COMPLETE:FAILURE';
104 
105 	Get_att(itemtype, itemkey, x_destination_type, 'DESTINATION_TYPE_CODE');
106 
107 	if x_destination_type = 'EXPENSE' then
108 		result := 'COMPLETE:SUCCESS';       -- we will handle this in the libraray
109 	else
110 		result := 'COMPLETE:FAILURE';
111 	end if;
112 
113 	RETURN;
114 
115   end if;
116 
117 EXCEPTION
118   WHEN OTHERS THEN
119     wf_core.context('PO_WF_REQ_FLEXBUILDER_UPGRADE','charge_account',x_progress);
120         raise;
121 
122 END charge_account;
123 
124 /* ********************************************************************************* */
125 
126 --
127 -- budget_account
128 -- Build budget account for the specified structure
129 --
130 procedure budget_account  (     itemtype        in  varchar2,
131                                 itemkey         in  varchar2,
132 			        actid	     	in number,
133                                 funcmode        in  varchar2,
134                                 result          out NOCOPY varchar2    )
135 is
136 	l_result_flag		BOOLEAN;
137 	x_progress              varchar2(1000);
138 	FB_FLEX_SEG		varchar2(2000);
139  	FB_ERROR_MSG		varchar2(2000);
140 BEGIN
141 
142   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.budget_account: 01';
143   IF (g_po_wf_debug = 'Y') THEN
144      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
145   END IF;
146 
147 
148   -- Do nothing in cancel or timeout mode
149   --
150   if (funcmode <> wf_engine.eng_run) then
151 
152       result := wf_engine.eng_null;
153       return;
154 
155   end if;
156 
157   -- Get the required item attributes and then call the upgrade charge account
158   -- routine PO_REQ_CHARGE_ACCOUNT.BUILD ( );
159 
160   l_result_flag := req_build_account(   itemtype,
161                                 	itemkey,
162 					'BUDGET',
163 					FB_FLEX_SEG,
164         				FB_ERROR_MSG  );
165 
166   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.budget_account: 02';
167   IF (g_po_wf_debug = 'Y') THEN
168      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
169   END IF;
170 
171   if l_result_flag then
172 
173 	-- Load the concated segment values returned by the BUILD function on to WF item
174 	-- attributes.
175 
176 	FND_FLEX_WORKFLOW.LOAD_CONCATENATED_SEGMENTS ( itemtype, itemkey, FB_FLEX_SEG );
177 
178 	result := 'COMPLETE:SUCCESS';
179 	return;
180   else
181 	--If the build_account call returns an error message then set the ERROR_MSG attrib.
182 
183 	wf_engine.SetItemAttrText  (  itemtype=>itemtype,
184 				      itemkey=>itemkey,
185 				      aname=>'ERROR_MESSAGE',
186 				      avalue=>FB_ERROR_MSG );
187 
188 	result := 'COMPLETE:FAILURE';
189 	RETURN;
190 
191   end if;
192 
193 EXCEPTION
194   WHEN OTHERS THEN
195     wf_core.context('PO_WF_REQ_FLEXBUILDER_UPGRADE','budget_account',x_progress);
196         raise;
197 
198 END budget_account;
199 
200 /* ********************************************************************************* */
201 
202 --
203 -- variance_account
204 -- Build variance account for the specified structure
205 --
206 procedure variance_account  (     itemtype        in  varchar2,
207                                   itemkey         in  varchar2,
208 			          actid	 	  in number,
209                                   funcmode        in  varchar2,
210                                   result          out NOCOPY varchar2    )
211 is
212 	l_result_flag		BOOLEAN;
213 	x_progress              varchar2(1000);
214 	FB_FLEX_SEG		varchar2(2000);
215  	FB_ERROR_MSG		varchar2(2000);
216 BEGIN
217 
218   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.variance_account: 01';
219   IF (g_po_wf_debug = 'Y') THEN
220      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
221   END IF;
222 
223 
224   -- Do nothing in cancel or timeout mode
225   --
226   if (funcmode <> wf_engine.eng_run) then
227 
228       result := wf_engine.eng_null;
229       return;
230 
231   end if;
232 
233   -- Get the required item attributes and then call the upgrade charge account
234   -- routine PO_REQ_CHARGE_ACCOUNT.BUILD ( );
235 
236   l_result_flag := req_build_account(   itemtype,
237                                 	itemkey,
238 					'VARIANCE',
239 					FB_FLEX_SEG,
240         				FB_ERROR_MSG  );
241 
242   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.variance_account: 02';
243   IF (g_po_wf_debug = 'Y') THEN
244      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
245   END IF;
246 
247   if l_result_flag then
248 
249 	-- Load the concated segment values returned by the BUILD function on to WF item
250 	-- attributes.
251 
252 	FND_FLEX_WORKFLOW.LOAD_CONCATENATED_SEGMENTS ( itemtype, itemkey, FB_FLEX_SEG );
253 
254 	result := 'COMPLETE:SUCCESS';
255 	return;
256   else
257 	--If the build_account call returns an error message then set the ERROR_MSG attrib.
258 
259 	wf_engine.SetItemAttrText  (  itemtype=>itemtype,
260 				      itemkey=>itemkey,
261 				      aname=>'ERROR_MESSAGE',
262 				      avalue=>FB_ERROR_MSG );
263 
264 	result := 'COMPLETE:FAILURE';
265 	RETURN;
266 
267   end if;
268 
269 EXCEPTION
270   WHEN OTHERS THEN
271     wf_core.context('PO_WF_REQ_FLEXBUILDER_UPGRADE','variance_account',x_progress);
272         raise;
273 
274 END variance_account;
275 
276 /* ********************************************************************************* */
277 
278 --
279 -- accrual_account
280 -- Build accrual account for the specified structure
281 --
282 procedure accrual_account  (  itemtype        in  varchar2,
283                               itemkey         in  varchar2,
284 			      actid	      in number,
285                               funcmode        in  varchar2,
286                               result          out NOCOPY varchar2    )
287 is
288 	l_result_flag		BOOLEAN;
289 	x_progress              varchar2(1000);
290 	FB_FLEX_SEG		varchar2(2000);
291  	FB_ERROR_MSG		varchar2(2000);
292 BEGIN
293 
294   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.accrual_account: 01';
295   IF (g_po_wf_debug = 'Y') THEN
296      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
297   END IF;
298 
299 
300   -- Do nothing in cancel or timeout mode
301   --
302   if (funcmode <> wf_engine.eng_run) then
303 
304       result := wf_engine.eng_null;
305       return;
306 
307   end if;
308 
309   -- Get the required item attributes and then call the upgrade charge account
310   -- routine PO_REQ_CHARGE_ACCOUNT.BUILD ( );
311 
312   l_result_flag := req_build_account(     itemtype,
313                                 	  itemkey,
314 					  'ACCRUAL',
315 					  FB_FLEX_SEG,
316         				  FB_ERROR_MSG  );
317 
318   x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.accrual_account: 02';
319   IF (g_po_wf_debug = 'Y') THEN
320      /* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
321   END IF;
322 
323   if l_result_flag then
324 
325 	-- Load the concated segment values returned by the BUILD function on to WF item
326 	-- attributes.
327 
328 	FND_FLEX_WORKFLOW.LOAD_CONCATENATED_SEGMENTS ( itemtype, itemkey, FB_FLEX_SEG );
329 
330 	result := 'COMPLETE:SUCCESS';
331 	return;
332   else
333 	--If the build_account call returns an error message then set the ERROR_MSG attrib.
334 
335 	wf_engine.SetItemAttrText  (  itemtype=>itemtype,
336 				      itemkey=>itemkey,
337 				      aname=>'ERROR_MESSAGE',
338 				      avalue=>FB_ERROR_MSG );
339 
340 	result := 'COMPLETE:FAILURE';
341 	RETURN;
342 
343   end if;
344 
345 EXCEPTION
346   WHEN OTHERS THEN
347     wf_core.context('PO_WF_REQ_FLEXBUILDER_UPGRADE','accrual_account',x_progress);
348         raise;
349 
350 END accrual_account;
351 
352 
353 /*****************************************************************************
354 *       Local/Private procedure/functions that support the workflow APIs:    *
355 *****************************************************************************/
356 
357 function req_build_account (    itemtype        in     varchar2,
358                                 itemkey         in     varchar2,
359 				accountType     in     varchar2,
360 				FB_FLEX_SEG     in out NOCOPY VARCHAR2,
361         			FB_ERROR_MSG    in out NOCOPY VARCHAR2  )
362 return boolean
363 is
364 	x_result_flag	BOOLEAN;
365 	x_progress      varchar2(1000);
366 
367         chart_of_accounts_id  NUMBER;  -- gl_set_of_books.charge_of_account_id
368         bom_cost_element_id  NUMBER;
369         bom_resource_id  NUMBER;
370         category_id  NUMBER;
371         deliver_to_location_id  NUMBER;
372         destination_organization_id  NUMBER;
373         destination_subinventory  VARCHAR2(10);
374         destination_type_code  VARCHAR2(25);
375         expenditure_type  VARCHAR2(30);
376         expenditure_item_date  DATE;
377         expenditure_organization_id  NUMBER;
378 
379         line_type_id  NUMBER;
380         pa_billable_flag  VARCHAR2(1);
381         preparer_id  NUMBER;
382         project_id  NUMBER;
383         task_id  NUMBER;
384         to_person_id  NUMBER;
385         type_lookup_code  VARCHAR2(40);
386         suggested_vendor_id  NUMBER;
387         item_id  NUMBER;
388 
389 	document_type_code VARCHAR2(80);
390 	blanket_po_header_id NUMBER;
391 	source_type_code VARCHAR2(80);
392 	source_organization_id NUMBER;
393 	source_subinventory VARCHAR2(80);
394 
395         header_att1  VARCHAR2(2000);
396         header_att2  VARCHAR2(2000);
397         header_att3  VARCHAR2(2000);
398         header_att4  VARCHAR2(2000);
399         header_att5  VARCHAR2(2000);
400         header_att6  VARCHAR2(2000);
401         header_att7  VARCHAR2(2000);
402         header_att8  VARCHAR2(2000);
403         header_att9  VARCHAR2(2000);
404         header_att10  VARCHAR2(2000);
405         header_att11  VARCHAR2(2000);
406         header_att12  VARCHAR2(2000);
407         header_att13  VARCHAR2(2000);
408         header_att14  VARCHAR2(2000);
409         header_att15  VARCHAR2(2000);
410 
411         line_att1  VARCHAR2(2000);
412         line_att2  VARCHAR2(2000);
413         line_att3  VARCHAR2(2000);
414         line_att4  VARCHAR2(2000);
415         line_att5  VARCHAR2(2000);
416         line_att6  VARCHAR2(2000);
417         line_att7  VARCHAR2(2000);
418         line_att8  VARCHAR2(2000);
419         line_att9  VARCHAR2(2000);
420         line_att10  VARCHAR2(2000);
421         line_att11  VARCHAR2(2000);
422         line_att12  VARCHAR2(2000);
423         line_att13  VARCHAR2(2000);
424         line_att14  VARCHAR2(2000);
425         line_att15  VARCHAR2(2000);
426 
427         distribution_att1  VARCHAR2(2000);
428         distribution_att2  VARCHAR2(2000);
429         distribution_att3  VARCHAR2(2000);
430         distribution_att4  VARCHAR2(2000);
431         distribution_att5  VARCHAR2(2000);
432         distribution_att6  VARCHAR2(2000);
433         distribution_att7  VARCHAR2(2000);
434         distribution_att8  VARCHAR2(2000);
435         distribution_att9  VARCHAR2(2000);
436         distribution_att10  VARCHAR2(2000);
437         distribution_att11  VARCHAR2(2000);
438         distribution_att12  VARCHAR2(2000);
439         distribution_att13  VARCHAR2(2000);
440         distribution_att14  VARCHAR2(2000);
441         distribution_att15  VARCHAR2(2000);
442 
443         wip_entity_id  NUMBER;
444         wip_entity_type  VARCHAR2(40);
445         wip_line_id  NUMBER;
446         wip_operation_seq_num  NUMBER;
447         wip_repetitive_schedule_id  NUMBER;
448         wip_resource_seq_num  NUMBER;
449 
450 	ccid NUMBER;
451 	budget_account_id NUMBER;
452 	accrual_account_id NUMBER;
453 begin
454 
455 	x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.req_build_charge_account: 1';
456 	IF (g_po_wf_debug = 'Y') THEN
457    	/* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
458 	END IF;
459 
460    -- Get values for the arguments to the build call from the Workflow Item Attributes.
461 
462 	IF (accountType IN  ('BUDGET', 'ACCRUAL', 'VARIANCE')) then
463 		Get_number_att(itemtype, itemkey, ccid, 'CODE_COMBINATION_ID');
464 	END IF;
465 	IF (accountType IN  ('ACCRUAL', 'VARIANCE')) then
466 		Get_number_att(itemtype, itemkey, budget_account_id, 'BUDGET_ACCOUNT_ID');
467 	END IF;
468 	IF (accountType IN  ('VARIANCE')) then
469 		Get_number_att(itemtype, itemkey, accrual_account_id, 'ACCRUAL_ACCOUNT_ID');
470 	END IF;
471 
472 	Get_number_att(itemtype, itemkey, chart_of_accounts_id, 'CHART_OF_ACCOUNTS_ID');
473 	Get_number_att(itemtype, itemkey, bom_cost_element_id, 'BOM_COST_ELEMENT_ID');
474 	Get_number_att(itemtype, itemkey, bom_resource_id, 'BOM_RESOURCE_ID');
475 	Get_number_att(itemtype, itemkey, category_id, 'CATEGORY_ID');
476 	Get_number_att(itemtype, itemkey, deliver_to_location_id, 'DELIVER_TO_LOCATION_ID');
477 	Get_number_att(itemtype, itemkey, destination_organization_id, 'DESTINATION_ORGANIZATION_ID');
478 	Get_att(itemtype, itemkey, destination_subinventory, 'DESTINATION_SUBINVENTORY');
479 	Get_att(itemtype, itemkey, destination_type_code, 'DESTINATION_TYPE_CODE');
480 	Get_att(itemtype, itemkey, expenditure_type, 'EXPENDITURE_TYPE');
481 	Get_date_att(itemtype, itemkey, expenditure_item_date, 'EXPENDITURE_ITEM_DATE');
482 	Get_number_att(itemtype, itemkey, expenditure_organization_id, 'EXPENDITURE_ORGANIZATION_ID');
483 	Get_number_att(itemtype, itemkey, line_type_id, 'LINE_TYPE_ID');
484 	Get_att(itemtype, itemkey, pa_billable_flag, 'PA_BILLABLE_FLAG');
485 	Get_number_att(itemtype, itemkey, preparer_id, 'PREPARER_ID');
486 	Get_number_att(itemtype, itemkey, project_id, 'PROJECT_ID');
487 	Get_number_att(itemtype, itemkey, task_id, 'TASK_ID');
488 	Get_number_att(itemtype, itemkey, to_person_id, 'TO_PERSON_ID');
489 	Get_att(itemtype, itemkey, type_lookup_code, 'TYPE_LOOKUP_CODE');
490 	Get_number_att(itemtype, itemkey, item_id, 'ITEM_ID');
491 	Get_number_att(itemtype, itemkey, wip_entity_id, 'WIP_ENTITY_ID');
492 	Get_att(itemtype, itemkey, wip_entity_type, 'WIP_ENTITY_TYPE');
493 	Get_number_att(itemtype, itemkey, wip_line_id, 'WIP_LINE_ID');
494 	Get_number_att(itemtype, itemkey, wip_operation_seq_num, 'WIP_OPERATION_SEQ_NUM');
495 	Get_number_att(itemtype, itemkey, wip_repetitive_schedule_id, 'WIP_REPETITIVE_SCHEDULE_ID');
496 	Get_number_att(itemtype, itemkey, wip_resource_seq_num, 'WIP_RESOURCE_SEQ_NUM');
497 
498 	Get_att(itemtype, itemkey, document_type_code, 'DOCUMENT_TYPE_CODE');
499 	Get_number_att(itemtype, itemkey, blanket_po_header_id, 'BLANKET_PO_HEADER_ID');
500 	Get_att(itemtype, itemkey, source_type_code, 'SOURCE_TYPE_CODE');
501 	Get_number_att(itemtype, itemkey, source_organization_id, 'SOURCE_ORGANIZATION_ID');
502 	Get_att(itemtype, itemkey, source_subinventory, 'SOURCE_SUBINVENTORY');
503 	Get_number_att(itemtype, itemkey, suggested_vendor_id, 'SUGGESTED_VENDOR_ID');
504 
505 	-- Get Header, line, shipment and distribution attributes.
506 
507 	Get_att(itemtype, itemkey, header_att1, 'HEADER_ATT1');
508 	Get_att(itemtype, itemkey, header_att2, 'HEADER_ATT2');
509 	Get_att(itemtype, itemkey, header_att3, 'HEADER_ATT3');
510 	Get_att(itemtype, itemkey, header_att4, 'HEADER_ATT4');
511 	Get_att(itemtype, itemkey, header_att5, 'HEADER_ATT5');
512 	Get_att(itemtype, itemkey, header_att6, 'HEADER_ATT6');
513 	Get_att(itemtype, itemkey, header_att7, 'HEADER_ATT7');
514 	Get_att(itemtype, itemkey, header_att8, 'HEADER_ATT8');
515 	Get_att(itemtype, itemkey, header_att9, 'HEADER_ATT9');
516 	Get_att(itemtype, itemkey, header_att10, 'HEADER_ATT10');
517 	Get_att(itemtype, itemkey, header_att11, 'HEADER_ATT11');
518 	Get_att(itemtype, itemkey, header_att12, 'HEADER_ATT12');
519 	Get_att(itemtype, itemkey, header_att13, 'HEADER_ATT13');
520 	Get_att(itemtype, itemkey, header_att14, 'HEADER_ATT14');
521 	Get_att(itemtype, itemkey, header_att15, 'HEADER_ATT15');
522 
523 	Get_att(itemtype, itemkey, line_att1, 'LINE_ATT1');
524 	Get_att(itemtype, itemkey, line_att2, 'LINE_ATT2');
525 	Get_att(itemtype, itemkey, line_att3, 'LINE_ATT3');
526 	Get_att(itemtype, itemkey, line_att4, 'LINE_ATT4');
527 	Get_att(itemtype, itemkey, line_att5, 'LINE_ATT5');
528 	Get_att(itemtype, itemkey, line_att6, 'LINE_ATT6');
529 	Get_att(itemtype, itemkey, line_att7, 'LINE_ATT7');
530 	Get_att(itemtype, itemkey, line_att8, 'LINE_ATT8');
531 	Get_att(itemtype, itemkey, line_att9, 'LINE_ATT9');
532 	Get_att(itemtype, itemkey, line_att10, 'LINE_ATT10');
533 	Get_att(itemtype, itemkey, line_att11, 'LINE_ATT11');
534 	Get_att(itemtype, itemkey, line_att12, 'LINE_ATT12');
535 	Get_att(itemtype, itemkey, line_att13, 'LINE_ATT13');
536 	Get_att(itemtype, itemkey, line_att14, 'LINE_ATT14');
537 	Get_att(itemtype, itemkey, line_att15, 'LINE_ATT15');
538 
539 	Get_att(itemtype, itemkey, distribution_att1, 'DISTRIBUTION_ATT1');
540 	Get_att(itemtype, itemkey, distribution_att2, 'DISTRIBUTION_ATT2');
541 	Get_att(itemtype, itemkey, distribution_att3, 'DISTRIBUTION_ATT3');
542 	Get_att(itemtype, itemkey, distribution_att4, 'DISTRIBUTION_ATT4');
543 	Get_att(itemtype, itemkey, distribution_att5, 'DISTRIBUTION_ATT5');
544 	Get_att(itemtype, itemkey, distribution_att6, 'DISTRIBUTION_ATT6');
545 	Get_att(itemtype, itemkey, distribution_att7, 'DISTRIBUTION_ATT7');
546 	Get_att(itemtype, itemkey, distribution_att8, 'DISTRIBUTION_ATT8');
547 	Get_att(itemtype, itemkey, distribution_att9, 'DISTRIBUTION_ATT9');
548 	Get_att(itemtype, itemkey, distribution_att10, 'DISTRIBUTION_ATT10');
549 	Get_att(itemtype, itemkey, distribution_att11, 'DISTRIBUTION_ATT11');
550 	Get_att(itemtype, itemkey, distribution_att12, 'DISTRIBUTION_ATT12');
551 	Get_att(itemtype, itemkey, distribution_att13, 'DISTRIBUTION_ATT13');
552 	Get_att(itemtype, itemkey, distribution_att14, 'DISTRIBUTION_ATT14');
553 	Get_att(itemtype, itemkey, distribution_att15, 'DISTRIBUTION_ATT15');
554 
555       -- chart_of_accounts_id =  gl_set_of_books.charge_of_account_id - structure id
556 
557 	IF (accountType = 'CHARGE') then
558 
559 	   x_result_flag := PO_REQ_CHARGE_ACCOUNT.BUILD (
560 
561         	FB_FLEX_NUM  =>  chart_of_accounts_id,
562         	BOM_COST_ELEMENT_ID  =>  to_char(bom_cost_element_id),
563         	BOM_RESOURCE_ID  =>  to_char(bom_resource_id),
564         	CATEGORY_ID  =>  to_char(category_id),
565         	DELIVER_TO_LOCATION_ID  =>  to_char(deliver_to_location_id),
566         	DESTINATION_ORGANIZATION_ID  =>  to_char(destination_organization_id),
567         	DESTINATION_SUBINVENTORY  =>  destination_subinventory,
568         	DESTINATION_TYPE_CODE  =>  destination_type_code,
569         	EXPENDITURE_TYPE  =>  expenditure_type,
570         	EXPENDITURE_ORGANIZATION_ID  =>  to_char(expenditure_organization_id),
571         	LINE_TYPE_ID  =>  to_char(line_type_id),
572         	PA_BILLABLE_FLAG  =>  pa_billable_flag,
573         	PREPARER_ID  =>  to_char(preparer_id),
574         	PROJECT_ID  =>  to_char(project_id),
575 
576         	TASK_ID  =>  to_char(task_id),
577         	TO_PERSON_ID  =>  to_char(to_person_id),
578         	TYPE_LOOKUP_CODE  =>  type_lookup_code,
579         	SOURCE_VENDOR_ID  =>  to_char(suggested_vendor_id),
580         	ITEM_ID  =>  to_char(item_id),
581 
582 		SOURCE_TYPE_CODE => source_type_code,
583 		SOURCE_ORGANIZATION_ID => source_organization_id,
584 		SOURCE_SUBINVENTORY => source_subinventory,
585 
586         	HEADER_ATT1  =>  header_att1,
587         	HEADER_ATT2  =>  header_att2,
588         	HEADER_ATT3  =>  header_att3,
589        	 	HEADER_ATT4  =>  header_att4,
590         	HEADER_ATT5  =>  header_att5,
591         	HEADER_ATT6  =>  header_att6,
592         	HEADER_ATT7  =>  header_att7,
593         	HEADER_ATT8  =>  header_att8,
594         	HEADER_ATT9  =>  header_att9,
595         	HEADER_ATT10  =>  header_att10,
596         	HEADER_ATT11  =>  header_att11,
597         	HEADER_ATT12  =>  header_att12,
598         	HEADER_ATT13  =>  header_att13,
599         	HEADER_ATT14  =>  header_att14,
600         	HEADER_ATT15  =>  header_att15,
601 
602         	LINE_ATT1  =>  line_att1,
603         	LINE_ATT2  =>  line_att2,
604         	LINE_ATT3  =>  line_att3,
605         	LINE_ATT4  =>  line_att4,
606         	LINE_ATT5  =>  line_att5,
607         	LINE_ATT6  =>  line_att6,
608         	LINE_ATT7  =>  line_att7,
609         	LINE_ATT8  =>  line_att8,
610         	LINE_ATT9  =>  line_att9,
611         	LINE_ATT10  =>  line_att10,
612         	LINE_ATT11  =>  line_att11,
613         	LINE_ATT12  =>  line_att12,
614         	LINE_ATT13  =>  line_att13,
615         	LINE_ATT14  =>  line_att14,
616         	LINE_ATT15  =>  line_att15,
617 
618         	DISTRIBUTION_ATT1  =>  distribution_att1,
619         	DISTRIBUTION_ATT2  =>  distribution_att2,
620         	DISTRIBUTION_ATT3  =>  distribution_att3,
621         	DISTRIBUTION_ATT4  =>  distribution_att4,
622         	DISTRIBUTION_ATT5  =>  distribution_att5,
623         	DISTRIBUTION_ATT6  =>  distribution_att6,
624         	DISTRIBUTION_ATT7  =>  distribution_att7,
625         	DISTRIBUTION_ATT8  =>  distribution_att8,
626         	DISTRIBUTION_ATT9  =>  distribution_att9,
627         	DISTRIBUTION_ATT10  =>  distribution_att10,
628         	DISTRIBUTION_ATT11  =>  distribution_att11,
629         	DISTRIBUTION_ATT12  =>  distribution_att12,
630         	DISTRIBUTION_ATT13  =>  distribution_att13,
631         	DISTRIBUTION_ATT14  =>  distribution_att14,
632         	DISTRIBUTION_ATT15  =>  distribution_att15,
633 
634         	WIP_ENTITY_ID  =>  to_char(wip_entity_id),
635         	WIP_ENTITY_TYPE  =>  wip_entity_type,
636         	WIP_LINE_ID  =>  to_char(wip_line_id),
637         	WIP_OPERATION_SEQ_NUM  =>  to_char(wip_operation_seq_num),
638         	WIP_REPETITIVE_SCHEDULE_ID  =>  to_char(wip_repetitive_schedule_id),
639         	WIP_RESOURCE_SEQ_NUM  =>  to_char(wip_resource_seq_num),
640 
641         	FB_FLEX_SEG   => fb_flex_seg,
642         	FB_ERROR_MSG   => fb_error_msg  );
643 
644 	ELSIF (accountType = 'BUDGET') THEN
645 
646 	   x_result_flag := PO_REQ_BUDGET_ACCOUNT.BUILD (
647 
648         	FB_FLEX_NUM  =>  chart_of_accounts_id,
649         	BOM_COST_ELEMENT_ID  =>  to_char(bom_cost_element_id),
650         	BOM_RESOURCE_ID  =>  to_char(bom_resource_id),
651         	CATEGORY_ID  =>  to_char(category_id),
652 		CODE_COMBINATION_ID => to_char(ccid),
653         	DELIVER_TO_LOCATION_ID  =>  to_char(deliver_to_location_id),
654         	DESTINATION_ORGANIZATION_ID  =>  to_char(destination_organization_id),
655         	DESTINATION_SUBINVENTORY  =>  destination_subinventory,
656         	DESTINATION_TYPE_CODE  =>  destination_type_code,
657         	EXPENDITURE_TYPE  =>  expenditure_type,
658         	EXPENDITURE_ORGANIZATION_ID  =>  to_char(expenditure_organization_id),
659         	LINE_TYPE_ID  =>  to_char(line_type_id),
660         	PA_BILLABLE_FLAG  =>  pa_billable_flag,
661         	PREPARER_ID  =>  to_char(preparer_id),
662         	PROJECT_ID  =>  to_char(project_id),
663 
664         	TASK_ID  =>  to_char(task_id),
665         	TO_PERSON_ID  =>  to_char(to_person_id),
666         	TYPE_LOOKUP_CODE  =>  type_lookup_code,
667         	SOURCE_VENDOR_ID  =>  to_char(suggested_vendor_id),
668         	ITEM_ID  =>  to_char(item_id),
669 
670 		SOURCE_TYPE_CODE => source_type_code,
671 		SOURCE_ORGANIZATION_ID => source_organization_id,
672 		SOURCE_SUBINVENTORY => source_subinventory,
673 
674         	HEADER_ATT1  =>  header_att1,
675         	HEADER_ATT2  =>  header_att2,
676         	HEADER_ATT3  =>  header_att3,
677        	 	HEADER_ATT4  =>  header_att4,
678         	HEADER_ATT5  =>  header_att5,
679         	HEADER_ATT6  =>  header_att6,
680         	HEADER_ATT7  =>  header_att7,
681         	HEADER_ATT8  =>  header_att8,
682         	HEADER_ATT9  =>  header_att9,
683         	HEADER_ATT10  =>  header_att10,
684         	HEADER_ATT11  =>  header_att11,
685         	HEADER_ATT12  =>  header_att12,
686         	HEADER_ATT13  =>  header_att13,
687         	HEADER_ATT14  =>  header_att14,
688         	HEADER_ATT15  =>  header_att15,
689 
690         	LINE_ATT1  =>  line_att1,
691         	LINE_ATT2  =>  line_att2,
692         	LINE_ATT3  =>  line_att3,
693         	LINE_ATT4  =>  line_att4,
694         	LINE_ATT5  =>  line_att5,
695         	LINE_ATT6  =>  line_att6,
696         	LINE_ATT7  =>  line_att7,
697         	LINE_ATT8  =>  line_att8,
698         	LINE_ATT9  =>  line_att9,
699         	LINE_ATT10  =>  line_att10,
700         	LINE_ATT11  =>  line_att11,
701         	LINE_ATT12  =>  line_att12,
702         	LINE_ATT13  =>  line_att13,
703         	LINE_ATT14  =>  line_att14,
704         	LINE_ATT15  =>  line_att15,
705 
706         	DISTRIBUTION_ATT1  =>  distribution_att1,
707         	DISTRIBUTION_ATT2  =>  distribution_att2,
708         	DISTRIBUTION_ATT3  =>  distribution_att3,
709         	DISTRIBUTION_ATT4  =>  distribution_att4,
710         	DISTRIBUTION_ATT5  =>  distribution_att5,
711         	DISTRIBUTION_ATT6  =>  distribution_att6,
712         	DISTRIBUTION_ATT7  =>  distribution_att7,
713         	DISTRIBUTION_ATT8  =>  distribution_att8,
714         	DISTRIBUTION_ATT9  =>  distribution_att9,
715         	DISTRIBUTION_ATT10  =>  distribution_att10,
716         	DISTRIBUTION_ATT11  =>  distribution_att11,
717         	DISTRIBUTION_ATT12  =>  distribution_att12,
718         	DISTRIBUTION_ATT13  =>  distribution_att13,
719         	DISTRIBUTION_ATT14  =>  distribution_att14,
720         	DISTRIBUTION_ATT15  =>  distribution_att15,
721 
722         	WIP_ENTITY_ID  =>  to_char(wip_entity_id),
723         	WIP_ENTITY_TYPE  =>  wip_entity_type,
724         	WIP_LINE_ID  =>  to_char(wip_line_id),
725         	WIP_OPERATION_SEQ_NUM  =>  to_char(wip_operation_seq_num),
726         	WIP_REPETITIVE_SCHEDULE_ID  =>  to_char(wip_repetitive_schedule_id),
727         	WIP_RESOURCE_SEQ_NUM  =>  to_char(wip_resource_seq_num),
728 
729         	FB_FLEX_SEG   => fb_flex_seg,
730         	FB_ERROR_MSG   => fb_error_msg  );
731 
732 	ELSIF (accountType = 'ACCRUAL') THEN
733 
734 	   x_result_flag := PO_REQ_ACCRUAL_ACCOUNT.BUILD (
735 
736         	FB_FLEX_NUM  =>  chart_of_accounts_id,
737         	BOM_COST_ELEMENT_ID  =>  to_char(bom_cost_element_id),
738         	BOM_RESOURCE_ID  =>  to_char(bom_resource_id),
739         	CATEGORY_ID  =>  to_char(category_id),
740 		CODE_COMBINATION_ID => to_char(ccid),
741 		BUDGET_ACCOUNT_ID => to_char(budget_account_id),
742         	DELIVER_TO_LOCATION_ID  =>  to_char(deliver_to_location_id),
743         	DESTINATION_ORGANIZATION_ID  =>  to_char(destination_organization_id),
744         	DESTINATION_SUBINVENTORY  =>  destination_subinventory,
745         	DESTINATION_TYPE_CODE  =>  destination_type_code,
746         	EXPENDITURE_TYPE  =>  expenditure_type,
747         	EXPENDITURE_ORGANIZATION_ID  =>  to_char(expenditure_organization_id),
748         	LINE_TYPE_ID  =>  to_char(line_type_id),
749         	PA_BILLABLE_FLAG  =>  pa_billable_flag,
750         	PREPARER_ID  =>  to_char(preparer_id),
751         	PROJECT_ID  =>  to_char(project_id),
752 
753         	TASK_ID  =>  to_char(task_id),
754         	TO_PERSON_ID  =>  to_char(to_person_id),
755         	TYPE_LOOKUP_CODE  =>  type_lookup_code,
756         	SOURCE_VENDOR_ID  =>  to_char(suggested_vendor_id),
757         	ITEM_ID  =>  to_char(item_id),
758 
759 		SOURCE_TYPE_CODE => source_type_code,
760 		SOURCE_ORGANIZATION_ID => source_organization_id,
761 		SOURCE_SUBINVENTORY => source_subinventory,
762 
763         	HEADER_ATT1  =>  header_att1,
764         	HEADER_ATT2  =>  header_att2,
765         	HEADER_ATT3  =>  header_att3,
766        	 	HEADER_ATT4  =>  header_att4,
767         	HEADER_ATT5  =>  header_att5,
768         	HEADER_ATT6  =>  header_att6,
769         	HEADER_ATT7  =>  header_att7,
770         	HEADER_ATT8  =>  header_att8,
771         	HEADER_ATT9  =>  header_att9,
772         	HEADER_ATT10  =>  header_att10,
773         	HEADER_ATT11  =>  header_att11,
774         	HEADER_ATT12  =>  header_att12,
775         	HEADER_ATT13  =>  header_att13,
776         	HEADER_ATT14  =>  header_att14,
777         	HEADER_ATT15  =>  header_att15,
778 
779         	LINE_ATT1  =>  line_att1,
780         	LINE_ATT2  =>  line_att2,
781         	LINE_ATT3  =>  line_att3,
782         	LINE_ATT4  =>  line_att4,
783         	LINE_ATT5  =>  line_att5,
784         	LINE_ATT6  =>  line_att6,
785         	LINE_ATT7  =>  line_att7,
786         	LINE_ATT8  =>  line_att8,
787         	LINE_ATT9  =>  line_att9,
788         	LINE_ATT10  =>  line_att10,
789         	LINE_ATT11  =>  line_att11,
790         	LINE_ATT12  =>  line_att12,
791         	LINE_ATT13  =>  line_att13,
792         	LINE_ATT14  =>  line_att14,
793         	LINE_ATT15  =>  line_att15,
794 
795         	DISTRIBUTION_ATT1  =>  distribution_att1,
796         	DISTRIBUTION_ATT2  =>  distribution_att2,
797         	DISTRIBUTION_ATT3  =>  distribution_att3,
798         	DISTRIBUTION_ATT4  =>  distribution_att4,
799         	DISTRIBUTION_ATT5  =>  distribution_att5,
800         	DISTRIBUTION_ATT6  =>  distribution_att6,
801         	DISTRIBUTION_ATT7  =>  distribution_att7,
802         	DISTRIBUTION_ATT8  =>  distribution_att8,
803         	DISTRIBUTION_ATT9  =>  distribution_att9,
804         	DISTRIBUTION_ATT10  =>  distribution_att10,
805         	DISTRIBUTION_ATT11  =>  distribution_att11,
806         	DISTRIBUTION_ATT12  =>  distribution_att12,
807         	DISTRIBUTION_ATT13  =>  distribution_att13,
808         	DISTRIBUTION_ATT14  =>  distribution_att14,
809         	DISTRIBUTION_ATT15  =>  distribution_att15,
810 
811         	WIP_ENTITY_ID  =>  to_char(wip_entity_id),
812         	WIP_ENTITY_TYPE  =>  wip_entity_type,
813         	WIP_LINE_ID  =>  to_char(wip_line_id),
814         	WIP_OPERATION_SEQ_NUM  =>  to_char(wip_operation_seq_num),
815         	WIP_REPETITIVE_SCHEDULE_ID  =>  to_char(wip_repetitive_schedule_id),
816         	WIP_RESOURCE_SEQ_NUM  =>  to_char(wip_resource_seq_num),
817 
818         	FB_FLEX_SEG   => fb_flex_seg,
819         	FB_ERROR_MSG   => fb_error_msg  );
820 
821 	ELSIF (accountType = 'VARIANCE') THEN
822 
823 	   x_result_flag := PO_REQ_VARIANCE_ACCOUNT.BUILD (
824 
825         	FB_FLEX_NUM  =>  chart_of_accounts_id,
826         	BOM_COST_ELEMENT_ID  =>  to_char(bom_cost_element_id),
827         	BOM_RESOURCE_ID  =>  to_char(bom_resource_id),
828         	CATEGORY_ID  =>  to_char(category_id),
829 		CODE_COMBINATION_ID => to_char(ccid),
830 		BUDGET_ACCOUNT_ID => to_char(budget_account_id),
831 		ACCRUAL_ACCOUNT_ID => to_char(accrual_account_id),
832         	DELIVER_TO_LOCATION_ID  =>  to_char(deliver_to_location_id),
833         	DESTINATION_ORGANIZATION_ID  =>  to_char(destination_organization_id),
834         	DESTINATION_SUBINVENTORY  =>  destination_subinventory,
835         	DESTINATION_TYPE_CODE  =>  destination_type_code,
836         	EXPENDITURE_TYPE  =>  expenditure_type,
837         	EXPENDITURE_ORGANIZATION_ID  =>  to_char(expenditure_organization_id),
838         	LINE_TYPE_ID  =>  to_char(line_type_id),
839         	PA_BILLABLE_FLAG  =>  pa_billable_flag,
840         	PREPARER_ID  =>  to_char(preparer_id),
841         	PROJECT_ID  =>  to_char(project_id),
842 
843         	TASK_ID  =>  to_char(task_id),
844         	TO_PERSON_ID  =>  to_char(to_person_id),
845         	TYPE_LOOKUP_CODE  =>  type_lookup_code,
846         	SOURCE_VENDOR_ID  =>  to_char(suggested_vendor_id),
847         	ITEM_ID  =>  to_char(item_id),
848 
849 		SOURCE_TYPE_CODE => source_type_code,
850 		SOURCE_ORGANIZATION_ID => source_organization_id,
851 		SOURCE_SUBINVENTORY => source_subinventory,
852 
853         	HEADER_ATT1  =>  header_att1,
854         	HEADER_ATT2  =>  header_att2,
855         	HEADER_ATT3  =>  header_att3,
856        	 	HEADER_ATT4  =>  header_att4,
857         	HEADER_ATT5  =>  header_att5,
858         	HEADER_ATT6  =>  header_att6,
859         	HEADER_ATT7  =>  header_att7,
860         	HEADER_ATT8  =>  header_att8,
861         	HEADER_ATT9  =>  header_att9,
862         	HEADER_ATT10  =>  header_att10,
863         	HEADER_ATT11  =>  header_att11,
864         	HEADER_ATT12  =>  header_att12,
865         	HEADER_ATT13  =>  header_att13,
866         	HEADER_ATT14  =>  header_att14,
867         	HEADER_ATT15  =>  header_att15,
868 
869         	LINE_ATT1  =>  line_att1,
870         	LINE_ATT2  =>  line_att2,
871         	LINE_ATT3  =>  line_att3,
872         	LINE_ATT4  =>  line_att4,
873         	LINE_ATT5  =>  line_att5,
874         	LINE_ATT6  =>  line_att6,
875         	LINE_ATT7  =>  line_att7,
876         	LINE_ATT8  =>  line_att8,
877         	LINE_ATT9  =>  line_att9,
878         	LINE_ATT10  =>  line_att10,
879         	LINE_ATT11  =>  line_att11,
880         	LINE_ATT12  =>  line_att12,
881         	LINE_ATT13  =>  line_att13,
882         	LINE_ATT14  =>  line_att14,
883         	LINE_ATT15  =>  line_att15,
884 
885         	DISTRIBUTION_ATT1  =>  distribution_att1,
886         	DISTRIBUTION_ATT2  =>  distribution_att2,
887         	DISTRIBUTION_ATT3  =>  distribution_att3,
888         	DISTRIBUTION_ATT4  =>  distribution_att4,
889         	DISTRIBUTION_ATT5  =>  distribution_att5,
890         	DISTRIBUTION_ATT6  =>  distribution_att6,
891         	DISTRIBUTION_ATT7  =>  distribution_att7,
892         	DISTRIBUTION_ATT8  =>  distribution_att8,
893         	DISTRIBUTION_ATT9  =>  distribution_att9,
894         	DISTRIBUTION_ATT10  =>  distribution_att10,
895         	DISTRIBUTION_ATT11  =>  distribution_att11,
896         	DISTRIBUTION_ATT12  =>  distribution_att12,
897         	DISTRIBUTION_ATT13  =>  distribution_att13,
898         	DISTRIBUTION_ATT14  =>  distribution_att14,
899         	DISTRIBUTION_ATT15  =>  distribution_att15,
900 
901         	WIP_ENTITY_ID  =>  to_char(wip_entity_id),
902         	WIP_ENTITY_TYPE  =>  wip_entity_type,
903         	WIP_LINE_ID  =>  to_char(wip_line_id),
904         	WIP_OPERATION_SEQ_NUM  =>  to_char(wip_operation_seq_num),
905         	WIP_REPETITIVE_SCHEDULE_ID  =>  to_char(wip_repetitive_schedule_id),
906         	WIP_RESOURCE_SEQ_NUM  =>  to_char(wip_resource_seq_num),
907 
908         	FB_FLEX_SEG   => fb_flex_seg,
909         	FB_ERROR_MSG   => fb_error_msg  );
910 
911  	END IF;
912 	x_progress := 'PO_WF_REQ_FLEXBUILDER_UPGRADE.req_build_account : 2';
913 	IF (g_po_wf_debug = 'Y') THEN
914    	/* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
915 	END IF;
916 
917 	return x_result_flag;
918 
919 exception
920 	when others then
921 	wf_core.context('PO_WF_REQ_FLEXBUILDER_UPGRADE','req_build_account',x_progress);
922 	IF (g_po_wf_debug = 'Y') THEN
923    	/* DEBUG */  PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,'EXCEPTION raised in req_build_account procedure');
924 	END IF;
925         raise;
926 end req_build_account;
927 
928 /*****************************************************************************
929 * 	 Local/Private procedure that support the workflow APIs:             *
930 *****************************************************************************/
931 
932 procedure Get_att(itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY varchar2, l_aname in varchar2)
933 is
934 begin
935 
936 	variable := wf_engine.GetItemAttrText (   itemtype => itemtype,
937                 	                          itemkey  => itemkey,
938                             	 	          aname    => l_aname);
939 
940 end;
941 
942 procedure Get_number_att(itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY number,
943 			 l_aname in varchar2)
944 is
945 begin
946 
947 	variable := wf_engine.GetItemAttrNumber (   itemtype => itemtype,
948                 	                            itemkey  => itemkey,
949                             	 	            aname    => l_aname);
950 
951 end;
952 
953 procedure Get_date_att(itemtype in varchar2, itemkey in varchar2, variable in out NOCOPY date,
954 			 l_aname in varchar2)
955 is
956 begin
957 
958 	variable := wf_engine.GetItemAttrDate (   itemtype => itemtype,
959                 	                          itemkey  => itemkey,
960                             	 	          aname    => l_aname);
961 
962 end;
963 
964 
965 end  PO_WF_REQ_FLEXBUILDER_UPGRADE;