[Home] [Help]
PACKAGE BODY: APPS.FA_MASSADD_PREP_ENERGY_PKG
Source
1 package body FA_MASSADD_PREP_ENERGY_PKG as
2 /* $Header: FAMAPREPEB.pls 120.12 2010/03/04 23:38:17 glchen ship $ */
3
4 -- Private type declarations
5
6 -- Private constant declarations
7
8 -- Private variable declarations
9 -- Function and procedure implementations
10
11 function create_new_asset(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
12 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
13 return boolean is
14 l_total_cost number;
15 l_debug_str varchar2(1000);
16 l_calling_fn varchar2(40) := 'create_new_asset';
17 begin
18 if (px_mass_add_rec.EXPENSE_CODE_COMBINATION_ID is not null) and
19 (px_mass_add_rec.location_id is not null) and
20 (px_mass_add_rec.asset_category_id is not null) and
21 (px_mass_add_rec.asset_key_ccid is not null) then
22 l_debug_str := 'Check the cost';
23 if (p_log_level_rec.statement_level) then
24 fa_debug_pkg.add(l_calling_fn,
25 l_debug_str,
26 '',
27 p_log_level_rec => p_log_level_rec);
28 end if;
29 select nvl(sum(fixed_assets_cost), 0)
30 into l_total_cost
31 from fa_mass_additions
32 where split_merged_code = 'MC'
33 and parent_mass_addition_id = px_mass_add_rec.mass_addition_id
34 or mass_addition_id = px_mass_add_rec.mass_addition_id;
35 if (l_total_cost >= 0) then
36 l_debug_str := 'Cost is positive';
37 update fa_mass_additions
38 set EXPENSE_CODE_COMBINATION_ID = px_mass_add_rec.EXPENSE_CODE_COMBINATION_ID,
39 location_id = px_mass_add_rec.location_id,
40 asset_category_id = px_mass_add_rec.asset_category_id,
41 asset_key_ccid = px_mass_add_rec.asset_key_ccid,
42 posting_status = 'POST',
43 queue_name = 'POST',
44 last_update_date = sysdate,
45 last_updated_by = FND_GLOBAL.user_id
46 where mass_addition_id = px_mass_add_rec.mass_addition_id;
47 else
48 l_debug_str := 'Cost is negative';
49 if (p_log_level_rec.statement_level) then
50 fa_debug_pkg.add(l_calling_fn,
51 l_debug_str,
52 '',
53 p_log_level_rec => p_log_level_rec);
54 end if;
55 update fa_mass_additions
56 set EXPENSE_CODE_COMBINATION_ID = px_mass_add_rec.EXPENSE_CODE_COMBINATION_ID,
57 location_id = px_mass_add_rec.location_id,
58 asset_category_id = px_mass_add_rec.asset_category_id,
59 asset_key_ccid = px_mass_add_rec.asset_key_ccid,
60 posting_status = 'ON HOLD',
61 queue_name = 'ON HOLD',
62 last_update_date = sysdate,
63 last_updated_by = FND_GLOBAL.user_id
64 where mass_addition_id = px_mass_add_rec.mass_addition_id;
65
66 end if;
67 else
68 l_debug_str := 'Expense Account not generated';
69 if (p_log_level_rec.statement_level) then
70 fa_debug_pkg.add(l_calling_fn,
71 l_debug_str,
72 '',
73 p_log_level_rec => p_log_level_rec);
74 end if;
75 update fa_mass_additions
76 set EXPENSE_CODE_COMBINATION_ID = nvl(px_mass_add_rec.EXPENSE_CODE_COMBINATION_ID,
77 EXPENSE_CODE_COMBINATION_ID),
78 location_id = nvl(px_mass_add_rec.location_id,
79 location_id),
80 asset_category_id = nvl(px_mass_add_rec.asset_category_id,
81 asset_category_id),
82 asset_key_ccid = nvl(px_mass_add_rec.asset_key_ccid,
83 asset_key_ccid),
84 posting_status = 'ON HOLD',
85 queue_name = 'ON HOLD',
86 last_update_date = sysdate,
87 last_updated_by = FND_GLOBAL.user_id
88 where mass_addition_id = px_mass_add_rec.mass_addition_id;
89
90 end if;
91 commit;
92 return true;
93 EXCEPTION
94 WHEN no_data_found THEN
95 return false;
96 WHEN OTHERS THEN
97 ROLLBACK;
98 return false;
99 END;
100
101 /*===============================End Of FUNCTION/PROCEDURE===============================*/
102 function cost_adjustment(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
103 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
104 return boolean is
105 l_total_cost number;
106 l_debug_str varchar2(1000);
107 l_calling_fn varchar2(40) := 'cost_asjustment';
108 begin
109 if (px_mass_add_rec.add_to_asset_id is not null) then
110 l_debug_str := 'Check the cost validity';
111 if (p_log_level_rec.statement_level) then
112 fa_debug_pkg.add(l_calling_fn,
113 l_debug_str,
114 '',
115 p_log_level_rec => p_log_level_rec);
116 end if;
117 select nvl(sum(fixed_assets_cost), 0)
118 into l_total_cost
119 from fa_mass_additions
120 where split_merged_code = 'MC'
121 and parent_mass_addition_id = px_mass_add_rec.mass_addition_id
122 and merged_code = 'MC'
123 and posting_status = 'MERGED';
124
125 select l_total_cost + nvl(cost, 0)
126 into l_total_cost
127 from fa_books
128 where book_type_code = px_mass_add_rec.book_type_code
129 and asset_id = px_mass_add_rec.add_to_asset_id
130 and transaction_header_id_out is null;
131 if (l_total_cost > 0) then
132 l_debug_str := 'Cost is positive';
133 if (p_log_level_rec.statement_level) then
134 fa_debug_pkg.add(l_calling_fn,
135 l_debug_str,
136 '',
137 p_log_level_rec => p_log_level_rec);
138 end if;
139 update fa_mass_additions
140 set add_to_asset_id = px_mass_add_rec.add_to_asset_id,
141 posting_status = 'POST',
142 queue_name = 'POST',
143 last_update_date = sysdate,
144 last_updated_by = FND_GLOBAL.user_id
145 where mass_addition_id = px_mass_add_rec.mass_addition_id;
146
147 else
148 l_debug_str := 'Cost is negative';
149 if (p_log_level_rec.statement_level) then
150 fa_debug_pkg.add(l_calling_fn,
151 l_debug_str,
152 '',
153 p_log_level_rec => p_log_level_rec);
154 end if;
155 update fa_mass_additions
156 set posting_status = 'POST',
157 queue_name = 'POST',
158 last_update_date = sysdate,
159 last_updated_by = FND_GLOBAL.user_id
160 where mass_addition_id = px_mass_add_rec.mass_addition_id;
161
162 end if;
163 end if;
164
165 return true;
166 EXCEPTION
167 WHEN no_data_found THEN
168
169 return false;
170 WHEN OTHERS THEN
171
172 ROLLBACK;
173 return false;
174 END;
175 /*===============================End Of FUNCTION/PROCEDURE===============================*/
176 function check_addition_or_adj(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
177 x_status OUT NOCOPY varchar2,
178 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
179 return boolean is
180 l_asset_id number := 0;
181 begin
182 select ad.asset_id
183 into l_asset_id
184 from fa_additions ad, fa_books bk
185 where asset_key_ccid = px_mass_add_rec.asset_category_id
186 and asset_key_ccid = px_mass_add_rec.ASSET_KEY_CCID
187 and ad.asset_id = bk.asset_id
188 and bk.book_type_code = px_mass_add_rec.book_type_code
189 and bk.transaction_header_id_out is null
190 and rownum < 2;
191 px_mass_add_rec.add_to_asset_id := l_asset_id;
192 x_status := 'ADJUSTMENT';
193 return true;
194 exception
195 when no_data_found then
196 px_mass_add_rec.add_to_asset_id := null;
197 x_status := 'ADDITION';
198 return true;
199 when others then
200 x_status := 'FAILED';
201 return false;
202 end;
203 /*===============================End Of FUNCTION/PROCEDURE===============================*/
204 function prepare_asset_key(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
205 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
206 return boolean is
207
208 TYPE varchar30_tbl IS TABLE OF varchar2(30) INDEX BY BINARY_INTEGER;
209 l_akey_segment varchar30_tbl;
210 l_akey_ccid number;
211 akey_ccid_seq number;
212 l_select varchar2(2000);
213 l_from varchar2(2000);
214 l_where varchar2(2000);
215 l_query varchar2(6000);
216 l_coa NUMBER;
217 l_sob_id NUMBER;
218 l_dyanmic_cur number;
219
220 l_segment varchar30_tbl;
221 l_category FA_Categories.Category_ID%TYPE;
222 l_key_ccid FA_Asset_Keywords.Code_Combination_ID%TYPE;
223 l_asset_type FA_Mass_Additions.Asset_Type%TYPE;
224
225 l_mass_addition_id FA_Mass_Additions.Mass_Addition_ID%TYPE;
226 l_invoice_number FA_Mass_Additions.Invoice_Number%TYPE;
227 l_feeder_sys_name FA_Mass_Additions.Feeder_System_Name%TYPE;
228 l_fixed_assets_cost FA_Mass_Additions.Fixed_Assets_Cost%TYPE;
229 l_description FA_Mass_Additions.Description%TYPE;
230 l_queue_name FA_Mass_Additions.Queue_Name%TYPE;
231 l_asset_Key_segment1 FA_Mass_Additions.Asset_Key_segment1%TYPE;
232 l_asset_Key_segment2 FA_Mass_Additions.Asset_Key_segment2%TYPE;
233 l_asset_Key_segment3 FA_Mass_Additions.Asset_Key_segment3%TYPE;
234 l_asset_Key_segment4 FA_Mass_Additions.Asset_Key_segment4%TYPE;
235 l_asset_Key_segment5 FA_Mass_Additions.Asset_Key_segment5%TYPE;
236 l_asset_Key_segment6 FA_Mass_Additions.Asset_Key_segment6%TYPE;
237 l_asset_Key_segment7 FA_Mass_Additions.Asset_Key_segment7%TYPE;
238 l_asset_Key_segment8 FA_Mass_Additions.Asset_Key_segment8%TYPE;
239 l_asset_Key_segment9 FA_Mass_Additions.Asset_Key_segment9%TYPE;
240 l_asset_Key_segment10 FA_Mass_Additions.Asset_Key_segment10%TYPE;
241 l_payables_ccid FA_Mass_Additions.Payables_Code_Combination_ID%TYPE;
242 l_dist_ccid NUMBER;
243 l_dist_line_num NUMBER;
244 l_mass_add_rec Fa_Mass_Additions%ROWTYPE;
245
246 l_cur_status number;
247 l_debug_str varchar2(1000);
248 l_plsql_block VARCHAR2(500);
249 l_table varchar(30);
250 l_product varchar2(10);
251 TYPE AssetKeyCurType IS REF CURSOR;
252 l_AssetKeyCur AssetKeyCurType;
253 l_calling_fn varchar2(40) := 'prepare_asset_key';
254 begin
255 l_query := null;
256 if (px_mass_add_rec.ASSET_KEY_CCID is null) then
257 l_debug_str := 'Getting SOB id and COA';
258 --code to get asset key using fedder system
259 SELECT Gl_sob.Set_Of_Books_id, Chart_Of_Accounts_ID
260 INTO l_sob_id, l_coa
261 FROM GL_Sets_Of_Books GL_sob, FA_Book_Controls FA_BC
262 WHERE GL_sob.Set_Of_Books_ID = FA_BC.Set_Of_Books_ID
263 AND Book_Type_Code = px_mass_add_rec.book_type_code;
264
265 if (upper(px_mass_add_rec.FEEDER_SYSTEM_NAME) = 'ORACLE PAYABLES') then
266 l_debug_str := 'Feeder System Oracle Payables';
267 l_table := 'AP_INVOICE_DISTRIBUTIONS_ALL';
268 l_product := 'AP';
269 l_plsql_block := 'BEGIN EJINMAP.get_asset_key_map(:l_table,:l_product,:l_sob_id,:l_select,:l_from,:l_where); END;';
270 EXECUTE IMMEDIATE l_plsql_block
271 USING l_table, l_product, l_sob_id, l_select, l_from, l_where;
272
273 /* EJINMAP.get_asset_key_map('AP_INVOICE_DISTRIBUTIONS_ALL',
274 'AP',
275 l_sob_id,
276 l_select,
277 l_from,
278 l_where);*/
279 l_query := 'select ' || l_select || ',Payables_Code_Combination_ID
280 from ' || l_from ||
281 ',FA_Mass_Additions FA where ' || l_where ||
282 ' AND TRANS.Invoice_ID= FA.Invoice_ID
283 AND TRANS.Distribution_Line_Number=FA.AP_Distribution_Line_Number
284 AND Posting_Status IN (''NEW'',''ON HOLD'')
285 AND book_type_code=:px_mass_add_rec.book_type_code
286 AND Feeder_System_Name=''ORACLE PAYABLES''';
287
288 elsif (upper(px_mass_add_rec.FEEDER_SYSTEM_NAME) =
289 'ORACLE GENERAL LEDGER') then
290 l_debug_str := 'Feeder System Oracle General Ledger';
291 l_debug_str := 'Feeder System Oracle Payables';
292 l_table := 'GL_JE_LINES';
293 l_product := 'GL';
294
295 l_plsql_block := 'BEGIN EJINMAP.get_asset_key_map(:l_table,:l_product,:l_sob_id,:l_select,:l_from,:l_where); END;';
296 EXECUTE IMMEDIATE l_plsql_block
297 USING l_table, l_product, l_sob_id, OUT l_select, OUT l_from, OUT l_where;
298
299 l_query := 'SELECT AFF.Code_Combination_ID ,Mass_Addition_ID
300 ,Invoice_Number ,FA.AP_Distribution_Line_Number
301 ,Feeder_System_Name ,Fixed_Assets_Cost
302 ,FA.Description Description ,Queue_Name ' ||
303 l_select || ',Payables_Code_Combination_ID
304 from ' || l_from ||
305 ',FA_Mass_Additions FA where ' || l_where ||
306 'AND TRANS.Je_Header_ID = FA.Je_Header_ID
307 AND TRANS.Je_Line_Num = FA.Je_Line_Num
308 AND book_type_code = :px_mass_add_rec.book_type_code
309 AND Posting_Status IN (''NEW'',''ON HOLD'')
310 AND Feeder_System_Name = ''GL''';
311 else
312 l_debug_str := 'Feeder System Other';
313 --if (upper(px_mass_add_rec.FEEDER_SYSTEM_NAME) = 'OTHERS') then
314 SELECT asset_key_segment1,
315 asset_key_segment2,
316 asset_key_segment3,
317 asset_key_segment4,
318 asset_key_segment5,
319 asset_key_segment6,
320 asset_key_segment7,
321 asset_key_segment8,
322 asset_key_segment9,
323 asset_key_segment10
324 INTO l_akey_segment(1),
325 l_akey_segment(2),
326 l_akey_segment(3),
327 l_akey_segment(4),
328 l_akey_segment(5),
329 l_akey_segment(6),
330 l_akey_segment(7),
331 l_akey_segment(8),
332 l_akey_segment(9),
333 l_akey_segment(10)
334 FROM fa_mass_additions
335 WHERE mass_addition_id = px_mass_add_rec.mass_addition_id;
336
337 BEGIN
338 l_debug_str := 'Get the Asset Key';
339 if (p_log_level_rec.statement_level) then
340 fa_debug_pkg.add(l_calling_fn,
341 l_debug_str,
342 '',
343 p_log_level_rec => p_log_level_rec);
344 end if;
345 SELECT code_combination_id
346 INTO l_akey_ccid
347 FROM fa_asset_keywords
348 WHERE nvl(segment1, '-1') = nvl(l_akey_segment(1), '-1')
349 and nvl(segment2, '-1') = nvl(l_akey_segment(2), '-1')
350 and nvl(segment3, '-1') = nvl(l_akey_segment(3), '-1')
351 and nvl(segment4, '-1') = nvl(l_akey_segment(4), '-1')
352 and nvl(segment5, '-1') = nvl(l_akey_segment(5), '-1')
353 and nvl(segment6, '-1') = nvl(l_akey_segment(6), '-1')
354 and nvl(segment7, '-1') = nvl(l_akey_segment(7), '-1')
355 and nvl(segment8, '-1') = nvl(l_akey_segment(8), '-1')
356 and nvl(segment9, '-1') = nvl(l_akey_segment(9), '-1')
357 and nvl(segment10, '-1') = nvl(l_akey_segment(10), '-1');
358 px_mass_add_rec.asset_key_ccid := l_akey_ccid;
359 EXCEPTION
360 WHEN no_data_found THEN
361 SELECT FA_Asset_keywords_S.Nextval
362 INTO akey_ccid_seq
363 FROM DUAL;
364 l_debug_str := 'Insert the asset key';
365 if (p_log_level_rec.statement_level) then
366 fa_debug_pkg.add(l_calling_fn,
367 l_debug_str,
368 '',
369 p_log_level_rec => p_log_level_rec);
370 end if;
371 INSERT INTO fa_asset_keywords
372 (CODE_COMBINATION_ID,
373 SEGMENT1,
374 SEGMENT2,
375 SEGMENT3,
376 SEGMENT4,
377 SEGMENT5,
378 SEGMENT6,
379 SEGMENT7,
380 SEGMENT8,
381 SEGMENT9,
382 SEGMENT10,
383 SUMMARY_FLAG,
384 ENABLED_FLAG,
385 START_DATE_ACTIVE,
386 END_DATE_ACTIVE,
387 LAST_UPDATE_DATE,
388 LAST_UPDATED_BY,
389 LAST_UPDATE_LOGIN)
390 VALUES
391 (akey_ccid_seq,
392 l_akey_segment(1),
393 l_akey_segment(2),
394 l_akey_segment(3),
395 l_akey_segment(4),
396 l_akey_segment(5),
397 l_akey_segment(6),
398 l_akey_segment(7),
399 l_akey_segment(8),
400 l_akey_segment(9),
401 l_akey_segment(10),
402 'Y',
403 'Y',
404 NULL,
405 NULL,
406 sysdate,
407 FND_GLOBAL.USER_ID,
408 -1);
409
410 px_mass_add_rec.asset_key_ccid := akey_ccid_seq;
411 WHEN OTHERS THEN
412 ROLLBACK;
413 END;
414 end if;
415
416 if (length(l_query) is not null) then
417 l_debug_str := 'Preparing the query, Define the Columns';
418 if (p_log_level_rec.statement_level) then
419 fa_debug_pkg.add(l_calling_fn,
420 l_debug_str,
421 '',
422 p_log_level_rec => p_log_level_rec);
423 end if;
424 OPEN l_AssetKeyCur FOR l_query
425 using px_mass_add_rec.book_type_code;
426
427 loop
428
429 FETCH l_AssetKeyCur
430 INTO l_dist_ccid, l_mass_addition_ID, l_invoice_number, l_Dist_Line_Num, l_feeder_sys_name,
431 l_fixed_assets_cost, l_description, l_queue_name, l_asset_Key_segment1, l_asset_Key_segment2,
432 l_asset_Key_segment3, l_asset_Key_segment4, l_asset_Key_segment5, l_asset_Key_segment6,
433 l_asset_Key_segment7, l_asset_Key_segment8, l_asset_Key_segment9, l_asset_Key_segment10,
434 l_payables_ccid;
435
436 EXIT WHEN l_AssetKeyCur%NOTFOUND;
437
438 BEGIN
439 SELECT code_combination_id
440 INTO px_mass_add_rec.asset_key_ccid
441 FROM fa_asset_keywords
442 WHERE nvl(segment1, '-1') = nvl(l_asset_key_segment1, '-1')
443 and nvl(segment2, '-1') = nvl(l_asset_key_segment2, '-1')
444 and nvl(segment3, '-1') = nvl(l_asset_key_segment3, '-1')
445 and nvl(segment4, '-1') = nvl(l_asset_key_segment4, '-1')
446 and nvl(segment5, '-1') = nvl(l_asset_key_segment5, '-1')
447 and nvl(segment6, '-1') = nvl(l_asset_key_segment6, '-1')
448 and nvl(segment7, '-1') = nvl(l_asset_key_segment7, '-1')
449 and nvl(segment8, '-1') = nvl(l_asset_key_segment8, '-1')
450 and nvl(segment9, '-1') = nvl(l_asset_key_segment9, '-1')
451 and nvl(segment10, '-1') = nvl(l_asset_key_segment10, '-1');
452
453 exception
454 when no_data_found then
455 SELECT FA_Asset_keywords_S.Nextval
456 INTO akey_ccid_seq
457 FROM DUAL;
458 INSERT INTO fa_asset_keywords
459 (CODE_COMBINATION_ID,
460 SEGMENT1,
461 SEGMENT2,
462 SEGMENT3,
463 SEGMENT4,
464 SEGMENT5,
465 SEGMENT6,
466 SEGMENT7,
467 SEGMENT8,
468 SEGMENT9,
469 SEGMENT10,
470 SUMMARY_FLAG,
471 ENABLED_FLAG,
472 START_DATE_ACTIVE,
473 END_DATE_ACTIVE,
474 LAST_UPDATE_DATE,
475 LAST_UPDATED_BY,
476 LAST_UPDATE_LOGIN)
477 VALUES
478 (akey_ccid_seq,
479 l_akey_segment(1),
480 l_akey_segment(2),
481 l_akey_segment(3),
482 l_akey_segment(4),
483 l_akey_segment(5),
484 l_akey_segment(6),
485 l_akey_segment(7),
486 l_akey_segment(8),
487 l_akey_segment(9),
488 l_akey_segment(10),
489 'Y',
490 'Y',
491 NULL,
492 NULL,
493 sysdate,
494 -1,
495 -1);
496
497 px_mass_add_rec.asset_key_ccid := akey_ccid_seq;
498 end;
499 end loop;
500
501 close l_AssetKeyCur;
502 end if;
503 end if;
504 return true;
505 exception
506 when others then
507 return false;
508 end;
509 /*===============================End Of FUNCTION/PROCEDURE===============================*/
510 function prepare_category(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
511 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
512 return boolean is
513 l_gl_ccid_rec GL_CODE_COMBINATIONS%ROWTYPE;
514 l_mass_add_rec FA_MASSADD_PREPARE_PKG.mass_add_rec;
515 l_err_mesg varchar2(500);
516 l_calling_fn varchar2(40) := 'prepare_category';
517 TYPE varchar30_tbl IS TABLE OF varchar2(30) INDEX BY BINARY_INTEGER;
518 TYPE num_tbl IS TABLE OF number INDEX BY BINARY_INTEGER;
519 l_seg_num num_tbl;
520 l_segment varchar30_tbl;
521 l_major_category varchar2(50);
522 l_minor_category varchar2(50);
523 l_major_index number;
524 l_minor_index number;
525 l_major_ccid number;
526 l_minor_ccid number;
527 l_clearing_acct_ccid number;
528 l_category_id number;
529 l_gl_ccid_enabled_flag varchar2(1);
530 l_ACCOUNTING_FLEX_STRUCTURE fa_book_controls.accounting_flex_structure%type;
531 l_bal_seg_num NUMBER;
532 l_lookup_code varchar2(30);
533 l_debug_str varchar2(1000);
534 h_chart_of_accounts_id GL_SETS_OF_BOOKS.chart_of_accounts_id%TYPE;
535
536 CURSOR lookup_cur(c_lookup_type varchar2) IS
537 select lookup_code
538 from fa_lookups
539 where lookup_type = c_lookup_type
540 and enabled_flag = 'Y';
541
542 begin
543 Select sob.chart_of_accounts_id
544 into h_chart_of_accounts_id
545 From fa_book_controls bc, gl_sets_of_books sob
546 Where sob.set_of_books_id = bc.set_of_books_id
547 And bc.book_type_code = px_mass_add_rec.book_type_code;
548
549 if (px_mass_add_rec.PAYABLES_CODE_COMBINATION_ID is not null) then
550 l_debug_str := 'Get the Accounting Flex Field';
551 if (p_log_level_rec.statement_level) then
552 fa_debug_pkg.add(l_calling_fn,
553 l_debug_str,
554 '',
555 p_log_level_rec => p_log_level_rec);
556 end if;
557 for i in 1 .. 30 loop
558 l_segment(i) := null;
559 l_seg_num(i) := -1;
560 end loop;
561 l_debug_str := 'Get the Category Mapping';
562 if (p_log_level_rec.statement_level) then
563 fa_debug_pkg.add(l_calling_fn,
564 l_debug_str,
565 '',
566 p_log_level_rec => p_log_level_rec);
567 end if;
568 FOR rec IN lookup_cur('CATEGORY MAPPING FOR COA') LOOP
569 l_seg_num(to_number(substr(rec.lookup_code, 8))) := 1;
570 END LOOP;
571
572 select Segment1,
573 Segment2,
574 Segment3,
575 Segment4,
576 Segment5,
577 Segment6,
578 Segment7,
579 Segment8,
580 Segment9,
581 Segment10,
582 Segment11,
583 Segment12,
584 Segment13,
585 Segment14,
586 Segment15,
587 Segment16,
588 Segment17,
589 Segment18,
590 Segment19,
591 Segment20,
592 Segment21,
593 Segment22,
594 Segment23,
595 Segment24,
596 Segment25,
597 Segment26,
598 Segment27,
599 Segment28,
600 Segment29,
601 Segment30,
602 enabled_flag
603 into l_segment(1),
604 l_segment(2),
605 l_segment(3),
606 l_segment(4),
607 l_segment(5),
608 l_segment(6),
609 l_segment(7),
610 l_segment(8),
611 l_segment(9),
612 l_segment(10),
613 l_segment(11),
614 l_segment(12),
615 l_segment(13),
616 l_segment(14),
617 l_segment(15),
618 l_segment(16),
619 l_segment(17),
620 l_segment(18),
621 l_segment(19),
622 l_segment(20),
623 l_segment(21),
624 l_segment(22),
625 l_segment(23),
626 l_segment(24),
627 l_segment(25),
628 l_segment(26),
629 l_segment(27),
630 l_segment(28),
631 l_segment(29),
632 l_segment(30),
633 l_gl_ccid_enabled_flag
634 from gl_code_combinations
635 where code_combination_id =
636 px_mass_add_rec.payables_code_combination_id
637 and chart_of_accounts_id = h_chart_of_accounts_id;
638
639 for i in 1 .. 30 loop
640 IF (l_seg_num(i) < 0) THEN
641 l_segment(i) := null;
642 END IF;
643 end loop;
644 if (px_mass_add_rec.asset_type = 'CAPITALIZED') then
645 l_debug_str := 'Get the Clearing Account for Capitalized Assets';
646 if (p_log_level_rec.statement_level) then
647 fa_debug_pkg.add(l_calling_fn,
648 l_debug_str,
649 '',
650 p_log_level_rec => p_log_level_rec);
651 end if;
652 select max(code_combination_id)
653 into l_clearing_acct_ccid
654 from gl_code_combinations gl_ccid
655 where decode(l_segment(1), null, '-1', gl_ccid.Segment1) =
656 nvl(l_segment(1), '-1')
657 and decode(l_segment(2), null, '-1', gl_ccid.Segment2) =
658 nvl(l_segment(2), '-1')
659 and decode(l_segment(3), null, '-1', gl_ccid.Segment3) =
660 nvl(l_segment(3), '-1')
661 and decode(l_segment(4), null, '-1', gl_ccid.Segment4) =
662 nvl(l_segment(4), '-1')
663 and decode(l_segment(5), null, '-1', gl_ccid.Segment5) =
664 nvl(l_segment(5), '-1')
665 and decode(l_segment(6), null, '-1', gl_ccid.Segment6) =
666 nvl(l_segment(6), '-1')
667 and decode(l_segment(7), null, '-1', gl_ccid.Segment7) =
668 nvl(l_segment(7), '-1')
669 and decode(l_segment(8), null, '-1', gl_ccid.Segment8) =
670 nvl(l_segment(8), '-1')
671 and decode(l_segment(9), null, '-1', gl_ccid.Segment9) =
672 nvl(l_segment(9), '-1')
673 and decode(l_segment(10), null, '-1', gl_ccid.Segment10) =
674 nvl(l_segment(10), '-1')
675 and decode(l_segment(11), null, '-1', gl_ccid.Segment11) =
676 nvl(l_segment(11), '-1')
677 and decode(l_segment(12), null, '-1', gl_ccid.Segment12) =
678 nvl(l_segment(12), '-1')
679 and decode(l_segment(13), null, '-1', gl_ccid.Segment13) =
680 nvl(l_segment(13), '-1')
681 and decode(l_segment(14), null, '-1', gl_ccid.Segment14) =
682 nvl(l_segment(14), '-1')
683 and decode(l_segment(15), null, '-1', gl_ccid.Segment15) =
684 nvl(l_segment(15), '-1')
685 and decode(l_segment(16), null, '-1', gl_ccid.Segment16) =
686 nvl(l_segment(16), '-1')
687 and decode(l_segment(17), null, '-1', gl_ccid.Segment17) =
688 nvl(l_segment(17), '-1')
689 and decode(l_segment(18), null, '-1', gl_ccid.Segment18) =
690 nvl(l_segment(18), '-1')
691 and decode(l_segment(19), null, '-1', gl_ccid.Segment19) =
692 nvl(l_segment(19), '-1')
693 and decode(l_segment(20), null, '-1', gl_ccid.Segment20) =
694 nvl(l_segment(20), '-1')
695 and decode(l_segment(21), null, '-1', gl_ccid.Segment21) =
696 nvl(l_segment(21), '-1')
697 and decode(l_segment(22), null, '-1', gl_ccid.Segment22) =
698 nvl(l_segment(22), '-1')
699 and decode(l_segment(23), null, '-1', gl_ccid.Segment23) =
700 nvl(l_segment(23), '-1')
701 and decode(l_segment(24), null, '-1', gl_ccid.Segment24) =
702 nvl(l_segment(24), '-1')
703 and decode(l_segment(25), null, '-1', gl_ccid.Segment25) =
704 nvl(l_segment(25), '-1')
705 and decode(l_segment(26), null, '-1', gl_ccid.Segment26) =
706 nvl(l_segment(26), '-1')
707 and decode(l_segment(27), null, '-1', gl_ccid.Segment27) =
708 nvl(l_segment(27), '-1')
709 and decode(l_segment(28), null, '-1', gl_ccid.Segment28) =
710 nvl(l_segment(28), '-1')
711 and decode(l_segment(29), null, '-1', gl_ccid.Segment29) =
712 nvl(l_segment(29), '-1')
713 and decode(l_segment(30), null, '-1', gl_ccid.Segment30) =
714 nvl(l_segment(30), '-1')
715 and chart_of_accounts_id = h_chart_of_accounts_id
716 and exists
717 (select 1
718 from fa_category_books cat
719 where cat.ASSET_CLEARING_ACCOUNT_CCID =
720 gl_ccid.code_combination_id
721 and cat.book_type_code = px_mass_add_rec.book_type_code);
722 l_debug_str := 'Get the Category for Capitalized Assets';
723 if (p_log_level_rec.statement_level) then
724 fa_debug_pkg.add(l_calling_fn,
725 l_debug_str,
726 '',
727 p_log_level_rec => p_log_level_rec);
728 end if;
729 select category_id
730 into px_mass_add_rec.ASSET_CATEGORY_ID
731 from fa_category_books
732 where ASSET_CLEARING_ACCOUNT_CCID = l_clearing_acct_ccid
733 and book_type_code = px_mass_add_rec.book_type_code
734 and rownum = 1;
735 elsif (px_mass_add_rec.asset_type = 'CIP') then
736 l_debug_str := 'Get the Clearing Account for CIP Assets';
737 if (p_log_level_rec.statement_level) then
738 fa_debug_pkg.add(l_calling_fn,
739 l_debug_str,
740 '',
741 p_log_level_rec => p_log_level_rec);
742 end if;
743 select max(code_combination_id)
744 into l_clearing_acct_ccid
745 from gl_code_combinations gl_ccid
746 where decode(l_segment(1), null, '-1', gl_ccid.Segment1) =
747 nvl(l_segment(1), '-1')
748 and decode(l_segment(2), null, '-1', gl_ccid.Segment2) =
749 nvl(l_segment(2), '-1')
750 and decode(l_segment(3), null, '-1', gl_ccid.Segment3) =
751 nvl(l_segment(3), '-1')
752 and decode(l_segment(4), null, '-1', gl_ccid.Segment4) =
753 nvl(l_segment(4), '-1')
754 and decode(l_segment(5), null, '-1', gl_ccid.Segment5) =
755 nvl(l_segment(5), '-1')
756 and decode(l_segment(6), null, '-1', gl_ccid.Segment6) =
757 nvl(l_segment(6), '-1')
758 and decode(l_segment(7), null, '-1', gl_ccid.Segment7) =
759 nvl(l_segment(7), '-1')
760 and decode(l_segment(8), null, '-1', gl_ccid.Segment8) =
761 nvl(l_segment(8), '-1')
762 and decode(l_segment(9), null, '-1', gl_ccid.Segment9) =
763 nvl(l_segment(9), '-1')
764 and decode(l_segment(10), null, '-1', gl_ccid.Segment10) =
765 nvl(l_segment(10), '-1')
766 and decode(l_segment(11), null, '-1', gl_ccid.Segment11) =
767 nvl(l_segment(11), '-1')
768 and decode(l_segment(12), null, '-1', gl_ccid.Segment12) =
769 nvl(l_segment(12), '-1')
770 and decode(l_segment(13), null, '-1', gl_ccid.Segment13) =
771 nvl(l_segment(13), '-1')
772 and decode(l_segment(14), null, '-1', gl_ccid.Segment14) =
773 nvl(l_segment(14), '-1')
774 and decode(l_segment(15), null, '-1', gl_ccid.Segment15) =
775 nvl(l_segment(15), '-1')
776 and decode(l_segment(16), null, '-1', gl_ccid.Segment16) =
777 nvl(l_segment(16), '-1')
778 and decode(l_segment(17), null, '-1', gl_ccid.Segment17) =
779 nvl(l_segment(17), '-1')
780 and decode(l_segment(18), null, '-1', gl_ccid.Segment18) =
781 nvl(l_segment(18), '-1')
782 and decode(l_segment(19), null, '-1', gl_ccid.Segment19) =
783 nvl(l_segment(19), '-1')
784 and decode(l_segment(20), null, '-1', gl_ccid.Segment20) =
785 nvl(l_segment(20), '-1')
786 and decode(l_segment(21), null, '-1', gl_ccid.Segment21) =
787 nvl(l_segment(21), '-1')
788 and decode(l_segment(22), null, '-1', gl_ccid.Segment22) =
789 nvl(l_segment(22), '-1')
790 and decode(l_segment(23), null, '-1', gl_ccid.Segment23) =
791 nvl(l_segment(23), '-1')
792 and decode(l_segment(24), null, '-1', gl_ccid.Segment24) =
793 nvl(l_segment(24), '-1')
794 and decode(l_segment(25), null, '-1', gl_ccid.Segment25) =
795 nvl(l_segment(25), '-1')
796 and decode(l_segment(26), null, '-1', gl_ccid.Segment26) =
797 nvl(l_segment(26), '-1')
798 and decode(l_segment(27), null, '-1', gl_ccid.Segment27) =
799 nvl(l_segment(27), '-1')
800 and decode(l_segment(28), null, '-1', gl_ccid.Segment28) =
801 nvl(l_segment(28), '-1')
802 and decode(l_segment(29), null, '-1', gl_ccid.Segment29) =
803 nvl(l_segment(29), '-1')
804 and decode(l_segment(30), null, '-1', gl_ccid.Segment30) =
805 nvl(l_segment(30), '-1')
806 and chart_of_accounts_id = h_chart_of_accounts_id
807 and exists
808 (select 1
809 from fa_category_books cat
810 where cat.WIP_CLEARING_ACCOUNT_CCID =
811 gl_ccid.code_combination_id
812 and cat.book_type_code = px_mass_add_rec.book_type_code);
813 l_debug_str := 'Get the Clearing Account for CIP Assets';
814 if (p_log_level_rec.statement_level) then
815 fa_debug_pkg.add(l_calling_fn,
816 l_debug_str,
817 '',
818 p_log_level_rec => p_log_level_rec);
819 end if;
820 select category_id
821 into px_mass_add_rec.ASSET_CATEGORY_ID
822 from fa_category_books
823 where WIP_CLEARING_ACCOUNT_CCID = l_clearing_acct_ccid
824 and book_type_code = px_mass_add_rec.book_type_code
825 and rownum = 1;
826 END IF;
827
828 end if;
829 return true;
830 exception
831 when too_many_rows then
832 return false;
833 when no_data_found then
834 return false;
835 when others then
836 return false;
837 end;
838 /*===============================End Of FUNCTION/PROCEDURE===============================*/
839 -- Author : SKCHAWLA
840 -- Created : 5/16/2005 2:30:36 PM
841 -- Purpose : To Prepare asset key and category id for common customers
842
843 function prep_asset_key_category(p_book_type_code varchar2,
844 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
845 return boolean is
846 l_mass_add_rec FA_MASSADD_PREPARE_PKG.mass_add_rec;
847 l_batch_size number := 500;
848 l_count number;
849 Result boolean;
850 l_status number;
851 l_debug_str varchar2(1000);
852
853 l_mass_add_rec_tbl FA_MASSADD_PREPARE_PKG.mass_add_rec_tbl;
854
855 --l_mass_add_dist_tbl mass_add_dist_tbl;
856 l_calling_fn varchar2(40) := 'prepare_aset_key_category';
857 --Cursor to get all mass_addition lines
858 --check about the book_type_code
859 cursor GET_MASS_ADD(l_book varchar2) is
860 Select MASS_ADDITION_ID,
861 ASSET_NUMBER,
862 TAG_NUMBER,
863 DESCRIPTION,
864 ASSET_CATEGORY_ID,
865 MANUFACTURER_NAME,
866 SERIAL_NUMBER,
867 MODEL_NUMBER,
868 BOOK_TYPE_CODE,
869 DATE_PLACED_IN_SERVICE,
870 FIXED_ASSETS_COST,
871 PAYABLES_UNITS,
872 FIXED_ASSETS_UNITS,
873 PAYABLES_CODE_COMBINATION_ID,
874 EXPENSE_CODE_COMBINATION_ID,
875 LOCATION_ID,
876 ASSIGNED_TO,
877 FEEDER_SYSTEM_NAME,
878 CREATE_BATCH_DATE,
879 CREATE_BATCH_ID,
880 LAST_UPDATE_DATE,
881 LAST_UPDATED_BY,
882 REVIEWER_COMMENTS,
883 INVOICE_NUMBER,
884 INVOICE_LINE_NUMBER,
885 INVOICE_DISTRIBUTION_ID,
886 VENDOR_NUMBER,
887 PO_VENDOR_ID,
888 PO_NUMBER,
889 POSTING_STATUS,
890 QUEUE_NAME,
891 INVOICE_DATE,
892 INVOICE_CREATED_BY,
893 INVOICE_UPDATED_BY,
894 PAYABLES_COST,
895 INVOICE_ID,
896 PAYABLES_BATCH_NAME,
897 DEPRECIATE_FLAG,
898 PARENT_MASS_ADDITION_ID,
899 PARENT_ASSET_ID,
900 SPLIT_MERGED_CODE,
901 AP_DISTRIBUTION_LINE_NUMBER,
902 POST_BATCH_ID,
903 ADD_TO_ASSET_ID,
904 AMORTIZE_FLAG,
905 NEW_MASTER_FLAG,
906 ASSET_KEY_CCID,
907 ASSET_TYPE,
908 DEPRN_RESERVE,
909 YTD_DEPRN,
910 BEGINNING_NBV,
911 CREATED_BY,
912 CREATION_DATE,
913 LAST_UPDATE_LOGIN,
914 SALVAGE_VALUE,
915 ACCOUNTING_DATE,
916 ATTRIBUTE1,
917 ATTRIBUTE2,
918 ATTRIBUTE3,
919 ATTRIBUTE4,
920 ATTRIBUTE5,
921 ATTRIBUTE6,
922 ATTRIBUTE7,
923 ATTRIBUTE8,
924 ATTRIBUTE9,
925 ATTRIBUTE10,
926 ATTRIBUTE11,
927 ATTRIBUTE12,
928 ATTRIBUTE13,
929 ATTRIBUTE14,
930 ATTRIBUTE15,
931 ATTRIBUTE_CATEGORY_CODE,
932 FULLY_RSVD_REVALS_COUNTER,
933 MERGE_INVOICE_NUMBER,
934 MERGE_VENDOR_NUMBER,
935 PRODUCTION_CAPACITY,
936 REVAL_AMORTIZATION_BASIS,
937 REVAL_RESERVE,
938 UNIT_OF_MEASURE,
939 UNREVALUED_COST,
940 YTD_REVAL_DEPRN_EXPENSE,
941 ATTRIBUTE16,
942 ATTRIBUTE17,
943 ATTRIBUTE18,
944 ATTRIBUTE19,
945 ATTRIBUTE20,
946 ATTRIBUTE21,
947 ATTRIBUTE22,
948 ATTRIBUTE23,
949 ATTRIBUTE24,
950 ATTRIBUTE25,
951 ATTRIBUTE26,
952 ATTRIBUTE27,
953 ATTRIBUTE28,
954 ATTRIBUTE29,
955 ATTRIBUTE30,
956 MERGED_CODE,
957 SPLIT_CODE,
958 MERGE_PARENT_MASS_ADDITIONS_ID,
959 SPLIT_PARENT_MASS_ADDITIONS_ID,
960 PROJECT_ASSET_LINE_ID,
961 PROJECT_ID,
962 TASK_ID,
963 SUM_UNITS,
964 DIST_NAME,
965 GLOBAL_ATTRIBUTE1,
966 GLOBAL_ATTRIBUTE2,
967 GLOBAL_ATTRIBUTE3,
968 GLOBAL_ATTRIBUTE4,
969 GLOBAL_ATTRIBUTE5,
970 GLOBAL_ATTRIBUTE6,
971 GLOBAL_ATTRIBUTE7,
972 GLOBAL_ATTRIBUTE8,
973 GLOBAL_ATTRIBUTE9,
974 GLOBAL_ATTRIBUTE10,
975 GLOBAL_ATTRIBUTE11,
976 GLOBAL_ATTRIBUTE12,
977 GLOBAL_ATTRIBUTE13,
978 GLOBAL_ATTRIBUTE14,
979 GLOBAL_ATTRIBUTE15,
980 GLOBAL_ATTRIBUTE16,
981 GLOBAL_ATTRIBUTE17,
982 GLOBAL_ATTRIBUTE18,
983 GLOBAL_ATTRIBUTE19,
984 GLOBAL_ATTRIBUTE20,
985 GLOBAL_ATTRIBUTE_CATEGORY,
986 CONTEXT,
987 INVENTORIAL,
988 SHORT_FISCAL_YEAR_FLAG,
989 CONVERSION_DATE,
990 ORIGINAL_DEPRN_START_DATE,
991 GROUP_ASSET_ID,
992 CUA_PARENT_HIERARCHY_ID,
993 UNITS_TO_ADJUST,
994 BONUS_YTD_DEPRN,
995 BONUS_DEPRN_RESERVE,
996 AMORTIZE_NBV_FLAG,
997 AMORTIZATION_START_DATE,
998 TRANSACTION_TYPE_CODE,
999 TRANSACTION_DATE,
1000 WARRANTY_ID,
1001 LEASE_ID,
1002 LESSOR_ID,
1003 PROPERTY_TYPE_CODE,
1004 PROPERTY_1245_1250_CODE,
1005 IN_USE_FLAG,
1006 OWNED_LEASED,
1007 NEW_USED,
1008 ASSET_ID,
1009 MATERIAL_INDICATOR_FLAG,
1010 cast(multiset (select MASSADD_DIST_ID dist_id,
1011 MASS_ADDITION_ID mass_add_id,
1012 UNITS,
1013 DEPRN_EXPENSE_CCID,
1014 LOCATION_ID,
1015 EMPLOYEE_ID
1016 from FA_MASSADD_DISTRIBUTIONS mass_dist
1017 where mass_dist.mass_addition_id =
1018 mass_add.mass_addition_id) as
1019 fa_mass_add_dist_tbl) dists
1020 FROM fa_mass_additions mass_add
1021 where posting_status in ('NEW', 'ON-HOLD', 'POST')
1022 and book_type_code = l_book
1023 and nvl(merged_code, '1') not in ('MC')
1024 and (asset_key_ccid is null or asset_category_id is null);
1025
1026 begin
1027 --Open the cursor for the mass additions
1028 open GET_MASS_ADD(p_book_type_code);
1029
1030 -- Process all the records
1031 while true loop
1032 l_debug_str := 'In Loop';
1033 if (p_log_level_rec.statement_level) then
1034 fa_debug_pkg.add(l_calling_fn,
1035 l_debug_str,
1036 '',
1037 p_log_level_rec => p_log_level_rec);
1038 end if;
1039 --fetch the records as per batch size
1040 fetch GET_MASS_ADD BULK COLLECT
1041 INTO l_mass_add_rec_tbl limit l_batch_size;
1042
1043 --exit from the loop if no more records
1044 if (GET_MASS_ADD%NOTFOUND) and (l_mass_add_rec_tbl.count < 1) then
1045 exit;
1046 end if;
1047
1048 --Loop to get process each mass addition line
1049 for l_count in 1 .. l_mass_add_rec_tbl.count loop
1050 l_debug_str := 'Calling prepare_asset_key';
1051 if not prepare_asset_key(l_mass_add_rec_tbl(l_count)) then
1052 l_debug_str := 'prepare_asset_key returned failure';
1053 if (p_log_level_rec.statement_level) then
1054 fa_debug_pkg.add(l_calling_fn,
1055 l_debug_str,
1056 '',
1057 p_log_level_rec => p_log_level_rec);
1058 end if;
1059 end if;
1060 l_debug_str := 'Calling prepare_category';
1061 if (p_log_level_rec.statement_level) then
1062 fa_debug_pkg.add(l_calling_fn,
1063 l_debug_str,
1064 '',
1065 p_log_level_rec => p_log_level_rec);
1066 end if;
1067 if not prepare_category(l_mass_add_rec_tbl(l_count)) then
1068 l_debug_str := 'prepare_category returned failuer';
1069 if (p_log_level_rec.statement_level) then
1070 fa_debug_pkg.add(l_calling_fn,
1071 l_debug_str,
1072 '',
1073 p_log_level_rec => p_log_level_rec);
1074 end if;
1075 end if;
1076 end loop;
1077 l_debug_str := 'Calling update_mass_additions';
1078 if (p_log_level_rec.statement_level) then
1079 fa_debug_pkg.add(l_calling_fn,
1080 l_debug_str,
1081 '',
1082 p_log_level_rec => p_log_level_rec);
1083 end if;
1084 if not
1085 FA_MASSADD_PREPARE_PKG.update_mass_additions(l_mass_add_rec_tbl,
1086 p_log_level_rec => p_log_level_rec) then
1087 l_debug_str := 'update_mass_additions returned failure';
1088 end if;
1089 commit;
1090 end loop;
1091 close GET_MASS_ADD;
1092 Result := True;
1093 return(Result);
1094 exception
1095 when others then
1096 return false;
1097 end prep_asset_key_category;
1098 /**********************Funtion to merge the mass addition lines****************************/
1099 function merge_lines(p_book_type_code varchar2,
1100 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1101 return boolean is
1102
1103 cursor parent_mass_add(l_book_type_code varchar2) is
1104 SELECT Mass_Addition_ID,
1105 Asset_Key_CCID,
1106 Asset_Category_ID,
1107 book_type_code
1108 FROM FA_Mass_Additions
1109 WHERE Posting_Status IN ('NEW', 'ON HOLD', 'POST')
1110 AND Asset_Category_ID IS NOT NULL
1111 AND Asset_Key_CCID IS NOT NULL
1112 and book_type_code = l_book_type_code
1113 order by asset_category_id,
1114 asset_key_ccid,
1115 decode(merged_code, 'MP', 1, NULL, 2), -->Use an existing parent if any
1116 fixed_assets_cost desc,
1117 decode(posting_status, 'POST', 1, 'NEW', 2, 'ON HOLD', 3);
1118
1119 cursor child_mass_add(l_mass_add_id number, l_asset_key_ccid number, l_asset_category_id number, l_book_type_code varchar2) is
1120 select mass_addition_id, asset_category_id, asset_key_ccid
1121 from fa_mass_additions
1122 where posting_status in ('NEW', 'ON HOLD', 'POSTED')
1123 and mass_addition_id <> l_mass_add_id
1124 and asset_category_id = l_asset_category_id
1125 and asset_key_ccid = l_asset_key_ccid
1126 and merged_code is null
1127 and book_type_code = l_book_type_code;
1128
1129 merged_parent number;
1130 Result boolean;
1131 begin
1132 for parent_rec in parent_mass_add(p_book_type_code) loop
1133 merged_parent := -1;
1134 for child_rec in child_mass_add(parent_rec.mass_addition_id,
1135 parent_rec.asset_key_ccid,
1136 parent_rec.asset_category_id,
1137 parent_rec.book_type_code) loop
1138 update fa_mass_additions
1139 set posting_status = 'MERGED',
1140 MERGE_PARENT_MASS_ADDITIONS_ID = parent_rec.mass_addition_id,
1141 merged_code = 'MC',
1142 last_update_date = sysdate,
1143 last_updated_by = -1,
1144 last_update_login = -1
1145 where mass_addition_id = child_rec.mass_addition_id;
1146 merged_parent := 1;
1147 end loop;
1148 if (merged_parent = 1) then
1149 update fa_mass_additions
1150 set merged_code = 'MP',
1151 last_update_date = sysdate,
1152 last_updated_by = -1,
1153 last_update_login = -1
1154 where mass_addition_id = parent_rec.mass_addition_id;
1155 end if;
1156 end loop;
1157 commit;
1158 Result := True;
1159 return(Result);
1160 exception
1161 when no_data_found then
1162 return false;
1163 when others then
1164 return false;
1165
1166 end merge_lines;
1167
1168 /*********************Prepare Expense Account******************************************/
1169 function prepare_expense_ccid(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
1170 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1171 return boolean is
1172 l_exp_acct_col_name fnd_id_flex_segments.application_column_name%TYPE;
1173 TYPE varchar30_tbl IS TABLE OF varchar2(30) INDEX BY BINARY_INTEGER;
1174 l_segment varchar30_tbl;
1175 l_exp_acct_index number;
1176 l_exp_acct_ccid number;
1177 l_gl_ccid_enabled_flag varchar2(1);
1178 l_ACCOUNTING_FLEX_STRUCTURE fa_book_controls.accounting_flex_structure%type;
1179
1180 h_chart_of_accounts_id GL_SETS_OF_BOOKS.chart_of_accounts_id%TYPE;
1181 h_flex_segment_delimiter varchar2(5);
1182 h_flex_segment_number number;
1183 h_num_of_segments NUMBER;
1184 h_concat_array_segments FND_FLEX_EXT.SEGMENTARRAY;
1185 h_new_deprn_exp_acct VARCHAR2(26);
1186 h_cost_acct_ccid NUMBER := 0;
1187 l_API_VERSION NUMBER := 1.0;
1188 l_SOURCE_DISTRIB_ID_NUM_1 NUMBER;
1189 l_SOURCE_DISTRIB_ID_NUM_2 NUMBER;
1190 l_SOURCE_DISTRIB_ID_NUM_3 NUMBER;
1191 l_SOURCE_DISTRIB_ID_NUM_4 NUMBER;
1192 l_SOURCE_DISTRIB_ID_NUM_5 NUMBER;
1193 l_ACCOUNT_TYPE_CODE VARCHAR2(30) := 'FA_EXPENSE_ACCOUNT';
1194 l_DEPRN_EXPENSE_ACCT_CCID NUMBER;
1195 l_PAYABLES_CCID NUMBER;
1196 l_default_ccid number;
1197
1198 l_ACCOUNT_DEFINITION_TYPE_CODE VARCHAR2(30) := 'S';
1199 l_ACCOUNT_DEFINITION_CODE VARCHAR2(30) := 'FA_EXPENSE_ACCOUNT';
1200 l_TRANSACTION_COA_ID NUMBER := 101;
1201 l_MODE VARCHAR2(30) := 'ONLINE';
1202 l_RETURN_STATUS VARCHAR2(1);
1203 l_MSG_COUNT NUMBER;
1204 l_MSG_DATA VARCHAR2(255);
1205
1206 l_TARGET_CCID NUMBER;
1207 l_CONCATENATED_SEGMENTS VARCHAR2(4000);
1208 l_plsql_block varchar2(5000);
1209 l_calling_fn varchar2(40) := 'prepare_expense_ccid';
1210 begin
1211
1212 select FLEXBUILDER_DEFAULTS_CCID
1213 into l_default_ccid
1214 from fa_book_controls
1215 where book_type_code = px_mass_add_rec.book_type_code;
1216
1217 SELECT deprn_expense_account_ccid, asset_cost_account_ccid
1218 INTO l_DEPRN_EXPENSE_ACCT_CCID, h_cost_acct_ccid
1219 FROM fa_category_books
1220 WHERE book_type_code = px_mass_add_rec.book_type_code
1221 AND category_id = px_mass_add_rec.asset_category_id;
1222
1223 Select sob.chart_of_accounts_id
1224 into h_chart_of_accounts_id
1225 From fa_book_controls bc, gl_sets_of_books sob
1226 Where sob.set_of_books_id = bc.set_of_books_id
1227 And bc.book_type_code = px_mass_add_rec.book_type_code;
1228 l_TRANSACTION_COA_ID := h_chart_of_accounts_id;
1229
1230 l_PAYABLES_CCID := px_mass_add_rec.payables_code_combination_id;
1231
1232 l_plsql_block := 'begin
1233 fa_xla_tab_pkg.WRITE_ONLINE_TAB(
1234 P_API_VERSION => :l_API_VERSION,
1235 P_SOURCE_DISTRIB_ID_NUM_1 => :l_SOURCE_DISTRIB_ID_NUM_1,
1236 P_SOURCE_DISTRIB_ID_NUM_2 => :l_SOURCE_DISTRIB_ID_NUM_2,
1237 P_SOURCE_DISTRIB_ID_NUM_3 => :l_SOURCE_DISTRIB_ID_NUM_3,
1238 P_SOURCE_DISTRIB_ID_NUM_4 => :l_SOURCE_DISTRIB_ID_NUM_4,
1239 P_SOURCE_DISTRIB_ID_NUM_5 => :l_SOURCE_DISTRIB_ID_NUM_5,
1240 P_ACCOUNT_TYPE_CODE => :l_ACCOUNT_TYPE_CODE,
1241 DEFAULT_CCID => :l_default_ccid,
1242 DEPRN_EXPENSE_ACCOUNT_CCID => :l_DEPRN_EXPENSE_ACCT_CCID,
1243 PAYABLES_CCID => :l_PAYABLES_CCID,
1244 X_RETURN_STATUS => :l_RETURN_STATUS,
1245 X_MSG_COUNT => :l_MSG_COUNT ,
1246 X_MSG_DATA => :l_MSG_DATA);
1247 end;';
1248
1249 EXECUTE IMMEDIATE l_plsql_block
1250 USING l_API_VERSION, l_SOURCE_DISTRIB_ID_NUM_1, l_SOURCE_DISTRIB_ID_NUM_2, l_SOURCE_DISTRIB_ID_NUM_3,
1251 l_SOURCE_DISTRIB_ID_NUM_4, l_SOURCE_DISTRIB_ID_NUM_5, l_ACCOUNT_TYPE_CODE,l_default_ccid,
1252 l_DEPRN_EXPENSE_ACCT_CCID, l_PAYABLES_CCID, out l_RETURN_STATUS, out l_MSG_COUNT, out l_MSG_DATA;
1253
1254 l_plsql_block := 'begin
1255 FA_XLA_TAB_PKG.run(
1256 P_API_VERSION => :l_API_VERSION,
1257 P_ACCOUNT_DEFINITION_TYPE_CODE => :l_ACCOUNT_DEFINITION_TYPE_CODE,
1258 P_ACCOUNT_DEFINITION_CODE => :l_ACCOUNT_DEFINITION_CODE,
1259 P_TRANSACTION_COA_ID => :l_TRANSACTION_COA_ID ,
1260 P_MODE => :l_MODE,
1261 X_RETURN_STATUS => :l_RETURN_STATUS,
1262 X_MSG_COUNT => :l_MSG_COUNT,
1263 X_MSG_DATA => :l_MSG_DATA);
1264 end;';
1265
1266 EXECUTE IMMEDIATE l_plsql_block
1267 USING l_API_VERSION, l_ACCOUNT_DEFINITION_TYPE_CODE, l_ACCOUNT_DEFINITION_CODE, l_TRANSACTION_COA_ID, l_MODE,
1268 out l_RETURN_STATUS, out l_MSG_COUNT, out l_MSG_DATA;
1269
1270 l_plsql_block := 'begin
1271 fa_xla_tab_pkg.READ_ONLINE_TAB(
1272 P_API_VERSION => :l_API_VERSION,
1273 P_SOURCE_DISTRIB_ID_NUM_1 => :l_SOURCE_DISTRIB_ID_NUM_1,
1274 P_SOURCE_DISTRIB_ID_NUM_2 => :l_SOURCE_DISTRIB_ID_NUM_2,
1275 P_SOURCE_DISTRIB_ID_NUM_3 => :l_SOURCE_DISTRIB_ID_NUM_3,
1276 P_SOURCE_DISTRIB_ID_NUM_4 => :l_SOURCE_DISTRIB_ID_NUM_4,
1277 P_SOURCE_DISTRIB_ID_NUM_5 => :l_SOURCE_DISTRIB_ID_NUM_5,
1278 P_ACCOUNT_TYPE_CODE => :l_ACCOUNT_TYPE_CODE,
1279 X_TARGET_CCID => :l_TARGET_CCID,
1280 X_CONCATENATED_SEGMENTS => :l_CONCATENATED_SEGMENTS,
1281 X_RETURN_STATUS => :l_RETURN_STATUS,
1282 X_MSG_COUNT => :l_MSG_COUNT ,
1283 X_MSG_DATA => :l_MSG_DATA);
1284 end;';
1285
1286 EXECUTE IMMEDIATE l_plsql_block
1287 USING l_API_VERSION, l_SOURCE_DISTRIB_ID_NUM_1, l_SOURCE_DISTRIB_ID_NUM_2, l_SOURCE_DISTRIB_ID_NUM_3,
1288 l_SOURCE_DISTRIB_ID_NUM_4, l_SOURCE_DISTRIB_ID_NUM_5, l_ACCOUNT_TYPE_CODE, out l_TARGET_CCID,
1289 out l_CONCATENATED_SEGMENTS, out l_RETURN_STATUS, out l_MSG_COUNT, out l_MSG_DATA;
1290
1291 px_mass_add_rec.expense_code_combination_id := l_target_ccid;
1292
1293 return true;
1294 exception
1295 when no_data_found then
1296 return false;
1297 when too_many_rows then
1298 return false;
1299 when others then
1300 return false;
1301
1302 end;
1303
1304 /********************************Prepare Location*******************/
1305 function prepare_location_id(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
1306 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1307 return boolean is
1308 l_location_col_name fnd_id_flex_segments.application_column_name%TYPE;
1309 TYPE varchar30_tbl IS TABLE OF varchar2(30) INDEX BY BINARY_INTEGER;
1310 TYPE num_tbl IS TABLE OF number INDEX BY BINARY_INTEGER;
1311 l_segment varchar30_tbl;
1312 l_seg_num num_tbl;
1313 l_location_index number;
1314 l_location_seg number;
1315 l_gl_ccid_enabled_flag varchar2(1);
1316 l_ACCOUNTING_FLEX_STRUCTURE fa_book_controls.accounting_flex_structure%type;
1317 l_location_id number;
1318 l_debug_str varchar2(1000);
1319 l_loc_seg_name varchar2(30) := null;
1320 l_calling_fn varchar2(40) := 'prepare_location_id';
1321 loc_seg_clr_acct_map varchar30_tbl;
1322 loc_seg_clr_acct_map_index num_tbl;
1323 l_loc_query varchar2(1000);
1324 TYPE LocationCurType IS REF CURSOR;
1325 l_LocationCur LocationCurType;
1326
1327 CURSOR lookup_cur(c_lookup_type varchar2) IS
1328 select lookup_code
1329 from fa_lookups
1330 where lookup_type = c_lookup_type
1331 and enabled_flag = 'Y';
1332 begin
1333 for i in 1 .. 30 loop
1334 l_segment(i) := null;
1335 l_seg_num(i) := -1;
1336 end loop;
1337 select location_id
1338 into l_location_id
1339 from fa_locations
1340 where rownum = 1;
1341 l_debug_str := 'Getting Mapping for Location';
1342 if (p_log_level_rec.statement_level) then
1343 fa_debug_pkg.add(l_calling_fn,
1344 l_debug_str,
1345 '',
1346 p_log_level_rec => p_log_level_rec);
1347 end if;
1348 FOR rec IN lookup_cur('LOCATION MAPPING CLEAR ACCT') LOOP
1349 l_loc_seg_name := rec.lookup_code;
1350 l_seg_num(to_number(substr(l_loc_seg_name, 8))) := 1;
1351 END LOOP;
1352 if (l_loc_seg_name is not null) then
1353 l_debug_str := 'Get values from payables_ccid';
1354 if (p_log_level_rec.statement_level) then
1355 fa_debug_pkg.add(l_calling_fn,
1356 l_debug_str,
1357 '',
1358 p_log_level_rec => p_log_level_rec);
1359 end if;
1360 select Segment1,
1361 Segment2,
1362 Segment3,
1363 Segment4,
1364 Segment5,
1365 Segment6,
1366 Segment7,
1367 Segment8,
1368 Segment9,
1369 Segment10,
1370 Segment11,
1371 Segment12,
1372 Segment13,
1373 Segment14,
1374 Segment15,
1375 Segment16,
1376 Segment17,
1377 Segment18,
1378 Segment19,
1379 Segment20,
1380 Segment21,
1381 Segment22,
1382 Segment23,
1383 Segment24,
1384 Segment25,
1385 Segment26,
1386 Segment27,
1387 Segment28,
1388 Segment29,
1389 Segment30,
1390 enabled_flag
1391 into l_segment(1),
1392 l_segment(2),
1393 l_segment(3),
1394 l_segment(4),
1395 l_segment(5),
1396 l_segment(6),
1397 l_segment(7),
1398 l_segment(8),
1399 l_segment(9),
1400 l_segment(10),
1401 l_segment(11),
1402 l_segment(12),
1403 l_segment(13),
1404 l_segment(14),
1405 l_segment(15),
1406 l_segment(16),
1407 l_segment(17),
1408 l_segment(18),
1409 l_segment(19),
1410 l_segment(20),
1411 l_segment(21),
1412 l_segment(22),
1413 l_segment(23),
1414 l_segment(24),
1415 l_segment(25),
1416 l_segment(26),
1417 l_segment(27),
1418 l_segment(28),
1419 l_segment(29),
1420 l_segment(30),
1421 l_gl_ccid_enabled_flag
1422 from gl_code_combinations
1423 where code_combination_id =
1424 px_mass_add_rec.payables_code_combination_id;
1425
1426 for i in 1 .. 30 loop
1427 IF (l_seg_num(i) < 0) THEN
1428 l_segment(i) := null;
1429 END IF;
1430 end loop;
1431 l_debug_str := 'Get the Loaction';
1432 if (p_log_level_rec.statement_level) then
1433 fa_debug_pkg.add(l_calling_fn,
1434 l_debug_str,
1435 '',
1436 p_log_level_rec => p_log_level_rec);
1437 end if;
1438 /* Location lookups mapping */
1439
1440 FOR rec IN lookup_cur('LOCATION SEGMENT1 CLEAR ACCT') LOOP
1441 loc_seg_clr_acct_map(1) := rec.lookup_code;
1442
1443 END LOOP;
1444
1445 FOR rec IN lookup_cur('LOCATION SEGMENT2 CLEAR ACCT') LOOP
1446 loc_seg_clr_acct_map(2) := rec.lookup_code;
1447
1448 END LOOP;
1449 FOR rec IN lookup_cur('LOCATION SEGMENT3 CLEAR ACCT') LOOP
1450 loc_seg_clr_acct_map(3) := rec.lookup_code;
1451
1452 END LOOP;
1453 FOR rec IN lookup_cur('LOCATION SEGMENT4 CLEAR ACCT') LOOP
1454 loc_seg_clr_acct_map(4) := rec.lookup_code;
1455
1456 END LOOP;
1457 FOR rec IN lookup_cur('LOCATION SEGMENT5 CLEAR ACCT') LOOP
1458 loc_seg_clr_acct_map(5) := rec.lookup_code;
1459
1460 END LOOP;
1461 FOR rec IN lookup_cur('LOCATION SEGMENT6 CLEAR ACCT') LOOP
1462 loc_seg_clr_acct_map(6) := rec.lookup_code;
1463
1464 END LOOP;
1465 FOR rec IN lookup_cur('LOCATION SEGMENT7 CLEAR ACCT') LOOP
1466 loc_seg_clr_acct_map(7) := rec.lookup_code;
1467
1468 END LOOP;
1469 l_loc_query := 'select max(location_id) from fa_locations fa_loc where fa_loc.' ||
1470 l_loc_seg_name || '= ' ||
1471 l_segment(to_number(substr(l_loc_seg_name, 8))) || '
1472 and location_id in (select location_id
1473 from fa_locations fa_loc2, gl_code_combinations gl_code
1474 where fa_loc.segment1 = gl_code.' ||
1475 loc_seg_clr_acct_map(1) ||
1476 ' and fa_loc.segment2 = gl_code.' ||
1477 loc_seg_clr_acct_map(2) ||
1478 ' and fa_loc.segment3 = gl_code.' ||
1479 loc_seg_clr_acct_map(3) ||
1480 ' and fa_loc.segment4 = gl_code.' ||
1481 loc_seg_clr_acct_map(4) ||
1482 ' and fa_loc.segment5 = gl_code.' ||
1483 loc_seg_clr_acct_map(5) ||
1484 ' and fa_loc.segment6 = gl_code.' ||
1485 loc_seg_clr_acct_map(6) ||
1486 ' and fa_loc.segment7 = gl_code.' ||
1487 loc_seg_clr_acct_map(7);
1488 OPEN l_LocationCur FOR l_loc_query;
1489 FETCH l_LocationCur
1490 INTO px_mass_add_rec.LOCATION_ID;
1491 close l_LocationCur;
1492 else
1493
1494 px_mass_add_rec.LOCATION_ID := l_location_id;
1495 END IF;
1496 if (px_mass_add_rec.LOCATION_ID is null) then
1497 px_mass_add_rec.LOCATION_ID := l_location_id;
1498 end if;
1499 return true;
1500 exception
1501 when no_data_found then
1502 px_mass_add_rec.LOCATION_ID := l_location_id;
1503 return true;
1504 when too_many_rows then
1505 px_mass_add_rec.LOCATION_ID := l_location_id;
1506 return true;
1507 when others then
1508 px_mass_add_rec.LOCATION_ID := l_location_id;
1509 return false;
1510 end;
1511 /*===============================End Of FUNCTION/PROCEDURE===============================*/
1512 function prepare_group_asset_id(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
1513 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1514 return boolean is
1515 l_debug_str varchar2(1000);
1516 l_status number;
1517 l_group_asset_rec FA_CREATE_GROUP_ASSET_PKG.group_asset_rec_type;
1518 l_calling_fn varchar2(40) := 'prepare_group_asset';
1519 begin
1520 l_group_asset_rec.asset_id := null;
1521 l_group_asset_rec.mass_addition_id := px_mass_add_rec.mass_addition_id;
1522 l_group_asset_rec.rec_mode := 'PREPARE';
1523
1524 l_debug_str := 'energy calling create_group_asset';
1525 if (p_log_level_rec.statement_level) then
1526 fa_debug_pkg.add(l_calling_fn,
1527 l_debug_str,
1528 '',
1529 p_log_level_rec => p_log_level_rec);
1530 end if;
1531 if not
1532 FA_CREATE_GROUP_ASSET_PKG.create_group_asset(l_group_asset_rec,
1533 p_log_level_rec => p_log_level_rec) then
1534 l_debug_str := 'energy create_group_asset returned failure';
1535 if (p_log_level_rec.statement_level) then
1536 fa_debug_pkg.add(l_calling_fn,
1537 l_debug_str,
1538 '',
1539 p_log_level_rec => p_log_level_rec);
1540 end if;
1541 end if;
1542 px_mass_add_rec.group_asset_id := l_group_asset_rec.group_asset_id;
1543 return true;
1544 end;
1545 /*===============================End Of FUNCTION/PROCEDURE===============================*/
1546 function prepare_attributes(px_mass_add_rec IN out NOCOPY FA_MASSADD_PREPARE_PKG.mass_add_rec,
1547 p_log_level_rec IN FA_API_TYPES.log_level_rec_type default null)
1548 return boolean is
1549 l_status varchar2(10);
1550 l_debug_str varchar2(1000);
1551 old_expense_ccid number := -1;
1552 new_expense_ccid number := -1;
1553 l_calling_fn varchar2(40) := 'prepare_attributes';
1554 begin
1555 if (px_mass_add_rec.location_id is null) then
1556 if not prepare_location_id(px_mass_add_rec,
1557 p_log_level_rec => p_log_level_rec) then
1558 l_debug_str := ' energy prepare_location_id returned failure';
1559 if (p_log_level_rec.statement_level) then
1560 fa_debug_pkg.add(l_calling_fn,
1561 l_debug_str,
1562 '',
1563 p_log_level_rec => p_log_level_rec);
1564 end if;
1565 end if;
1566 end if;
1567 if (px_mass_add_rec.expense_code_combination_id is null) then
1568 if not prepare_expense_ccid(px_mass_add_rec,
1569 p_log_level_rec => p_log_level_rec) then
1570 l_debug_str := 'energy prepare_expense_ccid returned failure';
1571 if (p_log_level_rec.statement_level) then
1572 fa_debug_pkg.add(l_calling_fn,
1573 l_debug_str,
1574 '',
1575 p_log_level_rec => p_log_level_rec);
1576 end if;
1577 end if;
1578 end if;
1579
1580 update fa_mass_additions
1581 set location_id = px_mass_add_rec.location_id,
1582 expense_code_combination_id = px_mass_add_rec.expensE_code_combination_id
1583 where mass_addition_id = px_mass_add_rec.mass_addition_id;
1584 commit;
1585
1586 if (px_mass_add_rec.group_asset_id is null) then
1587 if not prepare_group_asset_id(px_mass_add_rec,
1588 p_log_level_rec => p_log_level_rec) then
1589 l_debug_str := 'energy prepare group_asset_id returned failure';
1590 if (p_log_level_rec.statement_level) then
1591 fa_debug_pkg.add(l_calling_fn,
1592 l_debug_str,
1593 '',
1594 p_log_level_rec => p_log_level_rec);
1595 end if;
1596 end if;
1597 end if;
1598 l_debug_str := 'Calling check_addition_or_adj';
1599 if not (check_addition_or_adj(px_mass_add_rec,
1600 l_status,
1601 p_log_level_rec => p_log_level_rec)) then
1602 l_debug_str := 'check_addition_or_adj';
1603 if (p_log_level_rec.statement_level) then
1604 fa_debug_pkg.add(l_calling_fn,
1605 l_debug_str,
1606 '',
1607 p_log_level_rec => p_log_level_rec);
1608 end if;
1609 end if;
1610
1611 if (l_status = 'ADDITION') then
1612 l_debug_str := 'Calling create_new_asset';
1613 if not (create_new_asset(px_mass_add_rec,
1614 p_log_level_rec => p_log_level_rec)) then
1615 l_debug_str := 'create_new_asset';
1616 if (p_log_level_rec.statement_level) then
1617 fa_debug_pkg.add(l_calling_fn,
1618 l_debug_str,
1619 '',
1620 p_log_level_rec => p_log_level_rec);
1621 end if;
1622 end if;
1623 end if;
1624
1625 if (l_status = 'ADUSTMENT') then
1626 l_debug_str := 'Calling cost_adjustment';
1627 if not (cost_adjustment(px_mass_add_rec,
1628 p_log_level_rec => p_log_level_rec)) then
1629 l_debug_str := 'cost_adjustment';
1630 if (p_log_level_rec.statement_level) then
1631 fa_debug_pkg.add(l_calling_fn,
1632 l_debug_str,
1633 '',
1634 p_log_level_rec => p_log_level_rec);
1635 end if;
1636 end if;
1637 end if;
1638 l_debug_str := 'Validating expense account for distributions';
1639 if (p_log_level_rec.statement_level) then
1640 fa_debug_pkg.add(l_calling_fn,
1641 l_debug_str,
1642 '',
1643 p_log_level_rec => p_log_level_rec);
1644 end if;
1645 if (px_mass_add_rec.distributions_table.count > 0) then
1646 old_expense_ccid := px_mass_add_rec.distributions_table(1)
1647 .deprn_expense_ccid;
1648 for dist_count in 2 .. px_mass_add_rec.distributions_table.count loop
1649
1650 new_expense_ccid := px_mass_add_rec.distributions_table(dist_count)
1651 .deprn_expense_ccid;
1652 if (old_expense_ccid <> new_expense_ccid) then
1653 l_debug_str := 'Distributions has different expense account';
1654 px_mass_add_rec.POSTING_STATUS := 'ON HOLD';
1655 px_mass_add_rec.queue_name := 'ON HOLD';
1656 end if;
1657 old_expense_ccid := new_expense_ccid;
1658 end loop;
1659 end if;
1660
1661 return true;
1662 exception
1663 when others then
1664 return false;
1665 end;
1666
1667 end FA_MASSADD_PREP_ENERGY_PKG;