[Home] [Help]
PACKAGE BODY: APPS.GL_JOURNAL_IMPORT_TAX_PKG
Source
1 PACKAGE BODY GL_JOURNAL_IMPORT_TAX_PKG AS
2 /* $Header: glujitxb.pls 120.3 2006/01/17 21:43:20 xiwu noship $ */
3 --
4 -- Wrappers
5 --
6 PROCEDURE Update_taxes(errbuf OUT NOCOPY VARCHAR2,
7 retcode OUT NOCOPY VARCHAR2,
8 p_batch_name IN VARCHAR2) IS
9 l_batch_id NUMBER;
10 BEGIN
11 --
12 BEGIN
13 SELECT je_batch_id
14 INTO l_batch_id
15 FROM gl_je_batches
16 WHERE name = p_batch_name AND
17 ROWNUM = 1;
18 --
19 EXCEPTION
20 WHEN NO_DATA_FOUND
21 THEN
22 l_batch_id := -1;
23 END;
24 --
25 IF l_batch_id = -1
26 THEN
27 -- wrong p_batch_name
28 -- deliver a message to a log file
29 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
30 token_num => 2,
31 t1 =>'ROUTINE',
32 v1 =>
33 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
34 t2 =>'ACTION',
35 v2 =>'Wrong batch name: '
36 || p_batch_name);
37 --RAISE move_taxes_err;
38 RETURN;
39 END IF;
40 --
41 GL_JOURNAL_IMPORT_TAX_PKG.move_taxes_srs(l_batch_id);
42 --
43 EXCEPTION
44 WHEN OTHERS THEN
45 errbuf := SQLERRM;
46 retcode := '2';
47 --app_exception.raise_exception;
48 END Update_taxes;
49 --
50 -- Regular procedures
51 --
52 PROCEDURE move_taxes_srs(p_batch_id IN NUMBER)
53 IS
54 -- batch level
55 l_org_id NUMBER(15) := 0;
56 l_org_name VARCHAR2(240);
57 l_budgetary_control_status VARCHAR2(1);
58 l_actual_flag VARCHAR2(1);
59 l_approval_status_code VARCHAR2(1);
60 l_status VARCHAR2(1);
61 l_name VARCHAR2(100);
62 l_batch_tax_required NUMBER(15);
63 -- header level
64 l_ledger_id NUMBER(15) := 0;
65 l_je_header_id NUMBER(15);
66 l_je_header_name VARCHAR2(100);
67 l_je_header_je_source VARCHAR2(25);
68 l_je_header_tax_status_code VARCHAR2(1);
69 l_je_header_tax_required NUMBER(15);
70 -- line level
71 l_je_line_period_name VARCHAR2(15);
72 l_je_line_effective_date DATE;
73 l_je_line_status VARCHAR2(1);
74 l_je_line_tax_code VARCHAR2(15);
75 l_je_line_tax_flag VARCHAR2(1);
76 l_je_line_tax_code_id NUMBER(15);
77 l_je_line_attribute9 VARCHAR2(150);
78 l_je_line_attribute10 VARCHAR2(150);
79 l_je_line_tax_type_code VARCHAR2(1);
80 l_je_line_found NUMBER(15);
81 le_id NUMBER; -- legal entity id
82 x_return_status VARCHAR2(30);
83 x_msg_out VARCHAR2(2000);
84 --
85 CURSOR je_headers (batch_id_in NUMBER)
86 IS
87 SELECT je_header_id,name,je_source,tax_status_code,ledger_id
88 FROM gl_je_headers
89 WHERE je_batch_id = batch_id_in
90 FOR UPDATE;
91 --
92 CURSOR je_lines (header_id_in NUMBER)
93 IS
94 SELECT period_name,effective_date,status,
95 tax_code,amount_includes_tax_flag,tax_code_id,
96 attribute9,attribute10
97 FROM gl_je_lines
98 WHERE je_header_id = header_id_in
99 FOR UPDATE;
100 --
101 BEGIN
102 --
103 BEGIN
104 SELECT org_id,
105 budgetary_control_status, actual_flag,
106 approval_status_code, status, name
107 INTO l_org_id,
108 l_budgetary_control_status, l_actual_flag,
109 l_approval_status_code, l_status, l_name
110 FROM GL_JE_BATCHES
111 WHERE je_batch_id = p_batch_id;
112
113 --
114 EXCEPTION
115 WHEN NO_DATA_FOUND
116 THEN
117 l_org_id := -1;
118 END;
119 --
120 IF l_org_id = -1
121 THEN
122 -- deliver a message to a log file
123 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
124 token_num => 2,
125 t1 =>'ROUTINE',
126 v1 =>
127 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
128 t2 =>'ACTION',
129 v2 =>'Batch name:'
130 || l_name
131 ||' :SOB does not exist');
132 RETURN;
133 END IF;
134 --
135
136 IF
137 (l_status <> 'U')
138 THEN
139 -- deliver a message to a log file
140 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
141 token_num => 2,
142 t1 =>'ROUTINE',
143 v1 =>
144 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
145 t2 =>'ACTION',
146 v2 =>'Batch name: '
147 || l_name
148 || ':cannot be taxed because '
149 || 'status is not U');
150 RETURN;
151 END IF;
152 --
153 IF
154 (l_budgetary_control_status NOT IN ('R','N') )
155 THEN
156 -- deliver a message to a log file
157 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
158 token_num => 2,
159 t1 =>'ROUTINE',
160 v1 =>
161 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
162 t2 =>'ACTION',
163 v2 =>'Batch name: '
164 || l_name
165 || ':cannot be taxed because '
166 || 'budgetary_control_status is not in R,N');
167 RETURN;
168 END IF;
169 --
170 IF
171 (l_actual_flag <> 'A' )
172 THEN
173 -- deliver a message to a log file
174 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
175 token_num => 2,
176 t1 =>'ROUTINE',
177 v1 =>
178 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
179 t2 =>'ACTION',
180 v2 =>'Batch name: '
181 || l_name
182 || ':cannot be taxed because '
183 || 'actual_flag is not A');
184 RETURN;
185 END IF;
186 --
187 --IF
188 -- (l_approval_status_code <> 'I' )
189 --THEN
190 -- deliver a message to a log file
191 -- GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
192 -- token_num => 2,
193 -- t1 =>'ROUTINE',
194 -- v1 =>
195 -- 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
196 -- t2 =>'ACTION',
197 -- v2 =>'Batch name: '
198 -- || l_name
199 -- || ':cannot be taxed because '
200 -- || 'approval_status_code is not I');
201 --RETURN;
202 --END IF;
203 --
204 l_batch_tax_required := 0;
205 --
206 -- we should figure out the value of org_id and put it into l_org_id
207 -- from profile ORG_ID (MO: Operating Unit)
208 --
209 l_org_id := FND_PROFILE.VALUE_WNPS('ORG_ID');
210 IF l_org_id IS NULL
211 THEN
212 l_org_id := -1;
213 END IF;
214 --
215 BEGIN
216 SELECT name
217 INTO l_org_name
218 FROM hr_operating_units
219 WHERE organization_id = l_org_id;
220 --
221 EXCEPTION
222 WHEN NO_DATA_FOUND
223 THEN
224 l_org_name := '';
225 END;
226 --
227 --GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
228 -- token_num => 2,
229 -- t1 =>'ROUTINE',
230 -- v1 =>
231 -- 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
232 -- t2 =>'ACTION',
233 -- v2 =>'Profile ORG_ID organization name:'
234 -- || l_org_name
235 -- || ':is used for further processing');
236 --
237 OPEN je_headers(p_batch_id);
238 LOOP
239 FETCH je_headers INTO
240 l_je_header_id,
241 l_je_header_name,
242 l_je_header_je_source,
243 l_je_header_tax_status_code,
244 l_ledger_id;
245 IF je_headers%NOTFOUND
246 THEN
247 EXIT;
248 END IF;
249 --
250 IF SUBSTR(l_je_header_je_source,1,11) <> 'Spreadsheet'
251 THEN
252 -- deliver a message to a log file
253 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
254 token_num => 2,
255 t1 =>'ROUTINE',
256 v1 =>
257 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
258 t2 =>'ACTION',
259 v2 =>'Batch :'
260 || l_name
261 ||':was not created by Spreadsheet');
262 RETURN;
263 END IF;
264 --
265 l_je_header_tax_required := 0;
266 --
267 OPEN je_lines(l_je_header_id);
268 LOOP
269 FETCH je_lines INTO
270 l_je_line_period_name,
271 l_je_line_effective_date,
272 l_je_line_status,
273 l_je_line_tax_code,
274 l_je_line_tax_flag,
275 l_je_line_tax_code_id,
276 l_je_line_attribute9,
277 l_je_line_attribute10;
278 IF je_lines%NOTFOUND
279 THEN
280 EXIT;
281 END IF;
282 --
283 -- process current je line
284 --
285 -- we suppose that l_je_line_attribute9 has a value of TAX_CODE
286 -- and l_je_line_attribute10 has a value of AMOUNT_INCLUDES_TAX_FLAG(Y,N)
287 --
288 IF (l_je_line_attribute9 IS NOT NULL) AND
289 (l_je_line_attribute10 IS NOT NULL)
290 THEN
291 --
292 -- use GL_TAX_CODES_V to get tax_code_id
293 --
294 BEGIN
295 --
296 l_je_line_tax_flag := substr(l_je_line_attribute10,1,1);
297 l_je_line_found := 1;
298 l_je_line_tax_type_code := ' ';
299 -- some questions about SELECT
300 le_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(
301 l_org_id);
302 zx_gl_tax_options_pkg.get_tax_rate_id (
303 1.0,
304 l_org_id,
305 le_id,
306 l_je_line_attribute9,
307 sysdate,
308 l_je_line_tax_type_code,
309 l_je_line_tax_code_id,
310 x_return_status,
311 x_msg_out);
312
313 -- SELECT tax_code_id, tax_type_code
314 -- INTO l_je_line_tax_code_id, l_je_line_tax_type_code
315 -- FROM GL_TAX_CODES_V
316 -- WHERE org_id = l_org_id AND
317 -- ledger_id = l_ledger_id AND
318 -- tax_code = l_je_line_attribute9 AND
319 -- valid_flag = 'Y' AND
320 -- displayed_flag = 'Y' AND
321 -- enabled_flag = 'Y' AND
322 -- sysdate BETWEEN nvl(start_date,sysdate) AND
323 -- nvl(end_date,sysdate);
324 --
325 EXCEPTION
326 WHEN NO_DATA_FOUND
327 THEN
328 l_je_line_found := -1;
329 END;
330 --
331 IF l_je_line_found = 1
332 THEN
333 --
334 -- if tax details are present in current line,
335 -- then update gl_je_lines details
336 --
337
338 UPDATE gl_je_lines
339 SET tax_code_id = l_je_line_tax_code_id,
340 amount_includes_tax_flag = l_je_line_tax_flag,
341 tax_type_code = l_je_line_tax_type_code,
342 tax_rounding_rule_code = 'N',
343 taxable_line_flag = 'Y'
344 WHERE CURRENT OF je_lines;
345 l_je_header_tax_required := 1;
346
347 ELSE
348 -- deliver a message to a log file
349 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
350 token_num => 2,
351 t1 =>'ROUTINE',
352 v1 =>
353 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
354 t2 =>'ACTION',
355 v2 =>'Tax code:'
356 || l_je_line_attribute9
357 ||':cannot be found');
358 END IF;
359 END IF;
360 --
361 END LOOP;
362 CLOSE je_lines;
363 --
364 -- if any line has been updated for taxes in current header,
365 -- then update gl_je_headers details
366 --
367 IF l_je_header_tax_required = 1
368 THEN
369 UPDATE gl_je_headers
370 SET tax_status_code = 'R'
371 WHERE CURRENT OF je_headers;
372 l_batch_tax_required := 1;
373 END IF;
374 --
375 END LOOP;
376 CLOSE je_headers;
377 --
378 -- do not forget to update org_id at batch level
379 --
380 IF l_batch_tax_required = 1
381 THEN
382 UPDATE gl_je_batches
383 SET org_id = l_org_id
384 WHERE je_batch_id = p_batch_id;
385 END IF;
386 --
387 COMMIT;
388 --
389 END move_taxes_srs;
390 --
391 --
392 PROCEDURE move_taxes_hook(p_batch_id IN NUMBER)
393 IS
394 -- batch level
395 l_org_id NUMBER(15) := 0;
396 l_org_name VARCHAR2(240);
397 l_budgetary_control_status VARCHAR2(1);
398 l_actual_flag VARCHAR2(1);
399 l_approval_status_code VARCHAR2(1);
400 l_status VARCHAR2(1);
401 l_name VARCHAR2(100);
402 l_batch_tax_required NUMBER(15);
403 -- header level
404 l_ledger_id NUMBER(15) := 0;
405 l_je_header_id NUMBER(15);
406 l_je_header_name VARCHAR2(100);
407 l_je_header_je_source VARCHAR2(25);
408 l_je_header_tax_status_code VARCHAR2(1);
409 l_je_header_tax_required NUMBER(15);
410 -- line level
411 l_je_line_period_name VARCHAR2(15);
412 l_je_line_effective_date DATE;
413 l_je_line_status VARCHAR2(1);
414 l_je_line_tax_code VARCHAR2(15);
415 l_je_line_tax_flag VARCHAR2(1);
416 l_je_line_tax_code_id NUMBER(15);
417 l_je_line_attribute9 VARCHAR2(150);
418 l_je_line_attribute10 VARCHAR2(150);
419 l_je_line_tax_type_code VARCHAR2(1);
420 l_je_line_found NUMBER(15);
421 l_je_line_num NUMBER(15);
422 le_id NUMBER; -- legal entity id
423 x_return_status VARCHAR2(30);
424 x_msg_out VARCHAR2(2000);
425 --
426 -- move_taxes_err EXCEPTION;
427 --
428 CURSOR je_headers (batch_id_in NUMBER)
429 IS
430 SELECT je_header_id,name,je_source,tax_status_code, ledger_id
431 FROM gl_je_headers
432 WHERE je_batch_id = batch_id_in
433 FOR UPDATE;
434 --
435 CURSOR je_lines (header_id_in NUMBER)
436 IS
437 SELECT je_line_num,period_name,effective_date,status,
438 tax_code,amount_includes_tax_flag,tax_code_id,
439 attribute9,attribute10
440 FROM gl_je_lines
441 WHERE je_header_id = header_id_in
442 FOR UPDATE;
443 --
444 BEGIN
445 --
446 BEGIN
447 SELECT org_id,
448 budgetary_control_status, actual_flag,
449 approval_status_code, status, name
450 INTO l_org_id,
451 l_budgetary_control_status, l_actual_flag,
452 l_approval_status_code, l_status, l_name
453 FROM GL_JE_BATCHES
454 WHERE je_batch_id = p_batch_id;
455 --
456 EXCEPTION
457 WHEN NO_DATA_FOUND
458 THEN
459 l_org_id := -1;
460 END;
461 --
462 IF l_org_id = -1
463 THEN
464 -- deliver a message to a log file
465 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
466 token_num => 2,
467 t1 =>'ROUTINE',
468 v1 =>
469 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
470 t2 =>'ACTION',
471 v2 =>'Batch name:'
472 || l_name
473 ||' :SOB does not exist');
474 RETURN;
475 END IF;
476 --
477 IF
478 (l_status <> 'U')
479 THEN
480 -- deliver a message to a log file
481 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
482 token_num => 2,
483 t1 =>'ROUTINE',
484 v1 =>
485 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
486 t2 =>'ACTION',
487 v2 =>'Batch name: '
488 || l_name
489 || ':cannot be taxed because '
490 || 'status is not U');
491 RETURN;
492 END IF;
493 --
494 IF
495 (l_budgetary_control_status NOT IN ('R','N') )
496 THEN
497 -- deliver a message to a log file
498 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
499 token_num => 2,
500 t1 =>'ROUTINE',
501 v1 =>
502 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
503 t2 =>'ACTION',
504 v2 =>'Batch name: '
505 || l_name
506 || ':cannot be taxed because '
507 || 'budgetary_control_status is not in R,N');
508 RETURN;
509 END IF;
510 --
511 IF
512 (l_actual_flag <> 'A' )
513 THEN
514 -- deliver a message to a log file
515 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
516 token_num => 2,
517 t1 =>'ROUTINE',
518 v1 =>
519 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
520 t2 =>'ACTION',
521 v2 =>'Batch name: '
522 || l_name
523 || ':cannot be taxed because '
524 || 'actual_flag is not A');
525 RETURN;
526 END IF;
527 --
528 --IF
529 -- (l_approval_status_code <> 'I' )
530 --THEN
531 -- deliver a message to a log file
532 -- GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
533 -- token_num => 2,
534 -- t1 =>'ROUTINE',
535 -- v1 =>
536 -- 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
537 -- t2 =>'ACTION',
538 -- v2 =>'Batch name: '
539 -- || l_name
540 -- || ':cannot be taxed because '
541 -- || 'approval_status_code is not I');
542 --RETURN;
543 --END IF;
544 --
545 l_batch_tax_required := 0;
546 --
547 -- we should figure out the value of org_id and put it into l_org_id
548 -- from profile ORG_ID (MO: Operating Unit)
549 --
550 l_org_id := FND_PROFILE.VALUE_WNPS('ORG_ID');
551 IF l_org_id IS NULL
552 THEN
553 l_org_id := -1;
554 END IF;
555 --
556 BEGIN
557 SELECT name
558 INTO l_org_name
559 FROM hr_operating_units
560 WHERE organization_id = l_org_id;
561 --
562 EXCEPTION
563 WHEN NO_DATA_FOUND
564 THEN
565 l_org_name := '';
566 END;
567 --
568 --GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
569 -- token_num => 2,
570 -- t1 =>'ROUTINE',
571 -- v1 =>
572 -- 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
573 -- t2 =>'ACTION',
574 -- v2 =>'Profile ORG_ID organization name:'
575 -- || l_org_name
576 -- || ':is used for further processing');
577 --
578 OPEN je_headers(p_batch_id);
579 LOOP
580 FETCH je_headers INTO
581 l_je_header_id,
582 l_je_header_name,
583 l_je_header_je_source,
584 l_je_header_tax_status_code,
585 l_ledger_id;
586 IF je_headers%NOTFOUND
587 THEN
588 EXIT;
589 END IF;
590 --
591 IF SUBSTR(l_je_header_je_source,1,11) <> 'Spreadsheet'
592 THEN
593 -- deliver a message to a log file
594 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
595 token_num => 2,
596 t1 =>'ROUTINE',
597 v1 =>
598 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
599 t2 =>'ACTION',
600 v2 =>'Batch name:'
601 || l_name
602 ||':was not created by Spreadsheet');
603 RETURN;
604 END IF;
605 --
606 l_je_header_tax_required := 0;
607 --
608 OPEN je_lines(l_je_header_id);
609 LOOP
610 FETCH je_lines INTO
611 l_je_line_num,
612 l_je_line_period_name,
613 l_je_line_effective_date,
614 l_je_line_status,
615 l_je_line_tax_code,
616 l_je_line_tax_flag,
617 l_je_line_tax_code_id,
618 l_je_line_attribute9,
619 l_je_line_attribute10;
620 IF je_lines%NOTFOUND
621 THEN
622 EXIT;
623 END IF;
624 --
625 -- process current je line
626 --
627 -- we suppose that l_je_line_attribute9 has a value of TAX_CODE
628 -- and l_je_line_attribute10 has a value of AMOUNT_INCLUDES_TAX_FLAG(Y,N)
629 --
630 IF (l_je_line_attribute9 IS NOT NULL) AND
631 (l_je_line_attribute10 IS NOT NULL)
632 THEN
633 --
634 -- use GL_TAX_CODES_V to get tax_code_id
635 --
636 BEGIN
637 --
638 l_je_line_tax_flag := substr(l_je_line_attribute10,1,1);
639 l_je_line_found := 1;
640 l_je_line_tax_type_code := ' ';
641 -- some questions about SELECT
642 le_id := XLE_UTILITIES_GRP.Get_DefaultLegalContext_OU(
643 l_org_id);
644 zx_gl_tax_options_pkg.get_tax_rate_id (
645 1.0,
646 l_org_id,
647 le_id,
648 l_je_line_attribute9,
649 sysdate,
650 l_je_line_tax_type_code,
651 l_je_line_tax_code_id,
652 x_return_status,
653 x_msg_out);
654
655
656 SELECT tax_code_id, tax_type_code
657 INTO l_je_line_tax_code_id, l_je_line_tax_type_code
658 FROM GL_TAX_CODES_V
659 WHERE org_id = l_org_id AND
660 ledger_id = l_ledger_id AND
661 tax_code = l_je_line_attribute9 AND
662 valid_flag = 'Y' AND
663 displayed_flag = 'Y' AND
664 enabled_flag = 'Y' AND
665 sysdate BETWEEN nvl(start_date,sysdate) AND
666 nvl(end_date,sysdate);
667 --
668 EXCEPTION
669 WHEN NO_DATA_FOUND
670 THEN
671 l_je_line_found := -1;
672 END;
673 --
674 IF l_je_line_found = 1
675 THEN
676 --
677 -- if tax details are present in current line,
678 -- then update gl_je_lines details
679 --
680 UPDATE gl_je_lines
681 SET tax_code_id = l_je_line_tax_code_id,
682 amount_includes_tax_flag = l_je_line_tax_flag,
683 tax_type_code = l_je_line_tax_type_code,
684 tax_rounding_rule_code = 'N',
685 taxable_line_flag = 'Y'
686 WHERE CURRENT OF je_lines;
687 --WHERE je_header_id = l_je_header_id AND
688 -- je_line_num = l_je_line_num;
689 l_je_header_tax_required := 1;
690 ELSE
691 -- deliver a message to a log file
692 GL_MESSAGE.Write_Log(msg_name =>'SHRD0180',
693 token_num => 2,
694 t1 =>'ROUTINE',
695 v1 =>
696 'GL_JOURNAL_IMPORT_TAX_PKG.move_taxes',
697 t2 =>'ACTION',
698 v2 =>'Tax code:'
699 || l_je_line_attribute9
700 ||':cannot be found');
701 END IF;
702 END IF;
703 --
704 END LOOP;
705 CLOSE je_lines;
706 --
707 -- if any line has been updated for taxes in current header,
708 -- then update gl_je_headers details
709 --
710 IF l_je_header_tax_required = 1
711 THEN
712 UPDATE gl_je_headers
713 SET tax_status_code = 'R'
714 WHERE CURRENT OF je_headers;
715 --WHERE je_header_id = l_je_header_id;
716 l_batch_tax_required := 1;
717 END IF;
718 --
719 END LOOP;
720 CLOSE je_headers;
721 --
722 -- do not forget to update org_id at batch level
723 --
724 IF l_batch_tax_required = 1
725 THEN
726 UPDATE gl_je_batches
727 SET org_id = l_org_id
728 WHERE je_batch_id = p_batch_id;
729 END IF;
730 --
731 --COMMIT;
732 --
733 END move_taxes_hook;
734 --
735 --
736 --
737 PROCEDURE process_batch_list(p_batch_ids IN VARCHAR2,
738 p_separator IN VARCHAR2)
739 IS
740 l_last_sep_pos NUMBER(15);
741 l_new_sep_pos NUMBER(15);
742 l_cur_batch_id_str VARCHAR2(30);
743 l_cur_batch_id_num NUMBER(15);
744 --
745 BEGIN
746 --
747 l_last_sep_pos := 0;
748 LOOP
749 l_new_sep_pos := INSTR(p_batch_ids,p_separator,l_last_sep_pos+1,1);
750 --
751 IF l_new_sep_pos > 0
752 THEN
753 l_cur_batch_id_str :=
754 SUBSTR(p_batch_ids,l_last_sep_pos+1,l_new_sep_pos-l_last_sep_pos-1);
755 l_cur_batch_id_num := to_number(l_cur_batch_id_str,'9999999999');
756 GL_JOURNAL_IMPORT_TAX_PKG.move_taxes_hook(l_cur_batch_id_num);
757 --
758 IF (l_new_sep_pos = LENGTH(p_batch_ids))
759 THEN
760 EXIT;
761 END IF;
762 --
763 l_last_sep_pos := l_new_sep_pos;
764 --
765 END IF;
766 --
767 END LOOP;
768 --
769 END process_batch_list;
770 --
771 END GL_JOURNAL_IMPORT_TAX_PKG;