[Home] [Help]
PACKAGE BODY: APPS.JAI_OPEN_API_PKG
Source
1 PACKAGE BODY JAI_OPEN_API_PKG AS
2 /* $Header: jai_open_api.plb 120.26 2011/11/28 10:50:33 erma ship $ */
3
4 --|+======================================================================+
5 --| Copyright (c) 2007 Oracle Corporation Redwood Shores, California, USA |
6 --| All rights reserved. |
7 --+=======================================================================+
8 --| FILENAME |
9 --| jai_open_api.plb |
10 --| |
11 --| DESCRIPTION |
12 --| This package offer funcitons to populate taxes taxes from legacy |
13 --| system to OFI. |
14 --| |
15 --| |
16 --| |
17 --| PROCEDURE LIST |
18 --| |
19 --| |
20 --| |
21 --| HISTORY |
22 --| 01-Mar-2011 Xiao Lv/Zhiwei Hou Created |
23 --| |
24 --| 24-Mar-2011 Xiao for bug#11903425 |
25 --| Enhance feature of tax category preview in |
26 --| Interface tax lines UI. |
27 --| |
28 --| 31-Mar-2011 Xiao for bug#11936390 |
29 --| Code Change for some solution change, for detail|
30 --| need to refer to bug update. |
31 --| |
32 --| 15-May-2011 Zhihwei Hou for bug#12537533 |
33 --| Code Change for Code comments |
34 --| |
35 --| 29-Sep-2011 Zhiwei Hou for Bug#13023443 |
36 --| Code change for POT |
37 --| For External and Service Tax, |
38 --| if GL Date < POT Date |
39 --| accounting should be derived from Regime |
40 --| else |
41 --| accounting be derived from Jai Open API |
42 --+======================================================================*/
43 /*
44 || Mark the request to the scope lines.
45 */
46 PROCEDURE mark_request_id(
47 pv_type IN VARCHAR2
48 , pn_org_id IN NUMBER
49 , pn_organization_id IN NUMBER
50 , pn_location_id IN NUMBER
51 , pn_party_id IN NUMBER
52 , pn_party_site_id IN NUMBER
53 , pv_transaction_num_from IN VARCHAR2
54 , pv_transaction_num_to IN VARCHAR2
55 )
56 IS
57 BEGIN
58 --At beginning, mark the reqest id to the free lines.
59 IF(NVL(pv_type,'')='ON')THEN
60
61 UPDATE jai_interface_lines_all
62 SET request_id = GN_REQUEST_ID
63 WHERE (request_id IS NULL OR request_id = '')
64 AND import_module = GV_IMPORT_MODULE
65 AND nvl(import_status, GV_IMPORT_FAILURE) = GV_IMPORT_FAILURE
66 AND org_id = nvl(pn_org_id, org_id)
67 AND organization_id = nvl(pn_organization_id, organization_id)
68 AND location_id = nvl(pn_location_id, location_id)
69 AND party_id = nvl(pn_party_id, party_id)
70 AND party_site_id = nvl(pn_party_site_id, party_site_id)
71 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
72 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num);
73
74 END IF;--ON
75
76 --At ending, wipe off the request id for all lines which marked the request id.
77 IF(NVL(pv_type,'')='OFF')THEN
78
79 update jai_interface_lines_all
80 set request_id = ''
81 where request_id = GN_REQUEST_ID;
82
83 END IF;--OFF
84
85 END mark_request_id;
86
87 /*
88 || After process, generate output report for importing records.
89 */
90 PROCEDURE generate_output_report( pv_import_module VARCHAR2
91 , pn_org_id NUMBER
92 , pn_organization_id NUMBER
93 , pn_location_id NUMBER
94 , pn_party_id NUMBER
95 , pn_party_site_id NUMBER
96 , pv_transaction_num_from VARCHAR2
97 , pv_transaction_num_to VARCHAR2)
98 IS
99 CURSOR get_import_trans_cur IS
100 SELECT transaction_num
101 , transaction_line_num
102 , import_status
103 , interface_line_id
104 , transaction_id
105 FROM jai_interface_lines_all
106 WHERE import_module = pv_import_module
107 AND org_id = nvl(pn_org_id, org_id)
108 AND organization_id = nvl(pn_organization_id, organization_id)
109 AND location_id = nvl(pn_location_id, location_id)
110 AND party_id = nvl(pn_party_id, party_id)
111 AND party_site_id = nvl(pn_party_site_id, party_site_id)
112 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
113 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
114 AND REQUEST_ID = GN_REQUEST_ID
115 ORDER BY import_status;
116
117 CURSOR get_error_cur(pn_interface_line_id IN NUMBER) IS
118 SELECT error_message
119 FROM jai_interface_err_lines
120 WHERE interface_line_id = pn_interface_line_id;
121
122 lv_err_name varchar2(1000);
123 lv_err_message VARCHAR2(1000);
124
125 BEGIN
126 FOR rec_import_trans IN get_import_trans_cur
127 LOOP
128
129 IF rec_import_trans.import_status = GV_IMPORT_SUCCESS THEN
130 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, rec_import_trans.transaction_num || ' + '
131 || rec_import_trans.transaction_line_num|| ' Import Success.');
132 ELSE
133 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, rec_import_trans.transaction_num || ' + '
134 || rec_import_trans.transaction_line_num|| ' Import with Error.');
135
136 FOR rec_error IN get_error_cur(rec_import_trans.interface_line_id)
137 LOOP
138 lv_err_name := upper(rec_error.error_message);
139 FND_MESSAGE.SET_NAME('JA', lv_err_name);
140
141 IF lv_err_name = 'JAI_TRANS_ID_ERR' THEN
142 FND_MESSAGE.SET_TOKEN('JAI_SOURCE_TRXN_ID', to_char(rec_import_trans.transaction_id));
143 ELSIF lv_err_name IN ('JAI_MULTIPLE_TRANS', 'JAI_TRANS_LINES_ERR') THEN
144 FND_MESSAGE.SET_TOKEN('JAI_SOURCE_TRXN_NUM', rec_import_trans.transaction_num);
145 FND_MESSAGE.SET_TOKEN('JAI_SOURCE_TRXN_LINE_NUM', to_char(rec_import_trans.transaction_line_num));
146 ELSIF lv_err_name IN ('JAI_AP_STATUE_ERR', 'JAI_AR_APPLIED') THEN
147 FND_MESSAGE.SET_TOKEN('JAI_SOURCE_TRXN_NUM', rec_import_trans.transaction_num);
148 END IF;
149
150 lv_err_message := FND_MESSAGE.GET;
151 IF lv_err_message IS NULL THEN
152 lv_err_message := rec_error.error_message;
153 END IF;
154 FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ' '||lv_err_message);
155 END LOOP;
156 END IF;
157 END LOOP;
158 END generate_output_report;
159
160
161 /*
162 || After process,clear the success lines.
163 */
164 PROCEDURE del_success_lines
165 IS
166 BEGIN
167 --Delete tax lines firstly
168 delete from jai_interface_tax_lines_all
169 where interface_line_id in
170 (
171 select interface_line_id
172 from jai_interface_lines_all
173 where import_status = GV_IMPORT_SUCCESS
174 and import_process= GV_PROCESS_ACCOUNTING
175 );
176
177 --Delete error lines thirdly
178 delete from jai_interface_err_lines
179 where interface_line_id in
180 (
181 select interface_line_id
182 from jai_interface_lines_all
183 where import_status = GV_IMPORT_SUCCESS
184 and import_process= GV_PROCESS_ACCOUNTING
185 );
186
187 --Delete interface lines finally
188 delete from jai_interface_lines_all
189 where import_status = GV_IMPORT_SUCCESS
190 and import_process = GV_PROCESS_ACCOUNTING;
191
192
193 END del_success_lines;
194
195 /*
196 || After process,clear the success lines.
197 */
198 PROCEDURE del_line_reference(pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE)
199 IS
200 BEGIN
201
202 delete from jai_interface_err_lines
203 where interface_line_id = pn_interface_line_id;
204
205 END del_line_reference;
206
207
208
209 /*
210 || Update line status
211 */
212 PROCEDURE update_line_status(
213 pn_interface_line_id IN NUMBER
214 , pv_import_status IN VARCHAR2
215 , pv_import_process IN VARCHAR2
216 )
217 IS
218 BEGIN
219
220 UPDATE jai_interface_lines_all
221 SET import_status = pv_import_status
222 , import_process = pv_import_process
223 WHERE interface_line_id = pn_interface_line_id;
224
225 END update_line_status;
226
227
228 /*
229 || Update trx lines status
230 */
231 PROCEDURE update_trx_lines_status(
232 pn_trx_id IN NUMBER
233 , pv_import_status IN VARCHAR2
234 , pv_import_process IN VARCHAR2
235 )
236 IS
237 --PRAGMA AUTONOMOUS_TRANSACTION;
238 BEGIN
239
240 UPDATE jai_interface_lines_all
241 SET import_status = pv_import_status
242 , import_process = pv_import_process
243 WHERE internal_trx_id = pn_trx_id;
244 --COMMIT;
245
246 END update_trx_lines_status;
247
248 /*
249 || validate org_id,organization_id,location_id is suitable
250 */
251 PROCEDURE validate_org_loc_suitable(
252 pv_chk_type IN VARCHAR2,
253 pn_chk_org_id IN JAI_INTERFACE_LINES_ALL.ORG_ID%TYPE,
254 pn_chk_organization_id IN JAI_INTERFACE_LINES_ALL.ORGANIZATION_ID%TYPE,
255 pn_chk_location_id IN JAI_INTERFACE_LINES_ALL.LOCATION_ID%TYPE,
256 xv_return_code IN OUT NOCOPY VARCHAR2,
257 xv_return_message IN OUT NOCOPY VARCHAR2)
258 IS
259 --Cursor define here
260 CURSOR chk_org_cur IS
261 SELECT COUNT(organization_id)
262 FROM org_organization_definitions
263 WHERE operating_unit = pn_chk_org_id;
264
265 CURSOR chk_organization_cur IS
266 SELECT COUNT(organization_id)
267 FROM org_organization_definitions
268 WHERE operating_unit = pn_chk_org_id
269 AND organization_id = pn_chk_organization_id;
270
271 CURSOR chk_loc_cur IS
272 SELECT COUNT(location_id)
273 FROM jai_cmn_inventory_orgs
274 WHERE organization_id = pn_chk_organization_id
275 AND location_id = pn_chk_location_id;
276
277 CURSOR chk_combination_cur IS
278 SELECT COUNT(b.organization_id)
279 FROM jai_cmn_inventory_orgs a
280 , org_organization_definitions b
281 WHERE b.operating_unit = pn_chk_org_id
282 AND a.organization_id = pn_chk_organization_id
283 AND a.location_id = pn_chk_location_id
284 AND a.organization_id = b.organization_id;
285
286 --Variable define here
287 ln_count NUMBER := 0;
288
289 BEGIN
290 xv_return_code:= 'S';
291
292 IF(pv_chk_type = GV_ORG)THEN
293 OPEN chk_org_cur;
294 FETCH chk_org_cur INTO ln_count;
295 CLOSE chk_org_cur;
296 IF(ln_count is null or ln_count = 0)THEN
297 xv_return_code := 'EE';
298 xv_return_message := 'VALIDATION in validate_org_loc_suitable :' || pv_chk_type || ' '|| pn_chk_org_id || ' is not available ';
299 END IF;
300 END IF;
301
302 IF(pv_chk_type = GV_ORGANIZATION)THEN
303 OPEN chk_organization_cur;
304 FETCH chk_organization_cur INTO ln_count;
305 CLOSE chk_organization_cur;
306
307 IF(ln_count is null or ln_count = 0)THEN
308 xv_return_code := 'EE';
309 xv_return_message := 'VALIDATION in validate_org_loc_suitable :' || pv_chk_type || ' '|| pn_chk_organization_id || ' is not available ';
310 END IF;
311 END IF;
312
313 IF(pv_chk_type = GV_LOCATION)THEN
314 OPEN chk_loc_cur;
315 FETCH chk_loc_cur INTO ln_count;
316 CLOSE chk_loc_cur;
317
318 IF(ln_count IS NULL OR ln_count = 0 OR nvl(pn_chk_location_id, 0) = 0)THEN
319 xv_return_code := 'EE';
320 xv_return_message := 'VALIDATION in validate_org_loc_suitable :' || pv_chk_type || ' '|| pn_chk_location_id || ' is not available ';
321 END IF;
322 END IF;
323
324 IF(pv_chk_type = GV_COMBINATION )THEN
325 OPEN chk_combination_cur;
326 FETCH chk_combination_cur INTO ln_count;
327 CLOSE chk_combination_cur;
328
329 IF(ln_count is null or ln_count = 0)THEN
330 xv_return_code := 'EE';
331 xv_return_message := 'VALIDATION in validate_org_loc_suitable :' || pv_chk_type || ' '|| pn_chk_org_id|| '+' ||pn_chk_organization_id ||'+' ||pn_chk_location_id || ' is not available ';
332 END IF;
333 END IF;
334
335 EXCEPTION
336 WHEN OTHERS THEN
337 xv_return_code := 'UE';
338 xv_return_message := 'VALIDATION Exception with SQLERR : '|| SUBSTR(SQLERRM,1,230) ||' in validate_org_loc_suitable ';
339
340 END validate_org_loc_suitable;
341
342 /*
343 ||After validation, if errors exist, change error_flag to Y.
344 */
345 PROCEDURE update_error_flag(
346 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.interface_line_id%TYPE,
347 pv_err_exist IN JAI_INTERFACE_LINES_ALL.ERROR_FLAG%TYPE
348 )IS
349
350 BEGIN
351
352 UPDATE JAI_INTERFACE_LINES_ALL
353 SET ERROR_FLAG = pv_err_exist
354 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
355
356 END update_error_flag;
357
358 /*
359 ||After validation, if errors exist, change error_flag to Y.
360 */
361 PROCEDURE update_trx_error_flag(
362 pn_internal_trx_id IN JAI_INTERFACE_LINES_ALL.interface_line_id%TYPE,
363 pv_err_exist IN JAI_INTERFACE_LINES_ALL.ERROR_FLAG%TYPE
364 )IS
365
366 BEGIN
367
368 UPDATE JAI_INTERFACE_LINES_ALL
369 SET ERROR_FLAG = pv_err_exist
370 WHERE INTERNAL_TRX_ID = pn_internal_trx_id;
371
372 END update_trx_error_flag;
373
374
375
376 PROCEDURE record_fnd_log(
377 pv_fnd_log IN JAI_INTERFACE_ERR_LINES.ERROR_MESSAGE%TYPE
378 )
379 IS
380 BEGIN
381
382 fnd_file.put_line(FND_FILE.LOG,pv_fnd_log);
383
384 END record_fnd_log;
385
386
387 /*
388 ||When occurred error, populate table jai_interface_err_lines and fnd log error info ,
389 */
390 PROCEDURE log_error(
391 pv_err_level IN JAI_INTERFACE_ERR_LINES.ERROR_TYPE%TYPE, --'LINE' or 'TAX'
392 pn_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_ERROR_ID%TYPE,
393 pn_source_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_SOURCE_LINE_ID%TYPE,
394 pv_err_mess IN JAI_INTERFACE_ERR_LINES.ERROR_MESSAGE%TYPE,
395 pv_invalid_value IN JAI_INTERFACE_ERR_LINES.INVALID_VALUE%TYPE
396 )
397 IS
398 ln_user_id JAI_RGM_REFS_ALL.CREATED_BY%TYPE ;
399 ln_login_id JAI_RGM_REFS_ALL.LAST_UPDATE_LOGIN%TYPE ;
400 BEGIN
401
402 ln_user_id := fnd_global.user_id ;
403 ln_login_id := fnd_global.login_id ;
404
405 INSERT INTO JAI_INTERFACE_ERR_LINES
406 (
407 INTERFACE_ERROR_ID,
408 ERROR_TYPE,
409 INTERFACE_LINE_ID,
410 INTERFACE_SOURCE_LINE_ID,
411 ERROR_MESSAGE,
412 INVALID_VALUE,
413 REQUEST_ID
414 --Added by zhiwei for bug#12425101 begin
415 -----------------------------------------
416 ,created_by ,
417 creation_date ,
418 last_updated_by ,
419 last_update_date ,
420 last_update_login
421 -----------------------------------------
422 --Added by zhiwei for bug#12425101 end
423 )
424 VALUES
425 (
426 JAI_INTERFACE_ERR_LINES_S.nextval,
427 pv_err_level,
428 pn_line_id,
429 pn_source_line_id,
430 pv_err_mess,
431 pv_invalid_value,
432 GN_REQUEST_ID
433 --Added by zhiwei for bug#12425101 begin
434 -----------------------------------------
435 ,ln_user_id ,
436 sysdate ,
437 ln_user_id ,
438 sysdate ,
439 ln_login_id
440 -----------------------------------------
441 --Added by zhiwei for bug#12425101 end
442 );
443
444
445 END log_error;
446
447
448 FUNCTION get_trx_number(cn_interface_line_id in number)RETURN VARCHAR2
449 IS
450
451 lv_transaction_num VARCHAR2(30);
452 begin
453 select transaction_num INTO lv_transaction_num
454 from jai_interface_lines_all
455 where interface_line_id = cn_interface_line_id;
456
457 RETURN lv_transaction_num;
458
459 END get_trx_number;
460
461
462 /*
463 || Validate CODE_COMBINATION_ID is suitable to EBS System
464 */
465 PROCEDURE validate_ccid_id_suitable(
466 pn_interface_line_id IN JAI_INTERFACE_TAX_LINES_ALL.INTERFACE_LINE_ID%TYPE,
467 pn_tax_line_id IN JAI_INTERFACE_TAX_LINES_ALL.INTERFACE_TAX_LINE_ID%TYPE,
468 pn_code_combination_id IN JAI_INTERFACE_TAX_LINES_ALL.CODE_COMBINATION_ID%TYPE,
469 xn_err_flag IN OUT NOCOPY NUMBER
470 )
471 IS
472 --Cursor define here
473 CURSOR get_chart_id_cur(cn_set_books_id IN gl_sets_of_books.SET_OF_BOOKS_ID%TYPE)
474 IS
475 SELECT CHART_OF_ACCOUNTS_ID
476 FROM gl_sets_of_books
477 WHERE SET_OF_BOOKS_ID = cn_set_books_id
478 AND CURRENCY_CODE = JAI_CONSTANTS.func_curr;
479
480 --Added by zhiwei for bug#12560646 on 20110523 begin
481 --------------------------------------------------------------------
482 CURSOR chk_ccid_cur
483 IS
484 SELECT
485 'Y'
486 FROM DUAL
487 WHERE EXISTS
488 (
489 SELECT '1'
490 FROM GL_CODE_COMBINATIONS_V
491 WHERE CODE_COMBINATION_ID = pn_code_combination_id
492 AND ENABLED_FLAG = 'Y'
493 AND (START_DATE_ACTIVE <= trunc(sysdate) OR START_DATE_ACTIVE IS NULL)
494 AND (END_DATE_ACTIVE >= trunc(sysdate) OR END_DATE_ACTIVE is null)
495 );
496
497 lv_flag varchar2(5);
498 ---------------------------------------------------------------------------
499 --Added by zhiwei for bug#12560646 on 20110523 end
500
501 --Variable define here
502 lb_valid BOOLEAN;
503 lv_sob_id NUMBER;
504 ln_chart_accounts_id NUMBER;
505 lv_return_mess VARCHAR2(1000);
506 lv_error_mess VARCHAR2(1000);
507
508 --Main block
509 BEGIN
510
511 lv_sob_id := fnd_profile.VALUE('GL_SET_OF_BKS_ID');
512
513 OPEN get_chart_id_cur(lv_sob_id);
514 FETCH get_chart_id_cur INTO ln_chart_accounts_id;
515 CLOSE get_chart_id_cur;
516
517 lb_valid := FND_FLEX_KEYVAL.validate_ccid(
518 appl_short_name => 'SQLGL',
519 key_flex_code => 'GL#',
520 structure_number => ln_chart_accounts_id,
521 combination_id => pn_code_combination_id,
522 displayable => 'ALL',
523 data_set => NULL,
524 vrule => NULL,
525 --security => 'IGNORE',
526 get_columns => NULL,
527 resp_appl_id => NULL,
528 resp_id => NULL,
529 user_id => NULL);
530 IF(lb_valid)THEN
531 null;
532 ELSE
533 xn_err_flag := 1;
534 lv_return_mess := 'VALIDATION in validate_ccid_id_suitable : ccid of distribution should be available With interface_tax_line_id:'||pn_tax_line_id;
535 lv_error_mess := 'JAI_ACCOUNT_INVALID';--'Invalid Accounting segment';
536 log_error(
537 pv_err_level => GV_ERROR_TYPE_TAX,
538 pn_line_id => pn_interface_line_id,
539 pn_source_line_id => pn_tax_line_id,
540 pv_err_mess => lv_error_mess,
541 pv_invalid_value => pn_code_combination_id
542 );
543 record_fnd_log(
544 pv_fnd_log => lv_return_mess
545 );
546 END IF;
547
548 --Added by zhiwei for bug#12560646 begin
549 ----------------------------------------------------------------
550 open chk_ccid_cur;
551 fetch chk_ccid_cur into lv_flag;
552 close chk_ccid_cur;
553
554 IF(NVL(lv_flag,'N') = 'N')THEN
555 xn_err_flag := 1;
556 lv_return_mess := 'VALIDATION in validate_ccid_id_suitable : ccid of distribution should be available With interface_tax_line_id:'||pn_tax_line_id;
557 lv_error_mess := 'JAI_ACCOUNT_INVALID';--'Invalid Accounting segment';
558 log_error(
559 pv_err_level => GV_ERROR_TYPE_TAX,
560 pn_line_id => pn_interface_line_id,
561 pn_source_line_id => pn_tax_line_id,
562 pv_err_mess => lv_error_mess,
563 pv_invalid_value => pn_code_combination_id
564 );
565 record_fnd_log(
566 pv_fnd_log => lv_return_mess
567 );
568 END IF;
569 ----------------------------------------------------------------
570 --Added by zhiwei for bug#12560646 end
571
572
573
574 EXCEPTION
575 WHEN OTHERS THEN
576 xn_err_flag := 1;
577 lv_return_mess := 'VALIDATION Exception with SQLERR:'|| SUBSTR(SQLERRM,1,230) || ' in validate_ccid_id_suitable with interface_tax_line_id:'||pn_tax_line_id;
578 lv_error_mess := 'JAI_ACCOUNT_INVALID';--'Invalid Accounting segment';
579
580 log_error(
581 pv_err_level => GV_ERROR_TYPE_TAX,
582 pn_line_id => pn_interface_line_id,
583 pn_source_line_id => pn_tax_line_id,
584 pv_err_mess => lv_error_mess,
585 pv_invalid_value => pn_code_combination_id
586 );
587 record_fnd_log(
588 pv_fnd_log => lv_return_mess
589 );
590
591 END validate_ccid_id_suitable;
592
593
594 /*
595 || Check the operating_unit,organization_id,location_id
596 */
597 PROCEDURE validate_ou_io_loc(
598 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
599 xn_err_flag IN OUT NOCOPY NUMBER
600 )IS
601 --Variable define here
602 lv_return_code VARCHAR2(10);
603 lv_return_mess varchar2(1000);
604 lv_error_mess VARCHAR2(1000);
605
606 --Main block
607 BEGIN
608
609 validate_org_loc_suitable(
610 pv_chk_type => GV_ORG,
611 pn_chk_org_id => pr_interface_lines.org_id,
612 pn_chk_organization_id=> pr_interface_lines.ORGANIZATION_ID,
613 pn_chk_location_id => pr_interface_lines.location_id,
614 xv_return_code => lv_return_code,
615 xv_return_message => lv_return_mess);
616
617 IF(lv_return_code <> 'S')THEN
618 xn_err_flag := 1;
619 lv_return_mess := lv_return_mess || ' with interface_line_id:'||pr_interface_lines.interface_line_id;
620 lv_error_mess := 'JAI_OU_IL_COMBINATION_ERR';--'Invalid Operation Unit/ Inventory Organization/ Location combination';
621
622 log_error(
623 pv_err_level => GV_ERROR_TYPE_LINE,
624 pn_line_id => pr_interface_lines.interface_line_id,
625 pn_source_line_id => pr_interface_lines.interface_line_id,
626 pv_err_mess => lv_error_mess,
627 pv_invalid_value => pr_interface_lines.org_id
628 );
629 record_fnd_log(
630 pv_fnd_log => lv_return_mess
631 );
632 END IF;
633
634 --Check organization_id
635 validate_org_loc_suitable(
636 pv_chk_type => GV_ORGANIZATION,
637 pn_chk_org_id => pr_interface_lines.org_id,
638 pn_chk_organization_id=> pr_interface_lines.ORGANIZATION_ID,
639 pn_chk_location_id => pr_interface_lines.location_id,
640 xv_return_code => lv_return_code,
641 xv_return_message => lv_return_mess);
642 IF(lv_return_code <> 'S')THEN
643 xn_err_flag := 1;
644 lv_return_mess := lv_return_mess || ' with interface_line_id:'||pr_interface_lines.interface_line_id;
645 lv_error_mess := 'JAI_OU_IL_COMBINATION_ERR';--'Invalid Operation Unit/ Inventory Organization/ Location combination';
646 record_fnd_log(
647 pv_fnd_log => lv_return_mess
648 );
649 log_error(
650 pv_err_level => GV_ERROR_TYPE_LINE,
651 pn_line_id => pr_interface_lines.interface_line_id,
652 pn_source_line_id => pr_interface_lines.interface_line_id,
653 pv_err_mess => lv_error_mess,
654 pv_invalid_value => pr_interface_lines.organization_id
655 );
656
657 END IF;
658 --Check location_id
659
660 validate_org_loc_suitable(
661 pv_chk_type => GV_LOCATION,
662 pn_chk_org_id => pr_interface_lines.org_id,
663 pn_chk_organization_id=> pr_interface_lines.ORGANIZATION_ID,
664 pn_chk_location_id => pr_interface_lines.location_id,
665 xv_return_code => lv_return_code,
666 xv_return_message => lv_return_mess);
667 IF(lv_return_code <> 'S')THEN
668 xn_err_flag := 1;
669 lv_return_mess := lv_return_mess || ' with interface_line_id:'||pr_interface_lines.interface_line_id;
670 lv_error_mess := 'JAI_OU_IL_COMBINATION_ERR';--'Invalid Operation Unit/ Inventory Organization/ Location combination';
671 record_fnd_log(
672 pv_fnd_log => lv_return_mess
673 );
674 log_error(
675 pv_err_level => GV_ERROR_TYPE_LINE,
676 pn_line_id => pr_interface_lines.interface_line_id,
677 pn_source_line_id => pr_interface_lines.interface_line_id,
678 pv_err_mess => lv_error_mess,
679 pv_invalid_value => pr_interface_lines.location_id
680 );
681
682 END IF;
683 --Check org_id + organization_id + location_id combination
684 validate_org_loc_suitable(
685 pv_chk_type => GV_COMBINATION,
686 pn_chk_org_id => pr_interface_lines.org_id,
687 pn_chk_organization_id=> pr_interface_lines.organization_id,
688 pn_chk_location_id => pr_interface_lines.location_id,
689 xv_return_code => lv_return_code,
690 xv_return_message => lv_return_mess
691 );
692 IF(lv_return_code <> 'S')THEN
693 xn_err_flag := 1;
694 lv_return_mess := lv_return_mess || ' with interface_line_id:'||pr_interface_lines.interface_line_id;
695 --'Invalid Operation Unit/ Inventory Organization/ Location combination';
696 lv_error_mess := 'JAI_OU_IL_COMBINATION_ERR';
697 record_fnd_log(
698 pv_fnd_log => lv_return_mess
699 );
700 log_error(
701 pv_err_level => GV_ERROR_TYPE_LINE,
702 pn_line_id => pr_interface_lines.interface_line_id,
703 pn_source_line_id => pr_interface_lines.interface_line_id,
704 pv_err_mess => lv_error_mess,
705 pv_invalid_value => pr_interface_lines.org_id ||'+'|| pr_interface_lines.organization_id ||'+'||pr_interface_lines.location_id
706 );
707
708 END IF;
709 EXCEPTION
710 WHEN OTHERS THEN
711 xn_err_flag := 1;
712 lv_return_mess := 'VALIDATION Exception with SQLERR' || SUBSTR(SQLERRM,1,230);
713 lv_return_mess := lv_return_mess ||' in validate_ou_io_loc with interface_line_id:'||pr_interface_lines.interface_line_id;
714 lv_error_mess := 'JAI_OU_IL_COMBINATION_ERR';--'Invalid Operation Unit/ Inventory Organization/ Location combination';
715 record_fnd_log(
716 pv_fnd_log => lv_return_mess
717 );
718 log_error(
719 pv_err_level => GV_ERROR_TYPE_LINE,
720 pn_line_id => pr_interface_lines.interface_line_id,
721 pn_source_line_id => pr_interface_lines.interface_line_id,
722 pv_err_mess => lv_error_mess,
723 pv_invalid_value => pr_interface_lines.org_id ||'+'|| pr_interface_lines.organization_id ||'+'||pr_interface_lines.location_id
724 );
725
726 END validate_ou_io_loc;
727
728 /*
729 || Check the taxable event
730 */
731 PROCEDURE validate_taxable_event(
732 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
733 xn_err_flag IN OUT NOCOPY NUMBER
734 )IS
735
736 --Cursor define here
737 CURSOR get_sum_in_tax_amount_cur
738 IS
739 SELECT SUM(TAX_AMOUNT)
740 FROM JAI_INTERFACE_TAX_LINES_ALL
741 WHERE INTERFACE_LINE_ID = pr_interface_lines.INTERFACE_LINE_ID
742 AND NVL(INCLUSIVE_TAX_FLAG,'N') = 'Y';
743
744 CURSOR get_sum_ex_tax_amount_cur
745 IS
746 SELECT SUM(TAX_AMOUNT)
747 FROM JAI_INTERFACE_TAX_LINES_ALL
748 WHERE INTERFACE_LINE_ID = pr_interface_lines.INTERFACE_LINE_ID
749 AND NVL(INCLUSIVE_TAX_FLAG,'N') = 'N';
750
751 --Variable define here
752 ln_in_tax_sum_amount JAI_INTERFACE_TAX_LINES_ALL.TAX_AMOUNT%TYPE;
753 ln_ex_tax_sum_amount JAI_INTERFACE_TAX_LINES_ALL.TAX_AMOUNT%TYPE;
754 --ln_dist_sum_amount JAI_INTERFACE_TAX_LINES_ALL.TAX_AMOUNT%TYPE;
755
756 lv_return_mess VARCHAR2(1000);
757 lv_error_mess VARCHAR2(1000);
758 --Main block
759 BEGIN
760
761 IF( pr_interface_lines.taxable_event IN( GV_TAXABLE_EVENT_EXTERNAL,GV_TAXABLE_EVENT_STANDALONE))THEN
762
763
764
765 --If taxable event is external then determine exclusive tax amount of lines equals sum amount of distribution lines
766 IF(pr_interface_lines.taxable_event = GV_TAXABLE_EVENT_EXTERNAL)THEN
767
768 --Check the inclusive tax amount of line should equals the sum inclusive tax amount of tax line
769 OPEN get_sum_in_tax_amount_cur;
770 FETCH get_sum_in_tax_amount_cur INTO ln_in_tax_sum_amount;
771 CLOSE get_sum_in_tax_amount_cur;
772
773 IF(NVL(ln_in_tax_sum_amount,0) <> NVL(pr_interface_lines.inclusive_tax_amount,0))THEN
774 xn_err_flag := 1;
775 lv_return_mess := 'VALIDATION in validate_taxable_event :inclusive tax amount should equals sum inclusive tax amount of tax lines';
776 lv_return_mess := lv_return_mess||' with interface_line_id:'||pr_interface_lines.interface_line_id;
777 --'Incorrect inclusive amount in interface tax detail UI, summarized all inclusive tax code amount <> Total inclusive amount';
778 lv_error_mess := 'JAI_INCLUSIVE_AMOUNT_ERR';
779 log_error(
780 pv_err_level => GV_ERROR_TYPE_LINE,
781 pn_line_id => pr_interface_lines.interface_line_id,
782 pn_source_line_id => pr_interface_lines.interface_line_id,
783 pv_err_mess => lv_error_mess,
784 pv_invalid_value => pr_interface_lines.INCLUSIVE_TAX_AMOUNT
785 );
786 record_fnd_log(
787 pv_fnd_log => lv_return_mess
788 );
789 END IF;
790
791 --Check the exclusive tax amount of line should equals the sum exclusive tax amount of tax line
792 OPEN get_sum_ex_tax_amount_cur;
793 FETCH get_sum_ex_tax_amount_cur INTO ln_ex_tax_sum_amount;
794 CLOSE get_sum_ex_tax_amount_cur;
795
796 IF(NVL(ln_ex_tax_sum_amount,0) <> NVL(pr_interface_lines.exclusive_tax_amount,0))THEN
797
798 xn_err_flag := 1;
799 lv_return_mess :='VALIDATION in validate_taxable_event :exclusive tax amount should equals sum exclusive tax amount of tax lines With interface_line_id:'||pr_interface_lines.interface_line_id;
800 lv_error_mess := 'JAI_EXCLUSIVE_AMOUNT_ERR';--'Incorrect exclusive amount in interface tax detail UI, summarized all exclusive tax code amount <> Total exclusive amount';
801
802 log_error(
803 pv_err_level => GV_ERROR_TYPE_LINE,
804 pn_line_id => pr_interface_lines.interface_line_id,
805 pn_source_line_id => pr_interface_lines.interface_line_id,
806 pv_err_mess => lv_error_mess,
807 pv_invalid_value => pr_interface_lines.EXCLUSIVE_TAX_AMOUNT
808 );
809 record_fnd_log(
810 pv_fnd_log => lv_return_mess
811 );
812 END IF;
813
814 END IF;--EXTERNAL
815
816 ELSE
817 xn_err_flag := 1;
818 lv_return_mess := 'VALIDATION in validate_taxable_event : taxable event should in '||GV_TAXABLE_EVENT_EXTERNAL||' or '|| GV_TAXABLE_EVENT_STANDALONE;
819 lv_return_mess := lv_return_mess||' with interface_line_id:'||pr_interface_lines.interface_line_id;
820 lv_error_mess := 'JAI_TAXABLE_EVENT_ERR';--'Taxable event value is invalid';
821
822 log_error(
823 pv_err_level => GV_ERROR_TYPE_LINE,
824 pn_line_id => pr_interface_lines.interface_line_id,
825 pn_source_line_id => pr_interface_lines.interface_line_id,
826 pv_err_mess => lv_error_mess,
827 pv_invalid_value => pr_interface_lines.taxable_event
828 );
829 record_fnd_log(
830 pv_fnd_log => lv_return_mess
831 );
832 END IF;
833 EXCEPTION
834 WHEN OTHERS THEN
835 xn_err_flag := 1;
836 lv_return_mess := 'VALIDATION Exception with SQLERR: '|| SUBSTR(SQLERRM,1,230);
837 lv_return_mess := lv_return_mess || ' in validate_taxable_event With interface_line_id:'||pr_interface_lines.interface_line_id;
838 lv_error_mess := 'JAI_TAXABLE_EVENT_ERR';--'Taxable event value is invalid';
839
840 log_error(
841 pv_err_level => GV_ERROR_TYPE_LINE,
842 pn_line_id => pr_interface_lines.interface_line_id,
843 pn_source_line_id => pr_interface_lines.interface_line_id,
844 pv_err_mess => lv_error_mess,
845 pv_invalid_value => pr_interface_lines.taxable_event
846 );
847 record_fnd_log(
848 pv_fnd_log => lv_return_mess
849 );
850 END validate_taxable_event;
851
852 /*
853 ||Check the taxable basis should in 'LINE_AMOUNT' OR 'ASSESSABLE_VALUE'
854 ||This validation is only for 'Standard' event.
855 */
856 PROCEDURE validate_taxable_basis(
857 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
858 xn_err_flag IN OUT NOCOPY NUMBER
859 )IS
860
861 --Variable define here
862 lv_return_mess VARCHAR2(1000);
863 lv_error_mess VARCHAR2(1000);
864 --Main block
865 BEGIN
866
867 IF(GV_IMPORT_MODULE = JAI_CONSTANTS.SOURCE_AR)THEN --Added by zhiwei for bug#12585126 on 20110523
868 IF (NVL(pr_interface_lines.taxable_event,'#') = GV_TAXABLE_EVENT_STANDALONE )THEN
869 IF( NVL(pr_interface_lines.taxable_basis,'#') NOT IN ( GV_TAXABLE_BASIS_LINEAMT , GV_TAXABLE_BASIS_AV)) THEN
870
871 xn_err_flag := 1;
872 lv_return_mess := 'VALIDATION in validate_taxable_basis : taxable basis should in '|| GV_TAXABLE_BASIS_LINEAMT||' or '|| GV_TAXABLE_BASIS_AV;
873 lv_return_mess := lv_return_mess || ' With interface_line_id:'||pr_interface_lines.interface_line_id;
874 lv_error_mess := 'JAI_TAXABLE_BASIS_ERR';--'Taxable basis value is invalid';
875 log_error(
876 pv_err_level => GV_ERROR_TYPE_LINE,
877 pn_line_id => pr_interface_lines.interface_line_id,
878 pn_source_line_id => pr_interface_lines.interface_line_id,
879 pv_err_mess => lv_error_mess,
880 pv_invalid_value => pr_interface_lines.taxable_basis
881 );
882 record_fnd_log(
883 pv_fnd_log => lv_return_mess
884 );
885 END IF;
886 END IF;
887 END IF;--AR --Added by zhiwei for bug#12585126 on 20110523
888 EXCEPTION
889 WHEN OTHERS THEN
890 xn_err_flag := 1;
891 lv_return_mess := 'VALIDATION Exception with SQLERR:'|| SUBSTR(SQLERRM,1,230);
892 lv_return_mess := lv_return_mess || ' in validate_taxable_basis with interface_line_id:'||pr_interface_lines.interface_line_id;
893 lv_error_mess := 'JAI_TAXABLE_BASIS_ERR';--'Taxable basis value is invalid';
894
895 log_error(
896 pv_err_level => GV_ERROR_TYPE_LINE,
897 pn_line_id => pr_interface_lines.interface_line_id,
898 pn_source_line_id => pr_interface_lines.interface_line_id,
899 pv_err_mess => lv_error_mess,
900 pv_invalid_value => pr_interface_lines.taxable_basis
901 );
902 record_fnd_log(
903 pv_fnd_log => lv_return_mess
904 );
905 END validate_taxable_basis;
906
907
908 /*
909 ||Check the tax line is exist
910 */
911 PROCEDURE validate_tax_line_exist(
912 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
913 xn_err_flag IN OUT NOCOPY NUMBER
914 )IS
915
916 --Cursor define here
917 CURSOR get_tax_line_count_cur
918 IS
919 SELECT
920 COUNT(INTERFACE_TAX_LINE_ID)
921 FROM JAI_INTERFACE_TAX_LINES_ALL
922 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
923 --AND TAX_AMOUNT is not null ;
924
925 --Variable define here
926 ln_tax_count NUMBER;
927 lv_return_mess VARCHAR2(1000);
928 lv_error_mess VARCHAR2(1000);
929
930 --Main block
931 BEGIN
932
933 OPEN get_tax_line_count_cur;
934 FETCH get_tax_line_count_cur INTO ln_tax_count;
935 CLOSE get_tax_line_count_cur;
936
937 IF(NVL(ln_tax_count,-1) <= 0 )THEN
938 xn_err_flag := 1;
939 lv_return_mess := 'VALIDATION in validate_tax_line_exist : tax lines should exist With interface_line_id:'||pn_interface_line_id;
940 lv_error_mess := 'JAI_TAX_MISSING';--'There is not tax detail data in interface when taxable event is External. Nothing is imported.';
941 log_error(
942 pv_err_level => GV_ERROR_TYPE_LINE,
943 pn_line_id => pn_interface_line_id,
944 pn_source_line_id => pn_interface_line_id,
945 pv_err_mess => lv_error_mess,
946 pv_invalid_value => pn_interface_line_id
947 );
948 record_fnd_log(
949 pv_fnd_log => lv_return_mess
950 );
951 END IF;
952 EXCEPTION
953 WHEN OTHERS THEN
954 xn_err_flag := 1;
955 lv_return_mess := 'VALIDATION Exception with SQLERR:' || SUBSTR(SQLERRM,1,230) || ' in validate_tax_line_exist With interface_line_id:'||pn_interface_line_id;
956 lv_error_mess := 'JAI_TAX_MISSING';--'There is not tax detail data in interface when taxable event is External. Nothing is imported.';
957 log_error(
958 pv_err_level => GV_ERROR_TYPE_LINE,
959 pn_line_id => pn_interface_line_id,
960 pn_source_line_id => pn_interface_line_id,
961 pv_err_mess => lv_error_mess,
962 pv_invalid_value => pn_interface_line_id
963 );
964 record_fnd_log(
965 pv_fnd_log => lv_return_mess
966 );
967 END validate_tax_line_exist;
968
969
970
971
972 /*
973 ||Check the tax line should not exist in transaction tax table
974 */
975 PROCEDURE validate_trx_tax_line_exist(
976 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
977 pn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
978 pn_trx_line_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE,
979 xn_err_flag IN OUT NOCOPY NUMBER
980 )IS
981
982 --Cursor define here
983 CURSOR get_tax_ar_count_cur
984 IS
985 SELECT
986 COUNT(CUSTOMER_TRX_LINE_ID)
987 FROM JAI_AR_TRX_TAX_LINES
988 WHERE LINK_TO_CUST_TRX_LINE_ID --= pn_trx_line_id;--Commented by zhiwei for bug#12560873
989 --Added by zhiwei for bug#12560873 begin
990 ----------------------------------------
991 IN (
992 SELECT customer_trx_line_id
993 FROM ra_customer_trx_lines_all
994 WHERE customer_trx_id = pn_trx_id
995 );
996 ----------------------------------------
997 --Added by zhiwei for bug#12560873 end
998
999
1000 CURSOR get_tax_ap_count_cur
1001 IS
1002 SELECT
1003 COUNT(SOURCE_DOC_LINE_ID)
1004 FROM JAI_CMN_DOCUMENT_TAXES
1005 WHERE SOURCE_DOC_ID = pn_trx_id;
1006 --AND SOURCE_DOC_LINE_ID = pn_trx_line_id;--Commented by zhiwei for bug#12560873
1007
1008 --Variable define here
1009 lv_return_mess VARCHAR2(1000);
1010 lv_error_mess VARCHAR2(1000);
1011
1012 ln_tax_count NUMBER;
1013
1014 --Main block
1015 BEGIN
1016 --For AR
1017 IF(GV_IMPORT_MODULE = JAI_CONSTANTS.SOURCE_AR)THEN
1018 OPEN get_tax_ar_count_cur;
1019 FETCH get_tax_ar_count_cur INTO ln_tax_count;
1020 CLOSE get_tax_ar_count_cur;
1021
1022 IF(NVL(ln_tax_count,-1) > 0 )THEN
1023 xn_err_flag := 1;
1024 lv_return_mess := 'VALIDATION in validate_trx_tax_line_exist : tax lines should not exist in AR transaction With interface_line_id:'||pn_interface_line_id;
1025 lv_error_mess := 'JAI_EXISTED_TAX';--'Tax is already generated for parent line. Cannot import new tax for this transaction again.';
1026 log_error(
1027 pv_err_level => GV_ERROR_TYPE_LINE,
1028 pn_line_id => pn_interface_line_id,
1029 pn_source_line_id => pn_interface_line_id,
1030 pv_err_mess => lv_error_mess,
1031 pv_invalid_value => GV_IMPORT_MODULE || ' ' ||pn_trx_line_id
1032 );
1033 record_fnd_log(
1034 pv_fnd_log => lv_return_mess
1035 );
1036 END IF;
1037
1038 END IF;--AR
1039
1040 --For AP
1041 IF(GV_IMPORT_MODULE = JAI_CONSTANTS.SOURCE_AP)THEN
1042
1043 OPEN get_tax_ap_count_cur;
1044 FETCH get_tax_ap_count_cur INTO ln_tax_count;
1045 CLOSE get_tax_ap_count_cur;
1046
1047 IF(NVL(ln_tax_count,-1) > 0 )THEN
1048 xn_err_flag := 1;
1049 lv_return_mess := 'VALIDATION in validate_trx_tax_line_exist : tax lines should not exist in AP transaction With interface_line_id:'||pn_interface_line_id;
1050 lv_error_mess := 'JAI_EXISTED_TAX';--'Tax is already generated for parent line. Cannot import new tax for this transaction again.';
1051 log_error(
1052 pv_err_level => GV_ERROR_TYPE_LINE,
1053 pn_line_id => pn_interface_line_id,
1054 pn_source_line_id => pn_interface_line_id,
1055 pv_err_mess => lv_error_mess,
1056 pv_invalid_value => GV_IMPORT_MODULE || ' ' ||pn_trx_line_id
1057 );
1058 record_fnd_log(
1059 pv_fnd_log => lv_return_mess
1060 );
1061
1062 END IF;
1063
1064 END IF;--AP
1065
1066 EXCEPTION
1067 WHEN OTHERS THEN
1068 xn_err_flag := 1;
1069 lv_return_mess := 'VALIDATION Exception with SQLERR:' || SUBSTR(SQLERRM,1,230) || ' in validate_trx_tax_line_exist With interface_line_id:'||pn_interface_line_id;
1070 lv_error_mess := 'JAI_EXISTED_TAX';--'Tax is already generated for parent line. Cannot import new tax for this transaction again.';
1071
1072 log_error(
1073 pv_err_level => GV_ERROR_TYPE_LINE,
1074 pn_line_id => pn_interface_line_id,
1075 pn_source_line_id => pn_interface_line_id,
1076 pv_err_mess => lv_error_mess,
1077 pv_invalid_value => pn_interface_line_id
1078 );
1079 record_fnd_log(
1080 pv_fnd_log => lv_return_mess
1081 );
1082 END validate_trx_tax_line_exist;
1083
1084 --Added by zhiwei for Bug#12639945 on 20110624 begin
1085 -------------------------------------------------------------------------------------
1086
1087 PROCEDURE validate_trx_accted(
1088 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
1089 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
1090 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1091 pn_trx_line_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1092 xn_err_flag IN OUT NOCOPY NUMBER
1093 )
1094 IS
1095
1096 CURSOR chk_ar_accted
1097 IS
1098 SELECT
1099 COUNT(1)
1100 FROM ra_cust_trx_line_gl_dist_all
1101 WHERE CUSTOMER_TRX_ID = pn_trx_id
1102 AND CUSTOMER_TRX_LINE_ID = pn_trx_line_id
1103 AND ACCOUNT_CLASS = 'REV'
1104 AND POSTING_CONTROL_ID > 0
1105 ;
1106
1107 CURSOR chk_ap_accted
1108 IS
1109 SELECT
1110 COUNT(1)
1111 FROM ap_invoice_distributions_all
1112 WHERE INVOICE_ID = pn_trx_id
1113 AND INVOICE_LINE_NUMBER = pn_trx_line_id
1114 AND distribution_line_number = 1
1115 AND NVL(POSTED_FLAG,'N') = 'Y'
1116 ;
1117
1118 ln_ap_accted number;
1119 ln_ar_accted number;
1120 lv_return_mess VARCHAR2(1000);
1121 lv_error_mess VARCHAR2(1000);
1122
1123 BEGIN
1124
1125
1126 IF pv_import_module = JAI_CONSTANTS.SOURCE_AP THEN
1127 OPEN chk_ap_accted;
1128 FETCH chk_ap_accted INTO ln_ap_accted;
1129 CLOSE chk_ap_accted;
1130
1131 IF nvl(ln_ap_accted,0) >0 THEN
1132 xn_err_flag := 1;
1133 lv_return_mess := 'VALIDATION in validate_trx_accted : AP invoice has accounted With interface_line_id:'||pn_interface_line_id;
1134 lv_error_mess := 'JAI_LINE_ACCTED';
1135 log_error(
1136 pv_err_level => GV_ERROR_TYPE_LINE,
1137 pn_line_id => pn_interface_line_id,
1138 pn_source_line_id => pn_interface_line_id,
1139 pv_err_mess => lv_error_mess,
1140 pv_invalid_value => pn_trx_id
1141 );
1142 record_fnd_log(
1143 pv_fnd_log => lv_return_mess
1144 );
1145 END IF;
1146 END IF;
1147 IF pv_import_module = JAI_CONSTANTS.SOURCE_AR THEN
1148 OPEN chk_ar_accted;
1149 FETCH chk_ar_accted INTO ln_ar_accted;
1150 CLOSE chk_ar_accted;
1151
1152 IF nvl(ln_ar_accted,0) >0 THEN
1153 xn_err_flag := 1;
1154 lv_return_mess := 'VALIDATION in validate_trx_accted : AR transaction has accounted With interface_line_id:'||pn_interface_line_id;
1155 lv_error_mess := 'JAI_LINE_ACCTED';
1156 log_error(
1157 pv_err_level => GV_ERROR_TYPE_LINE,
1158 pn_line_id => pn_interface_line_id,
1159 pn_source_line_id => pn_interface_line_id,
1160 pv_err_mess => lv_error_mess,
1161 pv_invalid_value => pn_trx_id
1162 );
1163 record_fnd_log(
1164 pv_fnd_log => lv_return_mess
1165 );
1166 END IF;
1167 END IF;
1168 EXCEPTION
1169 WHEN OTHERS THEN
1170 xn_err_flag := 1;
1171 lv_return_mess := 'VALIDATION EXCEPTION WITH SQLERR:'|| SUBSTR(SQLERRM,1,230) || 'IN validate_trx_accted With interface_line_id:'||pn_interface_line_id;
1172 lv_error_mess := 'JAI_LINE_ACCTED';
1173 log_error(
1174 pv_err_level => GV_ERROR_TYPE_LINE,
1175 pn_line_id => pn_interface_line_id,
1176 pn_source_line_id => pn_interface_line_id,
1177 pv_err_mess => lv_error_mess,
1178 pv_invalid_value => pn_trx_id
1179 );
1180 record_fnd_log(
1181 pv_fnd_log => lv_return_mess
1182 );
1183 END validate_trx_accted;
1184 -------------------------------------------------------------------------------------
1185 --Added by zhiwei for Bug#12639945 on 20110624 end
1186
1187
1188
1189
1190
1191 /*
1192 ||Check transaction status,
1193 ||AP:
1194 ||AR:completed.
1195 */
1196 PROCEDURE validate_trx_status(
1197 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
1198 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
1199 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1200 pn_org_id IN JAI_INTERFACE_LINES_ALL.ORG_ID%TYPE,
1201 pv_trx_number IN JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE,
1202 xn_err_flag IN OUT NOCOPY NUMBER
1203 )IS
1204
1205 --Cursor define here
1206 CURSOR get_ar_status_cur
1207 IS
1208 SELECT
1209 COMPLETE_FLAG
1210 FROM RA_CUSTOMER_TRX_ALL
1211 WHERE CUSTOMER_TRX_ID = pn_trx_id;
1212
1213 CURSOR get_ap_info_cur
1214 IS
1215 SELECT invoice_amount,
1216 payment_status_flag,
1217 invoice_type_lookup_code
1218 FROM AP_INVOICES_ALL
1219 WHERE INVOICE_ID = pn_trx_id;
1220
1221 CURSOR chk_ar_apply
1222 IS
1223 SELECT
1224 SUM(amount_applied)
1225 FROM Ar_Payment_Schedules_All
1226 WHERE org_id = pn_org_id
1227 AND customer_trx_id = pn_trx_id;
1228
1229 --Added by zhiwei for Bug#Bug#12639971 on 20110617 begin
1230 -------------------------------------------------------------
1231 CURSOR chk_payment_for_ap
1232 IS
1233 select sum(amount)
1234 from AP_checks_all
1235 where check_id
1236 in(
1237 SELECT
1238 AIP.CHECK_ID
1239 FROM ap_invoices_all ai, ap_invoice_payments_all aip
1240 WHERE ai.invoice_id = aip.invoice_id
1241 AND AI.INVOICE_ID = pn_trx_id
1242 );
1243
1244 ln_payment_sum number;
1245 -------------------------------------------------------------
1246 --Added by zhiwei for Bug#Bug#12639971 on 20110617 end
1247
1248
1249
1250 --Variable define here
1251 rec_ap_info get_ap_info_cur%ROWTYPE;
1252 lv_ar_status VARCHAR2(30);
1253 lv_ap_status VARCHAR2(30);
1254 ln_exist_flag NUMBER;
1255 lv_return_mess VARCHAR2(1000);
1256 lv_error_mess VARCHAR2(1000);
1257 lv_transaction_num JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE;
1258 ln_apply_amount NUMBER;
1259
1260 --Main block
1261 BEGIN
1262 lv_transaction_num := get_trx_number(pn_interface_line_id);
1263 --For AR
1264 --NEED ADD THE STATUS CHECK FOR APPLIED OR PARTIALLY APPLIED .
1265 IF( pv_import_module = JAI_CONSTANTS.SOURCE_AR)THEN
1266 OPEN get_ar_status_cur;
1267 FETCH get_ar_status_cur INTO lv_ar_status;
1268 CLOSE get_ar_status_cur;
1269
1270
1271 IF(NVL(lv_ar_status,'#') <> 'Y')THEN
1272 xn_err_flag := 1;
1273 lv_return_mess := 'VALIDATION in validate_trx_status : AR Transaction status should be completed With interface_line_id:'||pn_interface_line_id;
1274 lv_error_mess := 'JAI_AR_INCOMPLETE';--'Tax cannot be inserted, AR transaction is incomplete.';
1275 log_error(
1276 pv_err_level => GV_ERROR_TYPE_LINE,
1277 pn_line_id => pn_interface_line_id,
1278 pn_source_line_id => pn_interface_line_id,
1279 pv_err_mess => lv_error_mess,
1280 pv_invalid_value => pn_trx_id
1281 );
1282 record_fnd_log(
1283 pv_fnd_log => lv_return_mess
1284 );
1285 END IF; --AR
1286
1287 OPEN chk_ar_apply;
1288 FETCH chk_ar_apply INTO ln_apply_amount;
1289 CLOSE chk_ar_apply;
1290
1291 IF(NVL(ln_apply_amount,-1) > 0)THEN
1292 xn_err_flag := 1;
1293 lv_return_mess := 'VALIDATION in validate_trx_status : AR Transaction should not be applied With interface_line_id:'||pn_interface_line_id;
1294 lv_error_mess := 'JAI_AR_APPLIED';--'AR transaction have been applied, cannot inset tax to '||pv_trx_number;
1295 log_error(
1296 pv_err_level => GV_ERROR_TYPE_LINE,
1297 pn_line_id => pn_interface_line_id,
1298 pn_source_line_id => pn_interface_line_id,
1299 pv_err_mess => lv_error_mess,
1300 pv_invalid_value => pn_trx_id
1301 );
1302 record_fnd_log(
1303 pv_fnd_log => lv_return_mess
1304 );
1305 END IF;
1306
1307 ELSE
1308 --For AP
1309 IF ( pv_import_module = JAI_CONSTANTS.SOURCE_AP) THEN
1310 ln_exist_flag := 0;
1311 FOR rec_ap_info IN get_ap_info_cur
1312 LOOP
1313 --ln_exist_flag := 1;--Commented by zhiwei for Bug#12639971 on 20110615
1314 lv_ap_status := ap_invoices_utility_pkg.get_approval_status
1315 (pn_trx_id,
1316 rec_ap_info.invoice_amount,
1317 rec_ap_info.payment_status_flag,
1318 rec_ap_info.invoice_type_lookup_code);
1319
1320 IF(lv_ap_status NOT IN (GV_VALIDATED,GV_UNPAID_PREPAYMENT))THEN
1321 ln_exist_flag := 1;--Added by zhiwei for Bug#12639971 on 20110615
1322 xn_err_flag := 1;
1323 lv_return_mess := 'VALIDATION in validate_trx_status : AP status should in ';
1324 lv_return_mess := lv_return_mess ||GV_VALIDATED||' or '|| GV_NEED_RE_VALIDATION || ' or '|| GV_NEVER_VALIDATED ||' or '|| GV_UNVALIDATED_PREPAYMENT ||' or '|| GV_UNPAID_PREPAYMENT;
1325 lv_return_mess := lv_return_mess ||' With interface_line_id:'||pn_interface_line_id;
1326 --lv_error_mess := 'JAI_AP_STATUE_ERR';--'AP invoice status is not in '|| GV_VALIDATED || ',' || GV_UNPAID_PREPAYMENT ||' cannot inset tax to '|| lv_transaction_num ;
1327 lv_error_mess := 'JAI_AP_STATUS_ERR';--Added by zhiwei for Bug#12584487
1328 log_error(
1329 pv_err_level => GV_ERROR_TYPE_LINE,
1330 pn_line_id => pn_interface_line_id,
1331 pn_source_line_id => pn_interface_line_id,
1332 pv_err_mess => lv_error_mess,
1333 pv_invalid_value => pn_trx_id
1334 );
1335 record_fnd_log(
1336 pv_fnd_log => lv_return_mess
1337 );
1338 END IF;
1339
1340 --Added by zhiwei for Bug#Bug#12639971 on 20110617 begin
1341 -------------------------------------------------------------
1342 Open chk_payment_for_ap;
1343 fetch chk_payment_for_ap into ln_payment_sum;
1344 close chk_payment_for_ap;
1345
1346 IF(NVL(ln_payment_sum,0) > 0)THEN
1347 ln_exist_flag := 1;--Added by zhiwei for Bug#12639971 on 20110615
1348 xn_err_flag := 1;
1349 lv_return_mess := 'VALIDATION in validate_trx_status : AP status should in ';
1350 lv_return_mess := lv_return_mess ||GV_VALIDATED||' or '|| GV_NEED_RE_VALIDATION || ' or '|| GV_NEVER_VALIDATED ||' or '|| GV_UNVALIDATED_PREPAYMENT ||' or '|| GV_UNPAID_PREPAYMENT;
1351 lv_return_mess := lv_return_mess ||' With interface_line_id:'||pn_interface_line_id;
1352 --lv_error_mess := 'JAI_AP_STATUE_ERR';--'AP invoice status is not in '|| GV_VALIDATED || ',' || GV_UNPAID_PREPAYMENT ||' cannot inset tax to '|| lv_transaction_num ;
1353 lv_error_mess := 'JAI_AP_STATUS_ERR';--Added by zhiwei for Bug#12584487
1354 log_error(
1355 pv_err_level => GV_ERROR_TYPE_LINE,
1356 pn_line_id => pn_interface_line_id,
1357 pn_source_line_id => pn_interface_line_id,
1358 pv_err_mess => lv_error_mess,
1359 pv_invalid_value => pn_trx_id
1360 );
1361 record_fnd_log(
1362 pv_fnd_log => lv_return_mess
1363 );
1364 END IF;
1365 -------------------------------------------------------------
1366 --Added by zhiwei for Bug#Bug#12639971 on 20110617 end
1367
1368
1369 END LOOP;
1370
1371 /*IF(ln_exist_flag = 1)THEN--Commented by zhiwei for Bug#Bug#12639971 on 20110617 begin
1372 xn_err_flag := 1;
1373 lv_return_mess := 'VALIDATION in validate_trx_status : AP Transaction can not get AP info With interface_line_id:'||pn_interface_line_id;
1374 --lv_error_mess := 'JAI_AP_STATUE_ERR';--'AP invoice status is not in '|| GV_VALIDATED || ',' || GV_UNPAID_PREPAYMENT ||' cannot inset tax to '|| lv_transaction_num ;
1375 lv_error_mess := 'JAI_AP_STATUS_ERR';--Added by zhiwei for Bug#12584487
1376 log_error(
1377 pv_err_level => GV_ERROR_TYPE_LINE,
1378 pn_line_id => pn_interface_line_id,
1379 pn_source_line_id => pn_interface_line_id,
1380 pv_err_mess => lv_error_mess,
1381 pv_invalid_value => null
1382 );
1383 record_fnd_log(
1384 pv_fnd_log => lv_return_mess
1385 );
1386
1387 END IF; */ --Commented by zhiwei for Bug#Bug#12639971 on 20110617 end
1388
1389 END IF;--AP
1390 END IF;
1391 EXCEPTION
1392 WHEN OTHERS THEN
1393 xn_err_flag := 1;
1394 lv_return_mess := 'VALIDATION EXCEPTION WITH SQLERR:'|| SUBSTR(SQLERRM,1,230) || 'IN VALIDATE_TRX_STATUS With interface_line_id:'||pn_interface_line_id;
1395 --lv_error_mess := 'JAI_AP_STATUE_ERR';--'AP invoice status is not in '|| GV_VALIDATED || ',' || GV_UNPAID_PREPAYMENT ||' cannot inset tax to '|| lv_transaction_num ;
1396 lv_error_mess := 'JAI_AP_STATUS_ERR';--Added by zhiwei for Bug#12584487
1397 log_error(
1398 pv_err_level => GV_ERROR_TYPE_LINE,
1399 pn_line_id => pn_interface_line_id,
1400 pn_source_line_id => pn_interface_line_id,
1401 pv_err_mess => lv_error_mess,
1402 pv_invalid_value => pn_interface_line_id
1403 );
1404 record_fnd_log(
1405 pv_fnd_log => lv_return_mess
1406 );
1407
1408 END validate_trx_status;
1409
1410
1411
1412 /*
1413 ||Check transaction status,
1414 ||AP:
1415 ||AR:completed.
1416 */
1417 PROCEDURE validate_trx_period(
1418 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
1419 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
1420 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1421 xn_err_flag IN OUT NOCOPY NUMBER
1422 )IS
1423
1424 CURSOR get_ar_info_cur
1425 IS
1426 SELECT
1427 trx.set_of_books_id ,
1428 dis.gl_date
1429 FROM RA_CUSTOMER_TRX_ALL trx,
1430 RA_CUST_TRX_LINE_GL_DIST_ALL dis
1431 WHERE trx.customer_trx_id = dis.customer_trx_id
1432 AND trx.CUSTOMER_TRX_ID = pn_trx_id
1433 AND dis.ACCOUNT_CLASS = 'REC'
1434 AND dis.LATEST_REC_FLAG = 'Y';
1435
1436 CURSOR chk_period_cur(
1437 cn_application_id IN NUMBER,
1438 cd_gl_date IN AP_INVOICES_ALL.GL_DATE%TYPE,
1439 cn_book_id IN AP_INVOICES_ALL.SET_OF_BOOKS_ID%TYPE
1440 )
1441 IS
1442 SELECT
1443 CLOSING_STATUS
1444 FROM GL_PERIOD_STATUSES
1445 WHERE APPLICATION_ID = cn_application_id
1446 AND cd_gl_date BETWEEN START_DATE AND END_DATE
1447 AND SET_OF_BOOKS_ID = cn_book_id;
1448
1449 CURSOR get_ap_info_cur
1450 IS
1451 SELECT
1452 set_of_books_id ,
1453 gl_date
1454 FROM AP_INVOICES_ALL
1455 WHERE INVOICE_ID = pn_trx_id;
1456
1457 --Variable define here
1458 lv_return_mess VARCHAR2(1000);
1459 lv_error_mess VARCHAR2(1000);
1460 rec_get_info get_ar_info_cur%ROWTYPE;
1461 rec_ap_info get_ap_info_cur%ROWTYPE;
1462 lv_period_status VARCHAR2(10);
1463 ln_exist_flag NUMBER;
1464
1465 --Main block
1466 BEGIN
1467
1468 --For AR
1469 IF( pv_import_module = JAI_CONSTANTS.SOURCE_AR)THEN
1470
1471 OPEN get_ar_info_cur;
1472 FETCH get_ar_info_cur INTO rec_get_info;
1473 CLOSE get_ar_info_cur;
1474
1475 IF(NVL(rec_get_info.set_of_books_id,-1) = -1)THEN
1476 xn_err_flag := 1;
1477 lv_return_mess := 'VALIDATION in validate_trx_period : AR Transaction book id should not be null With interface_line_id:'||pn_interface_line_id;
1478 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1479 log_error(
1480 pv_err_level => GV_ERROR_TYPE_LINE,
1481 pn_line_id => pn_interface_line_id,
1482 pn_source_line_id => pn_interface_line_id,
1483 pv_err_mess => lv_error_mess,
1484 pv_invalid_value => pn_trx_id
1485 );
1486 record_fnd_log(
1487 pv_fnd_log => lv_return_mess
1488 );
1489
1490 END IF;
1491
1492 IF(rec_get_info.gl_date is null)THEN
1493 xn_err_flag := 1;
1494 lv_return_mess := 'VALIDATION in validate_trx_period : AR Transaction GL date should not be null With interface_line_id:'||pn_interface_line_id;
1495 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1496
1497 log_error(
1498 pv_err_level => GV_ERROR_TYPE_LINE,
1499 pn_line_id => pn_interface_line_id,
1500 pn_source_line_id => pn_interface_line_id,
1501 pv_err_mess => lv_error_mess,
1502 pv_invalid_value => pn_trx_id
1503 );
1504 record_fnd_log(
1505 pv_fnd_log => lv_return_mess
1506 );
1507
1508 END IF;
1509
1510 OPEN chk_period_cur(
1511 cn_application_id => GN_AR_APPLICATION_ID,
1512 cd_gl_date => rec_get_info.gl_date,
1513 cn_book_id => rec_get_info.set_of_books_id
1514 );
1515 FETCH chk_period_cur INTO lv_period_status;
1516 CLOSE chk_period_cur;
1517
1518 --Check the AR module period
1519 IF(NVL(lv_period_status,'#') NOT IN (GV_PERIOD_CLOSE_STATUS, GV_PERIOD_FUTURE_STATUS))THEN
1520 xn_err_flag := 1;
1521 lv_return_mess := 'VALIDATION in validate_trx_period : AR Transaction period should be opened With interface_line_id:'||pn_interface_line_id;
1522 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1523
1524 log_error(
1525 pv_err_level => GV_ERROR_TYPE_LINE,
1526 pn_line_id => pn_interface_line_id,
1527 pn_source_line_id => pn_interface_line_id,
1528 pv_err_mess => lv_error_mess,
1529 pv_invalid_value => pn_trx_id
1530 );
1531 record_fnd_log(
1532 pv_fnd_log => lv_return_mess
1533 );
1534
1535 END IF;
1536
1537 ELSE
1538 --For AP
1539 IF ( pv_import_module = JAI_CONSTANTS.SOURCE_AP) THEN
1540
1541 OPEN get_ap_info_cur;
1542 FETCH get_ap_info_cur INTO rec_get_info;
1543 CLOSE get_ap_info_cur;
1544
1545 IF(NVL(rec_get_info.set_of_books_id,-1) = -1)THEN
1546 xn_err_flag := 1;
1547 lv_return_mess := 'VALIDATION in validate_trx_period : AP Transaction book id should not be null With interface_line_id:'||pn_interface_line_id;
1548 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1549
1550 log_error(
1551 pv_err_level => GV_ERROR_TYPE_LINE,
1552 pn_line_id => pn_interface_line_id,
1553 pn_source_line_id => pn_interface_line_id,
1554 pv_err_mess => lv_error_mess,
1555 pv_invalid_value => pn_trx_id
1556 );
1557 record_fnd_log(
1558 pv_fnd_log => lv_return_mess
1559 );
1560 END IF;
1561
1562 IF(rec_get_info.gl_date is null)THEN
1563 xn_err_flag := 1;
1564 lv_return_mess := 'VALIDATION in validate_trx_period : AP Transaction GL date should not be null With interface_line_id:'||pn_interface_line_id;
1565 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1566
1567 log_error(
1568 pv_err_level => GV_ERROR_TYPE_LINE,
1569 pn_line_id => pn_interface_line_id,
1570 pn_source_line_id => pn_interface_line_id,
1571 pv_err_mess => lv_error_mess,
1572 pv_invalid_value => pn_trx_id
1573 );
1574 record_fnd_log(
1575 pv_fnd_log => lv_return_mess
1576 );
1577
1578 END IF;
1579
1580 OPEN chk_period_cur(
1581 cn_application_id => GN_AP_APPLICATION_ID,
1582 cd_gl_date => rec_get_info.gl_date,
1583 cn_book_id => rec_get_info.set_of_books_id
1584 );
1585 FETCH chk_period_cur INTO lv_period_status;
1586 CLOSE chk_period_cur;
1587
1588 --Check the AP module period
1589 IF(NVL(lv_period_status,'#') NOT IN (GV_PERIOD_CLOSE_STATUS, GV_PERIOD_FUTURE_STATUS))THEN
1590 xn_err_flag := 1;
1591 lv_return_mess := 'VALIDATION in validate_trx_period : AP Transaction period should be opened With interface_line_id:'||pn_interface_line_id;
1592 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1593
1594 log_error(
1595 pv_err_level => GV_ERROR_TYPE_LINE,
1596 pn_line_id => pn_interface_line_id,
1597 pn_source_line_id => pn_interface_line_id,
1598 pv_err_mess => lv_error_mess,
1599 pv_invalid_value => pn_trx_id
1600 );
1601 record_fnd_log(
1602 pv_fnd_log => lv_return_mess
1603 );
1604 END IF;
1605
1606 END IF; --AP
1607 END IF;
1608
1609 --Check the GL period
1610 IF(rec_get_info.gl_date IS NOT NULL and rec_get_info.set_of_books_id IS NOT NULL)THEN
1611
1612 OPEN chk_period_cur(
1613 cn_application_id => GN_GL_APPLICATION_ID,
1614 cd_gl_date => rec_get_info.gl_date,
1615 cn_book_id => rec_get_info.set_of_books_id
1616 );
1617 FETCH chk_period_cur INTO lv_period_status;
1618 CLOSE chk_period_cur;
1619
1620 IF(NVL(lv_period_status,'#') NOT IN (GV_PERIOD_CLOSE_STATUS, GV_PERIOD_FUTURE_STATUS))THEN
1621 xn_err_flag := 1;
1622 lv_return_mess := 'VALIDATION in validate_trx_period : The period of GL according to The transaction of '|| pv_import_module ||' should be opened With interface_line_id:'||pn_interface_line_id;
1623 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1624 log_error(
1625 pv_err_level => GV_ERROR_TYPE_LINE,
1626 pn_line_id => pn_interface_line_id,
1627 pn_source_line_id => pn_interface_line_id,
1628 pv_err_mess => lv_error_mess,
1629 pv_invalid_value => pn_trx_id
1630 );
1631 record_fnd_log(
1632 pv_fnd_log => lv_return_mess
1633 );
1634
1635 END IF;
1636
1637 END IF;
1638
1639 EXCEPTION
1640 WHEN OTHERS THEN
1641 xn_err_flag := 1;
1642 lv_return_mess := 'VALIDATION Exception with SQLERR: '|| SUBSTR(SQLERRM,1,230) || ' IN validate_trx_period With interface_line_id:'||pn_interface_line_id;
1643 lv_error_mess := 'JAI_PERIOD';--'No open period found with date entered for the transaction.';
1644
1645 log_error(
1646 pv_err_level => GV_ERROR_TYPE_LINE,
1647 pn_line_id => pn_interface_line_id,
1648 pn_source_line_id => pn_interface_line_id,
1649 pv_err_mess => lv_error_mess,
1650 pv_invalid_value => pn_interface_line_id
1651 );
1652 record_fnd_log(
1653 pv_fnd_log => lv_return_mess
1654 );
1655
1656 END validate_trx_period;
1657
1658 /*
1659 ||Check the tax line no is not null in tax lines
1660 */
1661 PROCEDURE validate_tax_line_no(
1662 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
1663 pn_tax_line_id IN JAI_INTERFACE_TAX_LINES_ALL.INTERFACE_TAX_LINE_ID%TYPE,
1664 pn_tax_line_no IN JAI_INTERFACE_TAX_LINES_ALL.TAX_LINE_NO%TYPE,
1665 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1666 xn_err_flag IN OUT NOCOPY NUMBER
1667 )
1668 IS
1669 --Variable define here
1670 lv_return_mess VARCHAR2(1000);
1671 lv_error_mess VARCHAR2(1000);
1672 --Main block
1673 BEGIN
1674
1675 IF(NVL(pn_tax_line_no,-1) <= 0)THEN
1676 xn_err_flag := 1;
1677 lv_return_mess := 'VALIDATION in validate_tax_line_no : tax line no should not be null With interface_tax_line_id:'||pn_tax_line_id;
1678 lv_error_mess := 'JAI_TAX_INACTIVE';--'Invalid tax line no';
1679 log_error(
1680 pv_err_level => GV_ERROR_TYPE_TAX,
1681 pn_line_id => pn_interface_line_id,
1682 pn_source_line_id => pn_tax_line_id,
1683 pv_err_mess => lv_error_mess,
1684 pv_invalid_value => pn_tax_line_id
1685 );
1686 record_fnd_log(
1687 pv_fnd_log => lv_return_mess
1688 );
1689 END IF;
1690 EXCEPTION
1691 WHEN OTHERS THEN
1692 xn_err_flag := 1;
1693 lv_return_mess := 'VALIDATION Exception with SQLERR: '|| SUBSTR(SQLERRM,1,230) || ' in validate_tax_line_no With interface_tax_line_id:'||pn_tax_line_id;
1694 lv_error_mess := 'JAI_TAX_INACTIVE';--'Invalid tax line no';
1695
1696 log_error(
1697 pv_err_level => GV_ERROR_TYPE_TAX,
1698 pn_line_id => pn_interface_line_id,
1699 pn_source_line_id => pn_tax_line_id,
1700 pv_err_mess => lv_error_mess,
1701 pv_invalid_value => pn_tax_line_id
1702 );
1703 record_fnd_log(
1704 pv_fnd_log => lv_return_mess
1705 );
1706 END validate_tax_line_no;
1707
1708 /*
1709 * Check the external tax code
1710 * 1. should find mapping relationship in mapping table
1711 * 2. inclusive flag of tax should be same as the ebs system
1712 * 3. tax should in available term ,startdate and enddate
1713 */
1714 PROCEDURE validate_tax_code(
1715 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
1716 pr_tax_lines IN JAI_INTERFACE_TAX_LINES_ALL%ROWTYPE,
1717 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
1718 xn_err_flag IN OUT NOCOPY NUMBER,
1719 xn_tax_id OUT NOCOPY NUMBER
1720 )
1721 IS
1722 --Cursor define here
1723 CURSOR get_tax_id_from_mapping_cur(
1724 cn_org_id IN JAI_INTERFACE_LINES_ALL.ORG_ID%TYPE,
1725 cv_external_tax_code IN JAI_INTERFACE_TAX_LINES_ALL.EXTERNAL_TAX_CODE%TYPE,
1726 cv_taxable_event IN JAI_INTERFACE_LINES_ALL.TAXABLE_EVENT%TYPE
1727 )IS
1728 SELECT TAX_ID
1729 FROM JAI_IM_TAX_MAPPING
1730 WHERE ORG_ID = cn_org_id
1731 AND EXTERNAL_TAX_CODE = cv_external_tax_code
1732 AND TAXABLE_EVENT = cv_taxable_event;
1733
1734 CURSOR get_tax_inclu_flag_cur(cn_tax_id IN NUMBER) IS
1735 SELECT inclusive_tax_flag
1736 , start_date
1737 , end_date
1738 FROM JAI_CMN_TAXES_ALL
1739 WHERE TAX_ID = cn_tax_id
1740 AND ORG_ID = pr_interface_lines.ORG_ID;
1741
1742 CURSOR get_use_flag IS
1743 SELECT distinct(use_ebs_tax)
1744 FROM JAI_IM_TAX_MAPPING
1745 WHERE org_id = pr_interface_lines.ORG_ID
1746 AND taxable_event = pr_interface_lines.taxable_event;
1747
1748 CURSOR get_tax_id_rec(
1749 cn_tax_id IN JAI_CMN_TAXES_ALL.TAX_NAME%TYPE) IS
1750 SELECT tax_id, tax_name
1751 FROM JAI_CMN_TAXES_ALL
1752 WHERE tax_id = cn_tax_id;
1753
1754 --Variable define here
1755 rec_tax_id get_tax_id_from_mapping_cur%ROWTYPE;
1756 ln_tax_id NUMBER;
1757 lv_tax_name JAI_CMN_TAXES_ALL.tax_name%TYPE;
1758 rec_tax_detail get_tax_inclu_flag_cur%ROWTYPE;
1759
1760 ln_cmn_inclusive_flag JAI_CMN_TAXES_ALL.INCLUSIVE_TAX_FLAG%TYPE;
1761 ld_start_date JAI_CMN_TAXES_ALL.START_DATE%TYPE;
1762 ld_end_date JAI_CMN_TAXES_ALL.END_DATE%TYPE;
1763
1764 lv_return_mess VARCHAR2(1000);
1765 lv_error_mess VARCHAR2(1000);
1766
1767 ln_exist_flag NUMBER;
1768
1769 rec_ebs_tax_id get_tax_id_rec%ROWTYPE;
1770 lv_use_flag VARCHAR2(1);
1771 ln_count NUMBER := 0;
1772 --Main block
1773 BEGIN
1774
1775 ln_exist_flag := 0;
1776
1777 OPEN get_use_flag;
1778 FETCH get_use_flag INTO lv_use_flag;
1779 CLOSE get_use_flag;
1780 --If there is not mapping relationship in mapping table
1781 IF(NVL(lv_use_flag,'#') = '#')THEN
1782
1783 xn_err_flag := 1;
1784 lv_return_mess := 'VALIDATION in validate_tax_code : No mapping setup for '|| pr_interface_lines.taxable_event ||' with this OU :'|| pr_interface_lines.ORG_ID ||' With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1785 /*
1786 lv_error_mess := 'This Tax code has not been mapped';
1787 log_error(
1788 pv_err_level => GV_ERROR_TYPE_TAX,
1789 pn_line_id => pr_interface_lines.interface_line_id,
1790 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1791 pv_err_mess => lv_error_mess,
1792 pv_invalid_value => pr_tax_lines.external_tax_code
1793 );*/
1794 record_fnd_log(
1795 pv_fnd_log => lv_return_mess
1796 );
1797 ELSE
1798 IF(NVL(lv_use_flag,'#') = 'Y')THEN
1799 --Use EBS tax name
1800 FOR rec_ebs_tax_id IN get_tax_id_rec(
1801 --modified by Xiao for bug#11903425
1802 pr_tax_lines.tax_id)
1803 LOOP
1804 ln_exist_flag := 1;
1805 ln_tax_id := rec_ebs_tax_id.tax_id;
1806 lv_tax_name := rec_ebs_tax_id.tax_name;
1807 END LOOP;
1808 ELSE
1809
1810 /* When user does not use ebs tax, if default tax category is proveded, external tax code
1811 * may leave null.
1812 * So validation on tax mapping for external tax code is only for the same that is not null.
1813 * For now, there is no above case. So commented out.
1814 */
1815 --Added IF condition by Xiao for bug#11903425
1816 --IF pr_tax_lines.external_tax_code IS NOT NULL THEN
1817 --Use mapping relatioinship which is set in mapping table
1818 FOR rec_tax_id IN get_tax_id_from_mapping_cur(
1819 pr_interface_lines.org_id,
1820 pr_tax_lines.external_tax_code,
1821 pr_interface_lines.taxable_event)
1822 LOOP
1823 ln_exist_flag := 1;
1824 ln_tax_id := rec_tax_id.tax_id;
1825 ln_count := ln_count +1;
1826 END LOOP;
1827 /*ELSE --This case will happen when do not use ebs tax code, by taxes are inserted
1828 --by default tax category. external tax code will leave NULL, need to validate.
1829 FOR rec_tax_id IN get_tax_id_rec(pr_tax_lines.tax_id)
1830 LOOP
1831 ln_exist_flag := 1;
1832 ln_tax_id := rec_tax_id.tax_id;
1833 lv_tax_name := rec_ebs_tax_id.tax_name;
1834 ln_count := ln_count +1;
1835 END LOOP;
1836 END IF;*/
1837 END IF;
1838 END IF;
1839
1840 --EXIT WHEN get_tax_id_from_mapping_cur%NOTFOUND;
1841 --CHECK THE EXTERNAL TAX CODE SHOULD FIND MAPPING RELATIONSHIP
1842 IF( ln_exist_flag = 0 )THEN
1843 xn_err_flag := 1;
1844 lv_return_mess := 'VALIDATION in validate_tax_code : external tax code can not found Mapping tax With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1845 lv_error_mess := 'JAI_TAX_UNMAPPED';--'This Tax code has not been mapped.'
1846 log_error(
1847 pv_err_level => GV_ERROR_TYPE_TAX,
1848 pn_line_id => pr_interface_lines.interface_line_id,
1849 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1850 pv_err_mess => lv_error_mess,
1851 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1852 );
1853 record_fnd_log(
1854 pv_fnd_log => lv_return_mess
1855 );
1856
1857 ELSE
1858 IF ln_count > 1 THEN
1859 xn_err_flag := 1;
1860 lv_return_mess := 'VALIDATION in validate_tax_code : Imported Tax Code is not unique for one Operating Unit and Taxable Event combination With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1861 lv_error_mess := 'JAI_TAX_MULTIPLE_MAPPED';--'Imported Tax Code should unique for one Operating Unit with Taxable Event combination value.'
1862 log_error(
1863 pv_err_level => GV_ERROR_TYPE_TAX,
1864 pn_line_id => pr_interface_lines.interface_line_id,
1865 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1866 pv_err_mess => lv_error_mess,
1867 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1868 );
1869 record_fnd_log(
1870 pv_fnd_log => lv_return_mess
1871 );
1872 END IF;
1873
1874 ln_exist_flag := 0;
1875
1876 FOR rec_tax_detail IN get_tax_inclu_flag_cur(ln_tax_id)
1877 LOOP
1878 ln_exist_flag := 1;
1879 ln_cmn_inclusive_flag := rec_tax_detail.INCLUSIVE_TAX_FLAG;
1880 ld_start_date := rec_tax_detail.START_DATE;
1881 ld_end_date := rec_tax_detail.END_DATE;
1882
1883 --Comment out by Xiao for bug#11903425, do not need to check the of consistence of inclusive tax flag
1884 --Check the inclusive flag
1885 /*IF(NVL(ln_cmn_inclusive_flag,'N') <> NVL(pr_tax_lines.inclusive_tax_flag,'N'))THEN
1886 xn_err_flag := 1;
1887 lv_return_mess := 'VALIDATION in validate_tax_code : The inclusive flag of external tax code is not same as the tax setup With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1888 lv_error_mess := 'JAI_INCLUSIVE_FLAG_INVALID';--'Inclusive flag is not as same as tax setup of EBS';
1889 log_error(
1890 pv_err_level => GV_ERROR_TYPE_TAX,
1891 pn_line_id => pr_interface_lines.interface_line_id,
1892 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1893 pv_err_mess => lv_error_mess,
1894 pv_invalid_value => pr_tax_lines.external_tax_code
1895 );
1896 record_fnd_log(
1897 pv_fnd_log => lv_return_mess
1898 );
1899 END IF;*/
1900
1901 --Check the tax in the range of startdate
1902 IF(ld_start_date IS NOT NULL)THEN
1903 IF(SYSDATE < ld_start_date)THEN
1904 xn_err_flag := 1;
1905 lv_return_mess := 'VALIDATION in validate_tax_code : Tax is out of range of startdate With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1906 lv_error_mess := 'JAI_TAX_INACTIVE';--'Inactive Tax code.'
1907 log_error(
1908 pv_err_level => GV_ERROR_TYPE_TAX,
1909 pn_line_id => pr_interface_lines.interface_line_id,
1910 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1911 pv_err_mess => lv_error_mess,
1912 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1913 );
1914 record_fnd_log(
1915 pv_fnd_log => lv_return_mess
1916 );
1917 END IF;
1918
1919 END IF;
1920 --Check the tax in the range of enddate
1921 IF(ld_end_date IS NOT NULL)THEN
1922 IF(SYSDATE > ld_end_date)THEN
1923 xn_err_flag := 1;
1924 lv_return_mess := 'VALIDATION in validate_tax_code : Tax is out of range of enddate With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1925 lv_error_mess := 'JAI_TAX_INACTIVE';--'Inactive Tax code.'
1926
1927 log_error(
1928 pv_err_level => GV_ERROR_TYPE_TAX,
1929 pn_line_id => pr_interface_lines.interface_line_id,
1930 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1931 pv_err_mess => lv_error_mess,
1932 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1933 );
1934 record_fnd_log(
1935 pv_fnd_log => lv_return_mess
1936 );
1937 END IF;
1938
1939 END IF;
1940 xn_tax_id := ln_tax_id; --output the tax id
1941
1942 END LOOP;
1943
1944 IF( ln_exist_flag = 0)THEN
1945 xn_err_flag := 1;
1946 lv_return_mess := 'VALIDATION in validate_tax_code : Tax can not be found from Tax Definition With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1947 lv_error_mess := 'JAI_TAX_UNMAPPED';--'This Tax code has not been mapped';
1948
1949 log_error(
1950 pv_err_level => GV_ERROR_TYPE_TAX,
1951 pn_line_id => pr_interface_lines.interface_line_id,
1952 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1953 pv_err_mess => lv_error_mess,
1954 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1955 );
1956 record_fnd_log(
1957 pv_fnd_log => lv_return_mess
1958 );
1959 END IF;
1960
1961 END IF;--Find Mapping tax id
1962 EXCEPTION
1963 WHEN OTHERS THEN
1964 xn_err_flag := 1;
1965 lv_return_mess := 'VALIDATION Exception with SQLERR: '|| SUBSTR(SQLERRM,1,230) || ' in validate_tax_code With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
1966 lv_error_mess := 'JAI_TAX_UNMAPPED';--'This Tax code has not been mapped';
1967
1968 log_error(
1969 pv_err_level => GV_ERROR_TYPE_TAX,
1970 pn_line_id => pr_interface_lines.interface_line_id,
1971 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
1972 pv_err_mess => lv_error_mess,
1973 pv_invalid_value => nvl(pr_tax_lines.external_tax_code, lv_tax_name)
1974 );
1975 record_fnd_log(
1976 pv_fnd_log => lv_return_mess
1977 );
1978 END validate_tax_code;
1979
1980
1981 /*
1982 ||Check the ccid of distribution line is available
1983 */
1984 PROCEDURE validate_dist_info(
1985 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
1986 pr_tax_lines IN JAI_INTERFACE_TAX_LINES_ALL%ROWTYPE,
1987 xn_err_flag IN OUT NOCOPY NUMBER
1988 ) IS
1989
1990 lv_return_mess VARCHAR2(1000);
1991 lv_error_mess VARCHAR2(1000);
1992
1993 lv_return_code VARCHAR2(10);
1994 ln_exist_flag NUMBER;
1995
1996 BEGIN
1997
1998 IF (pr_interface_lines.taxable_event = GV_TAXABLE_EVENT_EXTERNAL) THEN
1999 IF(nvl(pr_tax_lines.code_combination_id,-1) = -1)THEN
2000 xn_err_flag := 1;
2001 lv_return_mess := 'VALIDATION in validate_dist_line : Distribution info should not be null With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2002 lv_error_mess := 'JAI_ACCOUNT_MISSING';--'Please provide accounting for External event.';
2003 log_error(
2004 pv_err_level => GV_ERROR_TYPE_TAX,
2005 pn_line_id => pr_interface_lines.interface_line_id,
2006 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2007 pv_err_mess => lv_error_mess,
2008 pv_invalid_value => pr_tax_lines.interface_tax_line_id
2009 );
2010 record_fnd_log(
2011 pv_fnd_log => lv_return_mess
2012 );
2013 ELSE
2014 --Check the ccid is available.
2015 validate_ccid_id_suitable(
2016 pn_interface_line_id => pr_interface_lines.interface_line_id,
2017 pn_tax_line_id => pr_tax_lines.INTERFACE_TAX_LINE_ID,
2018 pn_code_combination_id => pr_tax_lines.CODE_COMBINATION_ID,
2019 xn_err_flag => xn_err_flag
2020 );
2021 END IF;
2022
2023 IF(nvl(pr_tax_lines.tax_amount,-1) = -1)THEN
2024 --For external , if tax amount is null , just warning , proceed .
2025 --xn_err_flag := 1; --Commented by bug#12589785
2026 --Added by zhiwei for bug#12589785 begin
2027 -----------------------------------------------------------
2028 update jai_interface_tax_lines_all
2029 set tax_amount = 0
2030 where interface_tax_line_id = pr_tax_lines.interface_tax_line_id
2031 and interface_line_id = pr_interface_lines.interface_line_id
2032 and nvl(tax_amount,-1) = -1;
2033 -----------------------------------------------------------
2034 --Added by zhiwei for bug#12589785 end
2035
2036 lv_return_mess := 'VALIDATION in validate_dist_info : tax amount should not be null With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2037 lv_error_mess := 'JAI_TAX_AMOUNT_MISSING';--'Tax line amount is Null, please correct it.';
2038 log_error(
2039 pv_err_level => GV_ERROR_TYPE_TAX,
2040 pn_line_id => pr_interface_lines.interface_line_id,
2041 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2042 pv_err_mess => lv_error_mess,
2043 pv_invalid_value => pr_tax_lines.tax_amount
2044 );
2045 record_fnd_log(
2046 pv_fnd_log => lv_return_mess
2047 );
2048 END IF;
2049 END IF;
2050 EXCEPTION
2051 WHEN OTHERS THEN
2052 xn_err_flag := 1;
2053 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_dist_info With interface_tax_line_id:'||pr_tax_lines.INTERFACE_TAX_LINE_ID;
2054 lv_error_mess := 'JAI_ACCOUNT_MISSING';--'Please provide accounting for External event.';
2055 log_error(
2056 pv_err_level => GV_ERROR_TYPE_TAX,
2057 pn_line_id => pr_interface_lines.interface_line_id,
2058 pn_source_line_id => pr_tax_lines.INTERFACE_TAX_LINE_ID,
2059 pv_err_mess => lv_error_mess,
2060 pv_invalid_value => pr_tax_lines.CODE_COMBINATION_ID
2061 );
2062 record_fnd_log(
2063 pv_fnd_log => lv_return_mess
2064 );
2065 END validate_dist_info;
2066
2067 /*
2068 * Check the tax regime should in constains
2069 * AP NOT IN
2070 * ('TDS', 'EXCISE', 'EXCISE_EDUCATION_CESS', 'EXCISE_SH_EDU_CESS',
2071 * 'ADDL. EXCISE', 'ADDITIONAL_CVD', 'CUSTOMS_EDUCATION_CESS',
2072 * 'CUSTOMS_SH_EDU_CESS', 'CVD', 'CVD_EDUCATION_CESS',
2073 * 'CVD_SH_EDU_CESS', 'CUSTOMS', 'OCTRAI', 'INSURANCE',
2074 * 'TURNOVER TAX','OTHER EXCISE','VAT', 'VAT_REVERSAL')
2075 * AP NOT IN
2076 * Tax types under CUSTOMS Regime
2077 * AR NOT IN
2078 * Tax types under CUSTOMS Regime
2079 */
2080 PROCEDURE validate_tax_constrain(
2081 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
2082 pr_tax_lines IN JAI_INTERFACE_TAX_LINES_ALL%ROWTYPE,
2083 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
2084 xn_err_flag IN OUT NOCOPY NUMBER,
2085 pn_tax_id IN NUMBER
2086 )
2087 IS
2088 --Cursor define here
2089 CURSOR chk_ap_tax_type_cur
2090 IS
2091 SELECT
2092 COUNT(TAX_ID)
2093 from JAI_CMN_TAXES_ALL
2094 WHERE org_id = pr_interface_lines.ORG_ID
2095 --Commented by zhiwei for Bug#12561573 begin
2096 ----------------------------------------------------
2097 --and (end_date >= trunc(sysdate) or end_date is null)
2098 --and start_date <= trunc(sysdate)
2099 ----------------------------------------------------
2100 --Commented by zhiwei for Bug#12561573 end
2101 and tax_id = pn_tax_id
2102 and ( upper(tax_type) IN
2103 ('TDS', 'EXCISE', 'EXCISE_EDUCATION_CESS', 'EXCISE_SH_EDU_CESS',
2104 'VALUE ADDED TAX',--Added by zhiwei
2105 'ADDL. EXCISE', 'OCTRAI', --'INSURANCE',--Commented by zhiwei for Bug#12584781 at 20110607
2106 'TURNOVER TAX','OTHER EXCISE','VAT', 'VAT_REVERSAL')
2107 OR upper(tax_type) IN
2108 (SELECT jrr.attribute_code
2109 FROM jai_rgm_registrations jrr
2110 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
2111 AND jrr.regime_id IN
2112 (SELECT jrd.regime_id
2113 FROM jai_rgm_definitions jrd
2114 WHERE jrd.regime_code = jai_constants.customs_regime)));
2115
2116 CURSOR chk_ar_tax_type_cur
2117 IS
2118 SELECT
2119 COUNT(TAX_ID)
2120 from JAI_CMN_TAXES_ALL
2121 WHERE org_id = pr_interface_lines.ORG_ID
2122 --Commented by zhiwei for Bug#12561573 begin
2123 ---------------------------------------------------------------
2124 --and (end_date >= trunc(sysdate) or end_date is null)
2125 --and start_date <= trunc(sysdate)
2126 ---------------------------------------------------------------
2127 --Commented by zhiwei for Bug#12561573 end
2128 and tax_id = pn_tax_id
2129 AND
2130 (--Added by zhiwei for Bug#12561573
2131 upper(tax_type) IN
2132 (SELECT jrr.attribute_code
2133 FROM jai_rgm_registrations jrr
2134 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
2135 AND jrr.regime_id IN
2136 (SELECT jrd.regime_id
2137 FROM jai_rgm_definitions jrd
2138 WHERE jrd.regime_code = jai_constants.customs_regime))
2139 --Added by zhiwei for Bug#12561573 begin
2140 -------------------------------------------------
2141 or
2142 upper(tax_type) in
2143 (
2144 'CUSTOMS','CUSTOMS_EDUCATION_CESS','CVD', 'CVD_EDUCATION_CESS', 'ADDITIONAL_CVD',
2145 'CVD_SH_EDU_CESS','CUSTOMS_SH_EDU_CESS','SURCHARGE_DUTY',
2146 'ANY_OTHER_CUSTOMS_TAX_TYPE1','ANY_OTHER_CUSTOMS_TAX_TYPE2','ANY_OTHER_CUSTOMS_TAX_TYPE3',
2147 'ANY_OTHER_CUSTOMS_TAX_TYPE4','ANY_OTHER_CUSTOMS_TAX_TYPE5','ADDTIONAL_CUSTOMS'
2148 ))
2149 -------------------------------------------------
2150 --Added by zhiwei for Bug#12561573 end
2151 ;
2152
2153
2154 --Variable define here
2155 ln_count NUMBER;
2156 lv_return_mess VARCHAR2(1000);
2157 lv_error_mess VARCHAR2(1000);
2158
2159
2160 BEGIN
2161
2162 IF(pr_interface_lines.import_module = JAI_CONSTANTS.SOURCE_AP)THEN
2163
2164 OPEN chk_ap_tax_type_cur;
2165 FETCH chk_ap_tax_type_cur INTO ln_count;
2166 CLOSE chk_ap_tax_type_cur;
2167
2168 IF(NVL(ln_count,0) > 0)THEN
2169 xn_err_flag := 1;
2170 lv_return_mess := 'VALIDATION in validate_tax_constrain : Tax is out of constains With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2171 lv_error_mess := 'JAI_AP_TAX_TYPE';--'Tax type is not supported to import in AP module.';
2172 log_error(
2173 pv_err_level => GV_ERROR_TYPE_TAX,
2174 pn_line_id => pr_interface_lines.interface_line_id,
2175 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2176 pv_err_mess => lv_error_mess,
2177 pv_invalid_value => pr_tax_lines.external_tax_code
2178 );
2179 record_fnd_log(
2180 pv_fnd_log => lv_return_mess
2181 );
2182 END IF;
2183 ELSIF (pr_interface_lines.import_module = JAI_CONSTANTS.SOURCE_AR) THEN
2184
2185 OPEN chk_ar_tax_type_cur;
2186 FETCH chk_ar_tax_type_cur INTO ln_count;
2187 CLOSE chk_ar_tax_type_cur;
2188
2189 IF(NVL(ln_count,0) > 0)THEN
2190 xn_err_flag := 1;
2191 lv_return_mess := 'VALIDATION in validate_tax_constrain : Tax is out of constains With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2192 lv_error_mess := 'JAI_AR_TAX_TYPE';--'Tax type is not supported to import in AR module.';
2193 log_error(
2194 pv_err_level => GV_ERROR_TYPE_TAX,
2195 pn_line_id => pr_interface_lines.interface_line_id,
2196 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2197 pv_err_mess => lv_error_mess,
2198 pv_invalid_value => pr_tax_lines.external_tax_code
2199 );
2200 record_fnd_log(
2201 pv_fnd_log => lv_return_mess
2202 );
2203 END IF;
2204 END IF;
2205
2206
2207 EXCEPTION
2208 WHEN OTHERS THEN
2209 xn_err_flag := 1;
2210 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_tax_constrain With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2211 --lv_error_mess := 'JAI_AP_TAX_TYPE';--'Tax type is not supported to import in AP module .';
2212
2213 log_error(
2214 pv_err_level => GV_ERROR_TYPE_TAX,
2215 pn_line_id => pr_interface_lines.interface_line_id,
2216 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2217 pv_err_mess => lv_error_mess,
2218 pv_invalid_value => pr_tax_lines.external_tax_code
2219 );
2220 record_fnd_log(
2221 pv_fnd_log => lv_return_mess
2222 );
2223 END validate_tax_constrain;
2224
2225 /*
2226 ||--Check the tax line procedence is correct
2227 ||
2228 */
2229 PROCEDURE validate_tax_precedence(
2230 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
2231 pr_tax_lines IN JAI_INTERFACE_TAX_LINES_ALL%ROWTYPE,
2232 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
2233 xn_err_flag IN OUT NOCOPY NUMBER
2234 )
2235 IS
2236
2237 --Cursor define here
2238 CURSOR get_line_count_cur
2239 IS
2240 SELECT COUNT(tax_id)
2241 FROM JAI_INTERFACE_TAX_LINES_ALL
2242 WHERE INTERFACE_LINE_ID = pn_interface_line_id
2243 ;
2244
2245 --Variable define here
2246 ln_line_count NUMBER;
2247 lv_return_mess VARCHAR2(1000);
2248 lv_error_mess VARCHAR2(1000);
2249
2250
2251 --Main block
2252 BEGIN
2253
2254 --Added by zhiwei for bug#12580191 begin
2255 --------------------------------------------------------------------
2256 if( NVL(pr_tax_lines.precedence_1,0) < 0
2257 OR NVL(pr_tax_lines.precedence_2,0) < 0
2258 OR NVL(pr_tax_lines.precedence_3,0) < 0
2259 OR NVL(pr_tax_lines.precedence_4,0) < 0
2260 OR NVL(pr_tax_lines.precedence_5,0) < 0
2261 OR NVL(pr_tax_lines.precedence_6,0) < 0
2262 OR NVL(pr_tax_lines.precedence_7,0) < 0
2263 OR NVL(pr_tax_lines.precedence_8,0) < 0
2264 OR NVL(pr_tax_lines.precedence_9,0) < 0
2265 OR NVL(pr_tax_lines.precedence_10,0) < 0
2266 )then
2267 xn_err_flag := 1;
2268 lv_return_mess := 'VALIDATION in validate_tax_precedence : Tax precedence should not be negative With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2269 lv_error_mess := 'JAI_LAR_PREC_CNT_NEG';
2270 log_error(
2271 pv_err_level => GV_ERROR_TYPE_TAX,
2272 pn_line_id => pn_interface_line_id,
2273 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2274 pv_err_mess => lv_error_mess,
2275 pv_invalid_value => pr_tax_lines.external_tax_code
2276 );
2277 record_fnd_log(
2278 pv_fnd_log => lv_return_mess
2279 );
2280
2281 end if;
2282 --------------------------------------------------------------------
2283 --Added by zhiwei for bug#12580191 end
2284
2285
2286 OPEN get_line_count_cur;
2287 FETCH get_line_count_cur INTO ln_line_count;
2288 CLOSE get_line_count_cur;
2289
2290 IF( NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_1,0)
2291 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_2,0)
2292 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_3,0)
2293 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_4,0)
2294 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_5,0)
2295 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_6,0)
2296 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_7,0)
2297 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_8,0)
2298 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_9,0)
2299 OR NVL(ln_line_count,0) < NVL(pr_tax_lines.precedence_10,0)
2300 )THEN
2301 xn_err_flag := 1;
2302 lv_return_mess := 'VALIDATION in validate_tax_precedence : Tax precedence is larger than tax line count With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2303 lv_error_mess := 'JAI_PRECEDENCE_INVALID';--'Invalid tax precedence for Standard event';
2304 log_error(
2305 pv_err_level => GV_ERROR_TYPE_TAX,
2306 pn_line_id => pn_interface_line_id,
2307 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2308 pv_err_mess => lv_error_mess,
2309 pv_invalid_value => pr_tax_lines.external_tax_code
2310 );
2311 record_fnd_log(
2312 pv_fnd_log => lv_return_mess
2313 );
2314 END IF;--Precedence should not larger than count of tax lines
2315
2316 IF(
2317 NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_2,-22)
2318 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_3,-22)
2319 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_4,-22)
2320 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_5,-22)
2321 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_6,-22)
2322 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_7,-22)
2323 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_8,-22)
2324 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_9,-22)
2325 OR NVL(pr_tax_lines.precedence_1,-11) = NVL(pr_tax_lines.precedence_10,-22)
2326 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_3,-33)
2327 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_4,-33)
2328 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_5,-33)
2329 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_6,-33)
2330 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_7,-33)
2331 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_8,-33)
2332 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_9,-33)
2333 OR NVL(pr_tax_lines.precedence_2,-22) = NVL(pr_tax_lines.precedence_10,-33)
2334 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_4,-44)
2335 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_5,-44)
2336 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_6,-44)
2337 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_7,-44)
2338 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_8,-44)
2339 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_9,-44)
2340 OR NVL(pr_tax_lines.precedence_3,-33) = NVL(pr_tax_lines.precedence_10,-44)
2341 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_5,-55)
2342 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_6,-55)
2343 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_7,-55)
2344 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_8,-55)
2345 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_9,-55)
2346 OR NVL(pr_tax_lines.precedence_4,-44) = NVL(pr_tax_lines.precedence_10,-55)
2347 OR NVL(pr_tax_lines.precedence_5,-55) = NVL(pr_tax_lines.precedence_6,-66)
2348 OR NVL(pr_tax_lines.precedence_5,-55) = NVL(pr_tax_lines.precedence_7,-66)
2349 OR NVL(pr_tax_lines.precedence_5,-55) = NVL(pr_tax_lines.precedence_8,-66)
2350 OR NVL(pr_tax_lines.precedence_5,-55) = NVL(pr_tax_lines.precedence_9,-66)
2351 OR NVL(pr_tax_lines.precedence_5,-55) = NVL(pr_tax_lines.precedence_10,-66)
2352 OR NVL(pr_tax_lines.precedence_6,-66) = NVL(pr_tax_lines.precedence_7,-77)
2353 OR NVL(pr_tax_lines.precedence_6,-66) = NVL(pr_tax_lines.precedence_8,-77)
2354 OR NVL(pr_tax_lines.precedence_6,-66) = NVL(pr_tax_lines.precedence_9,-77)
2355 OR NVL(pr_tax_lines.precedence_6,-66) = NVL(pr_tax_lines.precedence_10,-77)
2356 OR NVL(pr_tax_lines.precedence_7,-77) = NVL(pr_tax_lines.precedence_8,-88)
2357 OR NVL(pr_tax_lines.precedence_7,-77) = NVL(pr_tax_lines.precedence_9,-88)
2358 OR NVL(pr_tax_lines.precedence_7,-77) = NVL(pr_tax_lines.precedence_10,-88)
2359 OR NVL(pr_tax_lines.precedence_8,-88) = NVL(pr_tax_lines.precedence_9,-99)
2360 OR NVL(pr_tax_lines.precedence_8,-88) = NVL(pr_tax_lines.precedence_10,-99)
2361 OR NVL(pr_tax_lines.precedence_9,-99) = NVL(pr_tax_lines.precedence_10,-11)
2362 )THEN
2363 xn_err_flag := 1;
2364 lv_return_mess := 'VALIDATION in validate_tax_precedence : Tax precedence can not have the same point at one tax line With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2365 --lv_error_mess := 'JAI_PRECEDENCE_INVALID';
2366 lv_error_mess := 'JAI_TAX_PRCD_NOT_EQUAL';--Added by zhiwei for bug#12580191
2367 log_error(
2368 pv_err_level => GV_ERROR_TYPE_TAX,
2369 pn_line_id => pn_interface_line_id,
2370 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2371 pv_err_mess => lv_error_mess,
2372 pv_invalid_value => pr_tax_lines.external_tax_code
2373 );
2374 record_fnd_log(
2375 pv_fnd_log => lv_return_mess
2376 );
2377 END IF;--Precedence should not have duplicate point in one tax line
2378
2379 IF( NVL(pr_tax_lines.precedence_1,-1) = pr_tax_lines.tax_line_no
2380 OR NVL(pr_tax_lines.precedence_2,-1) = pr_tax_lines.tax_line_no
2381 OR NVL(pr_tax_lines.precedence_3,-1) = pr_tax_lines.tax_line_no
2382 OR NVL(pr_tax_lines.precedence_4,-1) = pr_tax_lines.tax_line_no
2383 OR NVL(pr_tax_lines.precedence_5,-1) = pr_tax_lines.tax_line_no
2384 OR NVL(pr_tax_lines.precedence_6,-1) = pr_tax_lines.tax_line_no
2385 OR NVL(pr_tax_lines.precedence_7,-1) = pr_tax_lines.tax_line_no
2386 OR NVL(pr_tax_lines.precedence_8,-1) = pr_tax_lines.tax_line_no
2387 OR NVL(pr_tax_lines.precedence_9,-1) = pr_tax_lines.tax_line_no
2388 OR NVL(pr_tax_lines.precedence_10,-1) = pr_tax_lines.tax_line_no
2389 )THEN
2390 xn_err_flag := 1;
2391 lv_return_mess := 'VALIDATION in validate_tax_precedence : Tax precedence can not depends on itself With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2392 --lv_error_mess := 'JAI_PRECEDENCE_INVALID';
2393 lv_error_mess := 'JAI_TAX_PRCD_NOT_DEP_SELF';--Added by zhiwei for bug#12580191
2394 log_error(
2395 pv_err_level => GV_ERROR_TYPE_TAX,
2396 pn_line_id => pn_interface_line_id,
2397 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2398 pv_err_mess => lv_error_mess,
2399 pv_invalid_value => pr_tax_lines.external_tax_code
2400 );
2401 record_fnd_log(
2402 pv_fnd_log => lv_return_mess
2403 );
2404 END IF;--Precedence 1..10 can not equqals tax line no
2405 EXCEPTION
2406 WHEN OTHERS THEN
2407 xn_err_flag := 1;
2408 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_tax_precedence With interface_tax_line_id:'||pr_tax_lines.interface_tax_line_id;
2409 lv_error_mess := 'JAI_PRECEDENCE_INVALID';
2410
2411 log_error(
2412 pv_err_level => GV_ERROR_TYPE_TAX,
2413 pn_line_id => pn_interface_line_id,
2414 pn_source_line_id => pr_tax_lines.interface_tax_line_id,
2415 pv_err_mess => lv_error_mess,
2416 pv_invalid_value => pr_tax_lines.external_tax_code
2417 );
2418 record_fnd_log(
2419 pv_fnd_log => lv_return_mess
2420 );
2421 END validate_tax_precedence;
2422
2423
2424
2425 --Added by zhiwei for Bug#12604133 on 20110623 begin
2426 ---------------------------------------------------------
2427 /*
2428 ||--Check qty rate
2429 ||
2430 */
2431 PROCEDURE validate_qty_rate(
2432 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
2433 pn_tax_line_id IN JAI_INTERFACE_TAX_LINES_ALL.interface_tax_line_id%TYPE,
2434 pn_tax_id IN JAI_INTERFACE_TAX_LINES_ALL.tax_ID%TYPE,
2435 xn_err_flag IN OUT NOCOPY NUMBER
2436 )
2437 IS
2438
2439 --Cursor define here
2440 CURSOR get_tax_cur
2441 IS
2442 SELECT qty_rate,tax_amount
2443 FROM JAI_INTERFACE_TAX_LINES_ALL
2444 WHERE INTERFACE_tax_LINE_ID = pn_tax_line_id
2445 ;
2446 CURSOR chk_qty_rate_cur
2447 IS
2448 SELECT
2449 COUNT(1)
2450 FROM JAI_CMN_TAXES_ALL
2451 WHERE TAX_ID = pn_tax_id
2452 AND ADHOC_FLAG = 'Y'
2453 AND VAT_FLAG = 'Q';
2454
2455 --Variable define here
2456
2457 ln_qty_rate number;
2458 ln_tax_amt number;
2459 ln_line_count NUMBER;
2460 lv_return_mess VARCHAR2(1000);
2461 lv_error_mess VARCHAR2(1000);
2462
2463
2464 --Main block
2465 BEGIN
2466
2467 OPEN chk_qty_rate_cur;
2468 FETCH chk_qty_rate_cur INTO ln_line_count;
2469 CLOSE chk_qty_rate_cur;
2470
2471 IF NVL(ln_line_count,0) > 0 THEN
2472
2473 OPEN get_tax_cur;
2474 FETCH get_tax_cur INTO ln_qty_rate,ln_tax_amt;
2475 CLOSE get_tax_cur;
2476
2477 IF NVL(ln_qty_rate,0) <> 0 and NVL(ln_tax_amt,0) <> 0 THEN
2478 --xn_err_flag := 1;
2479 lv_return_mess := 'VALIDATION in validate_qty_rate : Tax amount entered is ignored and determined based on Qty/Rate entered With interface_tax_line_id:'||pn_tax_line_id;
2480 lv_error_mess := 'JAI_CALC_AMOUNT';
2481 log_error(
2482 pv_err_level => GV_ERROR_TYPE_TAX,
2483 pn_line_id => pn_interface_line_id,
2484 pn_source_line_id => pn_tax_line_id,
2485 pv_err_mess => lv_error_mess,
2486 pv_invalid_value => ln_qty_rate
2487 );
2488 record_fnd_log(
2489 pv_fnd_log => lv_return_mess
2490 );
2491 END IF;
2492
2493 END IF;
2494
2495 EXCEPTION
2496 WHEN OTHERS THEN
2497 xn_err_flag := 1;
2498 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_qty_rate With interface_tax_line_id:'||pn_tax_line_id;
2499 lv_error_mess := 'JAI_CALC_AMOUNT';
2500
2501 log_error(
2502 pv_err_level => GV_ERROR_TYPE_TAX,
2503 pn_line_id => pn_interface_line_id,
2504 pn_source_line_id => pn_tax_line_id,
2505 pv_err_mess => lv_return_mess,
2506 pv_invalid_value => ln_qty_rate
2507 );
2508 record_fnd_log(
2509 pv_fnd_log => lv_return_mess
2510 );
2511 END validate_qty_rate;
2512 ---------------------------------------------------------
2513 --Added by zhiwei for Bug#12604133 on 20110623 end
2514
2515
2516
2517 /*
2518 || Check duplicate lines.
2519 */
2520 PROCEDURE validate_duplicate_lines
2521 IS
2522 --Cursor define here
2523 CURSOR get_duplicate_info_cur
2524 IS
2525 SELECT import_module,internal_trx_id,internal_trx_line_id,COUNT(*)
2526 FROM JAI_INTERFACE_LINES_ALL
2527 WHERE request_id = GN_REQUEST_ID
2528 AND IMPORT_STATUS = GV_IMPORT_SUCCESS
2529 AND IMPORT_PROCESS = GV_PROCESS_VALIDATION
2530 group by import_module,internal_trx_id,internal_trx_line_id
2531 having count(*) > 1
2532 order by import_module,internal_trx_id,internal_trx_line_id
2533 ;
2534
2535 CURSOR get_dupl_lines_cur(
2536 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
2537 cn_trx_line_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE
2538 )
2539 IS
2540 SELECT INTERFACE_LINE_ID,
2541 transaction_num,
2542 transaction_line_num
2543 FROM JAI_INTERFACE_LINES_ALL
2544 WHERE INTERNAL_TRX_ID = cn_trx_id
2545 AND INTERNAL_TRX_LINE_ID = cn_trx_line_id
2546 ORDER BY 1;
2547
2548 --Variable define here
2549 rec_duplicate_info get_duplicate_info_cur%ROWTYPE;
2550 rec_interface_line_id get_dupl_lines_cur%ROWTYPE;
2551 lv_return_mess VARCHAR2(1000);
2552 lv_error_mess VARCHAR2(1000);
2553 lv_return_code VARCHAR2(20);
2554
2555 --Main block
2556 BEGIN
2557
2558 FOR rec_duplicate_info IN get_duplicate_info_cur
2559 LOOP
2560 --Get the duplicate lines, update status and fnd log.
2561 FOR rec_interface_line_id IN get_dupl_lines_cur(
2562 rec_duplicate_info.INTERNAL_TRX_ID,
2563 rec_duplicate_info.INTERNAL_TRX_LINE_ID
2564 )
2565 LOOP
2566 lv_return_mess := 'VALIDATION in validate_duplicate_lines : Internal trx id and internal trx line id can not duplicate With interface_line_id:'||rec_interface_line_id.interface_line_id;
2567 lv_error_mess := 'JAI_MULTIPLE_TRANS';--'Get multiple records for this Source Trans Num '||rec_interface_line_id.transaction_num||' with Source Line Num '|| rec_interface_line_id.transaction_line_num;
2568 log_error(
2569 pv_err_level => GV_ERROR_TYPE_LINE,
2570 pn_line_id => rec_interface_line_id.interface_line_id,
2571 pn_source_line_id => rec_interface_line_id.interface_line_id,
2572 pv_err_mess => lv_error_mess,
2573 pv_invalid_value => rec_interface_line_id.transaction_num || ' and ' || rec_interface_line_id.transaction_line_num
2574 );
2575 record_fnd_log(
2576 pv_fnd_log => lv_return_mess
2577 );
2578 update_line_status(
2579 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2580 pv_import_status => GV_IMPORT_FAILURE,
2581 pv_import_process => GV_PROCESS_VALIDATION
2582 );
2583
2584 update_error_flag(
2585 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2586 pv_err_exist => 'Y'
2587 );
2588
2589 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'DUPLICATE VALIDATION COMPLETED WITH ERROR.');
2590
2591 END LOOP;
2592 END LOOP;
2593
2594 EXCEPTION
2595 WHEN OTHERS THEN
2596 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) ||' in validate_duplicate_lines With interface_line_id:'||rec_interface_line_id.interface_line_id;
2597 lv_error_mess := 'JAI_MULTIPLE_TRANS';--'Get multiple records for this Source Trans Num '||rec_interface_line_id.transaction_num||' with Source Line Num '|| rec_interface_line_id.transaction_line_num;
2598 log_error(
2599 pv_err_level => GV_ERROR_TYPE_LINE,
2600 pn_line_id => rec_interface_line_id.interface_line_id,
2601 pn_source_line_id => rec_interface_line_id.interface_line_id,
2602 pv_err_mess => lv_error_mess,
2603 pv_invalid_value => rec_interface_line_id.transaction_num || ' and ' || rec_interface_line_id.transaction_line_num
2604 );
2605 record_fnd_log(
2606 pv_fnd_log => lv_return_mess
2607 );
2608 update_line_status(
2609 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2610 pv_import_status => GV_IMPORT_FAILURE,
2611 pv_import_process => GV_PROCESS_VALIDATION
2612 );
2613
2614 update_error_flag(
2615 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2616 pv_err_exist => 'Y'
2617 );
2618
2619 END validate_duplicate_lines;
2620
2621
2622 /*
2623 || Check transaction integrated
2624 */
2625 PROCEDURE validate_integrate_trx
2626 IS
2627 --Cursor define here
2628 CURSOR get_trx_line_count_cur IS
2629 SELECT import_module import_module,
2630 internal_trx_id trx_id,
2631 COUNT(*) line_count
2632 FROM JAI_INTERFACE_LINES_ALL
2633 WHERE request_id = GN_REQUEST_ID
2634 AND IMPORT_STATUS = GV_IMPORT_SUCCESS
2635 AND IMPORT_PROCESS = GV_PROCESS_VALIDATION
2636 group by import_module,internal_trx_id
2637 order by import_module,internal_trx_id;
2638
2639 --Get AR transaction lines count
2640 CURSOR get_ar_lines_count_cur(
2641 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE) IS
2642 SELECT COUNT(CUSTOMER_TRX_LINE_ID)
2643 FROM RA_CUSTOMER_TRX_LINES_ALL
2644 WHERE CUSTOMER_TRX_ID = cn_trx_id;
2645
2646 --Get AP transaction lines count
2647 CURSOR get_ap_lines_count_cur(
2648 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE) IS
2649 SELECT COUNT(line_number)
2650 FROM AP_INVOICE_LINES
2651 WHERE INVOICE_ID = cn_trx_id;
2652
2653 --Get error lines
2654 CURSOR get_err_lines_cur(
2655 cn_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
2656 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE
2657 )
2658 IS
2659 SELECT interface_line_id,error_flag
2660 FROM JAI_INTERFACE_LINES_ALL
2661 WHERE IMPORT_MODULE = cn_import_module
2662 and INTERNAL_TRX_ID = cn_trx_id
2663 ORDER BY 1;
2664
2665 CURSOR chk_taxable_event(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2666 IS
2667 SELECT COUNT(DISTINCT TAXABLE_EVENT)
2668 FROM JAI_INTERFACE_LINES_ALL
2669 WHERE INTERNAL_TRX_ID = cn_trx_id;
2670
2671 CURSOR get_taxable_event(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2672 IS
2673 SELECT DISTINCT TAXABLE_EVENT
2674 FROM JAI_INTERFACE_LINES_ALL
2675 WHERE INTERNAL_TRX_ID = cn_trx_id;
2676
2677 CURSOR chk_vat_inv_no(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2678 IS
2679 SELECT
2680 COUNT(DISTINCT VAT_INVOICE_NO) vat_no_count
2681 FROM JAI_INTERFACE_LINES_ALL
2682 WHERE INTERNAL_TRX_ID = cn_trx_id;
2683 --AND VAT_INVOICE_NO IS NOT NULL;
2684
2685 CURSOR chk_exc_inv_no(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2686 IS
2687 SELECT
2688 COUNT(DISTINCT EXCISE_INVOICE_NO) exc_no_count
2689 FROM JAI_INTERFACE_LINES_ALL
2690 WHERE INTERNAL_TRX_ID = cn_trx_id;
2691 --AND EXCISE_INVOICE_NO IS NOT NULL;
2692
2693 CURSOR get_vat_no_cur(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2694 IS
2695 SELECT DISTINCT vat_invoice_no
2696 FROM JAI_INTERFACE_LINES_ALL
2697 WHERE INTERNAL_TRX_ID = cn_trx_id;
2698
2699 CURSOR get_excise_no_cur(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2700 IS
2701 SELECT DISTINCT excise_invoice_no
2702 FROM JAI_INTERFACE_LINES_ALL
2703 WHERE INTERNAL_TRX_ID = cn_trx_id;
2704
2705 CURSOR get_vat_tax_exists_cur(cn_trx_id IN NUMBER) IS
2706 SELECT 'Y'
2707 FROM dual
2708 WHERE EXISTS (SELECT 1
2709 FROM jai_cmn_taxes_all jcta,
2710 jai_interface_tax_lines_all jitla,
2711 jai_interface_lines_all jila
2712 WHERE jitla.tax_id = jcta.tax_id
2713 AND jila.interface_line_id = jitla.interface_line_id
2714 AND jila.internal_trx_id = cn_trx_id
2715 AND upper(jcta.tax_type) IN
2716 (SELECT jrr.attribute_code
2717 FROM jai_rgm_registrations jrr
2718 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
2719 AND jrr.regime_id = (SELECT jrd.regime_id
2720 FROM jai_rgm_definitions jrd
2721 WHERE jrd.regime_code = jai_constants.vat_regime)));
2722
2723 CURSOR get_excise_tax_exists_cur(cn_trx_id IN NUMBER) IS
2724 SELECT 'Y'
2725 FROM dual
2726 WHERE EXISTS (SELECT 1
2727 FROM jai_cmn_taxes_all jcta,
2728 jai_interface_tax_lines_all jitla,
2729 jai_interface_lines_all jila
2730 WHERE jitla.tax_id = jcta.tax_id
2731 AND jila.interface_line_id = jitla.interface_line_id
2732 AND jila.internal_trx_id = cn_trx_id
2733 AND upper(jcta.tax_type) IN ('EXCISE', 'EXCISE_EDUCATION_CESS', 'EXCISE_SH_EDU_CESS'));
2734
2735 CURSOR get_lines_count(
2736 cv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
2737 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE
2738 )
2739 IS
2740 SELECT COUNT(1)
2741 FROM JAI_INTERFACE_LINES_ALL
2742 WHERE internal_trx_id = cn_trx_id
2743 AND import_module = cv_import_module
2744 AND request_id = GN_REQUEST_ID;
2745
2746 --Added by zhiwei for Bug#12630077 on 20110608 begin
2747 -----------------------------------------------------------------------------------------------
2748 CURSOR get_four_comb_for_parent(
2749 cv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
2750 cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE
2751 )
2752 IS
2753 SELECT distinct
2754 party_id,
2755 party_site_id,
2756 import_module,
2757 transaction_num
2758 FROM JAI_INTERFACE_LINES_ALL
2759 WHERE internal_trx_id = cn_trx_id
2760 AND import_module = cv_import_module
2761 AND request_id = GN_REQUEST_ID;
2762
2763 ln_lines_count_parent number;
2764 lv_import_module jai_interface_lines_all.import_module%type;
2765 ln_party_id jai_interface_lines_all.party_id%type;
2766 ln_party_site_id jai_interface_lines_all.party_site_id%type;
2767 lv_transaction_num jai_interface_lines_all.transaction_num%type;
2768
2769 CURSOR get_parent_lines_count(
2770 cv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
2771 cn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
2772 cn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE,
2773 cv_transaction_num IN JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE
2774 )
2775 IS
2776 SELECT COUNT(1)
2777 FROM JAI_INTERFACE_LINES_ALL
2778 WHERE transaction_num = cv_transaction_num
2779 AND import_module = cv_import_module
2780 AND party_id = cn_party_id
2781 AND party_site_id = cn_party_site_id
2782 AND request_id = GN_REQUEST_ID;
2783 -----------------------------------------------------------------------------------------------
2784 --Added by zhiwei for Bug#12630077 on 20110608 end
2785
2786 --Variable define here
2787 ln_line_count NUMBER;
2788 rec_trx_line_count get_trx_line_count_cur%ROWTYPE;
2789 rec_interface_line_id get_err_lines_cur%ROWTYPE;
2790 lv_return_mess VARCHAR2(1000);
2791 lv_error_mess VARCHAR2(1000);
2792 lv_return_code VARCHAR2(20);
2793 ln_event_type NUMBER;
2794 lv_taxable_event JAI_INTERFACE_LINES_ALL.TAXABLE_EVENT%TYPE;
2795 ln_vat_no_count NUMBER;
2796 ln_excise_no_count NUMBER;
2797 ln_diff_tax NUMBER;
2798 lv_error_tax_inv VARCHAR2(20);
2799 lv_vat_no JAI_INTERFACE_LINES_ALL.VAT_INVOICE_NO%TYPE;
2800 lv_excise_no JAI_INTERFACE_LINES_ALL.EXCISE_INVOICE_NO%TYPE;
2801 ln_error_flag NUMBER;
2802 lv_error_type VARCHAR2(20);
2803 ln_regime_id JAI_RGM_DEFINITIONS.REGIME_ID%TYPE;
2804 lv_regime_code JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE;
2805 ln_vat_exist NUMBER;
2806 ln_excise_exist NUMBER;
2807 ln_complete_count NUMBER;--20110111
2808 lv_determine_flag VARCHAR2(20);--20110111
2809
2810 lv_vat_tax_exist VARCHAR2(1);
2811 lv_excise_tax_exist VARCHAR2(1);
2812 --Main block
2813
2814 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 Begin*/
2815 CURSOR chk_st_inv_no(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
2816 IS
2817 SELECT
2818 COUNT(DISTINCT st_inv_number) st_inv_count
2819 FROM JAI_INTERFACE_LINES_ALL
2820 WHERE INTERNAL_TRX_ID = cn_trx_id;
2821
2822 CURSOR get_service_tax_exists_cur(cn_trx_id IN NUMBER) IS
2823 SELECT 'Y'
2824 FROM dual
2825 WHERE EXISTS (SELECT 1
2826 FROM jai_cmn_taxes_all jcta,
2827 jai_interface_tax_lines_all jitla,
2828 jai_interface_lines_all jila
2829 WHERE jitla.tax_id = jcta.tax_id
2830 AND jila.interface_line_id = jitla.interface_line_id
2831 AND jila.internal_trx_id = cn_trx_id
2832 AND upper(jcta.tax_type) IN
2833 (SELECT upper(jrr.attribute_code)
2834 FROM jai_rgm_registrations jrr
2835 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
2836 AND jrr.regime_id = (SELECT jrd.regime_id
2837 FROM jai_rgm_definitions jrd
2838 WHERE jrd.regime_code = jai_constants.service_regime)));
2839 ln_st_num_count NUMBER;
2840 lv_service_tax_exist VARCHAR2(1);
2841 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 End*/
2842 BEGIN
2843
2844 FOR rec_trx_line_count IN get_trx_line_count_cur
2845 LOOP
2846 --In one Transaction , the Taxable Event should be same as each other.
2847 OPEN chk_taxable_event(rec_trx_line_count.trx_id);
2848 FETCH chk_taxable_event INTO ln_event_type;
2849 CLOSE chk_taxable_event;
2850
2851 IF(NVL(ln_event_type,-1) > 1)THEN
2852
2853 FOR rec_interface_line_id IN get_err_lines_cur(
2854 rec_trx_line_count.import_module,
2855 rec_trx_line_count.trx_id
2856 )
2857 LOOP
2858 lv_return_mess := 'VALIDATION in validate_integrate_trx : The taxable event should be same as each other in one Transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
2859 lv_error_mess := 'JAI_MUTIPLE_TAXABLE_EVENT';--'The taxable event should be same as each other in one Transaction';
2860 log_error(
2861 pv_err_level => GV_ERROR_TYPE_LINE,
2862 pn_line_id => rec_interface_line_id.interface_line_id,
2863 pn_source_line_id => rec_interface_line_id.interface_line_id,
2864 pv_err_mess => lv_error_mess,
2865 pv_invalid_value => rec_trx_line_count.TRX_ID
2866 );
2867 record_fnd_log(
2868 pv_fnd_log => lv_return_mess
2869 );
2870
2871 update_line_status(
2872 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2873 pv_import_status => GV_IMPORT_FAILURE,
2874 pv_import_process => GV_PROCESS_VALIDATION
2875 );
2876
2877 update_error_flag(
2878 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2879 pv_err_exist => 'Y'
2880 );
2881
2882 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
2883
2884 END LOOP;
2885
2886 ELSIF (NVL(ln_event_type,-1) = 1) THEN
2887 --In one Transaction , if taxable event is external , the invoice no should be same as each other.
2888 OPEN get_taxable_event(rec_trx_line_count.trx_id);
2889 FETCH get_taxable_event INTO lv_taxable_event;
2890 CLOSE get_taxable_event;
2891
2892
2893 IF(NVL(lv_taxable_event,'#') = GV_TAXABLE_EVENT_EXTERNAL)THEN
2894 ln_vat_exist := 0;
2895 ln_excise_exist := 0;
2896
2897 OPEN chk_vat_inv_no(rec_trx_line_count.trx_id);
2898 FETCH chk_vat_inv_no INTO ln_vat_no_count;
2899 CLOSE chk_vat_inv_no;
2900
2901 OPEN chk_exc_inv_no(rec_trx_line_count.trx_id);
2902 FETCH chk_exc_inv_no INTO ln_excise_no_count;
2903 CLOSE chk_exc_inv_no;
2904
2905
2906 OPEN get_vat_tax_exists_cur(rec_trx_line_count.trx_id);
2907 FETCH get_vat_tax_exists_cur INTO lv_vat_tax_exist;
2908 CLOSE get_vat_tax_exists_cur;
2909
2910 OPEN get_excise_tax_exists_cur(rec_trx_line_count.trx_id);
2911 FETCH get_excise_tax_exists_cur INTO lv_excise_tax_exist;
2912 CLOSE get_excise_tax_exists_cur;
2913
2914
2915
2916 ln_diff_tax := 0;
2917 --Vat tax exist , but vat no is null
2918 IF(nvl(lv_vat_tax_exist, 'N') = 'Y' and NVL(ln_vat_no_count,-1) <= 0)THEN
2919 ln_diff_tax := 1;
2920 lv_error_tax_inv := 'VAT';
2921 END IF;
2922 --Vat tax exist ,but vat no is multiple
2923 IF(nvl(lv_vat_tax_exist, 'N') = 'Y' and NVL(ln_vat_no_count,-1) > 1)THEN
2924 ln_diff_tax := 2;
2925 lv_error_tax_inv := 'VAT';
2926 END IF;
2927 --Vat tax does not exist, but vatno exist.
2928 --For this case, vat_no will be ignored.
2929 /*IF(nvl(lv_vat_tax_exist, 'N') = 'N' and NVL(ln_vat_no_count,-1) > 0 )THEN
2930 ln_diff_tax := 3;
2931 lv_error_tax_inv := 'VAT';
2932 END IF;*/
2933
2934 --The situation of tax exist but invoiceno is null
2935
2936 IF(ln_diff_tax = 1 OR ln_diff_tax = 4)THEN
2937 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should not be null in the transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
2938 lv_error_mess := 'JAI_INVOICE_NUM_MISSING';--'The invoice num of VAT/Excise should not be null in the transaction';
2939
2940 END IF;
2941 --The situation of mutiple invoice no or null.
2942 IF(ln_diff_tax = 2 OR ln_diff_tax = 5)THEN
2943 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should be same as each other in a transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
2944 lv_error_mess := 'JAI_MUTIPLE_INVOICE_NUM';--'Invoice Num should be same as each other in one transaction';
2945
2946 END IF;
2947 --The situation of invoice no should be null.
2948 /*IF(ln_diff_tax = 3 OR ln_diff_tax = 6)THEN
2949 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv;
2950 lv_return_mess := lv_return_mess ||' should according to the existence of '|| lv_error_tax_inv ||' tax With interface_line_id:'||rec_interface_line_id.interface_line_id;
2951 lv_error_mess := 'The invoice num of should according to the existence of tax';
2952 END IF ;*/
2953
2954 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 Begin*/
2955 OPEN chk_st_inv_no(rec_trx_line_count.trx_id);
2956 FETCH chk_st_inv_no INTO ln_st_num_count;
2957 CLOSE chk_st_inv_no;
2958
2959 OPEN get_service_tax_exists_cur(rec_trx_line_count.trx_id);
2960 FETCH get_service_tax_exists_cur INTO lv_service_tax_exist;
2961 CLOSE get_service_tax_exists_cur;
2962 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 End*/
2963
2964 --Handle error for VAT
2965 IF(ln_diff_tax <> 0)THEN
2966
2967 FOR rec_interface_line_id IN get_err_lines_cur(
2968 rec_trx_line_count.import_module,
2969 rec_trx_line_count.trx_id
2970 )
2971 LOOP
2972 --lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice no of '|| lv_error_tax_inv ||' should be same as each other in a transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
2973 log_error(
2974 pv_err_level => GV_ERROR_TYPE_LINE,
2975 pn_line_id => rec_interface_line_id.interface_line_id,
2976 pn_source_line_id => rec_interface_line_id.interface_line_id,
2977 pv_err_mess => lv_error_mess,
2978 pv_invalid_value => rec_trx_line_count.TRX_ID
2979 );
2980 record_fnd_log(
2981 pv_fnd_log => lv_return_mess
2982 );
2983
2984 update_line_status(
2985 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2986 pv_import_status => GV_IMPORT_FAILURE,
2987 pv_import_process => GV_PROCESS_VALIDATION
2988 );
2989
2990 update_error_flag(
2991 pn_interface_line_id => rec_interface_line_id.interface_line_id,
2992 pv_err_exist => 'Y'
2993 );
2994
2995 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
2996
2997 END LOOP;
2998 END IF;
2999
3000 ln_diff_tax := 0;
3001 --Excise tax exist, but excistno is null
3002 IF( nvl(lv_excise_tax_exist, 'N') = 'Y' and NVL(ln_excise_no_count,-1) <= 0 ) THEN
3003 ln_diff_tax := 4;
3004 lv_error_tax_inv := 'EXCISE';
3005 END IF;
3006 --Excise tax exist, but exciseno is multiple.
3007 IF(nvl(lv_excise_tax_exist, 'N') = 'Y' and NVL(ln_excise_no_count,-1) > 1 ) THEN
3008 ln_diff_tax := 5;
3009 lv_error_tax_inv := 'EXCISE';
3010 END IF;
3011 --Excise tax does not exist, but excise no exist.
3012 --For this case, excise_no will be ignored.
3013 /*IF ( nvl(lv_excise_tax_exist, 'N') = 'N' and NVL(ln_excise_no_count,-1) > 0 )THEN
3014 ln_diff_tax := 6;
3015 lv_error_tax_inv := 'EXCISE';
3016 END IF;*/
3017
3018 --The situation of tax exist but invoiceno is null
3019 IF(ln_diff_tax = 1 OR ln_diff_tax = 4)THEN
3020 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should not be null in the transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
3021 lv_error_mess := 'JAI_INVOICE_NUM_MISSING';--'The invoice num of VAT/Excise should not be null in the transaction';
3022 END IF;
3023 --The situation of mutiple invoice no or null.
3024 IF(ln_diff_tax = 2 OR ln_diff_tax = 5)THEN
3025 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should be same as each other in a transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
3026 lv_error_mess := 'JAI_MUTIPLE_INVOICE_NUM';--'Invoice Num should be same as each other in one transaction';
3027 END IF;
3028 --The situation of invoice no should be null.
3029 /*IF(ln_diff_tax = 3 OR ln_diff_tax = 6)THEN
3030 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv;
3031 lv_return_mess := lv_return_mess ||' should according to the existence of '|| lv_error_tax_inv ||' tax With interface_line_id:'||rec_interface_line_id.interface_line_id;
3032 lv_error_mess := 'The invoice num of should according to the existence of tax';
3033 END IF ;*/
3034
3035
3036 --Encounter errors
3037 IF(ln_diff_tax <> 0)THEN
3038
3039 FOR rec_interface_line_id IN get_err_lines_cur(
3040 rec_trx_line_count.import_module,
3041 rec_trx_line_count.trx_id
3042 )
3043 LOOP
3044 --lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice no of '|| lv_error_tax_inv ||' should be same as each other in a transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
3045 log_error(
3046 pv_err_level => GV_ERROR_TYPE_LINE,
3047 pn_line_id => rec_interface_line_id.interface_line_id,
3048 pn_source_line_id => rec_interface_line_id.interface_line_id,
3049 pv_err_mess => lv_error_mess,
3050 pv_invalid_value => rec_trx_line_count.TRX_ID
3051 );
3052 record_fnd_log(
3053 pv_fnd_log => lv_return_mess
3054 );
3055
3056 update_line_status(
3057 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3058 pv_import_status => GV_IMPORT_FAILURE,
3059 pv_import_process => GV_PROCESS_VALIDATION
3060 );
3061
3062 update_error_flag(
3063 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3064 pv_err_exist => 'Y'
3065 );
3066
3067 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
3068
3069 END LOOP;
3070 END IF;
3071
3072 ln_diff_tax := 0;
3073 --Service tax exist , but service num is null
3074 IF(nvl(lv_service_tax_exist, 'N') = 'Y' and NVL(ln_st_num_count,-1) <= 0)THEN
3075 ln_diff_tax := 7;
3076 lv_error_tax_inv := 'SERVICE';
3077 END IF;
3078 --Service tax exist ,but Service num is multiple
3079 IF(nvl(lv_service_tax_exist, 'N') = 'Y' and NVL(ln_st_num_count,-1) > 1)THEN
3080 ln_diff_tax := 8;
3081 lv_error_tax_inv := 'SERVICE';
3082 END IF;
3083
3084
3085 IF(ln_diff_tax = 7)THEN
3086 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should not be null in the transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
3087 lv_error_mess := 'JAI_INVOICE_NUM_MISSING';--'The invoice num of VAT/Excise should not be null in the transaction';
3088
3089 END IF;
3090 --The situation of mutiple invoice no or null.
3091 IF(ln_diff_tax = 8)THEN
3092 lv_return_mess := 'VALIDATION in validate_integrate_trx : The invoice num of '|| lv_error_tax_inv ||' should be same as each other in a transaction With interface_line_id:'||rec_interface_line_id.interface_line_id;
3093 lv_error_mess := 'JAI_MUTIPLE_INVOICE_NUM';--'Invoice Num should be same as each other in one transaction';
3094
3095 END IF;
3096 --The situation of invoice no should be null.
3097
3098 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 End*/
3099 --Handle error for Service
3100 IF(ln_diff_tax <> 0)THEN
3101
3102 FOR rec_interface_line_id IN get_err_lines_cur(
3103 rec_trx_line_count.import_module,
3104 rec_trx_line_count.trx_id
3105 )
3106 LOOP
3107 log_error(
3108 pv_err_level => GV_ERROR_TYPE_LINE,
3109 pn_line_id => rec_interface_line_id.interface_line_id,
3110 pn_source_line_id => rec_interface_line_id.interface_line_id,
3111 pv_err_mess => lv_error_mess,
3112 pv_invalid_value => rec_trx_line_count.TRX_ID
3113 );
3114 record_fnd_log(
3115 pv_fnd_log => lv_return_mess
3116 );
3117
3118 update_line_status(
3119 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3120 pv_import_status => GV_IMPORT_FAILURE,
3121 pv_import_process => GV_PROCESS_VALIDATION
3122 );
3123
3124 update_error_flag(
3125 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3126 pv_err_exist => 'Y'
3127 );
3128
3129 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
3130
3131 END LOOP;
3132 END IF;
3133 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 End*/
3134
3135 END IF;
3136
3137 END IF;
3138
3139 END LOOP;
3140
3141 --validate one transaction lines are all validate successfully
3142 FOR rec_trx_line_count IN get_trx_line_count_cur
3143 LOOP
3144 --Added by zhiwei for Bug#12630077 on 20110608 begin
3145 ------------------------------------------------------------------------
3146
3147 FOR four_combination in get_four_comb_for_parent(
3148 rec_trx_line_count.import_module,
3149 rec_trx_line_count.trx_id
3150 )
3151 LOOP
3152 lv_import_module := four_combination.import_module;
3153 ln_party_id := four_combination.party_id;
3154 ln_party_site_id := four_combination.party_site_id;
3155 lv_transaction_num := four_combination.transaction_num;
3156 END LOOP;
3157
3158 OPEN get_parent_lines_count(
3159 cv_import_module => lv_import_module,
3160 cn_party_id => ln_party_id,
3161 cn_party_site_id => ln_party_site_id,
3162 cv_transaction_num => lv_transaction_num
3163 );
3164 FETCH get_parent_lines_count INTO ln_lines_count_parent;
3165 CLOSE get_parent_lines_count;
3166
3167 ------------------------------------------------------------------------
3168 --Added by zhiwei for Bug#12630077 on 20110608 end
3169
3170 --AR
3171 IF(rec_trx_line_count.IMPORT_MODULE = JAI_CONSTANTS.SOURCE_AR)THEN
3172
3173
3174 OPEN get_ar_lines_count_cur(rec_trx_line_count.trx_id);
3175 FETCH get_ar_lines_count_cur INTO ln_line_count;
3176 CLOSE get_ar_lines_count_cur;
3177
3178 OPEN get_lines_count(
3179 rec_trx_line_count.import_module,
3180 rec_trx_line_count.trx_id
3181 );
3182 FETCH get_lines_count INTO ln_complete_count;
3183 CLOSE get_lines_count;
3184
3185
3186
3187 IF(NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1)
3188 OR
3189 NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3190 --Added by zhiwei for Bug#12630077 on 20110608 begin
3191 -----------------------------------------------------------
3192 OR
3193 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3194 -----------------------------------------------------------
3195 --Added by zhiwei for Bug#12630077 on 20110608 end
3196 )THEN
3197
3198 IF (NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1))THEN
3199 lv_determine_flag := 'TRX';
3200 END IF;
3201 IF (NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3202 --Added by zhiwei for Bug#12630077 on 20110608 begin
3203 -----------------------------------------------------------
3204 OR
3205 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3206 -----------------------------------------------------------
3207 --Added by zhiwei for Bug#12630077 on 20110608 end
3208 ) THEN
3209 lv_determine_flag := 'INT';
3210 END IF;
3211 IF( NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1)
3212 AND
3213 (-- Added by zhiwei for Bug#12630077 on 20110608
3214 NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3215 --Added by zhiwei for Bug#12630077 on 20110608 begin
3216 -----------------------------------------------------------
3217 OR
3218 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3219 )
3220 -----------------------------------------------------------
3221 --Added by zhiwei for Bug#12630077 on 20110608 end
3222 )THEN
3223 lv_determine_flag := 'TRX||INT';
3224 END IF;
3225 --Get lines according to the trx id ,update status and fnd log
3226 FOR rec_interface_line_id IN get_err_lines_cur(
3227 rec_trx_line_count.import_module,
3228 rec_trx_line_count.trx_id
3229 )
3230 LOOP
3231 if( nvl(rec_interface_line_id.error_flag,'N') = 'N' )then
3232 lv_return_mess := 'VALIDATION in validate_integrate_trx : Internal trx id must be integrated with (';
3233 lv_return_mess := lv_return_mess || ln_line_count ||') lines after validation With interface_line_id:'||rec_interface_line_id.interface_line_id||' with '||lv_determine_flag;
3234 lv_error_mess := 'JAI_LINE_HOLD';--'This line is hold by other error transaction lines.';
3235 log_error(
3236 pv_err_level => GV_ERROR_TYPE_LINE,
3237 pn_line_id => rec_interface_line_id.interface_line_id,
3238 pn_source_line_id => rec_interface_line_id.interface_line_id,
3239 pv_err_mess => lv_error_mess,
3240 pv_invalid_value => rec_trx_line_count.TRX_ID
3241 );
3242 record_fnd_log(
3243 pv_fnd_log => lv_return_mess
3244 );
3245
3246 update_line_status(
3247 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3248 pv_import_status => GV_IMPORT_FAILURE,
3249 pv_import_process => GV_PROCESS_VALIDATION
3250 );
3251
3252 update_error_flag(
3253 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3254 pv_err_exist => 'Y'
3255 );
3256 end if;
3257 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
3258
3259 END LOOP;
3260 END IF;
3261 END IF;--AR
3262
3263 --AP
3264 IF(rec_trx_line_count.IMPORT_MODULE = JAI_CONSTANTS.SOURCE_AP)THEN
3265 OPEN get_ap_lines_count_cur(rec_trx_line_count.trx_id);
3266 FETCH get_ap_lines_count_cur INTO ln_line_count;
3267 CLOSE get_ap_lines_count_cur;
3268
3269 OPEN get_lines_count(
3270 rec_trx_line_count.import_module,
3271 rec_trx_line_count.trx_id
3272 );
3273 FETCH get_lines_count INTO ln_complete_count;
3274 CLOSE get_lines_count;
3275
3276 IF(NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1)
3277 OR
3278 NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3279 --Added by zhiwei for Bug#12630077 on 20110608 begin
3280 -----------------------------------------------------------
3281 OR
3282 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3283 -----------------------------------------------------------
3284 --Added by zhiwei for Bug#12630077 on 20110608 end
3285 )THEN
3286
3287
3288 IF (NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1))THEN
3289 lv_determine_flag := 'TRX';
3290 END IF;
3291 IF (NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3292 --Added by zhiwei for Bug#12630077 on 20110608 begin
3293 -----------------------------------------------------------
3294 OR
3295 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3296 -----------------------------------------------------------
3297 --Added by zhiwei for Bug#12630077 on 20110608 end
3298 ) THEN
3299
3300 lv_determine_flag := 'INT';
3301 END IF;
3302 IF( NVL(ln_line_count,-1) < NVL(rec_trx_line_count.line_count,-1)
3303 AND
3304 (--Added by zhiwei for Bug#12630077 on 20110608
3305 NVL(ln_complete_count,-1) <> NVL(rec_trx_line_count.line_count,-1)
3306 --Added by zhiwei for Bug#12630077 on 20110608 begin
3307 -----------------------------------------------------------
3308 OR
3309 NVL(ln_lines_count_parent,-1) <> NVL(rec_trx_line_count.line_count,-1)
3310 )
3311 -----------------------------------------------------------
3312 --Added by zhiwei for Bug#12630077 on 20110608 end
3313 )THEN
3314 lv_determine_flag := 'TRX||INT';
3315 END IF;
3316
3317 --LOG ERROR
3318 FOR rec_interface_line_id IN get_err_lines_cur(
3319 rec_trx_line_count.import_module,
3320 rec_trx_line_count.trx_id
3321 )
3322 LOOP
3323 if( nvl(rec_interface_line_id.error_flag,'N') = 'N' )then
3324 lv_return_mess := 'VALIDATION in validate_integrate_trx : Internal trx id must be integrated with (';
3325 lv_return_mess := lv_return_mess || ln_line_count ||') lines after validation With interface_line_id:'||rec_interface_line_id.interface_line_id||' with '||lv_determine_flag;
3326 lv_error_mess := 'JAI_LINE_HOLD';--'This line is hold by other error transaction lines.';
3327 log_error(
3328 pv_err_level => GV_ERROR_TYPE_LINE,
3329 pn_line_id => rec_interface_line_id.interface_line_id,
3330 pn_source_line_id => rec_interface_line_id.interface_line_id,
3331 pv_err_mess => lv_error_mess,
3332 pv_invalid_value => rec_trx_line_count.TRX_ID
3333 );
3334 record_fnd_log(
3335 pv_fnd_log => lv_return_mess
3336 );
3337
3338 update_line_status(
3339 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3340 pv_import_status => GV_IMPORT_FAILURE,
3341 pv_import_process => GV_PROCESS_VALIDATION
3342 );
3343
3344 update_error_flag(
3345 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3346 pv_err_exist => 'Y'
3347 );
3348 end if;
3349 fnd_file.put_line(FND_FILE.LOG,'INTERFACE LINE:'||rec_interface_line_id.interface_line_id||'INTEGRATE VALIDATION COMPLETED WITH ERROR.');
3350
3351 END LOOP;
3352 END IF;
3353 END IF;--AP
3354
3355 END LOOP;
3356
3357
3358
3359 EXCEPTION
3360 WHEN OTHERS THEN
3361 lv_return_mess := 'VALIDATION Exception with SQLERR '||SUBSTR(SQLERRM,1,230) ||' in validate_integrate_trx With interface_line_id:'||rec_interface_line_id.interface_line_id;
3362 lv_error_mess := 'JAI_LINE_HOLD';--'This line is hold by other error transaction lines.';
3363 log_error(
3364 pv_err_level => GV_ERROR_TYPE_LINE,
3365 pn_line_id => rec_interface_line_id.interface_line_id,
3366 pn_source_line_id => rec_interface_line_id.interface_line_id,
3367 pv_err_mess => lv_error_mess,
3368 pv_invalid_value => null
3369 );
3370 record_fnd_log(
3371 pv_fnd_log => lv_return_mess
3372 );
3373 update_line_status(
3374 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3375 pv_import_status => GV_IMPORT_FAILURE,
3376 pv_import_process => GV_PROCESS_VALIDATION
3377 );
3378
3379 update_error_flag(
3380 pn_interface_line_id => rec_interface_line_id.interface_line_id,
3381 pv_err_exist => 'Y'
3382 );
3383
3384 END validate_integrate_trx;
3385
3386 /*
3387 * Check if AR/AP transactions are created by importing or manuall created in the form.
3388 * If it is created from the form, error message will be logged.
3389 */
3390 PROCEDURE validate_import_trx(
3391 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
3392 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
3393 pn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
3394 pn_trx_line_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE,
3395 xn_err_flag IN OUT NOCOPY NUMBER
3396 ) IS
3397
3398 --Variable define here
3399 lv_return_mess VARCHAR2(1000);
3400 lv_error_mess VARCHAR2(1000);
3401 lv_import_flag VARCHAR2(1);
3402 --Main block
3403 BEGIN
3404 IF pv_import_module = 'AP' THEN
3405 SELECT 'Y'
3406 INTO lv_import_flag
3407 FROM dual
3408 WHERE EXISTS (SELECT 1
3409 FROM ap_invoice_lines_all
3410 WHERE invoice_id = pn_trx_id
3411 AND line_number = pn_trx_line_id
3412 AND upper(reference_key3) = 'OFI TAX IMPORT'
3413 );
3414
3415 ELSIF pv_import_module = 'AR' THEN
3416 /*--Commented by zhiwei for Bug#12565170 begin
3417 SELECT 'Y'
3418 INTO lv_import_flag
3419 FROM dual
3420 WHERE EXISTS (SELECT 1
3421 FROM ra_customer_trx_lines_all
3422 WHERE customer_trx_id = pn_trx_id
3423 AND customer_trx_line_id = pn_trx_line_id
3424 --AND upper(interface_line_context) = 'OFI TAX IMPORT' --DFF
3425 AND upper(global_attribute_category) = 'JG.IN.ARXTWMAI.OFI TAX IMPORT' --GDF
3426 );*/--Commented by zhiwei for bug#12565170 end
3427
3428
3429 --Added by zhiwei for Bug#12565170 begin
3430 ---------------------------------------------------------------
3431 SELECT 'Y'
3432 INTO lv_import_flag
3433 FROM dual
3434 WHERE EXISTS (SELECT 1
3435 FROM ra_customer_trx_all head, ra_customer_trx_lines_all line
3436 WHERE line.customer_trx_id = pn_trx_id
3437 AND line.customer_trx_line_id = pn_trx_line_id
3438 AND head.customer_trx_id = line.customer_trx_id
3439 AND head.createD_from = 'RAXTRX'
3440 AND upper(line.global_attribute_category) = 'JG.IN.ARXTWMAI.OFI TAX IMPORT' --GDF
3441 AND line.global_attribute19 is not null
3442 AND line.global_attribute20 is not null
3443 );
3444 ---------------------------------------------------------------
3445 --Added by zhiwei for Bug#12565170 end
3446 END IF;
3447 IF nvl(lv_import_flag, 'N') = 'N' THEN
3448 xn_err_flag := 1;
3449 lv_return_mess := 'VALIDATION in validate_import_trx : Only the imported transactions in AR/AP are supported to import the taxes. interface_line_id:'||pn_interface_line_id;
3450 lv_error_mess := 'JAI_MANUALLY_TRANS';--'Taxes can not be inserted to manually created AR transaction/AP invoice;
3451 log_error(
3452 pv_err_level => GV_ERROR_TYPE_LINE,
3453 pn_line_id => pn_interface_line_id,
3454 pn_source_line_id => pn_interface_line_id,
3455 pv_err_mess => lv_error_mess,
3456 pv_invalid_value => pn_trx_id
3457 );
3458 record_fnd_log( pv_fnd_log => lv_return_mess );
3459 END IF;
3460 EXCEPTION
3461 WHEN OTHERS THEN
3462 xn_err_flag := 1;
3463 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_import_trx With interface_line_id:'||pn_interface_line_id;
3464 lv_error_mess := 'JAI_MANUALLY_TRANS';--Taxes can not be inserted to manually created AR transaction/AP invoice;
3465 log_error(
3466 pv_err_level => GV_ERROR_TYPE_LINE,
3467 pn_line_id => pn_interface_line_id,
3468 pn_source_line_id => pn_interface_line_id,
3469 pv_err_mess => lv_error_mess,
3470 pv_invalid_value => pn_trx_id
3471 );
3472 record_fnd_log( pv_fnd_log => lv_return_mess );
3473
3474 END validate_import_trx;
3475
3476 /*
3477 ||Check the trx_id get by trx num and trx line num should be same as the trx id is gived by customer
3478 */
3479 PROCEDURE validate_trx_id_equals(
3480 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
3481 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
3482 xn_err_flag IN OUT NOCOPY NUMBER
3483 )IS
3484
3485 --Variable define here
3486 lv_return_mess VARCHAR2(1000);
3487 lv_error_mess VARCHAR2(1000);
3488 --Main block
3489 BEGIN
3490
3491 IF( pr_interface_lines.transaction_id = pn_trx_id)THEN
3492 NULL;
3493 ELSE
3494 xn_err_flag := 1;
3495 lv_return_mess := 'VALIDATION in validate_trx_id_equals : Transaction id given by customer should equals the transaction id got from transaction table With interface_line_id:'||pr_interface_lines.interface_line_id;
3496 lv_error_mess := 'JAI_TRANS_ID_ERR';--'Invalid Trans ID, cannot inset tax to Transaction '||pr_interface_lines.transaction_id;
3497 log_error(
3498 pv_err_level => GV_ERROR_TYPE_LINE,
3499 pn_line_id => pr_interface_lines.interface_line_id,
3500 pn_source_line_id => pr_interface_lines.interface_line_id,
3501 pv_err_mess => lv_error_mess,
3502 pv_invalid_value => pr_interface_lines.transaction_id
3503 );
3504 record_fnd_log(
3505 pv_fnd_log => lv_return_mess
3506 );
3507 END IF;
3508 EXCEPTION
3509 WHEN OTHERS THEN
3510 xn_err_flag := 1;
3511 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_trx_id_equals With interface_line_id:'||pr_interface_lines.interface_line_id;
3512 lv_error_mess := 'JAI_TRANS_ID_ERR';--'Invalid Trans ID, cannot inset tax to Transaction '||pr_interface_lines.transaction_id;
3513 log_error(
3514 pv_err_level => GV_ERROR_TYPE_LINE,
3515 pn_line_id => pr_interface_lines.interface_line_id,
3516 pn_source_line_id => pr_interface_lines.interface_line_id,
3517 pv_err_mess => lv_error_mess,
3518 pv_invalid_value => pr_interface_lines.transaction_id
3519 );
3520
3521 record_fnd_log(
3522 pv_fnd_log => lv_return_mess
3523 );
3524 END validate_trx_id_equals;
3525
3526 --==========================================================================
3527 -- PROCEDURE NAME:
3528 --
3529 -- PROCEDURE Get_Invoice_Header_Infor Private
3530 --
3531 -- DESCRIPTION:
3532 --
3533 -- For a given invoice id RETURN vendor id,vendor site id, currency code
3534 -- and exchange rate
3535 --
3536 -- PARAMETERS:
3537 -- In: pn_invoice_id NUMBER invoice id
3538 --
3539 --
3540 -- Out: xn_vendor_id number vendor id
3541 -- xn_vendor_site_id number vendor site id
3542 -- xv_currency_code varchar2 currency code
3543 -- xn_exchange_rate number exchange rate
3544 -- xn_batch_id number xn_batch_id
3545 --
3546 -- PRE-COND : invoice exists
3547 -- EXCEPTIONS:
3548 --
3549 --
3550 --========================================================================
3551 PROCEDURE Get_Invoice_Header_Infor
3552 ( pn_invoice_id IN NUMBER
3553 , xn_vendor_id OUT NOCOPY NUMBER
3554 , xn_vendor_site_id OUT NOCOPY NUMBER
3555 , xv_currency_code OUT NOCOPY VARCHAR2
3556 , xn_exchange_rate OUT NOCOPY NUMBER
3557 , xn_batch_id OUT NOCOPY NUMBER
3558 )
3559 IS
3560 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
3561 ln_proc_level NUMBER := FND_LOG.level_procedure;
3562 lv_proc_name VARCHAR2 (100) := 'Get_Invoice_Header_Infor';
3563
3564 CURSOR Get_Invoice_Header_Infor_cur IS
3565 SELECT
3566 vendor_id
3567 , vendor_site_id
3568 , invoice_currency_code
3569 , exchange_rate
3570 , batch_id
3571 FROM
3572 ap_invoices_all
3573 WHERE invoice_id = pn_invoice_id;
3574 BEGIN
3575 --log for debug
3576 IF ( ln_proc_level >= ln_dbg_level)
3577 THEN
3578 FND_LOG.STRING ( ln_proc_level
3579 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
3580 , 'Enter procedure'
3581 );
3582 FND_LOG.STRING ( ln_proc_level
3583 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3584 , 'pn_invoice_id ' || pn_invoice_id
3585 );
3586 END IF; --( ln_proc_level >= ln_dbg_level) ;
3587
3588 OPEN Get_Invoice_Header_Infor_cur ;
3589 FETCH Get_Invoice_Header_Infor_cur
3590 INTO
3591 xn_vendor_id
3592 , xn_vendor_site_id
3593 , xv_currency_code
3594 , xn_exchange_rate
3595 , xn_batch_id ;
3596 CLOSE Get_Invoice_Header_Infor_cur ;
3597
3598 --log for debug
3599 IF ( ln_proc_level >= ln_dbg_level)
3600 THEN
3601 FND_LOG.STRING ( ln_proc_level
3602 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3603 , 'xn_vendor_id ' || xn_vendor_id
3604 );
3605 FND_LOG.STRING ( ln_proc_level
3606 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3607 , 'xn_vendor_site_id ' || xn_vendor_site_id
3608 );
3609 FND_LOG.STRING ( ln_proc_level
3610 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3611 , 'xv_currency_code ' || xv_currency_code
3612 );
3613 FND_LOG.STRING ( ln_proc_level
3614 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3615 , 'xn_exchange_rate ' || xn_exchange_rate
3616 );
3617 FND_LOG.STRING ( ln_proc_level
3618 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3619 , 'xn_batch_id ' || xn_batch_id
3620 );
3621 FND_LOG.STRING ( ln_proc_level
3622 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
3623 , 'Exit procedure'
3624 );
3625 END IF; --( ln_proc_level >= ln_dbg_level )
3626 EXCEPTION
3627 WHEN OTHERS THEN
3628 IF ( ln_proc_level >= ln_dbg_level)
3629 THEN
3630 FND_LOG.STRING ( ln_proc_level
3631 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
3632 || '. Other_Exception '
3633 , SQLCODE || ':' || SQLERRM
3634 );
3635 END IF; --( ln_proc_level >= ln_dbg_level) ;
3636 RAISE;
3637 END Get_Invoice_Header_Infor;
3638
3639 --==========================================================================
3640 -- PROCEDURE NAME:
3641 --
3642 -- Get_Tax_Cat_Serv_Type Private
3643 --
3644 -- DESCRIPTION:
3645 -- Get the tax category and service type code for a given vendor site
3646 -- and vendor id
3647 --
3648 --
3649 -- PARAMETERS:
3650 -- In: pn_invoice_id NUMBER invoice id
3651 -- pn_vendor_site_id NUMBER vendor site id
3652 --
3653 -- Out: x_tax_category_id NUMBER tax category id
3654 -- x_service_type_code NUMBER service type code
3655 --
3656 -- PRE-COND : vendor exists
3657 -- EXCEPTIONS:
3658 --
3659 --===========================================================================
3660 PROCEDURE Get_Tax_Cat_Serv_Type
3661 ( pn_vendor_id IN NUMBER
3662 , pn_vendor_site_id IN NUMBER
3663 , xn_tax_category_id OUT NOCOPY NUMBER
3664 , xv_service_type_code OUT NOCOPY VARCHAR2
3665 )
3666 IS
3667 CURSOR get_tax_service_cur IS
3668 SELECT
3669 tax_category_id, service_type_code
3670 FROM
3671 jai_cmn_vendor_sites
3672 WHERE NVL (vendor_site_id, 0) = pn_vendor_site_id
3673 AND vendor_id = pn_vendor_id;
3674
3675 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
3676 ln_proc_level NUMBER := FND_LOG.level_procedure;
3677 lv_proc_name VARCHAR2 (100) := 'Get_Tax_Cat_Serv_Type';
3678 BEGIN
3679 --log for debug
3680 IF ( ln_proc_level >= ln_dbg_level)
3681 THEN
3682 FND_LOG.STRING ( ln_proc_level
3683 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
3684 , 'Enter procedure'
3685 );
3686 FND_LOG.STRING ( ln_proc_level
3687 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3688 , 'pn_vendor_id ' || pn_vendor_id
3689 );
3690 FND_LOG.STRING ( ln_proc_level
3691 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3692 , 'pn_vendor_site_id ' || pn_vendor_site_id
3693 );
3694 END IF;
3695
3696 OPEN get_tax_service_cur;
3697
3698 FETCH get_tax_service_cur
3699 INTO
3700 xn_tax_category_id
3701 , xv_service_type_code;
3702 CLOSE get_tax_service_cur;
3703
3704 IF ( ln_proc_level >= ln_dbg_level)
3705 THEN
3706 FND_LOG.STRING ( ln_proc_level
3707 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3708 , 'xn_tax_category_id ' || xn_tax_category_id
3709 );
3710 FND_LOG.STRING ( ln_proc_level
3711 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
3712 , 'xv_service_type_code ' || xv_service_type_code
3713 );
3714 FND_LOG.STRING ( ln_proc_level
3715 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
3716 , 'Exit procedure'
3717 );
3718 END IF; --( ln_proc_level >= ln_dbg_level )
3719 EXCEPTION
3720 WHEN OTHERS THEN
3721 IF ( ln_proc_level >= ln_dbg_level)
3722 THEN
3723 FND_LOG.STRING ( ln_proc_level
3724 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
3725 || '. Other_Exception '
3726 ,SQLCODE || ':' || SQLERRM
3727 );
3728 END IF; --( ln_proc_level >= ln_dbg_level) ;
3729 RAISE;
3730 END Get_Tax_Cat_Serv_Type;
3731
3732
3733 --Added by zhiwei for Bug#12583958 begin on 20110608
3734 -------------------------------------------
3735 PROCEDURE get_cust_default_taxes (
3736 p_org_id NUMBER,
3737 p_customer_id NUMBER,
3738 p_ship_to_site_use_id NUMBER,
3739 p_inventory_item_id IN NUMBER,
3740 p_header_id NUMBER,
3741 p_line_id NUMBER,
3742 p_tax_category_id IN OUT NOCOPY NUMBER
3743 )
3744 IS
3745 v_address_id NUMBER;
3746 v_tax_category_list VARCHAR2(30);
3747 v_tax_category_id NUMBER;
3748
3749
3750 -- to get address_id
3751 CURSOR address_cur(p_ship_to_site_use_id IN NUMBER) IS
3752 SELECT cust_acct_site_id address_id
3753 FROM hz_cust_site_uses_all A -- Removed ra_site_uses_all from Bug# 4434287
3754 WHERE A.site_use_id = p_ship_to_site_use_id;
3755
3756 -- to get tax_category_list
3757 CURSOR tax_catg_list_cur(p_customer_id IN NUMBER, p_address_id IN NUMBER DEFAULT 0) IS
3758 SELECT tax_category_list
3759 FROM JAI_CMN_CUS_ADDRESSES a
3760 WHERE A.customer_id = p_customer_id
3761 AND A.address_id = p_address_id;
3762
3763 -- to get tax_category_id
3764 CURSOR tax_catg_id_cur(p_tax_category_list IN VARCHAR2, p_inventory_item_id IN NUMBER) IS
3765 SELECT tax_category_id
3766 FROM JAI_INV_ITM_TAXCTG_DTLS a
3767 WHERE a.tax_category_list = p_tax_category_list
3768 AND a.inventory_item_id = p_inventory_item_id;
3769
3770 BEGIN
3771
3772 OPEN address_cur(p_ship_to_site_use_id);
3773 FETCH address_cur INTO v_address_id;
3774 CLOSE address_cur;
3775
3776 IF p_customer_id IS NOT NULL AND v_address_id IS NOT NULL THEN
3777 OPEN tax_catg_list_cur(p_customer_id , v_address_id);
3778 FETCH tax_catg_list_cur INTO v_tax_category_list;
3779 CLOSE tax_catg_list_cur;
3780 END IF;
3781
3782 IF v_tax_category_list IS NULL THEN
3783 OPEN tax_catg_list_cur(p_customer_id,0);
3784 FETCH tax_catg_list_cur INTO v_tax_category_list;
3785 CLOSE tax_catg_list_cur;
3786 END IF;
3787
3788 IF v_tax_category_list IS NOT NULL THEN
3789 OPEN tax_catg_id_cur(v_tax_category_list, p_inventory_item_id);
3790 FETCH tax_catg_id_cur INTO v_tax_category_id;
3791 CLOSE tax_catg_id_cur;
3792 END IF;
3793
3794 p_tax_category_id := v_tax_category_id;
3795
3796 END get_cust_default_taxes;
3797
3798
3799 -------------------------------------------
3800 --Added by zhiwei for Bug#12583958 end on 20110608
3801
3802 /*
3803 || Get Default Tax Category for AP/AR
3804 */
3805 PROCEDURE get_default_tax_cate_id(
3806 pn_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
3807 pn_internal_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
3808 pn_internal_trx_line_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE,
3809 xn_tax_category_id OUT NOCOPY NUMBER
3810 )IS
3811 --Cursor define here
3812 CURSOR bind_cur(cn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE)
3813 IS
3814 SELECT A.org_id,A.bill_to_customer_id,NVL(A.bill_to_site_use_id,0)
3815 FROM RA_CUSTOMER_TRX_ALL A
3816 WHERE customer_trx_id = cn_customer_trx_id;
3817
3818 CURSOR organization_cur(cn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE)
3819 IS
3820 SELECT organization_id, location_id
3821 FROM JAI_AR_TRXS
3822 WHERE customer_trx_id = cn_customer_trx_id;
3823
3824 Cursor address_cur(cn_ship_to_site_use_id IN Number) IS
3825 SELECT cust_acct_site_id address_id
3826 FROM hz_cust_site_uses_all A
3827 WHERE A.site_use_id = cn_ship_to_site_use_id;
3828
3829 CURSOR CREATED_FROM_CUR(cn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE)
3830 IS
3831 SELECT created_from , trx_date
3832 FROM ra_customer_trx_all
3833 WHERE customer_trx_id = cn_customer_trx_id;
3834
3835 CURSOR get_inventory_item_id(cn_customer_trx_line_id IN RA_CUSTOMER_TRX_LINES_ALL.CUSTOMER_TRX_LINE_ID%TYPE)
3836 IS
3837 SELECT
3838 inventory_item_id
3839 FROM RA_CUSTOMER_TRX_LINES_ALL
3840 WHERE CUSTOMER_TRX_LINE_ID = cn_customer_trx_line_id;
3841 --Variable define here
3842 ln_tax_category_id NUMBER;
3843 lv_enable_gst_flag varchar2(5);
3844 --FOR AR
3845 ln_org_id NUMBER;
3846 ln_customer_id NUMBER;
3847 ln_bill_to_site_use_id NUMBER;
3848 ln_organization_id NUMBER;
3849 ln_location_id NUMBER;
3850 ln_address_id NUMBER;
3851 ln_inventory_item_id NUMBER;
3852 lv_created_from Varchar2(30);
3853 ld_trx_date RA_CUSTOMER_TRX_ALL.TRX_DATE%TYPE;
3854
3855
3856 --FOR AP
3857 ln_vendor_id NUMBER;
3858 ln_vendor_site_id NUMBER;
3859 lv_currency_code VARCHAR2 (15);
3860 ln_exchange_rate NUMBER;
3861 ln_batch_id NUMBER;
3862 lv_service_type_code VARCHAR2 (30);
3863
3864 --Main block
3865 BEGIN
3866
3867 IF(pn_import_module = JAI_CONSTANTS.SOURCE_AR)THEN
3868
3869 lv_enable_gst_flag := 'N';--JAI_GST_GENERAL_PKG.IS_GST_ENABLED;
3870
3871 OPEN bind_cur(pn_internal_trx_id);
3872 FETCH bind_cur INTO ln_org_id, ln_customer_id,ln_bill_to_site_use_id ;
3873 CLOSE bind_cur;
3874
3875 OPEN organization_cur(pn_internal_trx_id);
3876 FETCH organization_cur INTO ln_organization_id, ln_location_id;
3877 CLOSE organization_cur;
3878
3879 OPEN address_cur(ln_bill_to_site_use_id);
3880 FETCH address_cur INTO ln_address_id;
3881 CLOSE address_cur;
3882
3883 OPEN get_inventory_item_id(pn_internal_trx_line_id);
3884 FETCH get_inventory_item_id INTO ln_inventory_item_id;
3885 CLOSE get_inventory_item_id;
3886
3887 IF nvl(lv_enable_gst_flag,'N') = 'N' THEN
3888
3889 IF ln_customer_id IS NOT NULL AND ln_address_id IS NOT NULL THEN
3890
3891 --jai_cmn_tax_defaultation_pkg.ja_in_cust_default_taxes(--Commented by zhiwei for Bug#12583958 on 20110608
3892 get_cust_default_taxes(--Added by zhiwei for Bug#Bug#12583958 on 20110608
3893 ln_organization_id ,
3894 ln_customer_id,
3895 ln_bill_to_site_use_id ,
3896 ln_inventory_item_id ,
3897 pn_internal_trx_id ,
3898 pn_internal_trx_line_id ,
3899 ln_tax_category_id
3900 );
3901
3902 /* --Commented by zhiwei for Bug#Bug#12583958 begin on 20110608
3903 ELSE
3904
3905 jai_cmn_tax_defaultation_pkg.ja_in_org_default_taxes(
3906 ln_organization_id ,
3907 ln_inventory_item_id ,
3908 ln_tax_category_id
3909 );
3910 */--Commented by zhiwei for Bug#Bug#12583958 end on 20110608
3911 END IF;
3912
3913 ELSE
3914
3915 OPEN CREATED_FROM_CUR(pn_internal_trx_id);
3916 FETCH CREATED_FROM_CUR INTO lv_created_from, ld_trx_date;
3917 CLOSE CREATED_FROM_CUR;
3918
3919 IF ln_customer_id IS NOT NULL THEN
3920 jai_gst_tax_defaultation_pkg.jai_gst_cust_default_taxes(
3921 pn_organization_id => ln_organization_id ,
3922 pn_location_id => ln_location_id,
3923 pn_customer_id => ln_customer_id,
3924 pn_ship_to_site_use_id => ln_bill_to_site_use_id ,
3925 pn_inventory_item_id => ln_inventory_item_id ,
3926 pd_transaction_date => ld_trx_date,
3927 pn_tax_category_id => ln_tax_category_id
3928 );
3929 END IF;
3930 END IF;
3931 --FOR AP
3932 ELSE
3933 IF (pn_import_module = JAI_CONSTANTS.SOURCE_AP) THEN
3934
3935 Get_Invoice_Header_Infor (
3936 pn_internal_trx_id--ln_invoice_id
3937 , ln_vendor_id
3938 , ln_vendor_site_id
3939 , lv_currency_code
3940 , ln_exchange_rate
3941 , ln_batch_id
3942 );
3943 Get_Tax_Cat_Serv_Type (
3944 pn_vendor_id => ln_vendor_id
3945 , pn_vendor_site_id => ln_vendor_site_id
3946 , xn_tax_category_id => ln_tax_category_id
3947 , xv_service_type_code => lv_service_type_code
3948 );
3949
3950 END IF;
3951
3952 END IF;
3953 --Assign to the parameter xn_tax_category_id for output.
3954 xn_tax_category_id := ln_tax_category_id;
3955
3956 END get_default_tax_cate_id;
3957
3958 /*
3959 || Get tax type code by Tax id
3960 */
3961 FUNCTION get_tax_type_code(
3962 pn_tax_id IN NUMBER
3963 )RETURN VARCHAR2
3964 IS
3965 --Cursor define here
3966 CURSOR c_get_tax_type_code(pn_tax_id IN NUMBER) IS
3967 SELECT tax_type
3968 FROM jai_cmn_taxes_all
3969 WHERE tax_id = pn_tax_id;
3970
3971 --Variable define here
3972 ln_tax_type_code jai_cmn_taxes_all.tax_type%TYPE;
3973 v_debug char(1);
3974
3975 --Main block
3976 BEGIN
3977
3978 v_debug := jai_constants.NO;
3979
3980 OPEN c_get_tax_type_code(pn_tax_id);
3981 FETCH c_get_tax_type_code INTO ln_tax_type_code;
3982 CLOSE c_get_tax_type_code;
3983
3984 IF NVL(ln_tax_type_code,'N')='N' THEN
3985 IF v_debug = 'Y' THEN
3986 fnd_file.put_line(fnd_file.log,' Can not get tax type code by tax id ' || pn_tax_id);
3987 END IF;
3988 END IF;
3989
3990 RETURN ln_tax_type_code;
3991
3992 END get_tax_type_code;
3993
3994
3995
3996
3997 /*
3998 || Get trx_id and trx_line_id by trx_num and trx_line_num
3999 */
4000 PROCEDURE get_trx_id_info(
4001 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
4002 pv_transaction_num IN JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE,
4003 pn_transaction_line_num IN JAI_INTERFACE_LINES_ALL.TRANSACTION_LINE_NUM%TYPE,
4004 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
4005 pn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
4006 pn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE,
4007 xn_trx_id OUT NOCOPY NUMBER,
4008 xn_trx_line_id OUT NOCOPY NUMBER,
4009 xn_err_flag IN OUT NOCOPY NUMBER
4010 )
4011 IS
4012
4013 --Cursor define here
4014 CURSOR get_trx_info_ar_cur
4015 IS
4016 SELECT
4017 customer_trx_id,customer_trx_line_id,
4018 global_attribute19 transaction_id,
4019 global_attribute20 transaction_line_id
4020 FROM ra_customer_trx_lines_all
4021 WHERE 1=1
4022 AND line_type = 'LINE'
4023 --AND upper(interface_line_context) = 'OFI TAX IMPORT' --DFF
4024 AND upper(global_attribute_category) = 'JG.IN.ARXTWMAI.OFI TAX IMPORT' --GDF
4025 AND global_attribute19 = pv_transaction_num
4026 AND global_attribute20 = TO_CHAR(pn_transaction_line_num)
4027 AND customer_trx_id in
4028 (
4029 select customer_trx_id
4030 from ra_customer_trx_all
4031 where bill_to_customer_id = pn_party_id
4032 and bill_to_site_use_id = pn_party_site_id
4033 )
4034 order by 1,2
4035 ;
4036
4037 CURSOR get_trx_info_ap_cur
4038 IS
4039 SELECT
4040 invoice_id,line_number,
4041 reference_key1 transaction_id,
4042 reference_key2 transaction_line_id
4043 FROM ap_invoice_lines_all
4044 WHERE 1=1
4045 AND line_type_lookup_code = 'ITEM'
4046 AND reference_key3 = 'OFI TAX IMPORT'
4047 AND reference_key1 = pv_transaction_num
4048 AND reference_key2 = TO_CHAR(pn_transaction_line_num)
4049 and invoice_id in
4050 (
4051 select invoice_id
4052 from ap_invoices_all
4053 where vendor_id = pn_party_id
4054 and vendor_site_id = pn_party_site_id
4055 )
4056 order by 1,2
4057 ;
4058
4059 --Variable define here
4060 rec_ar_trx_info get_trx_info_ar_cur%ROWTYPE;
4061 rec_ap_trx_info get_trx_info_ap_cur%ROWTYPE;
4062 lv_return_mess VARCHAR2(1000);
4063 lv_error_mess VARCHAR2(1000);
4064 ln_trx_id JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE;
4065 ln_trx_line_id JAI_INTERFACE_LINES_ALL.TRANSACTION_LINE_NUM%TYPE;
4066
4067 --Main block
4068 BEGIN
4069
4070 --AR
4071 IF(pv_import_module = JAI_CONSTANTS.SOURCE_AR)THEN
4072
4073 OPEN get_trx_info_ar_cur;
4074 FETCH get_trx_info_ar_cur INTO rec_ar_trx_info;
4075 CLOSE get_trx_info_ar_cur;
4076
4077 ln_trx_id := rec_ar_trx_info.customer_trx_id;
4078 ln_trx_line_id := rec_ar_trx_info.customer_trx_line_id;
4079 END IF;--AR
4080
4081 --AP
4082 IF(pv_import_module = JAI_CONSTANTS.SOURCE_AP)THEN
4083 OPEN get_trx_info_ap_cur;
4084 FETCH get_trx_info_ap_cur INTO rec_ap_trx_info;
4085 CLOSE get_trx_info_ap_cur;
4086
4087 ln_trx_id := rec_ap_trx_info.invoice_id;
4088 ln_trx_line_id := rec_ap_trx_info.line_number;
4089 END IF;--AP
4090
4091 IF(NVL(ln_trx_id,-1) = -1)THEN
4092 xn_err_flag := 1;
4093 lv_return_mess := 'INITIAL in get_trx_id_info : Can not get trx_id by Transaction num and Transaction line num With interface_line_id:'||pn_interface_line_id;
4094 lv_error_mess := 'JAI_TRANS_LINES_ERR';--'Invalid Source Trans Num, cannot inset tax to Transaction ' || pv_transaction_num ;
4095 log_error(
4096 pv_err_level => GV_ERROR_TYPE_LINE,
4097 pn_line_id => pn_interface_line_id,
4098 pn_source_line_id => pn_interface_line_id,
4099 pv_err_mess => lv_error_mess,
4100 pv_invalid_value => ln_trx_id
4101 );
4102 record_fnd_log(
4103 pv_fnd_log => lv_return_mess
4104 );
4105 END IF;
4106
4107 IF(NVL(ln_trx_line_id,-1) = -1)THEN
4108 xn_err_flag := 1;
4109 lv_return_mess := 'INITIAL in get_trx_id_info: Can not get trx_line_id by Transaction num and Transaction line num With interface_line_id:'||pn_interface_line_id;
4110 lv_error_mess := 'JAI_TRANS_LINES_ERR';--'Invalid Source Trans Num, cannot inset tax to Transaction ' || pv_transaction_num ;
4111 log_error(
4112 pv_err_level => GV_ERROR_TYPE_LINE,
4113 pn_line_id => pn_interface_line_id,
4114 pn_source_line_id => pn_interface_line_id,
4115 pv_err_mess => lv_error_mess,
4116 pv_invalid_value => ln_trx_line_id
4117 );
4118 record_fnd_log(
4119 pv_fnd_log => lv_return_mess
4120 );
4121 END IF;
4122
4123 --Assign variable for output
4124 xn_trx_id := ln_trx_id;
4125 xn_trx_line_id := ln_trx_line_id;
4126
4127 EXCEPTION
4128 WHEN OTHERS THEN
4129 xn_err_flag := 1;
4130 lv_return_mess := 'INITIAL Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) ||' in get_trx_id_info With interface_line_id:'||pn_interface_line_id;
4131 lv_error_mess := 'JAI_TRANS_LINES_ERR';--'Invalid Source Trans Num, cannot inset tax to Transaction ' || pv_transaction_num ;
4132
4133 log_error(
4134 pv_err_level => GV_ERROR_TYPE_LINE,
4135 pn_line_id => pn_interface_line_id,
4136 pn_source_line_id => pn_interface_line_id,
4137 pv_err_mess => lv_error_mess,
4138 pv_invalid_value => pv_transaction_num
4139 );
4140 record_fnd_log(
4141 pv_fnd_log => lv_return_mess
4142 );
4143 END get_trx_id_info;
4144
4145 /*
4146 ||Check the party and party site is available.
4147 */
4148 PROCEDURE validate_party_info(
4149 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
4150 pv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
4151 pn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
4152 pn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE,
4153 pn_org_id IN JAI_INTERFACE_LINES_ALL.ORG_ID%TYPE,
4154 xn_err_flag IN OUT NOCOPY NUMBER
4155 )IS
4156
4157 CURSOR get_ar_party_cur IS
4158 SELECT COUNT(customer_id)
4159 FROM jai_cmn_cus_addresses
4160 WHERE customer_id = pn_party_id;
4161
4162 CURSOR get_ar_party_site_cur IS
4163 SELECT count(cuse.site_use_id)
4164 FROM hz_cust_site_uses_all cuse
4165 , jai_cmn_cus_addresses jcca
4166 WHERE cuse.site_use_id = pn_party_site_id
4167 AND cuse.site_use_code = 'BILL_TO'
4168 AND cuse.cust_acct_site_id = jcca.address_id;
4169
4170 CURSOR chk_ar_party_combination_cur(
4171 cn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
4172 cn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE) IS
4173 SELECT count(cuse.site_use_id)
4174 FROM hz_cust_site_uses_all cuse
4175 , jai_cmn_cus_addresses jcca
4176 WHERE cuse.site_use_id = pn_party_site_id
4177 AND cuse.site_use_code = 'BILL_TO'
4178 AND cuse.cust_acct_site_id = jcca.address_id
4179 AND jcca.customer_id = cn_party_id;
4180
4181 CURSOR get_ap_party_cur IS
4182 SELECT count(vendor_id)
4183 FROM jai_cmn_vendor_sites
4184 WHERE vendor_id = pn_party_id;
4185
4186 CURSOR get_ap_party_site_cur IS
4187 SELECT count(vendor_site_id)
4188 FROM jai_cmn_vendor_sites
4189 WHERE vendor_site_id = pn_party_site_id;
4190
4191 CURSOR chk_ap_party_combination_cur(
4192 cn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
4193 cn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE) IS
4194 SELECT COUNT(vendor_id)
4195 FROM jai_cmn_vendor_sites
4196 WHERE vendor_id = cn_party_id
4197 AND vendor_site_id = cn_party_site_id;
4198
4199 --Variable define here
4200 ln_party_count NUMBER;
4201 ln_count_flag NUMBER;
4202
4203 lv_return_mess VARCHAR2(1000);
4204 lv_error_mess VARCHAR2(1000);
4205 --Main block
4206 BEGIN
4207
4208 IF(NVL(pv_import_module,'#') = JAI_CONSTANTS.SOURCE_AR)THEN
4209
4210 IF(NVL(pn_party_id,-1) = -1)THEN
4211 xn_err_flag := 1;
4212 lv_return_mess := 'INITIAL in get_party_info : the customer id given by user should not be null With interface_line_id:'||pn_interface_line_id;
4213 lv_error_mess := 'JAI_PARTY_ERR';--'Invalid Party Name';
4214 log_error(
4215 pv_err_level => GV_ERROR_TYPE_LINE,
4216 pn_line_id => pn_interface_line_id,
4217 pn_source_line_id => pn_interface_line_id,
4218 pv_err_mess => lv_error_mess,
4219 pv_invalid_value => pn_party_id
4220 );
4221 record_fnd_log(
4222 pv_fnd_log => lv_return_mess
4223 );
4224 ELSE
4225 OPEN get_ar_party_cur;
4226 FETCH get_ar_party_cur INTO ln_count_flag;
4227 CLOSE get_ar_party_cur;
4228
4229 IF(NVL(ln_count_flag,-1) < 1)THEN
4230 xn_err_flag := 1;
4231 lv_return_mess := 'INITIAL in get_party_info : the customer id given by user is not available With interface_line_id:'||pn_interface_line_id;
4232 lv_error_mess := 'JAI_PARTY_ERR';--'Invalid Party Name';
4233 log_error(
4234 pv_err_level => GV_ERROR_TYPE_LINE,
4235 pn_line_id => pn_interface_line_id,
4236 pn_source_line_id => pn_interface_line_id,
4237 pv_err_mess => lv_error_mess,
4238 pv_invalid_value => pn_party_id
4239 );
4240 record_fnd_log(
4241 pv_fnd_log => lv_return_mess
4242 );
4243 END IF;
4244 END IF;
4245
4246
4247 IF(NVL(pn_party_site_id,-1) IN (0, -1))THEN
4248 xn_err_flag := 1;
4249 lv_return_mess := 'INITIAL in validate_party_info : the customer site id given by user should not be null With interface_line_id:'||pn_interface_line_id;
4250 lv_error_mess := 'JAI_PARTY_SITE_ERR';--'Invalid Party Site Name';
4251 log_error(
4252 pv_err_level => GV_ERROR_TYPE_LINE,
4253 pn_line_id => pn_interface_line_id,
4254 pn_source_line_id => pn_interface_line_id,
4255 pv_err_mess => lv_error_mess,
4256 pv_invalid_value => pn_party_site_id
4257 );
4258 record_fnd_log(
4259 pv_fnd_log => lv_return_mess
4260 );
4261 ELSE
4262 OPEN get_ar_party_site_cur;
4263 FETCH get_ar_party_site_cur INTO ln_count_flag;
4264 CLOSE get_ar_party_site_cur;
4265
4266 IF(NVL(ln_count_flag,-1) <> 1)THEN
4267
4268 xn_err_flag := 1;
4269 lv_return_mess := 'INITIAL in validate_party_info : the customer site id given by user is not available With interface_line_id:'||pn_interface_line_id;
4270 lv_error_mess := 'JAI_PARTY_SITE_ERR';--'Invalid Party Site Name';
4271 log_error(
4272 pv_err_level => GV_ERROR_TYPE_LINE,
4273 pn_line_id => pn_interface_line_id,
4274 pn_source_line_id => pn_interface_line_id,
4275 pv_err_mess => lv_error_mess,
4276 pv_invalid_value => pn_party_site_id
4277 );
4278 record_fnd_log(
4279 pv_fnd_log => lv_return_mess
4280 );
4281
4282 END IF;
4283
4284 END IF;
4285
4286 END IF;
4287 IF(NVL(pv_import_module,'#') = JAI_CONSTANTS.SOURCE_AP)THEN
4288
4289
4290
4291 IF(NVL(pn_party_id,-1) = -1)THEN
4292 xn_err_flag := 1;
4293 lv_return_mess := 'INITIAL in get_party_info : the vendor id given by user should not be null With interface_line_id:'||pn_interface_line_id;
4294 lv_error_mess := 'JAI_PARTY_ERR';--'Invalid Party Name';
4295 log_error(
4296 pv_err_level => GV_ERROR_TYPE_LINE,
4297 pn_line_id => pn_interface_line_id,
4298 pn_source_line_id => pn_interface_line_id,
4299 pv_err_mess => lv_error_mess,
4300 pv_invalid_value => pn_party_id
4301 );
4302 record_fnd_log(
4303 pv_fnd_log => lv_return_mess
4304 );
4305 ELSE
4306 OPEN get_ap_party_cur;
4307 FETCH get_ap_party_cur INTO ln_count_flag;
4308 CLOSE get_ap_party_cur;
4309
4310 IF(NVL(ln_count_flag,-1) < 1)THEN
4311 xn_err_flag := 1;
4312 lv_return_mess := 'INITIAL in get_party_info : the vendor id given by user is not available With interface_line_id:'||pn_interface_line_id;
4313 lv_error_mess := 'JAI_PARTY_ERR';--'Invalid Party Name';
4314 log_error(
4315 pv_err_level => GV_ERROR_TYPE_LINE,
4316 pn_line_id => pn_interface_line_id,
4317 pn_source_line_id => pn_interface_line_id,
4318 pv_err_mess => lv_error_mess,
4319 pv_invalid_value => pn_party_id
4320 );
4321 record_fnd_log(
4322 pv_fnd_log => lv_return_mess
4323 );
4324 END IF;
4325 END IF;
4326
4327 IF(NVL(pn_party_site_id,-1) IN (0, -1))THEN
4328 xn_err_flag := 1;
4329 lv_return_mess := 'INITIAL in validate_party_info : the vendor site id given by user should not be null With interface_line_id:'||pn_interface_line_id;
4330 lv_error_mess := 'JAI_PARTY_SITE_ERR';--'Invalid Party Site Name';
4331 log_error(
4332 pv_err_level => GV_ERROR_TYPE_LINE,
4333 pn_line_id => pn_interface_line_id,
4334 pn_source_line_id => pn_interface_line_id,
4335 pv_err_mess => lv_error_mess,
4336 pv_invalid_value => pn_party_site_id
4337 );
4338 record_fnd_log(
4339 pv_fnd_log => lv_return_mess
4340 );
4341 ELSE
4342 OPEN get_ap_party_site_cur;
4343 FETCH get_ap_party_site_cur INTO ln_count_flag;
4344 CLOSE get_ap_party_site_cur;
4345
4346 IF(NVL(ln_count_flag,-1) <> 1)THEN
4347
4348 xn_err_flag := 1;
4349 lv_return_mess := 'INITIAL in validate_party_info : the vendor site id given by user is not available With interface_line_id:'||pn_interface_line_id;
4350 lv_error_mess := 'JAI_PARTY_SITE_ERR';--'Invalid Party Site Name';
4351 log_error(
4352 pv_err_level => GV_ERROR_TYPE_LINE,
4353 pn_line_id => pn_interface_line_id,
4354 pn_source_line_id => pn_interface_line_id,
4355 pv_err_mess => lv_error_mess,
4356 pv_invalid_value => pn_party_site_id
4357 );
4358 record_fnd_log(
4359 pv_fnd_log => lv_return_mess
4360 );
4361
4362 END IF;
4363
4364 END IF;
4365
4366 END IF;
4367
4368 --Check the combination of party id and party site id is available.
4369 IF(NVL(pv_import_module,'#') = JAI_CONSTANTS.SOURCE_AR)THEN
4370 OPEN chk_ar_party_combination_cur(
4371 cn_party_id => pn_party_id,
4372 cn_party_site_id => pn_party_site_id
4373 );
4374 FETCH chk_ar_party_combination_cur INTO ln_party_count;
4375 CLOSE chk_ar_party_combination_cur;
4376 END IF;
4377 IF(NVL(pv_import_module,'#') = JAI_CONSTANTS.SOURCE_AP)THEN
4378 OPEN chk_ap_party_combination_cur(
4379 cn_party_id => pn_party_id,
4380 cn_party_site_id => pn_party_site_id
4381 );
4382 FETCH chk_ap_party_combination_cur INTO ln_party_count;
4383 CLOSE chk_ap_party_combination_cur;
4384 END IF;
4385
4386
4387
4388 IF(NVL(ln_party_count,-1) <> 1)THEN
4389
4390 xn_err_flag := 1;
4391 lv_return_mess := 'INITIAL in validate_party_info : the combination of party name and party site name is not available given by user With interface_line_id:'||pn_interface_line_id;
4392 lv_error_mess := 'JAI_PARTY_COMBINATION_ERR';--'Invalid Party Name/ Party Site combination';
4393 log_error(
4394 pv_err_level => GV_ERROR_TYPE_LINE,
4395 pn_line_id => pn_interface_line_id,
4396 pn_source_line_id => pn_interface_line_id,
4397 pv_err_mess => lv_error_mess,
4398 pv_invalid_value => pn_party_id||' '||pn_party_site_id
4399 );
4400 record_fnd_log(
4401 pv_fnd_log => lv_return_mess
4402 );
4403 END IF;
4404
4405 EXCEPTION
4406 WHEN OTHERS THEN
4407 xn_err_flag := 1;
4408 lv_return_mess := 'VALIDATION Exception with SQLERR:' || SUBSTR(SQLERRM,1,230) || ' in get_party_info With interface_line_id:'||pn_interface_line_id;
4409 lv_error_mess := 'JAI_PARTY_COMBINATION_ERR';--'Invalid Party Name/ Party Site combination';
4410 log_error(
4411 pv_err_level => GV_ERROR_TYPE_LINE,
4412 pn_line_id => pn_interface_line_id,
4413 pn_source_line_id => pn_interface_line_id,
4414 pv_err_mess => lv_error_mess,
4415 pv_invalid_value => pn_interface_line_id
4416 );
4417 record_fnd_log(
4418 pv_fnd_log => lv_return_mess
4419 );
4420 END validate_party_info;
4421
4422 /*
4423 ||Check the service type for AP, if service type code is not null then vaidate it is available.
4424 || else find the default service type code and populate.
4425 */
4426 PROCEDURE validate_service_type(
4427 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
4428 pn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
4429 pv_service_type_code IN JAI_INTERFACE_LINES_ALL.SERVICE_TYPE_CODE%TYPE,
4430 xn_err_flag IN OUT NOCOPY NUMBER
4431 )IS
4432
4433 --Cursor define here
4434 CURSOR get_vendor_info_cur
4435 IS
4436 SELECT
4437 vendor_id,
4438 vendor_site_id
4439 FROM AP_INVOICES_ALL
4440 WHERE invoice_id = pn_trx_id;
4441
4442 CURSOR get_service_type_code(
4443 cn_vendor_id IN NUMBER,
4444 cn_vendor_site_id IN NUMBER
4445 )
4446 IS
4447 SELECT
4448 service_type_code
4449 FROM JAI_CMN_VENDOR_SITES
4450 WHERE VENDOR_ID = cn_vendor_id
4451 AND VENDOR_SITE_ID = cn_vendor_site_id;
4452
4453 CURSOR chk_service_type_code
4454 IS
4455 SELECT
4456 COUNT(lookup_code)
4457 FROM ja_lookups
4458 WHERE lookup_type = 'JAI_SERVICE_TYPE'
4459 AND lookup_code = pv_service_type_code;
4460
4461 --Added by zhiwei for Bug#12584814 on 20110607 begin
4462 ----------------------------------------------------------
4463 CURSOR chk_service_exist_cur
4464 IS
4465 SELECT
4466 count(tax.tax_id)
4467 FROM JAI_CMN_TAXES_ALL tax,
4468 JAI_INTERFACE_TAX_LINES_ALL intf
4469 WHERE intf.tax_id = tax.tax_id
4470 and intf.interface_line_id = pn_interface_line_id
4471 and (
4472 upper(tax_type) in
4473 (
4474 SELECT jrr.attribute_code
4475 FROM jai_rgm_registrations jrr
4476 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
4477 AND jrr.regime_id IN
4478 (
4479 SELECT jrd.regime_id
4480 FROM jai_rgm_definitions jrd
4481 WHERE jrd.regime_code = jai_constants.service_regime
4482 )
4483 )
4484 or
4485 upper(tax_type) in
4486 (
4487 'SERVICE_EDUCATION_CESS','SERVICE_SH_EDU_CESS','SERVICE'
4488 )
4489 );
4490
4491
4492
4493 CURSOR get_tax_category_cur
4494 IS
4495 SELECT
4496 TAX_CATEGORY_ID
4497 FROM JAI_INTERFACE_LINES_ALL
4498 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
4499
4500
4501 CURSOR chk_tax_category_cur(cn_tax_category_id JAI_CMN_TAX_CTG_LINES.tax_category_id%type)
4502 IS
4503 SELECT
4504 count(tax.tax_id)
4505 FROM JAI_CMN_TAXES_ALL tax,
4506 JAI_CMN_TAX_CTG_LINES cate
4507 WHERE cate.tax_id = tax.tax_id
4508 and cate.tax_category_id = cn_tax_category_id
4509 and (
4510 upper(tax_type) in
4511 (
4512 SELECT jrr.attribute_code
4513 FROM jai_rgm_registrations jrr
4514 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
4515 AND jrr.regime_id IN
4516 (
4517 SELECT jrd.regime_id
4518 FROM jai_rgm_definitions jrd
4519 WHERE jrd.regime_code = jai_constants.service_regime
4520 )
4521 )
4522 or
4523 upper(tax_type) in
4524 (
4525 'SERVICE_EDUCATION_CESS','SERVICE_SH_EDU_CESS','SERVICE'
4526 )
4527 );
4528
4529
4530 ln_count_detail_flag number;
4531 ln_count_cate_flag number;
4532 ln_service_exist number; --1:service tax exist; 0:service tax not exist;
4533 ln_tax_category_id number;
4534 ----------------------------------------------------------
4535 --Added by zhiwei for Bug#12584814 on 20110607 end
4536
4537 --Variable define here
4538 ln_vendor_id NUMBER;
4539 ln_vendor_site_id NUMBER;
4540
4541 ln_result_count NUMBER;
4542 lv_serv_type_code JAI_CMN_VENDOR_SITES.SERVICE_TYPE_CODE%TYPE;
4543
4544 lv_return_mess VARCHAR2(1000);
4545 lv_error_mess VARCHAR2(1000);
4546 --Main block
4547 BEGIN
4548
4549 --Added by zhiwei for Bug#12584814 on 20110607 begin
4550 ----------------------------------------------------------
4551 ln_service_exist := 0;
4552
4553 open chk_service_exist_cur;
4554 fetch chk_service_exist_cur into ln_count_detail_flag;
4555 close chk_service_exist_cur;
4556
4557 if(nvl(ln_count_detail_flag,0) > 0)then
4558 ln_service_exist := 1;
4559 else
4560 --check service tax in category.
4561 open get_tax_category_cur;
4562 fetch get_tax_category_cur into ln_tax_category_id;
4563 close get_tax_category_cur;
4564
4565 if(ln_tax_category_id is not null)then
4566 open chk_tax_category_cur(ln_tax_category_id);
4567 fetch chk_tax_category_cur into ln_count_cate_flag;
4568 close chk_tax_category_cur;
4569
4570 if(nvl(ln_count_cate_flag,0) > 0)then
4571 ln_service_exist := 1;
4572 end if;
4573
4574 end if;
4575
4576 end if;
4577
4578 if(nvl(ln_service_exist,0) = 1)then
4579 ----------------------------------------------------------
4580 --Added by zhiwei for Bug#12584814 on 20110607 end
4581
4582 --If Service Type is not null,then validate it is available.
4583 IF(NVL(pv_service_type_code,'#') <> '#')THEN
4584 OPEN chk_service_type_code;
4585 FETCH chk_service_type_code INTO ln_result_count;
4586 CLOSE chk_service_type_code;
4587
4588 IF(NVL(ln_result_count,-1) <= 0)THEN
4589 xn_err_flag := 1;
4590 lv_return_mess := 'VALIDATION in validate_service_type : the service type code given by user is not available With interface_line_id:'||pn_interface_line_id;
4591 lv_error_mess := 'JAI_INVALID_SERVICE_TYPE';--'Invalid Service Type value.';
4592 log_error(
4593 pv_err_level => GV_ERROR_TYPE_LINE,
4594 pn_line_id => pn_interface_line_id,
4595 pn_source_line_id => pn_interface_line_id,
4596 pv_err_mess => lv_error_mess,
4597 pv_invalid_value => pv_service_type_code
4598 );
4599 record_fnd_log(
4600 pv_fnd_log => lv_return_mess
4601 );
4602 END IF;
4603
4604 ELSE
4605 --If service type is null ,then find the default service type by party addtional info.
4606 OPEN get_vendor_info_cur;
4607 FETCH get_vendor_info_cur INTO ln_vendor_id,ln_vendor_site_id;
4608 CLOSE get_vendor_info_cur;
4609
4610 OPEN get_service_type_code(ln_vendor_id,ln_vendor_site_id);
4611 FETCH get_service_type_code INTO lv_serv_type_code;
4612 CLOSE get_service_type_code;
4613
4614 IF(NVL(lv_serv_type_code,'#') = '#')THEN
4615 xn_err_flag := 1;
4616 lv_return_mess := 'VALIDATION in validate_service_type : Can not get the default service type code by addtional vendor info With interface_line_id:'||pn_interface_line_id;
4617 lv_error_mess := 'JAI_SERVICE_TYPE_UNDEFINED';--'Cannot get Service Type value';
4618 log_error(
4619 pv_err_level => GV_ERROR_TYPE_LINE,
4620 pn_line_id => pn_interface_line_id,
4621 pn_source_line_id => pn_interface_line_id,
4622 pv_err_mess => lv_error_mess,
4623 pv_invalid_value => pn_interface_line_id
4624 );
4625 record_fnd_log(
4626 pv_fnd_log => lv_return_mess
4627 );
4628 ELSE
4629 --Update to interface line.
4630 update jai_interface_lines_all
4631 set service_type_code = lv_serv_type_code
4632 where interface_line_id = pn_interface_line_id;
4633
4634 END IF;
4635
4636 END IF;
4637 --Added by zhiwei for Bug#12584814 on 20110607 begin
4638 ----------------------------------------------------------
4639 end if;
4640 ----------------------------------------------------------
4641 --Added by zhiwei for Bug#12584814 on 20110607 end
4642
4643 EXCEPTION
4644 WHEN OTHERS THEN
4645 xn_err_flag := 1;
4646 lv_return_mess := 'VALIDATION Exception with SQLERR:' || SUBSTR(SQLERRM,1,230) || ' in validate_service_type With interface_line_id:'||pn_interface_line_id;
4647 lv_error_mess := 'JAI_INVALID_SERVICE_TYPE';--'Invalid Service Type value.';
4648 log_error(
4649 pv_err_level => GV_ERROR_TYPE_LINE,
4650 pn_line_id => pn_interface_line_id,
4651 pn_source_line_id => pn_interface_line_id,
4652 pv_err_mess => lv_error_mess,
4653 pv_invalid_value => pn_interface_line_id
4654 );
4655 record_fnd_log(
4656 pv_fnd_log => lv_return_mess
4657 );
4658
4659 END validate_service_type;
4660
4661 /*
4662 ||Check tax lines
4663 */
4664 PROCEDURE validate_tax_line(
4665 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
4666 pn_trx_id IN JAI_INTERFACE_LINES_ALL.TRANSACTION_ID%TYPE,
4667 xn_err_flag IN OUT NOCOPY NUMBER
4668 )IS
4669
4670 --Cursor define here
4671 CURSOR get_tax_line_cur
4672 IS
4673 SELECT *
4674 FROM JAI_INTERFACE_TAX_LINES_ALL
4675 WHERE INTERFACE_LINE_ID = pr_interface_lines.INTERFACE_LINE_ID
4676 ORDER BY INTERFACE_TAX_LINE_ID;
4677
4678 CURSOR chk_category_id_cur(cn_category_id IN JAI_INTERFACE_LINES_ALL.TAX_CATEGORY_ID%TYPE)
4679 IS
4680 SELECT tax_category_id
4681 FROM JAI_CMN_TAX_CTGS_ALL
4682 WHERE tax_category_id = cn_category_id;
4683
4684 CURSOR get_not_ebs_tax_flag IS
4685 SELECT count(1)
4686 FROM JAI_IM_TAX_MAPPING
4687 WHERE org_id = pr_interface_lines.org_id
4688 AND taxable_event = pr_interface_lines.taxable_event
4689 AND use_ebs_tax = 'N';
4690
4691 --Variable define here
4692 lv_return_mess VARCHAR2(1000);
4693 lv_error_mess VARCHAR2(1000);
4694
4695 ln_tax_id JAI_INTERFACE_TAX_LINES_ALL.TAX_ID%TYPE;
4696 rec_tax_line JAI_INTERFACE_TAX_LINES_ALL%ROWTYPE;
4697 ln_rec_percent NUMBER;
4698 ln_func_tax_amount NUMBER;
4699 ln_tax_category_id JAI_INTERFACE_LINES_ALL.TAX_CATEGORY_ID%TYPE;
4700 ln_tax_exist_flag NUMBER;
4701
4702 ln_not_ebs_code NUMBER;
4703
4704
4705 --Main block
4706 BEGIN
4707
4708 OPEN get_not_ebs_tax_flag;
4709 FETCH get_not_ebs_tax_flag INTO ln_not_ebs_code;
4710 CLOSE get_not_ebs_tax_flag;
4711
4712 ln_tax_exist_flag := 0;
4713 --Loop for tax line
4714 FOR rec_tax_line IN get_tax_line_cur
4715 LOOP
4716
4717 ln_tax_exist_flag := 1;
4718
4719 --Check the tax line no should not be null
4720 validate_tax_line_no(
4721 pn_interface_line_id => pr_interface_lines.interface_line_id,
4722 pn_tax_line_id => rec_tax_line.interface_tax_line_id,
4723 pn_tax_line_no => rec_tax_line.tax_line_no,
4724 pn_trx_id => pn_trx_id,
4725 xn_err_flag => xn_err_flag
4726 );
4727
4728 IF(pr_interface_lines.taxable_event = GV_TAXABLE_EVENT_STANDALONE)THEN
4729 --check the procedence of tax is correct
4730 validate_tax_precedence(
4731 pn_interface_line_id => pr_interface_lines.interface_line_id,
4732 pr_tax_lines => rec_tax_line,
4733 pn_trx_id => pn_trx_id,
4734 xn_err_flag => xn_err_flag
4735 );
4736
4737 --Added by zhiwei for Bug#12604133 on 20110623 begin
4738 ---------------------------------------------------------
4739 validate_qty_rate(
4740 pn_interface_line_id => pr_interface_lines.interface_line_id,
4741 pn_tax_line_id => rec_tax_line.interface_tax_line_id,
4742 pn_tax_id => rec_tax_line.tax_id,
4743 xn_err_flag => xn_err_flag
4744 );
4745 ---------------------------------------------------------
4746 --Added by zhiwei for Bug#12604133 on 20110623 end
4747 END IF;
4748 --Check the external tax code 1 should find mapping relationship in mapping table
4749 -- 2 inclusive flag of tax should be same as the ebs system
4750 -- 3 tax should in available term , startdate and enddate
4751 validate_tax_code(
4752 pr_interface_lines => pr_interface_lines,
4753 pr_tax_lines => rec_tax_line,
4754 pn_trx_id => pn_trx_id,
4755 xn_err_flag => xn_err_flag,
4756 xn_tax_id => ln_tax_id --Parameter output to Tax id for update and used by following process.
4757 );
4758
4759 --Tax id outputed is available
4760 IF(NVL(ln_tax_id,-1) <> -1)THEN
4761 --tax_id is updated only for not use ebs tax code
4762 IF ln_not_ebs_code > 0 THEN
4763 --Update tax id to tax line
4764 UPDATE JAI_INTERFACE_TAX_LINES_ALL
4765 SET TAX_ID = ln_tax_id
4766 WHERE INTERFACE_TAX_LINE_ID = rec_tax_line.INTERFACE_TAX_LINE_ID;
4767 END IF;
4768
4769 --Check the tax type in constains
4770 validate_tax_constrain(
4771 pr_interface_lines => pr_interface_lines,
4772 pr_tax_lines => rec_tax_line,
4773 pn_trx_id => pn_trx_id,
4774 xn_err_flag => xn_err_flag,
4775 pn_tax_id => ln_tax_id
4776 );
4777
4778 --Validate the distribution line information
4779 validate_dist_info(
4780 pr_interface_lines => pr_interface_lines,
4781 pr_tax_lines => rec_tax_line,
4782 xn_err_flag => xn_err_flag
4783 );
4784
4785 END IF;
4786
4787 END LOOP;
4788
4789 --If no tax line exist , then find category id assigned by user, no category id assigned find default category id
4790 IF(ln_tax_exist_flag = 0)THEN
4791 IF upper(pr_interface_lines.taxable_event) = GV_TAXABLE_EVENT_STANDALONE THEN
4792 --Find category id and check the tax category id is available.
4793 IF(NVL(pr_interface_lines.tax_category_id,-1) <> -1)THEN
4794
4795 --Check the category given by user is available for EBS system.
4796 OPEN chk_category_id_cur(pr_interface_lines.tax_category_id);
4797 FETCH chk_category_id_cur INTO ln_tax_category_id;
4798 CLOSE chk_category_id_cur;
4799
4800 IF(NVL(ln_tax_category_id,-1) = -1)THEN
4801 xn_err_flag := 1;
4802 lv_return_mess := 'VALIDATION in validate_tax_line : tax category id is not available for EBS With interface_line_id:'||pr_interface_lines.interface_line_id;
4803 lv_error_mess := 'JAI_CATEGORY_INVALID';--'Invalid tax category';
4804 log_error(
4805 pv_err_level => GV_ERROR_TYPE_LINE,
4806 pn_line_id => pr_interface_lines.interface_line_id,
4807 pn_source_line_id => pr_interface_lines.interface_line_id,
4808 pv_err_mess => lv_error_mess,
4809 pv_invalid_value => pr_interface_lines.tax_category_id
4810 );
4811 record_fnd_log(
4812 pv_fnd_log => lv_return_mess
4813 );
4814
4815 END IF;
4816 ELSE
4817
4818 --If category id not found then find default category id and feedback to interface line
4819 get_default_tax_cate_id(
4820
4821 pn_import_module => pr_interface_lines.import_module,
4822 pn_internal_trx_id => pr_interface_lines.internal_trx_id,
4823 pn_internal_trx_line_id => pr_interface_lines.internal_trx_line_id,
4824 xn_tax_category_id => ln_tax_category_id
4825 );
4826
4827 IF(NVL(ln_tax_category_id,-1) = -1)THEN
4828 --If found no default tax category id , error message .
4829 xn_err_flag := 1;
4830 lv_return_mess := 'VALIDATION in validate_tax_line : Default tax category id not found With interface_line_id:'||pr_interface_lines.interface_line_id;
4831 lv_error_mess := 'JAI_CATEGORY_UNDEFINED';--'Can not get default tax category form party additional info, please check setup.';
4832 log_error(
4833 pv_err_level => GV_ERROR_TYPE_LINE,
4834 pn_line_id => pr_interface_lines.interface_line_id,
4835 pn_source_line_id => pr_interface_lines.interface_line_id,
4836 pv_err_mess => lv_error_mess,
4837 pv_invalid_value => null
4838 );
4839 record_fnd_log(
4840 pv_fnd_log => lv_return_mess
4841 );
4842 ELSE
4843 --Update the tax category id to interface line .
4844 UPDATE JAI_INTERFACE_LINES_ALL
4845 SET tax_category_id = ln_tax_category_id --10141--
4846 where interface_line_id = pr_interface_lines.interface_line_id;
4847 END IF;
4848 END IF;
4849 END IF;
4850 END IF;
4851
4852
4853 EXCEPTION
4854 WHEN OTHERS THEN
4855 xn_err_flag := 1;
4856 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_tax_line With interface_line_id:'||pr_interface_lines.interface_line_id;
4857
4858 /* log_error(
4859 pv_err_level => GV_ERROR_TYPE_LINE,
4860 pn_line_id => pr_interface_lines.interface_line_id,
4861 pn_source_line_id => pr_interface_lines.interface_line_id,
4862 pv_err_mess => lv_return_mess,
4863 pv_invalid_value => pr_interface_lines.transaction_id
4864 );*/
4865 record_fnd_log(
4866 pv_fnd_log => lv_return_mess
4867 );
4868
4869 END validate_tax_line;
4870
4871
4872 /*
4873 || Check the import module should be AR or AP
4874 */
4875 PROCEDURE validate_import_module(
4876 pr_interface_lines IN JAI_INTERFACE_LINES_ALL%ROWTYPE,
4877 xn_err_flag IN OUT NOCOPY NUMBER
4878 )
4879 IS
4880
4881 --Variable define here
4882 lv_return_mess VARCHAR2(1000);
4883 lv_error_mess VARCHAR2(1000);
4884 --Main block
4885 BEGIN
4886
4887 --Import module should be AR or AP
4888 IF(NVL(pr_interface_lines.import_module,'#') NOT IN (JAI_CONSTANTS.SOURCE_AR,JAI_CONSTANTS.SOURCE_AP))THEN
4889
4890 lv_return_mess := 'VALIDATION in validate_import_module : Import module is incorrect With interface_line_id:'||pr_interface_lines.interface_line_id;
4891 lv_error_mess := 'JAI_IMPORT_MODULE_ERR';--'Import module value is invalid';
4892 xn_err_flag := 1;
4893 log_error(
4894 pv_err_level => GV_ERROR_TYPE_LINE,
4895 pn_line_id => pr_interface_lines.interface_line_id,
4896 pn_source_line_id => pr_interface_lines.interface_line_id,
4897 pv_err_mess => lv_error_mess,
4898 pv_invalid_value => pr_interface_lines.import_module
4899 );
4900 record_fnd_log(
4901 pv_fnd_log => lv_return_mess
4902 );
4903 END IF;
4904 EXCEPTION
4905 WHEN OTHERS THEN
4906 xn_err_flag := 1;
4907 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_import_module With interface_line_id:'||pr_interface_lines.interface_line_id;
4908 lv_error_mess := 'JAI_IMPORT_MODULE_ERR';--'Import module value is invalid';
4909 log_error(
4910 pv_err_level => GV_ERROR_TYPE_LINE,
4911 pn_line_id => pr_interface_lines.interface_line_id,
4912 pn_source_line_id => pr_interface_lines.interface_line_id,
4913 pv_err_mess => lv_error_mess,
4914 pv_invalid_value => pr_interface_lines.import_module
4915 );
4916 record_fnd_log(
4917 pv_fnd_log => lv_return_mess
4918 );
4919 END validate_import_module;
4920
4921
4922
4923 /*
4924 || Validation process
4925 */
4926 PROCEDURE validate_process(
4927 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE
4928 )
4929 IS
4930
4931 --Cursor define here
4932 CURSOR get_interface_line_cur
4933 IS
4934 SELECT
4935 *
4936 FROM JAI_INTERFACE_LINES_ALL
4937 WHERE INTERFACE_LINE_ID = pn_interface_line_id
4938 AND IMPORT_STATUS = GV_IMPORT_SUCCESS
4939 AND IMPORT_PROCESS = GV_PROCESS_INITIALIZE
4940 ORDER BY 1;
4941
4942 --Variable define here
4943 lv_return_code VARCHAR2(30);
4944 lv_return_mess VARCHAR2(500);
4945 ln_err_flag NUMBER;
4946 rec_interface_line JAI_INTERFACE_LINES_ALL%ROWTYPE;
4947 ln_internal_trx_id JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE;
4948 ln_internal_trx_line_id JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE;
4949 ln_phase NUMBER;
4950
4951 --Main block
4952 BEGIN
4953
4954 FOR rec_interface_line IN get_interface_line_cur
4955 LOOP
4956
4957 ln_phase := 12.1;
4958
4959 ln_internal_trx_id := rec_interface_line.internal_trx_id;
4960 ln_internal_trx_line_id := rec_interface_line.internal_trx_line_id;
4961
4962 ln_err_flag := 0;
4963
4964 --Change status to 'SUCCESS',process to 'VALIDATION'
4965 update_line_status(
4966 pn_interface_line_id => rec_interface_line.interface_line_id,
4967 pv_import_status => GV_IMPORT_SUCCESS,
4968 pv_import_process => GV_PROCESS_VALIDATION
4969 );
4970
4971 ln_phase := 12.2;
4972
4973 --Validate OU/IO/LOC
4974 validate_ou_io_loc(
4975 pr_interface_lines => rec_interface_line,
4976 xn_err_flag => ln_err_flag
4977 );
4978
4979 ln_phase := 12.3;
4980
4981 --Check taxable event must in GV_TAXABLE_EVENT_EXTERNAL,GV_TAXABLE_EVENT_STANDALONE
4982 --GV_TAXABLE_EVENT_EXTERNAL,GV_TAXABLE_EVENT_STANDALONE
4983 --TAX AMOUNT OF LINE EQUALS SUM(TAX_AMOUNT) OF TAX LINES
4984 validate_taxable_event(
4985 pr_interface_lines => rec_interface_line,
4986 xn_err_flag => ln_err_flag
4987 );
4988
4989 ln_phase := 12.4;
4990
4991 --Check the taxable basis , should be in (GV_TAXABLE_BASIS_LINEAMT,GV_TAXABLE_BASIS_AV)
4992 validate_taxable_basis(
4993 pr_interface_lines => rec_interface_line,
4994 xn_err_flag => ln_err_flag
4995 );
4996
4997 ln_phase := 12.5;
4998
4999 --If transaction id gived by customer exists ,Check it equals internal trx id got from transaction table
5000 IF(NVL(rec_interface_line.transaction_id,-1) <> -1) THEN
5001 validate_trx_id_equals(
5002 pr_interface_lines => rec_interface_line,
5003 pn_trx_id => ln_internal_trx_id,
5004 xn_err_flag => ln_err_flag
5005 );
5006
5007 --Add by Xiao for validate the transaction is created by importing, rather than created from
5008 --the forms.
5009 --IF pass the validation of validate_trx_id_equals, then will check validate_import_trx.
5010 IF ln_err_flag <> 1 THEN
5011 validate_import_trx(
5012 pn_interface_line_id => rec_interface_line.interface_line_id,
5013 pv_import_module => rec_interface_line.import_module,
5014 pn_trx_id => ln_internal_trx_id,
5015 pn_trx_line_id => ln_internal_trx_line_id,
5016 xn_err_flag => ln_err_flag );
5017 END IF;
5018
5019 END IF;
5020
5021 ln_phase := 12.6;
5022
5023
5024 --For external module only ,the tax lines should be exist.
5025 IF(rec_interface_line.taxable_event = GV_TAXABLE_EVENT_EXTERNAL)THEN
5026
5027 validate_tax_line_exist(
5028 pn_interface_line_id => rec_interface_line.interface_line_id,
5029 xn_err_flag => ln_err_flag
5030 );
5031
5032 END IF;
5033
5034 ln_phase := 12.7;
5035
5036 --For external module or standalone module , the transaction should no tax attached.
5037 validate_trx_tax_line_exist(
5038 pn_interface_line_id => rec_interface_line.interface_line_id,
5039 pn_trx_id => ln_internal_trx_id,
5040 pn_trx_line_id => ln_internal_trx_line_id,
5041 xn_err_flag => ln_err_flag
5042 );
5043
5044 ln_phase := 12.8;
5045
5046 --Check the transaction status
5047 validate_trx_status(
5048 pn_interface_line_id => rec_interface_line.interface_line_id,
5049 pv_import_module => rec_interface_line.import_module,
5050 pn_trx_id => ln_internal_trx_id,
5051 pn_org_id => rec_interface_line.org_id,
5052 pv_trx_number => rec_interface_line.transaction_num,
5053 xn_err_flag => ln_err_flag
5054 );
5055
5056 ln_phase := 12.91;
5057
5058 --Added by zhiwei for Bug#12639945 on 20110624 begin
5059 -----------------------------------------------------------------
5060 validate_trx_accted(
5061 pn_interface_line_id => rec_interface_line.interface_line_id,
5062 pv_import_module => rec_interface_line.import_module,
5063 pn_trx_id => ln_internal_trx_id,
5064 pn_trx_line_id => ln_internal_trx_line_id,
5065 xn_err_flag => ln_err_flag
5066 );
5067
5068
5069 ln_phase := 12.93;
5070 -----------------------------------------------------------------
5071 --Added by zhiwei for Bug#12639945 on 20110624 end
5072
5073
5074
5075
5076
5077 --Check the transaction period status
5078 validate_trx_period(
5079 pn_interface_line_id => rec_interface_line.interface_line_id,
5080 pv_import_module => rec_interface_line.import_module,
5081 pn_trx_id => ln_internal_trx_id,
5082 xn_err_flag => ln_err_flag
5083 );
5084
5085 ln_phase := 13;
5086
5087
5088
5089 --Validate the tax lines
5090 validate_tax_line(
5091 pr_interface_lines => rec_interface_line,
5092 pn_trx_id => ln_internal_trx_id,
5093 xn_err_flag => ln_err_flag
5094 );
5095
5096 ln_phase := 13.01;
5097
5098
5099 --Check the Service Type for AP.
5100 IF(rec_interface_line.import_module = JAI_CONSTANTS.SOURCE_AP)THEN
5101
5102 validate_service_type(
5103 pn_interface_line_id => rec_interface_line.interface_line_id,
5104 pn_trx_id => ln_internal_trx_id,
5105 pv_service_type_code => rec_interface_line.service_type_code,
5106 xn_err_flag => ln_err_flag
5107 );
5108
5109 END IF;
5110
5111 ln_phase := 13.1;
5112
5113 /*
5114 UPDATE JAI_INTERFACE_LINES_ALL
5115 SET INTERNAL_TRX_ID = ln_internal_trx_id,
5116 INTERNAL_TRX_LINE_ID = ln_internal_trx_line_id
5117 WHERE INTERFACE_LINE_ID = rec_interface_line.INTERFACE_LINE_ID;
5118 */--Update both column move to initial_process
5119
5120 --If not found error, the fnd log success
5121 IF(ln_err_flag = 0)THEN
5122 NULL;
5123 fnd_file.put_line(FND_FILE.LOG,'VALIDATION in VALIDATE_PROCESS : VALIDATION COMPLETED with SUCCESS With interface_line_id' || rec_interface_line.interface_line_id );
5124 ELSE
5125 --If found error , change status to error and fnd log error
5126 update_line_status(
5127 pn_interface_line_id => rec_interface_line.interface_line_id,
5128 pv_import_status => GV_IMPORT_FAILURE,
5129 pv_import_process => GV_PROCESS_VALIDATION
5130 );
5131 update_error_flag(
5132 pn_interface_line_id => rec_interface_line.interface_line_id,
5133 pv_err_exist => 'Y'
5134 );
5135 fnd_file.put_line(FND_FILE.LOG,'VALIDATION in VALIDATE_PROCESS : VALIDATION COMPLETED with ERRORS With interface_line_id' || rec_interface_line.interface_line_id );
5136 END IF;
5137
5138 END LOOP;
5139
5140 EXCEPTION
5141 WHEN OTHERS THEN
5142 lv_return_mess := 'VALIDATION Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in validate_process With interface_line_id:'||pn_interface_line_id||' at POS:'||ln_phase;
5143 /* log_error(
5144 pv_err_level => GV_ERROR_TYPE_LINE,
5145 pn_line_id => pn_interface_line_id,
5146 pn_source_line_id => pn_interface_line_id,
5147 pv_err_mess => lv_return_mess,
5148 pv_invalid_value => NULL
5149 );*/
5150 record_fnd_log(
5151 pv_fnd_log => lv_return_mess
5152 );
5153 update_line_status(
5154 pn_interface_line_id => rec_interface_line.interface_line_id,
5155 pv_import_status => GV_IMPORT_FAILURE,
5156 pv_import_process => GV_PROCESS_VALIDATION
5157 );
5158 update_error_flag(
5159 pn_interface_line_id => rec_interface_line.interface_line_id,
5160 pv_err_exist => 'Y');
5161
5162 fnd_file.put_line(FND_FILE.LOG,'VALIDATION in VALIDATE_PROCESS : VALIDATION COMPLETED with EXCEPTIONS With interface_line_id' || rec_interface_line.interface_line_id );
5163
5164 END validate_process;
5165
5166
5167
5168 /*
5169 || Initial process
5170 */
5171 PROCEDURE initial_process(
5172 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE
5173 )
5174 IS
5175 --Cursor define here
5176 CURSOR get_line_info_cur
5177 IS
5178 SELECT TRANSACTION_NUM,
5179 TRANSACTION_LINE_NUM,
5180 IMPORT_MODULE,
5181 PARTY_ID,
5182 PARTY_SITE_ID,
5183 ORG_ID
5184 FROM JAI_INTERFACE_LINES_ALL
5185 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
5186
5187 --Variable define here
5188 lv_transaction_num JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE;
5189 ln_transaction_line_num JAI_INTERFACE_LINES_ALL.TRANSACTION_LINE_NUM%TYPE;
5190 lv_import_module JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE;
5191 ln_trx_id JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE;
5192 ln_trx_line_id JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_LINE_ID%TYPE;
5193 lv_return_mess VARCHAR2(1000);
5194 lv_error_mess varchar2(1000);
5195 ln_err_flag_init NUMBER;
5196 ln_phase NUMBER;
5197
5198 ln_party_id NUMBER;
5199 ln_party_site_id NUMBER;
5200
5201 ln_org_id NUMBER;
5202
5203
5204 --Main block
5205 BEGIN
5206
5207 update_line_status(
5208 pn_interface_line_id => pn_interface_line_id,
5209 pv_import_status => GV_IMPORT_SUCCESS,
5210 pv_import_process => GV_PROCESS_INITIALIZE
5211 );
5212
5213 update_error_flag(
5214 pn_interface_line_id => pn_interface_line_id,
5215 pv_err_exist => 'N'
5216 );
5217
5218 ln_phase := 10.1;
5219
5220 --Del the error lines according to the interface line id
5221 del_line_reference(pn_interface_line_id);
5222
5223 ln_phase := 10.2;
5224
5225 ln_err_flag_init := 0;
5226
5227 OPEN get_line_info_cur;
5228 FETCH get_line_info_cur INTO lv_transaction_num,ln_transaction_line_num,lv_import_module,
5229 ln_party_id,ln_party_site_id,ln_org_id;
5230 CLOSE get_line_info_cur;
5231
5232 ln_phase := 10.3;
5233
5234 IF(NVL(lv_transaction_num,'#')='#')THEN
5235 ln_err_flag_init := 1;
5236 lv_return_mess := 'INITIAL in initial_process : Transaction num should not be null With interface_line_id:'||pn_interface_line_id;
5237 lv_error_mess := 'JAI_TRANS_LINES_ERR';--'Invalid Source Trans Num, cannot inset tax to Transaction ' || lv_transaction_num || '.';
5238 log_error(
5239 pv_err_level => GV_ERROR_TYPE_LINE,
5240 pn_line_id => pn_interface_line_id,
5241 pn_source_line_id => pn_interface_line_id,
5242 pv_err_mess => lv_error_mess,
5243 pv_invalid_value => lv_transaction_num
5244 );
5245
5246 record_fnd_log(
5247 pv_fnd_log => lv_return_mess
5248 );
5249 END IF;--Transaction num is null
5250
5251 ln_phase := 10.4;
5252
5253 IF(NVL(ln_transaction_line_num,-1) = -1)THEN
5254 ln_err_flag_init := 1;
5255 lv_return_mess := 'INITIAL in initial_process : Transaction line num should not be null With interface_line_id:'||pn_interface_line_id;
5256 lv_error_mess := 'JAI_TRANS_LINES_ERR';--'Invalid Source Trans Line Num, cannot inset tax to Transaction ' || lv_transaction_num || '.';
5257 log_error(
5258 pv_err_level => GV_ERROR_TYPE_LINE,
5259 pn_line_id => pn_interface_line_id,
5260 pn_source_line_id => pn_interface_line_id,
5261 pv_err_mess => lv_error_mess,
5262 pv_invalid_value => ln_transaction_line_num
5263 );
5264
5265 record_fnd_log(
5266 pv_fnd_log => lv_return_mess
5267 );
5268 END IF;--Transaction line num is null
5269
5270 ln_phase := 10.5;
5271
5272 IF(NVL(lv_import_module,'#') = '#'
5273 or( NVL(lv_import_module,'#') <> JAI_CONSTANTS.SOURCE_AR
5274 and NVL(lv_import_module,'#') <> JAI_CONSTANTS.SOURCE_AP))THEN
5275 ln_err_flag_init := 1;
5276 lv_return_mess := 'INITIAL in initial_process : Import module should be '|| jai_constants.source_ar ||' or '||jai_constants.source_ap ||' With interface_line_id:'||pn_interface_line_id;
5277 lv_error_mess := 'JAI_IMPORT_MODULE_ERR';--'Import module value is invalid';
5278 log_error(
5279 pv_err_level => GV_ERROR_TYPE_LINE,
5280 pn_line_id => pn_interface_line_id,
5281 pn_source_line_id => pn_interface_line_id,
5282 pv_err_mess => lv_error_mess,
5283 pv_invalid_value => lv_import_module
5284 );
5285
5286 record_fnd_log(
5287 pv_fnd_log => lv_return_mess
5288 );
5289 END IF;--Import module should be AR or AP
5290
5291 ln_phase := 10.51;
5292
5293 IF(ln_err_flag_init = 0)THEN
5294
5295 validate_party_info(
5296 pn_interface_line_id => pn_interface_line_id,
5297 pv_import_module => lv_import_module,
5298 pn_party_id => ln_party_id,
5299 pn_party_site_id => ln_party_site_id,
5300 pn_org_id => ln_org_id,
5301 xn_err_flag => ln_err_flag_init
5302 );
5303
5304 END IF;
5305
5306 ln_phase := 10.6;
5307
5308 IF(ln_err_flag_init = 0)THEN
5309
5310 get_trx_id_info(
5311 pn_interface_line_id => pn_interface_line_id,
5312 pv_transaction_num => lv_transaction_num,
5313 pn_transaction_line_num => ln_transaction_line_num,
5314 pv_import_module => lv_import_module,
5315 pn_party_id => ln_party_id,
5316 pn_party_site_id => ln_party_site_id,
5317 xn_trx_id => ln_trx_id,
5318 xn_trx_line_id => ln_trx_line_id,
5319 xn_err_flag => ln_err_flag_init
5320 );
5321 END IF;
5322
5323 ln_phase := 10.7;
5324
5325 IF(ln_err_flag_init = 0)THEN
5326
5327 ln_phase := 10.8;
5328
5329 update jai_interface_lines_all
5330 set internal_trx_id = ln_trx_id,
5331 internal_trx_line_id = ln_trx_line_id
5332 where interface_line_id = pn_interface_line_id;
5333
5334
5335 update_error_flag(
5336 pn_interface_line_id => pn_interface_line_id,
5337 pv_err_exist => 'N'
5338 );
5339
5340 ln_phase := 10.9;
5341
5342 fnd_file.put_line(FND_FILE.LOG,'INITIAL in INITIAL_PROCESS : INITIAL COMPLETED SUCCESS With INTERFACE_LINE_ID:'||pn_interface_line_id);
5343
5344 END IF;
5345
5346
5347 IF(ln_err_flag_init <> 0)THEN
5348
5349 update_line_status(
5350 pn_interface_line_id => pn_interface_line_id,
5351 pv_import_status => GV_IMPORT_FAILURE ,
5352 pv_import_process => GV_PROCESS_INITIALIZE
5353 );
5354
5355 update_error_flag(
5356 pn_interface_line_id => pn_interface_line_id,
5357 pv_err_exist => 'Y'
5358 );
5359
5360 ln_phase := 11.1;
5361
5362 fnd_file.put_line(FND_FILE.LOG,'INITIAL in INITIAL_PROCESS : INITIAL COMPLETED FAILURE With INTERFACE_LINE_ID:'||pn_interface_line_id);
5363
5364 END IF;
5365
5366 EXCEPTION
5367 WHEN OTHERS THEN
5368 lv_return_mess := 'INITIAL Exception with SQLERR '|| SUBSTR(SQLERRM,1,230);
5369 lv_return_mess := lv_return_mess || ' in initial_process With interface_line_id:'||pn_interface_line_id||' at POS:'||ln_phase;
5370 --'Invalid Source Trans Num, cannot inset tax to Transaction ' || lv_transaction_num
5371 lv_error_mess := 'JAI_TRANS_LINES_ERR';
5372 log_error(
5373 pv_err_level => GV_ERROR_TYPE_LINE,
5374 pn_line_id => pn_interface_line_id,
5375 pn_source_line_id => pn_interface_line_id,
5376 pv_err_mess => lv_error_mess,
5377 pv_invalid_value => lv_transaction_num
5378 );
5379
5380 record_fnd_log(
5381 pv_fnd_log => lv_return_mess
5382 );
5383
5384 update_line_status(
5385 pn_interface_line_id => pn_interface_line_id,
5386 pv_import_status => GV_IMPORT_FAILURE ,
5387 pv_import_process => GV_PROCESS_INITIALIZE
5388 );
5389
5390 update_error_flag(
5391 pn_interface_line_id => pn_interface_line_id,
5392 pv_err_exist => 'Y'
5393 );
5394
5395 END initial_process;
5396
5397
5398
5399
5400
5401 /*
5402 ||
5403 */
5404 FUNCTION is_accrual_basis(pn_customer_trx_line_id IN NUMBER)
5405 RETURN BOOLEAN
5406 IS
5407
5408 CURSOR get_trx_gl_date_cur IS
5409 SELECT rda.gl_date
5410 FROM ra_cust_trx_line_gl_dist_all rda,
5411 jai_ar_trx_tax_lines rla
5412 WHERE rda.account_class = 'REV'
5413 AND rda.customer_trx_line_id = rla.link_to_cust_trx_line_id
5414 AND rla.customer_trx_line_id = pn_customer_trx_line_id;
5415
5416
5417 CURSOR c_get_st_accrual_date(p_organization_id NUMBER, p_location_id NUMBER) IS
5418 select to_date(attribute_value, 'DD/MM/YYYY')
5419 from JAI_RGM_ORG_REGNS_V jrr, jai_rgm_definitions jrd
5420 where jrr.regime_id = jrd.regime_id
5421 AND jrd.regime_code = jai_constants.service_regime
5422 and jrr.organization_id = p_organization_id
5423 and jrr.location_id = p_location_id
5424 AND jrr.attribute_code = 'EFF_DATE_ST_PT'
5425 AND jrr.attribute_type_code = 'OTHERS'
5426 AND jrr.registration_type = 'OTHERS'
5427 AND (NOT EXISTS
5428 (select '1'
5429 from JAI_RGM_ORG_REGNS_V jrr, jai_rgm_definitions jrd
5430 where jrr.regime_id = jrd.regime_id
5431 AND jrd.regime_code = jai_constants.service_regime
5432 and jrr.attribute_code IN 'INV_ORG_CLASSIFICATION'
5433 and jrr.attribute_value <> 'ORGANIZATION'
5434 and jrr.organization_id = p_organization_id
5435 and jrr.location_id = p_location_id)
5436 OR
5437 NOT EXISTS
5438 (select '1'
5439 from JAI_RGM_ORG_REGNS_V jrr, jai_rgm_definitions jrd
5440 where jrr.regime_id = jrd.regime_id
5441 AND jrd.regime_code = jai_constants.service_regime
5442 and jrr.attribute_code IN 'SERVICE TYPE'
5443 and jrr.attribute_value <> 'OTHER'
5444 and jrr.organization_id = p_organization_id
5445 and jrr.location_id = p_location_id)
5446 );
5447
5448
5449 --Commented by zhiwei for POT bug#12925963 on 20110908 begin
5450 --------------------------------------------------------------
5451 /*CURSOR c_get_org_loc
5452 IS
5453 SELECT organization_id, location_id
5454 FROM jai_ar_trxs
5455 WHERE customer_trx_id IN(SELECT customer_trx_id
5456 FROM ra_customer_trx_lines
5457 WHERE customer_trx_line_id IN pn_customer_trx_line_id);*/
5458 --------------------------------------------------------------
5459 --Commented by zhiwei for POT bug#12925963 on 20110908 end
5460
5461 CURSOR c_get_org_loc
5462 IS
5463 SELECT organization_id, location_id
5464 FROM jai_ar_trxs
5465 WHERE customer_trx_id IN(
5466 SELECT customer_trx_id
5467 FROM ra_customer_trx_lines
5468 WHERE customer_trx_line_id IN
5469 (
5470 select link_to_cust_trx_line_id
5471 from jai_ar_trx_tax_lines
5472 where customer_trx_line_id = pn_customer_trx_line_id
5473 )
5474 );
5475
5476
5477
5478 ld_st_accrual_date DATE;
5479 ld_gl_date DATE;
5480 r_get_org_loc c_get_org_loc%ROWTYPE;
5481
5482 BEGIN
5483 OPEN get_trx_gl_date_cur;
5484 FETCH get_trx_gl_date_cur INTO ld_gl_date;
5485 CLOSE get_trx_gl_date_cur;
5486 /*Bug 12805386 - Derive Inventory Organization ID and Location ID*/
5487 OPEN c_get_org_loc;
5488 FETCH c_get_org_loc INTO r_get_org_loc;
5489 CLOSE c_get_org_loc;
5490 /*Bug 12805386 - Added parameters Inventory Organization ID and Location ID*/
5491 OPEN c_get_st_accrual_date(r_get_org_loc.organization_id, r_get_org_loc.location_id);
5492 FETCH c_get_st_accrual_date INTO ld_st_accrual_date;
5493 CLOSE c_get_st_accrual_date;
5494 IF ld_gl_date >= ld_st_accrual_date THEN
5495 RETURN TRUE;
5496 ELSE
5497 RETURN FALSE;
5498 END IF;
5499 END is_accrual_basis;
5500 -----------------------------------------------------------
5501 --Added by zhiwei for POT change bug#13023443 end
5502
5503
5504
5505 /*
5506 ||Populate temporary table JAI_AR_TRX_INS_LINES_T
5507 */
5508 PROCEDURE populate_temp_table(
5509 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
5510 pn_customer_trx_id IN ra_customer_trx_all.customer_trx_id%type,
5511 pn_customer_trx_line_id IN jai_ar_trx_lines.customer_trx_line_id%type,
5512 pv_return_code OUT NOCOPY VARCHAR2,
5513 pv_return_message OUT NOCOPY VARCHAR2)
5514 IS
5515
5516 v_books_id NUMBER;
5517 v_salesrep_id NUMBER;
5518 v_line_type VARCHAR2(30);
5519 v_vat_tax NUMBER;
5520 v_ccid NUMBER;
5521 v_cust_trx_line_id RA_CUSTOMER_TRX_LINES_ALL.customer_trx_line_id%TYPE;
5522 v_counter NUMBER;
5523 v_customer_trx_id NUMBER;
5524 c_from_currency_code VARCHAR2(15);
5525 c_conversion_type VARCHAR2(30);
5526 c_conversion_date DATE;
5527 c_conversion_rate NUMBER := 0;
5528 v_converted_rate NUMBER := 1;
5529 req_id NUMBER;
5530 result BOOLEAN;
5531 v_created_from VARCHAR2(30);
5532 v_insert_update_flag VARCHAR2(1);
5533 v_organization_id NUMBER;
5534 v_location_id NUMBER;
5535 v_batch_source_id NUMBER;
5536 v_register_code VARCHAR2(50);
5537
5538 v_org_id ra_customer_trx_all.org_id%type;
5539
5540 v_line_amount NUMBER := 0;
5541 v_quantity NUMBER;
5542 v_trans_type VARCHAR2(30);
5543 v_line_tax_amount NUMBER := 0;
5544 l_tcs_line_num NUMBER := 0;
5545 l_tcs_sur_line_num NUMBER := 0;
5546 ln_tcs_regime_id JAI_RGM_DEFINITIONS.regime_id%type;
5547 l_org_id NUMBER;
5548 l_bill_to_customer_id NUMBER;
5549 l_bill_to_site_use_id NUMBER;
5550 ln_organization_id NUMBER;
5551 ln_trx_date DATE;
5552 ln_threshold_slab_id jai_ap_tds_thhold_slabs.threshold_slab_id%type;
5553 ln_threshold_tax_cat_id jai_ap_tds_thhold_taxes.tax_category_id%type;
5554 lv_process_flag VARCHAR2(2);
5555 lv_process_message VARCHAR2(1996);
5556 ln_tax_amount NUMBER;
5557 l_tot_tax_lines NUMBER;
5558 l_max_tax_line_no NUMBER;
5559
5560 CURSOR GC_GET_REGIME_ID(CP_REGIME_CODE JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE) IS
5561 SELECT REGIME_ID
5562 FROM JAI_RGM_DEFINITIONS
5563 WHERE REGIME_CODE = CP_REGIME_CODE;
5564
5565 Cursor transaction_type_cur IS
5566 Select a.type
5567 From RA_CUST_TRX_TYPES_ALL a, RA_CUSTOMER_TRX_ALL b
5568 Where a.cust_trx_type_id = b.cust_trx_type_id
5569 And b.customer_trx_id = v_customer_trx_id
5570 And NVL(a.org_id, 0) = NVL(b.org_id, 0);
5571
5572 CURSOR bind_cur IS
5573 SELECT RCTA.org_id,
5574 RCTA.bill_to_customer_id,
5575 NVL(RCTA.bill_to_site_use_id, 0),
5576 RCTA.trx_date
5577 FROM RA_CUSTOMER_TRX_ALL RCTA
5578 WHERE RCTA.customer_trx_id = v_customer_trx_id;
5579
5580 lv_intf_hdr_ctx ra_customer_trx_all.interface_header_context%type;
5581
5582
5583 CURSOR tax_type_cur IS
5584 SELECT a.tax_id taxid,
5585 a.tax_rate,
5586 a.uom uom,
5587 a.tax_amount tax_amt,
5588 b.tax_type t_type,
5589 a.customer_trx_line_id line_id,
5590 a.tax_line_no tax_line_no
5591 FROM JAI_AR_TRX_TAX_LINES a, JAI_CMN_TAXES_ALL b
5592 WHERE link_to_cust_trx_line_id = pn_customer_trx_line_id
5593 and a.tax_id = b.tax_id
5594 AND NVL(b.inclusive_tax_flag, 'N') = 'N' --Added by Jia Li for Tax inclusive Computations on 2007/11/22
5595 ORDER BY 1;
5596
5597
5598
5599 CURSOR BOOKS_TRX_CUR IS
5600 SELECT set_of_books_id,
5601 primary_salesrep_id,
5602 invoice_currency_code,
5603 exchange_rate_type,
5604 exchange_date,
5605 exchange_rate
5606 FROM JAI_AR_TRXS
5607 WHERE customer_trx_id = v_customer_trx_id;
5608
5609 CURSOR ORG_CUR IS
5610 SELECT ORG_ID
5611 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
5612 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
5613 AND account_class = 'REC'
5614 AND latest_rec_flag = 'Y';
5615
5616 lv_tax_regime_code zx_rates_b.tax_regime_code%type;
5617 ln_party_tax_profile_id zx_party_tax_profile.party_tax_profile_id%type;
5618 ln_tax_rate_id zx_rates_b.tax_rate_id%type;
5619
5620 CURSOR TAX_CCID_CUR(p_tax_id IN NUMBER) IS
5621 SELECT tax_account_id
5622 FROM JAI_CMN_TAXES_ALL B
5623 WHERE B.tax_id = p_tax_id;
5624
5625 CURSOR GL_DATE_CUR IS
5626 SELECT gl_date
5627 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
5628 WHERE CUSTOMER_TRX_LINE_ID = pn_customer_trx_line_id;
5629
5630 CURSOR CREATED_FROM_CUR IS
5631 SELECT created_from
5632 FROM JAI_AR_TRXS -- table reference was previously RA_CUSTOMER_TRX_ALL - using JA_IN_RA_CUSTOMER_TRX instead - bug# 2728636
5633 WHERE customer_trx_id = v_customer_trx_id;
5634
5635 CURSOR Insert_Update_Cur(p_customer_trx_line_id IN NUMBER) IS
5636 SELECT INSERT_UPDATE_FLAG
5637 FROM JAI_AR_TRX_INS_LINES_T
5638 WHERE customer_trx_id = V_CUSTOMER_TRX_ID
5639 AND Customer_trx_line_id = p_customer_trx_line_id
5640 ORDER BY CUSTOMER_TRX_LINE_ID;
5641
5642 CURSOR SO_AR_HDR_INFO IS
5643 SELECT organization_id, location_id, batch_source_id
5644 FROM JAI_AR_TRXS
5645 WHERE Customer_Trx_ID = v_customer_trx_id;
5646
5647 CURSOR register_code_cur(p_org_id IN NUMBER, p_loc_id IN NUMBER, p_batch_source_id IN NUMBER) IS
5648 SELECT register_code
5649 FROM JAI_OM_OE_BOND_REG_HDRS
5650 WHERE organization_id = p_org_id
5651 AND location_id = p_loc_id
5652 AND register_id IN (SELECT register_id
5653 FROM JAI_OM_OE_BOND_REG_DTLS
5654 WHERE order_type_id = p_batch_source_id
5655 AND order_flag = 'N');
5656
5657 CURSOR cur_chk_rgm(cp_tax_type JAI_CMN_TAXES_ALL.TAX_TYPE%TYPE) IS
5658 SELECT regime_id, regime_code
5659 FROM jai_regime_tax_types_v jrttv
5660 WHERE upper(jrttv.tax_type) = upper(cp_tax_type);
5661
5662 ln_regime_code JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE;
5663 lv_attr_value JAI_RGM_REGISTRATIONS.ATTRIBUTE_VALUE%TYPE;
5664
5665 -- Start of bug 4089440
5666 ln_regime_id JAI_RGM_DEFINITIONS.REGIME_ID%TYPE;
5667 lv_error_flag VARCHAR2(2);
5668 lv_error_message VARCHAR2(4000);
5669 -- End of bug 4089440
5670
5671 /* Bug 5243532. Added by Lakshmi Gopalsami
5672 * Removed cursor set_of_books_cur
5673 * and implemented caching logic.
5674 */
5675 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
5676
5677 ln_inv_curr_precision NUMBER;
5678
5679 /* added by CSahoo - bug# 5364120*/
5680 CURSOR c_inv_curr_precision(cp_currency_code varchar2) IS
5681 SELECT NVL(minimum_accountable_unit, NVL(precision, 2)) curr_precision
5682 FROM fnd_currencies
5683 WHERE currency_code = cp_currency_code;
5684 --added the function for bug#8310220
5685
5686 CURSOR cur_get_jai_line_rec(pn_c_customer_trx_line_id in jai_ar_trx_lines.customer_trx_line_id%type) IS
5687 select
5688 CUSTOMER_TRX_LINE_ID ,
5689 CUSTOMER_TRX_ID ,
5690 INVENTORY_ITEM_ID ,
5691 UNIT_CODE ,
5692 QUANTITY ,
5693 UNIT_SELLING_PRICE ,
5694 ASSESSABLE_VALUE ,
5695 CREATION_DATE ,
5696 CREATED_BY ,
5697 LAST_UPDATE_DATE ,
5698 LAST_UPDATED_BY ,
5699 LAST_UPDATE_LOGIN ,
5700 VAT_ASSESSABLE_VALUE ,
5701 GST_ASSESSABLE_VALUE
5702 from jai_ar_trx_lines
5703 where customer_trx_line_id = pn_c_customer_trx_line_id;
5704
5705 get_jai_trx_line cur_get_jai_line_rec%rowtype;
5706
5707 FUNCTION get_hdr_ctx(p_customer_trx_id IN NUMBER,
5708 p_customer_trx_line_id IN NUMBER) RETURN VARCHAR2 IS
5709 PRAGMA AUTONOMOUS_TRANSACTION;
5710 cursor c_get_hdr_ctx is
5711 select distinct interface_line_context
5712 from ra_customer_trx_lines_all
5713 where customer_trx_id = p_customer_trx_id
5714 and customer_trx_line_id = p_customer_trx_line_id --added for bug#5597146
5715 and interface_line_context is not null
5716 and rownum = 1;
5717 lv_hdr_ctx ra_customer_trx_lines_all.INTERFACE_LINE_CONTEXT%type;
5718 BEGIN
5719 OPEN c_get_hdr_ctx;
5720 FETCH c_get_hdr_ctx
5721 into lv_hdr_ctx;
5722 CLOSE c_get_hdr_ctx;
5723
5724 return lv_hdr_ctx;
5725 END get_hdr_ctx;
5726
5727 BEGIN
5728
5729
5730 pv_return_code := jai_constants.successful;
5731 --added by zhiwei for Open Interface ER 20101116 begin,
5732 -------------------------------------------------------
5733 --use get_jai_trx_line to replace pr_new
5734 open cur_get_jai_line_rec(pn_customer_trx_line_id);
5735 fetch cur_get_jai_line_rec into get_jai_trx_line;
5736 close cur_get_jai_line_rec;
5737 -------------------------------------------------------
5738 --added by zhiwei for Open Interface ER 20101116 end,
5739 v_org_id := FND_PROFILE.VALUE('ORG_ID');
5740
5741 v_customer_trx_id := pn_customer_trx_id;
5742
5743 OPEN CREATED_FROM_CUR;
5744 FETCH CREATED_FROM_CUR
5745 INTO v_created_from;
5746 CLOSE CREATED_FROM_CUR;
5747
5748 OPEN BOOKS_TRX_CUR;
5749 FETCH BOOKS_TRX_CUR
5750 INTO v_books_id, v_salesrep_id, c_from_currency_code, c_conversion_type, c_conversion_date, c_conversion_rate;
5751 CLOSE BOOKS_TRX_CUR;
5752
5753 IF c_from_currency_code IS NOT NULL THEN
5754 OPEN c_inv_Curr_precision(c_from_currency_code);
5755 FETCH c_inv_curr_precision
5756 INTO ln_inv_curr_precision;
5757 CLOSE c_inv_curr_precision;
5758 END IF;
5759
5760 IF ln_inv_curr_precision IS NULL THEN
5761 ln_inv_curr_precision := 0;
5762 END IF;
5763
5764 OPEN ORG_CUR;
5765 FETCH ORG_CUR
5766 INTO V_ORG_ID;
5767 CLOSE ORG_CUR;
5768
5769 OPEN jai_ar_trx_pkg.c_tax_regime_code_cur(V_ORG_ID);
5770 FETCH jai_ar_trx_pkg.c_tax_regime_code_cur
5771 INTO lv_tax_regime_code;
5772 CLOSE jai_ar_trx_pkg.c_tax_regime_code_cur;
5773
5774 OPEN jai_ar_trx_pkg.c_max_tax_rate_id_cur(lv_tax_regime_code);
5775 FETCH jai_ar_trx_pkg.c_max_tax_rate_id_cur
5776 INTO ln_tax_rate_id;
5777 CLOSE jai_ar_trx_pkg.c_max_tax_rate_id_cur;
5778
5779 OPEN SO_AR_HDR_INFO;
5780 FETCH SO_AR_HDR_INFO
5781 INTO v_organization_id, v_location_id, v_batch_source_id;
5782 CLOSE SO_AR_HDR_INFO;
5783
5784 lv_intf_hdr_ctx := get_hdr_ctx(get_jai_trx_line.customer_trx_id,
5785 get_jai_trx_line.customer_trx_line_id);
5786
5787 if JAI_AR_RCTLA_TRIGGER_PKG.is_this_projects_context(lv_intf_hdr_ctx) then
5788
5789 OPEN register_code_cur(v_organization_id,
5790 v_location_id,
5791 v_batch_source_id);
5792 FETCH register_code_cur
5793 INTO v_register_code;
5794 CLOSE register_code_cur;
5795
5796 end if;
5797
5798 IF v_books_id IS NULL THEN
5799
5800 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr(p_org_id => v_organization_id);
5801 v_books_id := l_func_curr_det.ledger_id;
5802 END IF;
5803 v_converted_rate := jai_cmn_utils_pkg.currency_conversion(v_books_id,
5804 c_from_currency_code,
5805 c_conversion_date,
5806 c_conversion_type,
5807 c_conversion_rate);
5808
5809 FOR TAX_TYPE_REC IN TAX_TYPE_CUR LOOP
5810
5811 SELECT COUNT(*)
5812 INTO v_counter
5813 FROM JAI_AR_TRX_INS_LINES_T b
5814 WHERE b.LINK_TO_CUST_TRX_LINE_ID = pn_customer_trx_line_id
5815 AND b.customer_trx_line_id = Tax_Type_Rec.LINE_ID;
5816
5817 IF (upper(Tax_Type_Rec.T_Type) = 'VAT REVERSAL') THEN
5818 TAX_TYPE_REC.tax_amt := 0;
5819 END IF;
5820
5821 /*
5822 || added by CSahoo - bug# 5390583 In case of bond reg , the excise taxes should not go to base AR tables.
5823 */
5824 IF NVL(v_register_code, 'N') = 'BOND_REG' THEN
5825 IF upper(Tax_Type_Rec.T_Type) IN
5826 ('EXCISE',
5827 'ADDL. EXCISE',
5828 'OTHER EXCISE',
5829 'EXCISE_EDUCATION_CESS',
5830 'CVD_EDUCATION_CESS',
5831 jai_constants.tax_type_sh_exc_edu_cess,
5832 jai_constants.tax_type_sh_cvd_edu_cess) THEN
5833 TAX_TYPE_REC.tax_amt := 0;
5834 END IF;
5835 END IF;
5836
5837 /*
5838 || Ends additions by CSahoo - bug# 5390583
5839 */
5840
5841 OPEN Insert_Update_Cur(TAX_TYPE_REC.line_id);
5842 FETCH Insert_Update_Cur
5843 INTO v_insert_update_flag;
5844 CLOSE Insert_Update_Cur;
5845 IF NVL(v_insert_update_flag, 'I') <> 'X' THEN
5846 IF TAX_TYPE_REC.t_type = 'Freight' THEN
5847 v_line_type := 'FREIGHT';
5848 ELSE
5849 v_line_type := 'TAX';
5850 END IF;
5851
5852
5853 IF tax_type_rec.t_type = 'TDS' THEN
5854 tax_type_rec.tax_amt := 0;
5855 END IF;
5856
5857 /*
5858 || Code modified by aiyer for the bug 4279702.
5859 || Initializing the regime variables
5860 */
5861 ln_regime_id := null;
5862 ln_regime_code := null;
5863
5864 /*
5865 || Get the regime attached to a transaction tax type
5866 */
5867 OPEN cur_chk_rgm(cp_tax_type => tax_type_rec.t_type);
5868 FETCH cur_chk_rgm
5869 INTO ln_regime_id, ln_regime_code;
5870 CLOSE cur_chk_rgm;
5871
5872
5873
5874
5875 -- ORGINAL TAX LOGIC FOR VAT/EXCISE/TDS/TCS/CESS/SHCESS/RMA
5876
5877
5878 -- Start of bug 4089440
5879 /*
5880 || The following code has been added by aiyer for the bug 4089440
5881 || IF tax type is SERVICE or SERVICE-CESS then get the account info from regime setup
5882 || IF no setup is found then raise an error and stop the transaction.
5883 */
5884 IF upper(tax_type_rec.t_type) =
5885 upper(jai_constants.tax_type_service) OR
5886 upper(tax_type_rec.t_type) =
5887 upper(jai_constants.tax_type_service_edu_cess) OR
5888 upper(tax_type_rec.t_type) =
5889 upper(jai_constants.tax_type_sh_service_edu_cess) -- added by csahoo for bug#6081806
5890 THEN
5891 -- Start of A1
5892
5893 /*################################################################################################################
5894 || Get the regime id and also validate the Regime/Regime Registratiom Setup Information
5895 ################################################################################################################*/
5896
5897 jai_ar_rgm_processing_pkg.get_regime_info(p_regime_code => jai_constants.service_regime,
5898 p_tax_type_code => tax_type_rec.t_type,
5899 p_regime_id => ln_regime_id,
5900 p_error_flag => lv_error_flag,
5901 p_error_message => lv_error_message);
5902
5903 IF lv_error_flag <> jai_constants.successful THEN
5904 /*
5905 || Encountered an error from the call to jai_ar_rgm_processing_pkg.get_regime_info
5906 || Stop processing and thorw an error
5907 */
5908 /* raise_application_error (-20130,lv_error_message); */
5909 pv_return_code := jai_constants.expected_error;
5910 pv_return_message := lv_error_message;
5911 return;
5912 /*
5913 app_exception.raise_exception( EXCEPTION_TYPE => 'APP',
5914 EXCEPTION_CODE => NULL ,
5915 EXCEPTION_TEXT => lv_error_message
5916 );
5917 */
5918
5919 END IF;
5920
5921 /*################################################################################################################
5922 || Get Tax Account Info from the Regime Organization/Regime Registration setup
5923 ################################################################################################################*/
5924
5925 /*
5926 || Get the code combination id from the Organization/Regime Registration setup
5927 || by calling the function jai_cmn_rgm_recording_pkg.get_account
5928 */
5929 --Added by zhiwei for POT change Bug#13023443 begin
5930 -----------------------------------------------------------------
5931 if( is_accrual_basis(tax_type_rec.line_id))then
5932 v_ccid := jai_cmn_rgm_recording_pkg.get_account(p_regime_id => ln_regime_id,
5933 p_organization_type => jai_constants.service_tax_orgn_type,
5934 p_organization_id => v_organization_id,
5935 p_location_id => v_location_id,
5936 p_tax_type => tax_type_rec.t_type,
5937 p_account_name => jai_constants.liability);
5938
5939 else
5940 -----------------------------------------------------------------
5941 --Added by zhiwei for POT change Bug#13023443 end
5942 v_ccid := jai_cmn_rgm_recording_pkg.get_account(p_regime_id => ln_regime_id,
5943 p_organization_type => jai_constants.service_tax_orgn_type,
5944 p_organization_id => v_organization_id,
5945 p_location_id => v_location_id,
5946 p_tax_type => tax_type_rec.t_type,
5947 p_account_name => jai_constants.liability_interim);
5948 end if;--Added by zhiwei for POT change Bug#13023443
5949
5950 IF v_ccid IS NULL THEN
5951 /*
5952 || Code Combination id has been returned as null from the function jai_cmn_rgm_recording_pkg.get_account
5953 || This is an error condition and the current processing has to be stopped
5954 */
5955 /* raise_application_error (-20130,'Invalid Code combination, please check the Service Tax - Tax Accounting Setup'); */
5956 pv_return_code := jai_constants.expected_error;
5957 pv_return_message := 'Invalid Code combination,please check the Service Tax - Tax Accounting Setup';
5958 return;
5959 /*
5960 app_exception.raise_exception( EXCEPTION_TYPE => 'APP',
5961 EXCEPTION_CODE => NULL ,
5962 EXCEPTION_TEXT => 'Invalid Code combination, please check the Service Tax - Tax Type Accounting Setup'
5963 );
5964 */
5965
5966 END IF;
5967
5968 /*
5969 || Start of bug 4212816
5970 || Code modified by aiyer for the VAT Enhancement
5971 || Get the Tax accounting information from the vat regime setup when the taxes are as mentioned below taxes
5972 */
5973 ELSIF UPPER(nvl(ln_regime_code, '####')) =
5974 jai_constants.vat_regime THEN
5975
5976 /*********************************************************************************************************
5977 || Validate whether the item attached is vatable or not
5978 *********************************************************************************************************/
5979 if get_jai_trx_line.inventory_item_id is not null then
5980 /*Bug 5671400 bduvarag*/
5981 jai_inv_items_pkg.jai_get_attrib(p_regime_code => ln_regime_code,
5982 p_organization_id => v_organization_id,
5983 p_inventory_item_id => get_jai_trx_line.inventory_item_id,
5984 p_attribute_code => jai_constants.rgm_attr_item_applicable,
5985 p_attribute_value => lv_attr_value,
5986 p_process_flag => lv_error_flag,
5987 p_process_msg => lv_error_message);
5988
5989 IF lv_error_flag <> jai_constants.successful THEN
5990 /*
5991 || Encountered an error from the call to jai_ar_rgm_processing_pkg.get_regime_info
5992 || Stop processing and thorw an error
5993 */
5994 /* raise_application_error (-20130,lv_error_message); */
5995 pv_return_code := jai_constants.expected_error;
5996 pv_return_message := lv_error_message;
5997 return;
5998 /*
5999 app_exception.raise_exception( EXCEPTION_TYPE => 'APP',
6000 EXCEPTION_CODE => NULL ,
6001 EXCEPTION_TEXT => lv_error_message
6002 );
6003 */
6004
6005 END IF;
6006 END IF; /*Bug 5671400 bduvarag*/
6007 /*********************************************************************************************************
6008 || Raise an error if item is not vatable
6009 *********************************************************************************************************/
6010 IF get_jai_trx_line.inventory_item_id is not null and
6011 nvl(lv_attr_value, 'N') = 'N' THEN
6012 /*Bug 5671400 bduvarag */
6013
6014 /*
6015 || Item is not vatable . Stop processing and throw an error
6016 */
6017 /* raise_application_error (-20130,'ITEM not vatable'); */
6018 pv_return_code := jai_constants.expected_error;
6019 pv_return_message := 'ITEM not vatable';
6020 return;
6021 /* DO not delete this code, enable this code while doing the messageing project
6022 app_exception.raise_exception( EXCEPTION_TYPE => 'APP',
6023 EXCEPTION_CODE => NULL ,
6024 EXCEPTION_TEXT => 'Cannot attach VAT type of taxes to non vatable items.'
6025 );
6026 */
6027
6028 END IF;
6029
6030 /*################################################################################################################
6031 || Get Tax Account Info from the Regime Organization/Regime Registration setup
6032 ################################################################################################################*/
6033
6034 /*
6035 || Get the code combination id from the Organization/Regime Registration setup
6036 || by calling the function jai_cmn_rgm_recording_pkg.get_account
6037 */
6038
6039 v_ccid := jai_cmn_rgm_recording_pkg.get_account(p_regime_id => ln_regime_id,
6040 p_organization_type => jai_constants.orgn_type_io,
6041 p_organization_id => v_organization_id,
6042 p_location_id => v_location_id,
6043 p_tax_type => tax_type_rec.t_type,
6044 p_account_name => jai_constants.liability_interim);
6045 IF v_ccid IS NULL THEN
6046 /*
6047 || Code Combination id has been returned as null from the function jai_cmn_rgm_recording_pkg.get_account
6048 || This is an error condition and the current processing has to be stopped
6049 */
6050 /* raise_application_error (-20130,'Invalid Code combination ,please check the VAT Tax - Tax Accounting Setup'); */
6051 pv_return_code := jai_constants.expected_error;
6052 pv_return_message := 'Invalid Code combination ,please check the VAT Tax - Tax Accounting Setup';
6053 return;
6054 /*
6055 app_exception.raise_exception( EXCEPTION_TYPE => 'APP',
6056 EXCEPTION_CODE => NULL ,
6057 EXCEPTION_TEXT => 'Invalid Code combination ,please check the VAT Tax - Tax Type Accounting Setup'
6058 );
6059 */
6060 END IF;
6061
6062 /*
6063 || End of bug 4212816
6064 */
6065
6066 /* Added by CSahoo for the TCS enhancements Bug# 5631784 */
6067 ELSIF UPPER(nvl(ln_regime_code, '####')) =
6068 jai_constants.tcs_regime THEN
6069 -- Start of A1
6070
6071 /*********************************************************************************************************
6072 || Get the code combination id from the Organization/Regime Registration setup
6073 || by calling the function jai_rgm_trx_recording_pkg.get_account
6074 *********************************************************************************************************/
6075
6076 v_ccid := jai_cmn_rgm_recording_pkg.get_account(p_regime_id => ln_regime_id,
6077 p_organization_type => jai_constants.orgn_type_io,
6078 p_organization_id => v_organization_id,
6079 p_location_id => v_location_id,
6080 p_tax_type => tax_type_rec.t_type,
6081 p_account_name => jai_constants.liability_interim);
6082 IF v_ccid IS NULL THEN
6083 /**********************************************************************************************************
6084 || Code Combination id has been returned as null from the function jai_rgm_trx_recording_pkg.get_account
6085 || This is an error condition and the current processing has to be stopped
6086 **********************************************************************************************************/
6087 pv_return_code := jai_constants.expected_error;
6088 pv_return_message := 'Invalid Code combination ,please check the TCS Tax - Tax Accounting Setup'|| tax_type_rec.t_type;
6089 return;
6090 /*raise_application_error(-20130,
6091 'Invalid Code combination ,please check the TCS Tax - Tax Accounting Setup');*/--Commented by zhiwei for open interface ER 20101116
6092
6093 END IF;
6094
6095 /*End of bug 5631784 */
6096
6097 ELSE
6098 -- ELSE of A1
6099 /*
6100 || As tax type is not SERVICE hence
6101 || get code combination from tax definition setup
6102 */
6103 OPEN TAX_CCID_CUR(TAX_TYPE_REC.taxid);
6104 FETCH TAX_CCID_CUR
6105 INTO v_ccid;
6106 CLOSE TAX_CCID_CUR;
6107 END IF;
6108 IF NVL(v_counter, 0) = 0 THEN
6109
6110
6111
6112 INSERT INTO JAI_AR_TRX_INS_LINES_T
6113 (
6114 INTERFACE_FLAG,--added by zhiwei for Open Interface ER 20101116
6115 extended_amount,
6116 customer_trx_line_id,
6117 customer_trx_id,
6118 set_of_books_id,
6119 link_to_cust_trx_line_id,
6120 line_type,
6121 uom_code,
6122 vat_tax_id,
6123 acctd_amount,
6124 amount,
6125 CODE_COMBINATION_ID,
6126 cust_trx_line_sales_rep_id,
6127 insert_update_flag,
6128 last_update_date,
6129 last_updated_by,
6130 creation_date,
6131 created_by,
6132 last_update_login,
6133 tax_rate, -- Tax_rate column added by Jagdish/Subbu 10-Jun-01
6134 Source, -- Source Column added by Sriram / Pavan
6135 org_id, -- org_id column added by sriram - bug # 2779967
6136 line_number) -- added by sriram - bug # 2769439
6137 VALUES
6138 (
6139 'Y',--added by zhiwei for Open Interface ER 20101116
6140 round(TAX_TYPE_REC.tax_amt, ln_inv_curr_precision), /* rounding based on inv currency precision - bug# 5364120*/
6141 TAX_TYPE_REC.line_id,
6142 v_customer_trx_id,
6143 v_books_id,
6144 get_jai_trx_line.customer_trx_line_id,
6145 v_line_type,
6146 TAX_TYPE_REC.uom,
6147 ln_tax_rate_id, --v_vat_tax, /* Modified by Ramananda for bug#4468353 due to ebtax uptake by AR */
6148 v_converted_rate * TAX_TYPE_REC.tax_amt,
6149 round(TAX_TYPE_REC.tax_amt, ln_inv_curr_precision), /* rounding based on inv currency precision - bug# 5364120*/
6150 v_ccid,
6151 v_salesrep_id,
6152 'U',
6153 get_jai_trx_line.last_update_date,
6154 get_jai_trx_line.last_updated_by,
6155 get_jai_trx_line.creation_date,
6156 get_jai_trx_line.created_by,
6157 get_jai_trx_line.last_update_login,
6158 TAX_TYPE_REC.tax_rate, --- Tax_rate column added by Jagdish/Subbu 10-Jun-01
6159 v_Created_from, -- v_created_from column added by Sriram - 09-MAY-2002
6160 v_org_id, -- added by sriram bug # 2779967
6161 tax_type_rec.tax_line_no); -- added by sriram - bug # 2769439
6162 ELSE
6163
6164 UPDATE JAI_AR_TRX_INS_LINES_T
6165 SET extended_amount = TAX_TYPE_REC.tax_amt,
6166 set_of_books_id = v_books_id,
6167 line_type = v_line_type,
6168 uom_code = TAX_TYPE_REC.uom,
6169 acctd_amount = v_converted_rate *
6170 TAX_TYPE_REC.tax_amt,
6171 amount = TAX_TYPE_REC.tax_amt,
6172 insert_update_flag = 'U',
6173 tax_rate = TAX_TYPE_REC.tax_rate -- Tax_rate column added by Jagdish/Subbu 10-Jun-01
6174 WHERE customer_trx_id = v_customer_trx_id
6175 AND customer_trx_line_id = TAX_TYPE_REC.line_id;
6176 END IF;
6177 END IF;
6178 END LOOP;
6179
6180
6181 -- END IF; Commented BY ZHIWEI
6182 EXCEPTION
6183 WHEN OTHERS THEN
6184 pv_return_code := jai_constants.unexpected_error;
6185 pv_return_message := 'Encountered an error in JAI_JAR_TL_TRIGGER_PKG.ARU_T1 ' ||
6186 substr(sqlerrm, 1, 1900);
6187
6188 END populate_temp_table;
6189
6190 /*
6191 || Delete TAX OR FREIGHT LINE IN RA_CUSTOMER_TRX_LINES_ALL AND RA_CUST_TRX_LINE_GL_DIS_ALL
6192 */
6193 PROCEDURE delete_trx_data(p_customer_trx_id IN ra_customer_trx_all.customer_trx_id%TYPE,
6194 p_link_to_cust_trx_line_id IN ra_customer_trx_lines_all.link_to_cust_trx_line_id%TYPE DEFAULT NULL,
6195 p_process_status OUT NOCOPY VARCHAR2,
6196 p_process_message OUT NOCOPY VARCHAR2) IS
6197 lv_object_name user_procedures.object_name%type;
6198 lv_procedure_name user_procedures.procedure_name%type;
6199 ln_exists NUMBER := 0;
6200 lv_sqlstmt VARCHAR2(2000);
6201 lv_account_class_tax VARCHAR2(10) := 'TAX';
6202 lv_account_class_freight VARCHAR2(10) := 'FREIGHT';
6203
6204 --get the sum of amount, acctd_amount and max of acctd_amount from ra_cust_trx_line_gl_dist_all for cp_customer_trx_id
6205 --and account_class in ('TAX','FREIGHT')
6206 CURSOR cur_total_amt_gl_dist(cp_customer_trx_id ra_customer_trx_all.customer_trx_id%TYPE) IS
6207 SELECT NVL(SUM(amount), 0) amount,
6208 NVL(SUM(acctd_amount), 0) acctd_amount,
6209 MAX(acctd_amount) max_acctd_amount
6210 FROM ra_cust_trx_line_gl_dist_all
6211 WHERE customer_trx_id = cp_customer_trx_id
6212 AND account_class IN
6213 (lv_account_class_tax, lv_account_class_freight);
6214
6215 --get the data from JAI_AR_TRX_INS_LINES_T for customer_trx_id and link_to_cust_trx_line_id
6216 CURSOR cur_temp_lines_insert(cp_customer_trx_id ra_customer_trx_all.customer_trx_id%TYPE, cp_link_to_cust_trx_line_id JAI_AR_TRX_INS_LINES_T.link_to_cust_trx_line_id%TYPE DEFAULT NULL) IS
6217 SELECT *
6218 FROM JAI_AR_TRX_INS_LINES_T
6219 WHERE customer_trx_id = cp_customer_trx_id
6220 AND link_to_cust_trx_line_id =
6221 NVL(cp_link_to_cust_trx_line_id, link_to_cust_trx_line_id)
6222 ORDER BY link_to_cust_trx_line_id, customer_trx_line_id;
6223
6224 /* Ramananda for bug#5219225. */
6225 CURSOR c_proc_exists(cp_object_name user_procedures.object_name%type, cp_procedure_name user_procedures.procedure_name%type) IS
6226 SELECT 1
6227 FROM user_procedures
6228 WHERE object_name = cp_object_name
6229 AND procedure_name = cp_procedure_name;
6230
6231 BEGIN
6232 p_process_status := jai_constants.successful;
6233 p_process_message := NULL;
6234
6235 /* Ramananda for bug#5219225. START */
6236 lv_object_name := 'AR_MRC_ENGINE';
6237 lv_procedure_name := 'MAINTAIN_MRC_DATA';
6238
6239 OPEN c_proc_exists(lv_object_name, lv_procedure_name);
6240 FETCH c_proc_exists
6241 INTO ln_exists;
6242 CLOSE c_proc_exists;
6243 IF ln_exists = 1 THEN
6244 --delete the mrc data from ra_cust_trx_line_gl_dist_all
6245 FOR rec_mrc IN (SELECT cust_trx_line_gl_dist_id
6246 FROM ra_cust_trx_line_gl_dist_all
6247 WHERE customer_trx_id = p_customer_trx_id
6248 AND account_class IN ('TAX', 'FREIGHT')
6249 AND customer_trx_line_id IN
6250 (SELECT customer_trx_line_id
6251 FROM ra_customer_trx_lines_all
6252 WHERE customer_trx_id = p_customer_trx_id
6253 AND link_to_cust_trx_line_id =
6254 NVL(p_link_to_cust_trx_line_id,
6255 link_to_cust_trx_line_id)
6256 AND line_type in ('TAX', 'FREIGHT'))) LOOP
6257
6258 lv_sqlstmt := 'BEGIN ar_mrc_engine.maintain_mrc_data(
6259 p_event_mode =>''DELETE'',
6260 p_table_name =>''RA_CUST_TRX_LINE_GL_DIST'',
6261 p_mode =>''SINGLE'',
6262 p_key_value => :1
6263 );
6264
6265 END; ';
6266 EXECUTE IMMEDIATE lv_sqlstmt
6267 USING rec_mrc.cust_trx_line_gl_dist_id;
6268 END LOOP;
6269 END IF;
6270
6271 --delete the data from ra_cust_trx_line_gl_dist_all
6272 DELETE ra_cust_trx_line_gl_dist_all
6273 WHERE customer_trx_id = p_customer_trx_id
6274 AND account_class IN ('TAX', 'FREIGHT')
6275 AND customer_trx_line_id IN
6276 (SELECT customer_trx_line_id
6277 FROM ra_customer_trx_lines_all
6278 WHERE customer_trx_id = p_customer_trx_id
6279 AND link_to_cust_trx_line_id =
6280 NVL(p_link_to_cust_trx_line_id, link_to_cust_trx_line_id)
6281 AND line_type in ('TAX', 'FREIGHT'));
6282
6283 --delete the data from ra_customer_trx_lines_all
6284 DELETE ra_customer_trx_lines_all
6285 WHERE customer_trx_id = p_customer_trx_id
6286 AND link_to_cust_trx_line_id =
6287 NVL(p_link_to_cust_trx_line_id, link_to_cust_trx_line_id)
6288 AND line_type IN ('TAX', 'FREIGHT');
6289
6290 EXCEPTION
6291 WHEN OTHERS THEN
6292 p_process_status := jai_constants.unexpected_error;
6293 p_process_message := SUBSTR(SQLERRM, 1, 300);
6294 END delete_trx_data;
6295
6296
6297
6298
6299
6300
6301 /*
6302 || Fire jai_ar_rcta_trigger_pkg.aru_t1
6303 */
6304 PROCEDURE fire_aru_t1(
6305 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6306 ov_return_code OUT NOCOPY VARCHAR2,
6307 ov_return_message OUT NOCOPY VARCHAR2
6308 )
6309 IS
6310 --Cursor define here
6311 CURSOR get_ar_detail_cur
6312 IS
6313 SELECT *
6314 FROM RA_CUSTOMER_TRX_ALL
6315 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6316 --Variable define here
6317 lv_action VARCHAR2(20) := jai_constants.updating;
6318 lv_return_message VARCHAR2(2000);
6319 lv_return_code VARCHAR2(100) ;
6320 rec_ar_detail RA_CUSTOMER_TRX_ALL%ROWTYPE;
6321 --Main block
6322 BEGIN
6323 FOR rec_ar_detail IN get_ar_detail_cur
6324 LOOP
6325 --PROCESS HERE
6326 JAI_AR_RCTA_TRIGGER_PKG.ARU_T1(
6327 pr_old => rec_ar_detail,
6328 pr_new => rec_ar_detail,
6329 pv_action => lv_action,
6330 pv_return_code => lv_return_code,
6331 pv_return_message => lv_return_message
6332 );
6333 ov_return_code := lv_return_code;
6334 ov_return_message := lv_return_message;
6335
6336
6337 END LOOP;
6338
6339 END fire_aru_t1;
6340
6341
6342 /*
6343 || Fire jai_ar_rcta_trigger_pkg.aru_t1
6344 */
6345 PROCEDURE fire_aru_t3(
6346 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6347 ov_return_code OUT NOCOPY VARCHAR2,
6348 ov_return_message OUT NOCOPY VARCHAR2
6349 )
6350 IS
6351 CURSOR get_ar_detail_cur
6352 IS
6353 SELECT *
6354 FROM RA_CUSTOMER_TRX_ALL
6355 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6356
6357 lv_action VARCHAR2(20) := jai_constants.updating;
6358 lv_return_message VARCHAR2(2000);
6359 lv_return_code VARCHAR2(100) ;
6360 rec_ar_detail RA_CUSTOMER_TRX_ALL%ROWTYPE;
6361 BEGIN
6362 FOR rec_ar_detail IN get_ar_detail_cur
6363 LOOP
6364 --PROCESS HERE
6365 JAI_AR_RCTA_TRIGGER_PKG.ARU_T3(
6366 pr_old => rec_ar_detail ,
6367 pr_new => rec_ar_detail ,
6368 pv_action => lv_action ,
6369 pv_return_code => lv_return_code ,
6370 pv_return_message => lv_return_message
6371 );
6372 ov_return_code := lv_return_code;
6373 ov_return_message := lv_return_message;
6374 --IF lv_return_code <> jai_constants.successful then
6375 -- RAISE le_error;
6376 --END IF;
6377 END LOOP;
6378
6379 END fire_aru_t3;
6380
6381
6382 /*
6383 || Fire jai_ar_rcta_trigger_pkg.aru_t1
6384 */
6385 PROCEDURE fire_aru_t4(
6386 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6387 ov_return_code OUT NOCOPY VARCHAR2,
6388 ov_return_message OUT NOCOPY VARCHAR2
6389 )
6390 IS
6391 CURSOR get_ar_detail_cur
6392 IS
6393 SELECT *
6394 FROM RA_CUSTOMER_TRX_ALL
6395 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6396
6397 lv_action VARCHAR2(20) := jai_constants.updating;
6398 lv_return_message VARCHAR2(2000);
6399 lv_return_code VARCHAR2(100) ;
6400 rec_ar_detail RA_CUSTOMER_TRX_ALL%ROWTYPE;
6401 BEGIN
6402 FOR rec_ar_detail IN get_ar_detail_cur
6403 LOOP
6404 --PROCESS HERE
6405 JAI_AR_RCTA_TRIGGER_PKG.ARU_T4(
6406 pr_old => rec_ar_detail ,
6407 pr_new => rec_ar_detail ,
6408 pv_action => lv_action ,
6409 pv_return_code => lv_return_code ,
6410 pv_return_message => lv_return_message
6411 );
6412 ov_return_code := lv_return_code;
6413 ov_return_message := lv_return_message;
6414 --IF lv_return_code <> jai_constants.successful then
6415 -- RAISE le_error;
6416
6417 --END IF;
6418 END LOOP;
6419
6420 END fire_aru_t4;
6421
6422
6423 /*
6424 || Fire jai_ar_rcta_trigger_pkg.aru_t1
6425 */
6426 PROCEDURE fire_aru_t7(
6427 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6428 ov_return_code OUT NOCOPY VARCHAR2,
6429 ov_return_message OUT NOCOPY VARCHAR2
6430 )
6431 IS
6432 CURSOR get_ar_detail_cur
6433 IS
6434 SELECT *
6435 FROM RA_CUSTOMER_TRX_ALL
6436 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6437
6438 lv_action VARCHAR2(20) := jai_constants.updating;
6439 lv_return_message VARCHAR2(2000);
6440 lv_return_code VARCHAR2(100) ;
6441 rec_ar_detail RA_CUSTOMER_TRX_ALL%ROWTYPE;
6442 BEGIN
6443 FOR rec_ar_detail IN get_ar_detail_cur
6444 LOOP
6445 --PROCESS HERE
6446 JAI_AR_RCTA_TRIGGER_PKG.ARU_T7(
6447 pr_old => rec_ar_detail ,
6448 pr_new => rec_ar_detail ,
6449 pv_action => lv_action ,
6450 pv_return_code => lv_return_code ,
6451 pv_return_message => lv_return_message
6452 );
6453 ov_return_code := lv_return_code;
6454 ov_return_message := lv_return_message;
6455 --IF lv_return_code <> jai_constants.successful then
6456 -- RAISE le_error;
6457
6458 --END IF;
6459 END LOOP;
6460
6461 END fire_aru_t7;
6462
6463 /*
6464 || Fire jai_jar_trxs_trigger_pkg.aru_t1
6465 */
6466 PROCEDURE fire_jai_aru_t1(
6467 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6468 ov_return_code OUT NOCOPY VARCHAR2,
6469 ov_return_message OUT NOCOPY VARCHAR2
6470 )
6471 IS
6472 CURSOR get_jai_ar_detail_cur
6473 IS
6474 SELECT *
6475 FROM jai_ar_trxs
6476 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6477
6478 CURSOR get_item_info_cur
6479 IS
6480 SELECT inventory_item_id, org_id
6481 FROM ra_customer_trx_lines_all
6482 WHERE customer_trx_id = pn_customer_trx_id
6483 AND line_type = 'LINE';
6484
6485 cursor item_class_cur(P_ORG_ID IN NUMBER,P_INVENTORY_ITEM_ID IN NUMBER) IS
6486 select item_class--, excise_flag,item_trading_flag
6487 from jai_inv_itm_setups
6488 where inventory_item_id = p_inventory_item_id
6489 AND organization_id = p_org_id;
6490
6491 lv_action VARCHAR2(20) := jai_constants.updating;
6492 lv_return_message VARCHAR2(2000);
6493 lv_return_code VARCHAR2(100) ;
6494 rec_jai_ar_detail jai_ar_trxs%ROWTYPE;
6495 ln_item_id NUMBER;
6496 ln_org_id NUMBER;
6497 v_item_class VARCHAR2(20);
6498 v_payment_register Varchar2(30) ;
6499 BEGIN
6500
6501 /*FOR item_rec IN get_item_info_cur
6502 LOOP
6503 -- IF NVL(v_excise_flag,'N') = 'Y' THEN
6504
6505 OPEN item_class_cur(item_rec.org_id,item_rec.inventory_item_id);
6506 FETCH item_class_cur INTO v_item_class; --, v_excise_flag,V_item_trading_flag;
6507 CLOSE item_class_cur;
6508 IF v_item_class IN ('CGIN', 'CGEX') THEN
6509 v_payment_register := 'RG23C';
6510 ELSIF v_item_class IN ('RMIN', 'RMEX') THEN
6511 v_payment_register := 'RG23A';
6512 END IF;*/
6513 /* in Manufacturing org: Update RG23C register
6514 Item RMIN, RMEX in Manufacturing org: Update RG23A register
6515 For above cases, PLA register will be updated when adjust amount is > RG23 banlance amount.
6516
6517 Item FGIN,FGEX,CCIN,CCEX in Manufacturing org: Update RG1 register
6518 In Trading org: Update RG23D register*/
6519
6520 --END LOOP;
6521
6522
6523 FOR rec_jai_ar_detail IN get_jai_ar_detail_cur
6524 LOOP
6525 --PROCESS HERE
6526 jai_jar_trxs_trigger_pkg.aru_t1(
6527 pr_old => rec_jai_ar_detail,
6528 pr_new => rec_jai_ar_detail,
6529 pv_action => lv_action,
6530 pv_return_code => lv_return_code,
6531 pv_return_message => lv_return_message
6532 );
6533 ov_return_code := lv_return_code;
6534 ov_return_message := lv_return_message;
6535 --IF lv_return_code <> jai_constants.successful then
6536 -- RAISE le_error;
6537 --END IF;
6538 END LOOP;
6539
6540 END fire_jai_aru_t1;
6541
6542 /*
6543 ||
6544 */
6545 PROCEDURE acc_inclusive_tax(
6546 pn_customer_trx_id IN RA_CUSTOMER_TRX_ALL.CUSTOMER_TRX_ID%TYPE,
6547 ov_return_code OUT NOCOPY VARCHAR2,
6548 ov_return_message OUT NOCOPY VARCHAR2
6549 )
6550 IS
6551 CURSOR organization_id_check(cn_customer_trx_id number) IS
6552 SELECT
6553 NVL(organization_id,-1) organization_id
6554 FROM jai_ar_trxs
6555 WHERE customer_trx_id = cn_customer_trx_id;
6556
6557 CURSOR get_ar_org_id_cur
6558 IS
6559 SELECT ORG_ID,cust_trx_type_id
6560 FROM RA_CUSTOMER_TRX_ALL
6561 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6562
6563 CURSOR inclu_flag_cur(cn_org_id IN NUMBER)
6564 IS
6565 SELECT
6566 NVL(ja.inclusive_tax_flag, 'N') inclusive_tax_flag
6567 FROM
6568 jai_ap_tds_years ja
6569 WHERE ja.legal_entity_id = cn_org_id
6570 AND sysdate between ja.start_date and ja.end_date;
6571
6572
6573 lv_return_message VARCHAR2(2000);
6574 lv_return_code VARCHAR2(100) ;
6575 ln_organization_id NUMBER;
6576 ln_org_id NUMBER;
6577 lv_inclu_tax_flag VARCHAR2(3) ;
6578 ln_cust_trx_type_id NUMBER;
6579
6580 BEGIN
6581 lv_return_code := JAI_CONSTANTS.SUCCESSFUL;
6582
6583 OPEN organization_id_check(pn_customer_trx_id);
6584 FETCH organization_id_check INTO ln_organization_id;
6585 CLOSE organization_id_check;
6586
6587 OPEN get_ar_org_id_cur;
6588 FETCH get_ar_org_id_cur INTO ln_org_id,ln_cust_trx_type_id;
6589 CLOSE get_ar_org_id_cur;
6590
6591 IF ln_organization_id <> -1 THEN --Added for bug#8864023
6592 -- Check if inclusive taxes needs to be accounted separately
6593 OPEN inclu_flag_cur(ln_org_id);
6594 FETCH inclu_flag_cur INTO lv_inclu_tax_flag;
6595 CLOSE inclu_flag_cur;
6596
6597 IF lv_inclu_tax_flag = 'Y'
6598 THEN
6599 jai_ar_match_tax_pkg.acct_inclu_taxes( pn_customer_trx_id => pn_customer_trx_id
6600 , pn_org_id => ln_org_id
6601 , pn_cust_trx_type_id => ln_cust_trx_type_id
6602 , xv_process_flag => lv_return_code
6603 , xv_process_message => lv_return_message);
6604
6605 ov_return_code := lv_return_code;
6606 ov_return_message := lv_return_message;
6607 --IF lv_return_code <> jai_constants.successful then
6608 -- RAISE le_error;
6609
6610 --END IF;
6611
6612 END IF; --lv_inclu_tax_flag = 'Y'
6613 END IF; -- v_organization_id <> -1
6614 END;
6615
6616 /*
6617 || Update ar refernece field for Standard Event.
6618 */
6619 PROCEDURE update_ar_reference(
6620 ov_retcode OUT NOCOPY VARCHAR2,
6621 ov_errbuf OUT NOCOPY VARCHAR2,
6622 pn_customer_trx_id IN NUMBER )
6623 IS
6624 lv_return_message VARCHAR2(2000);
6625 lv_return_code VARCHAR2(100) := '0';
6626 ln_external_flag NUMBER;
6627 BEGIN
6628
6629 SELECT COUNT(lines.customer_trx_id)
6630 INTO ln_external_flag
6631 FROM jai_ar_trx_lines lines,
6632 jai_interface_lines_all intfs
6633 WHERE lines.customer_trx_line_id = intfs.internal_trx_line_id
6634 AND lines.customer_trx_id = pn_customer_trx_id
6635 AND lines.interface_flag = 'Y'
6636 AND intfs.taxable_event = 'EXTERNAL';
6637
6638 jai_ar_trx_pkg.update_reference(
6639 retcode => lv_return_code,
6640 errbuf => lv_return_message,
6641 pn_customer_trx_id => pn_customer_trx_id);
6642
6643 IF lv_return_code = '0' THEN
6644 ov_retcode := 'SS';
6645 ELSE
6646 ov_retcode := 'UE';
6647 END IF;
6648 ov_errbuf := lv_return_message;
6649
6650 END update_ar_reference;
6651
6652
6653 --Added by zhwiei for POT change bug#13023443 begin
6654 --------------------------------------------------------------------
6655 /*
6656 || Exists Service Tax, if Y return true; else return false;
6657 */
6658 FUNCTION exist_service_tax(pn_customer_trx_line_id IN NUMBER)
6659 RETURN BOOLEAN
6660 IS
6661 cursor chk_service_tax
6662 is
6663 select 1
6664 from
6665 JAI_AR_TRX_TAX_LINES taxes ,
6666 JAI_CMN_TAXES_ALL define
6667 where taxes.tax_id = define.tax_id
6668 and taxes.customer_trx_line_id = pn_customer_trx_line_id
6669 and upper(define.tax_type) IN ( upper(jai_constants.tax_type_service),
6670 jai_constants.tax_type_service_edu_cess ,
6671 jai_constants.tax_type_sh_service_edu_cess);
6672 ln_flag number;
6673 BEGIN
6674 open chk_service_tax;
6675 fetch chk_service_tax into ln_flag;
6676 close chk_service_tax;
6677
6678 if nvl(ln_flag,0) = 1 then
6679 return true;
6680 else
6681 return false;
6682 end if;
6683
6684 END exist_service_tax;
6685
6686
6687 /*
6688 LOGIC COME FROM AR FRIGHT CONCURRENT for manual AR. JAI_AR_MATCH_TAX_PKG.PROCESS_MANUAL_INVOICE
6689 GET DATA FROM LINE_T , POPULATE INTO RA_CUSTOMER_TRX_LINES_ALL TAX LINE,
6690 POPULATE INTO RA_CUSTOMER_TRX_GL_DIS_ALL
6691 */
6692 PROCEDURE process_trx_dis_bal_lines(pv_type IN VARCHAR2,
6693 pv_event IN VARCHAR2,
6694 pn_customer_trx_id IN NUMBER,
6695 pn_customer_trx_line_id IN NUMBER,
6696 pn_interface_line_id IN NUMBER,
6697 p_process_flag OUT NOCOPY VARCHAR2,
6698 p_process_message OUT NOCOPY VARCHAR2
6699 )
6700 IS
6701 v_counter Number := 0;
6702 v_organization_id NUMBER;
6703 v_location_id NUMBER;
6704 v_batch_source_id NUMBER;
6705 v_register_code VARCHAR2(50);
6706 v_salesrep_id NUMBER;
6707 v_gl_date Date;
6708 v_org_id Number;
6709 v_line_no Number := 0;
6710 v_receivable_amount Number := 0;
6711 v_receivable_acctd_amount Number := 0;
6712 v_old_amount Number := 0;
6713 v_old_acctd_amount Number := 0;
6714 v_vat_tax_id nUMBER(15);
6715 v_created_from Varchar2(40);
6716 v_tax_amount Number := 0;
6717 v_tax_amount1 Number := 0;
6718 v_freight_amount Number := 0;
6719 v_freight_amount1 Number := 0;
6720 v_payment_schedule_id Number;
6721 lv_tax_const CONSTANT VARChar2(10) := 'TAX';
6722 lv_freight_acc_class CONSTANT varchar2(10) := 'FREIGHT';
6723 lv_acc_class_rev CONSTANT varchar2(10) := 'REV';
6724 lv_acc_class_rec CONSTANT varchar2(10) := 'REC';
6725 v_books_id NUMBER;
6726 c_from_currency_code VARCHAR2(15);
6727 c_conversion_type VARCHAR2(30);
6728 c_conversion_date DATE;
6729 c_conversion_rate NUMBER := 0;
6730 v_converted_rate NUMBER := 1;
6731 l_func_curr_det jai_plsql_cache_pkg.func_curr_details;
6732
6733 CURSOR count_cur IS
6734 SELECT count(customer_trx_line_id)
6735 FROM JAI_AR_TRX_INS_LINES_T
6736 WHERE customer_trx_id = pn_customer_trx_id;
6737
6738 v_exter_code_combination_id JAI_INTERFACE_TAX_LINES_ALL.CODE_COMBINATION_ID%TYPE;
6739 v_exter_percent NUMBER;
6740 v_exter_amount JAI_INTERFACE_TAX_LINES_ALL.TAX_AMOUNT%TYPE;
6741
6742 v_exter_request_id NUMBER;
6743
6744 CURSOR cur_get_external_dis_detail(pn_c_tax_line_no IN JAI_INTERFACE_TAX_LINES_ALL.TAX_LINE_NO%TYPE) IS
6745 SELECT
6746 CODE_COMBINATION_ID,
6747 100,--Hardcode temporarily.
6748 TAX_AMOUNT,
6749 GN_REQUEST_ID
6750 FROM JAI_INTERFACE_TAX_LINES_ALL TAX
6751 WHERE TAX.INTERFACE_LINE_ID = pn_interface_line_id
6752 AND TAX_LINE_NO = pn_c_tax_line_no;--TEMP_REC.LINE_NUMBER
6753
6754
6755 CURSOR SO_AR_HDR_INFO IS
6756 SELECT organization_id, location_id, batch_source_id
6757 FROM JAI_AR_TRXS
6758 WHERE Customer_Trx_ID = pn_customer_trx_id;
6759
6760 CURSOR ORG_CUR IS
6761 SELECT ORG_ID, CREATED_FROM
6762 FROM RA_CUSTOMER_TRX_ALL
6763 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6764
6765
6766 CURSOR TEMP_CUR IS
6767 SELECT EXTENDED_AMOUNT,
6768 CUSTOMER_TRX_LINE_ID,
6769 CUSTOMER_TRX_ID,
6770 SET_OF_BOOKS_ID,
6771 LINK_TO_CUST_TRX_LINE_ID,
6772 LINE_TYPE,
6773 UOM_CODE,
6774 VAT_TAX_ID,
6775 ACCTD_AMOUNT,
6776 AMOUNT,
6777 CODE_COMBINATION_ID,
6778 CUST_TRX_LINE_SALES_REP_ID,
6779 LAST_UPDATE_DATE,
6780 LAST_UPDATED_BY,
6781 CREATION_DATE,
6782 CREATED_BY,
6783 LAST_UPDATE_LOGIN,
6784 INSERT_UPDATE_FLAG,
6785 LINE_NUMBER --ADD BY ZHIWEI
6786 FROM JAI_AR_TRX_INS_LINES_T
6787 WHERE customer_trx_id = pn_customer_trx_id
6788 and link_to_cust_trx_line_id = pn_customer_trx_line_id
6789 order by CUSTOMER_TRX_LINE_ID;
6790
6791
6792 /* Added by Ramananda for bug#4468353 due to SLA uptake by AR */
6793
6794 CURSOR c_gl_posted_date_cur(p_customer_trx_line_id RA_CUST_TRX_LINE_GL_DIST_ALL.customer_trx_line_id%type) IS
6795 SELECT gl_posted_date
6796 from RA_CUST_TRX_LINE_GL_DIST_ALL
6797 where customer_trx_line_id = p_customer_trx_line_id
6798 and account_class = 'REC'
6799 and latest_rec_flag = 'Y';
6800
6801
6802 ld_gl_posted_date RA_CUST_TRX_LINE_GL_DIST_ALL.gl_posted_date%type;
6803
6804 CURSOR GL_DATE_CUR IS
6805 SELECT DISTINCT gl_date
6806 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
6807 WHERE CUSTOMER_TRX_LINE_ID IN
6808 (SELECT LINK_TO_CUST_TRX_LINE_ID
6809 FROM JAI_AR_TRX_INS_LINES_T
6810 WHERE customer_trx_id = pn_customer_trx_id);
6811
6812
6813 CURSOR MAX_LINE_CUR(p_cust_link_line_id IN NUMBER, p_line_type IN VARCHAR2) IS
6814 SELECT NVL(MAX(line_number), 0)
6815 FROM RA_CUSTOMER_TRX_LINES_ALL
6816 WHERE link_to_cust_trx_line_id = p_cust_link_line_id
6817 and line_type = p_line_type;
6818
6819
6820 CURSOR LINK_LINE_CUR IS
6821 SELECT LINK_TO_CUST_TRX_LINE_ID, ERROR_FLAG --added the error_flag condition to process the records,which got stuck up
6822 FROM JAI_AR_TRX_INS_LINES_T
6823 WHERE customer_trx_id = pn_customer_trx_id
6824 AND LINK_TO_CUST_TRX_LINE_ID = pn_customer_trx_line_id;
6825
6826
6827 CURSOR PREVIOUS_AMOUNT_CUR IS
6828 SELECT A.AMOUNT, A.ACCTD_AMOUNT
6829 FROM RA_CUST_TRX_LINE_GL_DIST_ALL A,
6830 RA_CUSTOMER_TRX_LINES_ALL B,
6831 JAI_AR_TRX_INS_LINES_T C
6832 WHERE A.CUSTOMER_TRX_LINE_ID = B.CUSTOMER_TRX_LINE_ID
6833 AND B.LINK_TO_CUST_TRX_LINE_ID = C.LINK_TO_CUST_TRX_LINE_ID
6834 AND C.CUSTOMER_TRX_ID = pn_customer_trx_id
6835 AND A.ACCOUNT_CLASS IN (lv_tax_const, lv_freight_acc_class)
6836 AND A.CUSTOMER_TRX_LINE_ID = C.CUSTOMER_TRX_LINE_ID;
6837
6838
6839 /* Added by Ramananda for bug#4468353 due to ebtax uptake by AR, start */
6840
6841 lv_tax_regime_code zx_rates_b.tax_regime_code%type;
6842 ln_party_tax_profile_id zx_party_tax_profile.party_tax_profile_id%type;
6843 ln_tax_rate_id zx_rates_b.tax_rate_id%type;
6844 /* Added by Ramananda for bug#4468353 due to ebtax uptake by AR, end */
6845
6846
6847 --2001/06/26 Anuradha Parthasarathy
6848 Cursor payment_schedule_cur IS
6849 Select min(payment_schedule_id)
6850 From Ar_Payment_Schedules_All
6851 Where Customer_trx_ID = pn_customer_trx_id;
6852
6853
6854 /* AR Transactions with Invoicing Acctg Rules not supported by Localization, Enhancement Done on 16th NOV */
6855
6856 Cursor accounting_set_cur IS
6857 Select accounting_rule_id
6858 From Ra_Customer_Trx_Lines_All
6859 Where Customer_Trx_Line_Id = pn_customer_trx_line_id;
6860
6861 v_accounting_rule_id Number;
6862 v_account_set_flag Char(1);
6863
6864 Cursor prev_customer_trx_cur(p_line_type ra_customer_trx_lines_all.line_type%TYPE) is
6865 Select previous_customer_trx_id
6866 from ra_customer_trx_lines_all
6867 where customer_trx_id = pn_customer_trx_id
6868 and line_type = p_line_type;
6869
6870 --AND customer_trx_line_id = pn_customer_trx_line_id; --Added this condition on 05-Apr-2002 as it should fetch only one value
6871 v_prev_customer_trx_id Number;
6872
6873 Cursor Inv_payment_schedule_cur(p_prev_customer_trx_id IN Number) is
6874 Select payment_schedule_id
6875 from ar_payment_schedules_all
6876 where customer_trx_id = p_prev_customer_trx_id;
6877
6878
6879 --2001/07/04 Anuradha Parthasarathy
6880 v_interface_line_attribute6 Varchar2(30);
6881 v_return_reference_type_code Varchar2(30);
6882 v_credit_invoice_line_id Number;
6883
6884 Cursor line_id_cur(p_line_type ra_customer_trx_lines_all.line_type%TYPE) is
6885 Select interface_line_attribute6
6886 From ra_customer_trx_lines_all
6887 Where customer_trx_id = pn_customer_trx_id
6888 and line_type = p_line_type;
6889
6890
6891 Cursor Ref_type_cur(p_line_id IN Number) is
6892 Select context, reference_line_id
6893 From oe_order_lines_all
6894 Where line_id = p_line_id;
6895
6896
6897 v_upd_created_from varchar2(15);
6898 v_rma_check Number;
6899 v_temp_cust_trx_id Number;
6900
6901 CURSOR ORG_CUR_UPD IS
6902 SELECT created_from, NVL(exchange_rate, 1) exchange_rate --9177024
6903 FROM RA_CUSTOMER_TRX_ALL
6904 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6905
6906
6907 CURSOR check_rma_ref IS
6908 SELECT 1
6909 from JAI_OM_OE_RMA_LINES
6910 WHERE TO_CHAR(RMA_NUMBER) IN
6911 (SELECT INTERFACE_HEADER_ATTRIBUTE1
6912 FROM RA_CUSTOMER_TRX_ALL
6913 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id)
6914 AND Rma_line_id in
6915 (Select RMA_LINE_ID
6916 from JAI_OM_OE_RMA_TAXES a, JAI_CMN_TAXES_ALL b
6917 Where a.tax_id = b.tax_id
6918 AND b.tax_type = jai_constants.tax_type_freight);
6919
6920
6921 --added 12-Mar-2002
6922 CURSOR tax_type IS
6923 SELECT b.tax_type t_type, a.customer_trx_line_id line_id
6924 FROM JAI_AR_TRX_TAX_LINES A, JAI_CMN_TAXES_ALL B
6925 WHERE link_to_cust_trx_line_id = pn_customer_trx_line_id
6926 and A.tax_id = B.tax_id;
6927
6928
6929 CURSOR get_reason IS
6930 SELECT reason_code
6931 FROM RA_CUSTOMER_TRX_ALL
6932 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id;
6933
6934 v_reason_code ra_customer_trx_all.reason_code%TYPE;
6935 --end 12-Mar-2002
6936 v_tax_amt Number;
6937 v_err_mesg VARCHAR2(250);
6938 l_retcode NUMBER(1);
6939 l_errbuf VARCHAR2(1996);
6940
6941 CURSOR get_trx_num IS
6942 SELECT --21-Mar-2002 for ar tax and freight
6943 trx_number
6944 FROM ra_customer_trx_all
6945 WHERE customer_trx_id = pn_customer_trx_id;
6946
6947
6948 --added the following cursor for bug#8476512
6949 CURSOR cur_chk_jai_tax_dtls(cp_customer_trx_line_id IN ra_customer_trx_lines_all.customer_trx_line_id%TYPE, cp_link_to_cust_trx_line_id IN ra_customer_trx_lines_all.link_to_cust_trx_line_id%TYPE) IS
6950 SELECT 1
6951 FROM jai_ar_trx_tax_lines
6952 WHERE customer_trx_line_id = cp_customer_trx_line_id
6953 AND link_to_cust_trx_line_id = cp_link_to_cust_trx_line_id;
6954
6955 ln_tax_line_exists NUMBER; --added for bug#8476512
6956
6957 v_trx_num ra_customer_trx_all.trx_number%TYPE;
6958 v_count_trx NUMBER;
6959 V_sum_amt NUMBER;
6960
6961 ------------------------------------------------------------------------------------------------
6962 -- start of modification added by subbu and Jagdish on 10-jun-01 for discount issue.
6963 v_extended_amount_line number;
6964 v_taxable_amt number := 0;
6965
6966 Cursor get_ext_amt_ln(p_line_type ra_customer_trx_lines.line_type%TYPE) is
6967 Select extended_amount
6968 from Ra_customer_trx_lines_all
6969 where customer_trx_id = pn_customer_trx_id
6970 and customer_trx_line_id = pn_customer_trx_line_id
6971 and line_type = p_line_type; --rchandan for bug#4428980
6972
6973 Cursor get_ext_amt_tax is
6974 Select extended_amount, customer_trx_line_id
6975 from Ra_customer_trx_lines_all
6976 where customer_trx_id = pn_customer_trx_id
6977 and Link_to_cust_trx_line_id = pn_customer_trx_line_id
6978 and line_type = lv_tax_const; --rchandan for bug#4428980
6979
6980 get_ext_amt_tax_rec get_ext_amt_tax%rowtype;
6981
6982 Cursor get_taxable_amt(cust_trx_ln_id number) Is
6983 Select nvl(taxable_amount, 0)
6984 from ra_customer_trx_lines_all
6985 where customer_trx_line_id = cust_trx_ln_id
6986 and customer_trx_id = pn_customer_trx_id
6987 and line_type = lv_tax_const; --rchandan for bug#4428980
6988
6989 CURSOR BOOKS_TRX_CUR IS
6990 SELECT set_of_books_id,
6991 primary_salesrep_id,
6992 invoice_currency_code,
6993 exchange_rate_type,
6994 exchange_date,
6995 exchange_rate
6996 FROM JAI_AR_TRXS
6997 WHERE customer_trx_id = pn_customer_trx_id;
6998 -- end of modification by subbu and Jagdish on 10-jun-01 for discount issue.
6999 ------------------------------------------------------------------------------------------------
7000 --05-Apr-2002
7001
7002 lv_event_id RA_CUST_TRX_LINE_GL_DIST_ALL.EVENT_ID%TYPE; --Added by Bo Li
7003
7004 v_rec_ctr Number;
7005 v_PAYMENT_amt Number := 0;
7006 v_FREIGHT_amt Number := 0;
7007 V_TEMP Number;
7008 v_sql_num Number;
7009 v_amt_a NUMBER;
7010 v_tot_amount NUMBER;
7011 v_sql_count NUMBER;
7012 v1_sql_count NUMBER;
7013
7014 Localization_tax_not_defined EXCEPTION; -- added by sriram - 3340594
7015 Item_lines_already_accounted EXCEPTION;
7016 -- declaration for mrc starts here bug # 3326394
7017
7018 cursor c_gl_dist_cur is
7019 select cust_trx_line_gl_dist_id
7020 from ra_cust_trx_line_gl_dist_all
7021 where customer_trx_id = pn_customer_trx_id
7022 and account_class = lv_acc_class_rec --rchandan for bug#4428980
7023 and latest_rec_flag = 'Y';
7024
7025
7026 v_gl_dist_id number;
7027
7028 /* Added by Ramananda for bug#4468353 due to sla uptake by AR, end */
7029
7030 l_xla_event arp_xla_events.xla_events_type;
7031 --start additions for bug#9177024
7032
7033 lv_process_status VARCHAR2(100);
7034 lv_process_message VARCHAR2(2000);
7035 ln_exchange_rate jai_ar_trxs.exchange_rate%type;
7036 lv_account_class_tax VARCHAR2(10) := 'TAX';
7037 lv_account_class_freight VARCHAR2(10) := 'FREIGHT';
7038 lv_account_class_rec VARCHAR2(10) := 'REC';
7039 ln_precision fnd_currencies.precision%TYPE;
7040 ln_old_amount NUMBER;
7041 ln_taxable_amount NUMBER;
7042 ln_tax_amt NUMBER;
7043 ln_tax_acctd_amount NUMBER;
7044
7045 CURSOR cur_total_amt_trx_lines(cpn_customer_trx_id ra_customer_trx_all.customer_trx_id%TYPE, cp_customer_trx_line_id ra_customer_trx_lines_all.customer_trx_line_id%TYPE DEFAULT NULL, cp_line_type ra_customer_trx_lines_all.line_type%TYPE) IS
7046 SELECT NVL(SUM(extended_amount), 0) extended_amount
7047 FROM ra_customer_trx_lines_all
7048 WHERE customer_trx_id = cpn_customer_trx_id
7049 AND customer_trx_line_id = NVL(cp_customer_trx_line_id, customer_trx_line_id)
7050 AND line_type = cp_line_type;
7051
7052
7053 CURSOR cur_total_amt_gl_dist(cpn_customer_trx_id ra_customer_trx_all.customer_trx_id%TYPE) IS
7054 SELECT NVL(SUM(amount), 0) amount,
7055 NVL(SUM(acctd_amount), 0) acctd_amount
7056 FROM ra_cust_trx_line_gl_dist_all
7057 WHERE customer_trx_id = cpn_customer_trx_id
7058 AND account_class IN (lv_account_class_tax, lv_account_class_freight);
7059
7060 --Added by zhiwei for POT change bug#13023443 begin
7061 -----------------------------------------------------------
7062 Cursor get_org_info_cur
7063 IS
7064 SELECT organization_id,location_id
7065 from JAI_INTERFACE_LINES_ALL
7066 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
7067
7068 ln_organization_id number;
7069 ln_location_id number;
7070 -----------------------------------------------------------
7071 --Added by zhiwei for POT change bug#13023443 end
7072 BEGIN
7073 --MAIN BLOCK BEGIN
7074
7075 v_sql_num := 0;
7076
7077 OPEN get_trx_num;
7078 FETCH get_trx_num INTO v_trx_num;
7079 CLOSE get_trx_num;
7080
7081 l_retcode := 0;
7082 v_sql_num := 1;
7083
7084 open prev_customer_trx_cur('LINE'); --rchandan for bug#4428980
7085 fetch prev_customer_trx_cur into v_temp_cust_trx_id;
7086 close prev_customer_trx_cur;
7087
7088 v_sql_num := 2;
7089
7090 OPEN ORG_CUR_UPD;
7091 FETCH ORG_CUR_UPD INTO v_upd_created_from, ln_exchange_rate;
7092 CLOSE ORG_CUR_UPD;
7093 v_sql_num := 3;
7094
7095 OPEN check_rma_ref;
7096 FETCH check_rma_ref INTO v_rma_check;
7097 CLOSE check_rma_ref;
7098 v_sql_num := 4;
7099
7100 --12-MAR-2002
7101 OPEN get_reason;
7102 FETCH get_reason INTO v_reason_code;
7103 CLOSE get_reason;
7104 v_sql_num := 5;
7105
7106 OPEN payment_schedule_cur;
7107 FETCH payment_schedule_cur INTO v_payment_schedule_id;
7108 CLOSE payment_schedule_cur;
7109 v_sql_num := 6;
7110
7111 OPEN prev_customer_trx_cur('LINE'); --rchandan for bug#4428980
7112 FETCH prev_customer_trx_cur INTO v_prev_customer_trx_id;
7113 CLOSE prev_customer_trx_cur;
7114 v_sql_num := 7;
7115
7116 v_sql_num := 9;
7117
7118 --start additions for bug#9177024
7119 --if v_upd_created_from = 'ARXTWMAI' then --commented by zhiwei for ER OPEN INTERFACE 20101110
7120 --DELETE THE TAX AND FRIGHT LINES IN RA_CUSTOMER_TRX_LINES_ALL AND RA_CUST_TRX_LINE_GL_DIS_ALL--ADDED BY ZHIWEI FOR OPEN INTERFACE 20101116
7121 delete_trx_data(p_customer_trx_id => pn_customer_trx_id,
7122 p_link_to_cust_trx_line_id => pn_customer_trx_line_id,
7123 p_process_status => lv_process_status,
7124 p_process_message => lv_process_message);
7125
7126 --get the tax amount
7127 OPEN cur_total_amt_gl_dist(pn_customer_trx_id);
7128 FETCH cur_total_amt_gl_dist INTO ln_tax_amt, ln_tax_acctd_amount;
7129 CLOSE cur_total_amt_gl_dist;
7130
7131 --get the line amount
7132 OPEN cur_total_amt_trx_lines(pn_customer_trx_id, NULL, 'LINE');
7133 FETCH cur_total_amt_trx_lines INTO ln_old_amount;
7134 CLOSE cur_total_amt_trx_lines;
7135
7136 /* Modified for bug#5495711
7137 || acctd_amount = ROUND( (ln_old_acctd_amount + ln_tax_acctd_amount + ln_diff_tax_frt), ln_precision)
7138 */
7139 /*
7140 UPDATE ra_cust_trx_line_gl_dist_all
7141 SET amount = ln_old_amount + ln_tax_amt,
7142 acctd_amount = ROUND((ln_old_amount * ln_exchange_rate +
7143 ln_tax_acctd_amount),
7144 ln_precision)
7145 WHERE customer_trx_id = pn_customer_trx_id
7146 AND account_class = lv_account_class_rec --'REC'
7147 AND latest_rec_flag = 'Y';
7148 */--Commented by zhiwei for open interface 20101123
7149
7150 --end if;--commented by zhiwei for ER OPEN INTERFACE 20101110
7151
7152 --end addtiions for bug#9177024
7153
7154 SELECT NVL(SUM(AMOUNT), 0)
7155 INTO V_sum_amt
7156 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
7157 WHERE ACCOUNT_CLASS = lv_acc_class_rev
7158 AND CUSTOMER_TRX_ID = pn_customer_trx_id; --added on 22-Mar-2002 to get the revenue amount for the invoice
7159 v_sql_num := 10;
7160
7161 OPEN COUNT_CUR;
7162 FETCH COUNT_CUR INTO v_counter;
7163 CLOSE COUNT_CUR;
7164 v_sql_num := 11;
7165
7166 IF NVL(v_counter, 0) > 0 THEN
7167 --Main v_counter if
7168 FOR PREVIOUS_AMOUNT_REC IN PREVIOUS_AMOUNT_CUR LOOP
7169 v_old_amount := NVL(v_old_amount, 0) +
7170 nvl(PREVIOUS_AMOUNT_REC.amount, 0);
7171 v_old_acctd_amount := NVL(v_old_acctd_amount, 0) +
7172 NVL(PREVIOUS_AMOUNT_REC.acctd_amount, 0);
7173
7174 END LOOP;
7175
7176 v_sql_num := 12;
7177
7178 FOR LINK_REC IN LINK_LINE_CUR LOOP
7179 v_sql_num := 13;
7180
7181 -- the following select statement commented and using the next one instead
7182 -- because this is wrong.We need to compare the ra_customer_trx_lines_all table
7183 -- with the link_to_cust_trx_line_id column instead of based on the customer_trx_line_id
7184 -- column in the ra_cust_trx_line_gl_dist_all table. -- bug # 2784431
7185
7186 /*
7187 SELECT COUNT(Customer_trx_line_id) INTO v_rec_ctr FROM ra_cust_trx_line_gl_dist_all
7188 WHERE customer_trx_line_id = pn_customer_trx_line_id
7189 AND Account_class IN ('TAX','FREIGHT'); --Added on 09-Apr-2002 For the BUG#2303830
7190 */
7191
7192
7193 SELECT COUNT(Customer_trx_line_id)
7194 INTO v_rec_ctr
7195 FROM ra_customer_trx_lines_all
7196 where link_to_cust_trx_line_id = pn_customer_trx_line_id
7197 and line_type in (lv_tax_const, lv_freight_acc_class); --rchandan for bug#4428980
7198
7199 IF v_rec_ctr > 0 THEN
7200 --Added on 09-Apr-2002 for the BUG#2303830
7201
7202 v_sql_num := 14;
7203
7204 DELETE RA_CUST_TRX_LINE_GL_DIST_ALL
7205 WHERE CUSTOMER_TRX_LINE_ID IN
7206 (SELECT CUSTOMER_TRX_LINE_ID
7207 FROM RA_CUSTOMER_TRX_LINES_ALL
7208 WHERE LINK_TO_CUST_TRX_LINE_ID =
7209 LINK_REC.LINK_TO_CUST_TRX_LINE_ID)
7210 AND ACCOUNT_CLASS IN (lv_tax_const, lv_freight_acc_class); --rchandan for bug#4428980
7211
7212 -- added for mrc -- sriram - 26/12 -- 3326394
7213
7214 for mrc_rec in (SELECT CUST_TRX_LINE_GL_DIST_ID
7215 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
7216 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7217 AND ACCOUNT_CLASS IN
7218 (lv_tax_const, lv_freight_acc_class) --rchandan for bug#4428980
7219 AND CUSTOMER_TRX_LINE_ID IN
7220 (SELECT CUSTOMER_TRX_LINE_ID
7221 FROM RA_CUSTOMER_TRX_LINES_ALL
7222 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7223 AND LINK_TO_CUST_TRX_LINE_ID =
7224 pn_customer_trx_line_id
7225 AND LINE_TYPE IN
7226 (lv_tax_const, lv_freight_acc_class) --rchandan for bug#4428980
7227 )) Loop
7228 ar_mrc_engine.maintain_mrc_data(p_event_mode => 'DELETE',
7229 p_table_name => 'RA_CUST_TRX_LINE_GL_DIST',
7230 p_mode => 'SINGLE',
7231 p_key_value => mrc_rec.CUST_TRX_LINE_GL_DIST_ID);
7232
7233 end loop;
7234
7235
7236
7237
7238
7239 v_sql_num := 15;
7240
7241 DELETE RA_CUSTOMER_TRX_LINES_ALL
7242 WHERE LINK_TO_CUST_TRX_LINE_ID =
7243 LINK_REC.LINK_TO_CUST_TRX_LINE_ID;
7244
7245 v_sql_num := 16;
7246
7247 Update Ar_Payment_Schedules_All
7248 Set Tax_Original = 0,
7249 Tax_remaining = 0,
7250 Freight_Original = 0,
7251 Freight_remaining = 0,
7252 Amount_Due_Original = v_sum_amt,
7253 Amount_Due_remaining = v_sum_amt,
7254 Acctd_amount_due_remaining = v_sum_amt
7255 Where Customer_Trx_ID = pn_customer_trx_id
7256 And Payment_Schedule_ID = v_payment_schedule_id;
7257
7258
7259 END IF;
7260
7261
7262 v_sql_num := 17;
7263
7264 END LOOP;
7265
7266
7267 OPEN ORG_CUR;
7268 FETCH ORG_CUR INTO V_ORG_ID, V_CREATED_FROM;
7269 CLOSE ORG_CUR;
7270 v_sql_num := 18;
7271
7272 OPEN GL_DATE_CUR;
7273 FETCH GL_DATE_CUR INTO v_gl_date;
7274 CLOSE GL_DATE_CUR;
7275 v_sql_num := 19;
7276
7277 OPEN jai_ar_trx_pkg.c_tax_regime_code_cur(V_ORG_ID);
7278 FETCH jai_ar_trx_pkg.c_tax_regime_code_cur INTO lv_tax_regime_code;
7279 CLOSE jai_ar_trx_pkg.c_tax_regime_code_cur;
7280
7281 OPEN jai_ar_trx_pkg.c_party_tax_profile_id_cur(V_ORG_ID);
7282 FETCH jai_ar_trx_pkg.c_party_tax_profile_id_cur INTO ln_party_tax_profile_id;
7283 CLOSE jai_ar_trx_pkg.c_party_tax_profile_id_cur;
7284
7285 OPEN jai_ar_trx_pkg.c_tax_rate_id_cur(lv_tax_regime_code,
7286 ln_party_tax_profile_id);
7287 FETCH jai_ar_trx_pkg.c_tax_rate_id_cur INTO ln_tax_rate_id;
7288 CLOSE jai_ar_trx_pkg.c_tax_rate_id_cur;
7289
7290 if ln_tax_rate_id is null then
7291 raise Localization_tax_not_defined;
7292 end if;
7293
7294 /* Added by Ramananda for bug#4468353 due to ebtax uptake by AR, end */
7295
7296
7297 v_sql_num := 20;
7298
7299 OPEN ACCOUNTING_SET_CUR;
7300 FETCH ACCOUNTING_SET_CUR INTO v_accounting_rule_id;
7301 CLOSE ACCOUNTING_SET_CUR;
7302 v_sql_num := 21;
7303
7304 IF v_accounting_rule_id IS NOT NULL THEN
7305 v_account_Set_flag := 'Y';
7306 ELSE
7307 v_account_Set_flag := 'N';
7308 END IF;
7309
7310
7311 BEGIN
7312 --Begin Temp_Cur Block
7313
7314 SAVEPOINT TEMP_CUR_BLK_SVP;
7315
7316 FOR TEMP_REC IN TEMP_CUR LOOP
7317
7318 --added for bug#8476512,start
7319 OPEN cur_chk_jai_tax_dtls(temp_rec.customer_trx_line_id,
7320 temp_rec.link_to_cust_trx_line_id);
7321 FETCH cur_chk_jai_tax_dtls
7322 INTO ln_tax_line_exists;
7323 CLOSE cur_chk_jai_tax_dtls;
7324
7325 IF nvl(ln_tax_line_exists, 0) <> 1 THEN
7326 Delete JAI_AR_TRX_INS_LINES_T
7327 WHERE customer_trx_line_id = temp_rec.customer_trx_line_id
7328 AND link_to_cust_trx_line_id =
7329 temp_rec.link_to_cust_trx_line_id;
7330
7331 ELSE
7332 OPEN MAX_LINE_CUR(TEMP_REC.LINK_TO_CUST_TRX_LINE_ID,
7333 TEMP_REC.line_type);
7334 FETCH MAX_LINE_CUR
7335 INTO v_line_no;
7336 CLOSE MAX_LINE_CUR;
7337 v_sql_num := 22;
7338
7339 v_line_no := NVL(v_line_no, 0) + 1;
7340
7341 IF TEMP_REC.INSERT_UPDATE_FLAG IN ('U', 'X') THEN
7342 v_sql_num := 23;
7343
7344 OPEN c_gl_posted_date_cur(TEMP_REC.link_to_cust_trx_line_id);
7345 FETCH c_gl_posted_date_cur INTO ld_gl_posted_date;
7346 CLOSE c_gl_posted_date_cur;
7347
7348 IF ld_gl_posted_date is NULL THEN
7349
7350
7351 INSERT INTO RA_CUSTOMER_TRX_LINES_ALL
7352 (extended_amount,
7353 customer_trx_line_id,
7354 last_update_date,
7355 last_updated_by,
7356 creation_date,
7357 created_by,
7358 last_update_login,
7359 customer_trx_id,
7360 line_number,
7361 set_of_books_id,
7362 link_to_cust_trx_line_id,
7363 line_type,
7364 org_id,
7365 uom_code,
7366 autotax,
7367 vat_tax_id)
7368 VALUES
7369 (TEMP_REC.extended_amount,
7370 TEMP_REC.customer_trx_line_id,
7371 TEMP_REC.last_update_date,
7372 TEMP_REC.last_updated_by,
7373 TEMP_REC.creation_date,
7374 TEMP_REC.created_by,
7375 TEMP_REC.last_update_login,
7376 TEMP_REC.customer_trx_id,
7377 v_line_no,
7378 TEMP_REC.set_of_books_id,
7379 TEMP_REC.link_to_cust_trx_line_id,
7380 TEMP_REC.line_type,
7381 v_org_id,
7382 TEMP_REC.uom_code,
7383 'N',
7384 v_vat_tax_id);
7385
7386 v_sql_num := 24;
7387 --added by zhiwei begin
7388 --------------------------------------------------------
7389 --Added by Bo Li-------------------
7390 SELECT event_id
7391 INTO lv_event_id
7392 FROM RA_CUST_TRX_LINE_GL_DIST_ALL
7393 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7394 AND ACCOUNT_CLASS = lv_acc_class_rec;
7395
7396 --Commented by zhiwei for POT change bug#13023443 on 20110929 begin
7397 -----------------------------------
7398 /*
7399 IF(pv_event = GV_TAXABLE_EVENT_EXTERNAL)THEN
7400
7401 --OPEN INTERFACE FOR AR
7402 --GET DIST FROM INTERFACE_DIS_ALL
7403
7404 OPEN cur_get_external_dis_detail(TEMP_REC.LINE_NUMBER);
7405 FETCH cur_get_external_dis_detail INTO v_exter_code_combination_id,v_exter_percent,v_exter_amount,
7406 v_exter_request_id;
7407 CLOSE cur_get_external_dis_detail;
7408
7409
7410 --jai_ar_trx_tax_lines get tax_line_no base TEMP_REC.customer_trx_line_id and TEMP_REC.link_to_cust_trx_line_id
7411 --jai_interface_tax_lines_all get interface_TAX_line_id base pn_interface_line_id and TEMP_REC.LINE_NUMBER
7412 --JAI-INTERFACE_DIS_LINES_ALL GET CODE_COMBINATION_ID PERCENT AMOUNT ATTRIBUTE_CATEGORY ATTRIBUTE1 ATTRIBUTE2 ATTRIBUTE3 ATTRIBUTE4 ATTRIBUTE5 REQUEST_ID
7413 OPEN SO_AR_HDR_INFO;
7414 FETCH SO_AR_HDR_INFO INTO v_organization_id, v_location_id, v_batch_source_id;
7415 CLOSE SO_AR_HDR_INFO;
7416
7417 OPEN BOOKS_TRX_CUR;
7418 FETCH BOOKS_TRX_CUR
7419 INTO v_books_id, v_salesrep_id, c_from_currency_code, c_conversion_type, c_conversion_date, c_conversion_rate;
7420 CLOSE BOOKS_TRX_CUR;
7421 IF v_books_id IS NULL THEN
7422 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr(p_org_id => v_organization_id);
7423 v_books_id := l_func_curr_det.ledger_id;
7424 END IF;
7425 v_converted_rate := jai_cmn_utils_pkg.currency_conversion(v_books_id,
7426 c_from_currency_code,
7427 c_conversion_date,
7428 c_conversion_type,
7429 c_conversion_rate);
7430
7431 INSERT INTO RA_CUST_TRX_LINE_GL_DIST_ALL
7432 (account_class,
7433 account_set_flag,
7434 acctd_amount,
7435 amount,
7436 code_combination_id,
7437 cust_trx_line_gl_dist_id,
7438 cust_trx_line_salesrep_id,
7439 customer_trx_id,
7440 customer_trx_line_id,
7441 gl_date,
7442 last_update_date,
7443 last_updated_by,
7444 creation_date,
7445 created_by,
7446 last_update_login,
7447 org_id,
7448 percent,
7449 posting_control_id,
7450 set_of_books_id
7451 ,event_id --Added by zhiwei for Bug#12583975 on 20110531
7452 )
7453 VALUES
7454 (TEMP_REC.line_type,
7455 v_account_set_flag,
7456 v_converted_rate * v_exter_amount, --TEMP_REC.acctd_amount,??
7457 v_exter_amount,--TEMP_REC.amount,
7458 v_exter_code_combination_id,--TEMP_REC.CODE_COMBINATION_ID,
7459 RA_CUST_TRX_LINE_GL_DIST_S.nextval,
7460 TEMP_REC.cust_trx_line_sales_rep_id,
7461 TEMP_REC.customer_trx_id,
7462 TEMP_REC.customer_trx_line_id,
7463 v_gl_date,
7464 TEMP_REC.last_update_date,
7465 TEMP_REC.last_updated_by,
7466 TEMP_REC.creation_date,
7467 TEMP_REC.created_by,
7468 TEMP_REC.last_update_login,
7469 v_org_id,
7470 v_exter_percent,
7471 -3,
7472 TEMP_REC.set_of_books_id
7473 ,lv_event_id --Added by zhiwei for Bug#12583975 on 20110531
7474 )
7475 RETURNING cust_trx_line_gl_dist_id INTO v_gl_dist_id;
7476
7477 ELSE
7478 --NORMAL
7479
7480 -------------------------------------------
7481 --added by zhiwei end
7482
7483 INSERT INTO RA_CUST_TRX_LINE_GL_DIST_ALL
7484 (account_class,
7485 account_set_flag,
7486 acctd_amount,
7487 amount,
7488 code_combination_id,
7489 cust_trx_line_gl_dist_id,
7490 cust_trx_line_salesrep_id,
7491 customer_trx_id,
7492 customer_trx_line_id,
7493 gl_date,
7494 last_update_date,
7495 last_updated_by,
7496 creation_date,
7497 created_by,
7498 last_update_login,
7499 org_id,
7500 percent,
7501 posting_control_id,
7502 set_of_books_id
7503 ,event_id --Added by zhiwei for Bug#12583975 on 20110531
7504 )
7505 VALUES
7506 (TEMP_REC.line_type,
7507 v_account_set_flag,
7508 TEMP_REC.acctd_amount,
7509 TEMP_REC.amount,
7510 TEMP_REC.CODE_COMBINATION_ID,
7511 RA_CUST_TRX_LINE_GL_DIST_S.nextval,
7512 TEMP_REC.cust_trx_line_sales_rep_id,
7513 TEMP_REC.customer_trx_id,
7514 TEMP_REC.customer_trx_line_id,
7515 v_gl_date,
7516 TEMP_REC.last_update_date,
7517 TEMP_REC.last_updated_by,
7518 TEMP_REC.creation_date,
7519 TEMP_REC.created_by,
7520 TEMP_REC.last_update_login,
7521 v_org_id,
7522 100,
7523 -3,
7524 TEMP_REC.set_of_books_id
7525 ,lv_event_id --Added by zhiwei for Bug#12583975 on 20110531
7526 )
7527 RETURNING cust_trx_line_gl_dist_id INTO v_gl_dist_id;
7528
7529 END IF; --(pv_type = 'OPAPI');*/
7530 ---------------------------------------------------------------
7531 --Commented by zhiwei for POT change bug#13023443 on 20110929 end
7532
7533
7534 --Added by zhiwei for POT change bug#13023443 on 20110929 begin
7535 -------------------------------------------------------------------------------
7536 /*
7537 For Standard event, get Acct from Regime
7538 For External Event, if Service tax
7539 if GL date >= POT date
7540 get Acct from JAI api
7541 if GL date < POT date
7542 get Acct from Regime
7543 if other tax
7544 get Acct from JAI api.
7545 */
7546 IF(pv_event = GV_TAXABLE_EVENT_STANDALONE
7547 OR
7548 (
7549 pv_event = GV_TAXABLE_EVENT_EXTERNAL
7550 and exist_service_tax(temp_rec.customer_trx_line_id)
7551 and not is_accrual_basis(temp_rec.customer_trx_line_id)
7552 )
7553 )
7554 THEN
7555 --Get Acct from Regime
7556 INSERT INTO RA_CUST_TRX_LINE_GL_DIST_ALL
7557 (account_class,
7558 account_set_flag,
7559 acctd_amount,
7560 amount,
7561 code_combination_id,
7562 cust_trx_line_gl_dist_id,
7563 cust_trx_line_salesrep_id,
7564 customer_trx_id,
7565 customer_trx_line_id,
7566 gl_date,
7567 last_update_date,
7568 last_updated_by,
7569 creation_date,
7570 created_by,
7571 last_update_login,
7572 org_id,
7573 percent,
7574 posting_control_id,
7575 set_of_books_id
7576 ,event_id --Added by zhiwei for Bug#12583975 on 20110531
7577 )
7578 VALUES
7579 (TEMP_REC.line_type,
7580 v_account_set_flag,
7581 TEMP_REC.acctd_amount,
7582 TEMP_REC.amount,
7583 TEMP_REC.CODE_COMBINATION_ID,
7584 RA_CUST_TRX_LINE_GL_DIST_S.nextval,
7585 TEMP_REC.cust_trx_line_sales_rep_id,
7586 TEMP_REC.customer_trx_id,
7587 TEMP_REC.customer_trx_line_id,
7588 v_gl_date,
7589 TEMP_REC.last_update_date,
7590 TEMP_REC.last_updated_by,
7591 TEMP_REC.creation_date,
7592 TEMP_REC.created_by,
7593 TEMP_REC.last_update_login,
7594 v_org_id,
7595 100,
7596 -3,
7597 TEMP_REC.set_of_books_id
7598 ,lv_event_id --Added by zhiwei for Bug#12583975 on 20110531
7599 )
7600 RETURNING cust_trx_line_gl_dist_id INTO v_gl_dist_id;
7601
7602 ELSE
7603 --Get Acct from API
7604 --OPEN INTERFACE FOR AR
7605 --GET DIST FROM INTERFACE_DIS_ALL
7606
7607 OPEN cur_get_external_dis_detail(TEMP_REC.LINE_NUMBER);
7608 FETCH cur_get_external_dis_detail INTO v_exter_code_combination_id,v_exter_percent,v_exter_amount,
7609 v_exter_request_id;
7610 CLOSE cur_get_external_dis_detail;
7611
7612
7613 --jai_ar_trx_tax_lines get tax_line_no base TEMP_REC.customer_trx_line_id and TEMP_REC.link_to_cust_trx_line_id
7614 --jai_interface_tax_lines_all get interface_TAX_line_id base pn_interface_line_id and TEMP_REC.LINE_NUMBER
7615 --JAI-INTERFACE_DIS_LINES_ALL GET CODE_COMBINATION_ID PERCENT AMOUNT ATTRIBUTE_CATEGORY ATTRIBUTE1 ATTRIBUTE2 ATTRIBUTE3 ATTRIBUTE4 ATTRIBUTE5 REQUEST_ID
7616 OPEN SO_AR_HDR_INFO;
7617 FETCH SO_AR_HDR_INFO INTO v_organization_id, v_location_id, v_batch_source_id;
7618 CLOSE SO_AR_HDR_INFO;
7619
7620 OPEN BOOKS_TRX_CUR;
7621 FETCH BOOKS_TRX_CUR
7622 INTO v_books_id, v_salesrep_id, c_from_currency_code, c_conversion_type, c_conversion_date, c_conversion_rate;
7623 CLOSE BOOKS_TRX_CUR;
7624 IF v_books_id IS NULL THEN
7625 l_func_curr_det := jai_plsql_cache_pkg.return_sob_curr(p_org_id => v_organization_id);
7626 v_books_id := l_func_curr_det.ledger_id;
7627 END IF;
7628 v_converted_rate := jai_cmn_utils_pkg.currency_conversion(v_books_id,
7629 c_from_currency_code,
7630 c_conversion_date,
7631 c_conversion_type,
7632 c_conversion_rate);
7633
7634 INSERT INTO RA_CUST_TRX_LINE_GL_DIST_ALL
7635 (account_class,
7636 account_set_flag,
7637 acctd_amount,
7638 amount,
7639 code_combination_id,
7640 cust_trx_line_gl_dist_id,
7641 cust_trx_line_salesrep_id,
7642 customer_trx_id,
7643 customer_trx_line_id,
7644 gl_date,
7645 last_update_date,
7646 last_updated_by,
7647 creation_date,
7648 created_by,
7649 last_update_login,
7650 org_id,
7651 percent,
7652 posting_control_id,
7653 set_of_books_id
7654 ,event_id --Added by zhiwei for Bug#12583975 on 20110531
7655 )
7656 VALUES
7657 (TEMP_REC.line_type,
7658 v_account_set_flag,
7659 v_converted_rate * v_exter_amount, --TEMP_REC.acctd_amount,??
7660 v_exter_amount,--TEMP_REC.amount,
7661 v_exter_code_combination_id,--TEMP_REC.CODE_COMBINATION_ID,
7662 RA_CUST_TRX_LINE_GL_DIST_S.nextval,
7663 TEMP_REC.cust_trx_line_sales_rep_id,
7664 TEMP_REC.customer_trx_id,
7665 TEMP_REC.customer_trx_line_id,
7666 v_gl_date,
7667 TEMP_REC.last_update_date,
7668 TEMP_REC.last_updated_by,
7669 TEMP_REC.creation_date,
7670 TEMP_REC.created_by,
7671 TEMP_REC.last_update_login,
7672 v_org_id,
7673 v_exter_percent,
7674 -3,
7675 TEMP_REC.set_of_books_id
7676 ,lv_event_id --Added by zhiwei for Bug#12583975 on 20110531
7677 )
7678 RETURNING cust_trx_line_gl_dist_id INTO v_gl_dist_id;
7679
7680 END IF;
7681
7682 -------------------------------------------------------------------------------
7683 --Added by zhiwei for POT change bug#13023443 on 20110929 end
7684
7685 /* SLA Impact uptake */
7686
7687 --l_xla_event.xla_from_doc_id ;
7688 --l_xla_event.xla_to_doc_id ;
7689 l_xla_event.xla_req_id := NULL;
7690 l_xla_event.xla_dist_id := v_gl_dist_id;
7691 l_xla_event.xla_doc_table := 'CT';
7692 l_xla_event.xla_doc_event := NULL;
7693 l_xla_event.xla_mode := 'O';
7694 l_xla_event.xla_call := 'D';
7695 --l_xla_event.xla_fetch_size
7696
7697 --ARP_XLA_EVENTS.CREATE_EVENTS(p_xla_ev_rec => l_xla_event);
7698
7699 -- code for mrc insert starts here -- bug # 3326394
7700 ar_mrc_engine.maintain_mrc_data(p_event_mode => 'INSERT',
7701 p_table_name => 'RA_CUST_TRX_LINE_GL_DIST',
7702 p_mode => 'SINGLE',
7703 p_key_value => v_gl_dist_id);
7704
7705 -- code for mrc ends here -- bug # 3326394
7706
7707 v_sql_num := 25;
7708
7709 ELSE
7710 /* v_gl_posted_date will not be null when the execution comes here */
7711
7712 raise Item_lines_already_accounted;
7713
7714 END IF; --v_gl_posted_date is null
7715 /* Modified by Ramananda for bug#4468353 due to sla uptake by AR, end */
7716
7717
7718 ELSE
7719
7720 UPDATE RA_CUSTOMER_TRX_LINES_ALL
7721 SET EXTENDED_AMOUNT = TEMP_REC.EXTENDED_AMOUNT,
7722 LAST_UPDATE_DATE = TEMP_REC.LAST_UPDATE_DATE,
7723 LAST_UPDATED_BY = TEMP_REC.LAST_UPDATED_BY,
7724 CREATION_DATE = TEMP_REC.CREATION_DATE,
7725 CREATED_BY = TEMP_REC.CREATED_BY,
7726 LAST_UPDATE_LOGIN = TEMP_REC.LAST_UPDATE_LOGIN
7727 WHERE CUSTOMER_TRX_LINE_ID = TEMP_REC.CUSTOMER_TRX_LINE_ID;
7728
7729 v_sql_num := 26;
7730
7731 UPDATE RA_CUST_TRX_LINE_GL_DIST_ALL
7732 SET ACCTD_AMOUNT = TEMP_REC.ACCTD_AMOUNT,
7733 AMOUNT = TEMP_REC.EXTENDED_AMOUNT,
7734 LAST_UPDATE_DATE = TEMP_REC.LAST_UPDATE_DATE,
7735 LAST_UPDATED_BY = TEMP_REC.LAST_UPDATED_BY,
7736 CREATION_DATE = TEMP_REC.CREATION_DATE,
7737 CREATED_BY = TEMP_REC.CREATED_BY,
7738 LAST_UPDATE_LOGIN = TEMP_REC.LAST_UPDATE_LOGIN
7739 WHERE CUSTOMER_TRX_LINE_ID = TEMP_REC.CUSTOMER_TRX_LINE_ID;
7740
7741 v_sql_num := 27;
7742
7743 END IF;
7744
7745 IF TEMP_REC.LINE_TYPE = 'TAX' THEN
7746 v_tax_amount := nvl(v_tax_amount, 0) +
7747 nvl(TEMP_REC.EXTENDED_AMOUNT, 0);
7748
7749 ELSIF TEMP_REC.LINE_TYPE = 'FREIGHT' THEN
7750 v_freight_amount := nvl(v_freight_amount, 0) +
7751 nvl(TEMP_REC.EXTENDED_AMOUNT, 0);
7752
7753 END IF;
7754
7755
7756 v_receivable_amount := nvl(v_receivable_amount, 0) +
7757 nvl(TEMP_REC.EXTENDED_AMOUNT, 0);
7758 v_receivable_acctd_amount := nvl(v_receivable_acctd_amount, 0) +
7759 nvl(TEMP_REC.ACCTD_AMOUNT, 0);
7760
7761 END IF; -- 8476512 IF nvl(ln_tax_line_exists,0) <> 1 THEN
7762 END LOOP;
7763
7764
7765 v_sql_num := 28;
7766
7767 Select SUM(amount), SUM(acctd_amount)
7768 into v_old_amount, v_old_acctd_amount
7769 From RA_CUST_TRX_LINE_GL_DIST_ALL
7770 Where customer_trx_id = pn_customer_trx_id
7771 AND ACCOUNT_CLASS = lv_acc_class_rev;
7772 v_sql_num := 29;
7773
7774 Select SUM(amount)
7775 INTO v_tax_amt
7776 From RA_CUST_TRX_LINE_GL_DIST_ALL
7777 Where customer_trx_id = pn_customer_trx_id
7778 AND ACCOUNT_CLASS IN (lv_tax_const, lv_freight_acc_class);
7779 v_sql_num := 30;
7780
7781 UPDATE RA_CUST_TRX_LINE_GL_DIST_ALL
7782 SET AMOUNT = NVL(v_old_amount, 0) + NVL(v_tax_amt, 0),
7783 ACCTD_AMOUNT = NVL(v_old_acctd_amount, 0) + NVL(v_tax_amt, 0)
7784 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7785 AND ACCOUNT_CLASS = lv_acc_class_rec;
7786
7787
7788
7789 open c_gl_dist_cur;
7790 fetch c_gl_dist_cur into v_gl_dist_id;
7791 close c_gl_dist_cur;
7792
7793 ar_mrc_engine.maintain_mrc_data(p_event_mode => 'UPDATE',
7794 p_table_name => 'RA_CUST_TRX_LINE_GL_DIST',
7795 p_mode => 'SINGLE',
7796 p_key_value => v_gl_dist_id);
7797
7798 v_amt_a := NVL(v_old_amount, 0) + NVL(v_tax_amt, 0);
7799
7800 v_sql_num := 31;
7801
7802 If v_prev_customer_trx_id is null then
7803
7804 v_sql_num := 32;
7805
7806 Update Ar_Payment_Schedules_All
7807 Set Tax_Original = NVL(Tax_Original, 0) +
7808 NVL(v_tax_amount, 0),
7809 Tax_remaining = NVL(Tax_remaining, 0) +
7810 NVL(v_tax_amount, 0),
7811 Freight_Original = NVL(Freight_Original, 0) +
7812 NVL(v_freight_amount, 0),
7813 Freight_remaining = NVL(Freight_remaining, 0) +
7814 NVL(v_freight_amount, 0),
7815 Amount_Due_Original = NVL(Amount_Due_Original, 0) +
7816 NVL(v_receivable_amount, 0),
7817 Amount_Due_remaining = NVL(Amount_Due_remaining, 0) +
7818 NVL(v_receivable_amount, 0),
7819 Acctd_amount_due_remaining = NVL(Acctd_amount_due_remaining,
7820 0) + NVL(v_receivable_acctd_amount,
7821 0)
7822 Where Customer_Trx_ID = pn_customer_trx_id
7823 And Payment_Schedule_ID = v_payment_schedule_id;
7824
7825
7826 fnd_file.put_line(FND_FILE.LOG,
7827 'TAX ORIGINAL 1.......' || v_trx_num || 'is ' ||
7828 NVL(v_tax_amount, -111));
7829 fnd_file.put_line(FND_FILE.LOG,
7830 'TAX --|AINING 1......' || v_trx_num || 'is ' ||
7831 NVL(v_tax_amount, -111));
7832 fnd_file.put_line(FND_FILE.LOG,
7833 'FREIGHT ORIGINAL 1...' || v_trx_num ||
7834 'is ' || NVL(v_freight_amount, -77));
7835 fnd_file.put_line(FND_FILE.LOG,
7836 'FREIGHT --|AINING 1..' || v_trx_num ||
7837 'is ' || NVL(v_freight_amount, -66));
7838 fnd_file.put_line(FND_FILE.LOG,
7839 'AMOUNT DUE --|AINING 1...' || v_trx_num ||
7840 'is ' || NVL(v_receivable_amount, -222));
7841 fnd_file.put_line(FND_FILE.LOG,
7842 'AMOUNT DUE ORIGINAL 1...' || v_trx_num ||
7843 'is ' || NVL(v_receivable_amount, 333));
7844 fnd_file.put_line(FND_FILE.LOG,
7845 'ACCTD AMOUNT DUE 1...' || v_trx_num ||
7846 'is ' ||
7847 NVL(v_receivable_acctd_amount, 444));
7848
7849 V_TEMP := NVL(v_old_amount, 0) + NVL(v_tax_amt, 0);
7850
7851 fnd_file.put_line(FND_FILE.LOG,
7852 'TAX ORIGINAL 2.......' || v_trx_num || 'is ' ||
7853 NVL(v_PAYMENT_amt, -111));
7854 fnd_file.put_line(FND_FILE.LOG,
7855 'TAX --|AINING 2......' || v_trx_num || 'is ' ||
7856 NVL(v_PAYMENT_amt, -111));
7857 fnd_file.put_line(FND_FILE.LOG,
7858 'FREIGHT ORIGINAL 2...' || v_trx_num ||
7859 'is ' || NVL(v_FREIGHT_amt, -77));
7860 fnd_file.put_line(FND_FILE.LOG,
7861 'FREIGHT --|AINING 2...' || v_trx_num ||
7862 'is ' || NVL(v_FREIGHT_amt, -66));
7863 fnd_file.put_line(FND_FILE.LOG,
7864 'AMOUNT DUE --|AINING 2...' || v_trx_num ||
7865 'is ' || V_TEMP);
7866 fnd_file.put_line(FND_FILE.LOG,
7867 'AMOUNT DUE ORIGINAL 2...' || v_trx_num ||
7868 'is ' || V_TEMP);
7869 fnd_file.put_line(FND_FILE.LOG,
7870 'ACCTD AMOUNT DUE 2...' || v_trx_num ||
7871 'is ' ||
7872 NVL(v_receivable_acctd_amount, 444));
7873
7874 end if; --END 22-MAR-02 FOR PROPER UPDATION
7875
7876 v_sql_num := 33;
7877
7878 DELETE JAI_AR_TRX_INS_LINES_T
7879 WHERE customer_trx_id = pn_customer_trx_id
7880 and link_to_cust_trx_line_id = pn_customer_trx_line_id;
7881
7882 v_sql_num := 34;
7883
7884 p_process_flag := SQLERRM;
7885
7886 fnd_file.put_line(FND_FILE.LOG,
7887 'The total tax amount for the line is....' ||
7888 v_tax_amt);
7889 fnd_file.put_line(FND_FILE.LOG,
7890 'The receivable amount for the line is....' ||
7891 v_receivable_amount);
7892 fnd_file.put_line(FND_FILE.LOG,
7893 'Successfully Processed the Invoice... ' ||
7894 v_trx_num);
7895 --fnd_file.put_line(FND_FILE.LOG, 'COMPLETED RUN.Processed the Invoice Retcode = '|| retcode);
7896
7897 EXCEPTION
7898 when others then
7899 p_process_message := SUBSTR(SQLERRM, 1, 230);
7900 ROLLBACK TO TEMP_CUR_BLK_SVP;
7901
7902 UPDATE JAI_AR_TRX_INS_LINES_T
7903 SET ERROR_FLAG = 'R', ERR_MESG = p_process_message
7904 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7905 AND LINK_TO_CUST_TRX_LINE_ID = pn_customer_trx_line_id;
7906
7907 --COMMIT; --Commented by zhiwei for open interface ER 20101116
7908
7909 fnd_file.put_line(FND_FILE.LOG,
7910 'Updated the customer_trx_id error_flag to ...' || 'R');
7911 fnd_file.put_line(FND_FILE.LOG,
7912 'Unable to Process the invoice... ' ||
7913 v_trx_num);
7914 fnd_file.put_line(FND_FILE.LOG,
7915 'ABORTED RUN... the err = ' || SQLERRM);
7916 fnd_file.put_line(FND_FILE.LOG,
7917 'ABORTED RUN... the err = ' || SQLERRM ||
7918 v_sql_num);
7919
7920 END; --End Temp_Cur Block
7921
7922 END IF; --End Main v_counter if
7923
7924
7925 OPEN get_ext_amt_ln('LINE'); --rchandan for bug#4428980
7926 FETCH get_ext_amt_ln INTO v_extended_amount_line;
7927 CLOSE get_ext_amt_ln;
7928
7929 OPEN get_ext_amt_tax;
7930 LOOP
7931 FETCH get_ext_amt_tax INTO get_ext_amt_tax_rec;
7932 EXIT WHEN get_ext_amt_tax%NOTFOUND;
7933 OPEN get_taxable_amt(get_ext_amt_tax_rec.customer_trx_line_id);
7934 FETCH get_taxable_amt INTO v_taxable_amt;
7935 IF v_taxable_amt = 0 THEN
7936 UPDATE ra_customer_trx_lines_all
7937 SET Taxable_amount = (v_extended_amount_line -
7938 get_ext_amt_tax_rec.extended_amount)
7939 WHERE Customer_trx_line_id =
7940 get_ext_amt_tax_rec.customer_trx_line_id
7941 and customer_trx_id = pn_customer_trx_id
7942 and link_to_cust_trx_line_id = pn_customer_trx_line_id
7943 and Line_type = lv_tax_const;
7944
7945 END IF;
7946
7947 CLOSE get_taxable_amt;
7948 END LOOP;
7949
7950 CLOSE get_ext_amt_tax;
7951
7952
7953 p_process_flag := SQLERRM;
7954 v_err_mesg := p_process_message;
7955
7956 --Added by Bo Li for Bug9803555 on 01-JUL-2010 ,Begin
7957 --------------------------------------------------------------------------
7958 /*
7959 OPEN get_max_request_id_cur(pn_customer_trx_id, pn_customer_trx_line_id);
7960 FETCH get_max_request_id_cur
7961 INTO ln_max_req_id;
7962 CLOSE get_max_request_id_cur;
7963
7964 IF ln_max_req_id = fnd_global.conc_request_id THEN
7965 COMMIT;
7966 ELSE
7967 ROLLBACK;
7968
7969 End IF;
7970 */
7971 --------------------------------------------------------------------------
7972 --Added by Bo Li for Bug9803555 on 01-JUL-2010 ,End
7973
7974
7975 fnd_file.put_line(FND_FILE.LOG,'COMPLETED RUN.Processed the invoice = ' || v_trx_num);
7976
7977 EXCEPTION
7978
7979 when Localization_tax_not_defined then
7980 fnd_file.put_line(FND_FILE.LOG,
7981 ' ''Localization'' Tax not defined or is end-dated. Please ensure that a valid ''Localization'' Tax exists and is not enddated ');
7982 p_process_message := ' ''Localization'' Tax not defined or is end-dated. Please ensure that a valid ''Localization'' Tax exists and is not enddated ';
7983 p_process_flag := 2;
7984
7985 WHEN OTHERS THEN
7986
7987 p_process_message := SUBSTR(SQLERRM, 1, 230);
7988 UPDATE JAI_AR_TRX_INS_LINES_T
7989 SET ERROR_FLAG = 'R', ERR_MESG = p_process_message
7990 WHERE CUSTOMER_TRX_ID = pn_customer_trx_id
7991 AND LINK_TO_CUST_TRX_LINE_ID = pn_customer_trx_line_id;
7992
7993 --COMMIT;--Commented by zhiwei for open interface ER 20101116
7994
7995 fnd_file.put_line(FND_FILE.LOG,
7996 'ABORTED RUN... the invoice = ' || v_trx_num);
7997 fnd_file.put_line(FND_FILE.LOG,
7998 'ABORTED RUN... the err = ' || SQLERRM);
7999 fnd_file.put_line(FND_FILE.LOG,
8000 'Main Block.... the err = ' || SQLERRM);
8001 fnd_file.put_line(FND_FILE.LOG,
8002 'Please Contact the System Administrator Or Oracle Software Support Services...');
8003
8004 END process_trx_dis_bal_lines;
8005
8006
8007
8008
8009
8010
8011 /*
8012 || process ar accounting,update reposotory,account inclusive tax.
8013 */
8014 PROCEDURE process_ar_updating_lines(
8015 pn_interface_line_id IN JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE,
8016 ov_return_code OUT NOCOPY VARCHAR2,
8017 ov_return_message OUT NOCOPY VARCHAR2
8018 )
8019 IS
8020
8021 --VARIABLE DEFINITION AS BELOW
8022 lv_return_code VARCHAR2(100);
8023 lv_return_mess VARCHAR2(2000);
8024 ln_customer_trx_id JAI_AR_TRXS.CUSTOMER_TRX_ID%TYPE;
8025 ln_interface_line_id JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE;
8026 ln_customer_trx_line_id JAI_AR_TRX_LINES.CUSTOMER_TRX_LINE_ID%TYPE;
8027 lv_taxable_event JAI_INTERFACE_LINES_ALL.TAXABLE_EVENT%TYPE;
8028
8029 --CURSOR DEFINITION AS BELOW
8030 CURSOR get_interface_line_cur
8031 IS
8032 SELECT INTERFACE_LINE_ID,
8033 INTERNAL_TRX_ID,
8034 INTERNAL_TRX_LINE_ID,
8035 TAXABLE_EVENT,
8036 VAT_INVOICE_NO,
8037 EXCISE_INVOICE_NO,
8038 TAX_CATEGORY_ID
8039 FROM JAI_INTERFACE_LINES_ALL
8040 WHERE INTERFACE_LINE_ID = pn_interface_line_id;
8041
8042 CURSOR get_vat_tax_exists_cur IS
8043 SELECT 'Y'
8044 FROM dual
8045 WHERE EXISTS (SELECT 1
8046 FROM jai_cmn_taxes_all jcta,
8047 jai_interface_tax_lines_all jitla,
8048 jai_interface_lines_all jila
8049 WHERE jitla.tax_id = jcta.tax_id
8050 AND jila.interface_line_id = jitla.interface_line_id
8051 --AND jila.interface_line_id = pn_interface_line_id --Commented by zhiwei for Bug#12564566 on 20110523
8052 --Added by zhiwei for bug#12564566 begin
8053 ----------------------------------------------
8054 AND jila.interface_line_id in
8055 (
8056 select interface_line_id
8057 from jai_interface_lines_all
8058 where internal_trx_id = ln_customer_trx_id
8059 )
8060 ----------------------------------------------
8061 --Added by zhiwei for bug#12564566 end
8062 AND upper(jcta.tax_type) IN
8063 (SELECT jrr.attribute_code
8064 FROM jai_rgm_registrations jrr
8065 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
8066 AND jrr.regime_id = (SELECT jrd.regime_id
8067 FROM jai_rgm_definitions jrd
8068 WHERE jrd.regime_code = jai_constants.vat_regime)));
8069
8070 CURSOR get_excise_tax_exists_cur IS
8071 SELECT 'Y'
8072 FROM dual
8073 WHERE EXISTS (SELECT 1
8074 FROM jai_cmn_taxes_all jcta,
8075 jai_interface_tax_lines_all jitla,
8076 jai_interface_lines_all jila
8077 WHERE jitla.tax_id = jcta.tax_id
8078 AND jila.interface_line_id = jitla.interface_line_id
8079 --AND jila.interface_line_id = pn_interface_line_id--Commented by zhiwei for Bug#12564566 on 20110523
8080 --Added by zhiwei for bug#12564566 begin
8081 ----------------------------------------------
8082 AND jila.interface_line_id in
8083 (
8084 select interface_line_id
8085 from jai_interface_lines_all
8086 where internal_trx_id = ln_customer_trx_id
8087 )
8088 ----------------------------------------------
8089 --Added by zhiwei for bug#12564566 end
8090 AND upper(jcta.tax_type) IN ('EXCISE', 'EXCISE_EDUCATION_CESS', 'EXCISE_SH_EDU_CESS'));
8091
8092 --Added by zhiwei for bug#12564566 begin
8093 --------------------------------------------
8094 CURSOR get_trx_vat_no_cur
8095 IS
8096 SELECT
8097 distinct(VAT_INVOICE_NO)
8098 FROM JAI_INTERFACE_LINES_ALL
8099 WHERE internal_trx_id = ln_customer_trx_id
8100 and nvl(VAT_INVOICE_NO,'###')<> '###';
8101
8102 CURSOR get_trx_excise_no_cur
8103 IS
8104 SELECT
8105 distinct(EXCISE_INVOICE_NO)
8106 FROM JAI_INTERFACE_LINES_ALL
8107 WHERE internal_trx_id = ln_customer_trx_id
8108 and nvl(EXCISE_INVOICE_NO,'###')<> '###';
8109 --------------------------------------------
8110 --Added by zhiwei for bug#12564566 end
8111
8112
8113 --VARIABLE DEFINITION
8114 ln_sum_tax_amount JAI_AR_TRX_TAX_LINES.TAX_AMOUNT%TYPE;
8115 ln_vat_invoice_no JAI_INTERFACE_LINES_ALL.VAT_INVOICE_NO%TYPE;
8116 ln_excise_invoice_no JAI_INTERFACE_LINES_ALL.EXCISE_INVOICE_NO%TYPE;
8117 rec_interface_line get_interface_line_cur%ROWTYPE;
8118
8119 ln_tax_category_id JAI_INTERFACE_LINES_ALL.TAX_CATEGORY_ID%TYPE;
8120
8121 ln_vat_assessable_value NUMBER;
8122 ln_excise_assessable_value NUMBER;
8123
8124 lv_vat_tax_exists VARCHAR2(1);
8125 lv_excise_tax_exists VARCHAR2(1);
8126
8127 le_exception EXCEPTION;
8128 ln_phase NUMBER;
8129
8130 /*Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952 Begin*/
8131 CURSOR get_service_tax_exists_cur IS
8132 SELECT 'Y'
8133 FROM dual
8134 WHERE EXISTS (SELECT 1
8135 FROM jai_cmn_taxes_all jcta,
8136 jai_interface_tax_lines_all jitla,
8137 jai_interface_lines_all jila
8138 WHERE jitla.tax_id = jcta.tax_id
8139 AND jila.interface_line_id = jitla.interface_line_id
8140 AND jila.interface_line_id in
8141 (
8142 select interface_line_id
8143 from jai_interface_lines_all
8144 where internal_trx_id = ln_customer_trx_id
8145 )
8146 AND upper(jcta.tax_type) IN
8147 (SELECT upper(jrr.attribute_code)
8148 FROM jai_rgm_registrations jrr
8149 WHERE jrr.registration_type = jai_constants.regn_type_tax_types
8150 AND jrr.regime_id = (SELECT jrd.regime_id
8151 FROM jai_rgm_definitions jrd
8152 WHERE jrd.regime_code = jai_constants.service_regime)));
8153 CURSOR get_trx_st_no_cur
8154 IS
8155 SELECT
8156 DISTINCT(st_inv_number)
8157 FROM JAI_INTERFACE_LINES_ALL
8158 WHERE internal_trx_id = ln_customer_trx_id
8159 AND nvl(st_inv_number,'###')<> '###';
8160
8161 lv_st_invoice_num jai_interface_lines_all.ST_INV_NUMBER%TYPE;
8162 lv_st_tax_exists VARCHAR2(1);
8163 --Added by Qinglei for the Advanced Receipt for Service Tax enhancement Bug 13361952
8164
8165 --PROGRAM BLOCK BEGIN
8166 BEGIN
8167
8168 ln_phase := 90.1;
8169
8170 OPEN get_interface_line_cur;
8171 FETCH get_interface_line_cur INTO rec_interface_line;
8172 CLOSE get_interface_line_cur;
8173
8174 ln_customer_trx_id := rec_interface_line.internal_trx_id;
8175 ln_customer_trx_line_id := rec_interface_line.internal_trx_line_id;
8176 ln_interface_line_id := pn_interface_line_id;
8177 lv_taxable_event := rec_interface_line.taxable_event;
8178 ln_vat_invoice_no := rec_interface_line.vat_invoice_no;
8179 ln_excise_invoice_no := rec_interface_line.excise_invoice_no;
8180
8181 ln_tax_category_id := rec_interface_line.tax_category_id;
8182
8183 ln_phase := 90.2;
8184
8185 SELECT SUM(TAX_AMOUNT) INTO ln_sum_tax_amount
8186 FROM JAI_AR_TRX_TAX_LINES
8187 WHERE LINK_TO_CUST_TRX_LINE_ID = ln_customer_trx_line_id;
8188
8189 ln_phase := 90.3;
8190
8191 --IF EXTERNAL NEED UPDATE INVOICE NO TO TRX
8192 IF(lv_taxable_event = GV_TAXABLE_EVENT_EXTERNAL)THEN
8193
8194
8195 --Added by zhiwei for bug#12564566 begin
8196 ------------------------------------------------------------------------------------------
8197 open get_trx_vat_no_cur;
8198 fetch get_trx_vat_no_cur into ln_vat_invoice_no;
8199 close get_trx_vat_no_cur;
8200
8201 open get_trx_excise_no_cur;
8202 fetch get_trx_excise_no_cur into ln_excise_invoice_no;
8203 close get_trx_excise_no_cur;
8204 ------------------------------------------------------------------------------------------
8205 --Added by zhiwei for bug#12564566 end
8206
8207
8208
8209 OPEN get_vat_tax_exists_cur;
8210 FETCH get_vat_tax_exists_cur INTO lv_vat_tax_exists;
8211 CLOSE get_vat_tax_exists_cur;
8212
8213 OPEN get_excise_tax_exists_cur;
8214 FETCH get_excise_tax_exists_cur INTO lv_excise_tax_exists;
8215 CLOSE get_excise_tax_exists_cur;
8216
8217 -----------------------------------------------------------------------
8218 --Added by qinglei 26-Oct-2011 E/R Service Tax on Advance Receipt begin
8219 OPEN get_trx_st_no_cur;
8220 FETCH get_trx_st_no_cur INTO lv_st_invoice_num;
8221 CLOSE get_trx_st_no_cur;
8222
8223 OPEN get_service_tax_exists_cur;
8224 FETCH get_service_tax_exists_cur INTO lv_st_tax_exists;
8225 CLOSE get_service_tax_exists_cur;
8226
8227 IF nvl(lv_st_tax_exists,'N') = 'N' THEN
8228 lv_st_invoice_num := NULL;
8229 ELSE
8230 UPDATE jai_ar_trxs
8231 SET
8232 st_inv_number = lv_st_invoice_num
8233 WHERE customer_trx_id = ln_customer_trx_id;
8234 END IF;
8235 --Added by qinglei 26-Oct-2011 E/R Service Tax on Advance Receipt end
8236 -----------------------------------------------------------------------
8237
8238 --IF there is no vat/excise tax, vat/excise no will leave null, and will not pass to AR/AP.
8239 IF nvl(lv_vat_tax_exists, 'N') = 'N' THEN
8240 ln_vat_invoice_no := NULL;
8241 --Added by zhiwei for bug#12564566 begin
8242 ------------------------------------------------
8243 ELSE
8244 UPDATE JAI_AR_TRXS
8245 SET
8246 VAT_INVOICE_NO = ln_vat_invoice_no
8247 WHERE CUSTOMER_TRX_ID = ln_customer_trx_id;
8248 ------------------------------------------------
8249 --Added by zhiwei for bug#12564566 end
8250 END IF;
8251
8252 IF nvl(lv_excise_tax_exists, 'N') = 'N' THEN
8253 ln_excise_invoice_no := NULL;
8254 --Added by zhiwei for bug#12564566 begin
8255 ------------------------------------------------
8256 ELSE
8257 UPDATE JAI_AR_TRX_LINES
8258 SET
8259 EXCISE_INVOICE_NO = ln_excise_invoice_no
8260 WHERE CUSTOMER_TRX_ID = ln_customer_trx_id;
8261 ------------------------------------------------
8262 --Added by zhiwei for bug#12564566 end
8263 END IF;
8264
8265
8266 /*--Commented by zhiwei for bug#12564566 begin
8267 UPDATE JAI_AR_TRXS
8268 SET
8269 VAT_INVOICE_NO = ln_vat_invoice_no
8270 WHERE CUSTOMER_TRX_ID = ln_customer_trx_id;
8271 */--Commented by zhiwei for bug#12564566 end
8272
8273 ln_phase := 90.4;
8274
8275
8276 UPDATE JAI_AR_TRX_LINES
8277 SET TAX_AMOUNT = ln_sum_tax_amount,
8278 TOTAL_AMOUNT = LINE_AMOUNT + ln_sum_tax_amount,
8279 INTERFACE_FLAG = 'Y',
8280 INTERFACE_EVENT = GV_TAXABLE_EVENT_EXTERNAL,--Added by zhiwei for Bug#12537533 on 20110510
8281 --EXCISE_INVOICE_NO = ln_excise_invoice_no, --Commented by zhiwei for bug#12564566
8282 tax_category_id = ln_tax_category_id
8283 WHERE CUSTOMER_TRX_ID = ln_customer_trx_id
8284 AND CUSTOMER_TRX_LINE_ID = ln_customer_trx_line_id;
8285
8286 ln_phase := 90.5;
8287
8288 ELSE
8289
8290 ln_phase := 90.6;
8291
8292 UPDATE JAI_AR_TRX_LINES
8293 SET TAX_AMOUNT = ln_sum_tax_amount,
8294 TOTAL_AMOUNT = LINE_AMOUNT + ln_sum_tax_amount,
8295 INTERFACE_FLAG = 'Y',
8296 INTERFACE_EVENT = GV_TAXABLE_EVENT_STANDALONE,--Added by zhiwei for Bug#12537533 on 20110510
8297 tax_category_id = ln_tax_category_id
8298 WHERE CUSTOMER_TRX_ID = ln_customer_trx_id
8299 AND CUSTOMER_TRX_LINE_ID = ln_customer_trx_line_id;
8300
8301 ln_phase := 90.7;
8302 END IF;
8303
8304 --AFTER UPDATE TAXAMOUNT AND TOTALAMOUNT OF JAI_AR_TRX_LINES ,
8305 --TRIGGER JAI_JAR_TL_ARIUD_T1 WILL BE INVOKED, IF OPEN_INTF_SOURCE = 'OPENINTF' THEN RETURN, SO THE TRIGGER WILL DO NOTHING FOR OPEN INTERFACE
8306 --
8307 --THE PROCEDURE insert_line_t WILL BE FIRED TO POPULATE DATA INTO TABLE JAI_AR_TRX_INS_LINES_T
8308 --DETAILS REFER TO IN JAI_JAR_TL_TRIGGER_PKG.ARU_T1
8309 --
8310
8311 ln_phase := 90.8;
8312
8313 populate_temp_table(
8314
8315 pn_interface_line_id => pn_interface_line_id,
8316 pn_customer_trx_id => ln_customer_trx_id,
8317 pn_customer_trx_line_id => ln_customer_trx_line_id,
8318 pv_return_code => lv_return_code,
8319 pv_return_message => lv_return_mess
8320 );
8321 IF(lv_return_code <> jai_constants.successful)THEN
8322 ov_return_code := lv_return_code;
8323 ov_return_message := lv_return_mess ;
8324
8325 --pv_process_flag := lv_return_code;
8326 --pv_proeess_mess := lv_return_mess;
8327 RETURN;
8328 END IF;
8329
8330 ln_phase := 90.9;
8331
8332
8333 --Get logic from concurrent 'AR TAX FREIGHT DEFAULTATION'
8334 process_trx_dis_bal_lines(
8335 pv_type => 'OPAPI',
8336 pv_event => lv_taxable_event,
8337 pn_customer_trx_id => ln_customer_trx_id,
8338 pn_customer_trx_line_id => ln_customer_trx_line_id,
8339 pn_interface_line_id => ln_interface_line_id,
8340 p_process_flag => lv_return_code,
8341 p_process_message => lv_return_mess);
8342 IF(lv_return_code = jai_constants.expected_error)THEN
8343 ov_return_code := lv_return_code;
8344 ov_return_message := lv_return_mess ;
8345
8346 --pv_process_flag := lv_return_code;
8347 --pv_proeess_mess := lv_return_mess;
8348 RETURN;
8349 END IF;
8350
8351 ln_phase := 91;
8352
8353
8354 /*
8355 after process above , RA_CUSTOMER_TRX_LINES_ALL LINES FOR 'TAX' HAVE BEEN POPULATE.
8356 RA_CUST_TRX_GL_DIS_ALL LINES FOR 'TAX' HAVE BEEN POPULATE.
8357 BALANCE HAVE BEEN UPDATED.
8358 TOTAL AMOUNT AND TAX AMOUNT OF JAI_AR_TRX_LINES HAVE BEEN UPDATED.
8359 THE REST LOGIC IS MAINLY INCLUDE INVOICE GENERATION
8360 INSERT REPOSITORY
8361 INCLUSIVE TAX ACCOUNTING
8362 UPDATE INVOICE NO TO TRSANCTIOIN TABLE
8363 */
8364
8365 --
8366 /*
8367 update ra_customer_trx_all
8368 set complete_flag = 'Y'
8369 where customer_trx_id = ln_customer_trx_id;
8370 */
8371
8372
8373
8374 EXCEPTION
8375 WHEN OTHERS THEN
8376 lv_return_mess := 'PROCESSING Exception with SQLERR '||SUBSTR(SQLERRM,1,230) ||' in PROCESS_AR_UPDATING_LINES With interface_line_id:'||pn_interface_line_id||', at POS:'||ln_phase;
8377 ov_return_code := jai_constants.unexpected_error;
8378 ov_return_message := lv_return_mess ;
8379
8380 RETURN;
8381
8382
8383
8384 END process_ar_updating_lines;
8385
8386
8387
8388
8389 /*
8390 || process ar accounting,update reposotory,account inclusive tax.
8391 */
8392 PROCEDURE process_ar_accounting_lines(
8393 pn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE,
8394 ov_return_code OUT NOCOPY VARCHAR2,
8395 ov_return_message OUT NOCOPY VARCHAR2
8396 )
8397 IS
8398 CURSOR get_taxable_event_cur IS
8399 SELECT DISTINCT(taxable_event)
8400 FROM jai_interface_lines_all
8401 WHERE internal_trx_id = pn_trx_id;
8402
8403 --VARIABLE DEFINITION AS BELOW
8404 lv_return_code VARCHAR2(100);
8405 lv_return_message VARCHAR2(2000);
8406 ln_customer_trx_id JAI_AR_TRXS.CUSTOMER_TRX_ID%TYPE;
8407 ln_interface_line_id JAI_INTERFACE_LINES_ALL.INTERFACE_LINE_ID%TYPE;
8408 ln_customer_trx_line_id JAI_AR_TRX_LINES.CUSTOMER_TRX_LINE_ID%TYPE;
8409 lv_taxable_event JAI_INTERFACE_LINES_ALL.TAXABLE_EVENT%TYPE;
8410
8411
8412 ln_phase NUMBER;
8413 le_exception EXCEPTION;
8414 --PROGRAM BLOCK BEGIN
8415 BEGIN
8416
8417
8418
8419 ln_phase := 110.1;
8420 --ARU_T1
8421 ------------------------------------------------------------------------------------
8422 fire_aru_t1(
8423 pn_customer_trx_id => pn_trx_id,
8424 ov_return_code => lv_return_code,
8425 ov_return_message => lv_return_message
8426 );
8427 IF(lv_return_code <> jai_constants.successful)THEN
8428 ov_return_code := lv_return_code ;
8429 ov_return_message := lv_return_message;
8430 RETURN;
8431 END IF;
8432
8433 ln_phase := 110.2;
8434
8435 --ARU_T3
8436 -------------------------------------------------------------------------------
8437 fire_aru_t3(
8438 pn_customer_trx_id => pn_trx_id,
8439 ov_return_code => lv_return_code,
8440 ov_return_message => lv_return_message
8441 );
8442 IF(lv_return_code <> jai_constants.successful)THEN
8443 ov_return_code := lv_return_code ;
8444 ov_return_message := lv_return_message;
8445 RETURN;
8446 END IF;
8447
8448 ln_phase := 110.3;
8449 --ARU_T4
8450 ------------------------------------------------------------------------------------
8451 fire_aru_t4(
8452 pn_customer_trx_id => pn_trx_id,
8453 ov_return_code => lv_return_code,
8454 ov_return_message => lv_return_message
8455 );
8456
8457 IF(lv_return_code <> jai_constants.successful)THEN
8458 ov_return_code := lv_return_code ;
8459 ov_return_message := lv_return_message;
8460 RETURN;
8461 END IF;
8462
8463 ln_phase := 110.4;
8464 --ARU_T4
8465 -------------------------------------------------------------------------------
8466 fire_aru_t7(
8467 pn_customer_trx_id => pn_trx_id,
8468 ov_return_code => lv_return_code,
8469 ov_return_message => lv_return_message
8470 );
8471 IF(lv_return_code <> jai_constants.successful)THEN
8472 ov_return_code := lv_return_code ;
8473 ov_return_message := lv_return_message;
8474 RETURN;
8475 END IF;
8476 ln_phase := 110.5;
8477 --acc_inclusive_tax
8478 -------------------------------------------------------------------------
8479 OPEN get_taxable_event_cur;
8480 FETCH get_taxable_event_cur INTO lv_taxable_event;
8481 CLOSE get_taxable_event_cur;
8482
8483 /*--Add if condition by Xiao for bug#11903425
8484 --For AR, only standard event will generate accounting for inclusive tax.
8485 IF nvl(upper(lv_taxable_event), GV_TAXABLE_EVENT_EXTERNAL) = GV_TAXABLE_EVENT_STANDALONE THEN */
8486 --Above IF condition Commented by zhiwei for POT change Bug#13023443 on 20110929
8487 --For External Service Tax , if GL < POT ,need to insert gl_interface also. so comments if condition
8488 -- and add code determination in jai_ar_match_tax_pkg.acc_inclusive_tax.
8489 acc_inclusive_tax(
8490 pn_customer_trx_id => pn_trx_id,
8491 ov_return_code => lv_return_code,
8492 ov_return_message => lv_return_message
8493 );
8494 IF(lv_return_code <> jai_constants.successful)THEN
8495 ov_return_code := lv_return_code ;
8496 ov_return_message := lv_return_message;
8497 RETURN;
8498 END IF;
8499 --END IF;--Commented by zhiwei for POT change Bug#13023443 on 20110929
8500 ln_phase := 110.6;
8501 --update reference field
8502 -----------------------------------------------------------------------
8503 update_ar_reference(
8504 ov_retcode => lv_return_code,
8505 ov_errbuf => lv_return_message,
8506 pn_customer_trx_id => pn_trx_id);
8507
8508 IF(lv_return_code <> jai_constants.successful)THEN
8509 ov_return_code := lv_return_code ;
8510 ov_return_message := lv_return_message;
8511 RETURN;
8512 END IF;
8513 ln_phase := 110.7;
8514
8515 --update register balance.
8516 -----------------------------------------------------------------------
8517 fire_jai_aru_t1(
8518 pn_customer_trx_id => pn_trx_id,
8519 ov_return_code => lv_return_code,
8520 ov_return_message => lv_return_message
8521 );
8522
8523 EXCEPTION
8524 WHEN OTHERS THEN
8525 lv_return_message := 'PROCESSING Exception with SQLERR: '||SUBSTR(SQLERRM,1,230) ||' in PROCESS_AR_ACCOUNTING_LINES With internal_trx_id :'||pn_trx_id||', at POS:'||ln_phase;
8526 ov_return_code := jai_constants.unexpected_error;
8527 ov_return_message := lv_return_message ;
8528
8529 RETURN;
8530
8531
8532
8533 END process_ar_accounting_lines;
8534
8535
8536 --==========================================================================
8537 -- PROCEDURE NAME:
8538 --
8539 -- ja_in_calc_prec_taxes Public
8540 --
8541 -- DESCRIPTION:
8542 --
8543 -- This procedure calculates taxes based on existing tax calculation logic
8544 -- for each AR/AP lines, and will populate func_tax_amount, base_tax_amount,
8545 -- tax_amount to AR/AP tax lines.
8546 --
8547 -- PARAMETERS:
8548 -- In: transaction_name VARCHAR2,
8549 -- p_header_id NUMBER,
8550 -- p_line_id NUMBER,
8551 -- p_assessable_value NUMBER
8552 -- p_tax_amount IN OUT NOCOPY NUMBER,
8553 -- p_inventory_item_id NUMBER,
8554 -- p_line_quantity NUMBER,
8555 -- p_uom_code VARCHAR2,
8556 -- p_vendor_id NUMBER,
8557 -- p_currency VARCHAR2,
8558 -- p_currency_conv_factor NUMBER,
8559 -- p_creation_date DATE,
8560 -- p_created_by NUMBER,
8561 -- p_last_update_date DATE,
8562 -- p_last_updated_by NUMBER,
8563 -- p_last_update_login NUMBER,
8564 -- p_operation_flag NUMBER DEFAULT NULL ,
8565 -- p_vat_assessable_value NUMBER DEFAULT 0
8566 --
8567 --
8568 -- Out:
8569 --
8570 --
8571 -- DESIGN REFERENCES:
8572 -- AR/AP API Technical Design 1.0.doc
8573 --
8574 -- CHANGE HISTORY:
8575 --
8576 -- 1. 16-Dec-2010 Xiao Lv Created for bug#11683927,
8577 -- A dummy bug for tracking the er of Open Interface.
8578 -- 2. 24-Mar-2011 Xiao Lv For bug#11903425,
8579 -- Enhanced function of tax category preview for Open Interface ER.
8580 --
8581 --===========================================================================
8582
8583
8584 PROCEDURE ja_in_calc_prec_taxes(
8585 transaction_name VARCHAR2,
8586 p_header_id NUMBER,
8587 p_line_id NUMBER,
8588 p_assessable_value NUMBER DEFAULT 0,
8589 p_tax_amount IN OUT NOCOPY NUMBER,
8590 p_inventory_item_id NUMBER,
8591 p_line_quantity NUMBER,
8592 p_uom_code VARCHAR2,
8593 p_vendor_id NUMBER,
8594 p_currency VARCHAR2,
8595 p_currency_conv_factor NUMBER,
8596 p_creation_date DATE,
8597 p_created_by NUMBER,
8598 p_last_update_date DATE,
8599 p_last_updated_by NUMBER,
8600 p_last_update_login NUMBER,
8601 p_operation_flag NUMBER DEFAULT NULL , -- for CRM this is used to hold aso_shipments.shipment_id
8602 p_vat_assessable_value NUMBER DEFAULT 0
8603 /** bgowrava for forward porting bug#5631784,Following parameters are added for TCS enh.*/
8604 , p_thhold_cat_base_tax_typ JAI_CMN_TAXES_ALL.tax_type%TYPE DEFAULT NULL -- tax type to be considered as base when calculating threshold taxes
8605 , p_threshold_tax_cat_id JAI_AP_TDS_THHOLD_TAXES.tax_category_id%TYPE DEFAULT NULL
8606 , p_source_trx_type jai_cmn_document_taxes.source_doc_type%TYPE DEFAULT NULL
8607 , p_source_table_name jai_cmn_document_taxes.source_table_name%TYPE DEFAULT NULL
8608 , p_action VARCHAR2 DEFAULT NULL
8609 /** End bug 5631784 */
8610 , pv_retroprice_changed IN VARCHAR2 DEFAULT 'N' --Added by Kevin Cheng for Retroactive Price 2008/01/13
8611 , p_modified_by_agent_flag po_requisition_lines_all.modified_by_agent_flag%TYPE DEFAULT NULL /*Added for Bug 8241905*/
8612 , p_parent_req_line_id po_requisition_lines_all.parent_req_line_id%TYPE DEFAULT NULL /*Added for Bug 8241905*/
8613 , p_max_tax_line NUMBER DEFAULT 0 /*Added for Bug 8371741*/
8614 , p_max_rgm_tax_line NUMBER DEFAULT 0 /*Added for Bug 8371741*/
8615 ) IS
8616 --TYPE num_tab IS TABLE OF NUMBER(30,3) INDEX BY BINARY_INTEGER; -- sriram - bug # 2812781 was 14 eaerler changed to 30
8617 --TYPE tax_amt_num_tab IS TABLE OF NUMBER(30,3) INDEX BY BINARY_INTEGER; -- sriram - bug # 2812781 was 14 eaerler changed to 30
8618
8619
8620 -- Date 02/11/2006 Bug 5228046 added by SACSETHI
8621
8622 TYPE num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8623 TYPE tax_amt_num_tab IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8624 TYPE tax_adhoc_flag_tab IS TABLE OF VARCHAR2(2) INDEX BY BINARY_INTEGER; /* rchandan bug#6030615 */
8625
8626
8627
8628 TYPE char_tab IS TABLE OF VARCHAR2(10)
8629 INDEX BY BINARY_INTEGER;
8630
8631 lt_adhoc_tax_tab CHAR_TAB;
8632 lt_inclusive_tax_tab CHAR_TAB;
8633 ln_exclusive_price NUMBER;
8634 lt_tax_rate_per_rupee NUM_TAB;
8635 lt_cumul_tax_rate_per_rupee NUM_TAB;
8636 ln_total_non_rate_tax NUMBER :=0;
8637 ln_total_inclusive_factor NUMBER;
8638 lt_tax_amt_rate_tax_tab TAX_AMT_NUM_TAB;
8639 lt_tax_amt_non_rate_tab TAX_AMT_NUM_TAB;
8640 ln_bsln_amt_nr NUMBER :=0;
8641 ln_tax_amt_nr NUMBER(38,10) :=0;
8642 ln_vamt_nr NUMBER(38,10) :=0;
8643 ln_total_tax_per_rupee NUMBER;
8644 ln_assessable_value NUMBER;
8645 ln_vat_assessable_value NUMBER;
8646
8647 base_tax_amount_nr_tab tax_amt_num_tab; --added by Xiao Lv for bug#8789761
8648 ln_amount NUMBER; --Added by Shyan for bug 10358786.
8649
8650 /* Added by Ramananda for bug#4407165 */
8651 lv_object_name CONSTANT VARCHAR2(61) := 'ja_in_calc_prec_taxes';
8652
8653 p1 NUM_TAB;
8654 p2 NUM_TAB;
8655 p3 NUM_TAB;
8656 p4 NUM_TAB;
8657 p5 NUM_TAB;
8658 p6 NUM_TAB;
8659 p7 NUM_TAB;
8660 p8 NUM_TAB;
8661 p9 NUM_TAB;
8662 p10 NUM_TAB;
8663
8664 line_no_tab NUM_TAB;
8665
8666 tax_rate_tab NUM_TAB;
8667
8668 TYPE tax_vat_flag_tab IS TABLE OF VARCHAR2(2) INDEX BY BINARY_INTEGER; --Added by zhiwei for Bug#12604133 on 20110623
8669 tax_amount_temp_tab num_tab; --Added by zhiwei for Bug#12604133 on 20110623
8670 qty_rate_tab NUM_TAB; --Added by zhiwei for Bug#12604133 on 20110623
8671 vat_flag_tab tax_vat_flag_tab; --Added by zhiwei for Bug#12604133 on 20110623
8672 reverse_flag_tab NUM_TAB; --Added by zhiwei for Bug#12604133 on 20110623
8673 /*
8674 || Aiyer for the fwd ported bug#4691616 . Added tax_rate_zero_tab table
8675 -------------------------------------------------------------
8676 tax_rate(i) tax_rate_tab(i) tax_rate_zero_tab(i)
8677 -------------------------------------------------------------
8678 NULL 0 0
8679 0 0 -9999
8680 n (non-zero and not null) n n
8681 -------------------------------------------------------------
8682 */
8683 tax_rate_zero_tab NUM_TAB;
8684 tax_type_tab NUM_TAB;
8685 tax_target_tab NUM_TAB;
8686 tax_amt_tab TAX_AMT_NUM_TAB;
8687 round_factor_tab TAX_AMT_NUM_TAB; --added by csahoo for bug#6077133
8688 base_tax_amt_tab TAX_AMT_NUM_TAB;
8689 func_tax_amt_tab TAX_AMT_NUM_TAB;
8690 adhoc_flag_tab TAX_ADHOC_FLAG_TAB ; /* rchandan bug#6030615 */
8691 end_date_tab NUM_TAB;
8692
8693 bsln_amt NUMBER; -- := p_tax_amount; --Ramananda for File.Sql.35
8694
8695 v_conversion_rate NUMBER; -- := 0; --Ramananda for File.Sql.35
8696 v_currency_conv_factor NUMBER; -- := p_currency_conv_factor; --Ramananda for File.Sql.35
8697
8698
8699 v_tax_amt NUMBER := 0;
8700 v_func_tax_amt NUMBER := 0;
8701 vamt NUMBER := 0;
8702
8703 v_amt NUMBER;
8704 row_count NUMBER := 1;
8705 counter NUMBER;
8706 max_iter NUMBER := 10;
8707 v_excise_jb NUMBER;
8708
8709 v_line_focus_id_holder JAI_PO_LINE_LOCATIONS.line_focus_id%TYPE; -- cbabu for EnhancementBug# 2427465
8710
8711 /** bgowrava, Begin forward porting bug#5631784 */
8712 refc_tax_cur ref_cur_typ;
8713 rec tax_rec_typ;
8714 TYPE tax_table_typ IS
8715 TABLE OF tax_rec_typ INDEX BY BINARY_INTEGER;
8716 lt_tax_table tax_table_typ;
8717 ln_max_tax_line NUMBER;
8718 ln_max_rgm_tax_line NUMBER;
8719 ln_base NUMBER;
8720 ln_dup_tax_exists NUMBER;
8721 v_modvat_flag VARCHAR2(1); -- moved from prev location to here
8722 lv_recalculation_sql VARCHAR2(4000);
8723 ln_exists NUMBER(2);
8724 ln_prev_quantity NUMBER; /*Bug 8241905*/
8725 ln_tax_modified_flag VARCHAR2(1); /*Bug 8241905*/
8726 ln_rounding_factor NUMBER; /*Bug 8241905*/
8727 l_created_from VARCHAR2(10); /*Bug 8371741*/
8728
8729 CURSOR uom_class_cur(p_line_uom_code IN VARCHAR2, p_tax_line_uom_code IN VARCHAR2) IS
8730 SELECT a.uom_class
8731 FROM mtl_units_of_measure A, mtl_units_of_measure B
8732 WHERE a.uom_code = p_line_uom_code
8733 AND b.uom_code = p_tax_line_uom_code
8734 AND a.uom_class = b.uom_class;
8735
8736 v_organization_id NUMBER;
8737 v_location_id NUMBER;
8738 v_batch_source_id NUMBER;
8739
8740 CURSOR get_header_info_cur IS
8741 SELECT organization_id, location_id, batch_source_id
8742 FROM JAI_AR_TRXS
8743 WHERE customer_trx_id = p_header_id;
8744
8745 v_debug boolean := true; -- Vijay Shankar for Bug# 2837970
8746 v_line_num number:=1 ;--added by rchandan for bug#6030615
8747 ln_reg_id number;
8748
8749 uom_cls UOM_CLASS_CUR%ROWTYPE;
8750
8751 BEGIN
8752
8753 bsln_amt := p_tax_amount ;
8754 v_conversion_rate := 0;
8755 v_currency_conv_factor := p_currency_conv_factor;
8756 ln_base := 0 ;
8757
8758 /**
8759 Following is a dynamic sql string which can be modifed as per requirement
8760
8761 The sql has four place holders defined as below
8762 $$EXTRA_SELECT_COLUMN_LIST$$ - Use this place holder to select additional columns in the sql.
8763 You must also change corrosponding fetch statements and the record being used for fetch.
8764 SELECT statement above should also be changed to include the newly added columns
8765 as they are sharing a common cursor and fetch record.
8766
8767 $$TAX_SOURCE_TABLE$$ - At runtime this placeholder must be replaced with name of
8768 source table to be used for recalculation
8769 $$SOURCE_TABLE_FILTER$$ - At runtime, this place holder must represent a boolean condition
8770 which can filter required rows from the source table
8771 for recalculation. It must be the first condition and should never
8772 start with either AND or OR
8773 $$ADDITIONAL_WHERE_CLAUSE$$ - Replace the placeholder with additional conditions if any.
8774 The condition must start with either AND or OR keyword
8775 $$ADDITIONAL_ORDER_BY$$ - Replace the placeholder with list of columns and order sequence, if required.
8776 Column list must start with comma (,)
8777 If any of this placeholder is not required to be used it must be replaced with a null value as below
8778 replace ( lv_recalculation_sql
8779 , '$$EXTRA_SELECT_COLUMN_LIST$$'
8780 , ''
8781 );
8782 */
8783 lv_recalculation_sql :=
8784 ' select a.tax_id
8785 , a.tax_line_no lno
8786 , a.precedence_1 p_1
8787 , a.precedence_2 p_2
8788 , a.precedence_3 p_3
8789 , a.precedence_4 p_4
8790 , a.precedence_5 p_5
8791 , a.precedence_6 p_6
8792 , a.precedence_7 p_7
8793 , a.precedence_8 p_8
8794 , a.precedence_9 p_9
8795 , a.precedence_10 p_10
8796 , a.tax_rate
8797 , a.tax_amount
8798 , b.uom_code
8799 , b.end_date valid_date
8800 , DECODE(rttv.regime_code, '''||jai_constants.vat_regime||''', 4, /* added by ssumaith - bug# 4245053*/
8801 '''||jai_constants.cgst_regime||''', 7, /* Added by Jia for GST Bug#10043656 on 2010/09/10 */
8802 '''||jai_constants.sgst_regime||''', 7, /* Added by Jia for GST Bug#10043656 on 2010/09/10 */
8803 DECODE(UPPER(b.tax_type), ''EXCISE'' , 1
8804 , ''ADDL. EXCISE'', 1
8805 , ''OTHER EXCISE'', 1
8806 , ''TDS'' , 2
8807 , ''EXCISE_EDUCATION_CESS'',6 --modified by walton for inclusive tax
8808 , '''||JAI_CONSTANTS.TAX_TYPE_SH_EXC_EDU_CESS||''' , 6 /*bduvarag for the bug#5989740*/ --modified by walton for inclusive tax
8809 , ''CVD_EDUCATION_CESS'' ,6 --modified by walton for inclusive tax
8810 , '''||JAI_CONSTANTS.TAX_TYPE_SH_CVD_EDU_CESS||''' , 6 /*bduvarag for the bug#5989740*/ --modified by walton for inclusive tax
8811 , 0
8812 )
8813 ) tax_type_val
8814 , b.mod_cr_percentage
8815 , b.vendor_id
8816 , b.tax_type
8817 , nvl(b.rounding_factor,0) rounding_factor
8818 , b.adhoc_flag
8819 $$EXTRA_SELECT_COLUMN_LIST$$
8820 ,b.inclusive_tax_flag --added by walton for inclusive tax on 08-Dev-07,--Added inclusive_tax_flag in end as it is last column in record type. by JMEENA for bug#9489492
8821 ,a.qty_rate --Added by zhiwei for Bug#12604133 on 20110623
8822 ,b.vat_flag --Added by zhiwei for Bug#12604133 on 20110623
8823 from $$TAX_SOURCE_TABLE$$ a
8824 , JAI_CMN_TAXES_ALL b
8825 , jai_regime_tax_types_v rttv
8826 where $$SOURCE_TABLE_FILTER$$
8827 and rttv.tax_type (+) = b.tax_type
8828 and a.tax_id = b.tax_id $$ADDITIONAL_WHERE_CLAUSE$$
8829 order by a.tax_line_no $$ADDITIONAL_ORDER_BY$$';
8830
8831
8832 /** No extra columns required. Dummy column (NULL) tax_category_id needs to be added in the last as same record (rec) is being used
8833 when fetching the cursor. If there is a need to override this default behaviour then please replace these place holder with
8834 desired strings which can be evaluated at runtime by sql-engine
8835 */
8836 lv_recalculation_sql :=
8837 REPLACE ( lv_recalculation_sql
8838 , '$$EXTRA_SELECT_COLUMN_LIST$$'
8839 , ',null tax_category_id'
8840 );
8841
8842 /** No additional filtering required */
8843 lv_recalculation_sql :=
8844 REPLACE ( lv_recalculation_sql
8845 , '$$ADDITIONAL_WHERE_CLAUSE$$'
8846 , ''
8847 );
8848
8849 /** No additional sorting required */
8850 lv_recalculation_sql :=
8851 REPLACE ( lv_recalculation_sql
8852 , '$$ADDITIONAL_ORDER_BY$$'
8853 , ''
8854 );
8855 --For AR transactions, replace it with AR tax tables
8856 -----------------------------------------------------------
8857 IF upper(p_source_trx_type) = 'AR_TRANSACTION' THEN
8858
8859 lv_recalculation_sql :=
8860 REPLACE ( lv_recalculation_sql
8861 , '$$TAX_SOURCE_TABLE$$'
8862 , 'JAI_AR_TRX_TAX_LINES'
8863 );
8864 /* replace join condition */
8865 lv_recalculation_sql :=
8866 REPLACE ( lv_recalculation_sql
8867 , '$$SOURCE_TABLE_FILTER$$'
8868 , 'a.link_to_cust_trx_line_id = ' || p_line_id
8869 );
8870
8871 --For AP standalone, replace it with AP tax tables
8872 -----------------------------------------------------------
8873 ELSIF upper(p_source_trx_type) = jai_constants.G_AP_STANDALONE_INVOICE THEN
8874
8875 lv_recalculation_sql :=
8876 REPLACE( lv_recalculation_sql
8877 , 'a.tax_amount'
8878 , 'a.tax_amt'
8879 );
8880
8881 lv_recalculation_sql :=
8882 REPLACE( lv_recalculation_sql
8883 , '$$TAX_SOURCE_TABLE$$'
8884 , 'JAI_CMN_DOCUMENT_TAXES'
8885 );
8886 -- replace join condition
8887 lv_recalculation_sql :=
8888 REPLACE( lv_recalculation_sql
8889 , '$$SOURCE_TABLE_FILTER$$'
8890 , 'a.SOURCE_DOC_LINE_ID = ' || p_line_id ||
8891 ' and SOURCE_DOC_ID = '|| p_header_id ||
8892 ' and SOURCE_DOC_TYPE ='''||
8893 jai_constants.G_AP_STANDALONE_INVOICE || ''''
8894 );
8895 END IF;
8896
8897 /**
8898 When control comes here, a valid sql statement hold by variable lv_recalculate_sql
8899 must be ready to execute.
8900 open a dynamic select statement using OPEN-FOR statement
8901 */
8902
8903 OPEN refc_tax_cur FOR lv_recalculation_sql;
8904
8905 /** Clear the tax table */
8906 lt_tax_table.delete;
8907
8908 LOOP
8909
8910 FETCH refc_tax_cur INTO rec;
8911 EXIT WHEN refc_tax_cur%NOTFOUND;
8912 /** Add current record in the lt_tax_table for future use at the time of either UPDATE or INSERT into the tables*/
8913
8914 lt_tax_table(lt_tax_table.count+1) := rec;
8915 p1(row_count) := nvl(rec.p_1,-1);
8916 p2(row_count) := nvl(rec.p_2,-1);
8917 p3(row_count) := nvl(rec.p_3,-1);
8918 p4(row_count) := nvl(rec.p_4,-1);
8919 p5(row_count) := nvl(rec.p_5,-1);
8920 p6(row_count) := nvl(rec.p_6,-1);
8921 p7(row_count) := nvl(rec.p_7,-1);
8922 p8(row_count) := nvl(rec.p_8,-1);
8923 p9(row_count) := nvl(rec.p_9,-1);
8924 p10(row_count) := nvl(rec.p_10,-1);
8925
8926 tax_rate_tab(row_count) := NVL(rec.tax_rate,0);
8927 line_no_tab(row_count) := rec.lno;
8928
8929
8930 --Added by walton for inclusive tax on 08-Dev-07, begin
8931 -----------------------------------------------------------------
8932 lt_tax_rate_per_rupee(row_count):=NVL(rec.tax_rate,0)/100;
8933 ln_total_tax_per_rupee:=0;
8934 lt_inclusive_tax_tab(row_count):=NVL(rec.inclusive_tax_flag,'N');
8935 lt_tax_amt_rate_tax_tab(row_count):=0;
8936 lt_tax_amt_non_rate_tab(row_count):=0;
8937 ------------------------------------------------------------------
8938 --Added by walton for inclusive tax on 08-Dev-07, end
8939
8940 /*
8941 || The following code added by aiyer for the bug 4691616
8942 || Purpose:
8943 || rec.tax_rate = 0 means that tax_rate for such a tax line is actually zero (i.e it is not a replacement of null value)
8944 || So, when rec.tax_rate = 0, tax_rate_zero_tab is populated with -9999 to identify that this tax_line actually has tax_rate = 0
8945 || To calculate the BASE_TAX_AMOUNT of the taxes whose tax_rate is zero
8946 */
8947
8948 IF rec.tax_rate is null THEN
8949
8950 tax_rate_zero_tab(row_count) := 0;
8951
8952 ELSIF rec.tax_rate = 0 THEN
8953 /*
8954 ||Indicates 0% tax rate becasue a tax can have a rate as 0%.
8955 */
8956 tax_rate_zero_tab(row_count) := -9999;
8957
8958 ELSE
8959 tax_rate_zero_tab(row_count) := rec.tax_rate;
8960
8961 END IF;
8962
8963 tax_type_tab(row_count) := rec.tax_type_val;
8964 /*End of bug 4691616 */
8965
8966 --Added by zhiwei for Bug#12604133 on 20110623 begin
8967 ---------------------------------------------------------
8968 qty_rate_tab(row_count) := NVL(rec.qty_rate,0);
8969 vat_flag_tab(row_count) := NVL(rec.vat_flag,'N');
8970 tax_amount_temp_tab(row_count) := nvl(rec.tax_amount,0);
8971 reverse_flag_tab(row_count) := 0;
8972
8973 IF NVL(rec.adhoc_flag,'N') = 'Y' THEN
8974 tax_amt_tab(row_count) := nvl(rec.tax_amount,0) ;
8975
8976 if( nvl(rec.vat_flag,'N') = 'Q') then
8977
8978 if qty_rate_tab(row_count) <> 0 then
8979 tax_amt_tab(row_count) := rec.qty_rate * p_line_quantity;
8980 else
8981 reverse_flag_tab(row_count) := 1;
8982 qty_rate_tab(row_count) := nvl(rec.tax_amount,0)/p_line_quantity;
8983 tax_amt_tab(row_count) := nvl(rec.tax_amount,0);
8984 end if;
8985
8986 end if;
8987 lt_tax_amt_non_rate_tab(rec.lno):=tax_amt_tab(row_count);--NVL(rec.tax_amount , 0);
8988 base_tax_amt_tab(rec.lno) := lt_tax_amt_non_rate_tab(rec.lno);
8989 ELSE
8990
8991 tax_amt_tab(row_count) := 0;
8992
8993
8994 END IF ;
8995
8996 base_tax_amt_tab(row_count) := tax_amt_tab(row_count);
8997
8998 ---------------------------------------------------------
8999 --Added by zhiwei for Bug#12604133 on 20110623 end
9000
9001 --tax_amt_tab(row_count) := 0;--Commented by zhiwei for Bug#12604133 on 20110627
9002
9003 round_factor_tab(row_count):=rec.rounding_factor; --added by csahoo for bug#6077133
9004 --base_tax_amt_tab(row_count) := 0;--Commentd by zhiwei for Bug#12604133 on 20110628
9005 adhoc_flag_tab(row_count):=rec.adhoc_flag ; /* rchandan bug#6030615 */
9006
9007 IF tax_rate_tab(row_count) = 0
9008 AND rec.uom_code is not null --added by csahoo for bug#6498072
9009 THEN
9010 -- Start of bug 3749294
9011 /*
9012 Code added by aiyer for the bug 3749294
9013 Check whether an exact match exists between the transaction uom and the setup uom (obtained through the tax_category list).
9014 IF an exact match is found then the conversion rate is equal to 1 else the conversion rate between the two uom's would be
9015 determined and tax amounts,base_tax_amounts are calculated for defaultation.
9016 */
9017 Inv_Convert.inv_um_conversion( p_uom_code, rec.uom_code, p_inventory_item_id, v_conversion_rate);
9018 IF NVL(v_conversion_rate, 0) <= 0 THEN
9019 -- pramasub start FP
9020 /*4281841 ..rchandan..start*/
9021 OPEN uom_class_cur(p_uom_code, rec.uom_code);
9022 FETCH uom_class_cur INTO uom_cls;
9023 IF uom_class_cur%FOUND THEN
9024 Inv_Convert.inv_um_conversion( p_uom_code, rec.uom_code, 0, v_conversion_rate);
9025 ELSE
9026 v_conversion_rate := 0;
9027 END IF;
9028 CLOSE uom_class_cur;
9029 /*4281841 ..rchandan..end*/
9030 -- pramasub end FP
9031 --Inv_Convert.inv_um_conversion( p_uom_code, rec.uom_code, 0, v_conversion_rate); commented by pramasub
9032 IF NVL(v_conversion_rate, 0) <= 0 THEN
9033
9034 /* for cash receipt there will be no lines. sacsethi for 6012570 (5876390) */
9035 IF (p_uom_code IS NULL AND p_inventory_item_id IS NULL )
9036 AND p_source_trx_type = jai_constants.ar_cash
9037 THEN
9038 v_conversion_rate := 1;
9039 /*
9040 Date 22-feb-2007 Added by SACSETHI for bug 6012570 (5876390)
9041 in This , Recalculation will be happen in Draft invoice
9042 */
9043 ELSIF (p_uom_code IS NULL AND p_inventory_item_id IS NULL )
9044 AND p_source_trx_type IN (jai_constants.pa_draft_invoice
9045 ,jai_constants.G_AP_STANDALONE_INVOICE)
9046 THEN
9047 v_conversion_rate := 0;
9048 ELSE
9049 v_conversion_rate := 0;
9050 END IF;
9051
9052 END IF;
9053 END IF;
9054
9055 lt_tax_amt_non_rate_tab(rec.lno):=NVL(rec.tax_amount * v_conversion_rate, 0) * p_line_quantity;
9056 base_tax_amt_tab(rec.lno) := lt_tax_amt_non_rate_tab(rec.lno); --added by walton for inclusive tax
9057
9058 END IF;
9059
9060
9061
9062 IF rec.valid_date IS NULL OR rec.valid_date >= SYSDATE THEN
9063 end_date_tab(row_count) := 1;
9064 ELSE
9065 --tax_amt_tab(row_count) := 0;--Commented by zhiwei for Bug#12604133
9066 end_date_tab(row_count) := 0;
9067 END IF;
9068 row_count := row_count + 1;
9069
9070 --added for bug#9214366, start
9071 IF p_action = jai_constants.default_taxes
9072 and p_thhold_cat_base_tax_typ = jai_constants.tax_type_tcs
9073 THEN
9074 tax_amt_tab(rec.lno) := 0;
9075 END IF;
9076 --bug#9214366, end
9077
9078 END LOOP;
9079
9080 row_count := row_count - 1;
9081
9082 IF p_vat_assessable_value<>p_tax_amount
9083 THEN
9084 ln_vat_assessable_value:=p_vat_assessable_value;
9085 ELSE
9086 ln_vat_assessable_value:=1;
9087 END IF;
9088
9089 IF p_assessable_value<>p_tax_amount
9090 THEN
9091 ln_assessable_value:=p_assessable_value;
9092 ELSE
9093 ln_assessable_value:=1;
9094 END IF;
9095
9096 FOR I IN 1..row_count LOOP
9097 IF end_date_tab(I) <> 0 THEN
9098 IF tax_type_tab(I) = 1 THEN
9099 --Added by walton for inclusive tax on 08-Dec-07
9100 ------------------------------------------------
9101 IF ln_assessable_value =1
9102 THEN
9103 bsln_amt:=1;
9104 ln_bsln_amt_nr :=0;
9105 ELSE
9106 bsln_amt :=0;
9107 ln_bsln_amt_nr :=ln_assessable_value;
9108 END IF;
9109
9110 ELSIF tax_type_tab(I) = 4 THEN
9111 --Added by walton for inclusive tax on 08-Dec-07
9112 ------------------------------------------------
9113 IF ln_vat_assessable_value =1
9114 THEN
9115 bsln_amt:=1;
9116 ln_bsln_amt_nr :=0;
9117 ELSE
9118 bsln_amt :=0;
9119 ln_bsln_amt_nr :=ln_vat_assessable_value;
9120 END IF;
9121
9122 ELSIF tax_type_tab(I) = 6 THEN
9123 --Added by walton for inclusive tax
9124 -------------------------------------
9125 bsln_amt:=0;
9126 ln_bsln_amt_nr :=0;
9127 ELSE
9128 bsln_amt:=1; --Added by walton for inclusive tax
9129 ln_bsln_amt_nr :=0; --Added by walton for inclusive tax
9130 END IF;
9131
9132 IF tax_rate_tab(I) <> 0 THEN
9133 /* Commented out by Shyan for bug 10358786 on 28-Jan-2011 , Begin
9134 ------------------------------------------------------------------------------
9135 IF P1(I) < line_no_tab(I) AND P1(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9136 vamt := vamt + NVL(tax_amt_tab(P1(I)),0);
9137 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P1(I)),0); --added by walton for inclusive tax
9138 ELSIF P1(I) = 0 THEN
9139 vamt := vamt + bsln_amt;
9140 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9141
9142 END IF;
9143 IF p2(I) < line_no_tab(I) AND p2(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9144 vamt := vamt + NVL(tax_amt_tab(p2(I)),0);
9145 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P2(I)),0); --added by walton for inclusive tax
9146 ELSIF p2(I) = 0 THEN
9147 vamt := vamt + bsln_amt;
9148 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9149 END IF;
9150 IF p3(I) < line_no_tab(I) AND p3(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9151 vamt := vamt + NVL(tax_amt_tab(p3(I)),0);
9152 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P3(I)),0); --added by walton for inclusive tax
9153 ELSIF p3(I) = 0 THEN
9154 vamt := vamt + bsln_amt;
9155 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9156 END IF;
9157 IF p4(I) < line_no_tab(I) AND p4(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9158 vamt := vamt + NVL(tax_amt_tab(p4(I)),0);
9159 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P4(I)),0); --added by walton for inclusive tax
9160 ELSIF p4(I) = 0 THEN
9161 vamt := vamt + bsln_amt;
9162 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9163 END IF;
9164 IF p5(I) < line_no_tab(I) AND p5(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9165 vamt := vamt + NVL(tax_amt_tab(p5(I)),0);
9166 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P5(I)),0); --added by walton for inclusive tax
9167 ELSIF p5(I) = 0 THEN
9168 vamt := vamt + bsln_amt;
9169 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9170 END IF;
9171 -- Date 31/10/2006 Bug 5228046 added by SACSETHI ( added column from Precedence 6 to 10 )
9172 -- start bug 5228046
9173 IF P6(I) < line_no_tab(I) AND P6(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9174 vamt := vamt + NVL(tax_amt_tab(P6(I)),0);
9175 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P6(I)),0); --added by walton for inclusive tax
9176 ELSIF P6(I) = 0 THEN
9177 vamt := vamt + bsln_amt;
9178 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9179 END IF;
9180 IF p7(I) < line_no_tab(I) AND p7(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9181 vamt := vamt + NVL(tax_amt_tab(p7(I)),0);
9182 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P7(I)),0); --added by walton for inclusive tax
9183 ELSIF p7(I) = 0 THEN
9184 vamt := vamt + bsln_amt;
9185 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9186 END IF;
9187 IF p8(I) < line_no_tab(I) AND p8(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9188 vamt := vamt + NVL(tax_amt_tab(p8(I)),0);
9189 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P8(I)),0); --added by walton for inclusive tax
9190 ELSIF p8(I) = 0 THEN
9191 vamt := vamt + bsln_amt;
9192 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9193 END IF;
9194 IF p9(I) < line_no_tab(I) AND p9(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9195 vamt := vamt + NVL(tax_amt_tab(p9(I)),0);
9196 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P9(I)),0); --added by walton for inclusive tax
9197 ELSIF p9(I) = 0 THEN
9198 vamt := vamt + bsln_amt;
9199 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9200 END IF;
9201 IF p10(I) < line_no_tab(I) AND p10(I) NOT IN (-1,0) THEN --replaced I by line_no_tab(I) for bug#9214366
9202 vamt := vamt + NVL(tax_amt_tab(p10(I)),0);
9203 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P10(I)),0); --added by walton for inclusive tax
9204 ELSIF p10(I) = 0 THEN
9205 vamt := vamt + bsln_amt;
9206 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9207 END IF;
9208 -- end bug 5228046
9209 ------------------------------------------------------------------------------
9210 Commented out by Shyan for bug 10358786 on 28-Jan-2011 , end. */
9211
9212 --Added by Shujuan for 10358786 on 28-Jan-2011, Begin
9213 -----------------------------------------------------------------------
9214 lt_tax_amt_non_rate_tab(I):=0;
9215 IF P1(I) < line_no_tab(I) AND P1(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9216 IF lt_inclusive_tax_tab(P1(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P1(I)) IS NOT NULL then
9217 IF NVL( adhoc_flag_tab(P1(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9218 vamt := vamt + NVL(tax_amt_tab(P1(I)), 0);
9219 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9220 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P1(I)), 0); --added by walton for inclusive tax
9221 END IF;
9222
9223 ELSIF P1(I) = 0 THEN
9224 IF lt_inclusive_tax_tab(I) = 'Y' then
9225 vamt := vamt + bsln_amt;
9226 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9227 ELSE
9228 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9229
9230 END IF;
9231 END IF;
9232 IF p2(I) < line_no_tab(I) AND p2(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9233 IF lt_inclusive_tax_tab(P2(I)) = 'Y' OR
9234 lt_tax_amt_rate_tax_tab(P2(I)) IS NOT NULL then
9235 IF NVL( adhoc_flag_tab(P2(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9236 vamt := vamt + NVL(tax_amt_tab(p2(I)), 0);
9237 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9238 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P2(I)), 0); --added by walton for inclusive tax
9239 END IF;
9240
9241 ELSIF p2(I) = 0 THEN
9242 IF lt_inclusive_tax_tab(I) = 'Y' then
9243 vamt := vamt + bsln_amt;
9244 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9245 ELSE
9246 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9247 END IF;
9248
9249 END IF;
9250 IF p3(I) < line_no_tab(I) AND p3(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9251 IF lt_inclusive_tax_tab(P3(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P3(I)) IS NOT NULL then
9252 IF NVL( adhoc_flag_tab(P3(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9253 vamt := vamt + NVL(tax_amt_tab(p3(I)), 0);
9254 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9255 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P3(I)), 0); --added by walton for inclusive tax
9256 END IF;
9257
9258 ELSIF p3(I) = 0 THEN
9259 IF lt_inclusive_tax_tab(I) = 'Y' then
9260 vamt := vamt + bsln_amt;
9261 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9262 ELSE
9263 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9264 END IF;
9265 END IF;
9266
9267 IF p4(I) < line_no_tab(I) AND p4(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9268 IF lt_inclusive_tax_tab(P4(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P4(I)) IS NOT NULL then
9269 IF NVL( adhoc_flag_tab(P4(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9270 vamt := vamt + NVL(tax_amt_tab(p4(I)), 0);
9271 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9272 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P4(I)), 0); --added by walton for inclusive tax
9273 END IF;
9274 ELSIF p4(I) = 0 THEN
9275 IF lt_inclusive_tax_tab(I) = 'Y' then
9276 vamt := vamt + bsln_amt;
9277 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9278 ELSE
9279 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9280 END IF;
9281 END IF;
9282
9283 IF p5(I) < line_no_tab(I) AND p5(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9284 IF lt_inclusive_tax_tab(P5(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P5(I)) IS NOT NULL then
9285 IF NVL( adhoc_flag_tab(P5(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9286 vamt := vamt + NVL(tax_amt_tab(p5(I)), 0);
9287 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9288 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P5(I)), 0); --added by walton for inclusive tax
9289 END IF;
9290 ELSIF p5(I) = 0 THEN
9291 IF lt_inclusive_tax_tab(I) = 'Y' then
9292 vamt := vamt + bsln_amt;
9293 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9294 ELSE
9295 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9296 END IF;
9297 END IF;
9298 -- Date 31/10/2006 Bug 5228046 added by SACSETHI ( added column from Precedence 6 to 10 )
9299 -- start bug 5228046
9300 IF p6(I) < line_no_tab(I) AND p6(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9301 IF lt_inclusive_tax_tab(P6(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P6(I)) IS NOT NULL then
9302 IF NVL( adhoc_flag_tab(P6(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9303 vamt := vamt + NVL(tax_amt_tab(p6(I)), 0);
9304 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9305 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P6(I)), 0); --added by walton for inclusive tax
9306 END IF;
9307
9308 ELSIF p6(I) = 0 THEN
9309 IF lt_inclusive_tax_tab(I) = 'Y' then
9310 vamt := vamt + bsln_amt;
9311 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9312 ELSE
9313 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9314 END IF;
9315 END IF;
9316
9317 IF p7(I) < line_no_tab(I) AND p7(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9318 IF lt_inclusive_tax_tab(P7(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P7(I)) IS NOT NULL then
9319 IF NVL( adhoc_flag_tab(P7(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9320 vamt := vamt + NVL(tax_amt_tab(p7(I)), 0);
9321 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9322 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P7(I)), 0); --added by walton for inclusive tax
9323 END IF;
9324
9325 ELSIF p7(I) = 0 THEN
9326 IF lt_inclusive_tax_tab(I) = 'Y' then
9327 vamt := vamt + bsln_amt;
9328 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9329 ELSE
9330 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9331 END IF;
9332 END IF;
9333
9334 IF p8(I) < line_no_tab(I) AND p8(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9335 IF lt_inclusive_tax_tab(P8(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P8(I)) IS NOT NULL then
9336 IF NVL( adhoc_flag_tab(P8(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9337 vamt := vamt + NVL(tax_amt_tab(p8(I)), 0);
9338 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9339 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P8(I)), 0); --added by walton for inclusive tax
9340 END IF;
9341
9342 ELSIF p8(I) = 0 THEN
9343 IF lt_inclusive_tax_tab(I) = 'Y' then
9344 vamt := vamt + bsln_amt;
9345 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9346 ELSE
9347 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9348 END IF;
9349 END IF;
9350
9351 IF p9(I) < line_no_tab(I) AND p9(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9352 IF lt_inclusive_tax_tab(P9(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P9(I)) IS NOT NULL then
9353 IF NVL( adhoc_flag_tab(P9(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9354 vamt := vamt + NVL(tax_amt_tab(p4(I)), 0);
9355 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9356 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P9(I)), 0); --added by walton for inclusive tax
9357 END IF;
9358
9359 ELSIF p9(I) = 0 THEN
9360 IF lt_inclusive_tax_tab(I) = 'Y' then
9361 vamt := vamt + bsln_amt;
9362 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9363 ELSE
9364 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9365 END IF;
9366 END IF;
9367
9368 IF p10(I) < line_no_tab(I) AND p10(I) NOT IN (-1, 0) THEN --replaced I by line_no_tab(I) for bug#9214366
9369 IF lt_inclusive_tax_tab(P10(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P10(I)) IS NOT NULL then
9370 IF NVL( adhoc_flag_tab(P10(I)),'N') = 'N' THEN --Added by zhiwei for Bug#12604133 on 20110627
9371 vamt := vamt + NVL(tax_amt_tab(p10(I)), 0);
9372 END IF;--Added by zhiwei for Bug#12604133 on 20110627
9373 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P10(I)), 0); --added by walton for inclusive tax
9374 END IF;
9375
9376 ELSIF p10(I) = 0 THEN
9377 IF lt_inclusive_tax_tab(I) = 'Y' then
9378 vamt := vamt + bsln_amt;
9379 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9380 ELSE
9381 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9382 END IF;
9383 END IF;
9384 -- end bug 5228046
9385 ----------------------------------------------------------------------
9386 --Added by Shujuan for 10358786 on 28-Jan-2011, End
9387
9388
9389
9390
9391 v_tax_amt := v_tax_amt + (vamt * (tax_rate_tab(I)/100));
9392 ln_tax_amt_nr:=ln_tax_amt_nr+(ln_vamt_nr*(tax_rate_tab(I)/100)); --added by walton for inclusive tax
9393 /*base_tax_amt_tab(I) := vamt;--Commemnted by zhiwei for Bug#
9394 tax_amt_tab(I) := NVL(tax_amt_tab(I),0) + v_tax_amt;
9395 lt_tax_amt_non_rate_tab(I):=NVL(lt_tax_amt_non_rate_tab(I),0)+ln_tax_amt_nr; --added by walton for inclusive tax
9396
9397 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, Begin
9398 -------------------------------------------------------------------
9399 --lt_tax_amt_rate_tax_tab(I):= tax_amt_tab(I); --added by walton for inclusive tax
9400 --IF lt_inclusive_tax_tab(I) = 'Y' then--Commented by zhiwei for Bug#12604133 on 20110628
9401 IF lt_inclusive_tax_tab(I) = 'Y' and nvl(adhoc_flag_tab(I),'N')='N' then--Added by zhiwei for Bug#12604133 on 20110628
9402 lt_tax_amt_rate_tax_tab(I) := tax_amt_tab(I); --added by walton for inclusive tax
9403 END IF;
9404 -------------------------------------------------------------------
9405 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, End
9406
9407 \*tax_amt_tab(I) := round(tax_amt_tab(I) ,round_factor_tab(I)); --added by csahoo for bug#6077133*\ --commented by walton for inclusive tax
9408 base_tax_amount_nr_tab(I):=ln_vamt_nr; --added by Xiao Lv for bug#8789761 on 30-Oct-09
9409 */--Commented by zhiwei for bug# end
9410 /*vamt := 0;--Commented by zhiwei for Bug#12604133 on 20110627 begin
9411 v_tax_amt := 0;
9412 ln_tax_amt_nr:=0; --added by walton for inclusive tax
9413 ln_vamt_nr:=0; --added by walton for inclusive tax*/--Commented by zhiwei for Bug#12604133 on 20110627 end
9414
9415 --Added by zhiwei for Bug#12604133 on 20110627 begin
9416 ------------------------------------------------------------------------
9417 elsif tax_rate_tab(I) = 0 then
9418
9419 if P1(I) = -1 and qty_rate_tab(I) = 0 then
9420 if nvl(adhoc_flag_tab(I),'N') = 'Y' then
9421 ln_tax_amt_nr := lt_tax_amt_non_rate_tab(I) * 1;--v_conversion_rate;
9422 else
9423 ln_tax_amt_nr := lt_tax_amt_non_rate_tab(I);
9424 end if;
9425 elsif nvl(qty_rate_tab(I),0) <> 0 then
9426
9427 ln_tax_amt_nr := qty_rate_tab(I) * p_line_quantity;
9428
9429 end if;
9430
9431 ------------------------------------------------------------------------
9432 --Added by zhiwei for Bug#12604133 on 20110627 end
9433 END IF;
9434
9435 --Added by zhiwei for bug#12604133 on 20110628 begin
9436 --------------------------------------------------------------------------
9437 base_tax_amt_tab(I) := vamt;
9438 tax_amt_tab(I) := NVL(tax_amt_tab(I),0) + v_tax_amt;
9439 --lt_tax_amt_non_rate_tab(I):=NVL(lt_tax_amt_non_rate_tab(I),0)+ln_tax_amt_nr; --Commented by zhiwei for Bugbug#12604133
9440 lt_tax_amt_non_rate_tab(I):= ln_tax_amt_nr;--Added by zhiwei for Bugbug#12604133
9441 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, Begin
9442 -------------------------------------------------------------------
9443 --lt_tax_amt_rate_tax_tab(I):= tax_amt_tab(I); --added by walton for inclusive tax
9444 --IF lt_inclusive_tax_tab(I) = 'Y' then--Commented by zhiwei for Bug#12604133 on 20110628
9445 IF lt_inclusive_tax_tab(I) = 'Y' and nvl(adhoc_flag_tab(I),'N')='N' then--Added by zhiwei for Bug#12604133 on 20110628
9446 lt_tax_amt_rate_tax_tab(I) := tax_amt_tab(I);
9447 END IF;
9448 -------------------------------------------------------------------
9449 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, End
9450 --lt_tax_amt_rate_tax_tab(I) := NVL( lt_tax_amt_rate_tax_tab(I),0) + v_tax_amt; --Added by zhiwei for Bugbug#12604133
9451 tax_amt_tab(I) := round(tax_amt_tab(I) ,round_factor_tab(I));
9452 base_tax_amount_nr_tab(I):=ln_vamt_nr;
9453
9454
9455 --------------------------------------------------------------------------
9456 --Added by zhiwei for bug#12604133 on 20110628 end
9457
9458 ELSE
9459 tax_amt_tab(I) := 0;
9460 base_tax_amt_tab(I) := 0;
9461 base_tax_amount_nr_tab(I):=0;
9462 END IF;
9463
9464
9465 /*my.hou_log('Loop1',I) ;
9466 my.hou_log('tax_amt_tab('||I||')',tax_amt_tab(I)) ;
9467 my.hou_log('base_tax_amt_tab('||I||')',base_tax_amt_tab(I)) ;
9468 my.hou_log('base_tax_amount_nr_tab('||I||')',base_tax_amount_nr_tab(I)) ;
9469 my.hou_log('lt_tax_amt_rate_tax_tab('||I||')',lt_tax_amt_rate_tax_tab(I)) ;
9470 my.hou_log('lt_tax_amt_non_rate_tab('||I||')',lt_tax_amt_non_rate_tab(I)) ;*/
9471
9472
9473
9474 --Added by zhiwei for Bug#12604133 on 20110627 begin
9475 ------------------------------------------------------------------------
9476 vamt := 0;
9477 v_tax_amt := 0;
9478 ln_tax_amt_nr:=0; --added by walton for inclusive tax
9479 ln_vamt_nr:=0; --added by walton for inclusive tax
9480 ------------------------------------------------------------------------
9481 --Added by zhiwei for Bug#12604133 on 20110627 end
9482
9483 END LOOP;
9484
9485 FOR I IN 1..row_count LOOP
9486 IF end_date_tab( I ) <> 0 THEN
9487 IF tax_rate_tab(I) <> 0 THEN
9488 IF P1(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9489 vamt := vamt + NVL(tax_amt_tab(P1(I)),0);
9490 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P1(I)),0); --added by walton for inclusive tax
9491 END IF;
9492 IF p2(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9493 vamt := vamt + NVL(tax_amt_tab(p2(I)),0);
9494 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P2(I)),0); --added by walton for inclusive tax
9495 END IF;
9496 IF p3(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9497 vamt := vamt + NVL(tax_amt_tab(p3(I)),0);
9498 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P3(I)),0); --added by walton for inclusive tax
9499 END IF;
9500 IF p4(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9501 vamt := vamt + NVL(tax_amt_tab(p4(I)),0);
9502 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P4(I)),0); --added by walton for inclusive tax
9503 END IF;
9504 IF p5(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9505 vamt := vamt + NVL(tax_amt_tab(p5(I)),0);
9506 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P5(I)),0); --added by walton for inclusive tax
9507 END IF;
9508 -- Date 31/10/2006 Bug 5228046 added by SACSETHI ( added column from Precedence 6 to 10 )
9509 -- start bug 5228046
9510 IF P6(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9511 vamt := vamt + NVL(tax_amt_tab(P6(I)),0);
9512 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P6(I)),0); --added by walton for inclusive tax
9513 END IF;
9514 IF p7(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9515 vamt := vamt + NVL(tax_amt_tab(p7(I)),0);
9516 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P7(I)),0); --added by walton for inclusive tax
9517 END IF;
9518 IF p8(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9519 vamt := vamt + NVL(tax_amt_tab(p8(I)),0);
9520 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P8(I)),0); --added by walton for inclusive tax
9521 END IF;
9522 IF p9(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9523 vamt := vamt + NVL(tax_amt_tab(p9(I)),0);
9524 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P9(I)),0); --added by walton for inclusive tax
9525 END IF;
9526 IF p10(I) > line_no_tab(I) THEN --replaced I by line_no_tab(I) for bug#9214366
9527 vamt := vamt + NVL(tax_amt_tab(p10(I)),0);
9528 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P10(I)),0); --added by walton for inclusive tax
9529 END IF;
9530 -- end bug 5228046
9531 base_tax_amt_tab(I) := vamt;
9532 base_tax_amount_nr_tab(I):=ln_vamt_nr; /*9692478*/
9533
9534 v_tax_amt := v_tax_amt + (vamt * (tax_rate_tab(I)/100));
9535 ln_tax_amt_nr:=ln_tax_amt_nr+(ln_vamt_nr * (tax_rate_tab(I)/100)); --added by walton for inclusive tax
9536 IF vamt <> 0 THEN
9537 base_tax_amt_tab(I) := base_tax_amt_tab(I) + vamt;
9538 END IF;
9539 tax_amt_tab(I) := NVL(tax_amt_tab(I),0) + v_tax_amt;
9540 lt_tax_amt_non_rate_tab(I):=NVL(lt_tax_amt_non_rate_tab(I),0)+ln_tax_amt_nr; --added by walton for inclusive tax
9541 lt_tax_amt_rate_tax_tab(I):= tax_amt_tab(I); --added by walton for inclusive tax
9542 base_tax_amount_nr_tab(I):=ln_vamt_nr; --added by Xiao Lv for bug#8789761 on 30-Oct-09
9543 vamt := 0;
9544 v_tax_amt := 0;
9545 ln_vamt_nr :=0; --added by walton for inclusive tax
9546 ln_tax_amt_nr :=0; --added by walton for inclusive tax
9547 END IF;
9548 ELSE
9549 base_tax_amt_tab(I) := vamt;
9550 base_tax_amount_nr_tab(I):=ln_vamt_nr; /*9692478*/
9551 tax_amt_tab(I) := 0;
9552 END IF;
9553
9554 /*my.hou_log('Loop2',I) ;
9555 my.hou_log('tax_amt_tab('||I||')',tax_amt_tab(I)) ;
9556 my.hou_log('base_tax_amt_tab('||I||')',base_tax_amt_tab(I)) ;
9557 my.hou_log('base_tax_amount_nr_tab('||I||')',base_tax_amount_nr_tab(I)) ;
9558 my.hou_log('lt_tax_amt_rate_tax_tab('||I||')',lt_tax_amt_rate_tax_tab(I)) ;
9559 my.hou_log('lt_tax_amt_non_rate_tab('||I||')',lt_tax_amt_non_rate_tab(I)) ;*/
9560
9561
9562
9563 END LOOP;
9564
9565 FOR counter IN 1 .. max_iter LOOP
9566 vamt := 0;
9567 v_tax_amt := 0;
9568 ln_vamt_nr:= 0; --added by walton for inclusive tax
9569 ln_tax_amt_nr:=0; --added by walton for inclusive tax
9570
9571 FOR i IN 1 .. row_count LOOP
9572
9573 /*
9574 || Modified by aiyer for the fwd porting bug 4691616.
9575 || The following if clause will restrict the taxes whose tax_rate is null
9576 || i.e when tax_rate is null, tax_rate_tab(i) is 0.
9577 */
9578 IF ( tax_rate_tab( i ) <> 0 OR
9579 tax_rate_zero_tab(I) = -9999
9580 ) AND
9581 end_date_tab( I ) <> 0
9582 THEN
9583 IF tax_type_tab( I ) = 1 THEN
9584 --Added by walton for inclusive tax on 08-Dec-07
9585 ------------------------------------------------
9586 IF ln_assessable_value =1
9587 THEN
9588 v_amt:=1;
9589 ln_bsln_amt_nr :=0;
9590 ELSE
9591 v_amt :=0;
9592 ln_bsln_amt_nr :=ln_assessable_value;
9593 END IF;
9594
9595 ELSIF tax_type_tab(I) = 4 THEN
9596 --Added by walton for inclusive tax on 08-Dec-07
9597 ------------------------------------------------
9598 IF ln_vat_assessable_value =1
9599 THEN
9600 v_amt:=1;
9601 ln_bsln_amt_nr :=0;
9602 ELSE
9603 v_amt :=0;
9604 ln_bsln_amt_nr :=ln_vat_assessable_value;
9605 END IF;
9606
9607
9608 --Added by walton for inclusive tax
9609 -------------------------------------
9610 ELSIF tax_type_tab(I) = 6 THEN
9611 v_amt:=0;
9612 ln_bsln_amt_nr :=0;
9613 -------------------------------------
9614 ELSE
9615 IF p_assessable_value IN ( 0, -1 ) OR tax_type_tab( I ) <> 1 THEN
9616 v_amt:=1; --Added by walton for inclusive tax
9617 ln_bsln_amt_nr :=0; --Added by walton for inclusive tax
9618 ELSIF p_vat_assessable_value IN ( 0, -1 ) OR tax_type_tab( I ) <> 4 THEN
9619 v_amt:=1; --Added by walton for inclusive tax
9620 ln_bsln_amt_nr :=0; --Added by walton for inclusive tax
9621 END IF;
9622 END IF;
9623
9624 /* Commented out by Shyan for bug 10358786 on 28-Jan-2011 , Begin
9625 --------------------------------------------------------------------
9626 IF P1( i ) <> -1 THEN
9627 IF P1( i ) <> 0 THEN
9628 vamt := vamt + tax_amt_tab( P1( I ) );
9629 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P1(I)),0); --added by walton for inclusive tax
9630 ELSIF P1(i) = 0 THEN
9631 vamt := vamt + v_amt;
9632 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9633 END IF;
9634 END IF;
9635
9636 IF p2( i ) <> -1 THEN
9637 IF p2( i ) <> 0 THEN
9638 vamt := vamt + tax_amt_tab( p2( I ) );
9639 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P2(I)),0); --added by walton for inclusive tax
9640 ELSIF p2(i) = 0 THEN
9641 vamt := vamt + v_amt;
9642 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9643 END IF;
9644 END IF;
9645 IF p3( i ) <> -1 THEN
9646 IF p3( i ) <> 0 THEN
9647 vamt := vamt + tax_amt_tab( p3( I ) );
9648 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P3(I)),0); --added by walton for inclusive tax
9649 ELSIF p3(i) = 0 THEN
9650 vamt := vamt + v_amt;
9651 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9652 END IF;
9653 END IF;
9654
9655 IF p4( i ) <> -1 THEN
9656 IF p4( i ) <> 0 THEN
9657 vamt := vamt + tax_amt_tab( p4( i ) );
9658 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P4(I)),0); --added by walton for inclusive tax
9659 ELSIF p4(i) = 0 THEN
9660 vamt := vamt + v_amt;
9661 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9662 END IF;
9663 END IF;
9664
9665 IF p5( i ) <> -1 THEN
9666 IF p5( i ) <> 0 THEN
9667 vamt := vamt + tax_amt_tab( p5( i ) );
9668 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P5(I)),0); --added by walton for inclusive tax
9669 ELSIF p5(i) = 0 THEN
9670 vamt := vamt + v_amt;
9671 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9672 END IF;
9673 END IF;
9674
9675 IF P6( i ) <> -1 THEN
9676 IF P6( i ) <> 0 THEN
9677 vamt := vamt + tax_amt_tab( P6( I ) );
9678 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P6(I)),0); --added by walton for inclusive tax
9679 ELSIF P6(i) = 0 THEN
9680 vamt := vamt + v_amt;
9681 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9682 END IF;
9683 END IF;
9684
9685 IF p7( i ) <> -1 THEN
9686 IF p7( i ) <> 0 THEN
9687 vamt := vamt + tax_amt_tab( p7( I ) );
9688 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P7(I)),0); --added by walton for inclusive tax
9689 ELSIF p7(i) = 0 THEN
9690 vamt := vamt + v_amt;
9691 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9692 END IF;
9693 END IF;
9694 IF p8( i ) <> -1 THEN
9695 IF p8( i ) <> 0 THEN
9696 vamt := vamt + tax_amt_tab( p8( I ) );
9697 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P8(I)),0); --added by walton for inclusive tax
9698 ELSIF p8(i) = 0 THEN
9699 vamt := vamt + v_amt;
9700 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9701 END IF;
9702 END IF;
9703
9704 IF p9( i ) <> -1 THEN
9705 IF p9( i ) <> 0 THEN
9706 vamt := vamt + tax_amt_tab( p9( i ) );
9707 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P9(I)),0); --added by walton for inclusive tax
9708 ELSIF p9(i) = 0 THEN
9709 vamt := vamt + v_amt;
9710 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9711 END IF;
9712 END IF;
9713
9714 IF p10( i ) <> -1 THEN
9715 IF p10( i ) <> 0 THEN
9716 vamt := vamt + tax_amt_tab( p10( i ) );
9717 ln_vamt_nr:=ln_vamt_nr+NVL(lt_tax_amt_non_rate_tab(P10(I)),0); --added by walton for inclusive tax
9718 ELSIF p10(i) = 0 THEN
9719 vamt := vamt + v_amt;
9720 ln_vamt_nr:=ln_vamt_nr+ln_bsln_amt_nr; --added by walton for inclusive tax
9721 END IF;
9722 END IF;
9723 ----------------------------------------------------------------
9724 Commented out by Shyan for bug 10358786 on 28-Jan-2011, End */
9725
9726 -- Added by shujuan for bug 10358786 on 28-Jan-2011, Begin
9727 -----------------------------------------------------------
9728 ln_vamt_nr :=0;
9729 lt_tax_amt_non_rate_tab(I):=0;
9730 IF P1(i) <> -1 THEN
9731 IF P1(i) <> 0 THEN
9732 IF lt_inclusive_tax_tab(P1(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P1(I)) IS NOT NULL then
9733 IF NVL(adhoc_flag_tab(P1(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110704
9734 vamt:= vamt + tax_amt_tab(P1(I));
9735 END IF;--Added by zhiwei for bug#12604133 on 20110704
9736 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P1(I)), 0); --added by walton for inclusive tax
9737 END IF;
9738 ELSIF P1(i) = 0 THEN
9739 IF lt_inclusive_tax_tab(I) = 'Y' then
9740 vamt := vamt + v_amt;
9741 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr;
9742 ELSE
9743 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9744 END IF;
9745 END IF;
9746 END IF;
9747
9748 IF p2(i) <> -1 THEN
9749 IF p2(i) <> 0 THEN
9750 IF lt_inclusive_tax_tab(P2(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P2(I)) IS NOT NULL then
9751 IF NVL(adhoc_flag_tab(P2(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9752 vamt := vamt + tax_amt_tab(p2(I));
9753 END IF;--Added by zhiwei for bug#12604133 on 20110627
9754 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P2(I)), 0); --added by walton for inclusive tax
9755 END IF;
9756 ELSIF p2(i) = 0 THEN
9757 IF lt_inclusive_tax_tab(I) = 'Y' then
9758 vamt := vamt + v_amt;
9759 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9760 ELSE
9761 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9762 END IF;
9763 END IF;
9764 END IF;
9765
9766 IF p3(i) <> -1 THEN
9767 IF p3(i) <> 0 THEN
9768 IF lt_inclusive_tax_tab(P3(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P3(I)) IS NOT NULL then
9769 IF NVL(adhoc_flag_tab(P3(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9770 vamt := vamt + tax_amt_tab(p3(I));
9771 END IF;--Added by zhiwei for bug#12604133 on 20110627
9772 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P3(I)), 0); --added by walton for inclusive tax
9773 END IF;
9774 ELSIF p3(i) = 0 THEN
9775 IF lt_inclusive_tax_tab(I) = 'Y' then
9776 vamt := vamt + v_amt;
9777 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9778
9779 ELSE
9780 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9781 END IF;
9782 END IF;
9783 END IF;
9784
9785 IF p4(i) <> -1 THEN
9786 IF p4(i) <> 0 THEN
9787 IF lt_inclusive_tax_tab(P4(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P4(I)) IS NOT NULL then
9788 IF NVL(adhoc_flag_tab(P4(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9789 vamt := vamt + tax_amt_tab(p4(I));
9790 END IF;--Added by zhiwei for bug#12604133 on 20110627
9791 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P4(I)), 0); --added by walton for inclusive tax
9792 END IF;
9793 ELSIF p4(i) = 0 THEN
9794 IF lt_inclusive_tax_tab(I) = 'Y' then
9795 vamt := vamt + v_amt;
9796 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9797 ELSE
9798 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9799 END IF;
9800 END IF;
9801 END IF;
9802
9803 IF p5(i) <> -1 THEN
9804 IF p5(i) <> 0 THEN
9805 IF lt_inclusive_tax_tab(P5(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P5(I)) IS NOT NULL then
9806 IF NVL(adhoc_flag_tab(P5(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9807 vamt := vamt + tax_amt_tab(p5(I));
9808 END IF;--Added by zhiwei for bug#12604133 on 20110627
9809 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P5(I)), 0); --added by walton for inclusive tax
9810 END IF;
9811 ELSIF p5(i) = 0 THEN
9812 IF lt_inclusive_tax_tab(I) = 'Y' then
9813 vamt := vamt + v_amt;
9814 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9815 ELSE
9816 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9817 END IF;
9818 END IF;
9819 END IF;
9820
9821 -- Date 31/10/2006 Bug 5228046 added by SACSETHI ( added column from Precedence 6 to 10 )
9822 -- start bug 5228046
9823 IF p6(i) <> -1 THEN
9824 IF p6(i) <> 0 THEN
9825 IF lt_inclusive_tax_tab(P6(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P6(I)) IS NOT NULL then
9826 IF NVL(adhoc_flag_tab(P6(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9827 vamt := vamt + tax_amt_tab(p6(I));
9828 END IF;--Added by zhiwei for bug#12604133 on 20110627
9829 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P6(I)), 0); --added by walton for inclusive tax
9830 END IF;
9831 ELSIF p6(i) = 0 THEN
9832 IF lt_inclusive_tax_tab(I) = 'Y' then
9833 vamt := vamt + v_amt;
9834 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9835 ELSE
9836 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9837 END IF;
9838 END IF;
9839 END IF;
9840 IF p7(i) <> -1 THEN
9841 IF p7(i) <> 0 THEN
9842 IF lt_inclusive_tax_tab(P7(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P7(I)) IS NOT NULL then
9843 IF NVL(adhoc_flag_tab(P7(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9844 vamt := vamt + tax_amt_tab(p7(I));
9845 END IF;--Added by zhiwei for bug#12604133 on 20110627
9846 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P7(I)), 0); --added by walton for inclusive tax
9847 END IF;
9848 ELSIF p7(i) = 0 THEN
9849 IF lt_inclusive_tax_tab(I) = 'Y' then
9850 vamt := vamt + v_amt;
9851 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9852 ELSE
9853 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9854 END IF;
9855 END IF;
9856 END IF;
9857
9858 IF p8(i) <> -1 THEN
9859 IF p8(i) <> 0 THEN
9860 IF lt_inclusive_tax_tab(P8(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P8(I)) IS NOT NULL then
9861 IF NVL(adhoc_flag_tab(P8(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9862 vamt := vamt + tax_amt_tab(p8(I));
9863 END IF;--Added by zhiwei for bug#12604133 on 20110627
9864 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P8(I)), 0); --added by walton for inclusive tax
9865 END IF;
9866 ELSIF p8(i) = 0 THEN
9867 IF lt_inclusive_tax_tab(I) = 'Y' then
9868 vamt := vamt + v_amt;
9869 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9870 ELSE
9871 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9872 END IF;
9873 END IF;
9874 END IF;
9875
9876 IF p9(i) <> -1 THEN
9877 IF p9(i) <> 0 THEN
9878 IF lt_inclusive_tax_tab(P9(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P9(I)) IS NOT NULL then
9879 IF NVL(adhoc_flag_tab(P9(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9880 vamt := vamt + tax_amt_tab(p9(I));
9881 END IF;--Added by zhiwei for bug#12604133 on 20110627
9882 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P9(I)), 0); --added by walton for inclusive tax
9883 END IF;
9884 ELSIF p9(i) = 0 THEN
9885 IF lt_inclusive_tax_tab(I) = 'Y' then
9886 vamt := vamt + v_amt;
9887 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9888 ELSE
9889 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9890 END IF;
9891 END IF;
9892 END IF;
9893
9894 IF p10(i) <> -1 THEN
9895 IF p10(i) <> 0 THEN
9896 IF lt_inclusive_tax_tab(P10(I)) = 'Y' OR lt_tax_amt_rate_tax_tab(P10(I)) IS NOT NULL then
9897 IF NVL(adhoc_flag_tab(P10(I)),'N') = 'N' THEN--Added by zhiwei for bug#12604133 on 20110627
9898 vamt := vamt + tax_amt_tab(p10(I));
9899 END IF;--Added by zhiwei for bug#12604133 on 20110627
9900 ln_vamt_nr := ln_vamt_nr + NVL(lt_tax_amt_non_rate_tab(P10(I)), 0); --added by walton for inclusive tax
9901 END IF;
9902 ELSIF p10(i) = 0 THEN
9903 IF lt_inclusive_tax_tab(I) = 'Y' then
9904 vamt := vamt + v_amt;
9905 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr; --added by walton for inclusive tax
9906 ELSE
9907 ln_vamt_nr := ln_vamt_nr + ln_bsln_amt_nr + p_tax_amount;
9908 END IF;
9909 END IF;
9910 END IF;
9911 -- end bug 5228046
9912 -----------------------------------------------------------
9913 -- Added by shujuan for bug 10358786 on 28-Jan-2011, End
9914
9915
9916 base_tax_amt_tab(I) := vamt;
9917 tax_target_tab(I) := vamt;
9918 base_tax_amount_nr_tab(I):=ln_vamt_nr;/*9692478*/
9919
9920 --------------------------------------------------------------------------------------
9921 /*Change History: jai_cmn_tax_defaultation_pkg
9922 Last Modified By Jagdish Bhosle. 2001/04/05
9923 The follow check will ensure that for Bond reg. Txns
9924 excise duty will not be added to original Line amount. */
9925 --------------------------------------------------------------------------------------
9926 /* IF (v_register_code='BOND_REG') THEN --- Added By Jagdish 2001/04/05
9927 IF counter = max_iter AND tax_type_tab( I ) NOT IN ( 1, 2 ) THEN
9928 v_func_tax_amt := v_tax_amt + ( vamt * ( tax_rate_tab( i )/100));
9929 v_tax_amt := v_tax_amt + ( vamt * ( tax_rate_tab( i )/100));
9930 ln_tax_amt_nr:=ln_tax_amt_nr+(ln_vamt_nr*(tax_rate_tab(i)/100)); --added by walton for inclusive
9931 END IF;
9932
9933 ELSE*/ --commented by Xiao for API.
9934 v_func_tax_amt := v_tax_amt + ( vamt * ( tax_rate_tab( i )/100));
9935 v_tax_amt := v_tax_amt + ( vamt * ( tax_rate_tab( i )/100));
9936 ln_tax_amt_nr:=ln_tax_amt_nr+(ln_vamt_nr*(tax_rate_tab(i)/100)); --added by walton for inclusive
9937 --END IF; -- End of Addition Jagdish 2001/04/05*/
9938
9939 ELSIF tax_rate_tab(I) = 0 THEN
9940 base_tax_amt_tab(I) := tax_amt_tab(i);
9941 v_tax_amt := tax_amt_tab( i );
9942 ln_tax_amt_nr:=lt_tax_amt_non_rate_tab(i);
9943 tax_target_tab(I) := v_tax_amt;
9944 ELSIF end_date_tab( I ) = 0 THEN
9945 tax_amt_tab(I) := 0;
9946 base_tax_amt_tab(I) := 0;
9947 base_tax_amount_nr_tab(I):=0; /*9692478*/
9948
9949 tax_target_tab(I) := 0;
9950 END IF;
9951 tax_amt_tab( I ) := NVL( v_tax_amt, 0 );
9952
9953 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, Begin
9954 -------------------------------------------------------------------
9955 --lt_tax_amt_rate_tax_tab(I) := tax_amt_tab(I); --added by walton for inclusive tax
9956 --IF lt_inclusive_tax_tab(I) = 'Y' THEN--Commented by zhiwei for Bug#12604133
9957 IF lt_inclusive_tax_tab(I) = 'Y' AND NVL(adhoc_flag_tab(I),'N') = 'N' then--Added by zhiwei for Bug#12604133
9958 lt_tax_amt_rate_tax_tab(I) := tax_amt_tab(I);
9959 END IF;
9960 -------------------------------------------------------------------
9961 -- Modified by Shyan for bug 10358786 on 28-Jan-2011, end
9962
9963 lt_tax_amt_non_rate_tab(I):=ln_tax_amt_nr; --added by walton for inclusive tax
9964 /*tax_amt_tab(I) := round(tax_amt_tab(I) ,round_factor_tab(I)); --added by csahoo for bug#6077133*/--commented by walton for inclusive tax
9965 --func_tax_amt_tab(I) := NVL(v_func_tax_amt,0); --Commented by walton for bug#9288016
9966 base_tax_amount_nr_tab(I):=ln_vamt_nr; --added by Xiao Lv for bug#8789761 on 30-Oct-09
9967
9968 IF counter = max_iter THEN
9969 IF end_date_tab(I) = 0 THEN
9970 tax_amt_tab( i ) := 0;
9971 func_tax_amt_tab(i) := 0;
9972 END IF;
9973 END IF;
9974
9975
9976 /*my.hou_log('Loop3',I) ;
9977 my.hou_log('tax_amt_tab('||I||')',tax_amt_tab(I)) ;
9978 my.hou_log('base_tax_amt_tab('||I||')',base_tax_amt_tab(I)) ;
9979 my.hou_log('base_tax_amount_nr_tab('||I||')',base_tax_amount_nr_tab(I)) ;
9980 my.hou_log('lt_tax_amt_rate_tax_tab('||I||')',lt_tax_amt_rate_tax_tab(I)) ;
9981 my.hou_log('lt_tax_amt_non_rate_tab('||I||')',lt_tax_amt_non_rate_tab(I)) ;
9982 my.hou_log('reverse_flag_tab('||I||')',reverse_flag_tab(I)) ;
9983 my.hou_log('tax_rate_tab('||I||')',tax_rate_tab(I)) ;*/
9984
9985
9986
9987 vamt := 0;
9988 v_amt := 0;
9989 v_tax_amt := 0;
9990 v_func_tax_amt := 0;
9991 ln_vamt_nr :=0; --added by walton for inclusive tax
9992 ln_tax_amt_nr:=0; --added by walton for inclusive tax
9993 END LOOP;
9994 END LOOP;
9995
9996 --Added by walton for inclusive tax
9997 ---------------------------------------------------------------------------------------
9998 FOR I IN 1 .. ROW_COUNT --Compute Factor
9999 LOOP
10000 IF lt_inclusive_tax_tab(I) = 'Y'
10001 THEN
10002 ln_total_tax_per_rupee := ln_total_tax_per_rupee + nvl(lt_tax_amt_rate_tax_tab(I),0) ;
10003 ln_total_non_rate_tax := ln_total_non_rate_tax + nvl(lt_tax_amt_non_rate_tab(I),0);
10004 END IF;
10005 END LOOP; --End Compute Factor
10006
10007 ln_total_tax_per_rupee := ln_total_tax_per_rupee + 1;
10008
10009 IF ln_total_tax_per_rupee <> 0
10010 THEN
10011 ln_exclusive_price := (NVL(p_tax_amount,0) - ln_total_non_rate_tax ) / ln_total_tax_per_rupee;
10012 END If;
10013
10014
10015
10016
10017
10018
10019 FOR i in 1 .. row_count --Compute Tax Amount
10020 LOOP
10021 -- Added by Shyan for bug 10358786 on 28-Jan-2011 , Begin
10022 ------------------------------------------------------------------
10023 --tax_amt_tab (i) := (lt_tax_amt_rate_tax_tab(I) * ln_exclusive_price ) + lt_tax_amt_non_rate_tab(I);
10024 tax_amt_tab (i):=0;
10025 IF lt_inclusive_tax_tab(I) = 'Y' THEN
10026 IF (tax_type_tab(I) = 1 and ln_assessable_value>1) OR
10027 (tax_type_tab(I) = 4 and ln_vat_assessable_value> 1)
10028 --OR (tax_type_tab(I) = 7 and ln_gst_assessable_value >1)
10029 THEN
10030
10031 IF tax_type_tab(I) = 1 and ln_assessable_value >1 Then
10032 ln_amount:= ln_assessable_value;
10033 ELSIF tax_type_tab(I) = 4 and ln_vat_assessable_value >1 Then
10034 ln_amount:= ln_vat_assessable_value;
10035 /* ELSIF tax_type_tab(I) = 7 and ln_gst_assessable_value >1 Then
10036 ln_amount:= ln_gst_assessable_value;*/
10037 END IF;
10038
10039 IF P1(I) < line_no_tab(I) AND p1(I) NOT IN (-1, 0) then
10040 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P1(i))* tax_rate_tab(i)/100;
10041 ELSIF P1(I)=0 Then
10042 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10043 END IF;
10044
10045 IF P2(I) < line_no_tab(I) AND p2(I) NOT IN (-1, 0) then
10046 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P2(i))* tax_rate_tab(i)/100;
10047 ELSIF P2(I)=0 Then
10048 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10049 END IF;
10050
10051 IF P3(I) < line_no_tab(I) AND p3(I) NOT IN (-1, 0) then
10052 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P3(i))* tax_rate_tab(i)/100;
10053 ELSIF P3(I)=0 Then
10054 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10055 END IF;
10056
10057 IF P4(I) < line_no_tab(I) AND p4(I) NOT IN (-1, 0) then
10058 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P4(i))* tax_rate_tab(i)/100;
10059 ELSIF P4(I)=0 Then
10060 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10061 END IF;
10062
10063 IF P5(I) < line_no_tab(I) AND p5(I) NOT IN (-1, 0) then
10064 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P5(i))* tax_rate_tab(i)/100;
10065 ELSIF P5(I)=0 Then
10066 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10067 END IF;
10068
10069 IF P6(I) < line_no_tab(I) AND p6(I) NOT IN (-1, 0) then
10070 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P6(i))* tax_rate_tab(i)/100;
10071 ELSIF P6(I)=0 Then
10072 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10073 END IF;
10074
10075 IF P7(I) < line_no_tab(I) AND p7(I) NOT IN (-1, 0) then
10076 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P7(i))* tax_rate_tab(i)/100;
10077 ELSIF P7(I)=0 Then
10078 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10079 END IF;
10080
10081 IF P8(I) < line_no_tab(I) AND p8(I) NOT IN (-1, 0) then
10082 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P8(i))* tax_rate_tab(i)/100;
10083 ELSIF P8(I)=0 Then
10084 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10085 END IF;
10086
10087 IF P9(I) < line_no_tab(I) AND p9(I) NOT IN (-1, 0) then
10088 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P9(i))* tax_rate_tab(i)/100;
10089 ELSIF P9(I)=0 Then
10090 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10091 END IF;
10092
10093 IF P10(I) < line_no_tab(I) AND p10(I) NOT IN (-1, 0) then
10094 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P10(i))* tax_rate_tab(i)/100;
10095 ELSIF P10(I)=0 Then
10096 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10097 END IF;
10098 ELSE
10099 tax_amt_tab (i) := (lt_tax_amt_rate_tax_tab(I) * ln_exclusive_price ) + lt_tax_amt_non_rate_tab(I);
10100 END IF;
10101 ELSE
10102 IF (tax_type_tab(I) = 1 and ln_assessable_value >1) OR
10103 (tax_type_tab(I) = 4 and ln_vat_assessable_value > 1)
10104 --OR (tax_type_tab(I) = 7 and ln_gst_assessable_value >1)
10105 THEN
10106
10107 IF tax_type_tab(I) = 1 and ln_assessable_value >1 Then
10108 ln_amount:= ln_assessable_value;
10109 ELSIF tax_type_tab(I) = 4 and ln_vat_assessable_value >1 Then
10110 ln_amount:= ln_vat_assessable_value;
10111 /* ELSIF tax_type_tab(I) = 7 and ln_gst_assessable_value >1 Then
10112 ln_amount:= ln_gst_assessable_value;*/
10113 END IF;
10114 ELSE ln_amount:= p_tax_amount;
10115 END IF;
10116 IF P1(I) < line_no_tab(I) AND p1(I) NOT IN (-1, 0) then
10117 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P1(i))* tax_rate_tab(i)/100;
10118 ELSIF P1(I)=0 Then
10119 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10120 END IF;
10121
10122 IF P2(I) < line_no_tab(I) AND p2(I) NOT IN (-1, 0) then
10123 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P2(i))* tax_rate_tab(i)/100;
10124 ELSIF P2(I)=0 Then
10125 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10126 END IF;
10127
10128 IF P3(I) < line_no_tab(I) AND p3(I) NOT IN (-1, 0) then
10129 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P3(i))* tax_rate_tab(i)/100;
10130 ELSIF P3(I)=0 Then
10131 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10132 END IF;
10133
10134 IF P4(I) < line_no_tab(I) AND p4(I) NOT IN (-1, 0) then
10135 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P4(i))* tax_rate_tab(i)/100;
10136 ELSIF P4(I)=0 Then
10137 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10138 END IF;
10139
10140 IF P5(I) < line_no_tab(I) AND p5(I) NOT IN (-1, 0) then
10141 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P5(i))* tax_rate_tab(i)/100;
10142 ELSIF P5(I)=0 Then
10143 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10144 END IF;
10145
10146 IF P6(I) < line_no_tab(I) AND p6(I) NOT IN (-1, 0) then
10147 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P6(i))* tax_rate_tab(i)/100;
10148 ELSIF P6(I)=0 Then
10149 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10150 END IF;
10151
10152 IF P7(I) < line_no_tab(I) AND p7(I) NOT IN (-1, 0) then
10153 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P7(i))* tax_rate_tab(i)/100;
10154 ELSIF P7(I)=0 Then
10155 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10156 END IF;
10157
10158 IF P8(I) < line_no_tab(I) AND p8(I) NOT IN (-1, 0) then
10159 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P8(i))* tax_rate_tab(i)/100;
10160 ELSIF P8(I)=0 Then
10161 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10162 END IF;
10163
10164 IF P9(I) < line_no_tab(I) AND p9(I) NOT IN (-1, 0) then
10165 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P9(i))* tax_rate_tab(i)/100;
10166 ELSIF P9(I)=0 Then
10167 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10168 END IF;
10169
10170 IF P10(I) < line_no_tab(I) AND p10(I) NOT IN (-1, 0) then
10171 tax_amt_tab(i) := tax_amt_tab(i) + tax_amt_tab(P10(i))* tax_rate_tab(i)/100;
10172 ELSIF P10(I)=0 Then
10173 tax_amt_tab(i) := tax_amt_tab(i) + ln_amount * tax_rate_tab(i)/100;
10174 END IF;
10175 END IF;
10176 ------------------------------------------------------------------
10177 -- Added by Shyan for bug 10358786 on 28-Jan-2011 , End
10178
10179
10180 --Added by zhiwei for Bug#12604133 on 20110623 begin
10181 ---------------------------------------------------------
10182 if nvl(adhoc_flag_tab(I),'N') = 'Y' then
10183 tax_amt_tab(I) := tax_amount_temp_tab(I);
10184 end if;
10185 if nvl(adhoc_flag_tab(I),'N') = 'Y'
10186 and nvl(vat_flag_tab(I),'N')='Q'
10187 and nvl(reverse_flag_tab(I),0) = 0 then
10188 tax_amt_tab(I) := qty_rate_tab(I) * p_line_quantity;
10189 end if;
10190 ---------------------------------------------------------
10191 --Added by zhiwei for Bug#12604133 on 20110623 end
10192
10193
10194 func_tax_amt_tab(i):=tax_amt_tab (i); --Added by walton for bug#9288016
10195 tax_amt_tab(I) := round(tax_amt_tab(I) ,round_factor_tab(I));
10196 base_tax_amt_tab(I):= ln_exclusive_price * base_tax_amt_tab(I)
10197 + base_tax_amount_nr_tab(I); --added by Xiao Lv for bug#8789761 on 30-Oct-09
10198 END LOOP; --End Compute Tax Amount
10199 --------------------------------------------------------------------------------------------------------
10200
10201 row_count := 1;
10202
10203 -- this is the place where you hv to add your insert statements for transaction specific tables
10204 rec := null ; -- added by ssumaith - code review Commented for TCS buG#6109941
10205 FOR i in 1.. lt_tax_table.count LOOP
10206 rec := lt_tax_table(i);
10207 -- ends additions by ssumaith - code review comments for TCS bug# 6109941
10208 IF tax_type_tab(row_count) <> 2 THEN
10209 v_tax_amt := v_tax_amt + NVL(tax_amt_tab(row_count),0);
10210 END IF;
10211
10212 /** bgowrava for forward porting bug# 5631784 */
10213 if rec.mod_cr_percentage is not null and rec.mod_cr_percentage > 0 then
10214 v_modvat_flag := 'Y';
10215 elsif rec.mod_cr_percentage is null then
10216 v_modvat_flag := 'N';
10217 end if;
10218 /*end bug# 5631784 */
10219
10220 IF transaction_name = 'AR_LINES' THEN
10221 --Added by zhiwei for Bug#12604133 on 20110628 begin
10222 ------------------------------------------------------
10223 if adhoc_flag_tab(row_count) = 'Y' and vat_flag_tab(row_count) = 'Q' and nvl(reverse_flag_tab(I),0) = 1 then
10224 UPDATE JAI_AR_TRX_TAX_LINES
10225
10226 SET tax_amount = ROUND(NVL(tax_amt_tab(row_count), 0), REC.ROUNDING_FACTOR),
10227 base_tax_amount = DECODE(NVL(base_tax_amt_tab(row_count), 0), 0, NVL(tax_amt_tab(row_count),0), NVL(base_tax_amt_tab(row_count), 0)),
10228 func_tax_amount = NVL(func_tax_amt_tab(row_count),0) * v_currency_conv_factor,
10229 qty_rate = qty_rate_tab(row_count),
10230 last_update_date = p_last_update_date,
10231 last_updated_by = p_last_updated_by,
10232 last_update_login = p_last_update_login
10233 WHERE link_to_cust_trx_line_id = P_line_id
10234 AND tax_line_no = row_count;
10235
10236 else
10237 ------------------------------------------------------
10238 --Added by zhiwei for Bug#12604133 on 20110628 end
10239
10240 UPDATE JAI_AR_TRX_TAX_LINES
10241 SET tax_amount = ROUND(NVL(tax_amt_tab(row_count), 0), REC.ROUNDING_FACTOR),
10242 base_tax_amount = DECODE(NVL(base_tax_amt_tab(row_count), 0), 0, NVL(tax_amt_tab(row_count),0), NVL(base_tax_amt_tab(row_count), 0)),
10243 func_tax_amount = NVL(func_tax_amt_tab(row_count),0) * v_currency_conv_factor,
10244 last_update_date = p_last_update_date,
10245 last_updated_by = p_last_updated_by,
10246 last_update_login = p_last_update_login
10247 WHERE link_to_cust_trx_line_id = P_line_id
10248 AND tax_line_no = row_count;
10249 end if;--Added by zhiwei for Bug#12604133 on 20110628
10250 ELSIF transaction_name = 'AP_STANDALONE' THEN
10251 --Added by zhiwei for Bug#12604133 on 20110628 begin
10252 ------------------------------------------------------
10253 if adhoc_flag_tab(row_count) = 'Y' and vat_flag_tab(row_count) = 'Q' and nvl(reverse_flag_tab(I),0) = 1 then
10254 UPDATE jai_cmn_document_taxes
10255 SET tax_amt = ROUND(NVL(tax_amt_tab(row_count), 0), REC.ROUNDING_FACTOR),
10256 --base_tax_amount = DECODE(NVL(base_tax_amt_tab(row_count), 0), 0, NVL(tax_amt_tab(row_count),0), NVL(base_tax_amt_tab(row_count), 0)),
10257 func_tax_amt = NVL(func_tax_amt_tab(row_count),0) * v_currency_conv_factor,
10258 qty_rate = qty_rate_tab(row_count),
10259 last_update_date = p_last_update_date,
10260 last_updated_by = p_last_updated_by,
10261 last_update_login = p_last_update_login
10262 WHERE source_doc_id = p_header_id
10263 AND source_doc_line_id = P_line_id
10264 AND tax_line_no = row_count;
10265
10266
10267 else
10268 ------------------------------------------------------
10269 --Added by zhiwei for Bug#12604133 on 20110628 end
10270 UPDATE jai_cmn_document_taxes
10271 SET tax_amt = ROUND(NVL(tax_amt_tab(row_count), 0), REC.ROUNDING_FACTOR),
10272 --base_tax_amount = DECODE(NVL(base_tax_amt_tab(row_count), 0), 0, NVL(tax_amt_tab(row_count),0), NVL(base_tax_amt_tab(row_count), 0)),
10273 func_tax_amt = NVL(func_tax_amt_tab(row_count),0) * v_currency_conv_factor,
10274 last_update_date = p_last_update_date,
10275 last_updated_by = p_last_updated_by,
10276 last_update_login = p_last_update_login
10277 WHERE source_doc_id = p_header_id
10278 AND source_doc_line_id = P_line_id
10279 AND tax_line_no = row_count;
10280 end if; --Added by zhiwei for Bug#12604133 on 20110628
10281 END IF;
10282
10283 row_count := row_count + 1;
10284 END LOOP;
10285
10286 p_tax_amount := nvl(v_tax_amt,0);
10287
10288 EXCEPTION
10289 WHEN OTHERS THEN
10290 FND_MESSAGE.SET_NAME('JA','JAI_EXCEPTION_OCCURED');
10291 FND_MESSAGE.SET_TOKEN('JAI_PROCESS_MSG', lv_object_name ||'. Err:'||sqlerrm );
10292 app_exception.raise_exception;
10293
10294 END ja_in_calc_prec_taxes;
10295
10296
10297 /*
10298 ||When occurred error, populate table jai_interface_err_lines and fnd log error info ,
10299 */
10300 /*PROCEDURE log_err(
10301 pv_err_level IN JAI_INTERFACE_ERR_LINES.ERROR_TYPE%TYPE, --'LINE' OR 'TAX' OR 'DIS'
10302 pn_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_ERROR_ID%TYPE,
10303 pn_interface_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_ERROR_ID%TYPE,
10304 pn_interface_tax_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_ERROR_ID%TYPE,
10305 pn_interface_dis_line_id IN JAI_INTERFACE_ERR_LINES.INTERFACE_ERROR_ID%TYPE,
10306 pv_err_mess IN JAI_INTERFACE_ERR_LINES.ERROR_MESSAGE%TYPE,
10307 pv_invalid_value IN JAI_INTERFACE_ERR_LINES.INVALID_VALUE%TYPE,
10308 pn_request_id IN JAI_INTERFACE_ERR_LINES.REQUEST_ID%TYPE
10309 )
10310 IS
10311 BEGIN
10312 INSERT INTO JAI_INTERFACE_ERR_LINES
10313 ( --LINE_ID,
10314 ERROR_TYPE,
10315 INTERFACE_LINE_ID,
10316 INTERFACE_TAX_LINE_ID,
10317 INTERFACE_DIS_LINE_ID,
10318 ERROR_MESSAGE,
10319 INVALID_VALUE,
10320 REQUEST_ID
10321 )
10322 VALUES
10323 ( --pn_line_id,
10324 pv_err_level,
10325 pn_interface_line_id,
10326 pn_interface_tax_line_id,
10327 pn_interface_dis_line_id,
10328 pv_err_mess,
10329 pv_invalid_value,
10330 pn_request_id
10331 );
10332 --fnd_file.put_line(FND_FILE.LOG,pv_err_mess);
10333 END log_err;*/
10334
10335
10336 PROCEDURE get_line_status(
10337 pn_interface_line_id IN NUMBER
10338 , xv_import_status OUT NOCOPY VARCHAR2
10339 , xv_process_status OUT NOCOPY VARCHAR2
10340 )
10341 IS
10342
10343 CURSOR line_status_cur IS
10344 SELECT import_status,
10345 import_process
10346 FROM jai_interface_lines_all
10347 WHERE interface_line_id = pn_interface_line_id;
10348
10349 BEGIN
10350
10351 OPEN line_status_cur;
10352 FETCH line_status_cur INTO xv_import_status, xv_process_status;
10353 CLOSE line_status_cur;
10354
10355 END get_line_status;
10356
10357 FUNCTION get_external_dist_account_ccid(
10358 pn_invoice_id IN NUMBER
10359 , pn_line_number IN NUMBER
10360 , pn_tax_line_no IN NUMBER
10361 )
10362 RETURN NUMBER IS
10363 CURSOR external_dist_ccid_cur IS
10364 SELECT
10365 tax.code_combination_id
10366 FROM
10367 --jai_interface_dis_lines_all dist,
10368 jai_interface_lines_all lines,
10369 jai_interface_tax_lines_all tax
10370 WHERE tax.tax_line_no = pn_tax_line_no
10371 AND tax.interface_line_id = lines.interface_line_id
10372 AND lines.internal_trx_id = pn_invoice_id
10373 AND lines.internal_trx_line_id = pn_line_number;
10374
10375 ln_external_dist_acct_ccid NUMBER;
10376
10377 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
10378 ln_proc_level NUMBER := FND_LOG.level_procedure;
10379 lv_proc_name VARCHAR2 (100) := 'get_external_dist_account_ccid';
10380 BEGIN
10381 OPEN external_dist_ccid_cur;
10382 FETCH external_dist_ccid_cur INTO ln_external_dist_acct_ccid;
10383 CLOSE external_dist_ccid_cur;
10384
10385 RETURN ln_external_dist_acct_ccid;
10386
10387 END get_external_dist_account_ccid;
10388
10389
10390
10391 --==========================================================================
10392 -- PROCEDURE NAME:
10393 --
10394 -- populate_jai_interface_taxes Private
10395 --
10396 -- DESCRIPTION:
10397 -- Fetch the tax lines from jai_interface_tax_lines_all, and insert them
10398 -- to AR/AP tax tables.
10399 --
10400 -- PARAMETERS:
10401 -- In: pn_interface_line_id IN NUMBER interface line id
10402 --
10403 -- Out:
10404 --
10405 --
10406 -- PRE-COND : interface line exists
10407 -- EXCEPTIONS: errors when fail to insert the taxes.
10408 --
10409 --===========================================================================
10410 PROCEDURE populate_jai_interface_taxes( pn_interface_line_id NUMBER)
10411 IS
10412 ln_user_id NUMBER := fnd_global.user_id;
10413 ln_login_id NUMBER := fnd_global.login_id;
10414 ld_sys_date DATE := SYSDATE;
10415
10416 lv_insert_jai_ap_tax_sql VARCHAR2(32000);
10417 lv_insert_jai_ar_tax_sql VARCHAR2(32000);
10418 v_modvat_flag VARCHAR2(1);
10419 lv_tax_sql VARCHAR2(4000);
10420 ln_tax_category_id NUMBER;
10421 ln_tax_line_count NUMBER;
10422
10423 refc_tax_cur ref_cur_typ;
10424 tax_lines_rec tax_typ;
10425 no_tax_cate_exc EXCEPTION;
10426 error_module EXCEPTION;
10427
10428 ln_doc_tax_id NUMBER;
10429 ln_header_id NUMBER;
10430 lv_err_mess VARCHAR2(300);
10431
10432 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
10433 ln_proc_level NUMBER := FND_LOG.level_procedure;
10434 lv_proc_name VARCHAR2 (100) := 'populate_jai_interface_taxes';
10435
10436 cursor cur_get_jai_line_rec(
10437 pn_trx_id jai_ar_trx_lines.CUSTOMER_TRX_ID%TYPE,
10438 pn_trx_line_id jai_ar_trx_lines.CUSTOMER_TRX_ID%TYPE
10439 )
10440 is
10441 select
10442 CUSTOMER_TRX_LINE_ID ,
10443 CUSTOMER_TRX_ID ,
10444 INVENTORY_ITEM_ID ,
10445 UNIT_CODE ,
10446 QUANTITY ,
10447 UNIT_SELLING_PRICE ,
10448 ASSESSABLE_VALUE ,
10449 CREATION_DATE ,
10450 CREATED_BY ,
10451 LAST_UPDATE_DATE ,
10452 LAST_UPDATED_BY ,
10453 LAST_UPDATE_LOGIN ,
10454 VAT_ASSESSABLE_VALUE ,
10455 GST_ASSESSABLE_VALUE
10456 from jai_ar_trx_lines
10457 where customer_trx_id = pn_trx_id
10458 and customer_trx_line_id = pn_trx_line_id;
10459
10460 get_jai_trx_line cur_get_jai_line_rec%rowtype;
10461
10462 Cursor transaction_type_cur(cn_customer_trx_id number)
10463 IS
10464 Select a.type
10465 From RA_CUST_TRX_TYPES_ALL a, RA_CUSTOMER_TRX_ALL b
10466 Where a.cust_trx_type_id = b.cust_trx_type_id
10467 And b.customer_trx_id = cn_customer_trx_id
10468 And NVL(a.org_id, 0) = NVL(b.org_id, 0);
10469
10470 v_line_amount number;
10471 v_quantity number;
10472 v_line_tax_amount number;
10473 l_tcs_line_num number;
10474 ln_tcs_regime_id number;
10475 ln_organization_id number;
10476 l_org_id number;
10477 l_bill_to_customer_id number;
10478 l_bill_to_site_use_id number;
10479 ln_trx_date date;
10480 ln_threshold_slab_id number;
10481 ln_threshold_tax_cat_id number;
10482 ln_tax_amount NUMBER;
10483 lv_process_flag varchar2(100);
10484 lv_process_message varchar2(1000);
10485 lv_taxable_event jai_interface_lines_all.taxable_event%type;
10486 ln_internal_trx_line_id jai_interface_lines_all.internal_trx_line_id%type;
10487 ln_internal_trx_id jai_interface_lines_all.internal_trx_id%type;
10488 l_tcs_sur_line_num number;
10489 l_tot_tax_lines number;
10490
10491 CURSOR BOOKS_TRX_CUR(cn_customer_trx_id number)
10492 IS
10493 SELECT set_of_books_id,
10494 primary_salesrep_id,
10495 invoice_currency_code,
10496 exchange_rate_type,
10497 exchange_date,
10498 exchange_rate
10499 FROM JAI_AR_TRXS
10500 WHERE customer_trx_id = cn_customer_trx_id;
10501
10502 c_from_currency_code VARCHAR2(15);
10503 c_conversion_type VARCHAR2(30);
10504 c_conversion_date DATE;
10505 c_conversion_rate NUMBER := 0;
10506 v_converted_rate NUMBER := 1;
10507 v_books_id NUMBER;
10508 v_salesrep_id NUMBER;
10509 v_trans_type VARCHAR2(30);
10510
10511 CURSOR GC_GET_REGIME_ID(CP_REGIME_CODE JAI_RGM_DEFINITIONS.REGIME_CODE%TYPE) IS
10512 SELECT REGIME_ID
10513 FROM JAI_RGM_DEFINITIONS
10514 WHERE REGIME_CODE = CP_REGIME_CODE;
10515
10516 CURSOR bind_cur(cn_customer_trx_id number)
10517 IS
10518 SELECT RCTA.org_id,
10519 RCTA.bill_to_customer_id,
10520 NVL(RCTA.bill_to_site_use_id, 0),
10521 RCTA.trx_date
10522 FROM RA_CUSTOMER_TRX_ALL RCTA
10523 WHERE RCTA.customer_trx_id = cn_customer_trx_id;
10524
10525 l_max_tax_line_no number;
10526
10527 CURSOR get_taxable_event_cur IS
10528 SELECT taxable_event
10529 FROM jai_interface_lines_all
10530 WHERE interface_line_id = pn_interface_line_id;
10531
10532 ln_p1 NUMBER;
10533 ln_p2 NUMBER;
10534 ln_p3 NUMBER;
10535 ln_p4 NUMBER;
10536 ln_p5 NUMBER;
10537 ln_p6 NUMBER;
10538 ln_p7 NUMBER;
10539 ln_p8 NUMBER;
10540 ln_p9 NUMBER;
10541 ln_p10 NUMBER;
10542 ln_tax_rate NUMBER;
10543 ln_qty_rate number;--Added by zhiwei for Bug#12604133 on 20110623
10544 BEGIN
10545
10546 lv_insert_jai_ap_tax_sql :=
10547 'INSERT INTO jai_cmn_document_taxes
10548 ( doc_tax_id
10549 , tax_line_no
10550 , tax_id
10551 , tax_type
10552 , currency_code
10553 , tax_rate
10554 , uom
10555 , tax_amt
10556 , func_tax_amt
10557 , modvat_flag
10558 , source_doc_type
10559 , source_doc_id
10560 , source_doc_line_id
10561 , source_table_name
10562 , tax_modified_by
10563 , adhoc_flag
10564 , precedence_1
10565 , precedence_2
10566 , precedence_3
10567 , precedence_4
10568 , precedence_5
10569 , precedence_6
10570 , precedence_7
10571 , precedence_8
10572 , precedence_9
10573 , precedence_10
10574 , creation_date
10575 , created_by
10576 , last_update_date
10577 , last_updated_by
10578 , last_update_login
10579 , object_version_number
10580 , source_doc_parent_line_no
10581 , qty_rate
10582 )
10583 VALUES
10584 ( :1
10585 , :2
10586 , :3
10587 , :4
10588 , :5
10589 , :6
10590 , :7
10591 , :8
10592 , :9
10593 , :10
10594 , :11
10595 , :12
10596 , :13
10597 , :14
10598 , :15
10599 , :16
10600 , :17
10601 , :18
10602 , :19
10603 , :20
10604 , :21
10605 , :22
10606 , :23
10607 , :24
10608 , :25
10609 , :26
10610 , :27
10611 , :28
10612 , :29
10613 , :30
10614 , :31
10615 , :32
10616 , :33
10617 , :34
10618 )';
10619 lv_insert_jai_ar_tax_sql :=
10620 'insert into jai_ar_trx_tax_lines
10621 ( tax_line_no
10622 , customer_trx_line_id
10623 , link_to_cust_trx_line_id
10624 , precedence_1
10625 , precedence_2
10626 , precedence_3
10627 , precedence_4
10628 , precedence_5
10629 , tax_id
10630 , tax_rate
10631 , uom
10632 , tax_amount
10633 , invoice_class
10634 , func_tax_amount
10635 , base_tax_amount
10636 , creation_date
10637 , created_by
10638 , last_update_date
10639 , last_updated_by
10640 , last_update_login
10641 , object_version_number
10642 , precedence_6
10643 , precedence_7
10644 , precedence_8
10645 , precedence_9
10646 , precedence_10
10647 , qty_rate
10648 )
10649 values
10650 ( :1
10651 , :2
10652 , :3
10653 , :4
10654 , :5
10655 , :6
10656 , :7
10657 , :8
10658 , :9
10659 , :10
10660 , :11
10661 , :12
10662 , :13
10663 , :14
10664 , :15
10665 , :16
10666 , :17
10667 , :18
10668 , :19
10669 , :20
10670 , :21
10671 , :22
10672 , :23
10673 , :24
10674 , :25
10675 , :26
10676 , :27
10677 )';
10678
10679 lv_tax_sql :=
10680 ' SELECT c.internal_trx_id
10681 , c.internal_trx_line_id
10682 , c.interface_line_id
10683 , a.tax_id
10684 , a.precedence_1 p_1
10685 , a.precedence_2 p_2
10686 , a.precedence_3 p_3
10687 , a.precedence_4 p_4
10688 , a.precedence_5 p_5
10689 , a.precedence_6 p_6
10690 , a.precedence_7 p_7
10691 , a.precedence_8 p_8
10692 , a.precedence_9 p_9
10693 , a.precedence_10 p_10
10694 , b.tax_type
10695 , b.tax_rate
10696 , b.uom_code
10697 , b.adhoc_flag
10698 , b.mod_cr_percentage
10699 $$QTY_RATE_FIELD$$
10700
10701 $$EXTRA_SELECT_COLUMN_LIST$$
10702 FROM $$TAX_SOURCE_TABLE$$ a
10703 , JAI_CMN_TAXES_ALL b
10704 , jai_interface_lines_all c
10705 WHERE $$SOURCE_TABLE_FILTER$$
10706 AND a.tax_id = b.tax_id
10707 $$ADDITIONAL_WHERE_CLAUSE$$
10708 ORDER BY $$ADDITIONAL_ORDER_BY$$';
10709
10710 lv_tax_sql :=
10711 REPLACE ( lv_tax_sql
10712 , '$$ADDITIONAL_WHERE_CLAUSE$$'
10713 , ' AND c.interface_line_id =' || pn_interface_line_id
10714 );
10715
10716
10717 SELECT COUNT(1)
10718 INTO ln_tax_line_count
10719 FROM jai_interface_tax_lines_all
10720 WHERE interface_line_id = pn_interface_line_id;
10721
10722 -- Tax lines exist in JAI_INTERFACE_TAX_LINES_ALL
10723 -- Will fetch taxes from JAI_INTERFACE_TAX_LINES_ALL
10724
10725 IF ln_tax_line_count > 0 THEN
10726
10727 lv_tax_sql :=
10728 REPLACE( lv_tax_sql
10729 , '$$QTY_RATE_FIELD$$'
10730 , ' , a.qty_rate qty_rate '
10731 );
10732
10733
10734
10735 lv_tax_sql :=
10736 REPLACE( lv_tax_sql
10737 , '$$ADDITIONAL_ORDER_BY$$'
10738 , 'a.tax_line_no'
10739 );
10740
10741 lv_tax_sql :=
10742 REPLACE( lv_tax_sql
10743 , '$$EXTRA_SELECT_COLUMN_LIST$$'
10744 , ', a.tax_line_no lno
10745 , a.tax_amount
10746 , a.func_tax_amount
10747 , a.base_tax_amount'
10748 );
10749 lv_tax_sql :=
10750 REPLACE( lv_tax_sql
10751 , '$$TAX_SOURCE_TABLE$$'
10752 , 'JAI_INTERFACE_TAX_LINES_ALL'
10753 );
10754
10755 lv_tax_sql :=
10756 REPLACE( lv_tax_sql
10757 , '$$SOURCE_TABLE_FILTER$$'
10758 , 'a.interface_line_id = ' || pn_interface_line_id
10759 );
10760
10761 ELSE -- No related tax lines in JAI_INTERFACE_TAX_LINES_ALL, tax category will be used.
10762 -- Tax_category_id is populated in jai_interface_lines_all during VALIDATION phase.
10763 -- Will fetch taxes from JAI_CMN_TAX_CTG_LINES
10764
10765 SELECT tax_category_id
10766 INTO ln_tax_category_id
10767 FROM jai_interface_lines_all
10768 WHERE interface_line_id = pn_interface_line_id;
10769
10770 IF ln_tax_category_id IS NOT NULL THEN
10771
10772
10773 lv_tax_sql :=
10774 REPLACE( lv_tax_sql
10775 , '$$QTY_RATE_FIELD$$'
10776 , ' , NULL qty_rate '
10777 );
10778
10779
10780 lv_tax_sql :=
10781 REPLACE( lv_tax_sql
10782 , '$$ADDITIONAL_ORDER_BY$$'
10783 , 'a.line_no'
10784 );
10785
10786 lv_tax_sql :=
10787 REPLACE( lv_tax_sql
10788 , '$$EXTRA_SELECT_COLUMN_LIST$$'
10789 , ', a.line_no lno
10790 , 0 tax_amount
10791 , 0 func_tax_amount
10792 , 0 base_tax_amount'
10793 );
10794 lv_tax_sql :=
10795 REPLACE( lv_tax_sql
10796 , '$$TAX_SOURCE_TABLE$$'
10797 , 'JAI_CMN_TAX_CTG_LINES'
10798 );
10799 -- replace join condition
10800 lv_tax_sql :=
10801 REPLACE( lv_tax_sql
10802 , '$$SOURCE_TABLE_FILTER$$'
10803 , 'a.tax_category_id = c.tax_category_id'
10804 );
10805 ELSE
10806 RAISE no_tax_cate_exc;
10807 END IF;
10808 END IF;
10809
10810 /**
10811 When control comes here, a valid sql statement hold by variable lv_tax_sql
10812 must be ready to execute.
10813 open a dynamic select statement using OPEN-FOR statement
10814 */
10815
10816 OPEN get_taxable_event_cur;
10817 FETCH get_taxable_event_cur INTO lv_taxable_event;
10818 CLOSE get_taxable_event_cur;
10819
10820 OPEN refc_tax_cur FOR lv_tax_sql;
10821 LOOP
10822 FETCH refc_tax_cur INTO tax_lines_rec;
10823 EXIT WHEN refc_tax_cur%NOTFOUND;
10824
10825 IF lv_taxable_event = 'STANDARD' THEN
10826 ln_p1 := tax_lines_rec.p_1;
10827 ln_p2 := tax_lines_rec.p_2;
10828 ln_p3 := tax_lines_rec.p_3;
10829 ln_p4 := tax_lines_rec.p_4;
10830 ln_p5 := tax_lines_rec.p_5;
10831 ln_p6 := tax_lines_rec.p_6;
10832 ln_p7 := tax_lines_rec.p_7;
10833 ln_p8 := tax_lines_rec.p_8;
10834 ln_p9 := tax_lines_rec.p_9;
10835 ln_p10 := tax_lines_rec.p_10;
10836 ln_tax_rate := tax_lines_rec.tax_rate;
10837 ln_qty_rate := tax_lines_rec.qty_rate;--Added by zhiwei for Bug#12604133 on 20110623
10838 END IF;
10839
10840 -- Loop each tax line in dynamic cursor, and insert taxex into AR/AP tax tables.
10841 --FOR tax_lines_rec IN tax_lines_cur
10842 --LOOP
10843 IF GV_IMPORT_MODULE = 'AP' THEN
10844 IF tax_lines_rec.mod_cr_percentage IS NOT NULL AND
10845 tax_lines_rec.mod_cr_percentage > 0
10846 THEN
10847 v_modvat_flag := 'Y';
10848 ELSIF tax_lines_rec.mod_cr_percentage IS NULL
10849 THEN
10850 v_modvat_flag := 'N';
10851 END IF;
10852
10853 EXECUTE IMMEDIATE lv_insert_jai_ap_tax_sql
10854 USING jai_cmn_document_taxes_s.nextval
10855 , tax_lines_rec.lno
10856 , tax_lines_rec.tax_id
10857 , tax_lines_rec.tax_type
10858 , 'INR'
10859 , ln_tax_rate
10860 , tax_lines_rec.uom_code
10861 , tax_lines_rec.tax_amount
10862 , tax_lines_rec.tax_amount --Function tax amount
10863 , v_modvat_flag --Modvat_Flag
10864 , 'STANDALONE_INVOICE' --Source_Doc_Type
10865 , tax_lines_rec.internal_trx_id --Source_Doc_ID
10866 , tax_lines_rec.internal_trx_line_id --Source_Doc_Line_ID, will update with real invoice line number in later program.
10867 , 'JAI_AP_INVOICE_LINES' --Source_Table_Name
10868 , 'SYSTEM' --Tax_Modified_By
10869 , tax_lines_rec.adhoc_flag
10870 , ln_p1
10871 , ln_p2
10872 , ln_p3
10873 , ln_p4
10874 , ln_p5
10875 , ln_p6
10876 , ln_p7
10877 , ln_p8
10878 , ln_p9
10879 , ln_p10
10880 , ld_sys_date
10881 , ln_user_id
10882 , ld_sys_date
10883 , ln_user_id
10884 , ln_login_id
10885 , ''--object_version_number
10886 , tax_lines_rec.internal_trx_line_id--Source_Doc_Parent_Line_No
10887 , ln_qty_rate --Added by zhiwei for Bug#12604133 on 20110623
10888 ;
10889 ELSIF GV_IMPORT_MODULE = 'AR' THEN --GV_IMPORT_MODULE = 'AR'
10890
10891 EXECUTE IMMEDIATE lv_insert_jai_ar_tax_sql
10892 USING tax_lines_rec.lno
10893 , RA_CUSTOMER_TRX_LINES_S.NEXTVAL -- modified by zhiwei
10894 , tax_lines_rec.internal_trx_line_id--tax_lines_rec.internal_trx_line_id --mmodified by zhiwei
10895 , ln_p1
10896 , ln_p2
10897 , ln_p3
10898 , ln_p4
10899 , ln_p5
10900 , tax_lines_rec.tax_id
10901 , ln_tax_rate
10902 , tax_lines_rec.uom_code
10903 , tax_lines_rec.tax_amount
10904 , ''--invoice_class
10905 , tax_lines_rec.tax_amount --function tax amount
10906 , tax_lines_rec.base_tax_amount
10907 , ld_sys_date
10908 , ln_user_id
10909 , ld_sys_date
10910 , ln_user_id
10911 , ln_login_id
10912 , ''--object_version_number
10913 , ln_p6
10914 , ln_p7
10915 , ln_p8
10916 , ln_p9
10917 , ln_p10
10918 , ln_qty_rate --Added by zhiwei for Bug#12604133 on 20110623
10919 ;
10920 ELSE
10921 --log the error.
10922 lv_err_mess := 'Module '|| GV_IMPORT_MODULE ||' is not expected';
10923 --fnd_file.put_line(FND_FILE.LOG,lv_err_mess);
10924 RAISE error_module;
10925 END IF;
10926 END LOOP;
10927
10928
10929
10930 EXCEPTION
10931 WHEN no_tax_cate_exc THEN
10932 IF ( ln_proc_level >= ln_dbg_level)
10933 THEN
10934 FND_LOG.STRING ( ln_proc_level
10935 , GV_MODULE_PREFIX || '.' || lv_proc_name
10936 || '. no_tax_cate_excexception '
10937 , 'No Tax Category'
10938 );
10939 END IF; --( ln_proc_level >= ln_dbg_level) ;
10940 RAISE;
10941 WHEN error_module THEN
10942 IF ( ln_proc_level >= ln_dbg_level)
10943 THEN
10944 FND_LOG.STRING ( ln_proc_level
10945 , GV_MODULE_PREFIX || '.' || lv_proc_name
10946 || '. error_module_exception '
10947 , 'Not Expected Module' || ':' || GV_IMPORT_MODULE
10948 );
10949 END IF; --( ln_proc_level >= ln_dbg_level) ;
10950 RAISE;
10951 WHEN OTHERS THEN
10952 IF ( ln_proc_level >= ln_dbg_level)
10953 THEN
10954 FND_LOG.STRING ( ln_proc_level
10955 , GV_MODULE_PREFIX || '.' || lv_proc_name
10956 || '. Other_Exception '
10957 , SQLCODE || ':' || SQLERRM
10958 );
10959 END IF; --( ln_proc_level >= ln_dbg_level) ;
10960 RAISE;
10961 END populate_jai_interface_taxes;
10962
10963
10964 --==========================================================================
10965 -- PROCEDURE NAME:
10966 --
10967 -- recal_standalone_trx_txes Private
10968 --
10969 -- DESCRIPTION:
10970 -- The procedure will invoke the tax calculation logic to calculate the
10971 -- base_tax_amount, func_tax_amount, and tax_amount based on the existing
10972 -- calculation logic.
10973 --
10974 --
10975 -- PARAMETERS:
10976 -- In: pn_interface_line_id IN NUMBER interface line id
10977 --
10978 -- Out:
10979 --
10980 --
10981 -- PRE-COND : interface line exists
10982 -- EXCEPTIONS: errors exist when calculating the taxes.
10983 --
10984 --===========================================================================
10985
10986 PROCEDURE recal_standalone_trx_taxes(pn_interface_line_id NUMBER)
10987 IS
10988
10989 CURSOR ar_lines_cur (pn_customer_trx_id NUMBER, pn_customer_trx_line_id NUMBER)
10990 IS
10991 SELECT extended_amount,
10992 inventory_item_id,
10993 quantity_invoiced,
10994 uom_code,
10995 unit_selling_price
10996 FROM ra_customer_trx_lines_all rtla
10997 WHERE rtla.customer_trx_id = pn_customer_trx_id
10998 AND rtla.customer_trx_line_id = pn_customer_trx_line_id;
10999
11000 CURSOR ar_header_info_cur(pn_customer_trx_id NUMBER) IS
11001 SELECT A.ship_to_customer_id,
11002 nvl(A.ship_to_site_use_id,0),
11003 trx_date,
11004 set_of_books_id
11005 FROM ra_customer_trx_all A
11006 WHERE customer_trx_id = pn_customer_trx_id;
11007
11008 ln_header_id jai_interface_lines_all.internal_trx_id%TYPE;
11009 ln_line_num jai_interface_lines_all.internal_trx_line_id%TYPE;
11010
11011 ln_vendor_id NUMBER;
11012 ln_vendor_site_id NUMBER;
11013 ln_line_amount NUMBER;
11014 ln_assessable_value NUMBER := 0;
11015 ln_vat_assessable_value NUMBER := 0;
11016 lv_taxable_basis jai_interface_lines_all.taxable_basis%TYPE;
11017
11018 ln_item_id NUMBER;
11019 ln_quantity NUMBER;
11020 lv_unit_code VARCHAR2(10);
11021 ln_set_of_books_id NUMBER;
11022
11023 ln_party_id ra_customer_trx_all.ship_to_customer_id%TYPE ;
11024 ln_party_site_id ra_customer_trx_all.ship_to_site_use_id%TYPE ;
11025 ld_trx_date ra_customer_trx_all.trx_date%TYPE ;
11026 ln_unit_selling_price ra_customer_trx_lines_all.unit_selling_price%TYPE;
11027 lv_module VARCHAR2(30);
11028
11029 lv_err_mess VARCHAR2(300);
11030 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
11031 ln_proc_level NUMBER := FND_LOG.level_procedure;
11032 lv_proc_name VARCHAR2 (100) := 'recal_standalone_trx_taxes';
11033
11034 BEGIN
11035 SELECT internal_trx_id
11036 , internal_trx_line_id
11037 , taxable_basis
11038 , import_module
11039 INTO ln_header_id
11040 , ln_line_num
11041 , lv_taxable_basis
11042 , lv_module
11043 FROM jai_interface_lines_all
11044 WHERE interface_line_id = pn_interface_line_id;
11045
11046 IF lv_module = 'AP' THEN
11047 SELECT vendor_id, vendor_site_id
11048 INTO ln_vendor_id
11049 , ln_vendor_site_id
11050 FROM ap_invoices_all
11051 WHERE invoice_id = ln_header_id;
11052
11053 SELECT amount
11054 ,nvl(quantity_invoiced,1) --Added by zhiwei for Bug#12604133 on 20110623
11055 INTO ln_line_amount
11056 ,ln_quantity --Added by zhiwei for Bug#12604133 on 20110623
11057 FROM ap_invoice_lines_all
11058 WHERE invoice_id = ln_header_id
11059 AND line_number = ln_line_num;
11060
11061 IF ln_vat_assessable_value = 0 THEN
11062 ln_vat_assessable_value := ln_line_amount;
11063 END IF;
11064 ja_in_calc_prec_taxes
11065 ( transaction_name => 'AP_STANDALONE'
11066 , p_header_id => ln_header_id
11067 , p_line_id => ln_line_num
11068 , p_assessable_value => ln_line_amount
11069 , p_tax_amount => ln_line_amount
11070 , p_inventory_item_id => NULL
11071 , p_line_quantity => ln_quantity--1--Changed by zhiwei for Bug#12604133 on 20110623
11072 , p_uom_code => NULL
11073 , p_vendor_id => ln_vendor_id
11074 , p_currency => 'INR'
11075 , p_currency_conv_factor => 1
11076 , p_creation_date => SYSDATE
11077 , p_created_by => FND_GLOBAL.user_id
11078 , p_last_update_date => SYSDATE
11079 , p_last_updated_by => FND_GLOBAL.user_id
11080 , p_last_update_login => FND_GLOBAL.login_id
11081 , p_operation_flag => NULL
11082 , p_vat_assessable_value => ln_line_amount--ln_vat_assessable_value
11083 , p_source_trx_type => jai_constants.G_AP_STANDALONE_INVOICE
11084 );
11085 ELSIF lv_module = 'AR' THEN
11086
11087 OPEN ar_lines_cur(ln_header_id, ln_line_num);
11088 FETCH ar_lines_cur
11089 INTO ln_line_amount, ln_item_id,
11090 ln_quantity, lv_unit_code, ln_unit_selling_price;
11091 CLOSE ar_lines_cur;
11092
11093 OPEN ar_header_info_cur(ln_header_id);
11094 FETCH ar_header_info_cur INTO ln_party_id, ln_party_site_id, ld_trx_date, ln_set_of_books_id ;
11095 CLOSE ar_header_info_cur;
11096
11097 IF upper(lv_taxable_basis) = GV_TAXABLE_BASIS_AV THEN
11098
11099 ln_vat_assessable_value := jai_general_pkg.ja_in_vat_assessable_value(
11100 ln_party_id,
11101 ln_party_site_id,
11102 ln_item_id,
11103 lv_unit_code,
11104 ln_unit_selling_price,
11105 ld_trx_date,
11106 'C'
11107 );
11108
11109 -- Fetch assessable_value for Excise Tax.
11110 ln_assessable_value := jai_om_utils_pkg.get_oe_assessable_value(
11111 p_customer_id => ln_party_id,
11112 p_ship_to_site_use_id => ln_party_site_id,
11113 p_inventory_item_id => ln_item_id,
11114 p_uom_code => lv_unit_code,
11115 p_default_price => ln_unit_selling_price,
11116 p_ass_value_date => ld_trx_date,
11117 p_sob_id => ln_set_of_books_id ,
11118 p_curr_conv_code => 'INR' ,
11119 p_conv_rate => 1
11120 );
11121 END IF;
11122
11123 IF ln_assessable_value = 0 THEN
11124 ln_assessable_value := ln_line_amount;
11125 END IF;
11126 IF ln_vat_assessable_value = 0 THEN
11127 ln_vat_assessable_value := ln_line_amount;
11128 END IF;
11129
11130 ja_in_calc_prec_taxes
11131 (
11132 transaction_name => 'AR_LINES',
11133 p_header_id => ln_header_id,
11134 p_line_id => ln_line_num,
11135 p_assessable_value => ln_assessable_value * ln_quantity,
11136 p_tax_amount => ln_line_amount,
11137 p_inventory_item_id => ln_item_id,
11138 p_line_quantity => ln_quantity,
11139 p_uom_code => lv_unit_code,
11140 p_vendor_id => NULL,
11141 p_currency => NULL,
11142 p_currency_conv_factor => 1,
11143 p_creation_date => sysdate,
11144 p_created_by => FND_GLOBAL.user_id,
11145 p_last_update_date => sysdate,
11146 p_last_updated_by => FND_GLOBAL.user_id,
11147 p_last_update_login => FND_GLOBAL.login_id,
11148 p_operation_flag => NULL,
11149 p_vat_assessable_value => ln_vat_assessable_value,
11150 p_source_trx_type => 'AR_TRANSACTION'
11151 );
11152
11153 --update assessable value
11154 UPDATE jai_ar_trx_lines
11155 SET assessable_value = ln_assessable_value * ln_quantity
11156 , vat_assessable_value = ln_vat_assessable_value
11157 , quantity = ln_quantity
11158 WHERE customer_trx_id = ln_header_id
11159 AND customer_trx_line_id = ln_line_num;
11160
11161
11162 ELSE
11163 --log the error.
11164 lv_err_mess := 'Module '|| GV_IMPORT_MODULE ||' is not expected';
11165 --fnd_file.put_line(FND_FILE.LOG,lv_err_mess);
11166 END IF;
11167
11168 EXCEPTION
11169 WHEN OTHERS THEN
11170 IF ( ln_proc_level >= ln_dbg_level)
11171 THEN
11172 FND_LOG.STRING ( ln_proc_level
11173 , GV_MODULE_PREFIX || '.' || lv_proc_name
11174 || '. Other_Exception '
11175 , SQLCODE || ':' || SQLERRM
11176 );
11177 END IF; --( ln_proc_level >= ln_dbg_level) ;
11178 RAISE;
11179 END recal_standalone_trx_taxes;
11180
11181 PROCEDURE process_ap_accounting_lines(pn_interface_line_id NUMBER)
11182 IS
11183 CURSOR interface_lines_cur
11184 IS
11185 SELECT interface_line_id,
11186 internal_trx_id,
11187 internal_trx_line_id,
11188 organization_id,
11189 location_id,
11190 taxable_event,
11191 service_type_code,
11192 tax_category_id
11193 FROM jai_interface_lines_all
11194 WHERE interface_line_id = pn_interface_line_id;
11195
11196 ln_interface_line_id NUMBER;
11197 ln_invoice_id NUMBER;
11198
11199 ln_line_num NUMBER;
11200 ln_organization_id NUMBER;
11201 ln_location_id NUMBER;
11202 lv_taxable_event VARCHAR2(30);
11203
11204 ln_tax_category_id NUMBER;
11205 lv_service_type_code VARCHAR2(30);
11206
11207 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
11208 ln_proc_level NUMBER := FND_LOG.level_procedure;
11209 lv_proc_name VARCHAR2 (100) := 'process_ap_accounting_lines';
11210
11211 BEGIN
11212 OPEN interface_lines_cur;
11213 FETCH interface_lines_cur
11214 INTO ln_interface_line_id
11215 , ln_invoice_id
11216 , ln_line_num
11217 , ln_organization_id
11218 , ln_location_id
11219 , lv_taxable_event
11220 , lv_service_type_code
11221 , ln_tax_category_id;
11222 CLOSE interface_lines_cur;
11223
11224 /* For item lines in jai_ap_invoice_lines, organization_id, location_id,
11225 * service_type_code, tax_category will leave as NULL after Open API importing.
11226 * So, following code manually update organization_id, location_id, service_type_code
11227 * tax_category column on table jai_ap_invoice_lines.
11228 */
11229 UPDATE jai_ap_invoice_lines
11230 SET organization_id = ln_organization_id
11231 , location_id = ln_location_id
11232 , service_type_code = nvl(lv_service_type_code,service_type_code) --Changed by zhiwei for Bug#12537533 on 20110510
11233 , tax_category_id = ln_tax_category_id
11234 , interface_flag = 'Y' --Added by zhiwei for POT change Bug#13023443 on 20110929
11235 , interface_event = lv_taxable_event --Added by zhiwei for POT change Bug#13023443 on 20110929
11236 WHERE invoice_id = ln_invoice_id
11237 AND invoice_line_number = ln_line_num;
11238
11239
11240
11241 jai_ap_stnd_tax_process.create_tax_lines
11242 ( ln_organization_id
11243 , 'INR'--pv_currency
11244 , ln_location_id
11245 , ln_invoice_id
11246 , ln_line_num
11247 , jai_constants.default_taxes--pv_action
11248 , ln_tax_category_id--, 0--pn_tax_category_id --Changed by zhiwei for Bug#12537533 on 20110510
11249 , 'N'--pv_tax_modified
11250 );
11251
11252
11253 EXCEPTION
11254 WHEN OTHERS THEN
11255 IF ( ln_proc_level >= ln_dbg_level)
11256 THEN
11257 FND_LOG.STRING ( ln_proc_level
11258 , GV_MODULE_PREFIX || '.' || lv_proc_name
11259 || '. Other_Exception '
11260 , SQLCODE || ':' || SQLERRM
11261 );
11262 END IF; --( ln_proc_level >= ln_dbg_level) ;
11263 RAISE;
11264 END process_ap_accounting_lines;
11265
11266
11267
11268
11269 /*
11270 || Generate the sequence no for interface lines and tax lines for processing.
11271 */
11272 PROCEDURE mark_sequence_id
11273 IS
11274 --Curosr define here
11275
11276 --Commented by zhiwei for Bug#12561396 on 20110607 begin
11277 ---------------------------------------------------------
11278 /*CURSOR get_interface_lines_rec
11279 IS
11280 SELECT
11281 PARTY_ID,
11282 PARTY_SITE_ID,
11283 IMPORT_MODULE,
11284 TRANSACTION_NUM,
11285 TRANSACTION_LINE_NUM,
11286 INTERFACE_LINE_ID
11287 FROM
11288 JAI_INTERFACE_LINES_ALL
11289 WHERE REQUEST_ID = GN_REQUEST_ID;*/
11290 ----------------------------------------------------------
11291
11292 --Commented by zhiwei for Bug#12561396 and Bug#12589644 on 20110607 end
11293
11294 --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607 begin
11295 ----------------------------------------------------------------
11296 CURSOR get_interface_lines_rec(
11297 cn_party_id JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
11298 cn_party_site_id JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE,
11299 cv_import_module JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
11300 cv_transaction_num JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE,
11301 cn_transaction_line_num JAI_INTERFACE_LINES_ALL.TRANSACTION_LINE_NUM%TYPE
11302 )
11303 IS
11304 SELECT
11305 PARTY_ID,
11306 PARTY_SITE_ID,
11307 IMPORT_MODULE,
11308 TRANSACTION_NUM,
11309 TRANSACTION_LINE_NUM,
11310 INTERFACE_LINE_ID,
11311 ROWID
11312 FROM
11313 JAI_INTERFACE_LINES_ALL
11314 WHERE REQUEST_ID = GN_REQUEST_ID
11315 AND PARTY_ID = cn_party_id
11316 AND PARTY_SITE_ID = cn_party_site_id
11317 AND IMPORT_MODULE = cv_import_module
11318 AND TRANSACTION_NUM = cv_transaction_num
11319 AND TRANSACTION_LINE_NUM = cn_transaction_line_num;
11320
11321
11322 CURSOR get_five_combination_rec
11323 IS
11324 SELECT
11325 PARTY_ID,
11326 PARTY_SITE_ID,
11327 IMPORT_MODULE,
11328 TRANSACTION_NUM,
11329 TRANSACTION_LINE_NUM
11330 FROM
11331 JAI_INTERFACE_LINES_ALL
11332 WHERE REQUEST_ID = GN_REQUEST_ID
11333 ;
11334
11335 rec_five_combination get_five_combination_rec%rowtype;
11336
11337 ----------------------------------------------------------------
11338 --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607 end
11339
11340 CURSOR get_tax_line_no_rec(
11341 cn_party_id IN JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE,
11342 cn_party_site_id IN JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE,
11343 cv_import_module IN JAI_INTERFACE_LINES_ALL.IMPORT_MODULE%TYPE,
11344 cv_transaction_num IN JAI_INTERFACE_LINES_ALL.TRANSACTION_NUM%TYPE,
11345 cn_transaction_line_num IN JAI_INTERFACE_LINES_ALL.TRANSACTION_LINE_NUM%TYPE
11346
11347 )
11348 IS
11349 SELECT
11350 TAX_LINE_NO,
11351 INTERFACE_TAX_LINE_ID,
11352 INTERFACE_LINE_ID
11353 ,ROWID--Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607
11354 FROM
11355 JAI_INTERFACE_TAX_LINES_ALL
11356 WHERE
11357 PARTY_ID = cn_party_id
11358 AND PARTY_SITE_ID = cn_party_site_id
11359 AND IMPORT_MODULE = cv_import_module
11360 AND TRANSACTION_NUM = cv_transaction_num
11361 AND TRANSACTION_LINE_NUM = cn_transaction_line_num
11362 order by tax_line_no;
11363
11364
11365
11366 --Variable define here
11367 rec_interface_line get_interface_lines_rec%ROWTYPE;
11368 rec_tax_line_no get_tax_line_no_rec%ROWTYPE;
11369 lv_return_mess varchar2(1000);
11370
11371 ln_interface_line_id number;
11372 ln_interface_tax_line_id number;
11373 ln_tax_line_no number;
11374
11375 BEGIN
11376
11377
11378 --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607 begin
11379 ------------------------------------------------------------
11380 FOR rec_five_combination IN get_five_combination_rec
11381 LOOP
11382
11383 FOR rec_interface_line IN get_interface_lines_rec(
11384 cn_party_id => rec_five_combination.party_id,
11385 cn_party_site_id => rec_five_combination.PARTY_SITE_ID,
11386 cv_import_module => rec_five_combination.IMPORT_MODULE,
11387 cv_transaction_num => rec_five_combination.TRANSACTION_NUM,
11388 cn_transaction_line_num => rec_five_combination.TRANSACTION_LINE_NUM
11389 )
11390
11391 ------------------------------------------------------------
11392 --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607 end
11393
11394 --Commented by zhiwei for Bug#12561396 and Bug#12589644 begin
11395 --------------------------------------------------------------
11396 --FOR rec_interface_line IN get_interface_lines_rec
11397 --------------------------------------------------------------
11398 --Commented by zhiwei for Bug#12561396 and Bug#12589644 end
11399 LOOP
11400
11401
11402
11403 ln_interface_line_id := 0;
11404
11405 IF(NVL(rec_interface_line.interface_line_id,-1) <= 0)THEN
11406
11407 ln_interface_line_id := JAI_INTERFACE_LINES_ALL_S.nextval;
11408
11409 --Mark line sequence no
11410 UPDATE jai_interface_lines_all
11411 SET interface_line_id = ln_interface_line_id
11412 WHERE party_id = rec_interface_line.party_id
11413 AND party_site_id = rec_interface_line.PARTY_SITE_ID
11414 AND import_module = rec_interface_line.IMPORT_MODULE
11415 AND transaction_num = rec_interface_line.TRANSACTION_NUM
11416 AND transaction_line_num = rec_interface_line.TRANSACTION_LINE_NUM
11417 AND ROWID = rec_interface_line.ROWID; --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607
11418 ELSE
11419
11420 ln_interface_line_id := rec_interface_line.interface_line_id;
11421
11422 END IF;
11423
11424 ln_tax_line_no := 0;
11425 FOR rec_tax_line_no IN get_tax_line_no_rec(
11426 cn_party_id => rec_interface_line.party_id,
11427 cn_party_site_id => rec_interface_line.PARTY_SITE_ID,
11428 cv_import_module => rec_interface_line.IMPORT_MODULE,
11429 cv_transaction_num => rec_interface_line.TRANSACTION_NUM,
11430 cn_transaction_line_num => rec_interface_line.TRANSACTION_LINE_NUM
11431 )
11432 LOOP
11433 ln_tax_line_no := ln_tax_line_no + 1;
11434
11435 IF(NVL(rec_tax_line_no.interface_tax_line_id,-1) = -1)THEN
11436 --If interface_tax_line_id is null then generate interface_tax_line_id use sequence
11437 ln_interface_tax_line_id := JAI_INTERFACE_TAX_LINES_ALL_S.nextval;
11438
11439 --If interface_tax_line_id is null
11440 -- and
11441 --(interface_line_id is null or interface_line_id is not as same as interface_line_id of jai_interface_lines_all accordingly)
11442 --both mark
11443 IF(NVL(rec_tax_line_no.interface_line_id,-1) = -1
11444 OR
11445 NVL(rec_tax_line_no.interface_line_id,-1) <> ln_interface_line_id
11446 )THEN
11447
11448 UPDATE jai_interface_tax_lines_all
11449 SET interface_tax_line_id = ln_interface_tax_line_id,
11450 interface_line_id = ln_interface_line_id,
11451 tax_line_no = ln_tax_line_no
11452 WHERE party_id = rec_interface_line.party_id
11453 AND party_site_id = rec_interface_line.PARTY_SITE_ID
11454 AND import_module = rec_interface_line.IMPORT_MODULE
11455 AND transaction_num = rec_interface_line.TRANSACTION_NUM
11456 AND transaction_line_num = rec_interface_line.TRANSACTION_LINE_NUM
11457 AND tax_line_no = rec_tax_line_no.tax_line_no
11458 AND ROWID = rec_tax_line_no.ROWID; --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607
11459 ELSE
11460 --interface_tax_line_id is null
11461 --and
11462 --interface_line_id is as same as interface_line_id of jai_interface_lines_all accordingly
11463 --only mark interface_tax_line_id
11464 UPDATE jai_interface_tax_lines_all
11465 SET interface_tax_line_id = ln_interface_tax_line_id,
11466 tax_line_no = ln_tax_line_no
11467 WHERE party_id = rec_interface_line.party_id
11468 AND party_site_id = rec_interface_line.PARTY_SITE_ID
11469 AND import_module = rec_interface_line.IMPORT_MODULE
11470 AND transaction_num = rec_interface_line.TRANSACTION_NUM
11471 AND transaction_line_num = rec_interface_line.TRANSACTION_LINE_NUM
11472 AND tax_line_no = rec_tax_line_no.tax_line_no
11473 AND ROWID = rec_tax_line_no.ROWID; --Added by zhiwei for Bug#12561396 and Bug#12589644 on 20110607
11474
11475
11476 END IF;
11477 ELSE
11478 --If interface_tax_line_id is not null
11479
11480 IF( NVL(rec_tax_line_no.interface_line_id,-1) = -1
11481 OR
11482 NVL(rec_tax_line_no.interface_line_id,-1) <> ln_interface_line_id
11483 )THEN
11484 UPDATE jai_interface_tax_lines_all
11485 SET
11486 interface_line_id = ln_interface_line_id,
11487 tax_line_no = ln_tax_line_no
11488 WHERE party_id = rec_interface_line.party_id
11489 AND party_site_id = rec_interface_line.PARTY_SITE_ID
11490 AND import_module = rec_interface_line.IMPORT_MODULE
11491 AND transaction_num = rec_interface_line.TRANSACTION_NUM
11492 AND transaction_line_num = rec_interface_line.TRANSACTION_LINE_NUM
11493 AND tax_line_no = rec_tax_line_no.tax_line_no;
11494 END IF;
11495
11496 END IF;
11497
11498 END LOOP;
11499
11500 END LOOP;
11501
11502 END LOOP;--Added by zhiwei for Bug#12561396 on 20110607
11503
11504
11505 --COMMIT;
11506 record_fnd_log(
11507 pv_fnd_log => 'Mark Sequence id successfully.'
11508 );
11509
11510
11511 EXCEPTION
11512 WHEN OTHERS THEN
11513 lv_return_mess := 'Mark sequence Exception with SQLERR:'|| SUBSTR(SQLERRM,1,230) || ' in mark_sequence_id with line:';
11514 lv_return_mess := lv_return_mess ||rec_interface_line.party_id
11515 ||'-'||rec_interface_line.party_id
11516 ||'-'||rec_interface_line.PARTY_SITE_ID
11517 ||'-'||rec_interface_line.IMPORT_MODULE
11518 ||'-'||rec_interface_line.TRANSACTION_NUM
11519 ||'-'||rec_interface_line.TRANSACTION_LINE_NUM;
11520 record_fnd_log(
11521 pv_fnd_log => lv_return_mess
11522 );
11523 RAISE;
11524 END mark_sequence_id;
11525
11526
11527
11528
11529
11530 /*
11531 || Main process block
11532 */
11533 PROCEDURE populate_jai_interface_lines(
11534 errbuf OUT NOCOPY VARCHAR2
11535 , retcode OUT NOCOPY VARCHAR2
11536 , pv_import_module VARCHAR2
11537 , pn_org_id NUMBER
11538 , pn_organization_id NUMBER
11539 , pn_location_id NUMBER
11540 , pn_party_id NUMBER
11541 , pn_party_site_id NUMBER
11542 , pv_transaction_num_from VARCHAR2
11543 , pv_transaction_num_to VARCHAR2
11544 )
11545 IS
11546 --Cursor define here
11547 CURSOR get_request_line_id_cur
11548 is
11549 select interface_line_id
11550 from jai_interface_lines_all
11551 where 1=1 --(import_status=GV_IMPORT_FAILURE OR import_status IS NULL)
11552 and request_id = GN_REQUEST_ID;
11553
11554 CURSOR interface_lines_cur(cn_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
11555 IS
11556 SELECT interface_line_id,
11557 import_status,
11558 import_process
11559 FROM jai_interface_lines_all
11560 WHERE import_status = GV_IMPORT_SUCCESS
11561 AND import_process = GV_PROCESS_VALIDATION
11562 AND import_module = pv_import_module
11563 AND internal_trx_id = cn_trx_id
11564 FOR UPDATE NOWAIT;
11565
11566 CURSOR get_trx_id_cur
11567 IS
11568 SELECT DISTINCT internal_trx_id trx_id
11569 FROM JAI_INTERFACE_LINES_ALL
11570 WHERE import_status = GV_IMPORT_SUCCESS
11571 AND import_process = GV_PROCESS_VALIDATION
11572 AND import_module = pv_import_module
11573 AND organization_id = nvl(pn_organization_id, organization_id)
11574 AND org_id = nvl(pn_org_id, org_id)
11575 AND location_id = nvl(pn_location_id, location_id)
11576 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
11577 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
11578 AND REQUEST_ID = GN_REQUEST_ID
11579 ORDER BY 1;
11580
11581 CURSOR get_interface_id_cur(cn_internal_trx_id IN JAI_INTERFACE_LINES_ALL.INTERNAL_TRX_ID%TYPE)
11582 IS
11583 SELECT
11584 interface_line_id
11585 FROM JAI_INTERFACE_LINES_ALL
11586 WHERE INTERNAL_TRX_ID = cn_internal_trx_id;
11587
11588 --Variable define here
11589 rec_interface_id get_interface_id_cur%ROWTYPE;
11590 rec_request_line_id get_request_line_id_cur%ROWTYPE;
11591 rec_trx_id get_trx_id_cur%ROWTYPE;
11592
11593 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
11594 ln_proc_level NUMBER := FND_LOG.level_procedure;
11595 lv_proc_name VARCHAR2 (100) := 'populate_jai_interface_lines';
11596
11597 ln_total_amount NUMBER;
11598 ln_invoice_id NUMBER;
11599 ln_invoice_line_num NUMBER;
11600 lv_import_status VARCHAR2(30);
11601 lv_import_process VARCHAR2(30);
11602 lv_err_mess VARCHAR2(300);
11603 ln_interface_line_id jai_interface_lines_all.interface_line_id%TYPE;
11604 lv_taxable_event jai_interface_lines_all.taxable_event%TYPE;
11605 lv_process_message VARCHAR2(2000);
11606 le_exception EXCEPTION;
11607
11608 lv_return_message VARCHAR2(2000);
11609 lv_return_code VARCHAR2(100) ;
11610 ln_phase NUMBER;
11611
11612 BEGIN
11613 --Get request id for concurrent.
11614 GN_REQUEST_ID := fnd_global.conc_request_id;
11615
11616 --Get import module for process
11617 GV_IMPORT_MODULE := pv_import_module;
11618
11619 --Mark the request id for interface line need to process.
11620 mark_request_id(
11621 pv_type => 'ON'
11622 , pn_org_id => pn_org_id
11623 , pn_organization_id => pn_organization_id
11624 , pn_location_id => pn_location_id
11625 , pn_party_id => pn_party_id
11626 , pn_party_site_id => pn_party_site_id
11627 , pv_transaction_num_from => pv_transaction_num_from
11628 , pv_transaction_num_to => pv_transaction_num_to
11629 );
11630
11631 ln_phase := 5;
11632
11633 mark_sequence_id;
11634
11635 ln_phase := 10;
11636
11637 --Loop for all lines to initial and validation which have been marked request id
11638 FOR rec_request_line_id IN get_request_line_id_cur
11639 LOOP
11640 --Initial get Internal transaction id and Internal transaction line id By Transaction num and Transaction line num of interface line detail.
11641 --Check the import module
11642 --Update the Internal transaction id and Interanl transaction line id to interface line
11643
11644 initial_process(rec_request_line_id.interface_line_id);
11645
11646 --Validation rule.
11647 --Get internal tax id from mapping and update to the interface tax line.
11648 validate_process(rec_request_line_id.interface_line_id);
11649
11650 END LOOP;
11651
11652 ln_phase := 20;
11653
11654 --Validate the duplicate lines
11655 validate_duplicate_lines;
11656
11657 ln_phase := 30;
11658
11659 --Validate transaction integrated after validation successful.
11660 validate_integrate_trx;
11661
11662 ln_phase := 40;
11663
11664 --Loop for trx id begin ,
11665 --Note: if trx success then success , if any line of trx encountered errors , the whole transaction process rollback.
11666 ---------------------------------------------------------------------------------------------------------------------------------
11667 FOR rec_trx_id IN get_trx_id_cur
11668 LOOP
11669
11670 --Save point here
11671 SAVEPOINT PROC_MAIN_SVP;
11672
11673 ---Loop for process populate ,recalculate ,ap accounting , ar updating. begin
11674 ----------------------------------------------------------------------------------------------------
11675 FOR interface_line_rec IN interface_lines_cur(rec_trx_id.trx_id)
11676 LOOP
11677
11678 ln_interface_line_id := interface_line_rec.interface_line_id;
11679 lv_import_status := interface_line_rec.import_status;
11680 lv_import_process := interface_line_rec.import_process;
11681
11682 --Populate tax begin
11683 -------------------------------------------------------------------------------
11684 BEGIN
11685 IF lv_import_status = GV_IMPORT_SUCCESS THEN
11686
11687 lv_import_process := GV_PROCESS_POPULATION;
11688
11689 ln_phase := 50;
11690
11691 populate_jai_interface_taxes(ln_interface_line_id);
11692
11693 ln_phase := 60;
11694
11695 END IF;
11696
11697 update_line_status(ln_interface_line_id, lv_import_status, lv_import_process );
11698
11699 EXCEPTION
11700 WHEN OTHERS THEN
11701 IF ( ln_proc_level >= ln_dbg_level)
11702 THEN
11703 FND_LOG.STRING ( ln_proc_level
11704 , GV_MODULE_PREFIX || '.' || lv_proc_name
11705 || '. Other_Exception '
11706 , SQLCODE || ':' || SQLERRM
11707 );
11708 END IF;
11709
11710 ROLLBACK TO PROC_MAIN_SVP;
11711
11712 lv_import_status := GV_IMPORT_FAILURE;
11713 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11714 update_error_flag(ln_interface_line_id,'Y');
11715
11716 --Error message record
11717 lv_process_message := 'PROCESSING Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in POPULATING With interface_line_id:'||ln_interface_line_id;
11718 log_error(
11719 pv_err_level => GV_ERROR_TYPE_LINE,
11720 pn_line_id => ln_interface_line_id,
11721 pn_source_line_id => ln_interface_line_id,
11722 pv_err_mess => lv_process_message,
11723 pv_invalid_value => NULL
11724 );
11725
11726 GOTO NEXT_LINE;
11727 END ;
11728 -------------------------------------------------------------------------------
11729 --Populate tax end
11730
11731
11732 --Calculate Taxes begin
11733 -------------------------------------------------------------------------------
11734 BEGIN
11735 IF lv_import_status = GV_IMPORT_SUCCESS THEN
11736
11737 SELECT taxable_event
11738 INTO lv_taxable_event
11739 FROM jai_interface_lines_all
11740 WHERE interface_line_id = ln_interface_line_id;
11741
11742 SELECT internal_trx_id, internal_trx_line_id
11743 INTO ln_invoice_id, ln_invoice_line_num
11744 FROM jai_interface_lines_all
11745 WHERE interface_line_id = ln_interface_line_id;
11746
11747 --ap_invoice_lines_all.reference_key3 values 'OFI TAX IMPORT'
11748 /* The purpose is for distinguish Standard or External Case,
11749 * In External Case, when Service Taxes are imported and attached to AP lines,
11750 * the same will not be picked up and updated in the Service Tax Repository.
11751 */
11752 /*UPDATE ap_invoice_lines_all
11753 SET reference_key3 = 'OFI TAX IMPORT.' || upper(lv_taxable_event)
11754 WHERE invoice_id = ln_invoice_id
11755 AND line_number = ln_invoice_line_num;*/
11756
11757 IF lv_taxable_event = GV_TAXABLE_EVENT_STANDALONE THEN
11758
11759 lv_import_process := GV_PROCESS_CALCULATION;
11760
11761 ln_phase := 70;
11762
11763 recal_standalone_trx_taxes(ln_interface_line_id);
11764
11765 ln_phase := 80;
11766
11767 END IF;
11768
11769
11770 update_line_status(ln_interface_line_id, lv_import_status, lv_import_process );
11771
11772 END IF;
11773 EXCEPTION
11774 WHEN OTHERS THEN
11775 IF ( ln_proc_level >= ln_dbg_level)
11776 THEN
11777 FND_LOG.STRING ( ln_proc_level
11778 , GV_MODULE_PREFIX || '.' || lv_proc_name
11779 || '. Other_Exception '
11780 , SQLCODE || ':' || SQLERRM
11781 );
11782 END IF;
11783
11784 ROLLBACK TO PROC_MAIN_SVP;
11785
11786 lv_import_status := GV_IMPORT_FAILURE;
11787 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11788 update_error_flag(ln_interface_line_id,'Y');
11789
11790 --Error message record
11791 lv_process_message := 'PROCESSING Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in RECALCULATING With interface_line_id:'||ln_interface_line_id;
11792
11793 log_error(
11794 pv_err_level => GV_ERROR_TYPE_LINE,
11795 pn_line_id => ln_interface_line_id,
11796 pn_source_line_id => ln_interface_line_id,
11797 pv_err_mess => lv_process_message,
11798 pv_invalid_value => NULL
11799 );
11800
11801 GOTO NEXT_LINE;
11802 END;
11803 -------------------------------------------------------------------------------
11804 --Calculate Taxes end
11805
11806
11807
11808 --For AP Accounting
11809 --For AR Updating include the follow process
11810 -- 1.calculate balance;
11811 -- 2.update tax amount/totoal amount to jai_ar_trx_lines;
11812 -- 3.insert tax lines to ra_customer_trx_lines_all;
11813 -- 4.insert tax lines to ra_cust_trx_gl_dist_all;
11814 -------------------------------------------------------------------------------
11815 BEGIN
11816 IF lv_import_status = GV_IMPORT_SUCCESS THEN
11817
11818 ln_phase := 90;
11819
11820 IF (upper(GV_IMPORT_MODULE) = JAI_CONSTANTS.SOURCE_AP) THEN
11821
11822 lv_import_process := GV_PROCESS_ACCOUNTING;
11823 process_ap_accounting_lines(ln_interface_line_id);
11824
11825 --update reference_key3 as 'OFI TAX IMPORT.STANDARD' or 'OFI TAX IMPORT.EXTERNAL'
11826 --for all the Miscellaneous lines for each item line.
11827 /* UPDATE ap_invoice_lines_all aila
11828 SET reference_key3 = 'OFI TAX IMPORT.' || upper(lv_taxable_event)
11829 WHERE invoice_id = ln_invoice_id
11830 AND line_number IN (SELECT source_doc_line_id
11831 FROM jai_cmn_document_taxes
11832 WHERE source_doc_id = ln_invoice_id
11833 AND source_doc_parent_line_no = ln_invoice_line_num);
11834 */
11835
11836 ELSIF (upper(GV_IMPORT_MODULE) = JAI_CONSTANTS.SOURCE_AR) THEN
11837
11838 lv_import_process := GV_PROCESS_UPDATING;
11839 process_ar_updating_lines(
11840 pn_interface_line_id => ln_interface_line_id,
11841 ov_return_code => lv_return_code,
11842 ov_return_message => lv_return_message
11843 );
11844
11845
11846 IF(lv_return_code <> jai_constants.successful)THEN
11847
11848 ROLLBACK TO PROC_MAIN_SVP;
11849
11850 lv_import_status := GV_IMPORT_FAILURE;
11851 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11852 update_error_flag(ln_interface_line_id,'Y');
11853
11854 log_error(
11855 pv_err_level => GV_ERROR_TYPE_LINE,
11856 pn_line_id => ln_interface_line_id,
11857 pn_source_line_id => ln_interface_line_id,
11858 pv_err_mess => lv_return_message,
11859 pv_invalid_value => NULL
11860 );
11861
11862 GOTO NEXT_LINE;
11863 END IF;
11864
11865 ELSE
11866 lv_err_mess := 'Module '|| GV_IMPORT_MODULE ||' is not expected';
11867 END IF;
11868
11869 ln_phase := 100;
11870
11871 update_line_status(ln_interface_line_id, lv_import_status, lv_import_process );
11872
11873 END IF;
11874 EXCEPTION
11875 WHEN OTHERS THEN
11876 IF ( ln_proc_level >= ln_dbg_level)
11877 THEN
11878 FND_LOG.STRING ( ln_proc_level
11879 , GV_MODULE_PREFIX || '.' || lv_proc_name
11880 || '. Other_Exception '
11881 , SQLCODE || ':' || SQLERRM
11882 );
11883 END IF;
11884
11885 ROLLBACK TO PROC_MAIN_SVP;
11886
11887 lv_import_status := GV_IMPORT_FAILURE;
11888 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11889 update_error_flag(ln_interface_line_id,'Y');
11890
11891 --Error message record
11892 lv_process_message := 'PROCESSING Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in '|| lv_import_process || ' With interface_line_id:'||ln_interface_line_id||',at POS:'||ln_phase;
11893 log_error(
11894 pv_err_level => GV_ERROR_TYPE_LINE,
11895 pn_line_id => ln_interface_line_id,
11896 pn_source_line_id => ln_interface_line_id,
11897 pv_err_mess => lv_process_message,
11898 pv_invalid_value => NULL
11899 );
11900
11901 GOTO NEXT_LINE;
11902
11903 END;
11904 -------------------------------------------------------------------------------
11905 --For AP Accounting end
11906 --For AR Updating end
11907
11908
11909 END LOOP;--loop for interface line for trx id = rec_trx_id.trx_id;
11910 ----------------------------------------------------------------------------------------------------
11911 ---Loop for process populate ,recalculate ,ap accounting , ar updating. end
11912
11913
11914
11915 --Only for AR accounting begin
11916 --Note : On transaction level.
11917 -------------------------------------------------------------------------------
11918 BEGIN
11919 IF (lv_import_status = GV_IMPORT_SUCCESS) THEN
11920
11921 IF (upper(GV_IMPORT_MODULE) = JAI_CONSTANTS.SOURCE_AR) THEN
11922
11923 lv_import_process := GV_PROCESS_ACCOUNTING;
11924
11925 ln_phase := 110;
11926
11927 process_ar_accounting_lines(
11928 pn_trx_id => rec_trx_id.trx_id,
11929 ov_return_code => lv_return_code,
11930 ov_return_message => lv_return_message
11931 );
11932
11933 IF(lv_return_code <> jai_constants.successful)THEN
11934
11935 ROLLBACK TO PROC_MAIN_SVP;
11936
11937 lv_import_status := GV_IMPORT_FAILURE;
11938 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11939 update_trx_error_flag(rec_trx_id.trx_id,'Y');
11940 --Error message record
11941 FOR rec_interface_id IN get_interface_id_cur(rec_trx_id.trx_id)
11942 LOOP
11943 log_error(
11944 pv_err_level => GV_ERROR_TYPE_LINE,
11945 pn_line_id => rec_interface_id.interface_line_id,
11946 pn_source_line_id => rec_interface_id.interface_line_id,
11947 pv_err_mess => lv_return_message,
11948 pv_invalid_value => NULL
11949 );
11950 END LOOP;
11951
11952 GOTO NEXT_LINE;
11953 END IF;
11954
11955 --Fired the trigger jai_ar_rcta_ariud_t1,jai_ar_rcta_trigger_pkg.aru_t4,aru_t7.inclusive_tax_accounting
11956 /*
11957 update ra_customer_trx_all
11958 set complete_flag = 'Y'
11959 where customer_trx_id = rec_trx_id.trx_id;
11960 */
11961 --Update all the lines status of the transaction.
11962
11963 ln_phase := 120;
11964
11965 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
11966 ELSIF (upper(GV_IMPORT_MODULE) = JAI_CONSTANTS.SOURCE_AP) THEN
11967
11968 SELECT SUM(amount)
11969 INTO ln_total_amount
11970 FROM ap_invoice_lines_all
11971 WHERE invoice_id = rec_trx_id.trx_id;
11972
11973 --Invoice amount should be updated after all invoice lines are generated.
11974 UPDATE ap_invoices_all
11975 SET invoice_amount = ln_total_amount
11976 WHERE invoice_id = rec_trx_id.trx_id;
11977
11978 --Ap_payment_schedules_all should be updated with correct amount.
11979 --When pay the invoice, payment amount will be correct.
11980 --inv_curr_gross_amount currency amount.
11981 UPDATE ap_payment_schedules_all
11982 SET gross_amount = ln_total_amount,
11983 amount_remaining = ln_total_amount,
11984 inv_curr_gross_amount = ln_total_amount
11985 WHERE invoice_id = rec_trx_id.trx_id;
11986
11987 --Update columns in ap_invoice_distributions_all, then distribution lines
11988 --can be pickep up be create accounting programs.
11989 UPDATE ap_invoice_distributions_all
11990 SET accounting_event_id = (SELECT accounting_event_id
11991 FROM ap_invoice_distributions_all
11992 WHERE invoice_id = rec_trx_id.trx_id
11993 AND line_type_lookup_code = 'ITEM'
11994 AND rownum = 1),
11995 total_dist_amount = amount,
11996 total_dist_base_amount = 0
11997 WHERE invoice_id = rec_trx_id.trx_id;
11998
11999 END IF;
12000 END IF;
12001 EXCEPTION
12002
12003 WHEN OTHERS THEN
12004 IF ( ln_proc_level >= ln_dbg_level)
12005 THEN
12006 FND_LOG.STRING ( ln_proc_level
12007 , GV_MODULE_PREFIX || '.' || lv_proc_name
12008 || '. Other_Exception '
12009 , SQLCODE || ':' || SQLERRM
12010 );
12011 END IF; --( ln_proc_level >= ln_dbg_level) ;
12012
12013 ROLLBACK TO PROC_MAIN_SVP;
12014
12015 lv_import_status := GV_IMPORT_FAILURE;
12016 update_trx_lines_status(rec_trx_id.trx_id, lv_import_status, lv_import_process );
12017 update_trx_error_flag(rec_trx_id.trx_id,'Y');
12018 --Error message record
12019 lv_process_message := 'PROCESSING Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in ACCOUNTING With internal_trx_id:'||rec_trx_id.trx_id||', at POS:'||ln_phase;
12020 FOR rec_interface_id IN get_interface_id_cur(rec_trx_id.trx_id)
12021 LOOP
12022 log_error(
12023 pv_err_level => GV_ERROR_TYPE_LINE,
12024 pn_line_id => rec_interface_id.interface_line_id,
12025 pn_source_line_id => rec_interface_id.interface_line_id,
12026 pv_err_mess => lv_process_message,
12027 pv_invalid_value => NULL
12028 );
12029 END LOOP;
12030
12031 GOTO NEXT_LINE;
12032 END;
12033 -------------------------------------------------------------------------------
12034 --Note : On transaction level
12035 --Only for AR accounting end
12036
12037
12038 <<NEXT_LINE>>
12039 NULL;
12040
12041
12042 END LOOP;--rec_trx_id
12043 ---------------------------------------------------------------------------------------------------------------------------------
12044 --Loop for trx id end
12045
12046 ln_phase := 130;
12047
12048 --generate output report for importing transactions.
12049 generate_output_report( pv_import_module
12050 , pn_org_id
12051 , pn_organization_id
12052 , pn_location_id
12053 , pn_party_id
12054 , pn_party_site_id
12055 , pv_transaction_num_from
12056 , pv_transaction_num_to
12057 );
12058
12059 --Update request id to null for the transaction marked at beginning.
12060 mark_request_id(
12061 pv_type => 'OFF'
12062 , pn_org_id => null
12063 , pn_organization_id => null
12064 , pn_location_id => null
12065 , pn_party_id => null
12066 , pn_party_site_id => null
12067 , pv_transaction_num_from => null
12068 , pv_transaction_num_to => null
12069 );
12070
12071 ln_phase := 140;
12072
12073
12074
12075 --Delete the successful lines.
12076 --del_success_lines; --Purge program will take care of deleting records.
12077
12078 ln_phase := 150;
12079
12080 COMMIT;
12081
12082 EXCEPTION
12083 WHEN OTHERS THEN
12084
12085 lv_process_message := 'PROCESSING Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in WHOLE PROCESSING at POS:'||ln_phase;
12086 log_error(
12087 pv_err_level => GV_ERROR_TYPE_LINE,
12088 pn_line_id => ln_interface_line_id,
12089 pn_source_line_id => ln_interface_line_id,
12090 pv_err_mess => lv_process_message,
12091 pv_invalid_value => NULL
12092 );
12093 --
12094 mark_request_id(
12095 pv_type => 'OFF'
12096 , pn_org_id => null
12097 , pn_organization_id => null
12098 , pn_location_id => null
12099 , pn_party_id => null
12100 , pn_party_site_id => null
12101 , pv_transaction_num_from => null
12102 , pv_transaction_num_to => null
12103 );
12104 --
12105 IF ( ln_proc_level >= ln_dbg_level )THEN
12106 FND_LOG.STRING ( ln_proc_level
12107 , GV_MODULE_PREFIX || '.' || lv_proc_name
12108 || '. Other_Exception '
12109 , SQLCODE || ':' || SQLERRM
12110 );
12111
12112 END IF;--debug level
12113
12114 END populate_jai_interface_lines;
12115
12116
12117 /*
12118 || purge process block
12119 */
12120 PROCEDURE purge_jai_interface_lines(
12121 errbuf OUT NOCOPY VARCHAR2
12122 , retcode OUT NOCOPY VARCHAR2
12123 , pv_import_module VARCHAR2
12124 , pn_org_id NUMBER
12125 , pn_organization_id NUMBER
12126 , pn_location_id NUMBER
12127 , pn_party JAI_INTERFACE_LINES_ALL.PARTY_ID%TYPE
12128 , pn_party_site JAI_INTERFACE_LINES_ALL.PARTY_SITE_ID%TYPE
12129 , pv_transaction_num_from VARCHAR2
12130 , pv_transaction_num_to VARCHAR2
12131 , pv_line_status VARCHAR2
12132 )
12133 IS
12134 --Cursor define here
12135
12136
12137 --Variable define here
12138
12139
12140 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
12141 ln_proc_level NUMBER := FND_LOG.level_procedure;
12142 lv_proc_name VARCHAR2 (100) := 'populate_jai_interface_lines';
12143
12144 lv_import_status VARCHAR2(30);
12145 lv_import_process VARCHAR2(30);
12146 lv_err_mess VARCHAR2(300);
12147 lv_process_message VARCHAR2(2000);
12148 le_exception EXCEPTION;
12149
12150 lv_return_message VARCHAR2(2000);
12151 lv_return_code VARCHAR2(100) ;
12152 ln_phase NUMBER;
12153
12154 BEGIN
12155 IF(NVL(pv_line_status,GV_LINE_STATUS_ALL)=GV_LINE_STATUS_ALL)THEN
12156
12157 delete from jai_interface_err_lines
12158 where 1=1
12159 and interface_line_id in
12160 (
12161 select interface_line_id
12162 from jai_interface_lines_all
12163 where 1=1
12164 AND import_module = nvl(pv_import_module,import_module)
12165 AND organization_id = nvl(pn_organization_id, organization_id)
12166 AND org_id = nvl(pn_org_id, org_id)
12167 AND location_id = nvl(pn_location_id, location_id)
12168 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12169 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12170 AND party_id = nvl(pn_party,party_id)
12171 AND party_site_id = nvl(pn_party_site,party_site_id)
12172 and (request_id is null or request_id='')
12173 );
12174
12175 delete from jai_interface_tax_lines_all
12176 where 1=1
12177 and interface_line_id in
12178 (
12179 select interface_line_id
12180 from jai_interface_lines_all
12181 where 1=1
12182 AND import_module = nvl(pv_import_module,import_module)
12183 AND organization_id = nvl(pn_organization_id, organization_id)
12184 AND org_id = nvl(pn_org_id, org_id)
12185 AND location_id = nvl(pn_location_id, location_id)
12186 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12187 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12188 AND party_id = nvl(pn_party,party_id)
12189 AND party_site_id = nvl(pn_party_site,party_site_id)
12190 and (request_id is null or request_id='')
12191 );
12192
12193 delete from jai_interface_lines_all
12194 where 1=1
12195 AND import_module = nvl(pv_import_module,import_module)
12196 AND organization_id = nvl(pn_organization_id, organization_id)
12197 AND org_id = nvl(pn_org_id, org_id)
12198 AND location_id = nvl(pn_location_id, location_id)
12199 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12200 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12201 AND party_id = nvl(pn_party,party_id)
12202 AND party_site_id = nvl(pn_party_site,party_site_id)
12203 and (request_id is null or request_id='')
12204 ;
12205
12206 if(pn_org_id is null)then
12207 delete from jai_interface_tax_lines_all
12208 where 1=1
12209 AND import_module = nvl(pv_import_module,import_module)
12210 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12211 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12212 AND party_id = nvl(pn_party,party_id)
12213 AND party_site_id = nvl(pn_party_site,party_site_id);
12214 end if;
12215 ELSIF (NVL(pv_line_status,GV_LINE_STATUS_ALL)=GV_LINE_STATUS_ERROR)THEN
12216
12217 delete from jai_interface_err_lines
12218 where 1=1
12219 and interface_line_id in
12220 (
12221 SELECT interface_line_id
12222 FROM JAI_INTERFACE_LINES_ALL
12223 WHERE 1=1
12224 and import_status = GV_IMPORT_FAILURE
12225 AND nvl(error_flag,'N')= 'Y'
12226 AND import_module = nvl(pv_import_module, import_module)
12227 AND organization_id = nvl(pn_organization_id, organization_id)
12228 AND org_id = nvl(pn_org_id, org_id)
12229 AND location_id = nvl(pn_location_id, location_id)
12230 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12231 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12232 AND party_id = nvl(pn_party,party_id)
12233 AND party_site_id = nvl(pn_party_site,party_site_id)
12234 and (request_id is null or request_id='')
12235 );
12236
12237 delete from jai_interface_tax_lines_all
12238 where 1=1
12239 and interface_line_id in
12240 (
12241 SELECT interface_line_id
12242 FROM JAI_INTERFACE_LINES_ALL
12243 WHERE 1=1
12244 and import_status = GV_IMPORT_FAILURE
12245 AND nvl(error_flag,'N')= 'Y'
12246 AND import_module = nvl(pv_import_module, import_module)
12247 AND organization_id = nvl(pn_organization_id, organization_id)
12248 AND org_id = nvl(pn_org_id, org_id)
12249 AND location_id = nvl(pn_location_id, location_id)
12250 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12251 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12252 AND party_id = nvl(pn_party,party_id)
12253 AND party_site_id = nvl(pn_party_site,party_site_id)
12254 and (request_id is null or request_id='')
12255 );
12256
12257 delete from jai_interface_lines_all
12258 WHERE 1=1
12259 and import_status = GV_IMPORT_FAILURE
12260 AND nvl(error_flag,'N')= 'Y'
12261 AND import_module = nvl(pv_import_module, import_module)
12262 AND organization_id = nvl(pn_organization_id, organization_id)
12263 AND org_id = nvl(pn_org_id, org_id)
12264 AND location_id = nvl(pn_location_id, location_id)
12265 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12266 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12267 AND party_id = nvl(pn_party,party_id)
12268 AND party_site_id = nvl(pn_party_site,party_site_id)
12269 and (request_id is null or request_id='');
12270
12271 ELSIF (NVL(pv_line_status,GV_LINE_STATUS_SUCCESS)=GV_LINE_STATUS_SUCCESS)THEN
12272
12273 delete from jai_interface_err_lines
12274 where 1=1
12275 and interface_line_id in
12276 (
12277 SELECT interface_line_id
12278 FROM JAI_INTERFACE_LINES_ALL
12279 WHERE 1=1
12280 AND import_status = GV_IMPORT_SUCCESS
12281 AND import_module = nvl(pv_import_module, import_module)
12282 AND organization_id = nvl(pn_organization_id, organization_id)
12283 AND org_id = nvl(pn_org_id, org_id)
12284 AND location_id = nvl(pn_location_id, location_id)
12285 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12286 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12287 AND party_id = nvl(pn_party,party_id)
12288 AND party_site_id = nvl(pn_party_site,party_site_id)
12289 );
12290
12291 delete from jai_interface_tax_lines_all
12292 where 1=1
12293 and interface_line_id in
12294 (
12295 SELECT interface_line_id
12296 FROM JAI_INTERFACE_LINES_ALL
12297 WHERE 1=1
12298 AND import_status = GV_IMPORT_SUCCESS
12299 AND import_module = nvl(pv_import_module, import_module)
12300 AND organization_id = nvl(pn_organization_id, organization_id)
12301 AND org_id = nvl(pn_org_id, org_id)
12302 AND location_id = nvl(pn_location_id, location_id)
12303 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12304 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12305 AND party_id = nvl(pn_party,party_id)
12306 AND party_site_id = nvl(pn_party_site,party_site_id)
12307 );
12308
12309 delete from jai_interface_lines_all
12310 WHERE 1=1
12311 AND import_status = GV_IMPORT_SUCCESS
12312 AND import_module = nvl(pv_import_module, import_module)
12313 AND organization_id = nvl(pn_organization_id, organization_id)
12314 AND org_id = nvl(pn_org_id, org_id)
12315 AND location_id = nvl(pn_location_id, location_id)
12316 AND transaction_num >= nvl(pv_transaction_num_from, transaction_num)
12317 AND transaction_num <= nvl(pv_transaction_num_to, transaction_num)
12318 AND party_id = nvl(pn_party, party_id)
12319 AND party_site_id = nvl(pn_party_site, party_site_id);
12320 END IF;
12321 COMMIT;
12322 EXCEPTION
12323 WHEN OTHERS THEN
12324
12325 lv_process_message := 'Purge Exception with SQLERR '|| SUBSTR(SQLERRM,1,230) || ' in WHOLE PROCESSING';
12326 /* log_error(
12327 pv_err_level => GV_ERROR_TYPE_LINE,
12328 pn_line_id => ln_interface_line_id,
12329 pn_source_line_id => ln_interface_line_id,
12330 pv_err_mess => lv_process_message,
12331 pv_invalid_value => NULL
12332 ); */
12333
12334 IF ( ln_proc_level >= ln_dbg_level )THEN
12335 FND_LOG.STRING ( ln_proc_level
12336 , GV_MODULE_PREFIX || '.' || lv_proc_name
12337 || '. Other_Exception '
12338 , SQLCODE || ':' || SQLERRM
12339 );
12340
12341 END IF;--debug level
12342
12343 END purge_jai_interface_lines;
12344
12345 END JAI_OPEN_API_PKG;