[Home] [Help]
PACKAGE BODY: APPS.JAI_AP_ST_REVERSE_PROCESS
Source
1 PACKAGE BODY JAI_AP_ST_REVERSE_PROCESS AS
2 --$Header: jai_ap_st_reverse_process.plb 120.1.12020000.3 2013/02/12 13:18:38 amandali noship $
3 --|+======================================================================+
4 --| Copyright (c) 2007 Oracle Corporation Redwood Shores, California, USA |
5 --| All rights reserved. |
6 --+=======================================================================+
7 --| FILENAME |
8 --| JAI_AP_STND_TAX_PROCESS.plb |
9 --| |
10 --| DESCRIPTION |
11 --| This package offer funcitons to calculate tax amount and creat |
12 --| tax lines. Also it provide the tax modification and delete |
13 --| functionalities |
14 --| |
15 --| |
16 --| |
17 --| FUNCTION LIST |
18 --| FUNCTION Get_Tax_Type |
19 --| FUNCTION Get_Max_Invoice_Line_Number |
20 --| FUNCTION Get_Max_Invoice_Line_Number |
21 --| FUNCTION Get_Gl_Account_Type |
22 --| FUNCTION check_service_interim_account |
23 --| FUNCTION Get_ST_Reverse_Ccid |
24 --| PROCEDURE LIST |
25 --| PROCEDURE UPDATE_CCID |
26 --| PROCEDURE Insert_jai_inv_line |
27 --| PROCEDURE Insert_ap_inv_line |
28 --| PROCEDURE Insert_ap_inv_dst_line |
29 --| PROCEDURE Populate_ST_RVRS_Dist |
30 --| PROCEDURE Populate_MTCH_ST_RVRS_Dist |
31 --| PROCEDURE process_batch_record |
32 --| HISTORY |
33 --| 2012/07/05 Chong Created |
34 --| 2012/10/29 anupgupt Bug 14681650 |
35 --| Description - R12 AP INVOICE NAVIGATION PERFORMANCE ISSUE |
36 --| Fix - Commented update statement on ap_invoice_lines_allE |
37 --+======================================================================*/
38 GV_MODULE_PREFIX VARCHAR2 (100) := 'JAI.PLSQL.JAI_AP_ST_REVERSE_PROCESS';
39 GV_CONSTANT_MISCELLANEOUS VARCHAR2 (20) := 'MISCELLANEOUS';
40 GV_CONSTANT_ITEM VARCHAR2 (20) := 'ITEM';
41 GV_NOT_MATCH_TYPE VARCHAR2 (20) := 'NOT_MATCHED';
42 GV_JAI_AP_INVOICE_LINES VARCHAR2 (100) := 'JAI_AP_INVOICE_LINES';
43 GV_LINES_CREATEED VARCHAR2 (10) := 'NO';
44 GV_REVERSE_CHARGE VARCHAR2 (20) := 'REVERSE_CHARGE';
45 GV_INTERIM_LIABILITY VARCHAR2 (20) := 'INTERIM_LIABILITY';
46
47 G_PKG_NAME CONSTANT VARCHAR2(30) := 'JAI_AP_ST_REVERSE_PROCESS';
48 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
49 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
50 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
51 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
52 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
53 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
54
55 G_CURRENT_RUNTIME_LEVEL CONSTANT NUMBER := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
56 G_LEVEL_UNEXPECTED CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
57 G_LEVEL_ERROR CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
58 G_LEVEL_EXCEPTION CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
59 G_LEVEL_EVENT CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
60 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
61 G_LEVEL_STATEMENT CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
62
63 G_JAI_APPLICATION_ID CONSTANT NUMBER := 7000;
64 G_PRODUCT_TABLE CONSTANT VARCHAR2(30) := 'JAI_CMN_DOCUMENT_TAXES';
65 G_MATCH_PRODUCT_TABLE CONSTANT VARCHAR2(30) := 'JAI_AP_MATCH_INV_TAXES';
66
67
68 --==========================================================================
69 -- FUNCTION NAME:
70 --
71 -- Get_Tax_Type Private
72 --
73 -- DESCRIPTION:
74 -- With given modvat_flag and credit percentage, return the tax type.
75 -- Tax type can be FR,fully recoverable,NR,not recoverable,or PR,partially
76 -- recoverable
77 --
78 -- PARAMETERS:
79 -- In: pv_modvat_flag IN VARCHAR Y or N
80 -- pn_cr_percentage IN NUMBER Credit percentage
81 --
82 -- Out: RETURN VARCHAR2
83 --
84 --
85 -- PRE-COND : invoice exists
86 -- EXCEPTIONS:
87 --
88 --===========================================================================
89 FUNCTION Get_Tax_Type
90 ( pv_modvat_flag VARCHAR2
91 , pn_cr_percentage NUMBER
92 )
93 RETURN VARCHAR2
94 IS
95 lv_tax_type VARCHAR2(10) ;
96 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
97 ln_proc_level NUMBER := FND_LOG.level_procedure;
98 lv_proc_name VARCHAR2 (100) := 'Get_Tax_Type';
99 BEGIN
100 IF ( ln_proc_level >= ln_dbg_level)
101 THEN
102 FND_LOG.STRING ( ln_proc_level
103 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
104 , 'Enter procedure'
105 );
106 FND_LOG.STRING ( ln_proc_level
107 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
108 , 'pv_modvat_flag ' || pv_modvat_flag
109 );
110 FND_LOG.STRING ( ln_proc_level
111 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
112 , 'pn_cr_percentage ' || pn_cr_percentage
113 );
114 END IF; --(ln_proc_level >= ln_dbg_level)
115
116 IF ( NVL (pv_modvat_flag, 'N') = jai_constants.no
117 OR NVL (pn_cr_percentage, -1) <= 0
118 )
119 THEN
120 lv_tax_type := 'NR' ; --NON RECOVERABLE
121 ELSIF
122 ( NVL (pv_modvat_flag, 'N') = jai_constants.yes
123 AND NVL (pn_cr_percentage, -1) = 100
124 )
125 THEN
126 lv_tax_type := 'FR' ; --FULLY RECOVERABLE
127 ELSIF
128 ( NVL (pv_modvat_flag, 'N') = jai_constants.yes
129 AND NVL (pn_cr_percentage, -1) < 100
130 )
131 THEN
132 lv_tax_type := 'PR' ; --PARTIALLY RECOVERABLE
133 END IF;--( (pv_modvat_flag, 'N') = jai_constants.no)
134
135
136 IF ( ln_proc_level >= ln_dbg_level)
137 THEN
138 FND_LOG.STRING ( ln_proc_level
139 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
140 , 'lv_tax_type ' || lv_tax_type
141 );
142
143 FND_LOG.STRING ( ln_proc_level
144 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
145 , 'Exit procedure'
146 );
147 END IF; --( ln_proc_level >= ln_dbg_level )
148
149 RETURN lv_tax_type;
150 EXCEPTION
151 WHEN OTHERS THEN
152 IF ( ln_proc_level >= ln_dbg_level)
153 THEN
154 FND_LOG.STRING ( ln_proc_level
155 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
156 || '. Other_Exception '
157 , SQLCODE || ':' || SQLERRM
158 );
159 END IF; --( ln_proc_level >= ln_dbg_level) ;
160
161 RETURN lv_tax_type;
162 END Get_Tax_Type;
163
164
165 --==========================================================================
166 -- FUNCTION NAME:
167 --
168 -- Get_Max_Invoice_Line_Number Private
169 --
170 -- DESCRIPTION:
171 -- Get the max invoice line number for a given invoice id
172 --
173 --
174 -- PARAMETERS:
175 -- In: pn_invoice_id IN NUMBER invoice id
176 --
177 -- Out: RETURN number
178 --
179 --
180 -- PRE-COND : invoice exists
181 -- EXCEPTIONS:
182 --
183 --===========================================================================
184 FUNCTION Get_Max_Invoice_Line_Number (pn_invoice_id NUMBER)
185 RETURN NUMBER
186 IS
187 ln_max_line_number NUMBER;
188 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
189 ln_proc_level NUMBER := FND_LOG.level_procedure;
190 lv_proc_name VARCHAR2 (100) := 'Get_Max_Invoice_Line_Number';
191 BEGIN
192 --log for debug
193 IF ( ln_proc_level >= ln_dbg_level)
194 THEN
195 FND_LOG.STRING ( ln_proc_level
196 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
197 , 'Enter procedure'
198 );
199 FND_LOG.STRING ( ln_proc_level
200 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
201 , 'pn_invoice_id ' || pn_invoice_id
202 );
203 END IF;
204
205 -- add row level lock to the table ,to avoid duplicated lines created
206 /*UPDATE ap_invoice_lines_all
207 SET invoice_id = pn_invoice_id
208 WHERE invoice_id = pn_invoice_id;*/ -- for bug 14681650 by anupgupt
209
210 SELECT
211 NVL(MAX (line_number), 0)
212 INTO
213 ln_max_line_number
214 FROM
215 ap_invoice_lines_all
216 WHERE invoice_id = pn_invoice_id;
217
218 IF ( ln_proc_level >= ln_dbg_level)
219 THEN
220 FND_LOG.STRING ( ln_proc_level
221 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
222 , 'ln_max_line_number ' || ln_max_line_number
223 );
224 FND_LOG.STRING ( ln_proc_level
225 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
226 , 'Exit procedure'
227 );
228 END IF; --( ln_proc_level >= ln_dbg_level )
229
230 RETURN ln_max_line_number;
231 EXCEPTION
232 WHEN OTHERS THEN
233 IF ( ln_proc_level >= ln_dbg_level)
234 THEN
235 FND_LOG.STRING ( ln_proc_level
236 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
237 || '. Other_Exception '
238 , SQLCODE || ':' || SQLERRM
239 );
240 END IF; --( ln_proc_level >= ln_dbg_level) ;
241
242 RETURN 0;
243 END Get_Max_Invoice_Line_Number;
244
245 --==========================================================================
246 -- FUNCTION NAME:
247 --
248 -- Get_Max_Doc_Source_Line_Id Private
249 --
250 -- DESCRIPTION:
251 -- Get the max invoice line number( source doc line id )for a given
252 -- invoice id (source id)
253 --
254 --
255 -- PARAMETERS:
256 -- In: pn_invoice_id IN NUMBER invoice id
257 --
258 -- Out: RETURN number
259 --
260 --
261 -- PRE-COND : invoice exists
262 -- EXCEPTIONS:
263 --
264 -- CHANGE HISTORY:
265 -- 1 29-Jan-2008 Eric Ma Created for bug#6784111
266 --
267 --===========================================================================
268 FUNCTION Get_Max_Doc_Source_Line_Id (pn_invoice_id NUMBER)
269 RETURN NUMBER
270 IS
271 ln_max_line_number NUMBER;
272 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
273 ln_proc_level NUMBER := FND_LOG.level_procedure;
274 lv_proc_name VARCHAR2 (100) := 'Get_Max_Doc_Source_Line_Id';
275 BEGIN
276 --log for debug
277 IF ( ln_proc_level >= ln_dbg_level)
278 THEN
279 FND_LOG.STRING ( ln_proc_level
280 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
281 , 'Enter procedure'
282 );
283 FND_LOG.STRING ( ln_proc_level
284 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
285 , 'pn_invoice_id ' || pn_invoice_id
286 );
287 END IF;
288
289 -- add row level lock to the table
290 UPDATE
291 jai_cmn_document_taxes
292 SET
293 source_doc_id = pn_invoice_id
294 WHERE source_doc_id = pn_invoice_id
295 AND source_doc_type = jai_constants.g_ap_standalone_invoice;
296
297 SELECT
298 NVL(MAX(source_doc_line_id), 0)
299 INTO
300 ln_max_line_number
301 FROM
302 jai_cmn_document_taxes
303 WHERE source_doc_id = pn_invoice_id
304 AND source_doc_type = jai_constants.g_ap_standalone_invoice;
305
306
307 IF ( ln_proc_level >= ln_dbg_level)
308 THEN
309 FND_LOG.STRING ( ln_proc_level
310 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
311 , 'ln_max_line_number ' || ln_max_line_number
312 );
313 FND_LOG.STRING ( ln_proc_level
314 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
315 , 'Exit procedure'
316 );
317 END IF; --( ln_proc_level >= ln_dbg_level )
318
319 RETURN ln_max_line_number;
320 EXCEPTION
321 WHEN OTHERS THEN
322 IF ( ln_proc_level >= ln_dbg_level)
323 THEN
324 FND_LOG.STRING ( ln_proc_level
325 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
326 || '. Other_Exception '
327 , SQLCODE || ':' || SQLERRM
328 );
329 END IF; --( ln_proc_level >= ln_dbg_level) ;
330
331 RETURN 0;
332 END Get_Max_Doc_Source_Line_Id;
333
334 --==========================================================================
335 -- FUNCTION NAME:
336 --
337 -- Get_Gl_Account_Type Private
338 --
339 -- DESCRIPTION:
340 -- Get the account type for a given ccid
341 --
342 --
343 -- PARAMETERS:
344 -- In: pn_code_combination_id NUMBER code combnation id
345 --
346 -- Out: RETURN account_type
347 --
348 -- PRE-COND : ccid exists
349 -- EXCEPTIONS:
350 --
351 --===========================================================================
352 FUNCTION Get_Gl_Account_Type (pn_code_combination_id IN NUMBER)
353 RETURN VARCHAR2
354 IS
355 CURSOR get_account_cur IS
356 SELECT
357 account_type
358 FROM
359 gl_code_combinations
360 WHERE code_combination_id = pn_code_combination_id;
361
362 lv_account_type gl_code_combinations.account_type%TYPE;
363
364 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
365 ln_proc_level NUMBER := FND_LOG.level_procedure;
366 lv_proc_name VARCHAR2 (100) := 'Get_Gl_Account_Type';
367 BEGIN
368 --log for debug
369 IF ( ln_proc_level >= ln_dbg_level)
370 THEN
371 FND_LOG.STRING ( ln_proc_level
372 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
373 , 'Enter procedure'
374 );
375 FND_LOG.STRING ( ln_proc_level
376 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
377 , 'pn_code_combination_id ' || pn_code_combination_id
378 );
379 END IF;--( ln_proc_level >= ln_dbg_level )
380
381 OPEN get_account_cur;
382 FETCH get_account_cur
383 INTO
384 lv_account_type;
385 CLOSE get_account_cur;
386
387 IF ( ln_proc_level >= ln_dbg_level)
388 THEN
389 FND_LOG.STRING ( ln_proc_level
390 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
391 , 'lv_account_type ' || lv_account_type
392 );
393 FND_LOG.STRING ( ln_proc_level
394 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
395 , 'Exit procedure'
396 );
397 END IF; --( ln_proc_level >= ln_dbg_level )
398
399
400 RETURN lv_account_type;
401 EXCEPTION
402 WHEN OTHERS THEN
403 IF ( ln_proc_level >= ln_dbg_level)
404 THEN
405 FND_LOG.STRING ( ln_proc_level
406 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
407 || '. Other_Exception '
408 , SQLCODE || ':' || SQLERRM
409 );
410 END IF; --( ln_proc_level >= ln_dbg_level) ;
411
412 RETURN NULL; -- if required exception can be handled.
413 END Get_Gl_Account_Type;
414
415 /*
416 REM +======================================================================+
417 REM Created By : Chong
418 REM Creation Date : Jun 5, 2012
419 REM Bug Number/ER Name : Reverse charge service tax
420 REM SubProgram Name :
421 REM Type : Process API
422 REM Purpose : Update CCID fro reverse charge service tax line
423 REM when org_id or location changed
424 REM
425 REM TDD Reference :
426 REM
427 REM Assumptions :
428 REM
429 REM Parameter IN/OUT Type Required Description and Purpose
430 REM ----------------------- ------ ------------------ ---------- ------------------------------------
431 REM pn_invoice_id IN NUMBER Y invoice id.
432 REM pn_line_number IN NUMBER Y invoice line number
433 REM pn_org_id IN NUMBER Y organization ID
434 REM pn_location_id IN NUMBER Y location ID
435 REM
436 REM CALLED BY
437 REM JAI_AP_STND_TAX_PROCESS.UPDATE_CCID
438 REM +=====================================================================================================+
439 */
440 PROCEDURE UPDATE_CCID(pn_invoice_id IN NUMBER,
441 pn_line_number IN NUMBER,
442 pn_org_id IN NUMBER,
443 pn_location_id IN NUMBER) IS
444
445 ln_chargeble_acct_ccid NUMBER;
446 ln_dist_acct_ccid NUMBER;
447 lv_account_type VARCHAR2(1);
448 lv_tax_type VARCHAR2(2);
449 lv_assets_tracking_flag VARCHAR2(1);
450
451 CURSOR c_jai_cmn_document_taxes
452 IS
453 SELECT ap_dist.invoice_distribution_id, ap_dist.amount, to_number(ap_line.REFERENCE_KEY1) tax_id
454 FROM AP_INVOICE_LINES_ALL ap_line,
455 AP_INVOICE_DISTRIBUTIONS_ALL ap_dist
456 WHERE ap_dist.invoice_id = pn_invoice_id
457 AND ap_line.invoice_id = ap_dist.invoice_id
458 AND ap_dist.invoice_line_number = ap_line.line_number
459 AND ap_line.line_type_lookup_code = 'MISCELLANEOUS'
460 AND ap_line.application_id = 7000
461 AND ap_line.PRODUCT_TABLE = 'JAI_CMN_DOCUMENT_TAXES'
462 AND ap_line.REFERENCE_KEY2 = to_char(pn_line_number);
463
464
465 CURSOR get_tax_cur (pn_tax_id NUMBER) IS
466 SELECT
467 tax_name,
468 tax_account_id,
469 mod_cr_percentage,
470 adhoc_flag,
471 NVL (tax_rate, -1) tax_rate,
472 tax_type,
473 NVL(rounding_factor,0) rounding_factor
474 FROM jai_cmn_taxes_all
475 WHERE tax_id = pn_tax_id;
476
477 CURSOR get_ap_tax_dtl (cn_dist_id NUMBER)IS
478 SELECT modvat_flag
479 FROM JAI_CMN_DOCUMENT_TAXES a,
480 AP_INVOICE_DISTRIBUTIONS_ALL d
481 WHERE d.invoice_distribution_id = cn_dist_id
482 AND a.source_doc_id = pn_invoice_id
483 AND d.invoice_line_number = a.source_doc_line_id;
484
485
486 /* changes done by abhidutt for bug 12358850. AP_INVOICE_DISTRIBUTIONS_ALL fetches no records when we directly enter Default-Distribution-Account without using distribution button for the invoice line
487 in payables invoices. Added the cursor "get_assets_tracking_flag" so that asset_tracking_flag value will be fetched from the cursor instead of fetching it from SELECT query directly */
488
489 CURSOR get_assets_tracking_flag
490 IS
491 SELECT assets_tracking_flag
492 FROM ap_invoice_distributions_all
493 WHERE invoice_id = pn_invoice_id
494 AND invoice_line_number = pn_line_number
495 AND distribution_line_number = (select min(distribution_line_number) from ap_invoice_distributions_all
496 where invoice_id = pn_invoice_id AND invoice_line_number = pn_line_number) ; /* Bug 13617527 */
497
498 tax_rec get_tax_cur%ROWTYPE;
499 ap_tax_dtl_rec get_ap_tax_dtl%ROWTYPE;
500 l_api_name CONSTANT VARCHAR2(50) := 'UPDATE_CCID';
501 BEGIN
502 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
503 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'pn_invoice_id: ' || pn_invoice_id );
504 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'pn_line_number: ' || pn_line_number );
505 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'pn_org_id: ' || pn_org_id );
506 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'pn_location_id: ' || pn_location_id );
507
508 IF (pn_org_id IS NOT NULL AND pn_location_id IS NOT NULL)
509 THEN
510 FOR r_jai_cmn_document_taxes IN c_jai_cmn_document_taxes
511 LOOP
512 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name, 'tax id: ' || r_jai_cmn_document_taxes.tax_id);
513
514 OPEN get_tax_cur (r_jai_cmn_document_taxes.tax_id);
515 FETCH get_tax_cur INTO tax_rec;
516 CLOSE get_tax_cur;
517 IF r_jai_cmn_document_taxes.amount < 0 THEN
518
519 ln_dist_acct_ccid := Get_ST_Reverse_Ccid
520 ( pn_invoice_id => pn_invoice_id
521 , pn_item_line_number => pn_line_number
522 , pn_organization_id => pn_org_id --Replaced pn_organization_id with lv_organization_id for bug#9206909
523 , pn_location_id => pn_location_id --Replaced pn_location_id with lv_location_id for bug#9206909
524 , pn_tax_type_code => tax_rec.tax_type
525 , pn_tax_acct_ccid => tax_rec.tax_account_id
526 , pv_tax_type => 'FR' -- for liability line, allways get CCID from regime setup
527 , pv_ac_type => GV_INTERIM_LIABILITY
528 );
529 ELSE
530 OPEN get_ap_tax_dtl (r_jai_cmn_document_taxes.invoice_distribution_id);
531 FETCH get_ap_tax_dtl INTO ap_tax_dtl_rec;
532 CLOSE get_ap_tax_dtl;
533 lv_tax_type := get_tax_type
534 ( pv_modvat_flag => ap_tax_dtl_rec.modvat_flag,
535 pn_cr_percentage => tax_rec.mod_cr_percentage
536 );
537 ln_dist_acct_ccid := Get_ST_Reverse_Ccid
538 ( pn_invoice_id => pn_invoice_id
539 , pn_item_line_number => pn_line_number
540 , pn_organization_id => pn_org_id
541 , pn_location_id => pn_location_id
542 , pn_tax_type_code => tax_rec.tax_type
543 , pn_tax_acct_ccid => tax_rec.tax_account_id
544 , pv_tax_type => lv_tax_type
545 , pv_ac_type => GV_REVERSE_CHARGE
546 );
547 END IF;
548
549
550 OPEN get_assets_tracking_flag;
551 FETCH get_assets_tracking_flag INTO lv_assets_tracking_flag;
552 CLOSE get_assets_tracking_flag;
553
554 IF (lv_assets_tracking_flag = 'N')
555 THEN
556 ln_chargeble_acct_ccid :=NULL;
557 ELSE
558 lv_account_type := get_gl_account_type (ln_dist_acct_ccid);
559
560 IF lv_account_type ='A'
561 THEN
562 ln_chargeble_acct_ccid := ln_dist_acct_ccid;
563 ELSE
564 ln_chargeble_acct_ccid := NULL;
565 END IF;
566 END IF;
567
568 UPDATE ap_invoice_distributions_all
569 SET dist_code_combination_id = ln_dist_acct_ccid
570 WHERE invoice_distribution_id = r_jai_cmn_document_taxes.invoice_distribution_id;
571
572 END LOOP;
573 COMMIT;
574 END IF;
575 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '|| l_api_name || '()-');
576 END UPDATE_CCID;
577
578
579 function check_service_interim_account /* Service */
580 (
581 p_accrue_on_receipt_flag varchar2,
582 p_accounting_method_option varchar2,
583 p_is_item_an_expense varchar2,
584 p_service_regime_id number,
585 p_org_id number,
586 p_rematch varchar2,
587 p_tax_type varchar2,
588 po_dist_id NUMBER --Added by JMEENA for bug#6833506
589 )
590 return number is
591
592 lb_charge_service_interim boolean;
593 ln_service_interim_account number;
594
595
596 /*5694855..start* kunkumar for forward porting to R12*/
597 CURSOR cur_fetch_io IS
598 SELECT ship_to_organization_id,
599 ship_to_location_id
600 FROM po_line_locations_all
601 WHERE line_location_id IN ( SELECT line_location_id
602 FROM po_distributions_all
603 WHERE po_distribution_id = po_dist_id) ;
604
605 ln_organization_id NUMBER;
606 ln_location_id NUMBER;
607
608 /*5694855..end*/
609
610
611
612 begin
613
614 /* Bug 5358788. Added by Lakshmi Gopalsami
615 * Commented out the check for p_rematch = 'PO_MATCHING'
616 */
617 --added the if condition for bug#12813762
618 if p_rematch='INCLUSIVE'
619 then
620 if p_accrue_on_receipt_flag = 'N'
621 then
622 -- lb_charge_service_interim := true;/*accounting shall not be generated if the accrue on receipt flag is set to 'n',variables are assigned wrongly,11936596*/
623 lb_charge_service_interim :=false;--11936596
624 else
625 -- lb_charge_service_interim := false;
626 lb_charge_service_interim :=true; --11936596
627 end if;
628 else
629 if p_accrue_on_receipt_flag = 'N'
630 then
631 lb_charge_service_interim := true;
632 else
633 lb_charge_service_interim := false;
634
635 end if;
636 END IF;
637 if lb_charge_service_interim then
638
639 OPEN cur_fetch_io;/*5694855*/
640 FETCH cur_fetch_io INTO ln_organization_id,ln_location_id;
641 CLOSE cur_fetch_io;
642
643
644 ln_service_interim_account :=
645 jai_cmn_rgm_recording_pkg.get_account
646 (
647 p_regime_id => p_service_regime_id,
648 p_organization_type => jai_constants.orgn_type_io,/*5694855*/
649 p_organization_id => ln_organization_id,/*5694855*/
650 p_location_id => ln_location_id, /*5694855*/
651 p_tax_type => p_tax_type,
652 p_account_name => jai_constants.recovery_interim
653 );
654
655 return ln_service_interim_account;
656
657 else
658
659 return null;
660 end if;
661
662 END check_service_interim_account; /* Service */
663
664
665 /*
666 REM +======================================================================+
667 REM Created By : Chong
668 REM Creation Date : Jun 5, 2012
669 REM Bug Number/ER Name : Reverse charge service tax
670 REM SubProgram Name : Get_ST_Reverse_Ccid
671 REM Type : Process API
672 REM Purpose : Get CCID from regime by tax type and accounting type.
673 REM
674 REM
675 REM TDD Reference :
676 REM
677 REM Assumptions :
678 REM
679 REM Parameter IN/OUT Type Required Description and Purpose
680 REM ----------------------- ------ ------------------ ---------- ------------------------------------
681 REM pn_invoice_id IN NUMBER Y invoice id.
682 REM pn_item_line_number IN NUMBER Y invoice line number
683 REM pn_organization_id IN NUMBER Y organization ID
684 REM pn_location_id IN NUMBER Y location ID
685 REM pn_tax_type_code IN VARCHAR2 Y tax type
686 REM pn_tax_acct_ccid IN NUMBER Y tax CCID
687 REM pv_tax_type IN VARCHAR2 Y tax type about recoverable
688 REM pv_ac_type IN VARCHAR2 Y Accounting type in regime
689 REM
690 REM CALLED BY
691 REM JAI_AP_ST_REVERSE_PROCESS.Populate_ST_RVRS_Dist
692 REM +=====================================================================================================+
693 */
694 FUNCTION Get_ST_Reverse_Ccid
695 ( pn_invoice_id IN NUMBER
696 , pn_item_line_number IN NUMBER
697 , pn_organization_id IN NUMBER
698 , pn_location_id IN NUMBER
699 , pn_tax_type_code IN VARCHAR2
700 , pn_tax_acct_ccid IN NUMBER
701 , pv_tax_type IN VARCHAR2
702 , pv_ac_type IN VARCHAR2 -- accounting type which should be (Reverse Charge/interim liability)
703 )
704 RETURN NUMBER
705 IS
706 CURSOR item_dist_account_cur IS
707 SELECT
708 dist_code_combination_id
709 FROM
710 ap_invoice_distributions_all
711 WHERE invoice_id = pn_invoice_id
712 AND invoice_line_number = pn_item_line_number
713 AND distribution_line_number =1;
714
715
716 CURSOR jai_regimes_cur
717 (
718 pv_regime_code IN jai_rgm_definitions.regime_code%TYPE
719 )
720 IS
721 SELECT
722 regime_id
723 FROM
724 jai_rgm_definitions
725 WHERE regime_code = pv_regime_code;
726
727 CURSOR regime_tax_type_cur
728 ( pn_regime_id NUMBER
729 , pv_tax_type_code VARCHAR2
730 )
731 IS
732 SELECT
733 attribute_code tax_type
734 FROM
735 jai_rgm_registrations
736 WHERE regime_id = pn_regime_id
737 AND registration_type =jai_constants.regn_type_tax_types --tax type
738 AND attribute_code = pv_tax_type_code;
739
740 CURSOR regime_account_cur
741 ( pn_regime_id NUMBER
742 , pn_tax_type VARCHAR2
743 )
744 IS
745 SELECT
746 TO_NUMBER (accnts.attribute_value)
747 FROM
748 jai_rgm_registrations tax_types
749 , jai_rgm_registrations accnts
750 WHERE tax_types.regime_id = pn_regime_id
751 AND tax_types.registration_type = jai_constants.regn_type_tax_types
752 AND tax_types.attribute_code = pn_tax_type
753 AND accnts.regime_id = tax_types.regime_id
754 AND accnts.registration_type = jai_constants.regn_type_accounts
755 AND accnts.parent_registration_id = tax_types.registration_id
756 AND accnts.attribute_code = pv_ac_type;
757
758 --start additions for bug#9775984
759 Cursor get_dflt_ccid IS
760 Select default_dist_ccid
761 FROM AP_INVOICE_LINES_ALL
762 WHERE invoice_id = pn_invoice_id
763 and line_number = pn_item_line_number;
764 --end additions for bug#9775984
765
766
767 service_regimes_rec jai_regimes_cur%ROWTYPE;
768 vat_regimes_rec jai_regimes_cur%ROWTYPE;
769 ln_dist_acct_ccid NUMBER;
770 ln_regime_id jai_rgm_definitions.regime_id%TYPE;
771 lv_regime_code jai_rgm_definitions.regime_code%TYPE;
772 lv_regim_tax_type jai_rgm_registrations.attribute_code%TYPE;
773
774 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
775 ln_proc_level NUMBER := FND_LOG.level_procedure;
776 lv_proc_name VARCHAR2 (100) := 'Get_ST_Reverse_Ccid';
777
778 BEGIN
779 --log for debug
780 IF ( ln_proc_level >= ln_dbg_level)
781 THEN
782 FND_LOG.STRING ( ln_proc_level
783 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
784 , 'Enter procedure'
785 );
786 FND_LOG.STRING ( ln_proc_level
787 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
788 , 'pn_invoice_id ' || pn_invoice_id
789 );
790 FND_LOG.STRING ( ln_proc_level
791 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
792 , 'pn_item_line_number ' || pn_item_line_number
793 );
794 FND_LOG.STRING ( ln_proc_level
795 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
796 , 'pn_organization_id ' || pn_organization_id
797 );
798 FND_LOG.STRING ( ln_proc_level
799 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
800 , 'pn_location_id ' || pn_location_id
801 );
802 FND_LOG.STRING ( ln_proc_level
803 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
804 , 'pn_tax_type_code ' || pn_tax_type_code
805 );
806 FND_LOG.STRING ( ln_proc_level
807 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
808 , 'pn_tax_acct_ccid ' || pn_tax_acct_ccid
809 );
810 FND_LOG.STRING ( ln_proc_level
811 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
812 , 'pv_tax_type ' || pv_tax_type
813 );
814 FND_LOG.STRING ( ln_proc_level
815 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
816 , 'pv_ac_type ' || pv_ac_type
817 );
818 END IF;
819
820 IF (pv_tax_type='NR') --NON recoverable tax
821 THEN
822 OPEN item_dist_account_cur;
823 FETCH item_dist_account_cur
824 INTO
825 ln_dist_acct_ccid ;
826 CLOSE item_dist_account_cur;
827
828 --start additions for bug#9775984
829 /*if the distribution in distribution table doesnot exists
830 then fetch ccid from dflt ccid attached at the invoice line level*/
831 if ln_dist_acct_ccid is null
832 then
833 open get_dflt_ccid;
834 fetch get_dflt_ccid into ln_dist_acct_ccid;
835 close get_dflt_ccid;
836 end if;
837 --end additions for bug#9775984
838 ELSE -- recoverable tax
839 OPEN jai_regimes_cur (jai_constants.service_regime);
840 FETCH jai_regimes_cur
841 INTO
842 service_regimes_rec;
843 CLOSE jai_regimes_cur;
844
845 --check the tax is service taxes or not
846 OPEN regime_tax_type_cur ( service_regimes_rec.regime_id
847 , pn_tax_type_code
848 );
849 FETCH regime_tax_type_cur
850 INTO
851 lv_regim_tax_type;
852 CLOSE regime_tax_type_cur;
853
854 IF lv_regim_tax_type IS NOT NULL
855 THEN
856 lv_regime_code := jai_constants.service_regime;
857 ELSE -- (r_service_regime_tax is null)
858 NULL;
859 END IF; --( end of r_service_regime_tax_type level)
860
861 --try to get account from regim level
862 IF lv_regime_code IS NULL --(tax is not difined in regim level)
863 THEN
864 ln_dist_acct_ccid := pn_tax_acct_ccid;
865 ELSE --(lv_regime_code is NOT null,tax has beend difined in regim level)
866 OPEN jai_regimes_cur (lv_regime_code);
867
868 FETCH jai_regimes_cur
869 INTO
870 ln_regime_id;
871 CLOSE jai_regimes_cur;
872
873 IF ( pn_organization_id IS NULL
874 AND pn_location_id IS NULL
875 )
876 THEN
877 OPEN regime_account_cur
878 ( ln_regime_id
879 , pn_tax_type_code
880 );
881
882 FETCH regime_account_cur
883 INTO
884 ln_dist_acct_ccid;
885 CLOSE regime_account_cur;
886 ELSIF( pn_organization_id IS NOT NULL
887 AND pn_location_id IS NOT NULL
888 )
889 THEN
890 ln_dist_acct_ccid :=
891 jai_cmn_rgm_recording_pkg.get_account
892 ( p_regime_id => ln_regime_id
893 , p_organization_type => jai_constants.orgn_type_io
894 , p_organization_id => pn_organization_id
895 , p_location_id => pn_location_id
896 , p_tax_type => pn_tax_type_code
897 , p_account_name => pv_ac_type
898 );
899
900 END IF; --(pn_organization_id IS NULL AND pn_location_id IS NULL )
901 END IF; --(lv_regime_code IS NULL)
902 END IF; --(lv_recoverable_flag = 'N')
903
904 IF ( ln_proc_level >= ln_dbg_level)
905 THEN
906 FND_LOG.STRING ( ln_proc_level
907 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
908 , 'ln_dist_acct_ccid ' || ln_dist_acct_ccid
909 );
910
911 FND_LOG.STRING ( ln_proc_level
912 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
913 , 'Exit procedure'
914 );
915 END IF; --( ln_proc_level >= ln_dbg_level )
916
917 RETURN ln_dist_acct_ccid ;
918 EXCEPTION
919 WHEN OTHERS THEN
920 IF ( ln_proc_level >= ln_dbg_level)
921 THEN
922 FND_LOG.STRING ( ln_proc_level
923 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
924 || '. Other_Exception '
925 , SQLCODE || ':' || SQLERRM
926 );
927 END IF; --( ln_proc_level >= ln_dbg_level) ;
928
929 RETURN NULL;
930 END Get_ST_Reverse_Ccid;
931
932
933
934
935
936
937 PROCEDURE Insert_jai_inv_line(
938 p_jai_ap_invoice_lines_rec IN jai_ap_invoice_lines%ROWTYPE
939 )IS
940 l_api_name CONSTANT VARCHAR2(50) := 'Insert_jai_inv_line()';
941 BEGIN
942 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
943
944 INSERT INTO jai_ap_invoice_lines
945 (JAI_AP_INVOICE_LINES_ID
946 ,ORGANIZATION_ID
947 ,LOCATION_ID
948 ,INVOICE_ID
949 ,INVOICE_LINE_NUMBER
950 ,SUPPLIER_SITE_ID
951 ,PARENT_INVOICE_LINE_NUMBER
952 ,TAX_CATEGORY_ID
953 ,SERVICE_TYPE_CODE
954 ,MATCH_TYPE
955 ,CURRENCY_CODE
956 ,LINE_AMOUNT
957 ,LINE_TYPE_LOOKUP_CODE
958 ,CREATED_BY
959 ,CREATION_DATE
960 ,LAST_UPDATE_DATE
961 ,LAST_UPDATE_LOGIN
962 ,LAST_UPDATED_BY
963 )
964 VALUES
965 (p_jai_ap_invoice_lines_rec.JAI_AP_INVOICE_LINES_ID
966 ,p_jai_ap_invoice_lines_rec.ORGANIZATION_ID
967 ,p_jai_ap_invoice_lines_rec.LOCATION_ID
968 ,p_jai_ap_invoice_lines_rec.INVOICE_ID
969 ,p_jai_ap_invoice_lines_rec.INVOICE_LINE_NUMBER
970 ,p_jai_ap_invoice_lines_rec.SUPPLIER_SITE_ID
971 ,p_jai_ap_invoice_lines_rec.PARENT_INVOICE_LINE_NUMBER
972 ,p_jai_ap_invoice_lines_rec.TAX_CATEGORY_ID
973 ,p_jai_ap_invoice_lines_rec.SERVICE_TYPE_CODE
974 ,p_jai_ap_invoice_lines_rec.MATCH_TYPE
975 ,p_jai_ap_invoice_lines_rec.CURRENCY_CODE
976 ,p_jai_ap_invoice_lines_rec.LINE_AMOUNT
977 ,p_jai_ap_invoice_lines_rec.LINE_TYPE_LOOKUP_CODE
978 ,p_jai_ap_invoice_lines_rec.CREATED_BY
979 ,p_jai_ap_invoice_lines_rec.CREATION_DATE
980 ,p_jai_ap_invoice_lines_rec.LAST_UPDATE_DATE
981 ,p_jai_ap_invoice_lines_rec.LAST_UPDATE_LOGIN
982 ,p_jai_ap_invoice_lines_rec.LAST_UPDATED_BY
983 );
984
985 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '|| l_api_name || '()-');
986 EXCEPTION
987 WHEN OTHERS THEN
988 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name
989 , G_PKG_NAME || ': '|| l_api_name || '. Other_Exception '
990 || SQLCODE || ':' || SQLERRM);
991 RAISE;
992 END Insert_jai_inv_line;
993
994
995
996 PROCEDURE Insert_ap_inv_line(
997 p_ap_invoice_lines_all_rec IN ap_invoice_lines_all%ROWTYPE
998 )IS
999 l_api_name CONSTANT VARCHAR2(50) := 'Insert_ap_inv_line()';
1000 BEGIN
1001 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
1002
1003 INSERT INTO ap_invoice_lines_all
1004 (INVOICE_ID
1005 ,LINE_NUMBER
1006 ,LINE_TYPE_LOOKUP_CODE
1007 ,REQUESTER_ID
1008 ,DESCRIPTION
1009 ,LINE_SOURCE
1010 ,ORG_ID
1011 ,LINE_GROUP_NUMBER
1012 ,INVENTORY_ITEM_ID
1013 ,ITEM_DESCRIPTION
1014 ,SERIAL_NUMBER
1015 ,MANUFACTURER
1016 ,MODEL_NUMBER
1017 ,WARRANTY_NUMBER
1018 ,GENERATE_DISTS
1019 ,MATCH_TYPE
1020 ,DISTRIBUTION_SET_ID
1021 ,ACCOUNT_SEGMENT
1022 ,BALANCING_SEGMENT
1023 ,COST_CENTER_SEGMENT
1024 ,OVERLAY_DIST_CODE_CONCAT
1025 ,DEFAULT_DIST_CCID
1026 ,PRORATE_ACROSS_ALL_ITEMS
1027 ,ACCOUNTING_DATE
1028 ,PERIOD_NAME
1029 ,DEFERRED_ACCTG_FLAG
1030 ,DEF_ACCTG_START_DATE
1031 ,DEF_ACCTG_END_DATE
1032 ,DEF_ACCTG_NUMBER_OF_PERIODS
1033 ,DEF_ACCTG_PERIOD_TYPE
1034 ,SET_OF_BOOKS_ID
1035 ,AMOUNT
1036 ,BASE_AMOUNT
1037 ,ROUNDING_AMT
1038 ,QUANTITY_INVOICED
1039 ,UNIT_MEAS_LOOKUP_CODE
1040 ,UNIT_PRICE
1041 ,WFAPPROVAL_STATUS
1042 ,USSGL_TRANSACTION_CODE
1043 ,DISCARDED_FLAG
1044 ,ORIGINAL_AMOUNT
1045 ,ORIGINAL_BASE_AMOUNT
1046 ,ORIGINAL_ROUNDING_AMT
1047 ,CANCELLED_FLAG
1048 ,INCOME_TAX_REGION
1049 ,TYPE_1099
1050 ,STAT_AMOUNT
1051 ,PREPAY_INVOICE_ID
1052 ,PREPAY_LINE_NUMBER
1053 ,INVOICE_INCLUDES_PREPAY_FLAG
1054 ,CORRECTED_INV_ID
1055 ,CORRECTED_LINE_NUMBER
1056 ,PO_HEADER_ID
1057 ,PO_LINE_ID
1058 ,PO_RELEASE_ID
1059 ,PO_LINE_LOCATION_ID
1060 ,PO_DISTRIBUTION_ID
1061 ,RCV_TRANSACTION_ID
1062 ,FINAL_MATCH_FLAG
1063 ,ASSETS_TRACKING_FLAG
1064 ,ASSET_BOOK_TYPE_CODE
1065 ,ASSET_CATEGORY_ID
1066 ,PROJECT_ID
1067 ,TASK_ID
1068 ,EXPENDITURE_TYPE
1069 ,EXPENDITURE_ITEM_DATE
1070 ,EXPENDITURE_ORGANIZATION_ID
1071 ,PA_QUANTITY
1072 ,PA_CC_AR_INVOICE_ID
1073 ,PA_CC_AR_INVOICE_LINE_NUM
1074 ,PA_CC_PROCESSED_CODE
1075 ,AWARD_ID
1076 ,AWT_GROUP_ID
1077 ,REFERENCE_1
1078 ,REFERENCE_2
1079 ,RECEIPT_VERIFIED_FLAG
1080 ,RECEIPT_REQUIRED_FLAG
1081 ,RECEIPT_MISSING_FLAG
1082 ,JUSTIFICATION
1083 ,EXPENSE_GROUP
1084 ,START_EXPENSE_DATE
1085 ,END_EXPENSE_DATE
1086 ,RECEIPT_CURRENCY_CODE
1087 ,RECEIPT_CONVERSION_RATE
1088 ,RECEIPT_CURRENCY_AMOUNT
1089 ,DAILY_AMOUNT
1090 ,WEB_PARAMETER_ID
1091 ,ADJUSTMENT_REASON
1092 ,MERCHANT_DOCUMENT_NUMBER
1093 ,MERCHANT_NAME
1094 ,MERCHANT_REFERENCE
1095 ,MERCHANT_TAX_REG_NUMBER
1096 ,MERCHANT_TAXPAYER_ID
1097 ,COUNTRY_OF_SUPPLY
1098 ,CREDIT_CARD_TRX_ID
1099 ,COMPANY_PREPAID_INVOICE_ID
1100 ,CC_REVERSAL_FLAG
1101 ,CREATION_DATE
1102 ,CREATED_BY
1103 ,LAST_UPDATED_BY
1104 ,LAST_UPDATE_DATE
1105 ,LAST_UPDATE_LOGIN
1106 ,PROGRAM_APPLICATION_ID
1107 ,PROGRAM_ID
1108 ,PROGRAM_UPDATE_DATE
1109 ,REQUEST_ID
1110 ,ATTRIBUTE_CATEGORY
1111 ,ATTRIBUTE1
1112 ,ATTRIBUTE2
1113 ,ATTRIBUTE3
1114 ,ATTRIBUTE4
1115 ,ATTRIBUTE5
1116 ,ATTRIBUTE6
1117 ,ATTRIBUTE7
1118 ,ATTRIBUTE8
1119 ,ATTRIBUTE9
1120 ,ATTRIBUTE10
1121 ,ATTRIBUTE11
1122 ,ATTRIBUTE12
1123 ,ATTRIBUTE13
1124 ,ATTRIBUTE14
1125 ,ATTRIBUTE15
1126 ,GLOBAL_ATTRIBUTE_CATEGORY
1127 ,GLOBAL_ATTRIBUTE1
1128 ,GLOBAL_ATTRIBUTE2
1129 ,GLOBAL_ATTRIBUTE3
1130 ,GLOBAL_ATTRIBUTE4
1131 ,GLOBAL_ATTRIBUTE5
1132 ,GLOBAL_ATTRIBUTE6
1133 ,GLOBAL_ATTRIBUTE7
1134 ,GLOBAL_ATTRIBUTE8
1135 ,GLOBAL_ATTRIBUTE9
1136 ,GLOBAL_ATTRIBUTE10
1137 ,GLOBAL_ATTRIBUTE11
1138 ,GLOBAL_ATTRIBUTE12
1139 ,GLOBAL_ATTRIBUTE13
1140 ,GLOBAL_ATTRIBUTE14
1141 ,GLOBAL_ATTRIBUTE15
1142 ,GLOBAL_ATTRIBUTE16
1143 ,GLOBAL_ATTRIBUTE17
1144 ,GLOBAL_ATTRIBUTE18
1145 ,GLOBAL_ATTRIBUTE19
1146 ,GLOBAL_ATTRIBUTE20
1147 ,LINE_SELECTED_FOR_APPL_FLAG
1148 ,PREPAY_APPL_REQUEST_ID
1149 ,APPLICATION_ID
1150 ,PRODUCT_TABLE
1151 ,REFERENCE_KEY1
1152 ,REFERENCE_KEY2
1153 ,REFERENCE_KEY3
1154 ,REFERENCE_KEY4
1155 ,REFERENCE_KEY5
1156 ,PURCHASING_CATEGORY_ID
1157 ,COST_FACTOR_ID
1158 ,CONTROL_AMOUNT
1159 ,ASSESSABLE_VALUE
1160 ,TOTAL_REC_TAX_AMOUNT
1161 ,TOTAL_NREC_TAX_AMOUNT
1162 ,TOTAL_REC_TAX_AMT_FUNCL_CURR
1163 ,TOTAL_NREC_TAX_AMT_FUNCL_CURR
1164 ,INCLUDED_TAX_AMOUNT
1165 ,PRIMARY_INTENDED_USE
1166 ,TAX_ALREADY_CALCULATED_FLAG
1167 ,SHIP_TO_LOCATION_ID
1168 ,PRODUCT_TYPE
1169 ,PRODUCT_CATEGORY
1170 ,PRODUCT_FISC_CLASSIFICATION
1171 ,USER_DEFINED_FISC_CLASS
1172 ,TRX_BUSINESS_CATEGORY
1173 ,SUMMARY_TAX_LINE_ID
1174 ,TAX_REGIME_CODE
1175 ,TAX
1176 ,TAX_JURISDICTION_CODE
1177 ,TAX_STATUS_CODE
1178 ,TAX_RATE_ID
1179 ,TAX_RATE_CODE
1180 ,TAX_RATE
1181 ,TAX_CODE_ID
1182 ,HISTORICAL_FLAG
1183 ,TAX_CLASSIFICATION_CODE
1184 ,SOURCE_APPLICATION_ID
1185 ,SOURCE_EVENT_CLASS_CODE
1186 ,SOURCE_ENTITY_CODE
1187 ,SOURCE_TRX_ID
1188 ,SOURCE_LINE_ID
1189 ,SOURCE_TRX_LEVEL_TYPE
1190 ,RETAINED_AMOUNT
1191 ,RETAINED_AMOUNT_REMAINING
1192 ,RETAINED_INVOICE_ID
1193 ,RETAINED_LINE_NUMBER
1194 ,LINE_SELECTED_FOR_RELEASE_FLAG
1195 ,LINE_OWNER_ROLE
1196 ,DISPUTABLE_FLAG
1197 ,RCV_SHIPMENT_LINE_ID
1198 ,AIL_INVOICE_ID
1199 ,AIL_DISTRIBUTION_LINE_NUMBER
1200 ,AIL_INVOICE_ID2
1201 ,AIL_DISTRIBUTION_LINE_NUMBER2
1202 ,AIL_INVOICE_ID3
1203 ,AIL_DISTRIBUTION_LINE_NUMBER3
1204 ,AIL_INVOICE_ID4
1205 ,PAY_AWT_GROUP_ID
1206 )
1207 VALUES
1208 (p_ap_invoice_lines_all_rec.INVOICE_ID
1209 ,p_ap_invoice_lines_all_rec.LINE_NUMBER
1210 ,p_ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE
1211 ,p_ap_invoice_lines_all_rec.REQUESTER_ID
1212 ,p_ap_invoice_lines_all_rec.DESCRIPTION
1213 ,p_ap_invoice_lines_all_rec.LINE_SOURCE
1214 ,p_ap_invoice_lines_all_rec.ORG_ID
1215 ,p_ap_invoice_lines_all_rec.LINE_GROUP_NUMBER
1216 ,p_ap_invoice_lines_all_rec.INVENTORY_ITEM_ID
1217 ,p_ap_invoice_lines_all_rec.ITEM_DESCRIPTION
1218 ,p_ap_invoice_lines_all_rec.SERIAL_NUMBER
1219 ,p_ap_invoice_lines_all_rec.MANUFACTURER
1220 ,p_ap_invoice_lines_all_rec.MODEL_NUMBER
1221 ,p_ap_invoice_lines_all_rec.WARRANTY_NUMBER
1222 ,p_ap_invoice_lines_all_rec.GENERATE_DISTS
1223 ,p_ap_invoice_lines_all_rec.MATCH_TYPE
1224 ,p_ap_invoice_lines_all_rec.DISTRIBUTION_SET_ID
1225 ,p_ap_invoice_lines_all_rec.ACCOUNT_SEGMENT
1226 ,p_ap_invoice_lines_all_rec.BALANCING_SEGMENT
1227 ,p_ap_invoice_lines_all_rec.COST_CENTER_SEGMENT
1228 ,p_ap_invoice_lines_all_rec.OVERLAY_DIST_CODE_CONCAT
1229 ,p_ap_invoice_lines_all_rec.DEFAULT_DIST_CCID
1230 ,p_ap_invoice_lines_all_rec.PRORATE_ACROSS_ALL_ITEMS
1231 ,p_ap_invoice_lines_all_rec.ACCOUNTING_DATE
1232 ,p_ap_invoice_lines_all_rec.PERIOD_NAME
1233 ,p_ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG
1234 ,p_ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE
1235 ,p_ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE
1236 ,p_ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS
1237 ,p_ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE
1238 ,p_ap_invoice_lines_all_rec.SET_OF_BOOKS_ID
1239 ,p_ap_invoice_lines_all_rec.AMOUNT
1240 ,p_ap_invoice_lines_all_rec.BASE_AMOUNT
1241 ,p_ap_invoice_lines_all_rec.ROUNDING_AMT
1242 ,p_ap_invoice_lines_all_rec.QUANTITY_INVOICED
1243 ,p_ap_invoice_lines_all_rec.UNIT_MEAS_LOOKUP_CODE
1244 ,p_ap_invoice_lines_all_rec.UNIT_PRICE
1245 ,p_ap_invoice_lines_all_rec.WFAPPROVAL_STATUS
1246 ,p_ap_invoice_lines_all_rec.USSGL_TRANSACTION_CODE
1247 ,p_ap_invoice_lines_all_rec.DISCARDED_FLAG
1248 ,p_ap_invoice_lines_all_rec.ORIGINAL_AMOUNT
1249 ,p_ap_invoice_lines_all_rec.ORIGINAL_BASE_AMOUNT
1250 ,p_ap_invoice_lines_all_rec.ORIGINAL_ROUNDING_AMT
1251 ,p_ap_invoice_lines_all_rec.CANCELLED_FLAG
1252 ,p_ap_invoice_lines_all_rec.INCOME_TAX_REGION
1253 ,p_ap_invoice_lines_all_rec.TYPE_1099
1254 ,p_ap_invoice_lines_all_rec.STAT_AMOUNT
1255 ,p_ap_invoice_lines_all_rec.PREPAY_INVOICE_ID
1256 ,p_ap_invoice_lines_all_rec.PREPAY_LINE_NUMBER
1257 ,p_ap_invoice_lines_all_rec.INVOICE_INCLUDES_PREPAY_FLAG
1258 ,p_ap_invoice_lines_all_rec.CORRECTED_INV_ID
1259 ,p_ap_invoice_lines_all_rec.CORRECTED_LINE_NUMBER
1260 ,p_ap_invoice_lines_all_rec.PO_HEADER_ID
1261 ,p_ap_invoice_lines_all_rec.PO_LINE_ID
1262 ,p_ap_invoice_lines_all_rec.PO_RELEASE_ID
1263 ,p_ap_invoice_lines_all_rec.PO_LINE_LOCATION_ID
1264 ,p_ap_invoice_lines_all_rec.PO_DISTRIBUTION_ID
1265 ,p_ap_invoice_lines_all_rec.RCV_TRANSACTION_ID
1266 ,p_ap_invoice_lines_all_rec.FINAL_MATCH_FLAG
1267 ,p_ap_invoice_lines_all_rec.ASSETS_TRACKING_FLAG
1268 ,p_ap_invoice_lines_all_rec.ASSET_BOOK_TYPE_CODE
1269 ,p_ap_invoice_lines_all_rec.ASSET_CATEGORY_ID
1270 ,p_ap_invoice_lines_all_rec.PROJECT_ID
1271 ,p_ap_invoice_lines_all_rec.TASK_ID
1272 ,p_ap_invoice_lines_all_rec.EXPENDITURE_TYPE
1273 ,p_ap_invoice_lines_all_rec.EXPENDITURE_ITEM_DATE
1274 ,p_ap_invoice_lines_all_rec.EXPENDITURE_ORGANIZATION_ID
1275 ,p_ap_invoice_lines_all_rec.PA_QUANTITY
1276 ,p_ap_invoice_lines_all_rec.PA_CC_AR_INVOICE_ID
1277 ,p_ap_invoice_lines_all_rec.PA_CC_AR_INVOICE_LINE_NUM
1278 ,p_ap_invoice_lines_all_rec.PA_CC_PROCESSED_CODE
1279 ,p_ap_invoice_lines_all_rec.AWARD_ID
1280 ,p_ap_invoice_lines_all_rec.AWT_GROUP_ID
1281 ,p_ap_invoice_lines_all_rec.REFERENCE_1
1282 ,p_ap_invoice_lines_all_rec.REFERENCE_2
1283 ,p_ap_invoice_lines_all_rec.RECEIPT_VERIFIED_FLAG
1284 ,p_ap_invoice_lines_all_rec.RECEIPT_REQUIRED_FLAG
1285 ,p_ap_invoice_lines_all_rec.RECEIPT_MISSING_FLAG
1286 ,p_ap_invoice_lines_all_rec.JUSTIFICATION
1287 ,p_ap_invoice_lines_all_rec.EXPENSE_GROUP
1288 ,p_ap_invoice_lines_all_rec.START_EXPENSE_DATE
1289 ,p_ap_invoice_lines_all_rec.END_EXPENSE_DATE
1290 ,p_ap_invoice_lines_all_rec.RECEIPT_CURRENCY_CODE
1291 ,p_ap_invoice_lines_all_rec.RECEIPT_CONVERSION_RATE
1292 ,p_ap_invoice_lines_all_rec.RECEIPT_CURRENCY_AMOUNT
1293 ,p_ap_invoice_lines_all_rec.DAILY_AMOUNT
1294 ,p_ap_invoice_lines_all_rec.WEB_PARAMETER_ID
1295 ,p_ap_invoice_lines_all_rec.ADJUSTMENT_REASON
1296 ,p_ap_invoice_lines_all_rec.MERCHANT_DOCUMENT_NUMBER
1297 ,p_ap_invoice_lines_all_rec.MERCHANT_NAME
1298 ,p_ap_invoice_lines_all_rec.MERCHANT_REFERENCE
1299 ,p_ap_invoice_lines_all_rec.MERCHANT_TAX_REG_NUMBER
1300 ,p_ap_invoice_lines_all_rec.MERCHANT_TAXPAYER_ID
1301 ,p_ap_invoice_lines_all_rec.COUNTRY_OF_SUPPLY
1302 ,p_ap_invoice_lines_all_rec.CREDIT_CARD_TRX_ID
1303 ,p_ap_invoice_lines_all_rec.COMPANY_PREPAID_INVOICE_ID
1304 ,p_ap_invoice_lines_all_rec.CC_REVERSAL_FLAG
1305 ,p_ap_invoice_lines_all_rec.CREATION_DATE
1306 ,p_ap_invoice_lines_all_rec.CREATED_BY
1307 ,p_ap_invoice_lines_all_rec.LAST_UPDATED_BY
1308 ,p_ap_invoice_lines_all_rec.LAST_UPDATE_DATE
1309 ,p_ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN
1310 ,p_ap_invoice_lines_all_rec.PROGRAM_APPLICATION_ID
1311 ,p_ap_invoice_lines_all_rec.PROGRAM_ID
1312 ,p_ap_invoice_lines_all_rec.PROGRAM_UPDATE_DATE
1313 ,p_ap_invoice_lines_all_rec.REQUEST_ID
1314 ,p_ap_invoice_lines_all_rec.ATTRIBUTE_CATEGORY
1315 ,p_ap_invoice_lines_all_rec.ATTRIBUTE1
1316 ,p_ap_invoice_lines_all_rec.ATTRIBUTE2
1317 ,p_ap_invoice_lines_all_rec.ATTRIBUTE3
1318 ,p_ap_invoice_lines_all_rec.ATTRIBUTE4
1319 ,p_ap_invoice_lines_all_rec.ATTRIBUTE5
1320 ,p_ap_invoice_lines_all_rec.ATTRIBUTE6
1321 ,p_ap_invoice_lines_all_rec.ATTRIBUTE7
1322 ,p_ap_invoice_lines_all_rec.ATTRIBUTE8
1323 ,p_ap_invoice_lines_all_rec.ATTRIBUTE9
1324 ,p_ap_invoice_lines_all_rec.ATTRIBUTE10
1325 ,p_ap_invoice_lines_all_rec.ATTRIBUTE11
1326 ,p_ap_invoice_lines_all_rec.ATTRIBUTE12
1327 ,p_ap_invoice_lines_all_rec.ATTRIBUTE13
1328 ,p_ap_invoice_lines_all_rec.ATTRIBUTE14
1329 ,p_ap_invoice_lines_all_rec.ATTRIBUTE15
1330 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE_CATEGORY
1331 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE1
1332 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE2
1333 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE3
1334 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE4
1335 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE5
1336 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE6
1337 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE7
1338 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE8
1339 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE9
1340 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE10
1341 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE11
1342 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE12
1343 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE13
1344 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE14
1345 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE15
1346 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE16
1347 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE17
1348 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE18
1349 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE19
1350 ,p_ap_invoice_lines_all_rec.GLOBAL_ATTRIBUTE20
1351 ,p_ap_invoice_lines_all_rec.LINE_SELECTED_FOR_APPL_FLAG
1352 ,p_ap_invoice_lines_all_rec.PREPAY_APPL_REQUEST_ID
1353 ,p_ap_invoice_lines_all_rec.APPLICATION_ID
1354 ,p_ap_invoice_lines_all_rec.PRODUCT_TABLE
1355 ,p_ap_invoice_lines_all_rec.REFERENCE_KEY1
1356 ,p_ap_invoice_lines_all_rec.REFERENCE_KEY2
1357 ,p_ap_invoice_lines_all_rec.REFERENCE_KEY3
1358 ,p_ap_invoice_lines_all_rec.REFERENCE_KEY4
1359 ,p_ap_invoice_lines_all_rec.REFERENCE_KEY5
1360 ,p_ap_invoice_lines_all_rec.PURCHASING_CATEGORY_ID
1361 ,p_ap_invoice_lines_all_rec.COST_FACTOR_ID
1362 ,p_ap_invoice_lines_all_rec.CONTROL_AMOUNT
1363 ,p_ap_invoice_lines_all_rec.ASSESSABLE_VALUE
1364 ,p_ap_invoice_lines_all_rec.TOTAL_REC_TAX_AMOUNT
1365 ,p_ap_invoice_lines_all_rec.TOTAL_NREC_TAX_AMOUNT
1366 ,p_ap_invoice_lines_all_rec.TOTAL_REC_TAX_AMT_FUNCL_CURR
1367 ,p_ap_invoice_lines_all_rec.TOTAL_NREC_TAX_AMT_FUNCL_CURR
1368 ,p_ap_invoice_lines_all_rec.INCLUDED_TAX_AMOUNT
1369 ,p_ap_invoice_lines_all_rec.PRIMARY_INTENDED_USE
1370 ,p_ap_invoice_lines_all_rec.TAX_ALREADY_CALCULATED_FLAG
1371 ,p_ap_invoice_lines_all_rec.SHIP_TO_LOCATION_ID
1372 ,p_ap_invoice_lines_all_rec.PRODUCT_TYPE
1373 ,p_ap_invoice_lines_all_rec.PRODUCT_CATEGORY
1374 ,p_ap_invoice_lines_all_rec.PRODUCT_FISC_CLASSIFICATION
1375 ,p_ap_invoice_lines_all_rec.USER_DEFINED_FISC_CLASS
1376 ,p_ap_invoice_lines_all_rec.TRX_BUSINESS_CATEGORY
1377 ,p_ap_invoice_lines_all_rec.SUMMARY_TAX_LINE_ID
1378 ,p_ap_invoice_lines_all_rec.TAX_REGIME_CODE
1379 ,p_ap_invoice_lines_all_rec.TAX
1380 ,p_ap_invoice_lines_all_rec.TAX_JURISDICTION_CODE
1381 ,p_ap_invoice_lines_all_rec.TAX_STATUS_CODE
1382 ,p_ap_invoice_lines_all_rec.TAX_RATE_ID
1383 ,p_ap_invoice_lines_all_rec.TAX_RATE_CODE
1384 ,p_ap_invoice_lines_all_rec.TAX_RATE
1385 ,p_ap_invoice_lines_all_rec.TAX_CODE_ID
1386 ,p_ap_invoice_lines_all_rec.HISTORICAL_FLAG
1387 ,p_ap_invoice_lines_all_rec.TAX_CLASSIFICATION_CODE
1388 ,p_ap_invoice_lines_all_rec.SOURCE_APPLICATION_ID
1389 ,p_ap_invoice_lines_all_rec.SOURCE_EVENT_CLASS_CODE
1390 ,p_ap_invoice_lines_all_rec.SOURCE_ENTITY_CODE
1391 ,p_ap_invoice_lines_all_rec.SOURCE_TRX_ID
1392 ,p_ap_invoice_lines_all_rec.SOURCE_LINE_ID
1393 ,p_ap_invoice_lines_all_rec.SOURCE_TRX_LEVEL_TYPE
1394 ,p_ap_invoice_lines_all_rec.RETAINED_AMOUNT
1395 ,p_ap_invoice_lines_all_rec.RETAINED_AMOUNT_REMAINING
1396 ,p_ap_invoice_lines_all_rec.RETAINED_INVOICE_ID
1397 ,p_ap_invoice_lines_all_rec.RETAINED_LINE_NUMBER
1398 ,p_ap_invoice_lines_all_rec.LINE_SELECTED_FOR_RELEASE_FLAG
1399 ,p_ap_invoice_lines_all_rec.LINE_OWNER_ROLE
1400 ,p_ap_invoice_lines_all_rec.DISPUTABLE_FLAG
1401 ,p_ap_invoice_lines_all_rec.RCV_SHIPMENT_LINE_ID
1402 ,p_ap_invoice_lines_all_rec.AIL_INVOICE_ID
1403 ,p_ap_invoice_lines_all_rec.AIL_DISTRIBUTION_LINE_NUMBER
1404 ,p_ap_invoice_lines_all_rec.AIL_INVOICE_ID2
1405 ,p_ap_invoice_lines_all_rec.AIL_DISTRIBUTION_LINE_NUMBER2
1406 ,p_ap_invoice_lines_all_rec.AIL_INVOICE_ID3
1407 ,p_ap_invoice_lines_all_rec.AIL_DISTRIBUTION_LINE_NUMBER3
1408 ,p_ap_invoice_lines_all_rec.AIL_INVOICE_ID4
1409 ,p_ap_invoice_lines_all_rec.PAY_AWT_GROUP_ID
1410 );
1411
1412 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '|| l_api_name || '()-');
1413 EXCEPTION
1414 WHEN OTHERS THEN
1415 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name
1416 , G_PKG_NAME || ': '|| l_api_name || '. Other_Exception '
1417 || SQLCODE || ':' || SQLERRM);
1418 RAISE;
1419 END Insert_ap_inv_line;
1420
1421
1422
1423 PROCEDURE Insert_ap_inv_dst_line(
1424 p_ap_invoice_dist_all_rec IN ap_invoice_distributions_all%ROWTYPE
1425 )IS
1426 l_api_name CONSTANT VARCHAR2(50) := 'Insert_ap_inv_dst_line()';
1427 BEGIN
1428 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
1429
1430 INSERT INTO ap_invoice_distributions_all
1431 (ACCOUNTING_DATE
1432 ,ACCRUAL_POSTED_FLAG
1433 ,ASSETS_ADDITION_FLAG
1434 ,ASSETS_TRACKING_FLAG
1435 ,CASH_POSTED_FLAG
1436 ,DISTRIBUTION_LINE_NUMBER
1437 ,DIST_CODE_COMBINATION_ID
1438 ,INVOICE_ID
1439 ,LAST_UPDATED_BY
1440 ,LAST_UPDATE_DATE
1441 ,LINE_TYPE_LOOKUP_CODE
1442 ,PERIOD_NAME
1443 ,SET_OF_BOOKS_ID
1444 ,ACCTS_PAY_CODE_COMBINATION_ID
1445 ,AMOUNT
1446 ,BASE_AMOUNT
1447 ,BASE_INVOICE_PRICE_VARIANCE
1448 ,BATCH_ID
1449 ,CREATED_BY
1450 ,CREATION_DATE
1451 ,DESCRIPTION
1452 ,EXCHANGE_RATE_VARIANCE
1453 ,FINAL_MATCH_FLAG
1454 ,INCOME_TAX_REGION
1455 ,INVOICE_PRICE_VARIANCE
1456 ,LAST_UPDATE_LOGIN
1457 ,MATCH_STATUS_FLAG
1458 ,POSTED_FLAG
1459 ,PO_DISTRIBUTION_ID
1460 ,PROGRAM_APPLICATION_ID
1461 ,PROGRAM_ID
1462 ,PROGRAM_UPDATE_DATE
1463 ,QUANTITY_INVOICED
1464 ,RATE_VAR_CODE_COMBINATION_ID
1465 ,REQUEST_ID
1466 ,REVERSAL_FLAG
1467 ,TYPE_1099
1468 ,UNIT_PRICE
1469 ,AMOUNT_ENCUMBERED
1470 ,BASE_AMOUNT_ENCUMBERED
1471 ,ENCUMBERED_FLAG
1472 ,EXCHANGE_DATE
1473 ,EXCHANGE_RATE
1474 ,EXCHANGE_RATE_TYPE
1475 ,PRICE_ADJUSTMENT_FLAG
1476 ,PRICE_VAR_CODE_COMBINATION_ID
1477 ,QUANTITY_UNENCUMBERED
1478 ,STAT_AMOUNT
1479 ,AMOUNT_TO_POST
1480 ,ATTRIBUTE1
1481 ,ATTRIBUTE10
1482 ,ATTRIBUTE11
1483 ,ATTRIBUTE12
1484 ,ATTRIBUTE13
1485 ,ATTRIBUTE14
1486 ,ATTRIBUTE15
1487 ,ATTRIBUTE2
1488 ,ATTRIBUTE3
1489 ,ATTRIBUTE4
1490 ,ATTRIBUTE5
1491 ,ATTRIBUTE6
1492 ,ATTRIBUTE7
1493 ,ATTRIBUTE8
1494 ,ATTRIBUTE9
1495 ,ATTRIBUTE_CATEGORY
1496 ,BASE_AMOUNT_TO_POST
1497 ,CASH_JE_BATCH_ID
1498 ,EXPENDITURE_ITEM_DATE
1499 ,EXPENDITURE_ORGANIZATION_ID
1500 ,EXPENDITURE_TYPE
1501 ,JE_BATCH_ID
1502 ,PARENT_INVOICE_ID
1503 ,PA_ADDITION_FLAG
1504 ,PA_QUANTITY
1505 ,POSTED_AMOUNT
1506 ,POSTED_BASE_AMOUNT
1507 ,PREPAY_AMOUNT_REMAINING
1508 ,PROJECT_ACCOUNTING_CONTEXT
1509 ,PROJECT_ID
1510 ,TASK_ID
1511 ,USSGL_TRANSACTION_CODE
1512 ,USSGL_TRX_CODE_CONTEXT
1513 ,EARLIEST_SETTLEMENT_DATE
1514 ,REQ_DISTRIBUTION_ID
1515 ,QUANTITY_VARIANCE
1516 ,BASE_QUANTITY_VARIANCE
1517 ,PACKET_ID
1518 ,AWT_FLAG
1519 ,AWT_GROUP_ID
1520 ,AWT_TAX_RATE_ID
1521 ,AWT_GROSS_AMOUNT
1522 ,AWT_INVOICE_ID
1523 ,AWT_ORIGIN_GROUP_ID
1524 ,REFERENCE_1
1525 ,REFERENCE_2
1526 ,ORG_ID
1527 ,OTHER_INVOICE_ID
1528 ,AWT_INVOICE_PAYMENT_ID
1529 ,GLOBAL_ATTRIBUTE_CATEGORY
1530 ,GLOBAL_ATTRIBUTE1
1531 ,GLOBAL_ATTRIBUTE2
1532 ,GLOBAL_ATTRIBUTE3
1533 ,GLOBAL_ATTRIBUTE4
1534 ,GLOBAL_ATTRIBUTE5
1535 ,GLOBAL_ATTRIBUTE6
1536 ,GLOBAL_ATTRIBUTE7
1537 ,GLOBAL_ATTRIBUTE8
1538 ,GLOBAL_ATTRIBUTE9
1539 ,GLOBAL_ATTRIBUTE10
1540 ,GLOBAL_ATTRIBUTE11
1541 ,GLOBAL_ATTRIBUTE12
1542 ,GLOBAL_ATTRIBUTE13
1543 ,GLOBAL_ATTRIBUTE14
1544 ,GLOBAL_ATTRIBUTE15
1545 ,GLOBAL_ATTRIBUTE16
1546 ,GLOBAL_ATTRIBUTE17
1547 ,GLOBAL_ATTRIBUTE18
1548 ,GLOBAL_ATTRIBUTE19
1549 ,GLOBAL_ATTRIBUTE20
1550 ,LINE_GROUP_NUMBER
1551 ,RECEIPT_VERIFIED_FLAG
1552 ,RECEIPT_REQUIRED_FLAG
1553 ,RECEIPT_MISSING_FLAG
1554 ,JUSTIFICATION
1555 ,EXPENSE_GROUP
1556 ,START_EXPENSE_DATE
1557 ,END_EXPENSE_DATE
1558 ,RECEIPT_CURRENCY_CODE
1559 ,RECEIPT_CONVERSION_RATE
1560 ,RECEIPT_CURRENCY_AMOUNT
1561 ,DAILY_AMOUNT
1562 ,WEB_PARAMETER_ID
1563 ,ADJUSTMENT_REASON
1564 ,AWARD_ID
1565 ,MRC_ACCRUAL_POSTED_FLAG
1566 ,MRC_CASH_POSTED_FLAG
1567 ,MRC_DIST_CODE_COMBINATION_ID
1568 ,MRC_AMOUNT
1569 ,MRC_BASE_AMOUNT
1570 ,MRC_BASE_INV_PRICE_VARIANCE
1571 ,MRC_EXCHANGE_RATE_VARIANCE
1572 ,MRC_POSTED_FLAG
1573 ,MRC_PROGRAM_APPLICATION_ID
1574 ,MRC_PROGRAM_ID
1575 ,MRC_PROGRAM_UPDATE_DATE
1576 ,MRC_RATE_VAR_CCID
1577 ,MRC_REQUEST_ID
1578 ,MRC_EXCHANGE_DATE
1579 ,MRC_EXCHANGE_RATE
1580 ,MRC_EXCHANGE_RATE_TYPE
1581 ,MRC_AMOUNT_TO_POST
1582 ,MRC_BASE_AMOUNT_TO_POST
1583 ,MRC_CASH_JE_BATCH_ID
1584 ,MRC_JE_BATCH_ID
1585 ,MRC_POSTED_AMOUNT
1586 ,MRC_POSTED_BASE_AMOUNT
1587 ,MRC_RECEIPT_CONVERSION_RATE
1588 ,CREDIT_CARD_TRX_ID
1589 ,DIST_MATCH_TYPE
1590 ,RCV_TRANSACTION_ID
1591 ,INVOICE_DISTRIBUTION_ID
1592 ,PARENT_REVERSAL_ID
1593 ,TAX_RECOVERABLE_FLAG
1594 ,PA_CC_AR_INVOICE_ID
1595 ,PA_CC_AR_INVOICE_LINE_NUM
1596 ,PA_CC_PROCESSED_CODE
1597 ,MERCHANT_DOCUMENT_NUMBER
1598 ,MERCHANT_NAME
1599 ,MERCHANT_REFERENCE
1600 ,MERCHANT_TAX_REG_NUMBER
1601 ,MERCHANT_TAXPAYER_ID
1602 ,COUNTRY_OF_SUPPLY
1603 ,MATCHED_UOM_LOOKUP_CODE
1604 ,GMS_BURDENABLE_RAW_COST
1605 ,ACCOUNTING_EVENT_ID
1606 ,PREPAY_DISTRIBUTION_ID
1607 ,UPGRADE_POSTED_AMT
1608 ,UPGRADE_BASE_POSTED_AMT
1609 ,INVENTORY_TRANSFER_STATUS
1610 ,COMPANY_PREPAID_INVOICE_ID
1611 ,CC_REVERSAL_FLAG
1612 ,AWT_WITHHELD_AMT
1613 ,INVOICE_INCLUDES_PREPAY_FLAG
1614 ,PRICE_CORRECT_INV_ID
1615 ,PRICE_CORRECT_QTY
1616 ,PA_CMT_XFACE_FLAG
1617 ,CANCELLATION_FLAG
1618 ,INVOICE_LINE_NUMBER
1619 ,CORRECTED_INVOICE_DIST_ID
1620 ,ROUNDING_AMT
1621 ,CHARGE_APPLICABLE_TO_DIST_ID
1622 ,CORRECTED_QUANTITY
1623 ,RELATED_ID
1624 ,ASSET_BOOK_TYPE_CODE
1625 ,ASSET_CATEGORY_ID
1626 ,DISTRIBUTION_CLASS
1627 ,FINAL_PAYMENT_ROUNDING
1628 ,FINAL_APPLICATION_ROUNDING
1629 ,AMOUNT_AT_PREPAY_XRATE
1630 ,CASH_BASIS_FINAL_APP_ROUNDING
1631 ,AMOUNT_AT_PREPAY_PAY_XRATE
1632 ,INTENDED_USE
1633 ,DETAIL_TAX_DIST_ID
1634 ,REC_NREC_RATE
1635 ,RECOVERY_RATE_ID
1636 ,RECOVERY_RATE_NAME
1637 ,RECOVERY_TYPE_CODE
1638 ,RECOVERY_RATE_CODE
1639 ,WITHHOLDING_TAX_CODE_ID
1640 ,TAX_ALREADY_DISTRIBUTED_FLAG
1641 ,SUMMARY_TAX_LINE_ID
1642 ,TAXABLE_AMOUNT
1643 ,TAXABLE_BASE_AMOUNT
1644 ,EXTRA_PO_ERV
1645 ,PREPAY_TAX_DIFF_AMOUNT
1646 ,TAX_CODE_ID
1647 ,VAT_CODE
1648 ,AMOUNT_INCLUDES_TAX_FLAG
1649 ,TAX_CALCULATED_FLAG
1650 ,TAX_RECOVERY_RATE
1651 ,TAX_RECOVERY_OVERRIDE_FLAG
1652 ,TAX_CODE_OVERRIDE_FLAG
1653 ,TOTAL_DIST_AMOUNT
1654 ,TOTAL_DIST_BASE_AMOUNT
1655 ,PREPAY_TAX_PARENT_ID
1656 ,CANCELLED_FLAG
1657 ,OLD_DISTRIBUTION_ID
1658 ,OLD_DIST_LINE_NUMBER
1659 ,AMOUNT_VARIANCE
1660 ,BASE_AMOUNT_VARIANCE
1661 ,HISTORICAL_FLAG
1662 ,RCV_CHARGE_ADDITION_FLAG
1663 ,AWT_RELATED_ID
1664 ,RELATED_RETAINAGE_DIST_ID
1665 ,RETAINED_AMOUNT_REMAINING
1666 ,BC_EVENT_ID
1667 ,RETAINED_INVOICE_DIST_ID
1668 ,FINAL_RELEASE_ROUNDING
1669 ,FULLY_PAID_ACCTD_FLAG
1670 ,ROOT_DISTRIBUTION_ID
1671 ,XINV_PARENT_REVERSAL_ID
1672 ,RECURRING_PAYMENT_ID
1673 ,RELEASE_INV_DIST_DERIVED_FROM
1674 ,PAY_AWT_GROUP_ID
1675 )
1676 VALUES
1677 (p_ap_invoice_dist_all_rec.ACCOUNTING_DATE
1678 ,p_ap_invoice_dist_all_rec.ACCRUAL_POSTED_FLAG
1679 ,p_ap_invoice_dist_all_rec.ASSETS_ADDITION_FLAG
1680 ,p_ap_invoice_dist_all_rec.ASSETS_TRACKING_FLAG
1681 ,p_ap_invoice_dist_all_rec.CASH_POSTED_FLAG
1682 ,p_ap_invoice_dist_all_rec.DISTRIBUTION_LINE_NUMBER
1683 ,p_ap_invoice_dist_all_rec.DIST_CODE_COMBINATION_ID
1684 ,p_ap_invoice_dist_all_rec.INVOICE_ID
1685 ,p_ap_invoice_dist_all_rec.LAST_UPDATED_BY
1686 ,p_ap_invoice_dist_all_rec.LAST_UPDATE_DATE
1687 ,p_ap_invoice_dist_all_rec.LINE_TYPE_LOOKUP_CODE
1688 ,p_ap_invoice_dist_all_rec.PERIOD_NAME
1689 ,p_ap_invoice_dist_all_rec.SET_OF_BOOKS_ID
1690 ,p_ap_invoice_dist_all_rec.ACCTS_PAY_CODE_COMBINATION_ID
1691 ,p_ap_invoice_dist_all_rec.AMOUNT
1692 ,p_ap_invoice_dist_all_rec.BASE_AMOUNT
1693 ,p_ap_invoice_dist_all_rec.BASE_INVOICE_PRICE_VARIANCE
1694 ,p_ap_invoice_dist_all_rec.BATCH_ID
1695 ,p_ap_invoice_dist_all_rec.CREATED_BY
1696 ,p_ap_invoice_dist_all_rec.CREATION_DATE
1697 ,p_ap_invoice_dist_all_rec.DESCRIPTION
1698 ,p_ap_invoice_dist_all_rec.EXCHANGE_RATE_VARIANCE
1699 ,p_ap_invoice_dist_all_rec.FINAL_MATCH_FLAG
1700 ,p_ap_invoice_dist_all_rec.INCOME_TAX_REGION
1701 ,p_ap_invoice_dist_all_rec.INVOICE_PRICE_VARIANCE
1702 ,p_ap_invoice_dist_all_rec.LAST_UPDATE_LOGIN
1703 ,p_ap_invoice_dist_all_rec.MATCH_STATUS_FLAG
1704 ,p_ap_invoice_dist_all_rec.POSTED_FLAG
1705 ,p_ap_invoice_dist_all_rec.PO_DISTRIBUTION_ID
1706 ,p_ap_invoice_dist_all_rec.PROGRAM_APPLICATION_ID
1707 ,p_ap_invoice_dist_all_rec.PROGRAM_ID
1708 ,p_ap_invoice_dist_all_rec.PROGRAM_UPDATE_DATE
1709 ,p_ap_invoice_dist_all_rec.QUANTITY_INVOICED
1710 ,p_ap_invoice_dist_all_rec.RATE_VAR_CODE_COMBINATION_ID
1711 ,p_ap_invoice_dist_all_rec.REQUEST_ID
1712 ,p_ap_invoice_dist_all_rec.REVERSAL_FLAG
1713 ,p_ap_invoice_dist_all_rec.TYPE_1099
1714 ,p_ap_invoice_dist_all_rec.UNIT_PRICE
1715 ,p_ap_invoice_dist_all_rec.AMOUNT_ENCUMBERED
1716 ,p_ap_invoice_dist_all_rec.BASE_AMOUNT_ENCUMBERED
1717 ,p_ap_invoice_dist_all_rec.ENCUMBERED_FLAG
1718 ,p_ap_invoice_dist_all_rec.EXCHANGE_DATE
1719 ,p_ap_invoice_dist_all_rec.EXCHANGE_RATE
1720 ,p_ap_invoice_dist_all_rec.EXCHANGE_RATE_TYPE
1721 ,p_ap_invoice_dist_all_rec.PRICE_ADJUSTMENT_FLAG
1722 ,p_ap_invoice_dist_all_rec.PRICE_VAR_CODE_COMBINATION_ID
1723 ,p_ap_invoice_dist_all_rec.QUANTITY_UNENCUMBERED
1724 ,p_ap_invoice_dist_all_rec.STAT_AMOUNT
1725 ,p_ap_invoice_dist_all_rec.AMOUNT_TO_POST
1726 ,p_ap_invoice_dist_all_rec.ATTRIBUTE1
1727 ,p_ap_invoice_dist_all_rec.ATTRIBUTE10
1728 ,p_ap_invoice_dist_all_rec.ATTRIBUTE11
1729 ,p_ap_invoice_dist_all_rec.ATTRIBUTE12
1730 ,p_ap_invoice_dist_all_rec.ATTRIBUTE13
1731 ,p_ap_invoice_dist_all_rec.ATTRIBUTE14
1732 ,p_ap_invoice_dist_all_rec.ATTRIBUTE15
1733 ,p_ap_invoice_dist_all_rec.ATTRIBUTE2
1734 ,p_ap_invoice_dist_all_rec.ATTRIBUTE3
1735 ,p_ap_invoice_dist_all_rec.ATTRIBUTE4
1736 ,p_ap_invoice_dist_all_rec.ATTRIBUTE5
1737 ,p_ap_invoice_dist_all_rec.ATTRIBUTE6
1738 ,p_ap_invoice_dist_all_rec.ATTRIBUTE7
1739 ,p_ap_invoice_dist_all_rec.ATTRIBUTE8
1740 ,p_ap_invoice_dist_all_rec.ATTRIBUTE9
1741 ,p_ap_invoice_dist_all_rec.ATTRIBUTE_CATEGORY
1742 ,p_ap_invoice_dist_all_rec.BASE_AMOUNT_TO_POST
1743 ,p_ap_invoice_dist_all_rec.CASH_JE_BATCH_ID
1744 ,p_ap_invoice_dist_all_rec.EXPENDITURE_ITEM_DATE
1745 ,p_ap_invoice_dist_all_rec.EXPENDITURE_ORGANIZATION_ID
1746 ,p_ap_invoice_dist_all_rec.EXPENDITURE_TYPE
1747 ,p_ap_invoice_dist_all_rec.JE_BATCH_ID
1748 ,p_ap_invoice_dist_all_rec.PARENT_INVOICE_ID
1749 ,p_ap_invoice_dist_all_rec.PA_ADDITION_FLAG
1750 ,p_ap_invoice_dist_all_rec.PA_QUANTITY
1751 ,p_ap_invoice_dist_all_rec.POSTED_AMOUNT
1752 ,p_ap_invoice_dist_all_rec.POSTED_BASE_AMOUNT
1753 ,p_ap_invoice_dist_all_rec.PREPAY_AMOUNT_REMAINING
1754 ,p_ap_invoice_dist_all_rec.PROJECT_ACCOUNTING_CONTEXT
1755 ,p_ap_invoice_dist_all_rec.PROJECT_ID
1756 ,p_ap_invoice_dist_all_rec.TASK_ID
1757 ,p_ap_invoice_dist_all_rec.USSGL_TRANSACTION_CODE
1758 ,p_ap_invoice_dist_all_rec.USSGL_TRX_CODE_CONTEXT
1759 ,p_ap_invoice_dist_all_rec.EARLIEST_SETTLEMENT_DATE
1760 ,p_ap_invoice_dist_all_rec.REQ_DISTRIBUTION_ID
1761 ,p_ap_invoice_dist_all_rec.QUANTITY_VARIANCE
1762 ,p_ap_invoice_dist_all_rec.BASE_QUANTITY_VARIANCE
1763 ,p_ap_invoice_dist_all_rec.PACKET_ID
1764 ,p_ap_invoice_dist_all_rec.AWT_FLAG
1765 ,p_ap_invoice_dist_all_rec.AWT_GROUP_ID
1766 ,p_ap_invoice_dist_all_rec.AWT_TAX_RATE_ID
1767 ,p_ap_invoice_dist_all_rec.AWT_GROSS_AMOUNT
1768 ,p_ap_invoice_dist_all_rec.AWT_INVOICE_ID
1769 ,p_ap_invoice_dist_all_rec.AWT_ORIGIN_GROUP_ID
1770 ,p_ap_invoice_dist_all_rec.REFERENCE_1
1771 ,p_ap_invoice_dist_all_rec.REFERENCE_2
1772 ,p_ap_invoice_dist_all_rec.ORG_ID
1773 ,p_ap_invoice_dist_all_rec.OTHER_INVOICE_ID
1774 ,p_ap_invoice_dist_all_rec.AWT_INVOICE_PAYMENT_ID
1775 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE_CATEGORY
1776 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE1
1777 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE2
1778 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE3
1779 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE4
1780 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE5
1781 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE6
1782 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE7
1783 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE8
1784 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE9
1785 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE10
1786 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE11
1787 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE12
1788 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE13
1789 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE14
1790 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE15
1791 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE16
1792 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE17
1793 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE18
1794 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE19
1795 ,p_ap_invoice_dist_all_rec.GLOBAL_ATTRIBUTE20
1796 ,p_ap_invoice_dist_all_rec.LINE_GROUP_NUMBER
1797 ,p_ap_invoice_dist_all_rec.RECEIPT_VERIFIED_FLAG
1798 ,p_ap_invoice_dist_all_rec.RECEIPT_REQUIRED_FLAG
1799 ,p_ap_invoice_dist_all_rec.RECEIPT_MISSING_FLAG
1800 ,p_ap_invoice_dist_all_rec.JUSTIFICATION
1801 ,p_ap_invoice_dist_all_rec.EXPENSE_GROUP
1802 ,p_ap_invoice_dist_all_rec.START_EXPENSE_DATE
1803 ,p_ap_invoice_dist_all_rec.END_EXPENSE_DATE
1804 ,p_ap_invoice_dist_all_rec.RECEIPT_CURRENCY_CODE
1805 ,p_ap_invoice_dist_all_rec.RECEIPT_CONVERSION_RATE
1806 ,p_ap_invoice_dist_all_rec.RECEIPT_CURRENCY_AMOUNT
1807 ,p_ap_invoice_dist_all_rec.DAILY_AMOUNT
1808 ,p_ap_invoice_dist_all_rec.WEB_PARAMETER_ID
1809 ,p_ap_invoice_dist_all_rec.ADJUSTMENT_REASON
1810 ,p_ap_invoice_dist_all_rec.AWARD_ID
1811 ,p_ap_invoice_dist_all_rec.MRC_ACCRUAL_POSTED_FLAG
1812 ,p_ap_invoice_dist_all_rec.MRC_CASH_POSTED_FLAG
1813 ,p_ap_invoice_dist_all_rec.MRC_DIST_CODE_COMBINATION_ID
1814 ,p_ap_invoice_dist_all_rec.MRC_AMOUNT
1815 ,p_ap_invoice_dist_all_rec.MRC_BASE_AMOUNT
1816 ,p_ap_invoice_dist_all_rec.MRC_BASE_INV_PRICE_VARIANCE
1817 ,p_ap_invoice_dist_all_rec.MRC_EXCHANGE_RATE_VARIANCE
1818 ,p_ap_invoice_dist_all_rec.MRC_POSTED_FLAG
1819 ,p_ap_invoice_dist_all_rec.MRC_PROGRAM_APPLICATION_ID
1820 ,p_ap_invoice_dist_all_rec.MRC_PROGRAM_ID
1821 ,p_ap_invoice_dist_all_rec.MRC_PROGRAM_UPDATE_DATE
1822 ,p_ap_invoice_dist_all_rec.MRC_RATE_VAR_CCID
1823 ,p_ap_invoice_dist_all_rec.MRC_REQUEST_ID
1824 ,p_ap_invoice_dist_all_rec.MRC_EXCHANGE_DATE
1825 ,p_ap_invoice_dist_all_rec.MRC_EXCHANGE_RATE
1826 ,p_ap_invoice_dist_all_rec.MRC_EXCHANGE_RATE_TYPE
1827 ,p_ap_invoice_dist_all_rec.MRC_AMOUNT_TO_POST
1828 ,p_ap_invoice_dist_all_rec.MRC_BASE_AMOUNT_TO_POST
1829 ,p_ap_invoice_dist_all_rec.MRC_CASH_JE_BATCH_ID
1830 ,p_ap_invoice_dist_all_rec.MRC_JE_BATCH_ID
1831 ,p_ap_invoice_dist_all_rec.MRC_POSTED_AMOUNT
1832 ,p_ap_invoice_dist_all_rec.MRC_POSTED_BASE_AMOUNT
1833 ,p_ap_invoice_dist_all_rec.MRC_RECEIPT_CONVERSION_RATE
1834 ,p_ap_invoice_dist_all_rec.CREDIT_CARD_TRX_ID
1835 ,p_ap_invoice_dist_all_rec.DIST_MATCH_TYPE
1836 ,p_ap_invoice_dist_all_rec.RCV_TRANSACTION_ID
1837 ,p_ap_invoice_dist_all_rec.INVOICE_DISTRIBUTION_ID
1838 ,p_ap_invoice_dist_all_rec.PARENT_REVERSAL_ID
1839 ,p_ap_invoice_dist_all_rec.TAX_RECOVERABLE_FLAG
1840 ,p_ap_invoice_dist_all_rec.PA_CC_AR_INVOICE_ID
1841 ,p_ap_invoice_dist_all_rec.PA_CC_AR_INVOICE_LINE_NUM
1842 ,p_ap_invoice_dist_all_rec.PA_CC_PROCESSED_CODE
1843 ,p_ap_invoice_dist_all_rec.MERCHANT_DOCUMENT_NUMBER
1844 ,p_ap_invoice_dist_all_rec.MERCHANT_NAME
1845 ,p_ap_invoice_dist_all_rec.MERCHANT_REFERENCE
1846 ,p_ap_invoice_dist_all_rec.MERCHANT_TAX_REG_NUMBER
1847 ,p_ap_invoice_dist_all_rec.MERCHANT_TAXPAYER_ID
1848 ,p_ap_invoice_dist_all_rec.COUNTRY_OF_SUPPLY
1849 ,p_ap_invoice_dist_all_rec.MATCHED_UOM_LOOKUP_CODE
1850 ,p_ap_invoice_dist_all_rec.GMS_BURDENABLE_RAW_COST
1851 ,p_ap_invoice_dist_all_rec.ACCOUNTING_EVENT_ID
1852 ,p_ap_invoice_dist_all_rec.PREPAY_DISTRIBUTION_ID
1853 ,p_ap_invoice_dist_all_rec.UPGRADE_POSTED_AMT
1854 ,p_ap_invoice_dist_all_rec.UPGRADE_BASE_POSTED_AMT
1855 ,p_ap_invoice_dist_all_rec.INVENTORY_TRANSFER_STATUS
1856 ,p_ap_invoice_dist_all_rec.COMPANY_PREPAID_INVOICE_ID
1857 ,p_ap_invoice_dist_all_rec.CC_REVERSAL_FLAG
1858 ,p_ap_invoice_dist_all_rec.AWT_WITHHELD_AMT
1859 ,p_ap_invoice_dist_all_rec.INVOICE_INCLUDES_PREPAY_FLAG
1860 ,p_ap_invoice_dist_all_rec.PRICE_CORRECT_INV_ID
1861 ,p_ap_invoice_dist_all_rec.PRICE_CORRECT_QTY
1862 ,p_ap_invoice_dist_all_rec.PA_CMT_XFACE_FLAG
1863 ,p_ap_invoice_dist_all_rec.CANCELLATION_FLAG
1864 ,p_ap_invoice_dist_all_rec.INVOICE_LINE_NUMBER
1865 ,p_ap_invoice_dist_all_rec.CORRECTED_INVOICE_DIST_ID
1866 ,p_ap_invoice_dist_all_rec.ROUNDING_AMT
1867 ,p_ap_invoice_dist_all_rec.CHARGE_APPLICABLE_TO_DIST_ID
1868 ,p_ap_invoice_dist_all_rec.CORRECTED_QUANTITY
1869 ,p_ap_invoice_dist_all_rec.RELATED_ID
1870 ,p_ap_invoice_dist_all_rec.ASSET_BOOK_TYPE_CODE
1871 ,p_ap_invoice_dist_all_rec.ASSET_CATEGORY_ID
1872 ,p_ap_invoice_dist_all_rec.DISTRIBUTION_CLASS
1873 ,p_ap_invoice_dist_all_rec.FINAL_PAYMENT_ROUNDING
1874 ,p_ap_invoice_dist_all_rec.FINAL_APPLICATION_ROUNDING
1875 ,p_ap_invoice_dist_all_rec.AMOUNT_AT_PREPAY_XRATE
1876 ,p_ap_invoice_dist_all_rec.CASH_BASIS_FINAL_APP_ROUNDING
1877 ,p_ap_invoice_dist_all_rec.AMOUNT_AT_PREPAY_PAY_XRATE
1878 ,p_ap_invoice_dist_all_rec.INTENDED_USE
1879 ,p_ap_invoice_dist_all_rec.DETAIL_TAX_DIST_ID
1880 ,p_ap_invoice_dist_all_rec.REC_NREC_RATE
1881 ,p_ap_invoice_dist_all_rec.RECOVERY_RATE_ID
1882 ,p_ap_invoice_dist_all_rec.RECOVERY_RATE_NAME
1883 ,p_ap_invoice_dist_all_rec.RECOVERY_TYPE_CODE
1884 ,p_ap_invoice_dist_all_rec.RECOVERY_RATE_CODE
1885 ,p_ap_invoice_dist_all_rec.WITHHOLDING_TAX_CODE_ID
1886 ,p_ap_invoice_dist_all_rec.TAX_ALREADY_DISTRIBUTED_FLAG
1887 ,p_ap_invoice_dist_all_rec.SUMMARY_TAX_LINE_ID
1888 ,p_ap_invoice_dist_all_rec.TAXABLE_AMOUNT
1889 ,p_ap_invoice_dist_all_rec.TAXABLE_BASE_AMOUNT
1890 ,p_ap_invoice_dist_all_rec.EXTRA_PO_ERV
1891 ,p_ap_invoice_dist_all_rec.PREPAY_TAX_DIFF_AMOUNT
1892 ,p_ap_invoice_dist_all_rec.TAX_CODE_ID
1893 ,p_ap_invoice_dist_all_rec.VAT_CODE
1894 ,p_ap_invoice_dist_all_rec.AMOUNT_INCLUDES_TAX_FLAG
1895 ,p_ap_invoice_dist_all_rec.TAX_CALCULATED_FLAG
1896 ,p_ap_invoice_dist_all_rec.TAX_RECOVERY_RATE
1897 ,p_ap_invoice_dist_all_rec.TAX_RECOVERY_OVERRIDE_FLAG
1898 ,p_ap_invoice_dist_all_rec.TAX_CODE_OVERRIDE_FLAG
1899 ,p_ap_invoice_dist_all_rec.TOTAL_DIST_AMOUNT
1900 ,p_ap_invoice_dist_all_rec.TOTAL_DIST_BASE_AMOUNT
1901 ,p_ap_invoice_dist_all_rec.PREPAY_TAX_PARENT_ID
1902 ,p_ap_invoice_dist_all_rec.CANCELLED_FLAG
1903 ,p_ap_invoice_dist_all_rec.OLD_DISTRIBUTION_ID
1904 ,p_ap_invoice_dist_all_rec.OLD_DIST_LINE_NUMBER
1905 ,p_ap_invoice_dist_all_rec.AMOUNT_VARIANCE
1906 ,p_ap_invoice_dist_all_rec.BASE_AMOUNT_VARIANCE
1907 ,p_ap_invoice_dist_all_rec.HISTORICAL_FLAG
1908 ,p_ap_invoice_dist_all_rec.RCV_CHARGE_ADDITION_FLAG
1909 ,p_ap_invoice_dist_all_rec.AWT_RELATED_ID
1910 ,p_ap_invoice_dist_all_rec.RELATED_RETAINAGE_DIST_ID
1911 ,p_ap_invoice_dist_all_rec.RETAINED_AMOUNT_REMAINING
1912 ,p_ap_invoice_dist_all_rec.BC_EVENT_ID
1913 ,p_ap_invoice_dist_all_rec.RETAINED_INVOICE_DIST_ID
1914 ,p_ap_invoice_dist_all_rec.FINAL_RELEASE_ROUNDING
1915 ,p_ap_invoice_dist_all_rec.FULLY_PAID_ACCTD_FLAG
1916 ,p_ap_invoice_dist_all_rec.ROOT_DISTRIBUTION_ID
1917 ,p_ap_invoice_dist_all_rec.XINV_PARENT_REVERSAL_ID
1918 ,p_ap_invoice_dist_all_rec.RECURRING_PAYMENT_ID
1919 ,p_ap_invoice_dist_all_rec.RELEASE_INV_DIST_DERIVED_FROM
1920 ,p_ap_invoice_dist_all_rec.PAY_AWT_GROUP_ID
1921 );
1922
1923 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '|| l_api_name || '()-');
1924 EXCEPTION
1925 WHEN OTHERS THEN
1926 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name
1927 , G_PKG_NAME || ': '|| l_api_name || '. Other_Exception '
1928 || SQLCODE || ':' || SQLERRM);
1929 RAISE;
1930 END Insert_ap_inv_dst_line;
1931
1932 /*
1933 REM +======================================================================+
1934 REM Created By : Chong
1935 REM Creation Date : Jun 5, 2012
1936 REM Bug Number/ER Name : Reverse charge service tax
1937 REM SubProgram Name : Populate_MTCH_ST_RVRS_Dist
1938 REM Type : Process API
1939 REM Purpose : Populate reverse charge service tax lines for AP/AR match invoice line
1940 REM
1941 REM
1942 REM TDD Reference :
1943 REM
1944 REM Assumptions :
1945 REM
1946 REM Parameter IN/OUT Type Required Description and Purpose
1947 REM ----------------------- ------ ------------------ ---------- ------------------------------------
1948 REM inv_id IN NUMBER Y
1949 REM pn_invoice_line_number IN NUMBER Y
1950 REM po_dist_id IN NUMBER Y
1951 REM qty_inv IN NUMBER Y
1952 REM p_shipment_header_id IN NUMBER Y
1953 REM p_packing_slip_num IN VARCHAR2 Y
1954 REM p_receipt_code IN VARCHAR2 Y
1955 REM p_rematch IN VARCHAR2 Y
1956 REM rcv_tran_id IN NUMBER Y
1957 REM v_dist_amount IN NUMBER Y
1958 REM v_org_id IN NUMBER Y
1959 REM p_project_id IN NUMBER Y
1960 REM p_task_id IN NUMBER Y
1961 REM p_expenditure_type IN VARCHAR2 Y
1962 REM p_expenditure_organization_id IN NUMBER Y
1963 REM p_expenditure_item_date IN NUMBER Y
1964 REM p_caid IN NUMBER Y
1965 REM errbuf OUT VARCHAR2 Y
1966 REM retcode OUT VARCHAR2 Y
1967 REM
1968 REM CALLED BY
1969 REM JAI_AP_MATCH_TAX_PKG.process_online
1970 REM +=====================================================================================================+
1971 */
1972 PROCEDURE Populate_ST_RVRS_Dist
1973 ( pn_invoice_id IN NUMBER
1974 , pn_line_number IN NUMBER DEFAULT NULL
1975 )
1976 IS
1977 ln_invoice_id NUMBER := pn_invoice_id;
1978 ln_line_number NUMBER := pn_line_number;
1979
1980 ln_distribution_line_number number; /* Bug 13617527 */
1981 CURSOR ap_invoice_lines_cur IS
1982 SELECT
1983 invoice_id
1984 , line_number
1985 , line_type_lookup_code
1986 , description
1987 , org_id
1988 , assets_tracking_flag
1989 , match_type
1990 , accounting_date
1991 , period_name
1992 , deferred_acctg_flag
1993 , def_acctg_start_date
1994 , def_acctg_end_date
1995 , def_acctg_number_of_periods
1996 , def_acctg_period_type
1997 , set_of_books_id
1998 , amount
1999 , wfapproval_status
2000 , creation_date
2001 , created_by
2002 , last_updated_by
2003 , last_update_date
2004 , last_update_login
2005 , project_id
2006 , task_id
2007 , expenditure_type
2008 , expenditure_item_date
2009 , expenditure_organization_id
2010 FROM
2011 ap_invoice_lines_all
2012 WHERE invoice_id = ln_invoice_id
2013 AND line_type_lookup_code = GV_CONSTANT_ITEM
2014 AND match_type = GV_NOT_MATCH_TYPE
2015 AND line_number = NVL (ln_line_number, line_number);
2016
2017 CURSOR jai_doc_taxes_sum_cur
2018 ( pn_invoice_id NUMBER
2019 , pn_parent_line_number NUMBER
2020 )
2021 IS
2022 SELECT
2023 MAX(jcdt.doc_tax_id) doc_tax_id
2024 , jcdt.tax_line_no tax_line_no
2025 , jcdt.tax_id tax_id
2026 , MAX(jcdt.tax_type) tax_type
2027 , MAX(jcdt.currency_code) currency_code
2028 , MAX(jcdt.tax_rate) tax_rate
2029 , MAX(jcdt.qty_rate) qty_rate
2030 , MAX(jcdt.uom) uom
2031 , SUM(jcdt.tax_amt) tax_amt
2032 , SUM(jcdt.func_tax_amt) func_tax_amt
2033 , MAX(jcdt.modvat_flag) modvat_flag
2034 , MAX(jcdt.tax_category_id) tax_category_id
2035 , MAX(jcdt.source_doc_type) source_doc_type
2036 , MAX(jcdt.source_doc_id) source_doc_id
2037 , MAX(jcdt.source_doc_line_id) source_doc_line_id
2038 , MAX(jcdt.source_table_name) source_table_name
2039 , MAX(jcdt.tax_modified_by) tax_modified_by
2040 , MAX(jcdt.adhoc_flag) adhoc_flag
2041 , MAX(jcdt.precedence_1) precedence_1
2042 , MAX(jcdt.precedence_2) precedence_2
2043 , MAX(jcdt.precedence_3) precedence_3
2044 , MAX(jcdt.precedence_4) precedence_4
2045 , MAX(jcdt.precedence_5) precedence_5
2046 , MAX(jcdt.precedence_6) precedence_6
2047 , MAX(jcdt.precedence_7) precedence_7
2048 , MAX(jcdt.precedence_8) precedence_8
2049 , MAX(jcdt.precedence_9) precedence_9
2050 , MAX(jcdt.precedence_10) precedence_10
2051 , MAX(jcdt.creation_date) creation_date
2052 , MAX(jcdt.created_by) created_by
2053 , MAX(jcdt.last_update_date) last_update_date
2054 , MAX(jcdt.last_updated_by) last_updated_by
2055 , MAX(jcdt.last_update_login) last_update_login
2056 , MAX(jcdt.object_version_number) object_version_number
2057 , MAX(jcdt.vendor_id) vendor_id
2058 , MAX(jcdt.source_doc_parent_line_no) source_doc_parent_line_no
2059 , MAX(jcta.inclusive_tax_flag) inc_tax_flag
2060 FROM
2061 jai_cmn_document_taxes jcdt
2062 , jai_cmn_taxes_all jcta --Added by Eric for Inclusive Tax
2063 WHERE jcdt.source_doc_id = pn_invoice_id
2064 AND jcdt.source_doc_parent_line_no = pn_parent_line_number
2065 AND jcdt.tax_id = jcta.tax_id --Added by Eric for Inclusive Tax
2066 AND jcdt.source_doc_type = jai_constants.g_ap_standalone_invoice
2067 AND NVL(jcta.reverse_charge_flag,'N') = 'Y' --Added by Chong for reverse charge service tax ER 2012/07/05
2068 --Added by Chong for reverse charge service tax ER bug#14385555 2012/08/06 Start
2069 ---------------------------------------------------------------------------------
2070 AND NOT EXISTS(
2071 SELECT 1
2072 FROM ap_invoices_all aia_in
2073 WHERE jcdt.source_table_name = 'JAI_AP_INVOICE_LINES'
2074 AND jcdt.source_doc_id = aia_in.invoice_id
2075 AND aia_in.invoice_type_lookup_code in ('CREDIT' ,'DEBIT')
2076 )
2077 ---------------------------------------------------------------------------------
2078 --Added by Chong for reverse charge service tax ER bug#14385555 2012/08/06 End
2079 GROUP by jcdt.tax_id,jcdt.tax_line_no --Added by Chong for reverse charge service tax ER 2012/07/05
2080 ORDER BY MAX(jcdt.doc_tax_id);
2081
2082 CURSOR jai_doc_taxes_cur
2083 ( pn_invoice_id NUMBER
2084 , pn_parent_line_number NUMBER
2085 )
2086 IS
2087 SELECT
2088 jcdt.doc_tax_id
2089 , jcdt.tax_line_no
2090 , jcdt.tax_id
2091 , jcdt.tax_type
2092 , jcdt.currency_code
2093 , jcdt.tax_rate
2094 , jcdt.qty_rate
2095 , jcdt.uom
2096 , jcdt.tax_amt
2097 , jcdt.func_tax_amt
2098 , jcdt.modvat_flag
2099 , jcdt.tax_category_id
2100 , jcdt.source_doc_type
2101 , jcdt.source_doc_id
2102 , jcdt.source_doc_line_id
2103 , jcdt.source_table_name
2104 , jcdt.tax_modified_by
2105 , jcdt.adhoc_flag
2106 , jcdt.precedence_1
2107 , jcdt.precedence_2
2108 , jcdt.precedence_3
2109 , jcdt.precedence_4
2110 , jcdt.precedence_5
2111 , jcdt.precedence_6
2112 , jcdt.precedence_7
2113 , jcdt.precedence_8
2114 , jcdt.precedence_9
2115 , jcdt.precedence_10
2116 , jcdt.creation_date
2117 , jcdt.created_by
2118 , jcdt.last_update_date
2119 , jcdt.last_updated_by
2120 , jcdt.last_update_login
2121 , jcdt.object_version_number
2122 , jcdt.vendor_id
2123 , jcdt.source_doc_parent_line_no
2124 , jcta.inclusive_tax_flag inc_tax_flag --Added by Eric for Inclusive Tax
2125 FROM
2126 jai_cmn_document_taxes jcdt
2127 , jai_cmn_taxes_all jcta --Added by Eric for Inclusive Tax
2128 WHERE jcdt.source_doc_id = pn_invoice_id
2129 AND jcdt.source_doc_parent_line_no = pn_parent_line_number
2130 AND jcdt.tax_id = jcta.tax_id --Added by Eric for Inclusive Tax
2131 AND jcdt.source_doc_type = jai_constants.g_ap_standalone_invoice
2132 AND NVL(jcta.reverse_charge_flag,'N') = 'Y' --Added by Chong for reverse charge service tax ER 20120705
2133 AND NVL(jcdt.modvat_flag, 'N') = 'Y' --Added by Chong for reverse charge service tax ER 20120705
2134 --Added by Chong for reverse charge service tax ER bug#14385555 2012/08/06 Start
2135 ---------------------------------------------------------------------------------
2136 AND NOT EXISTS(
2137 SELECT 1
2138 FROM ap_invoices_all aia_in
2139 WHERE jcdt.source_table_name = 'JAI_AP_INVOICE_LINES'
2140 AND jcdt.source_doc_id = aia_in.invoice_id
2141 AND aia_in.invoice_type_lookup_code in ('CREDIT' ,'DEBIT')
2142 )
2143 ---------------------------------------------------------------------------------
2144 --Added by Chong for reverse charge service tax ER bug#14385555 2012/08/06 End
2145 ORDER BY jcdt.doc_tax_id FOR UPDATE OF source_doc_line_id; --Add for update by Xiao for Accounting Issue, port changes for pot bug#12533434
2146
2147 CURSOR jai_default_doc_taxes_cur
2148 ( pn_invoice_id NUMBER
2149 , pn_line_number NUMBER
2150 )
2151 IS
2152 SELECT
2153 jcdt.doc_tax_id
2154 , jcdt.tax_line_no
2155 , jcdt.tax_id
2156 , jcdt.tax_type
2157 , jcdt.currency_code
2158 , jcdt.tax_rate
2159 , jcdt.qty_rate
2160 , jcdt.uom
2161 , jcdt.tax_amt
2162 , jcdt.func_tax_amt
2163 , jcdt.modvat_flag
2164 , jcdt.tax_category_id
2165 , jcdt.source_doc_type
2166 , jcdt.source_doc_id
2167 , jcdt.source_doc_line_id
2168 , jcdt.source_table_name
2169 , jcdt.tax_modified_by
2170 , jcdt.adhoc_flag
2171 , jcdt.precedence_1
2172 , jcdt.precedence_2
2173 , jcdt.precedence_3
2174 , jcdt.precedence_4
2175 , jcdt.precedence_5
2176 , jcdt.precedence_6
2177 , jcdt.precedence_7
2178 , jcdt.precedence_8
2179 , jcdt.precedence_9
2180 , jcdt.precedence_10
2181 , jcdt.creation_date
2182 , jcdt.created_by
2183 , jcdt.last_update_date
2184 , jcdt.last_updated_by
2185 , jcdt.last_update_login
2186 , jcdt.object_version_number
2187 , jcdt.vendor_id
2188 , jcdt.source_doc_parent_line_no
2189 FROM
2190 jai_cmn_document_taxes jcdt
2191 WHERE jcdt.source_doc_id = pn_invoice_id
2192 AND jcdt.source_doc_line_id = pn_line_number
2193 AND jcdt.source_doc_parent_line_no = pn_line_number
2194 AND jcdt.source_doc_type = jai_constants.g_ap_standalone_invoice
2195 ORDER BY jcdt.tax_line_no FOR UPDATE;
2196
2197 CURSOR get_tax_cur (pn_tax_id NUMBER) IS
2198 SELECT
2199 tax_name
2200 , tax_account_id
2201 , mod_cr_percentage
2202 , adhoc_flag
2203 , NVL (tax_rate, -1) tax_rate
2204 , tax_type
2205 , NVL(rounding_factor,0) rounding_factor
2206 FROM
2207 jai_cmn_taxes_all
2208 WHERE tax_id = pn_tax_id;
2209
2210 CURSOR ap_invoice_dist_cur (pn_line_number NUMBER , pn_distribution_line_number number) IS
2211 SELECT
2212 accounting_date
2213 , accrual_posted_flag
2214 , assets_addition_flag
2215 , assets_tracking_flag
2216 , cash_posted_flag
2217 , distribution_line_number
2218 , dist_code_combination_id
2219 , invoice_id
2220 , last_updated_by
2221 , last_update_date
2222 , line_type_lookup_code
2223 , period_name
2224 , set_of_books_id
2225 , amount
2226 , base_amount
2227 , batch_id
2228 , created_by
2229 , creation_date
2230 , description
2231 , exchange_rate
2232 , exchange_rate_variance
2233 , last_update_login
2234 , match_status_flag
2235 , posted_flag
2236 , rate_var_code_combination_id
2237 , reversal_flag
2238 , program_application_id
2239 , program_id
2240 , program_update_date
2241 , accts_pay_code_combination_id
2242 , invoice_distribution_id
2243 , quantity_invoiced
2244 , po_distribution_id
2245 , rcv_transaction_id
2246 , price_var_code_combination_id
2247 , invoice_price_variance
2248 , base_invoice_price_variance
2249 , matched_uom_lookup_code
2250 , invoice_line_number
2251 , org_id
2252 , charge_applicable_to_dist_id
2253 , project_id
2254 , task_id
2255 , expenditure_type
2256 , expenditure_item_date
2257 , expenditure_organization_id
2258 , project_accounting_context
2259 , pa_addition_flag
2260 , distribution_class
2261 , ASSET_BOOK_TYPE_CODE
2262 , ASSET_CATEGORY_ID
2263 ,accounting_event_id --added for bug#10044104
2264 FROM
2265 ap_invoice_distributions_all
2266 WHERE invoice_id = ln_invoice_id
2267 AND invoice_line_number = pn_line_number
2268 AND distribution_line_number = pn_distribution_line_number; /*1; Bug 13617527 */
2269
2270 Cursor get_service_type(p_invoice_id NUMBER,p_invoice_line_number NUMBER) IS
2271 SELECT service_type_code,organization_id, location_id
2272 FROM jai_ap_invoice_lines
2273 WHERE invoice_id = p_invoice_id
2274 AND invoice_line_number = p_invoice_line_number;
2275
2276 lv_organization_id jai_ap_invoice_lines.ORGANIZATION_ID%type;
2277 lv_location_id jai_ap_invoice_lines.LOCATION_ID%type;
2278
2279 ap_invoice_dist_rec ap_invoice_dist_cur%ROWTYPE;
2280 tax_rec get_tax_cur%ROWTYPE;
2281 ln_inv_dist_id NUMBER;
2282 ln_dist_acct_ccid NUMBER;
2283 ln_vendor_site_id NUMBER;
2284 lv_currency_code VARCHAR2 (15);
2285 lv_service_type_code VARCHAR2 (30);
2286 lv_service_type_code_tmp VARCHAR2 (30);
2287 ln_batch_id NUMBER;
2288 ln_max_inv_line_num NUMBER;
2289 ln_max_pro_line_num NUMBER;
2290 lv_tax_type VARCHAR2(10);
2291 ln_chargeble_acct_ccid NUMBER;
2292 lv_tax_recoverable_flag VARCHAR2(1);
2293 ln_max_source_line_id NUMBER;
2294 ln_asset_track_flag ap_invoice_lines_all.assets_tracking_flag%TYPE;
2295 ln_project_id ap_invoice_lines_all.project_id%TYPE;
2296 ln_task_id ap_invoice_lines_all.task_id%TYPE;
2297 lv_expenditure_type ap_invoice_lines_all.expenditure_type%TYPE;
2298 ld_exp_item_date ap_invoice_lines_all.expenditure_item_date%TYPE;
2299 ln_exp_org_id ap_invoice_lines_all.expenditure_organization_id%TYPE;
2300 cursor c_exists_jai_ap_invoice_lines (p_invoice_id number, p_invoice_line_number number) is
2301 select count(*)
2302 from jai_ap_invoice_lines
2303 where invoice_id=p_invoice_id
2304 and invoice_line_number=p_invoice_line_number;
2305
2306 cursor c_exists_ap_invoice_lines (p_invoice_id number, p_invoice_line_number number) is
2307 select count(*)
2308 from ap_invoice_lines_all
2309 where invoice_id=p_invoice_id
2310 and line_number=p_invoice_line_number;
2311
2312 cursor c_exists_ap_invoice_dist_lines (p_invoice_id number, p_invoice_line_number number, p_distribution_line_number number) is
2313 select count(*)
2314 from ap_invoice_distributions_all
2315 where invoice_id = p_invoice_id
2316 and invoice_line_number = p_invoice_line_number
2317 and distribution_line_number = p_distribution_line_number;
2318 ln_exists number := null;
2319 ln_dist_asst_add_flag
2320 ap_invoice_distributions_all.assets_addition_flag%TYPE;
2321 ln_dist_asst_trck_flag
2322 ap_invoice_distributions_all.assets_tracking_flag%TYPE;
2323 ln_dist_project_id
2324 ap_invoice_distributions_all.project_id%TYPE;
2325 ln_dist_task_id
2326 ap_invoice_distributions_all.task_id%TYPE;
2327 ln_dist_exp_type
2328 ap_invoice_distributions_all.expenditure_type%TYPE;
2329 ld_dist_exp_item_date
2330 ap_invoice_distributions_all.expenditure_item_date%TYPE;
2331 ln_dist_exp_org_id
2332 ap_invoice_distributions_all.expenditure_organization_id%TYPE;
2333 ln_dist_pa_context
2334 ap_invoice_distributions_all.project_accounting_context%TYPE;
2335 ln_dist_pa_addition_flag
2336 ap_invoice_distributions_all.pa_addition_flag%TYPE;
2337 lv_asset_book_type_code
2338 ap_invoice_distributions_all.asset_book_type_code%TYPE;
2339 ln_asset_category_id
2340 ap_invoice_distributions_all.asset_category_id%TYPE;
2341 jai_ap_invoice_lines_rec jai_ap_invoice_lines%ROWTYPE;
2342 ap_invoice_lines_all_rec ap_invoice_lines_all%ROWTYPE;
2343 ap_invoice_dist_all_rec ap_invoice_distributions_all%ROWTYPE;
2344 ln_dbg_level NUMBER := FND_LOG.g_current_runtime_level;
2345 ln_proc_level NUMBER := FND_LOG.level_procedure;
2346 lv_proc_name VARCHAR2 (100):= 'Populate_ST_RVRS_Dist';
2347 ln_user_id NUMBER := fnd_global.user_id;
2348 ln_login_id NUMBER := fnd_global.login_id;
2349
2350 ln_jai_inv_line_id NUMBER;
2351 lv_dist_class VARCHAR2(50) := 'PERMANENT';
2352 ln_accounting_event_id number;
2353 l_null_event_id number;
2354
2355 lv_invoice_distribution_id number; /* Bug 13793724 */
2356
2357 BEGIN
2358 IF ( ln_proc_level >= ln_dbg_level)
2359 THEN
2360 FND_LOG.STRING ( ln_proc_level
2361 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.begin'
2362 , 'Enter procedure'
2363 );
2364 FND_LOG.STRING ( ln_proc_level
2365 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
2366 , 'pn_invoice_id ' || pn_invoice_id
2367 );
2368 FND_LOG.STRING ( ln_proc_level
2369 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.parameters'
2370 , 'pn_line_number ' || pn_line_number
2371 );
2372 END IF; --( ln_proc_level >= ln_dbg_level )
2373
2374 --The below loops is to synchronize reverse charge service taxes information from
2375 --jai_cmn_document_taxes to other 3 tables
2376
2377 --Loop 1, item level: Loop all item lines in the ap_invoice_lines
2378 FOR ap_invoice_lines_rec IN ap_invoice_lines_cur
2379 LOOP
2380
2381 --Loop 2,tax level:Loop all tax lines in jai_cmn_document_taxes
2382 FOR jai_doc_taxes_rec IN
2383 jai_doc_taxes_cur
2384 ( pn_invoice_id => ln_invoice_id
2385 , pn_parent_line_number => ap_invoice_lines_rec.line_number
2386 )
2387 LOOP
2388
2389 OPEN get_tax_cur (jai_doc_taxes_rec.tax_id);
2390 FETCH get_tax_cur INTO tax_rec;
2391 CLOSE get_tax_cur;
2392
2393 lv_tax_type :=
2394 Get_Tax_Type
2395 ( pv_modvat_flag =>jai_doc_taxes_rec.modvat_flag
2396 , pn_cr_percentage =>tax_rec.mod_cr_percentage
2397 );
2398
2399 select min(distribution_line_number) into ln_distribution_line_number
2400 from ap_invoice_distributions_all where invoice_id = pn_invoice_id
2401 and invoice_line_number = ap_invoice_lines_rec.line_number;
2402
2403 --get mandantory parameters from item line
2404 --the acct distribution will be handled in other procedure
2405 OPEN ap_invoice_dist_cur (ap_invoice_lines_rec.line_number , ln_distribution_line_number);
2406 FETCH ap_invoice_dist_cur INTO ap_invoice_dist_rec ;
2407 CLOSE ap_invoice_dist_cur;
2408
2409 IF (lv_tax_type = 'NR')
2410 THEN
2411 ln_asset_track_flag := ap_invoice_lines_rec.assets_tracking_flag;
2412 ln_project_id := ap_invoice_lines_rec.project_id;
2413 ln_task_id := ap_invoice_lines_rec.task_id;
2414 lv_expenditure_type := ap_invoice_lines_rec.expenditure_type;
2415 ld_exp_item_date := ap_invoice_lines_rec.expenditure_item_date;
2416 ln_exp_org_id := ap_invoice_lines_rec.expenditure_organization_id;
2417
2418 ln_dist_asst_add_flag :=ap_invoice_dist_rec.assets_addition_flag ;
2419 ln_dist_asst_trck_flag:=ap_invoice_dist_rec.assets_tracking_flag ;
2420 ln_dist_project_id :=ap_invoice_dist_rec.project_id;
2421 ln_dist_task_id :=ap_invoice_dist_rec.task_id;
2422 ln_dist_exp_type :=ap_invoice_dist_rec.expenditure_type;
2423 ld_dist_exp_item_date :=ap_invoice_dist_rec.expenditure_item_date;
2424 ln_dist_exp_org_id :=ap_invoice_dist_rec.expenditure_organization_id;
2425 ln_dist_pa_context :=ap_invoice_dist_rec.project_accounting_context;
2426 ln_dist_pa_addition_flag :=ap_invoice_dist_rec.pa_addition_flag;
2427 lv_asset_book_type_code :=ap_invoice_dist_rec.asset_book_type_code;
2428 ln_asset_category_id :=ap_invoice_dist_rec.asset_category_id;
2429 lv_tax_recoverable_flag :='N';
2430
2431 ELSE --(RECOVERABLE)
2432 ln_asset_track_flag := 'N';
2433 ln_project_id := NULL;
2434 ln_task_id := NULL;
2435 lv_expenditure_type := NULL;
2436 ld_exp_item_date := NULL;
2437 ln_exp_org_id := NULL;
2438
2439 ln_dist_asst_add_flag := 'U';
2440 ln_dist_asst_trck_flag := 'N';
2441 ln_dist_project_id := NULL;
2442 ln_dist_task_id := NULL;
2443 ln_dist_exp_type := NULL;
2444 ld_dist_exp_item_date := NULL;
2445 ln_dist_exp_org_id := NULL;
2446 ln_dist_pa_context := NULL;
2447 ln_dist_pa_addition_flag := 'E'; --NOT PROJECT RELATED
2448 lv_tax_recoverable_flag := 'Y';
2449 lv_asset_book_type_code := NULL;
2450 ln_asset_category_id := NULL;
2451 END IF; --(lv_tax_type = 'NR')
2452
2453
2454 IF (NVL(jai_doc_taxes_rec.inc_tax_flag,'N')='N') THEN
2455
2456 SELECT jai_ap_invoice_lines_s.NEXTVAL
2457 INTO ln_jai_inv_line_id FROM DUAL;
2458
2459 lv_service_type_code_tmp := null;
2460 OPEN get_service_type (ln_invoice_id, ap_invoice_lines_rec.line_number);
2461 FETCH get_service_type INTO lv_service_type_code_tmp, lv_organization_id,lv_location_id ;
2462 CLOSE get_service_type;
2463
2464 lv_service_type_code := nvl(lv_service_type_code, lv_service_type_code_tmp);
2465
2466 open c_exists_jai_ap_invoice_lines(jai_doc_taxes_rec.source_doc_id,jai_doc_taxes_rec.source_doc_line_id);
2467 fetch c_exists_jai_ap_invoice_lines into ln_exists;
2468 close c_exists_jai_ap_invoice_lines;
2469
2470 if (ln_exists =0) then
2471 jai_ap_invoice_lines_rec := NULL;
2472 jai_ap_invoice_lines_rec.jai_ap_invoice_lines_id := ln_jai_inv_line_id;
2473 jai_ap_invoice_lines_rec.organization_id := lv_organization_id ;
2474 jai_ap_invoice_lines_rec.location_id := lv_location_id;
2475 jai_ap_invoice_lines_rec.invoice_id := jai_doc_taxes_rec.source_doc_id;
2476 jai_ap_invoice_lines_rec.invoice_line_number := jai_doc_taxes_rec.source_doc_line_id;
2477 jai_ap_invoice_lines_rec.supplier_site_id := ln_vendor_site_id;
2478 jai_ap_invoice_lines_rec.parent_invoice_line_number := jai_doc_taxes_rec.source_doc_parent_line_no;
2479 jai_ap_invoice_lines_rec.tax_category_id := jai_doc_taxes_rec.tax_category_id;
2480 jai_ap_invoice_lines_rec.service_type_code := lv_service_type_code;
2481 jai_ap_invoice_lines_rec.match_type := ap_invoice_lines_rec.match_type;
2482 jai_ap_invoice_lines_rec.currency_code := lv_currency_code;
2483 jai_ap_invoice_lines_rec.line_amount := jai_doc_taxes_rec.tax_amt;
2484 jai_ap_invoice_lines_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2485 jai_ap_invoice_lines_rec.created_by := ln_user_id;
2486 jai_ap_invoice_lines_rec.creation_date := SYSDATE;
2487 jai_ap_invoice_lines_rec.last_update_date := SYSDATE;
2488 jai_ap_invoice_lines_rec.last_update_login := ln_login_id;
2489 jai_ap_invoice_lines_rec.last_updated_by := ln_user_id;
2490 Insert_jai_inv_line(jai_ap_invoice_lines_rec);
2491
2492 --log for debug
2493 IF ( ln_proc_level >= ln_dbg_level)
2494 THEN
2495 FND_LOG.STRING ( ln_proc_level
2496 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2497 || '.debug Info.'
2498 , 'Table jai_ap_invoice_lines inserted '
2499 );
2500 END IF; --( ln_proc_level >= ln_dbg_level )
2501 end if;
2502 --insert into ap_invoice_lines_all
2503 open c_exists_ap_invoice_lines(jai_doc_taxes_rec.source_doc_id,jai_doc_taxes_rec.source_doc_line_id);
2504 fetch c_exists_ap_invoice_lines into ln_exists;
2505 close c_exists_ap_invoice_lines;
2506
2507 if (ln_exists =0)then
2508 ap_invoice_lines_all_rec := NULL;
2509 ap_invoice_lines_all_rec.invoice_id := jai_doc_taxes_rec.source_doc_id;
2510 ap_invoice_lines_all_rec.line_number := jai_doc_taxes_rec.source_doc_line_id;
2511 ap_invoice_lines_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2512 ap_invoice_lines_all_rec.description := tax_rec.tax_name;
2513 ap_invoice_lines_all_rec.org_id := ap_invoice_lines_rec.org_id;
2514 ap_invoice_lines_all_rec.assets_tracking_flag := ln_asset_track_flag;
2515 ap_invoice_lines_all_rec.match_type := ap_invoice_lines_rec.match_type;
2516 ap_invoice_lines_all_rec.accounting_date := ap_invoice_lines_rec.accounting_date;
2517 ap_invoice_lines_all_rec.period_name := ap_invoice_lines_rec.period_name;
2518 ap_invoice_lines_all_rec.deferred_acctg_flag := ap_invoice_lines_rec.deferred_acctg_flag;
2519 ap_invoice_lines_all_rec.def_acctg_start_date := ap_invoice_lines_rec.def_acctg_start_date;
2520 ap_invoice_lines_all_rec.def_acctg_end_date := ap_invoice_lines_rec.def_acctg_end_date;
2521 ap_invoice_lines_all_rec.def_acctg_number_of_periods := ap_invoice_lines_rec.def_acctg_number_of_periods;
2522 ap_invoice_lines_all_rec.def_acctg_period_type := ap_invoice_lines_rec.def_acctg_period_type;
2523 ap_invoice_lines_all_rec.set_of_books_id := ap_invoice_lines_rec.set_of_books_id;
2524 ap_invoice_lines_all_rec.amount := jai_doc_taxes_rec.tax_amt;
2525 ap_invoice_lines_all_rec.wfapproval_status := ap_invoice_lines_rec.wfapproval_status;
2526 ap_invoice_lines_all_rec.creation_date := SYSDATE;
2527 ap_invoice_lines_all_rec.created_by := ln_user_id;
2528 ap_invoice_lines_all_rec.last_updated_by := ln_user_id;
2529 ap_invoice_lines_all_rec.last_update_date := SYSDATE;
2530 ap_invoice_lines_all_rec.last_update_login := ln_login_id;
2531 ap_invoice_lines_all_rec.project_id := ln_project_id;
2532 ap_invoice_lines_all_rec.task_id := ln_task_id;
2533 ap_invoice_lines_all_rec.expenditure_type := lv_expenditure_type;
2534 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
2535 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_org_id;
2536 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID; --jai application ID 7000
2537 ap_invoice_lines_all_rec.product_table := G_PRODUCT_TABLE; --product table
2538 ap_invoice_lines_all_rec.reference_key1 := jai_doc_taxes_rec.tax_id; --tax id -> reference_key1
2539 ap_invoice_lines_all_rec.reference_key2 := ap_invoice_lines_rec.line_number; --item invoice line number -> reference_key2
2540 Insert_ap_inv_line(ap_invoice_lines_all_rec);
2541 end if;
2542
2543 --log for debug
2544 IF ( ln_proc_level >= ln_dbg_level)
2545 THEN
2546 FND_LOG.STRING ( ln_proc_level
2547 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2548 || '.debug Info.'
2549 , 'Table ap_invoice_lines_all inserted '
2550 );
2551 END IF; --( ln_proc_level >= ln_dbg_level )
2552
2553 ln_dist_acct_ccid := Get_ST_Reverse_Ccid
2554 ( pn_invoice_id => ln_invoice_id
2555 , pn_item_line_number => ap_invoice_lines_rec.line_number
2556 , pn_organization_id => lv_organization_id
2557 , pn_location_id => lv_location_id
2558 , pn_tax_type_code => tax_rec.tax_type
2559 , pn_tax_acct_ccid => tax_rec.tax_account_id
2560 , pv_tax_type => lv_tax_type
2561 , pv_ac_type => GV_REVERSE_CHARGE
2562 );
2563
2564 SELECT
2565 ap_invoice_distributions_s.NEXTVAL
2566 INTO
2567 ln_inv_dist_id
2568 FROM DUAL;
2569
2570 select invoice_distribution_id into lv_invoice_distribution_id
2571 FROM ap_invoice_distributions_all
2572 WHERE invoice_id = pn_invoice_id
2573 AND invoice_line_number = pn_line_number
2574 AND distribution_line_number =(select min(distribution_line_number) from ap_invoice_distributions_all
2575 where invoice_id = pn_invoice_id AND invoice_line_number = pn_line_number) ;
2576
2577
2578 IF ( ln_dist_asst_trck_flag = 'N') THEN
2579 ln_chargeble_acct_ccid :=NULL;
2580 ELSE
2581 ln_chargeble_acct_ccid := lv_invoice_distribution_id; /* Commented the below part and added assignment statement for bug 13793724 */
2582 /* lv_account_type := Get_Gl_Account_Type (ln_dist_acct_ccid);
2583
2584 IF lv_account_type ='A'
2585 THEN
2586 ln_chargeble_acct_ccid := ln_dist_acct_ccid;
2587 ELSE
2588 ln_chargeble_acct_ccid := NULL;
2589 END IF; */
2590 END IF;
2591
2592
2593 SELECT count(*)
2594 INTO l_null_event_id
2595 FROM ap_invoice_distributions aid
2596 WHERE aid.invoice_id = ln_invoice_id
2597 AND aid.accounting_event_id is NULL;
2598
2599 if l_null_event_id>0 then
2600
2601 AP_Accounting_Events_Pkg.Create_Events(
2602 p_event_type => 'INVOICES',
2603 p_doc_type => NULL,
2604 p_doc_id => ln_invoice_id,
2605 p_accounting_date => NULL,
2606 p_accounting_event_id => ln_accounting_event_id,
2607 p_checkrun_name => NULL,
2608 p_calling_sequence => 'Called from JAIAPPRCB');
2609
2610 end if;
2611
2612
2613
2614 --insert into ap_distribution_lines_all
2615 open c_exists_ap_invoice_dist_lines(ln_invoice_id,jai_doc_taxes_rec.source_doc_line_id,ln_distribution_line_number );/* Bug 13617527 -modified 1 to ln_distribution_line_number */
2616 fetch c_exists_ap_invoice_dist_lines into ln_exists;
2617 close c_exists_ap_invoice_dist_lines;
2618 if (ln_exists =0)THEN
2619 IF ( ln_proc_level >= ln_dbg_level)
2620 THEN
2621 FND_LOG.STRING ( ln_proc_level
2622 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2623 || '.debug Info.'
2624 , 'ln_inv_dist_id:'||ln_inv_dist_id||'ln_dist_acct_ccid:'||ln_dist_acct_ccid||'Table ap_invoice_distributions_all inserted '
2625 );
2626 END IF;
2627
2628 ap_invoice_dist_all_rec := NULL;
2629 ap_invoice_dist_all_rec.accounting_date := ap_invoice_dist_rec.accounting_date;
2630 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
2631 ap_invoice_dist_all_rec.assets_addition_flag := ln_dist_asst_add_flag;
2632 ap_invoice_dist_all_rec.assets_tracking_flag := ln_dist_asst_trck_flag;
2633 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
2634 ap_invoice_dist_all_rec.distribution_line_number := ln_distribution_line_number; --1 --distribution_line_number
2635 ap_invoice_dist_all_rec.dist_code_combination_id := ln_dist_acct_ccid;
2636 ap_invoice_dist_all_rec.invoice_id := ln_invoice_id;
2637 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
2638 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
2639 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2640 ap_invoice_dist_all_rec.period_name := ap_invoice_lines_rec.period_name;
2641 ap_invoice_dist_all_rec.set_of_books_id := ap_invoice_lines_rec.set_of_books_id;
2642 ap_invoice_dist_all_rec.amount := jai_doc_taxes_rec.tax_amt;
2643 ap_invoice_dist_all_rec.batch_id := ln_batch_id;
2644 ap_invoice_dist_all_rec.created_by := ln_user_id;
2645 ap_invoice_dist_all_rec.creation_date := SYSDATE;
2646 ap_invoice_dist_all_rec.description := tax_rec.tax_name;
2647 ap_invoice_dist_all_rec.exchange_rate_variance := '';
2648 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
2649 ap_invoice_dist_all_rec.match_status_flag := ap_invoice_dist_rec.match_status_flag;
2650 ap_invoice_dist_all_rec.posted_flag := 'N'; -- posted_flag
2651 ap_invoice_dist_all_rec.rate_var_code_combination_id := '';
2652 ap_invoice_dist_all_rec.reversal_flag := NVL(ap_invoice_dist_rec.reversal_flag,'N');
2653 ap_invoice_dist_all_rec.program_application_id := ap_invoice_dist_rec.program_application_id;
2654 ap_invoice_dist_all_rec.program_id := ap_invoice_dist_rec.program_id;
2655 ap_invoice_dist_all_rec.program_update_date := ap_invoice_dist_rec.program_update_date;
2656 ap_invoice_dist_all_rec.accts_pay_code_combination_id := ap_invoice_dist_rec.accts_pay_code_combination_id;
2657 ap_invoice_dist_all_rec.invoice_distribution_id := ln_inv_dist_id;
2658 ap_invoice_dist_all_rec.quantity_invoiced := -1;
2659 ap_invoice_dist_all_rec.po_distribution_id := '';
2660 ap_invoice_dist_all_rec.rcv_transaction_id := '';
2661 ap_invoice_dist_all_rec.price_var_code_combination_id := ap_invoice_dist_rec.rcv_transaction_id;
2662 ap_invoice_dist_all_rec.invoice_price_variance := ap_invoice_dist_rec.invoice_price_variance;
2663 ap_invoice_dist_all_rec.base_invoice_price_variance := ap_invoice_dist_rec.base_invoice_price_variance;
2664 ap_invoice_dist_all_rec.matched_uom_lookup_code := ap_invoice_dist_rec.matched_uom_lookup_code;
2665 ap_invoice_dist_all_rec.invoice_line_number := jai_doc_taxes_rec.source_doc_line_id;
2666 ap_invoice_dist_all_rec.org_id := ap_invoice_lines_rec.org_id;
2667 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := ln_chargeble_acct_ccid;
2668 ap_invoice_dist_all_rec.project_id := ln_dist_project_id;
2669 ap_invoice_dist_all_rec.task_id := ln_dist_task_id;
2670 ap_invoice_dist_all_rec.expenditure_type := ln_dist_exp_type;
2671 ap_invoice_dist_all_rec.expenditure_item_date := ld_dist_exp_item_date;
2672 ap_invoice_dist_all_rec.expenditure_organization_id := ln_dist_exp_org_id;
2673 ap_invoice_dist_all_rec.project_accounting_context := ln_dist_pa_context;
2674 ap_invoice_dist_all_rec.pa_addition_flag := ln_dist_pa_addition_flag;
2675 ap_invoice_dist_all_rec.DISTRIBUTION_CLASS := lv_dist_class ;
2676 ap_invoice_dist_all_rec.TAX_RECOVERABLE_FLAG := lv_tax_recoverable_flag;
2677 ap_invoice_dist_all_rec.accounting_event_id := nvl(ap_invoice_dist_rec.accounting_event_id ,ln_accounting_event_id);
2678 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
2679
2680 IF ( ln_proc_level >= ln_dbg_level)
2681 THEN
2682 FND_LOG.STRING ( ln_proc_level
2683 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2684 || '.debug Info.'
2685 , 'ln_dist_acct_ccid:'||ln_dist_acct_ccid||',Table ap_distribution_lines_all inserted '
2686 );
2687 END IF; --( ln_proc_level >= ln_dbg_level )
2688 end if;
2689
2690 END IF;
2691 END LOOP; -- (all taxes for a given parent line number)
2692
2693
2694 --Loop 3,tax level:Loop all tax lines in jai_cmn_document_taxes
2695 --<<insert liability lines sum by tax code level in jai_cmn_document_taxes>>
2696 -- Get line number
2697 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || lv_proc_name,
2698 '@@Before insert reverse charege service tax liability lines.');
2699
2700 ln_max_inv_line_num := Get_Max_Invoice_Line_Number(ln_invoice_id);
2701 ln_max_source_line_id := Get_Max_Doc_Source_Line_Id(ln_invoice_id);
2702
2703 IF (ln_max_inv_line_num >= ln_max_source_line_id )
2704 THEN
2705 ln_max_pro_line_num := ln_max_inv_line_num;
2706 ELSE
2707 ln_max_pro_line_num := ln_max_source_line_id;
2708 END IF; --(ln_max_inv_line_num >= ln_max_source_line_id )
2709
2710 FOR jai_doc_taxes_rec IN
2711 jai_doc_taxes_sum_cur
2712 ( pn_invoice_id => ln_invoice_id
2713 , pn_parent_line_number => ap_invoice_lines_rec.line_number
2714 )
2715 LOOP
2716
2717 OPEN get_tax_cur (jai_doc_taxes_rec.tax_id);
2718 FETCH get_tax_cur
2719 INTO
2720 tax_rec;
2721 CLOSE get_tax_cur;
2722
2723 lv_tax_type :=
2724 Get_Tax_Type
2725 ( pv_modvat_flag =>jai_doc_taxes_rec.modvat_flag
2726 , pn_cr_percentage =>tax_rec.mod_cr_percentage
2727 );
2728
2729 select min(distribution_line_number) into ln_distribution_line_number
2730 from ap_invoice_distributions_all where invoice_id = pn_invoice_id
2731 and invoice_line_number = ap_invoice_lines_rec.line_number;
2732
2733 --get mandantory parameters from item line
2734 --the acct distribution will be handled in other procedure
2735 OPEN ap_invoice_dist_cur (ap_invoice_lines_rec.line_number , ln_distribution_line_number);
2736 FETCH
2737 ap_invoice_dist_cur
2738 INTO
2739 ap_invoice_dist_rec ;
2740 CLOSE ap_invoice_dist_cur;
2741
2742 IF (lv_tax_type = 'NR')
2743 THEN
2744 ln_asset_track_flag := ap_invoice_lines_rec.assets_tracking_flag;
2745 ln_project_id := ap_invoice_lines_rec.project_id;
2746 ln_task_id := ap_invoice_lines_rec.task_id;
2747 lv_expenditure_type := ap_invoice_lines_rec.expenditure_type;
2748 ld_exp_item_date := ap_invoice_lines_rec.expenditure_item_date;
2749 ln_exp_org_id := ap_invoice_lines_rec.expenditure_organization_id;
2750
2751 ln_dist_asst_add_flag :=ap_invoice_dist_rec.assets_addition_flag ;
2752 ln_dist_asst_trck_flag:=ap_invoice_dist_rec.assets_tracking_flag ;
2753 ln_dist_project_id :=ap_invoice_dist_rec.project_id;
2754 ln_dist_task_id :=ap_invoice_dist_rec.task_id;
2755 ln_dist_exp_type :=ap_invoice_dist_rec.expenditure_type;
2756 ld_dist_exp_item_date :=ap_invoice_dist_rec.expenditure_item_date;
2757 ln_dist_exp_org_id :=ap_invoice_dist_rec.expenditure_organization_id;
2758 ln_dist_pa_context :=ap_invoice_dist_rec.project_accounting_context;
2759 ln_dist_pa_addition_flag :=ap_invoice_dist_rec.pa_addition_flag;
2760 lv_asset_book_type_code :=ap_invoice_dist_rec.asset_book_type_code;
2761 ln_asset_category_id :=ap_invoice_dist_rec.asset_category_id;
2762 lv_tax_recoverable_flag :='N';
2763
2764 ELSE --(RECOVERABLE)
2765 ln_asset_track_flag := 'N';
2766 ln_project_id := NULL;
2767 ln_task_id := NULL;
2768 lv_expenditure_type := NULL;
2769 ld_exp_item_date := NULL;
2770 ln_exp_org_id := NULL;
2771
2772 ln_dist_asst_add_flag := 'U';
2773 ln_dist_asst_trck_flag := 'N';
2774 ln_dist_project_id := NULL;
2775 ln_dist_task_id := NULL;
2776 ln_dist_exp_type := NULL;
2777 ld_dist_exp_item_date := NULL;
2778 ln_dist_exp_org_id := NULL;
2779 ln_dist_pa_context := NULL;
2780 ln_dist_pa_addition_flag := 'E'; --NOT PROJECT RELATED
2781 lv_tax_recoverable_flag := 'Y';
2782 lv_asset_book_type_code := NULL;
2783 ln_asset_category_id := NULL;
2784 END IF; --(lv_tax_type = 'NR')
2785
2786 IF (NVL(jai_doc_taxes_rec.inc_tax_flag,'N')='N')
2787 THEN
2788
2789 ln_max_pro_line_num := ln_max_pro_line_num + 1;
2790
2791 SELECT
2792 jai_ap_invoice_lines_s.NEXTVAL
2793 INTO
2794 ln_jai_inv_line_id
2795 FROM DUAL;
2796
2797 lv_service_type_code_tmp := null;
2798 OPEN get_service_type (ln_invoice_id, ap_invoice_lines_rec.line_number);
2799 FETCH get_service_type INTO lv_service_type_code_tmp, lv_organization_id,lv_location_id ;
2800 CLOSE get_service_type;
2801 lv_service_type_code := nvl(lv_service_type_code, lv_service_type_code_tmp);
2802
2803 --insert into jai_ap_invoice_lines
2804 jai_ap_invoice_lines_rec := NULL;
2805 jai_ap_invoice_lines_rec.jai_ap_invoice_lines_id := ln_jai_inv_line_id;
2806 jai_ap_invoice_lines_rec.organization_id := lv_organization_id;
2807 jai_ap_invoice_lines_rec.location_id := lv_location_id;
2808 jai_ap_invoice_lines_rec.invoice_id := jai_doc_taxes_rec.source_doc_id;
2809 jai_ap_invoice_lines_rec.invoice_line_number := ln_max_pro_line_num;
2810 jai_ap_invoice_lines_rec.supplier_site_id := ln_vendor_site_id;
2811 jai_ap_invoice_lines_rec.parent_invoice_line_number := jai_doc_taxes_rec.source_doc_parent_line_no;
2812 jai_ap_invoice_lines_rec.tax_category_id := jai_doc_taxes_rec.tax_category_id;
2813 jai_ap_invoice_lines_rec.service_type_code := lv_service_type_code;
2814 jai_ap_invoice_lines_rec.match_type := ap_invoice_lines_rec.match_type;
2815 jai_ap_invoice_lines_rec.currency_code := lv_currency_code;
2816 jai_ap_invoice_lines_rec.line_amount := - jai_doc_taxes_rec.tax_amt; --negative amount for liability line
2817 jai_ap_invoice_lines_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2818 jai_ap_invoice_lines_rec.created_by := ln_user_id;
2819 jai_ap_invoice_lines_rec.creation_date := SYSDATE;
2820 jai_ap_invoice_lines_rec.last_update_date := SYSDATE;
2821 jai_ap_invoice_lines_rec.last_update_login := ln_login_id;
2822 jai_ap_invoice_lines_rec.last_updated_by := ln_user_id;
2823 Insert_jai_inv_line(jai_ap_invoice_lines_rec);
2824
2825 --log for debug
2826 IF ( ln_proc_level >= ln_dbg_level)
2827 THEN
2828 FND_LOG.STRING ( ln_proc_level
2829 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2830 || '.debug Info.'
2831 , 'Table jai_ap_invoice_lines for liability line inserted '
2832 );
2833 END IF; --( ln_proc_level >= ln_dbg_level )
2834
2835 --insert into ap_invoice_lines_all
2836 ap_invoice_lines_all_rec.invoice_id := jai_doc_taxes_rec.source_doc_id;
2837 ap_invoice_lines_all_rec.line_number := ln_max_pro_line_num;
2838 ap_invoice_lines_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2839 ap_invoice_lines_all_rec.description := tax_rec.tax_name;
2840 ap_invoice_lines_all_rec.org_id := ap_invoice_lines_rec.org_id;
2841 ap_invoice_lines_all_rec.assets_tracking_flag := ln_asset_track_flag;
2842 ap_invoice_lines_all_rec.match_type := ap_invoice_lines_rec.match_type;
2843 ap_invoice_lines_all_rec.accounting_date := ap_invoice_lines_rec.accounting_date;
2844 ap_invoice_lines_all_rec.period_name := ap_invoice_lines_rec.period_name;
2845 ap_invoice_lines_all_rec.deferred_acctg_flag := ap_invoice_lines_rec.deferred_acctg_flag;
2846 ap_invoice_lines_all_rec.def_acctg_start_date := ap_invoice_lines_rec.def_acctg_start_date;
2847 ap_invoice_lines_all_rec.def_acctg_end_date := ap_invoice_lines_rec.def_acctg_end_date;
2848 ap_invoice_lines_all_rec.def_acctg_number_of_periods := ap_invoice_lines_rec.def_acctg_number_of_periods;
2849 ap_invoice_lines_all_rec.def_acctg_period_type := ap_invoice_lines_rec.def_acctg_period_type;
2850 ap_invoice_lines_all_rec.set_of_books_id := ap_invoice_lines_rec.set_of_books_id;
2851 ap_invoice_lines_all_rec.amount := - jai_doc_taxes_rec.tax_amt; --negative amount for liability line
2852 ap_invoice_lines_all_rec.wfapproval_status := ap_invoice_lines_rec.wfapproval_status;
2853 ap_invoice_lines_all_rec.creation_date := SYSDATE;
2854 ap_invoice_lines_all_rec.created_by := ln_user_id;
2855 ap_invoice_lines_all_rec.last_updated_by := ln_user_id;
2856 ap_invoice_lines_all_rec.last_update_date := SYSDATE;
2857 ap_invoice_lines_all_rec.last_update_login := ln_login_id;
2858 ap_invoice_lines_all_rec.project_id := ln_project_id;
2859 ap_invoice_lines_all_rec.task_id := ln_task_id;
2860 ap_invoice_lines_all_rec.expenditure_type := lv_expenditure_type;
2861 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
2862 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_org_id ;
2863 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID; --jai application ID 7000
2864 ap_invoice_lines_all_rec.product_table := G_PRODUCT_TABLE; --product table
2865 ap_invoice_lines_all_rec.reference_key1 := jai_doc_taxes_rec.tax_id; --tax id -> reference_key1
2866 ap_invoice_lines_all_rec.reference_key2 := ap_invoice_lines_rec.line_number; --item invoice line number -> reference_key2
2867 Insert_ap_inv_line(ap_invoice_lines_all_rec);
2868
2869 --log for debug
2870 IF ( ln_proc_level >= ln_dbg_level)
2871 THEN
2872 FND_LOG.STRING ( ln_proc_level
2873 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2874 || '.debug Info.'
2875 , 'Table ap_invoice_lines_all for liability line inserted '
2876 );
2877 END IF; --( ln_proc_level >= ln_dbg_level )
2878
2879 ln_dist_acct_ccid :=
2880 Get_ST_Reverse_Ccid
2881 ( pn_invoice_id => ln_invoice_id
2882 , pn_item_line_number => ap_invoice_lines_rec.line_number
2883 , pn_organization_id => lv_organization_id --Replaced pn_organization_id with lv_organization_id for bug#9206909
2884 , pn_location_id => lv_location_id --Replaced pn_location_id with lv_location_id for bug#9206909
2885 , pn_tax_type_code => tax_rec.tax_type
2886 , pn_tax_acct_ccid => tax_rec.tax_account_id
2887 , pv_tax_type => 'FR' -- for liability line, allways get CCID from regime setup
2888 , pv_ac_type => GV_INTERIM_LIABILITY
2889 );
2890
2891 SELECT
2892 ap_invoice_distributions_s.NEXTVAL
2893 INTO
2894 ln_inv_dist_id
2895 FROM DUAL;
2896 select invoice_distribution_id into lv_invoice_distribution_id
2897 FROM ap_invoice_distributions_all
2898 WHERE invoice_id = pn_invoice_id
2899 AND invoice_line_number = pn_line_number
2900 AND distribution_line_number =(select min(distribution_line_number) from ap_invoice_distributions_all
2901 where invoice_id = pn_invoice_id AND invoice_line_number = pn_line_number) ;
2902 -- IF (ap_invoice_dist_rec.assets_tracking_flag = 'N')
2903 IF ( ln_dist_asst_trck_flag = 'N')
2904 THEN
2905 ln_chargeble_acct_ccid :=NULL;
2906 ELSE
2907 ln_chargeble_acct_ccid := lv_invoice_distribution_id;
2908
2909 END IF;
2910
2911 SELECT count(*)
2912 INTO l_null_event_id
2913 FROM ap_invoice_distributions aid
2914 WHERE aid.invoice_id = ln_invoice_id
2915 AND aid.accounting_event_id is NULL;
2916
2917 if l_null_event_id>0
2918 then
2919 AP_Accounting_Events_Pkg.Create_Events(
2920 p_event_type => 'INVOICES',
2921 p_doc_type => NULL,
2922 p_doc_id => ln_invoice_id,
2923 p_accounting_date => NULL,
2924 p_accounting_event_id => ln_accounting_event_id,
2925 p_checkrun_name => NULL,
2926 p_calling_sequence => 'Called from JAIAPPRCB');
2927 end if;
2928
2929 --insert into ap_distribution_lines_all
2930 ap_invoice_dist_all_rec := NULL;
2931 ap_invoice_dist_all_rec.accounting_date := ap_invoice_dist_rec.accounting_date;
2932 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
2933 ap_invoice_dist_all_rec.assets_addition_flag := ln_dist_asst_add_flag;
2934 ap_invoice_dist_all_rec.assets_tracking_flag := ln_dist_asst_trck_flag;
2935 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
2936 ap_invoice_dist_all_rec.distribution_line_number := ln_distribution_line_number;
2937 ap_invoice_dist_all_rec.dist_code_combination_id := ln_dist_acct_ccid;
2938 ap_invoice_dist_all_rec.invoice_id := ln_invoice_id;
2939 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
2940 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
2941 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
2942 ap_invoice_dist_all_rec.period_name := ap_invoice_lines_rec.period_name;
2943 ap_invoice_dist_all_rec.set_of_books_id := ap_invoice_lines_rec.set_of_books_id;
2944 ap_invoice_dist_all_rec.amount := - jai_doc_taxes_rec.tax_amt; --negative amount for liablitiy
2945 ap_invoice_dist_all_rec.batch_id := ln_batch_id; --invoice header level
2946 ap_invoice_dist_all_rec.created_by := ln_user_id;
2947 ap_invoice_dist_all_rec.creation_date := SYSDATE;
2948 ap_invoice_dist_all_rec.description := tax_rec.tax_name;
2949 ap_invoice_dist_all_rec.exchange_rate_variance := '';
2950 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
2951 ap_invoice_dist_all_rec.match_status_flag := ap_invoice_dist_rec.match_status_flag;
2952 ap_invoice_dist_all_rec.posted_flag := 'N';
2953 ap_invoice_dist_all_rec.rate_var_code_combination_id := '';
2954 ap_invoice_dist_all_rec.reversal_flag := NVL(ap_invoice_dist_rec.reversal_flag,'N');
2955 ap_invoice_dist_all_rec.program_application_id := ap_invoice_dist_rec.program_application_id;
2956 ap_invoice_dist_all_rec.program_id := ap_invoice_dist_rec.program_id;
2957 ap_invoice_dist_all_rec.program_update_date := ap_invoice_dist_rec.program_update_date;
2958 ap_invoice_dist_all_rec.accts_pay_code_combination_id := ap_invoice_dist_rec.accts_pay_code_combination_id;
2959 ap_invoice_dist_all_rec.invoice_distribution_id := ln_inv_dist_id;
2960 ap_invoice_dist_all_rec.quantity_invoiced := -1;
2961 ap_invoice_dist_all_rec.po_distribution_id := '';
2962 ap_invoice_dist_all_rec.rcv_transaction_id := '';
2963 ap_invoice_dist_all_rec.price_var_code_combination_id := ap_invoice_dist_rec.rcv_transaction_id;
2964 ap_invoice_dist_all_rec.invoice_price_variance := ap_invoice_dist_rec.invoice_price_variance;
2965 ap_invoice_dist_all_rec.base_invoice_price_variance := ap_invoice_dist_rec.base_invoice_price_variance;
2966 ap_invoice_dist_all_rec.matched_uom_lookup_code := ap_invoice_dist_rec.matched_uom_lookup_code;
2967 ap_invoice_dist_all_rec.invoice_line_number := ln_max_pro_line_num;
2968 ap_invoice_dist_all_rec.org_id := ap_invoice_lines_rec.org_id;
2969 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := ln_chargeble_acct_ccid;
2970 ap_invoice_dist_all_rec.project_id := ln_dist_project_id;
2971 ap_invoice_dist_all_rec.task_id := ln_dist_task_id;
2972 ap_invoice_dist_all_rec.expenditure_type := ln_dist_exp_type;
2973 ap_invoice_dist_all_rec.expenditure_item_date := ld_dist_exp_item_date;
2974 ap_invoice_dist_all_rec.expenditure_organization_id := ln_dist_exp_org_id;
2975 ap_invoice_dist_all_rec.project_accounting_context := ln_dist_pa_context;
2976 ap_invoice_dist_all_rec.pa_addition_flag := ln_dist_pa_addition_flag;
2977 ap_invoice_dist_all_rec.DISTRIBUTION_CLASS := lv_dist_class;
2978 ap_invoice_dist_all_rec.TAX_RECOVERABLE_FLAG := lv_tax_recoverable_flag;
2979 ap_invoice_dist_all_rec.accounting_event_id := nvl(ap_invoice_dist_rec.accounting_event_id ,ln_accounting_event_id);
2980 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
2981
2982 --log for debug
2983 IF ( ln_proc_level >= ln_dbg_level)
2984 THEN
2985 FND_LOG.STRING ( ln_proc_level
2986 , GV_MODULE_PREFIX ||'.'|| lv_proc_name
2987 || '.debug Info.'
2988 , 'Table ap_distribution_lines_all for liability line inserted '
2989 );
2990 END IF; --( ln_proc_level >= ln_dbg_level )
2991 END IF; -- NVL(jai_doc_taxes_rec.inc_tax_flag,'N')='N'
2992 END LOOP; -- (all taxes for a given parent line number)
2993 END LOOP; -- (ap_invoice_lines_rec IN ap_invoice_lines_cur,second time)
2994
2995 --log for debug
2996 IF ( ln_proc_level >= ln_dbg_level)
2997 THEN
2998 FND_LOG.STRING ( ln_proc_level
2999 , GV_MODULE_PREFIX ||'.'|| lv_proc_name || '.end'
3000 , 'Exit procedure'
3001 );
3002 END IF; --( ln_proc_level >= ln_dbg_level )
3003
3004
3005 EXCEPTION
3006 WHEN OTHERS THEN
3007 IF ( ln_proc_level >= ln_dbg_level)
3008 THEN
3009 FND_LOG.STRING ( ln_proc_level
3010 , GV_MODULE_PREFIX|| '.'|| lv_proc_name
3011 || '. Other_Exception '
3012 , SQLCODE || ':' || SQLERRM
3013 );
3014 END IF; --( ln_proc_level >= ln_dbg_level) ;
3015 RAISE;
3016 END Populate_ST_RVRS_Dist;
3017
3018
3019 /*
3020 REM +======================================================================+
3021 REM Created By : Chong
3022 REM Creation Date : Jun 5, 2012
3023 REM Bug Number/ER Name : Reverse charge service tax
3024 REM SubProgram Name : Populate_MTCH_ST_RVRS_Dist
3025 REM Type : Process API
3026 REM Purpose : Populate reverse charge service tax lines for AP/AR match invoice line
3027 REM
3028 REM
3029 REM TDD Reference :
3030 REM
3031 REM Assumptions :
3032 REM
3033 REM Parameter IN/OUT Type Required Description and Purpose
3034 REM ----------------------- ------ ------------------ ---------- ------------------------------------
3035 REM inv_id IN NUMBER Y
3036 REM pn_invoice_line_number IN NUMBER Y
3037 REM po_dist_id IN NUMBER Y
3038 REM qty_inv IN NUMBER Y
3039 REM p_shipment_header_id IN NUMBER Y
3040 REM p_packing_slip_num IN VARCHAR2 Y
3041 REM p_receipt_code IN VARCHAR2 Y
3042 REM p_rematch IN VARCHAR2 Y
3043 REM rcv_tran_id IN NUMBER Y
3044 REM v_dist_amount IN NUMBER Y
3045 REM v_org_id IN NUMBER Y
3046 REM p_project_id IN NUMBER Y
3047 REM p_task_id IN NUMBER Y
3048 REM p_expenditure_type IN VARCHAR2 Y
3049 REM p_expenditure_organization_id IN NUMBER Y
3050 REM p_expenditure_item_date IN NUMBER Y
3051 REM p_caid IN NUMBER Y
3052 REM errbuf OUT VARCHAR2 Y
3053 REM retcode OUT VARCHAR2 Y
3054 REM
3055 REM CALLED BY
3056 REM JAI_AP_MATCH_TAX_PKG.process_online
3057 REM +=====================================================================================================+
3058 */
3059 PROCEDURE Populate_MTCH_ST_RVRS_Dist
3060 (
3061 errbuf OUT NOCOPY VARCHAR2,
3062 retcode OUT NOCOPY VARCHAR2,
3063 inv_id IN NUMBER,
3064 pn_invoice_line_number IN NUMBER, -- Using pn_invoice_line_number instead of dist_line_no for Bug#4445989
3065 po_dist_id IN NUMBER,
3066 qty_inv IN NUMBER,
3067 p_shipment_header_id IN NUMBER,
3068 p_packing_slip_num IN VARCHAR2,
3069 p_receipt_code VARCHAR2,
3070 p_rematch VARCHAR2,
3071 rcv_tran_id IN NUMBER,
3072 v_dist_amount IN NUMBER,
3073 v_org_id IN NUMBER
3074 , p_project_id NUMBER
3075 , p_task_id NUMBER
3076 , p_expenditure_type VARCHAR2
3077 , p_expenditure_organization_id NUMBER
3078 , p_expenditure_item_date DATE
3079 , p_caid NUMBER
3080 )
3081 IS
3082 CURSOR get_ven_info(v_invoice_id NUMBER) IS
3083 SELECT vendor_id, vendor_site_id, org_id, cancelled_date, invoice_num, set_of_books_id, -- added for bug#3354932
3084 legal_entity_id /* rallamse bug#4448789 */
3085 FROM ap_invoices_all
3086 WHERE invoice_id = v_invoice_id;
3087
3088 Cursor get_discard_info (ln_invoice_id number) is /*Added by nprashar for bug # 12832424*/
3089 Select nvl(discarded_flag,'N') from ap_invoice_lines_all
3090 where invoice_id = ln_invoice_id
3091 and line_number = pn_invoice_line_number
3092 and po_distribution_id = po_dist_id;
3093
3094 Cursor c_match_tax_lines (p_invoice_id number) is /*Added by nprashar for bug # 12832424*/
3095 select invoice_id, po_distribution_id, invoice_distribution_id, rcv_transaction_id,invoice_line_number,
3096 parent_invoice_distribution_id
3097 from jai_ap_match_inv_taxes
3098 where line_type_lookup_code = 'MISCELLANEOUS'
3099 and invoice_id = p_invoice_id
3100 and parent_invoice_line_number = pn_invoice_line_number
3101 and po_distribution_id = po_dist_id;
3102
3103 CURSOR c_functional_currency(p_sob NUMBER) IS -- cursor added for bug#3354932
3104 SELECT currency_code
3105 FROM gl_sets_of_books
3106 WHERE set_of_books_id = p_sob;
3107
3108 CURSOR checking_for_packing_slip(ven_id NUMBER, ven_site_id NUMBER, v_org_id NUMBER) IS
3109 SELECT pay_on_code, pay_on_receipt_summary_code
3110 FROM po_vendor_sites_all
3111 WHERE vendor_id = ven_id
3112 AND vendor_site_id = ven_site_id
3113 AND NVL(org_id, -1) = NVL(v_org_id, -1);
3114
3115 /*below cursor added for bug 6595773*/
3116 cursor c_get_ship_to_org_loc (cpn_line_location_id po_line_locations_all.line_location_id%type)
3117 is
3118 select ship_to_organization_id
3119 ,ship_to_location_id
3120 from po_line_locations_all plla
3121 where plla.line_location_id = cpn_line_location_id;
3122
3123
3124 -- Cursor modified to use pn_invoice_line_number instead of distribution_line_number, bug#4445989
3125 CURSOR cur_items(inv_id IN NUMBER, line_no IN NUMBER, cpn_min_dist_line_no number) IS
3126 SELECT pod.po_header_id,
3127 pod.po_line_id,
3128 pod.line_location_id,
3129 pod.set_of_books_id,
3130 pod.org_id,
3131 poh.rate,
3132 poh.rate_type,
3133 pod.rate_date,
3134 poh.currency_code,
3135 api.last_update_login,
3136 apd.dist_code_combination_id,
3137 api.creation_date,
3138 api.created_by,
3139 api.last_update_date,
3140 api.last_updated_by,
3141 api.invoice_date
3142 FROM ap_invoices_all api,
3143 ap_invoice_distributions_all apd,
3144 po_distributions_all pod,
3145 po_headers_all poh
3146 WHERE apd.invoice_id = api.invoice_id
3147 AND pod.po_header_id = poh.po_header_id
3148 AND apd.po_distribution_id = pod.po_distribution_id
3149 AND apd.invoice_line_number = line_no
3150 AND api.invoice_id = inv_id
3151 AND apd.distribution_line_number = cpn_min_dist_line_no;
3152 -- Added by Brathod to get minimum invoice line number from invoice distributions, Bug#4445989
3153 CURSOR cur_get_min_dist_linenum
3154 ( cpn_invoice_id AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_ID%TYPE
3155 ,cpn_invoice_line_number AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_LINE_NUMBER%TYPE
3156 )
3157 IS
3158 SELECT min(distribution_line_number)
3159 FROM ap_invoice_distributions_all apid
3160 WHERE apid.invoice_id = cpn_invoice_id
3161 AND apid.invoice_line_number = cpn_invoice_line_number;
3162
3163
3164 CURSOR from_po_distributions(po_dist_id NUMBER) IS
3165 SELECT line_location_id, po_line_id
3166 FROM po_distributions_all
3167 WHERE po_distribution_id = po_dist_id;
3168
3169 ln_min_dist_line_num NUMBER ;
3170 -- End of Bug # 4445989
3171
3172
3173 /*bug 9346307*/
3174 CURSOR c_po_details IS
3175 SELECT po_line_id, po_line_location_id
3176 FROM ap_invoice_lines_all
3177 WHERE invoice_id = inv_id
3178 AND line_number = pn_invoice_line_number;
3179
3180 CURSOR c_ap_dist(cp_invoice_id NUMBER, cp_line_num NUMBER) IS
3181 SELECT a.accounting_date,
3182 a.accrual_posted_flag,
3183 a.assets_addition_flag,
3184 a.assets_tracking_flag,
3185 a.cash_posted_flag,
3186 a.dist_code_combination_id,
3187 a.last_updated_by,
3188 a.last_update_date,
3189 a.line_type_lookup_code,
3190 a.period_name,
3191 a.set_of_books_id,
3192 a.amount,
3193 a.base_amount,
3194 a.batch_id,
3195 a.created_by,
3196 a.creation_date,
3197 a.description,
3198 a.accts_pay_code_combination_id,
3199 a.exchange_rate_variance,
3200 a.last_update_login,
3201 a.match_status_flag,
3202 a.posted_flag,
3203 a.rate_var_code_combination_id,
3204 a.reversal_flag,
3205 a.vat_code,
3206 a.exchange_date,
3207 NVL(a.exchange_rate,1) exchange_rate,
3208 a.exchange_rate_type,
3209 a.price_adjustment_flag,
3210 a.program_application_id,
3211 a.program_id,
3212 a.program_update_date,
3213 a.global_attribute1,
3214 a.global_attribute2,
3215 a.global_attribute3,
3216 a.po_distribution_id,--rchandan for bug#4333488
3217 a.project_id,
3218 a.task_id,
3219 a.expenditure_type,
3220 a.expenditure_item_date,
3221 a.expenditure_organization_id,
3222 a.quantity_invoiced,
3223 Nvl(a.quantity_invoiced,1)/Nvl(b.quantity_invoiced,1) qty_apportion_factor,
3224 a.unit_price,
3225 price_var_code_combination_id,
3226 invoice_distribution_id,
3227 matched_uom_lookup_code,
3228 invoice_price_variance,
3229 a.distribution_line_number,
3230 a.org_id -- Test for Bug 4863208
3231 /* 5763527 */
3232 ,project_accounting_context
3233 ,pa_addition_flag
3234 /* End 5763527 */
3235 ,a.dist_match_type --Added by nprashar for bug # 12832424
3236 FROM ap_invoice_distributions_all a,
3237 ap_invoice_lines_all b
3238 WHERE a.invoice_id = cp_invoice_id
3239 AND a.invoice_line_number = cp_line_num
3240 AND b.invoice_id = cp_invoice_id
3241 AND b.line_number = cp_line_num
3242 AND a.invoice_id = b.invoice_id
3243 AND a.invoice_line_number = b.line_number
3244 ORDER BY a.distribution_line_number;
3245
3246 r_ap_dist c_ap_dist%ROWTYPE;
3247 v_tax_amt_dist NUMBER;
3248
3249
3250 ln_po_line_id ap_invoice_lines_all.po_line_id%TYPE;
3251 ln_po_line_location_id ap_invoice_lines_all.po_line_location_id%TYPE;
3252 ln_po_dist_id ap_invoice_lines_all.po_distribution_id%TYPE;
3253 /*end bug 9346307*/
3254
3255 CURSOR from_line_location_taxes
3256 ( p_line_location_id NUMBER
3257 , vend_id NUMBER
3258 , p_source VARCHAR2 -- Added by Jason Liu for bug#6918386
3259 )
3260 IS
3261 SELECT
3262 jpt.tax_id
3263 , jpt.tax_amount
3264 , jpt.currency
3265 , jpt.tax_target_amount
3266 , nvl(jpt.modvat_flag,'Y') modvat_flag
3267 , jpt.tax_type
3268 , jpt.tax_line_no -- added by kunkumar for bug 5593895
3269 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag --Added by Eric for Inclusive Tax
3270 ,nvl(jcta.vat_flag,'N') VAT_FLAG
3271 ,nvl(jcta.adhoc_flag,'N') adhoc_flag
3272 FROM
3273 JAI_PO_TAXES jpt
3274 , JAI_CMN_TAXES_ALL jcta --Added by Eric for Inclusive Tax
3275 -- WHERE line_focus_id = focus_id
3276 WHERE line_location_id = p_line_location_id -- 3096578
3277 AND NVL(UPPER(jpt.tax_type), 'A')
3278 NOT IN( 'TDS'
3279 , 'CVD'
3280 , jai_constants.tax_type_add_cvd -- Date 31/10/2006 Bug 5228046 added by SACSETHI
3281 , 'CUSTOMS'
3282 , jai_constants.tax_type_cvd_edu_cess
3283 , jai_constants.tax_type_customs_edu_cess
3284 , jai_constants.tax_type_sh_cvd_edu_cess
3285 , jai_constants.tax_type_sh_customs_edu_cess --Added higher education cess by csahoo for bug#5989740
3286 )
3287 AND jcta.tax_id = jpt.tax_id
3288 AND NVL(jpt.vendor_id, -1) = vend_id --Modified by kunkumar for bug 5593895
3289 AND p_source <> 'PPA'
3290 --Added by Chong for reverse charge service tax on 2012/07/05 start
3291 ---------------------------------------------------------------------
3292 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
3293 ---------------------------------------------------------------------
3294 --Added by Chong for reverse charge service tax on 2012/07/05 end
3295 -- Added by Jason Liu for bug#6918386
3296 ---------------------------------------------------------------------
3297 UNION
3298
3299 SELECT
3300 jrl.tax_id
3301 , (jrl.modified_tax_amount - jrl.original_tax_amount) tax_amount
3302 , jrl.currency_code currency
3303 , (jrl.modified_tax_amount - jrl.original_tax_amount) tax_target_amount
3304 , jrl.recoverable_flag modvat_flag
3305 , jrl.tax_type tax_type
3306 , jrl.tax_line_no tax_line_no
3307 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag
3308 ,nvl(jcta.vat_flag,'N') VAT_FLAG
3309 ,nvl(jcta.adhoc_flag,'N') adhoc_flag
3310 FROM
3311 jai_retro_tax_changes jrl
3312 , jai_retro_line_changes jrlc
3313 , jai_cmn_taxes_all jcta
3314 WHERE jrlc.line_location_id = p_line_location_id
3315 AND jrlc.line_change_id = jrl.line_change_id
3316 AND jrlc.doc_version_number = (SELECT max(doc_version_number)
3317 FROM jai_retro_line_changes
3318 WHERE doc_type IN ('STANDARD PO', 'RELEASE')
3319 AND doc_line_id = jrlc.doc_line_id
3320 )
3321 AND jrlc.doc_type IN ('STANDARD PO', 'RELEASE')
3322 AND jrl.tax_id = jcta.tax_id
3323 AND NVL(jrlc.vendor_id, -1) = vend_id
3324 AND p_source = 'PPA'
3325 AND NVL(upper(jrl.tax_type),'TDS') NOT IN ( jai_constants.tax_type_tds
3326 , jai_constants.tax_type_cvd
3327 , jai_constants.tax_type_add_cvd
3328 , jai_constants.tax_type_customs
3329 , jai_constants.tax_type_sh_customs_edu_cess
3330 , jai_constants.tax_type_customs_edu_cess
3331 , jai_constants.tax_type_sh_cvd_edu_cess
3332 , jai_constants.tax_type_cvd_edu_cess
3333 )
3334 AND NVL(jrl.third_party_flag, 'N') = 'N' -- Added by Jason Liu for bug#6936416
3335 ---------------------------------------------------------------------
3336 --Added by Chong for reverse charge service tax on 2012/07/05 start
3337 ---------------------------------------------------------------------
3338 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
3339 ---------------------------------------------------------------------
3340 --Added by Chong for reverse charge service tax on 2012/07/05 end
3341 ORDER BY tax_line_no; -- added bug#3038566
3342 -- AND tax_amount <> 0 ; -- commented by aparajita on 10/03/2003 for bug # 284136
3343
3344 CURSOR c_tax(t_id NUMBER) IS
3345 SELECT tax_name,
3346 tax_account_id,
3347 mod_cr_percentage, -- bug 3051828
3348 adhoc_flag, -- added by aparajita on 23/01/2003 for bug # 2694011
3349 nvl(tax_rate,-1) tax_rate, --Modified by kunkumar for bug 5593895
3350 tax_type,
3351 NVL(rounding_factor,0) rounding_factor /* added by vumaasha for bug 6761425 */
3352 FROM JAI_CMN_TAXES_ALL
3353 WHERE tax_id = t_id;
3354
3355 CURSOR c_inv(inv_id NUMBER) IS
3356 SELECT batch_id,source
3357 FROM ap_invoices_all
3358 WHERE invoice_id = inv_id;
3359
3360 CURSOR for_org_id(inv_id NUMBER) IS
3361 SELECT org_id, vendor_id, NVL(exchange_rate, 1) exchange_rate, invoice_currency_code
3362 FROM ap_invoices_all
3363 WHERE invoice_id = inv_id;
3364
3365 CURSOR for_acct_id(orgn_id NUMBER) IS
3366 SELECT accts_pay_code_combination_id
3367 FROM ap_system_parameters_all
3368 WHERE NVL(org_id, -1) = NVL(orgn_id, -1);--uncommented and modified by kunkumar for bug 5593895
3369 --commented the above by Sanjikum For Bug#4474501, as this cursor is not being used anywhere
3370
3371 CURSOR for_dist_insertion(cpn_invoice_id NUMBER, cpn_inv_line_num NUMBER,cpn_min_dist_line_num NUMBER) IS /* Picks up dtls from std apps inserted line */
3372 SELECT a.accounting_date,a.accrual_posted_flag,
3373 a.assets_addition_flag,a.assets_tracking_flag,
3374 a.cash_posted_flag, a.dist_code_combination_id,
3375 a.last_updated_by,a.last_update_date,
3376 a.line_type_lookup_code, a.period_name,
3377 a.set_of_books_id,a.amount,a.base_amount,
3378 a.batch_id,a.created_by,a.creation_date,
3379 a.description,a.accts_pay_code_combination_id,
3380 a.exchange_rate_variance,a.last_update_login,
3381 a.match_status_flag,a.posted_flag, a.rate_var_code_combination_id,
3382 a.reversal_flag,a.vat_code,a.exchange_date,
3383 NVL(a.exchange_rate,1) exchange_rate,
3384 a.exchange_rate_type,a.price_adjustment_flag,
3385 a.program_application_id,a.program_id,
3386 a.program_update_date,a.global_attribute1,
3387 a.global_attribute2,
3388 a.global_attribute3, a.po_distribution_id,--rchandan for bug#4333488
3389 a.project_id,a.task_id,a.expenditure_type,a.expenditure_item_date,
3390 a.expenditure_organization_id, quantity_invoiced,
3391 a.unit_price, price_var_code_combination_id,
3392 invoice_distribution_id, matched_uom_lookup_code, invoice_price_variance,
3393 org_id -- Test for Bug 4863208
3394 /* 5763527 */
3395 ,project_accounting_context
3396 ,pa_addition_flag
3397 /* End 5763527 */
3398 , dist_match_type --Added by nprashar for bug # 12832424
3399 FROM ap_invoice_distributions_all a
3400 WHERE invoice_id = cpn_invoice_id
3401 AND invoice_line_number = cpn_inv_line_num
3402 AND distribution_line_number = cpn_min_dist_line_num;
3403
3404
3405 CURSOR tax_lines1_cur(tran_id NUMBER,ven_id NUMBER)
3406 IS
3407 SELECT
3408 jrl.tax_amount tax_amount
3409 , jrl.tax_id
3410 , jrl.currency
3411 , jrl.tax_type tax_type
3412 , jrl.modvat_flag
3413 , jrl.tax_line_no tax_line_no --modified by kunkumar for bug 5593895
3414 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag --Added by Eric for Inclusive Tax
3415 ,jcta.vat_flag vat_flag
3416 ,nvl(jcta.adhoc_flag,'N') adhoc_flag --12351311
3417 FROM
3418 JAI_RCV_LINE_TAXES jrl
3419 , RCV_SHIPMENT_LINES RSL
3420 , RCV_TRANSACTIONS RT
3421 , jai_cmn_taxes_all jcta
3422 WHERE jrl.shipment_line_id = rsl.shipment_line_id
3423 AND rt.shipment_line_id = rsl.shipment_line_id
3424 AND rt.transaction_id = tran_id
3425 AND jrl.vendor_id = ven_id
3426 AND jcta.tax_id = jrl.tax_id --Added by Eric for Inclusive Tax
3427 AND NVL(upper(jrl.tax_type),'TDS')
3428 NOT IN ( 'TDS'
3429 , 'CVD'
3430 , jai_constants.tax_type_add_cvd -- Date 31/10/2006 Bug 5228046 added by SACSETHI
3431 , 'CUSTOMS'
3432 , JAI_CONSTANTS.TAX_TYPE_SH_CUSTOMS_EDU_CESS
3433 , jai_constants.tax_type_customs_edu_cess /* added by ssawant for bug 5989740 */
3434 , JAI_CONSTANTS.TAX_TYPE_SH_CVD_EDU_CESS
3435 , jai_constants.tax_type_cvd_edu_cess /* added by ssawant for bug 5989740 */
3436 )
3437 --Added by Chong for reverse charge service tax on 2012/07/05 start
3438 ---------------------------------------------------------------------
3439 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
3440 ---------------------------------------------------------------------
3441 --Added by Chong for reverse charge service tax on 2012/07/05 end
3442 order by tax_line_no; -- added
3443
3444
3445 ----------------------------------------------- Receipt Matching Cursors ----------------------------
3446 /* Added by LGOPALSa. Bug 4210102.
3447 * Added CVD and Customs Education Cess
3448 * */
3449
3450 -- Modified by Jason Liu for retroactive price on 2008/01/09
3451 -- Added the parameter p_source, added the UNION(p_source = 'PPA')
3452 CURSOR r_tax_lines_cur(tran_id NUMBER,ven_id NUMBER,p_source IN VARCHAR2) IS
3453 SELECT
3454 jrl.tax_amount tax_amount
3455 , jrl.tax_id
3456 , jrl.currency
3457 , jrl.tax_type tax_type
3458 , jrl.modvat_flag
3459 , jrl.tax_line_no tax_line_no --Added by kunkumar for bug 5593895
3460 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag --Added by Eric for Inclusive Tax
3461 ,jcta.vat_flag vat_flag
3462 ,nvl(jcta.adhoc_flag,'N') ADHOC_FLAG --12351311
3463 FROM
3464 jai_rcv_line_taxes jrl
3465 , rcv_shipment_lines rsl
3466 , rcv_transactions rt
3467 , jai_cmn_taxes_all jcta --Added by Eric for Inclusive Tax
3468 WHERE jrl.shipment_line_id = rsl.shipment_line_id
3469 AND rt.shipment_line_id = rsl.shipment_line_id
3470 AND rt.transaction_id = tran_id
3471 AND jrl.vendor_id = ven_id
3472 AND jcta.tax_id = jrl.tax_id --Added by Eric for Inclusive Tax
3473 AND NVL(upper(jrl.tax_type),'TDS') NOT IN
3474 ('TDS',
3475 'CVD',
3476 jai_constants.tax_type_add_cvd , -- Date 31/10/2006 Bug 5228046 added by SACSETHI
3477 'CUSTOMS',
3478 JAI_CONSTANTS.TAX_TYPE_SH_CUSTOMS_EDU_CESS,jai_constants.tax_type_customs_edu_cess, /* added by ssawant for bug 5989740 */
3479 JAI_CONSTANTS.TAX_TYPE_SH_CVD_EDU_CESS,jai_constants.tax_type_cvd_edu_cess /* added by ssawant for bug 5989740 */
3480 )
3481 AND p_source <> 'PPA'
3482 --Added by Chong for reverse charge service tax on 2012/07/05 start
3483 ---------------------------------------------------------------------
3484 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
3485 ---------------------------------------------------------------------
3486 --Added by Chong for reverse charge service tax on 2012/07/05 end
3487 UNION
3488
3489 SELECT
3490 (jrl.modified_tax_amount - jrl.original_tax_amount) tax_amount
3491 , jrl.tax_id
3492 , jrl.currency_code currency
3493 , jrl.tax_type tax_type
3494 , jrl.recoverable_flag modvat_flag
3495 , jrl.tax_line_no tax_line_no
3496 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag
3497 ,jcta.vat_flag vat_flag
3498 ,nvl(jcta.adhoc_flag,'N') ADHOC_FLAG --12351311
3499 FROM
3500 jai_retro_tax_changes jrl
3501 , rcv_shipment_lines rsl
3502 , rcv_transactions rt
3503 , jai_retro_line_changes jrlc
3504 , jai_cmn_taxes_all jcta
3505 WHERE jrlc.doc_line_id = rsl.shipment_line_id
3506 AND jrlc.line_change_id = jrl.line_change_id
3507 AND jrlc.doc_version_number = (SELECT max(doc_version_number)
3508 FROM jai_retro_line_changes
3509 WHERE doc_type = 'RECEIPT'
3510 AND doc_line_id = jrlc.doc_line_id
3511 )
3512 AND jrlc.doc_type = 'RECEIPT'
3513 AND jrl.tax_id = jcta.tax_id
3514 AND rt.shipment_line_id = rsl.shipment_line_id
3515 AND rt.transaction_id = tran_id
3516 AND jrlc.vendor_id = ven_id
3517 AND p_source = 'PPA'
3518 AND NVL(upper(jrl.tax_type),'TDS') NOT IN ( jai_constants.tax_type_tds
3519 , jai_constants.tax_type_cvd
3520 , jai_constants.tax_type_add_cvd
3521 , jai_constants.tax_type_customs
3522 , jai_constants.tax_type_sh_customs_edu_cess
3523 , jai_constants.tax_type_customs_edu_cess
3524 , jai_constants.tax_type_sh_cvd_edu_cess
3525 , jai_constants.tax_type_cvd_edu_cess
3526 )
3527 AND NVL(jrl.third_party_flag, 'N') = 'N' -- Added by Jason Liu for bug#6936416
3528 --Added by Chong for reverse charge service tax on 2012/07/05 start
3529 ---------------------------------------------------------------------
3530 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
3531 ---------------------------------------------------------------------
3532 --Added by Chong for reverse charge service tax on 2012/07/05 end
3533 -- GROUP BY jrl.tax_id,jrl.currency,jrl.tax_type, jrl.modvat_flag; commented by bug#3038566
3534 order by tax_line_no; -- added bug#3038566
3535
3536
3537 -- Start add for bug#3632810
3538 CURSOR c_get_invoice_distribution is -- bug#3332988
3539 select ap_invoice_distributions_s.nextval
3540 from dual;
3541
3542 -- start addition by ssumaith -bug# 3127834
3543
3544 cursor c_fnd_curr_precision(cp_currency_code fnd_currencies.currency_code%type) is
3545 select precision
3546 from fnd_currencies
3547 where currency_code = cp_currency_code;
3548
3549 -- ends here additions by ssumaith -bug# 3127834
3550 --Added by kunkumar for porting 4454499
3551 Cursor c_tax_curr_prec(cp_tax_id jai_cmn_taxes_all.tax_id%type) is
3552 --select NVL(rounding_factor,-1) -- for bug 13954092 by anupgupt
3553 select NVL(rounding_factor,2) -- for bug 16226028
3554 from jai_cmn_taxes_all
3555 where tax_id = cp_tax_id ;
3556
3557 /*Bug 8866084 - Added cursor to fetch Source of Invoice*/
3558 cursor c_get_ap_invoice_src (p_inv_id NUMBER)
3559 is
3560 select source
3561 from ap_invoices_all
3562 where invoice_id = p_inv_id;
3563
3564 ln_source VARCHAR2(50);
3565
3566 ln_precision fnd_currencies.precision%type; -- added by sssumaith - bug# 3127834
3567 ln_tax_precision jai_cmn_taxes_all.rounding_factor%type;
3568 v_po_unit_meas_lookup_code po_lines_all.unit_meas_lookup_code%type;
3569 r_tax_lines_rec r_tax_lines_cur%ROWTYPE;
3570 /* r_cur_items_rec r_cur_items%ROWTYPE; Bug#4095234*/
3571 vPoUomCode mtl_units_of_measure.unit_of_measure%TYPE;
3572 vReceiptUomCode mtl_units_of_measure.unit_of_measure%TYPE;
3573 vReceiptToPoUomConv NUMBER;
3574 v_attribute12 VARCHAR2(150);
3575 v_ATTRIBUTE2 VARCHAR2(150);
3576 v_sup_po_header_id NUMBER;
3577 v_sup_po_line_id NUMBER;
3578 v_sup_line_location_id NUMBER;
3579 v_sup_set_of_books_id NUMBER;
3580 v_sup_org_id NUMBER;
3581 v_sup_conversion_rate NUMBER;
3582 v_sup_tax_date DATE;
3583 v_sup_currency VARCHAR2(10);
3584 v_sup_invoice_date DATE;
3585 v_invoice_num VARCHAR2(50);
3586 v_sup_inv_type VARCHAR2(25);
3587 get_ven_info_rec get_ven_info%ROWTYPE;
3588 chk_for_pcking_slip_rec checking_for_packing_slip%ROWTYPE;
3589 v_tax_variance_inv_cur number; -- bug # 2775043
3590 v_tax_variance_fun_cur number; -- bug # 2775043
3591 v_price_var_accnt ap_invoice_distributions_all.price_var_code_combination_id%type;
3592 v_distribution_no ap_invoice_distributions_all.distribution_line_number%type;
3593 v_assets_tracking_flag ap_invoice_distributions_all.assets_tracking_flag%type;
3594 v_dist_code_combination_id ap_invoice_distributions_all.dist_code_combination_id%type;--bug#367196
3595 v_dist_ccid_liability ap_invoice_distributions_all.dist_code_combination_id%type;
3596 v_update_payment_schedule boolean; -- bug#3218978
3597 v_invoice_distribution_id ap_invoice_distributions_all.invoice_distribution_id%type; -- bug#3332988
3598 v_functional_currency gl_sets_of_books.currency_code%type; -- bug#3354932
3599 v_batch_id NUMBER;
3600 c_tax_rec c_tax%ROWTYPE;
3601 v_source VARCHAR2(25);
3602 apccid ap_invoices_all.ACCTS_PAY_CODE_COMBINATION_ID%TYPE;
3603 cur_items_rec cur_items%ROWTYPE;
3604 from_po_distributions_rec from_po_distributions%ROWTYPE;
3605 for_dist_insertion_rec for_dist_insertion%ROWTYPE;
3606 cum_tax_amt NUMBER := -1;--modified by kunkumar for 5593895
3607 v_tax_amount NUMBER;
3608 v_tax_amount_liability NUMBER;
3609 for_org_id_rec for_org_id%ROWTYPE;
3610 v_apportn_factor_for_item_line NUMBER; -- Bug#3752887
3611 v_apportn_factor_for_adhoc NUMBER; --Added by nprashar for bug # 13363329
3612 ln_ship_to_organization_id po_line_locations_all.ship_to_organization_id%type;
3613 ln_ship_to_location_id po_line_locations_all.ship_to_location_id%type;
3614
3615
3616 /* 5763527 , Project costing Fwd porting*/
3617 ln_project_id ap_invoice_distributions_all.project_id%TYPE;
3618 ln_task_id ap_invoice_distributions_all.task_id%TYPE;
3619 lv_exp_type ap_invoice_distributions_all.expenditure_type%TYPE;
3620 ld_exp_item_date ap_invoice_distributions_all.expenditure_item_date%TYPE;
3621 ln_exp_organization_id ap_invoice_distributions_all.expenditure_organization_id%TYPE;
3622 lv_project_accounting_context ap_invoice_distributions_all.project_accounting_context%TYPE;
3623 lv_pa_addition_flag ap_invoice_distributions_all.pa_addition_flag%TYPE;
3624
3625 ln_lines_to_insert number;
3626 ln_nrec_tax_amt number;
3627 ln_rec_tax_amt number;
3628 lv_modvat_flag jai_ap_match_inv_taxes.recoverable_flag%type;
3629
3630 lv_excise_costing_flag varchar2 (1);
3631
3632 lv_tax_type varchar2(5);
3633 lv_tax_line_amount NUMBER := 0;
3634 lv_ap_line_to_inst_flag VARCHAR2(1);
3635 lv_tax_line_to_inst_flag VARCHAR2(1);
3636 ln_inclurec_tax_amt NUMBER;
3637 ap_invoice_lines_all_rec ap_invoice_lines_all%ROWTYPE;
3638 ap_invoice_dist_all_rec ap_invoice_distributions_all%ROWTYPE;
3639
3640 cursor c_get_excise_costing_flag (cp_rcv_transaction_id rcv_transactions.transaction_id%type,
3641 cp_organization_id JAI_RCV_TRANSACTIONS.organization_id%type, --Added by Bgowrava for Bug#7503308
3642 cp_shipment_header_id JAI_RCV_TRANSACTIONS.shipment_header_id%type, --Added by Bgowrava for Bug#7503308
3643 cp_txn_type JAI_RCV_TRANSACTIONS.transaction_type%type, --Added by Bgowrava for Bug#7503308
3644 cp_attribute1 VARCHAR2) --Added by Bgowrava for Bug#7503308
3645 is
3646 select attribute2 excise_costing_flag
3647 from jai_rcv_transactions jrcvt
3648 where jrcvt.parent_transaction_id = cp_rcv_transaction_id
3649 and jrcvt.organization_id = cp_organization_id --Added by Bgowrava for Bug#7503308
3650 and jrcvt.shipment_header_id = cp_shipment_header_id --Added by Bgowrava for Bug#7503308
3651 and jrcvt.transaction_type = cp_txn_type ;--'DELIVER' --Modified by Bgowrava for Bug#7503308
3652
3653 lv_account_type gl_code_combinations.account_type%TYPE;
3654
3655 /* Service Tax */
3656 cursor c_rcv_transactions(p_transaction_id number) is
3657 select po_line_id, organization_id
3658 from rcv_transactions
3659 where transaction_id = p_transaction_id;
3660
3661
3662 cursor c_po_lines_all(p_po_line_id number) is
3663 select item_id
3664 from po_lines_all
3665 where po_line_id = p_po_line_id;
3666
3667 /* Bug 5358788. Added by Lakshmi Gopalsami
3668 * Added parameter cp_regime_code instead of
3669 * hardcoding the value for service. This is required
3670 * for re-using the same cursor to avoid performance issue
3671 * in using jai_regime_tax_types_v.
3672 */
3673 cursor c_jai_regimes(cp_regime_code IN JAI_RGM_DEFINITIONS.regime_code%TYPE)
3674 IS
3675 select regime_id
3676 from JAI_RGM_DEFINITIONS
3677 where regime_code = cp_regime_code ; /* SERVICE or VAT */
3678
3679 cursor c_regime_tax_type(cp_regime_id number, cp_tax_type varchar2) is
3680 select attribute_code tax_type
3681 from JAI_RGM_REGISTRATIONS
3682 where regime_id = cp_regime_id
3683 and registration_type = jai_constants.regn_type_tax_types /* TAX_TYPES */
3684 and attribute_code = cp_tax_type;
3685
3686
3687 r_rcv_transactions c_rcv_transactions%rowtype;
3688 r_po_lines_all c_po_lines_all%rowtype;
3689 r_jai_regimes c_jai_regimes%rowtype;
3690 r_service_regime_tax_type c_regime_tax_type%rowtype;
3691 lv_is_item_an_expense varchar2(20); /* Service */
3692 lv_accounting_method_option varchar2(20); /* Service */
3693 lv_accrue_on_receipt_flag po_distributions_all.accrue_on_receipt_flag%type;
3694 /* Service Tax */
3695 ln_base_amount number ; -- kunkumar for bug 5593895
3696 /* Bug 5358788. Added by Lakshmi Gopalsami
3697 * Defined variable for fetching VAT regime/
3698 */
3699
3700 r_VAT_regime_tax_type c_regime_tax_type%rowtype;
3701 r_vat_regimes c_jai_regimes%rowtype;
3702
3703 /* Added by Brathod, Bug# 4445989 */
3704 --> Cursor to fetch the maximum line_number for current invoice, Bug# 4445989
3705 CURSOR cur_get_max_line_number
3706 IS
3707 SELECT max (line_number)
3708 FROM ap_invoice_lines_all
3709 WHERE invoice_id = inv_id;
3710
3711 --> Cursor to fetch maximum line from ap_invoice_lines_all for current invoice, Bug# 4445989
3712 CURSOR cur_get_max_ap_inv_line (cpn_max_line_num AP_INVOICE_LINES_ALL.LINE_NUMBER%TYPE)
3713 IS
3714 SELECT accounting_date
3715 ,period_name
3716 ,deferred_acctg_flag
3717 ,def_acctg_start_date
3718 ,def_acctg_end_date
3719 ,def_acctg_number_of_periods
3720 ,def_acctg_period_type
3721 ,set_of_books_id
3722 ,wfapproval_status -- Bug 4863208
3723 FROM ap_invoice_lines_all
3724 WHERE invoice_id = inv_id
3725 AND line_number = cpn_max_line_num;
3726
3727 -- Added by Jason Liu for retroactive price on 2008/01/09
3728 -----------------------------------------------------------
3729 CURSOR get_source_csr IS
3730 SELECT aia.source
3731 FROM ap_invoices_all aia
3732 WHERE aia.invoice_id = inv_id;
3733 lv_source ap_invoices_all.source%TYPE;
3734 -----------------------------------------------------------
3735 rec_max_ap_lines_all CUR_GET_MAX_AP_INV_LINE%ROWTYPE;
3736
3737 ln_max_lnno NUMBER;
3738 ln_inv_line_num AP_INVOICE_LINES_ALL.LINE_NUMBER%TYPE;
3739 ln_user_id NUMBER;
3740 ln_login_id NUMBER;
3741 lv_misc VARCHAR2 (15);
3742 lv_match_type VARCHAR2(15);
3743 /* End of Bug# 4445989 */
3744 -- Bug 7249100. Added by Lakshmi Gopalsami
3745 lv_dist_class VARCHAR2(30);
3746 l_api_name CONSTANT VARCHAR2(50) := 'Populate_MTCH_ST_RVRS_Dist';
3747
3748 FUNCTION update_payment_schedule (p_total_tax NUMBER) RETURN boolean IS -- bug # 3218978
3749
3750 v_total_tax_in_payment number;
3751 v_tax_installment number;
3752 v_payment_num ap_payment_schedules_all.payment_num%type;
3753 v_total_payment_amt number;
3754 v_diff_tax_amount number;
3755
3756 cursor c_total_payment_amt is
3757 select sum(gross_amount)
3758 from ap_payment_schedules_all
3759 where invoice_id = inv_id;
3760
3761 begin
3762
3763 Fnd_File.put_line(Fnd_File.LOG, 'Start of function update_payment_schedule');
3764
3765 open c_total_payment_amt;
3766 fetch c_total_payment_amt into v_total_payment_amt;
3767 close c_total_payment_amt;
3768
3769 if nvl(v_total_payment_amt, -1) = -1 then --Modified by kunkumar for 5593895
3770 Fnd_File.put_line(Fnd_File.LOG, 'Cannot update payment schedule, total payment amount :'
3771 || to_char(v_total_payment_amt));
3772 return false;
3773 Elsif v_total_payment_amt = 0 Then
3774 v_total_payment_amt := 1;
3775 end if;
3776
3777 v_total_tax_in_payment := 0; --Added by nprashar for bug # 13854408
3778
3779 for c_installments in
3780 (
3781 select gross_amount,
3782 payment_num
3783 from ap_payment_schedules_all
3784 where invoice_id = inv_id
3785 order by payment_num
3786 )
3787 loop
3788
3789 v_tax_installment := 0;--Added by nprashar for bug # 13854408
3790 v_payment_num := c_installments.payment_num;
3791
3792 v_tax_installment := p_total_tax * (c_installments.gross_amount / nvl(v_total_payment_amt,1));
3793
3794 v_tax_installment := round(v_tax_installment, ln_precision);
3795
3796 update ap_payment_schedules_all
3797 set gross_amount = gross_amount + v_tax_installment,
3798 amount_remaining = amount_remaining + v_tax_installment,
3799 inv_curr_gross_amount = inv_curr_gross_amount + v_tax_installment,
3800 payment_status_flag = decode(payment_status_flag, 'Y', 'P', payment_status_flag)
3801 -- bug#3624898
3802 where invoice_id = inv_id
3803 and payment_num = v_payment_num;
3804
3805 v_total_tax_in_payment := v_total_tax_in_payment + v_tax_installment;
3806
3807 end loop;
3808
3809 -- any difference in tax because of rounding has to be added to the last installment.
3810 if v_total_tax_in_payment <> p_total_tax then
3811
3812 v_diff_tax_amount := round( p_total_tax - v_total_tax_in_payment,ln_precision);
3813
3814 update ap_payment_schedules_all
3815 set gross_amount = gross_amount + v_diff_tax_amount,
3816 amount_remaining = amount_remaining + v_diff_tax_amount,
3817 inv_curr_gross_amount = inv_curr_gross_amount + v_diff_tax_amount
3818 where invoice_id = inv_id
3819 and payment_num = v_payment_num;
3820 end if;
3821
3822 return true;
3823
3824 exception
3825 when others then
3826 Fnd_File.put_line(Fnd_File.LOG, 'exception from function update_payment_schedule');
3827 Fnd_File.put_line(Fnd_File.LOG, sqlerrm);
3828 return false;
3829 end update_payment_schedule; -- bug # 3218978
3830
3831 -- start bug#4103473
3832 FUNCTION apportion_tax_4_price_cor_inv (p_tax_amount number, p_tax_id number) return number is
3833
3834 -- get the corresponding base line amount in original invoice
3835 cursor c_check_orig_item_line(p_price_correct_inv_id number, p_po_distribution_id number) is
3836 select amount, invoice_distribution_id
3837 from ap_invoice_distributions_all
3838 WHERE invoice_id = p_price_correct_inv_id
3839 and po_distribution_id = p_po_distribution_id
3840 AND line_type_lookup_code = 'ITEM';
3841
3842
3843 -- get the corresponding tax lin amount in the original invoice
3844 cursor c_get_orig_tax_line
3845 (p_orig_invoice_id number, p_orig_invoice_dist_id number, p_tax_id number) is
3846 -- 5763527 , Added SUM as there can be two tax lines against the same tax_id because of partialy recoverable taxes
3847 select sum(jam.tax_amount) tax_amount-- project costing fwd porting
3848 from JAI_AP_MATCH_INV_TAXES jam,jai_cmn_taxes_all jct
3849 where p_orig_invoice_id = p_orig_invoice_id
3850 and parent_invoice_distribution_id = p_orig_invoice_dist_id
3851 and jam.tax_id = p_tax_id
3852 --start additions for bug#10167393
3853 /*adhoc tax shall not be apportioned on PRICE CORRECTION*/
3854 and jam.tax_id=jct.tax_id
3855 and (
3856 nvl(jct.adhoc_flag,'N')='Y'
3857 or
3858 ( jct.adhoc_flag='Y' and jct.tax_type not in ('Freight','Insurance','Octrai','Other','PURCHASE TAX','ENTRY TAX')));
3859
3860
3861 c_check_orig_item_line_rec c_check_orig_item_line%rowtype;
3862 c_get_orig_tax_line_rec c_get_orig_tax_line%rowtype;
3863 v_amount number;
3864 cur_price_correct_inv_id NUMBER(15);
3865 cur_po_distribution_id NUMBER(15);
3866 cur_amount NUMBER;
3867 cur_quantity_invoiced NUMBER;
3868 begin
3869
3870 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Start of function apportion_tax_4_price_cor_inv');
3871
3872 begin
3873 execute immediate 'select /* price_correct_inv_id */, po_distribution_id, amount, quantity_invoiced
3874 from ap_invoice_lines_all
3875 where invoice_id = :inv_id
3876 and line_number = :inv_line_num'
3877 into cur_price_correct_inv_id, cur_po_distribution_id, cur_amount, cur_quantity_invoiced
3878 USING inv_id, pn_invoice_line_number; -- Using pn_invoice_line_number instead of dist_line_no for Bug#4445989
3879
3880
3881 exception
3882 when others then
3883 return p_tax_amount;
3884 end;
3885
3886 -- control comes here when it is a case of price correction
3887 open c_check_orig_item_line
3888 (cur_price_correct_inv_id, cur_po_distribution_id);
3889 fetch c_check_orig_item_line into c_check_orig_item_line_rec;
3890 close c_check_orig_item_line;
3891
3892 open c_get_orig_tax_line
3893 (
3894 cur_price_correct_inv_id,
3895 c_check_orig_item_line_rec.invoice_distribution_id,
3896 p_tax_id
3897 );
3898 fetch c_get_orig_tax_line into c_get_orig_tax_line_rec;
3899 close c_get_orig_tax_line;
3900
3901 if c_check_orig_item_line_rec.amount = -1 then --Modified by kunkumar for 5593895
3902 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name
3903 , 'Original item line has -1 amount, cannot apportion tax');--Modified by kunkumar for 5593895
3904 return p_tax_amount;
3905 end if;
3906
3907 v_amount := ( c_get_orig_tax_line_rec.tax_amount / c_check_orig_item_line_rec.amount)
3908 * cur_amount;
3909
3910 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
3911 ' original amount / tax :' || c_check_orig_item_line_rec.amount
3912 || '/' || c_get_orig_tax_line_rec.tax_amount);
3913
3914 return round(v_amount, 2);
3915
3916
3917 exception
3918 when others then
3919 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Exception function apportion_tax_4_price_cor_inv :' || sqlerrm);
3920 return p_tax_amount;
3921 end apportion_tax_4_price_cor_inv;
3922
3923
3924 -- End bug#4103473
3925
3926 BEGIN
3927
3928 /*------------------------------------------------------------------------------------------
3929 CHANGE HISTORY:
3930 S.No Date Author and Details
3931 1. 05-JUL-2012 chong, shiped from jai_ap_match_tax_pkg.process_online procedure.
3932 ship and Update process_online procedure to process reverse charge service tax only
3933
3934 ------------------------------------------------------------------------------------------------------- */
3935 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
3936 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'inv_id: ' || inv_id );
3937 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'po_dist_id: ' || po_dist_id );
3938 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'qty_inv: ' || qty_inv );
3939 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_shipment_header_id: ' || p_shipment_header_id );
3940 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_packing_slip_num: ' || p_packing_slip_num );
3941 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_receipt_code: ' || p_receipt_code );
3942 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_rematch: ' || p_rematch );
3943 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'rcv_tran_id: ' || rcv_tran_id );
3944 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'v_dist_amount: ' || v_dist_amount );
3945 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'v_org_id: ' || v_org_id );
3946 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_project_id: ' || p_project_id );
3947 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_task_id: ' || p_task_id );
3948 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'p_expenditure_type: ' || p_expenditure_type );
3949
3950
3951 OPEN get_ven_info(inv_id);
3952 FETCH get_ven_info INTO get_ven_info_rec;
3953 CLOSE get_ven_info;
3954 -- Using pn_invoice_line_number instead of dist_line_no for Bug#4445989
3955 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
3956 'Input parameters - invoice number(id)/ invoice_line_no/ Matching option :'
3957 || get_ven_info_rec.invoice_num || '(' || inv_id || ')/' || pn_invoice_line_number || '/' || p_rematch);
3958
3959
3960
3961 ln_user_id := fnd_global.user_id;
3962 ln_login_id := fnd_global.login_id;
3963
3964 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Match Tax Code, Inside procedure process online');
3965 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Match Tax Code, Value of invoice_id is '||inv_id);
3966 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Match Tax Code, Value of line number is '||pn_invoice_line_number);
3967
3968 open c_functional_currency(get_ven_info_rec.set_of_books_id);
3969 fetch c_functional_currency into v_functional_currency;
3970 close c_functional_currency;
3971
3972 OPEN checking_for_packing_slip(get_ven_info_rec.vendor_id, get_ven_info_rec.vendor_site_id, get_ven_info_rec.org_id);
3973 FETCH checking_for_packing_slip INTO chk_for_pcking_slip_rec;
3974 CLOSE checking_for_packing_slip;
3975
3976
3977 OPEN c_inv(inv_id);
3978 FETCH c_inv INTO v_batch_id, v_source;
3979 CLOSE c_inv;
3980
3981 -- Get mininum invoice distribution line number, Brathod, Bug# 4445989
3982 lv_match_type := 'NOT_MATCHED'; --Changed from NOT MATCHED to NOT_MATCHED for bug#6835548 by JMEENA
3983 lv_misc := 'MISCELLANEOUS';
3984 lv_dist_class := 'PERMANENT';
3985
3986 OPEN cur_get_min_dist_linenum (inv_id, pn_invoice_line_number);
3987 FETCH cur_get_min_dist_linenum INTO ln_min_dist_line_num;
3988 CLOSE cur_get_min_dist_linenum;
3989
3990 OPEN cur_get_max_line_number;
3991 FETCH cur_get_max_line_number INTO ln_max_lnno;
3992 CLOSE cur_get_max_line_number;
3993
3994 OPEN cur_get_max_ap_inv_line (cpn_max_line_num => ln_max_lnno );
3995 FETCH cur_get_max_ap_inv_line INTO rec_max_ap_lines_all;
3996 CLOSE cur_get_max_ap_inv_line;
3997
3998 IF v_source <> 'SUPPLEMENT' THEN
3999 -- Using pn_invoice_line_number instead of dist_line_no for Bug#4445989
4000 OPEN cur_items(inv_id,pn_invoice_line_number,ln_min_dist_line_num);
4001 FETCH cur_items INTO cur_items_rec;
4002 CLOSE cur_items;
4003 END IF;
4004
4005 OPEN for_org_id(inv_id);
4006 FETCH for_org_id INTO for_org_id_rec;
4007 CLOSE for_org_id;
4008
4009 -- Cursor to select maximum line number from invoice lines for particular invoice
4010 SELECT max(line_number)
4011 INTO ln_inv_line_num
4012 FROM ap_invoice_lines_all
4013 WHERE invoice_id = inv_id;
4014
4015 open c_fnd_curr_precision(for_org_id_rec.invoice_currency_code);
4016 fetch c_fnd_curr_precision into ln_precision;
4017 close c_fnd_curr_precision;
4018
4019 if ln_precision is null then
4020 ln_precision := -1;
4021 end if;
4022
4023 /* ends here addition by ssumaith */
4024
4025 SELECT accts_pay_code_combination_id
4026 INTO apccid
4027 FROM ap_invoices_all
4028 WHERE invoice_id = inv_id;
4029
4030 -- Using pn_invoice_line_number instead of dist_line_no for Bug#4445989
4031 OPEN for_dist_insertion(inv_id,pn_invoice_line_number, ln_min_dist_line_num);
4032 FETCH for_dist_insertion INTO for_dist_insertion_rec;
4033 CLOSE for_dist_insertion;
4034
4035 -- deleted supplementary invoice block by Aparajita on 03/11/2002 for bug # 2567799.
4036 -- supplemntary invoice not being used.
4037
4038 v_apportn_factor_for_item_line :=
4039 jai_ap_utils_pkg.get_apportion_factor(inv_id, pn_invoice_line_number);
4040
4041 /* service Start */
4042
4043 open c_rcv_transactions(rcv_tran_id);
4044 fetch c_rcv_transactions into r_rcv_transactions;
4045 close c_rcv_transactions;
4046
4047 OPEN from_po_distributions(po_dist_id);
4048 FETCH from_po_distributions INTO from_po_distributions_rec;
4049 CLOSE from_po_distributions;
4050
4051
4052 open c_po_lines_all(from_po_distributions_rec.po_line_id);
4053 fetch c_po_lines_all into r_po_lines_all;
4054 close c_po_lines_all;
4055
4056 lv_is_item_an_expense := null;
4057 lv_is_item_an_expense := jai_general_pkg.is_item_an_expense
4058 (
4059 p_organization_id => r_rcv_transactions.organization_id,
4060 p_item_id => r_po_lines_all.item_id
4061 );
4062
4063 /*lv_accounting_method_option := jai_general_pkg.get_accounting_method
4064 (
4065 p_org_id => v_org_id,
4066 p_sob_id => for_dist_insertion_rec.set_of_books_id,
4067 p_organization_id => r_rcv_transactions.organization_id
4068 );*/
4069
4070 OPEN c_po_details;
4071 FETCH c_po_details INTO ln_po_line_id, ln_po_line_location_id;
4072 CLOSE c_po_details;
4073
4074 IF po_dist_id IS NULL
4075 THEN
4076
4077 SELECT Min(po_distribution_id)
4078 INTO ln_po_dist_id
4079 FROM po_distributions_all
4080 WHERE po_line_id = ln_po_line_id
4081 AND line_location_id = ln_po_line_location_id;
4082
4083 END IF;
4084
4085 lv_accrue_on_receipt_flag := jai_rcv_trx_processing_pkg.get_accrue_on_receipt
4086 (
4087 p_po_distribution_id => Nvl(po_dist_id,ln_po_dist_id)
4088 );
4089
4090 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'lv_accrue_on_receipt_flag='||lv_accrue_on_receipt_flag);
4091
4092 --For reverse charege service tax, only service tax regime will come to here.
4093 open c_jai_regimes(jai_constants.service_regime);
4094 fetch c_jai_regimes into r_jai_regimes;
4095 close c_jai_regimes;
4096 /* service End */
4097
4098 /* Bug 5401111. Added by Lakshmi Gopalsami
4099 | Get the account type for the distribution.
4100 | This is required to find out whether charge_applicable_to_dist
4101 */
4102 lv_account_type := get_gl_account_type
4103 (for_dist_insertion_rec.dist_code_combination_id);
4104
4105 IF p_rematch = 'PO_MATCHING' THEN
4106
4107 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'inside p_rematch = PO_MATCHING ');
4108
4109 OPEN get_source_csr;
4110 FETCH get_source_csr INTO lv_source;
4111 CLOSE get_source_csr;
4112 FOR i IN from_line_location_taxes(ln_po_line_location_id, for_org_id_rec.vendor_id, lv_source)
4113 LOOP
4114
4115 ln_project_id := null;
4116 ln_task_id := null;
4117 lv_exp_type := null;
4118 ld_exp_item_date := null;
4119 ln_exp_organization_id := null;
4120 lv_project_accounting_context := null;
4121 lv_pa_addition_flag := null;
4122
4123 v_distribution_no :=1;
4124
4125 v_tax_variance_inv_cur := null;
4126 v_tax_variance_fun_cur := null;
4127 v_price_var_accnt := null;
4128 v_tax_amount := -1;
4129 v_tax_amount_liability := 0;
4130 r_service_regime_tax_type := null;
4131
4132 r_VAT_regime_tax_type := null;
4133
4134 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' po match i.adhoc_flag = '||i.adhoc_flag);
4135 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' po match qty rate flag i.vat_flag = '||i.vat_flag);
4136 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'po match i.tax_type = '||i.tax_type);
4137 if i.adhoc_flag='Y'
4138 then
4139 --start additions of bug#12920070 by anupgupt
4140 if i.tax_type in ('Freight','Insurance','Octrai','Other','PURCHASE TAX','ENTRY TAX') and i.vat_flag = 'Q' -- Added IN clause for bug 13363329
4141 then
4142 --Changes by nprashar for bug # 13363329
4143 v_apportn_factor_for_adhoc:= jai_ap_utils_pkg.get_apportion_factor(inv_id, pn_invoice_line_number,'QUANTITY');
4144 v_tax_amount := i.tax_amount * v_apportn_factor_for_adhoc;
4145 --end additions of bug#12920070 by anupgupt
4146 elsif i.tax_type not in ('Freight','Insurance','Octrai','Other','PURCHASE TAX','ENTRY TAX')
4147 then
4148 v_tax_amount := i.tax_amount * v_apportn_factor_for_item_line;
4149 else
4150 v_tax_amount := i.tax_amount ;
4151 end if;
4152 else
4153 v_tax_amount := i.tax_amount * v_apportn_factor_for_item_line;
4154 end if;
4155
4156 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_tax_amount after apportioning = '|| v_tax_amount);
4157
4158 if i.currency <> for_org_id_rec.invoice_currency_code then
4159 v_tax_amount := v_tax_amount / for_org_id_rec.exchange_rate;
4160 end if;
4161
4162 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' Value of tax amount -> '|| v_tax_amount);
4163
4164 OPEN c_tax(i.tax_id);
4165 FETCH c_tax INTO c_tax_rec;
4166 CLOSE c_tax;
4167
4168 --Added by nprashar for bug # 13653889
4169 OPEN c_tax_curr_prec( i.tax_id ) ;
4170 FETCH c_tax_curr_prec INTO ln_tax_precision ;
4171 CLOSE c_tax_curr_prec ;
4172
4173
4174 /* Service Start */
4175 v_assets_tracking_flag := for_dist_insertion_rec.assets_tracking_flag;
4176 v_dist_code_combination_id := null;
4177
4178 --initial the tax_type
4179 lv_tax_type := NULL;
4180
4181 if i.modvat_flag = jai_constants.YES
4182 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0 then
4183
4184 --recoverable tax
4185 lv_tax_type := 'RE';
4186
4187 /* recoverable tax */
4188 v_assets_tracking_flag := 'N';
4189
4190 open c_regime_tax_type(r_jai_regimes.regime_id, c_tax_rec.tax_type);
4191 fetch c_regime_tax_type into r_service_regime_tax_type;
4192 close c_regime_tax_type;
4193
4194 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4195 ' Tax type of Service regime : '||r_service_regime_tax_type.tax_type);
4196
4197 /* Fetch ship_to_location_id and ship_to_organization_id from po_line_locations */
4198 ln_ship_to_organization_id := null;
4199 ln_ship_to_location_id := null;
4200 open c_get_ship_to_org_loc (cur_items_rec.line_location_id);
4201 fetch c_get_ship_to_org_loc into ln_ship_to_organization_id
4202 ,ln_ship_to_location_id;
4203 close c_get_ship_to_org_loc;
4204
4205
4206 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4207 'ln_ship_to_organization_id='||ln_ship_to_organization_id ||', r_po_lines_all.item_id='||r_po_lines_all.item_id
4208 );
4209 lv_is_item_an_expense := jai_general_pkg.is_item_an_expense
4210 (
4211 p_organization_id => ln_ship_to_organization_id,
4212 p_item_id => r_po_lines_all.item_id
4213 );
4214
4215 if r_service_regime_tax_type.tax_type is not null then
4216 /* Service type of tax */
4217 --for po matched invoice ,service taxes shall hit the interim recovery account irrespective of exclusive or inclusive type
4218 v_dist_code_combination_id := jai_cmn_rgm_recording_pkg.get_account
4219 (
4220 p_regime_id => r_jai_regimes.regime_id,
4221 p_organization_type => jai_constants.orgn_type_io,
4222 p_organization_id => ln_ship_to_organization_id,
4223 p_location_id => ln_ship_to_location_id,
4224 p_tax_type => c_tax_rec.tax_type,
4225 p_account_name => GV_REVERSE_CHARGE
4226 );
4227 v_dist_ccid_liability := jai_cmn_rgm_recording_pkg.get_account
4228 (
4229 p_regime_id => r_jai_regimes.regime_id,
4230 p_organization_type => jai_constants.orgn_type_io,
4231 p_organization_id => ln_ship_to_organization_id,
4232 p_location_id => ln_ship_to_location_id,
4233 p_tax_type => c_tax_rec.tax_type,
4234 p_account_name => GV_INTERIM_LIABILITY
4235 );
4236
4237 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4238 ' Regime type , CCID ,Liability CCID'
4239 || r_service_regime_tax_type.tax_type
4240 ||', ' || v_dist_code_combination_id ||', ' || v_dist_ccid_liability);
4241 end if;
4242 else -- NR tax ,project infor is same as the parent line
4243 ln_project_id := p_project_id;
4244 ln_task_id := p_task_id;
4245 lv_exp_type := p_expenditure_type;
4246 ld_exp_item_date := p_expenditure_item_date;
4247 ln_exp_organization_id := p_expenditure_organization_id;
4248 --non recoverable
4249 lv_tax_type := 'NR';
4250 end if; /*nvl(c_tax_rec.mod_cr_percentage, 0) = 100 and c_tax_rec.tax_account_id is not null*/
4251 /* Service End */
4252
4253 -- Start bug#4103473
4254 if nvl(v_tax_amount,-1) = -1 then --Modified by kunkumar for bug 5593895
4255 v_tax_amount := apportion_tax_4_price_cor_inv(v_tax_amount, i.tax_id);
4256 END IF;
4257 v_tax_amount := nvl(v_tax_amount,-1); --Modified by kunkumar for bug 5593895
4258 -- End bug#4103473
4259 v_tax_amount_liability := v_tax_amount;
4260 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' Value of tax amount after apportion -> '|| v_tax_amount);
4261
4262
4263 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Before calling JAI_CALC_APMATCH_TAX parameters passed are ');
4264 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' P_MATCH_TYPE -> '||'PO_MATCHING' ||' P_INVOICE_ID -> '||inv_id||
4265 ' P_INVOICE_line_no-> '||pn_invoice_line_number||' P_TAX_ID-> '||i.tax_id||' P_line_locaction_id-> '||ln_po_line_location_id||' P_tax_amount -> '|| v_tax_amount);
4266 jai_aptax_pkg_client_extn.JAI_CALC_APMATCH_TAX (P_MATCH_TYPE => 'PO_MATCHING',
4267 P_INVOICE_ID =>inv_id,
4268 P_INVOICE_line_no =>pn_invoice_line_number,
4269 P_TAX_ID => i.tax_id ,
4270 P_line_location_id => ln_po_line_location_id,
4271 P_tax_amount => v_tax_amount
4272 );
4273 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'the tax amount after the JAI_CALC_APMATCH_TAX call is '||v_tax_amount);
4274
4275 ln_rec_tax_amt := null;
4276 ln_nrec_tax_amt := null;
4277 ln_lines_to_insert := 1;
4278
4279 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name
4280 , 'i.modvat_flag ='||i.modvat_flag ||',c_tax_rec.mod_cr_percentage='||c_tax_rec.mod_cr_percentage);
4281
4282 if i.modvat_flag = jai_constants.YES
4283 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0
4284 and nvl(c_tax_rec.mod_cr_percentage, -1) < 100
4285 then
4286 --
4287 -- Tax line is for partial Recoverable tax. Hence split amount into two parts, Recoverable and Non-Recoverable
4288 -- and instead of one line, two lines needs to be inserted.
4289 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100) there will be only one line inserted
4290 --
4291 ln_lines_to_insert := 2 *ln_lines_to_insert;
4292 ln_rec_tax_amt := round ( nvl(v_tax_amount,0) * (c_tax_rec.mod_cr_percentage/100) , c_tax_rec.rounding_factor) ;
4293 ln_nrec_tax_amt := round ( nvl(v_tax_amount,0) - nvl(ln_rec_tax_amt,0) , c_tax_rec.rounding_factor) ;
4294 lv_tax_type := 'PR';
4295 end if;
4296
4297
4298 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name
4299 , 'ln_lines_to_insert= '||ln_lines_to_insert
4300 || ',ln_rec_tax_amt= '||ln_rec_tax_amt
4301 || ',ln_nrec_tax_amt= '||ln_nrec_tax_amt
4302 );
4303 --
4304 -- If a line has a partially recoverable tax the following loop will be executed twice. First line will always be for a
4305 -- non recoverable tax amount and the second line will be for a recoverable tax amount
4306 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100 fully recoverable) the variable
4307 -- ln_lines_to_insert will have value of 1 and hence only one line will be inserted with full tax amount
4308 --
4309 for line in 1..ln_lines_to_insert --line 1 is recoerable line, line 2 is non-recoverable line
4310 loop
4311
4312 IF (NVL(i.inc_tax_flag,'N') = 'N')--exclusive case
4313 THEN
4314 IF line = 1 then--line one for NR, FR, PR tax line
4315
4316 v_tax_amount := nvl(ln_rec_tax_amt, v_tax_amount);
4317 lv_tax_line_amount:= v_tax_amount ;
4318 lv_modvat_flag := i.modvat_flag ;
4319
4320 ELSIF line = 2 then
4321
4322 v_tax_amount := ln_nrec_tax_amt;
4323 lv_tax_line_amount := v_tax_amount ;
4324
4325 IF for_dist_insertion_rec.assets_tracking_flag = jai_constants.YES THEN
4326 v_assets_tracking_flag := jai_constants.YES;
4327 END IF;
4328
4329 lv_modvat_flag := jai_constants.NO ;
4330
4331 --
4332 -- This is a non recoverable line hence the tax amounts should be added into the project costs by populating
4333 -- projects related columns so that PROJECTS can consider this line for Project Costing
4334 --
4335 IF nvl(lv_accrue_on_receipt_flag,'#') <> 'Y' THEN
4336 ln_project_id := p_project_id;
4337 ln_task_id := p_task_id;
4338 lv_exp_type := p_expenditure_type;
4339 ld_exp_item_date := p_expenditure_item_date;
4340 ln_exp_organization_id := p_expenditure_organization_id;
4341 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
4342 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
4343 END if;
4344
4345 -- For non recoverable line charge account should be same as of the parent line
4346 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
4347
4348 END IF; --line = 1
4349 ELSE
4350 --CONTINUE; --For reverse charge service, should only be exclusive tax
4351 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_ERROR, GV_MODULE_PREFIX || '.' || l_api_name,
4352 'For reverse charge service, should only be exclusive tax. Tax ID: ' || i.tax_id);
4353 END IF; --(NVL(r_tax_lines_r ec.inc_tax_flag,'N') = 'N')
4354
4355 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4356 'Before inserting into ap_invoice_lines_all for line no :' || ln_inv_line_num );
4357 --insert exclusive tax to the ap tables
4358 --or insert recoverable inclusive tax with project information the ap tables
4359
4360 --1.Only exlusive taxes or inclusive taxes with project information
4361 -- are inserted into Ap Lines and Dist Lines
4362
4363 --2.All taxes need to be inserted into jai tax tables. Futher the
4364 -- partially recoverable tax need to be splitted into 2 lines
4365
4366 ln_inv_line_num := ln_inv_line_num + 1;
4367
4368 ap_invoice_lines_all_rec := NULL;
4369 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
4370 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
4371 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := GV_CONSTANT_MISCELLANEOUS;
4372 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
4373 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
4374 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
4375 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_code_combination_id;
4376 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
4377 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
4378 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
4379 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
4380 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
4381 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
4382 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
4383 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
4384 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision);
4385 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
4386 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
4387 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
4388 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
4389 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
4390 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
4391 ap_invoice_lines_all_rec.project_id := ln_project_id;
4392 ap_invoice_lines_all_rec.task_id := ln_task_id;
4393 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
4394 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
4395 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
4396 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
4397 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
4398 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
4399 ap_invoice_lines_all_rec.reference_key1 := i.tax_id;
4400 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
4401 Insert_ap_inv_line( p_ap_invoice_lines_all_rec => ap_invoice_lines_all_rec);
4402
4403 /*bug 9346307 - new LOOP added to insert multiple distributions for
4404 same line, if the matched PO shipment has multiple distributions*/
4405 v_distribution_no := 1;
4406
4407 FOR r_ap_dist IN c_ap_dist(inv_id, pn_invoice_line_number)
4408 LOOP
4409 v_tax_amt_dist := v_tax_amount * r_ap_dist.qty_apportion_factor;
4410
4411 IF nvl(r_ap_dist.invoice_price_variance, -1) <> -1 AND
4412 nvl(r_ap_dist.amount, -1) <> -1
4413 THEN
4414 v_price_var_accnt := r_ap_dist.price_var_code_combination_id;
4415 v_tax_variance_inv_cur := v_tax_amt_dist * (r_ap_dist.invoice_price_variance / r_ap_dist.amount);
4416 v_tax_variance_fun_cur := v_tax_variance_inv_cur * nvl(for_org_id_rec.exchange_rate, 1);
4417 END IF;
4418
4419 IF i.modvat_flag = jai_constants.no
4420 THEN
4421 v_assets_tracking_flag := r_ap_dist.assets_tracking_flag;
4422 lv_project_accounting_context := r_ap_dist.project_accounting_context;
4423 lv_pa_addition_flag := r_ap_dist.pa_addition_flag;
4424 END IF;
4425
4426 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4427 'Before inserting into ap_invoice_distributions_all for distribution line no :'
4428 ||v_distribution_no );
4429
4430 open c_get_invoice_distribution;
4431 fetch c_get_invoice_distribution into v_invoice_distribution_id;
4432 close c_get_invoice_distribution;
4433
4434 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4435 ' Invoice distribution id '|| v_invoice_distribution_id);
4436 --Insert distribution line
4437 ap_invoice_dist_all_rec := NULL;
4438 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
4439 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
4440 ap_invoice_dist_all_rec.assets_addition_flag := r_ap_dist.assets_addition_flag;
4441 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
4442 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
4443 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
4444 IF (lv_tax_type = 'NR' OR (lv_tax_type = 'PR' AND line = 2))
4445 THEN
4446 --For NR reverse charge tax line and line2 of PR reverse charge line,
4447 --should get distribution from distribution line of praent item line
4448 ap_invoice_dist_all_rec.dist_code_combination_id := r_ap_dist.dist_code_combination_id;
4449 ELSE
4450 --For recoverable line, should set reverse charge CCID
4451 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_code_combination_id;
4452 END IF;
4453 ap_invoice_dist_all_rec.invoice_id := inv_id;
4454 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
4455 ap_invoice_dist_all_rec.last_update_date := sysdate;
4456 ap_invoice_dist_all_rec.line_type_lookup_code := lv_misc;
4457 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
4458 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id ;
4459 ap_invoice_dist_all_rec.amount := ROUND(ROUND(v_tax_amt_dist,ln_tax_precision),ln_precision);
4460 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(v_tax_amt_dist * r_ap_dist.exchange_rate,ln_tax_precision), ln_precision);
4461 ap_invoice_dist_all_rec.batch_id := v_batch_id;
4462 ap_invoice_dist_all_rec.created_by := ln_user_id;
4463 ap_invoice_dist_all_rec.creation_date := sysdate;
4464 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
4465 ap_invoice_dist_all_rec.exchange_rate_variance := null;
4466 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
4467 ap_invoice_dist_all_rec.match_status_flag := r_ap_dist.match_status_flag ;
4468 ap_invoice_dist_all_rec.posted_flag := 'N';
4469 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
4470 ap_invoice_dist_all_rec.reversal_flag := r_ap_dist.reversal_flag;
4471 ap_invoice_dist_all_rec.program_application_id := r_ap_dist.program_application_id;
4472 ap_invoice_dist_all_rec.program_id := r_ap_dist.program_id;
4473 ap_invoice_dist_all_rec.program_update_date := r_ap_dist.program_update_date;
4474 ap_invoice_dist_all_rec.accts_pay_code_combination_id := r_ap_dist.accts_pay_code_combination_id;
4475 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
4476 ap_invoice_dist_all_rec.quantity_invoiced := null;
4477 ap_invoice_dist_all_rec.po_distribution_id := r_ap_dist.po_distribution_id ;
4478 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
4479 ap_invoice_dist_all_rec.price_var_code_combination_id := v_price_var_accnt;
4480 ap_invoice_dist_all_rec.invoice_price_variance := v_tax_variance_inv_cur;
4481 ap_invoice_dist_all_rec.base_invoice_price_variance := v_tax_variance_fun_cur;
4482 ap_invoice_dist_all_rec.matched_uom_lookup_code := r_ap_dist.matched_uom_lookup_code;
4483 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
4484 ap_invoice_dist_all_rec.org_id := r_ap_dist.org_id;
4485 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL, r_ap_dist.invoice_distribution_id);
4486 IF (v_assets_tracking_flag <> 'N')
4487 THEN
4488 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := r_ap_dist.invoice_distribution_id;
4489 END IF;
4490 ap_invoice_dist_all_rec.project_id := ln_project_id;
4491 ap_invoice_dist_all_rec.task_id := ln_task_id;
4492 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
4493 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
4494 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
4495 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
4496 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
4497 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
4498 ap_invoice_dist_all_rec.dist_match_type := r_ap_dist.dist_match_type;
4499 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
4500
4501 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Before inserting into JAI_AP_MATCH_INV_TAXES ');
4502
4503 INSERT INTO JAI_AP_MATCH_INV_TAXES
4504 (
4505 tax_distribution_id,
4506
4507 assets_tracking_flag,
4508 invoice_id,
4509 po_header_id,
4510 po_line_id,
4511 line_location_id,
4512 set_of_books_id,
4513 exchange_rate,
4514 exchange_rate_type,
4515 exchange_date,
4516 currency_code,
4517 code_combination_id,
4518 last_update_login,
4519 creation_date,
4520 created_by,
4521 last_update_date,
4522 last_updated_by,
4523 acct_pay_code_combination_id,
4524 accounting_date,
4525 tax_id,
4526 tax_amount,
4527 base_amount,
4528 chart_of_accounts_id,
4529 distribution_line_number,
4530 po_distribution_id,
4531 parent_invoice_distribution_id,
4532 legal_entity_id
4533 ,INVOICE_LINE_NUMBER
4534 ,INVOICE_DISTRIBUTION_ID
4535 ,PARENT_INVOICE_LINE_NUMBER
4536 ,RCV_TRANSACTION_ID
4537 ,LINE_TYPE_LOOKUP_CODE
4538 , recoverable_flag
4539 , line_no
4540 )
4541 VALUES
4542 (
4543 JAI_AP_MATCH_INV_TAXES_S.NEXTVAL,
4544 v_assets_tracking_flag,
4545 inv_id,
4546 cur_items_rec.po_header_id,
4547 cur_items_rec.po_line_id,
4548 cur_items_rec.line_location_id,
4549 cur_items_rec.set_of_books_id,
4550 cur_items_rec.rate,
4551 cur_items_rec.rate_type,
4552 cur_items_rec.rate_date,
4553 cur_items_rec.currency_code,
4554 v_dist_code_combination_id,
4555 cur_items_rec.last_update_login,
4556 cur_items_rec.creation_date,
4557 cur_items_rec.created_by,
4558 cur_items_rec.last_update_date,
4559 cur_items_rec.last_updated_by,
4560 apccid,
4561 cur_items_rec.invoice_date,
4562 i.tax_id,
4563 ROUND(ROUND(v_tax_amt_dist, ln_tax_precision),ln_precision),
4564 ROUND(ROUND(v_tax_amt_dist * r_ap_dist.exchange_rate,ln_tax_precision), ln_precision),
4565 P_caid,
4566 v_distribution_no,
4567 r_ap_dist.po_distribution_id,
4568 r_ap_dist.invoice_distribution_id,
4569 get_ven_info_rec.legal_entity_id
4570 , ln_inv_line_num
4571 , NVL(v_invoice_distribution_id,for_dist_insertion_rec.invoice_distribution_id)
4572 , pn_invoice_line_number
4573 , rcv_tran_id
4574 , lv_misc
4575 , lv_modvat_flag
4576 , i.tax_line_no
4577 );
4578
4579 v_distribution_no := v_distribution_no +1;
4580 END LOOP;-->r_ap_dist IN c_ap_dist(inv_id, pn_invoice_line_number)
4581 end loop ;--> for line in 1 to ln_lines_to_insert
4582
4583 ln_inv_line_num := ln_inv_line_num + 1;
4584 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, '@@Insert liability invoice line. ln_inv_line_num: ' || ln_inv_line_num);
4585
4586 ap_invoice_lines_all_rec := NULL;
4587 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
4588 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
4589 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := lv_misc;
4590 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
4591 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
4592 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
4593 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_ccid_liability;
4594 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
4595 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
4596 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
4597 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
4598 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
4599 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
4600 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
4601 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
4602 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(- v_tax_amount_liability,ln_tax_precision),ln_precision);
4603 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
4604 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
4605 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
4606 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
4607 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
4608 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
4609 ap_invoice_lines_all_rec.project_id := ln_project_id;
4610 ap_invoice_lines_all_rec.task_id := ln_task_id;
4611 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
4612 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
4613 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
4614 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
4615 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
4616 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
4617 ap_invoice_lines_all_rec.reference_key1 := i.tax_id;
4618 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
4619 Insert_ap_inv_line( ap_invoice_lines_all_rec);
4620
4621 open c_get_invoice_distribution;
4622 fetch c_get_invoice_distribution into v_invoice_distribution_id;
4623 close c_get_invoice_distribution;
4624 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Insert liability distribution line '|| v_invoice_distribution_id);
4625
4626 ap_invoice_dist_all_rec := NULL;
4627 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
4628 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
4629 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
4630 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
4631 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
4632 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
4633 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_ccid_liability;
4634 ap_invoice_dist_all_rec.invoice_id := inv_id;
4635 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
4636 ap_invoice_dist_all_rec.last_update_date := sysdate;
4637 ap_invoice_dist_all_rec.line_type_lookup_code := lv_misc;
4638 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
4639 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id ;
4640 ap_invoice_dist_all_rec.amount := ROUND(ROUND(- v_tax_amount_liability,ln_tax_precision),ln_precision);
4641 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(- v_tax_amount_liability * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision);
4642 ap_invoice_dist_all_rec.batch_id := v_batch_id;
4643 ap_invoice_dist_all_rec.created_by := ln_user_id;
4644 ap_invoice_dist_all_rec.creation_date := sysdate;
4645 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
4646 ap_invoice_dist_all_rec.exchange_rate_variance := null;
4647 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
4648 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag;
4649 ap_invoice_dist_all_rec.posted_flag := 'N';
4650 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
4651 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
4652 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
4653 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
4654 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
4655 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
4656 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
4657 ap_invoice_dist_all_rec.quantity_invoiced := null;
4658 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
4659 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
4660 ap_invoice_dist_all_rec.price_var_code_combination_id := v_price_var_accnt;
4661 ap_invoice_dist_all_rec.invoice_price_variance := v_tax_variance_inv_cur;
4662 ap_invoice_dist_all_rec.base_invoice_price_variance := v_tax_variance_fun_cur;
4663 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
4664 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
4665 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
4666 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id);
4667 IF (v_assets_tracking_flag <> 'N')
4668 THEN
4669 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
4670 END IF;
4671 ap_invoice_dist_all_rec.project_id := ln_project_id;
4672 ap_invoice_dist_all_rec.task_id := ln_task_id;
4673 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
4674 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
4675 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
4676 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
4677 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
4678 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
4679 ap_invoice_dist_all_rec.dist_match_type := for_dist_insertion_rec.dist_match_type;
4680 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
4681
4682 END LOOP;
4683
4684 ELSIF p_rematch = 'PAY_ON_RECEIPT' THEN
4685
4686 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'inside p_rematch = PAY_ON_RECEIPT ');
4687 --********************************************************************
4688 --Whether need to process reverse charge service tax on this 'PAY_ON_RECEIPT'
4689 --How to deal with it, this need further discuss
4690 --********************************************************************
4691
4692 ELSIF p_rematch = 'RCV_MATCHING' THEN
4693
4694 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'inside p_receipt_code = RCV_MATCHING');
4695
4696 OPEN for_org_id(inv_id);
4697 FETCH for_org_id INTO for_org_id_rec;
4698 CLOSE for_org_id;
4699
4700 OPEN get_source_csr;
4701 FETCH get_source_csr INTO lv_source;
4702 CLOSE get_source_csr;
4703
4704 FOR r_tax_lines_rec IN r_tax_lines_cur(rcv_tran_id,for_org_id_rec.vendor_id,lv_source) LOOP
4705
4706 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'in r_tax_line_cur loop ');
4707
4708 ln_project_id := null;
4709 ln_task_id := null;
4710 lv_exp_type := null;
4711 ld_exp_item_date := null;
4712 ln_exp_organization_id := null;
4713 lv_project_accounting_context := null;
4714 lv_pa_addition_flag := null;
4715
4716
4717 v_distribution_no := 1;
4718 v_tax_variance_inv_cur := null;
4719 v_tax_variance_fun_cur := null;
4720 v_price_var_accnt := null;
4721 r_service_regime_tax_type := null;
4722 r_VAT_regime_tax_type := null;
4723
4724 BEGIN
4725
4726 OPEN c_tax(r_tax_lines_rec.tax_id);
4727 FETCH c_tax INTO c_tax_rec;
4728 CLOSE c_tax;
4729
4730 OPEN c_tax_curr_prec(r_tax_lines_rec.tax_id) ;
4731 FETCH c_tax_curr_prec INTO ln_tax_precision ;
4732 CLOSE c_tax_curr_prec ;
4733
4734 ln_base_amount := null ;
4735 if r_tax_lines_rec.tax_type IN ( jai_constants.tax_type_value_added, jai_constants.tax_type_cst ) then
4736 ln_base_amount := jai_ap_utils_pkg.fetch_tax_target_amt
4737 (
4738 p_invoice_id => inv_id ,
4739 p_line_location_id => null ,
4740 p_transaction_id => rcv_tran_id ,
4741 p_parent_dist_id => for_dist_insertion_rec.invoice_distribution_id ,
4742 p_tax_id => r_tax_lines_rec.tax_id
4743 ) ;
4744 end if ;
4745 v_assets_tracking_flag := for_dist_insertion_rec.assets_tracking_flag;
4746 v_dist_code_combination_id := null;
4747 --initial the tax_type
4748 lv_tax_type := NULL;
4749
4750 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'c_tax_rec.mod_cr_percentage = '||c_tax_rec.mod_cr_percentage);
4751
4752 if r_tax_lines_rec.modvat_flag = jai_constants.YES
4753 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0
4754 then
4755 /* recoverable tax */
4756 lv_tax_type := 'RE';
4757 v_assets_tracking_flag := 'N';
4758
4759 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'lv_tax_type = '||lv_tax_type);
4760
4761 open c_regime_tax_type(r_jai_regimes.regime_id, c_tax_rec.tax_type);
4762 fetch c_regime_tax_type into r_service_regime_tax_type;
4763 close c_regime_tax_type;
4764
4765 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4766 ' Service regime: '||r_service_regime_tax_type.tax_type);
4767
4768 ln_ship_to_organization_id := null;
4769 ln_ship_to_location_id := null;
4770 open c_get_ship_to_org_loc (cur_items_rec.line_location_id);
4771 fetch c_get_ship_to_org_loc into ln_ship_to_organization_id
4772 ,ln_ship_to_location_id;
4773 close c_get_ship_to_org_loc;
4774
4775
4776 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4777 'ln_ship_to_organization_id='||ln_ship_to_organization_id ||', r_po_lines_all.item_id='||r_po_lines_all.item_id
4778 );
4779 lv_is_item_an_expense := jai_general_pkg.is_item_an_expense
4780 (
4781 p_organization_id => ln_ship_to_organization_id,
4782 p_item_id => r_po_lines_all.item_id
4783 );
4784
4785
4786 if r_service_regime_tax_type.tax_type is not null then
4787 /* Service type of tax */
4788 v_dist_code_combination_id := jai_cmn_rgm_recording_pkg.get_account
4789 (
4790 p_regime_id => r_jai_regimes.regime_id,
4791 p_organization_type => jai_constants.orgn_type_io,
4792 p_organization_id => ln_ship_to_organization_id,
4793 p_location_id => ln_ship_to_location_id,
4794 p_tax_type => c_tax_rec.tax_type,
4795 p_account_name => GV_REVERSE_CHARGE
4796 );
4797 v_dist_ccid_liability := jai_cmn_rgm_recording_pkg.get_account
4798 (
4799 p_regime_id => r_jai_regimes.regime_id,
4800 p_organization_type => jai_constants.orgn_type_io,
4801 p_organization_id => ln_ship_to_organization_id,
4802 p_location_id => ln_ship_to_location_id,
4803 p_tax_type => c_tax_rec.tax_type,
4804 p_account_name => GV_INTERIM_LIABILITY
4805 );
4806
4807 v_assets_tracking_flag := 'N';
4808 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4809 ' Regime type , CCID ,v_dist_ccid_liability '
4810 || r_service_regime_tax_type.tax_type
4811 ||', ' || v_dist_code_combination_id ||', ' || v_dist_ccid_liability);
4812 end if;
4813 else /* introduced for PROJETCS COSTING Impl */
4814 IF nvl(lv_accrue_on_receipt_flag , '#') <> 'Y'
4815 then
4816 ln_project_id := p_project_id;
4817 ln_task_id := p_task_id;
4818 lv_exp_type := p_expenditure_type;
4819 ld_exp_item_date := p_expenditure_item_date;
4820 ln_exp_organization_id := p_expenditure_organization_id;
4821 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
4822 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
4823 END if;
4824
4825 --non recoverable
4826 lv_tax_type := 'NR';
4827 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'lv_tax_type = '||lv_tax_type);
4828 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'lv_accrue_on_receipt_flag = '||lv_accrue_on_receipt_flag);
4829 end if; /*nvl(c_tax_rec.mod_cr_percentage, 0) = 100 and c_tax_rec.tax_account_id is not null*/
4830
4831 if v_dist_code_combination_id is null then
4832 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
4833 end if;
4834
4835 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_dist_code_combination_id : ' || v_dist_code_combination_id ) ;
4836 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_apportn_factor_for_item_line = '||v_apportn_factor_for_item_line);
4837 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_tax_amount = '||v_tax_amount);
4838 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'r_tax_lines_rec.adhoc_flag = '||r_tax_lines_rec.adhoc_flag);
4839 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'r_tax_lines_rec.vat_flag = '||r_tax_lines_rec.vat_flag);
4840 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' r_tax_lines_rec.tax_type = '||r_tax_lines_rec.tax_type);
4841 if r_tax_lines_rec.adhoc_flag='Y' then
4842 --start additions of bug#12920070 by anupgupt
4843 if r_tax_lines_rec.tax_type in ('Freight','Insurance','Octrai','Other','PURCHASE TAX','ENTRY TAX') and r_tax_lines_rec.vat_flag = 'Q' --Added IN Clause for bug # 13363329
4844 then
4845 --Changes by nprashar for bug # 13363329
4846 v_apportn_factor_for_adhoc:= jai_ap_utils_pkg.get_apportion_factor(inv_id, pn_invoice_line_number,'QUANTITY');
4847 v_tax_amount := r_tax_lines_rec.tax_amount * v_apportn_factor_for_adhoc;
4848 --end additions of bug#12920070 by anupgupt
4849 elsif r_tax_lines_rec.tax_type not in ('Freight','Insurance','Octrai','Other','PURCHASE TAX','ENTRY TAX')
4850 then
4851 v_tax_amount := r_tax_lines_rec.tax_amount * v_apportn_factor_for_item_line;
4852 else
4853 v_tax_amount := r_tax_lines_rec.tax_amount ;
4854 end if;
4855 else
4856 v_tax_amount := r_tax_lines_rec.tax_amount * v_apportn_factor_for_item_line;
4857 end if;
4858 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_tax_amount after apportioning = '||v_tax_amount);
4859
4860 if for_org_id_rec.invoice_currency_code <> r_tax_lines_rec.currency then
4861 v_tax_amount := v_tax_amount / for_org_id_rec.exchange_rate;
4862 end if;
4863
4864 if nvl(for_dist_insertion_rec.invoice_price_variance, -1) <>-1
4865 and
4866 nvl(for_dist_insertion_rec.amount, -1) <> -1 then
4867
4868 v_tax_variance_inv_cur :=
4869 v_tax_amount *
4870 (for_dist_insertion_rec.invoice_price_variance / for_dist_insertion_rec.amount);
4871
4872 if nvl(v_tax_variance_inv_cur, -1) <> -1 then
4873 v_tax_variance_fun_cur := v_tax_variance_inv_cur * nvl(for_org_id_rec.exchange_rate, 1);
4874 end if;
4875
4876 v_price_var_accnt := for_dist_insertion_rec.price_var_code_combination_id;
4877
4878 end if;
4879
4880 if nvl(v_tax_amount,-1) = -1 then
4881 v_tax_amount := apportion_tax_4_price_cor_inv(v_tax_amount, r_tax_lines_rec.tax_id);
4882 END IF;
4883 v_tax_amount := nvl(v_tax_amount, -1);
4884
4885 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Before calling JAI_CALC_APMATCH_TAX parameters passed are ');
4886 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' P_MATCH_TYPE -> '||'RCV_MATCHING'||' P_INVOICE_ID -> '||inv_id||
4887 ' P_INVOICE_line_no-> '||pn_invoice_line_number||' P_TAX_ID-> '||r_tax_lines_rec.tax_id||'p_rcv_transaction_id -> '|| rcv_tran_id||' P_tax_amount -> '|| v_tax_amount);
4888 JAI_APTAX_PKG_CLIENT_EXTN.JAI_CALC_APMATCH_TAX (P_MATCH_TYPE => 'RCV_MATCHING',
4889 P_INVOICE_ID =>inv_id,
4890 P_INVOICE_line_no =>pn_invoice_line_number,
4891 P_TAX_ID => r_tax_lines_rec.tax_id,
4892 p_rcv_transaction_id => rcv_tran_id,
4893 P_tax_amount => v_tax_amount
4894 );
4895 v_tax_amount_liability := v_tax_amount;
4896 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'the tax amount after the JAI_CALC_APMATCH_TAX call is '||v_tax_amount);
4897
4898 ln_rec_tax_amt := null;
4899 ln_nrec_tax_amt := null;
4900 ln_lines_to_insert := 1; -- Loop controller to insert more than one lines for partially recoverable tax lines in PO
4901
4902 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
4903 'r_tax_lines_rec.modvat_flag ='||r_tax_lines_rec.modvat_flag ||',c_tax_rec.mod_cr_percentage='||c_tax_rec.mod_cr_percentage);
4904
4905 if r_tax_lines_rec.modvat_flag = jai_constants.YES
4906 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0
4907 and nvl(c_tax_rec.mod_cr_percentage, -1) < 100
4908 then
4909 --
4910 -- Tax line is for partial Recoverable tax. Hence split amount into two parts, Recoverable and Non-Recoverable
4911 -- and instead of one line, two lines needs to be inserted.
4912 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100) there will be only one line inserted
4913 --
4914 ln_lines_to_insert := 2 *ln_lines_to_insert;
4915 ln_rec_tax_amt := round ( nvl(v_tax_amount,0) * (c_tax_rec.mod_cr_percentage/100) , c_tax_rec.rounding_factor) ;
4916 ln_nrec_tax_amt := round ( nvl(v_tax_amount,0) - nvl(ln_rec_tax_amt,0) , c_tax_rec.rounding_factor) ;
4917
4918 lv_tax_type := 'PR';
4919 end if;
4920
4921 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'ln_lines_to_insert='||ln_lines_to_insert||
4922 ',ln_rec_tax_amt='||ln_rec_tax_amt ||
4923 ',ln_nrec_tax_amt='||ln_nrec_tax_amt
4924 );
4925 --
4926 -- If a line has a partially recoverable tax the following loop will be executed twice. First line will always be for a
4927 -- non recoverable tax amount and the second line will be for a recoverable tax amount
4928 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100 fully recoverable) the variable
4929 -- ln_lines_to_insert will have value of 1 and hence only one line will be inserted with full tax amount
4930 --
4931
4932 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'ln_lines_to_insert ='|| ln_lines_to_insert);
4933 for line in 1..ln_lines_to_insert
4934 loop
4935
4936 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'line = '|| line);
4937 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'inc_tax_flag = '|| NVL(r_tax_lines_rec.inc_tax_flag,'N'));
4938 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'lv_tax_type = '|| lv_tax_type);
4939 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'v_tax_amount = '|| v_tax_amount);
4940 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'ln_nrec_tax_amt = '|| ln_nrec_tax_amt);
4941 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'ln_rec_tax_amt = '|| ln_rec_tax_amt );
4942
4943 IF (NVL(r_tax_lines_rec.inc_tax_flag,'N') = 'N')--exclusive case
4944 THEN
4945 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Exclusive Branch');
4946 IF line = 1 then
4947
4948 v_tax_amount := nvl(ln_rec_tax_amt, v_tax_amount);
4949 lv_tax_line_amount:= v_tax_amount;
4950 lv_modvat_flag := r_tax_lines_rec.modvat_flag ;
4951
4952 ELSIF line = 2 then
4953
4954 v_tax_amount := ln_nrec_tax_amt;
4955 lv_tax_line_amount := v_tax_amount ;
4956
4957 IF for_dist_insertion_rec.assets_tracking_flag = jai_constants.YES THEN
4958 v_assets_tracking_flag := jai_constants.YES;
4959 END IF;
4960
4961 lv_modvat_flag := jai_constants.NO ;
4962
4963 --
4964 -- This is a non recoverable line hence the tax amounts should be added into the project costs by populating
4965 -- projects related columns so that PROJECTS can consider this line for Project Costing
4966 --
4967 IF nvl(lv_accrue_on_receipt_flag,'#') <> 'Y' THEN
4968 ln_project_id := p_project_id;
4969 ln_task_id := p_task_id;
4970 lv_exp_type := p_expenditure_type;
4971 ld_exp_item_date := p_expenditure_item_date;
4972 ln_exp_organization_id := p_expenditure_organization_id;
4973 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
4974 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
4975 END if;
4976
4977 -- For non recoverable line charge account should be same as of the parent line
4978 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
4979
4980 END IF; --line = 1
4981 ELSE
4982 --CONTINUE;
4983 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_ERROR, GV_MODULE_PREFIX || '.' || l_api_name,
4984 'For reverse charge service, should only be exclusive tax. Tax ID: ' || r_tax_lines_rec.tax_id);
4985 END IF; --(NVL(r_tax_lines_rec.inc_tax_flag,'N') = 'N')
4986
4987 --insert exclusive tax to the ap tables
4988 --or insert recoverable inclusive tax with project information the ap tables
4989 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'r_tax_lines_rec.tax_id :'|| r_tax_lines_rec.tax_id );
4990 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'line :'|| line );
4991 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'lv_ap_line_to_inst_flag :'|| lv_ap_line_to_inst_flag );
4992 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'lv_tax_line_to_inst_flag :'|| lv_tax_line_to_inst_flag );
4993
4994 --1.Only exlusive taxes or inclusive recoverable taxes with project information
4995 -- are inserted into Ap Lines and Dist Lines
4996
4997 --2.All taxes need to be inserted into jai tax tables. Futher the
4998 -- partially recoverable tax need to be splitted into 2 lines
4999
5000 ln_inv_line_num := ln_inv_line_num + 1;
5001 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into ap_invoice_lines_all for line no :'|| ln_inv_line_num );
5002
5003 ap_invoice_lines_all_rec := NULL;
5004 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
5005 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
5006 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := lv_misc;
5007 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
5008 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
5009 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
5010 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_code_combination_id;
5011 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
5012 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
5013 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
5014 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
5015 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
5016 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
5017 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
5018 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
5019 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision);
5020 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
5021 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
5022 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
5023 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
5024 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
5025 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
5026 ap_invoice_lines_all_rec.project_id := ln_project_id;
5027 ap_invoice_lines_all_rec.task_id := ln_task_id;
5028 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
5029 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
5030 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
5031 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
5032 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
5033 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
5034 ap_invoice_lines_all_rec.reference_key1 := r_tax_lines_rec.tax_id;
5035 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
5036 Insert_ap_inv_line( ap_invoice_lines_all_rec);
5037
5038 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
5039 'Before inserting into ap_invoice_distributions_all for distribution line no :' || v_distribution_no);
5040
5041 open c_get_invoice_distribution;
5042 fetch c_get_invoice_distribution into v_invoice_distribution_id;
5043 close c_get_invoice_distribution;
5044
5045 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, ' Invoice distribution id '|| v_invoice_distribution_id);
5046 ap_invoice_dist_all_rec := NULL;
5047 ap_invoice_dist_all_rec.accounting_date := for_dist_insertion_rec.accounting_date;
5048 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
5049 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
5050 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
5051 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
5052 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
5053 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_code_combination_id;
5054 ap_invoice_dist_all_rec.invoice_id := inv_id;
5055 ap_invoice_dist_all_rec.last_updated_by := for_dist_insertion_rec.last_updated_by;
5056 ap_invoice_dist_all_rec.last_update_date := for_dist_insertion_rec.last_update_date;
5057 ap_invoice_dist_all_rec.line_type_lookup_code := lv_misc;
5058 ap_invoice_dist_all_rec.period_name := for_dist_insertion_rec.period_name;
5059 ap_invoice_dist_all_rec.set_of_books_id := for_dist_insertion_rec.set_of_books_id;
5060 ap_invoice_dist_all_rec.amount := ROUND(ROUND(v_tax_amount, ln_tax_precision),ln_precision);
5061 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(v_tax_amount * for_dist_insertion_rec.exchange_rate, ln_tax_precision),ln_precision);
5062 ap_invoice_dist_all_rec.batch_id := v_batch_id;
5063 ap_invoice_dist_all_rec.created_by := for_dist_insertion_rec.created_by;
5064 ap_invoice_dist_all_rec.creation_date := for_dist_insertion_rec.creation_date;
5065 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
5066 ap_invoice_dist_all_rec.exchange_rate_variance := null;
5067 ap_invoice_dist_all_rec.last_update_login := for_dist_insertion_rec.last_update_login;
5068 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag;
5069 ap_invoice_dist_all_rec.posted_flag := 'N';
5070 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
5071 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
5072 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
5073 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
5074 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
5075 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
5076 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
5077 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0);
5078 IF (v_assets_tracking_flag <> 'Y')
5079 THEN
5080 ap_invoice_dist_all_rec.quantity_invoiced := 0;
5081 END IF;
5082 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id ;
5083 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
5084 ap_invoice_dist_all_rec.price_var_code_combination_id := v_price_var_accnt;
5085 ap_invoice_dist_all_rec.invoice_price_variance := v_tax_variance_inv_cur;
5086 ap_invoice_dist_all_rec.base_invoice_price_variance := v_tax_variance_fun_cur;
5087 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
5088 ap_invoice_dist_all_rec.INVOICE_LINE_NUMBER := ln_inv_line_num;
5089 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
5090 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N', NULL,for_dist_insertion_rec.invoice_distribution_id);
5091 IF (v_assets_tracking_flag <> 'N')
5092 THEN
5093 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
5094 END IF;
5095 ap_invoice_dist_all_rec.project_id := ln_project_id;
5096 ap_invoice_dist_all_rec.task_id := ln_task_id;
5097 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
5098 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
5099 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
5100 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
5101 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
5102 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
5103 ap_invoice_dist_all_rec.dist_match_type := for_dist_insertion_rec.dist_match_type;
5104 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
5105
5106 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Before inserting into JAI_AP_MATCH_INV_TAXES ');
5107 INSERT INTO JAI_AP_MATCH_INV_TAXES
5108 (
5109 tax_distribution_id,
5110 exchange_rate_variance,
5111 assets_tracking_flag,
5112 invoice_id,
5113 po_header_id,
5114 po_line_id,
5115 line_location_id,
5116 set_of_books_id,
5117 --org_id,
5118 exchange_rate,
5119 exchange_rate_type,
5120 exchange_date,
5121 currency_code,
5122 code_combination_id,
5123 last_update_login,
5124 creation_date,
5125 created_by,
5126 last_update_date,
5127 last_updated_by,
5128 acct_pay_code_combination_id,
5129 accounting_date,
5130 tax_id,
5131 tax_amount,
5132 base_amount,
5133 chart_of_accounts_id,
5134 distribution_line_number,
5135 po_distribution_id,
5136 parent_invoice_distribution_id,
5137 legal_entity_id
5138 ,invoice_line_number
5139 ,INVOICE_DISTRIBUTION_ID
5140 ,PARENT_INVOICE_LINE_NUMBER
5141 ,RCV_TRANSACTION_ID
5142 ,LINE_TYPE_LOOKUP_CODE
5143 , recoverable_flag
5144 ,line_no
5145 )
5146
5147 VALUES
5148 (
5149 JAI_AP_MATCH_INV_TAXES_S.NEXTVAL,
5150 null,
5151 v_assets_tracking_flag,
5152 inv_id,
5153 cur_items_rec.po_header_id, /* All references to r_cur_items_rec have been replaced by cur_items_rec */
5154 cur_items_rec.po_line_id,
5155 cur_items_rec.line_location_id,
5156 cur_items_rec.set_of_books_id,
5157 --cur_items_rec.org_id,
5158 cur_items_rec.rate,
5159 cur_items_rec.rate_type,
5160 cur_items_rec.rate_date,
5161 cur_items_rec.currency_code,
5162 v_dist_code_combination_id,
5163 cur_items_rec.last_update_login,
5164 cur_items_rec.creation_date,
5165 cur_items_rec.created_by,
5166 cur_items_rec.last_update_date,
5167 cur_items_rec.last_updated_by,
5168 apccid,
5169 cur_items_rec.invoice_date,
5170 r_tax_lines_rec.tax_id,
5171 ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision),
5172 ROUND(ROUND(v_tax_amount * for_dist_insertion_rec.exchange_rate, ln_tax_precision),ln_precision),
5173 p_caid,
5174 v_distribution_no,
5175 po_dist_id,
5176 for_dist_insertion_rec.invoice_distribution_id,
5177 get_ven_info_rec.legal_entity_id
5178 ,ln_inv_line_num
5179 ,v_invoice_distribution_id
5180 , pn_invoice_line_number
5181 , rcv_tran_id
5182 , lv_misc
5183 , lv_modvat_flag
5184 ,r_tax_lines_rec.tax_line_no
5185 );
5186
5187 end loop ; --> for line in 1 to ln_lines_to_insert Brathod, 5763527
5188
5189
5190 ln_inv_line_num := ln_inv_line_num + 1;
5191 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'@@Before inserting liability lines into ap_invoice_lines_all for line no :'|| ln_inv_line_num ||' tax amount = '||lv_tax_line_amount);
5192 ap_invoice_lines_all_rec := NULL;
5193 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
5194 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
5195 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := lv_misc;
5196 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
5197 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
5198 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
5199 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_ccid_liability;
5200 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
5201 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
5202 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
5203 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
5204 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
5205 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
5206 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
5207 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
5208 ap_invoice_lines_all_rec.AMOUNT := - ROUND(ROUND(v_tax_amount_liability,ln_tax_precision),ln_precision);
5209 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
5210 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
5211 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
5212 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
5213 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
5214 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
5215 ap_invoice_lines_all_rec.project_id := ln_project_id;
5216 ap_invoice_lines_all_rec.task_id := ln_task_id;
5217 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
5218 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
5219 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
5220 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
5221 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
5222 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
5223 ap_invoice_lines_all_rec.reference_key1 := r_tax_lines_rec.tax_id;
5224 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
5225 Insert_ap_inv_line( ap_invoice_lines_all_rec);
5226
5227
5228 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
5229 'Before inserting liability line into ap_invoice_distributions_all for distribution line no :' || v_distribution_no);
5230
5231
5232 open c_get_invoice_distribution;
5233 fetch c_get_invoice_distribution into v_invoice_distribution_id;
5234 close c_get_invoice_distribution;
5235
5236
5237 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
5238 'liability lines Invoice distribution id '|| v_invoice_distribution_id);
5239 ap_invoice_dist_all_rec := NULL;
5240 ap_invoice_dist_all_rec.accounting_date := for_dist_insertion_rec.accounting_date;
5241 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
5242 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
5243 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
5244 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
5245 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
5246 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_ccid_liability;
5247 ap_invoice_dist_all_rec.invoice_id := inv_id;
5248 ap_invoice_dist_all_rec.last_updated_by := for_dist_insertion_rec.last_updated_by;
5249 ap_invoice_dist_all_rec.last_update_date := for_dist_insertion_rec.last_update_date;
5250 ap_invoice_dist_all_rec.line_type_lookup_code := lv_misc;
5251 ap_invoice_dist_all_rec.period_name := for_dist_insertion_rec.period_name;
5252 ap_invoice_dist_all_rec.set_of_books_id := for_dist_insertion_rec.set_of_books_id;
5253 ap_invoice_dist_all_rec.amount := - ROUND(ROUND(v_tax_amount_liability,ln_tax_precision), ln_precision);
5254 ap_invoice_dist_all_rec.base_amount := - ROUND(ROUND(v_tax_amount_liability * for_dist_insertion_rec.exchange_rate, ln_tax_precision),ln_precision);
5255 ap_invoice_dist_all_rec.batch_id := v_batch_id;
5256 ap_invoice_dist_all_rec.created_by := for_dist_insertion_rec.created_by;
5257 ap_invoice_dist_all_rec.creation_date := for_dist_insertion_rec.creation_date;
5258 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
5259 ap_invoice_dist_all_rec.exchange_rate_variance := null;
5260 ap_invoice_dist_all_rec.last_update_login := for_dist_insertion_rec.last_update_login;
5261 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag ;
5262 ap_invoice_dist_all_rec.posted_flag := 'N';
5263 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
5264 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
5265 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
5266 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
5267 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
5268 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
5269 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
5270 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0),
5271 IF (v_assets_tracking_flag <> 'Y')
5272 THEN
5273 ap_invoice_dist_all_rec.quantity_invoiced := 0;
5274 END IF;
5275 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
5276 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
5277 ap_invoice_dist_all_rec.price_var_code_combination_id := v_price_var_accnt;
5278 ap_invoice_dist_all_rec.invoice_price_variance := v_tax_variance_inv_cur;
5279 ap_invoice_dist_all_rec.base_invoice_price_variance := v_tax_variance_fun_cur;
5280 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
5281 ap_invoice_dist_all_rec.INVOICE_LINE_NUMBER := ln_inv_line_num;
5282 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
5283 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id)
5284 IF (v_assets_tracking_flag <> 'N')
5285 THEN
5286 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
5287 END IF;
5288 ap_invoice_dist_all_rec.project_id := ln_project_id;
5289 ap_invoice_dist_all_rec.task_id := ln_task_id;
5290 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
5291 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
5292 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
5293 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
5294 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
5295 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
5296 ap_invoice_dist_all_rec.dist_match_type := for_dist_insertion_rec.dist_match_type;
5297 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
5298 END;
5299 END LOOP; -- r_tax_lines_rec IN r_tax_lines_cur(rcv_tran_id,for_org_id_rec.vendor_id) LOOP
5300
5301 END IF; -- p_rematch = 'RCV_MATCHING'
5302
5303 <<end_of_program>>
5304 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '||l_api_name||'()-');
5305 EXCEPTION
5306 WHEN OTHERS THEN
5307 ERRBUF := SQLERRM;
5308 RETCODE := 2;
5309 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'EXCEPTION END PROCEDURE - jai_ap_match_tax_pkg.process_online');
5310 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Error : ' || ERRBUF);
5311 NULL;
5312 END Populate_MTCH_ST_RVRS_Dist;
5313
5314 /*
5315 REM +======================================================================+
5316 REM Created By : Chong
5317 REM Creation Date : Jun 5, 2012
5318 REM Bug Number/ER Name : Reverse charge service tax
5319 REM SubProgram Name : process_batch_record
5320 REM Type : Process API
5321 REM Purpose : Populate reverse charge service tax lines for ERS invoice
5322 REM
5323 REM TDD Reference : This procedure is extracted from jai_ap_match_tax_pkg.process_batch_record.
5324 REM Process similar logic for ERS invoice while only pick up reverse charge service tax.
5325 REM Assumptions :
5326 REM
5327 REM Parameter IN/OUT Type Required Description and Purpose
5328 REM ----------------------- ------ ------------------ ---------- ------------------------------------
5329 REM inv_id IN NUMBER Y
5330 REM pn_invoice_line_number IN NUMBER Y
5331 REM po_dist_id IN NUMBER Y
5332 REM qty_inv IN NUMBER Y
5333 REM p_shipment_header_id IN NUMBER Y
5334 REM p_packing_slip_num IN VARCHAR2 Y
5335 REM p_receipt_code IN VARCHAR2 Y
5336 REM p_rematch IN VARCHAR2 Y
5337 REM rcv_tran_id IN NUMBER Y
5338 REM v_dist_amount IN NUMBER Y
5339 REM v_org_id IN NUMBER Y
5340 REM p_project_id IN NUMBER Y
5341 REM p_task_id IN NUMBER Y
5342 REM p_expenditure_type IN VARCHAR2 Y
5343 REM p_expenditure_organization_id IN NUMBER Y
5344 REM p_expenditure_item_date IN NUMBER Y
5345 REM p_caid IN NUMBER Y
5346 REM err_mesg OUT VARCHAR2 Y
5347 REM
5348 REM CALLED BY
5349 REM JAI_AP_MATCH_TAX_PKG.process_batch_record
5350 REM +=====================================================================================================+
5351 */
5352 PROCEDURE process_batch_record (
5353 err_mesg OUT NOCOPY VARCHAR2,
5354 inv_id IN NUMBER,
5355 pn_invoice_line_number IN NUMBER,
5356 po_dist_id IN NUMBER,
5357 qty_inv IN NUMBER,
5358 p_shipment_header_id IN NUMBER,
5359 p_packing_slip_num IN VARCHAR2,
5360 p_receipt_code VARCHAR2,
5361 p_rematch VARCHAR2,
5362 rcv_tran_id IN NUMBER,
5363 v_dist_amount IN NUMBER,
5364 v_org_id IN NUMBER
5365 ,p_project_id NUMBER
5366 ,p_task_id NUMBER
5367 ,p_expenditure_type VARCHAR2
5368 ,p_expenditure_organization_id NUMBER
5369 ,p_expenditure_item_date DATE
5370 ,p_caid IN NUMBER
5371 )
5372 IS
5373
5374 CURSOR get_ven_info(v_invoice_id NUMBER) IS
5375 SELECT vendor_id, vendor_site_id, org_id, cancelled_date -- cancelled date added by bug#3206083
5376 ,set_of_books_id -- added for bug#3354932
5377 ,legal_entity_id -- added rallamse for bug#
5378 ,invoice_num -- added by pramasub FP
5379 FROM ap_invoices_all
5380 WHERE invoice_id = v_invoice_id;
5381
5382 CURSOR c_functional_currency(p_sob NUMBER) IS -- cursor added for bug#3354932
5383 SELECT currency_code
5384 FROM gl_sets_of_books
5385 WHERE set_of_books_id = p_sob;
5386
5387 CURSOR checking_for_packing_slip(ven_id NUMBER, ven_site_id NUMBER, v_org_id NUMBER) IS
5388 SELECT pay_on_code, pay_on_receipt_summary_code
5389 FROM po_vendor_sites_all
5390 WHERE vendor_id = ven_id
5391 AND vendor_site_id = ven_site_id
5392 AND NVL(org_id, 0) = NVL(v_org_id, 0);
5393
5394 -- Modified by Brathod for BUg# 4445989
5395 CURSOR cur_items(inv_id IN NUMBER, line_no IN NUMBER, cpn_max_dist_line_num NUMBER) IS
5396 SELECT pod.po_header_id,
5397 pod.po_line_id,
5398 pod.line_location_id,
5399 pod.set_of_books_id,
5400 pod.org_id,
5401 poh.rate,
5402 poh.rate_type,
5403 pod.rate_date,
5404 poh.currency_code,
5405 api.last_update_login,
5406 apd.dist_code_combination_id,
5407 api.creation_date,
5408 api.created_by,
5409 api.last_update_date,
5410 api.last_updated_by,
5411 api.invoice_date
5412 FROM ap_invoices_all api,
5413 ap_invoice_distributions_all apd,
5414 po_distributions_all pod,
5415 po_headers_all poh
5416 WHERE api.invoice_id = inv_id
5417 AND api.invoice_id = apd.invoice_id
5418 AND pod.po_header_id = poh.po_header_id
5419 AND apd.po_distribution_id = pod.po_distribution_id
5420 AND apd.invoice_line_number = line_no
5421 AND apd.distribution_line_number = cpn_max_dist_line_num;
5422
5423 -- Added by Brathod to get minimum invoice line number from invoice distributions, Bug#4445989
5424 CURSOR cur_get_min_dist_linenum
5425 ( cpn_invoice_id AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_ID%TYPE
5426 ,cpn_invoice_line_number AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_LINE_NUMBER%TYPE
5427 )
5428 IS
5429 SELECT min(distribution_line_number)
5430 FROM ap_invoice_distributions_all apid
5431 WHERE apid.invoice_id = cpn_invoice_id
5432 AND apid.invoice_line_number = cpn_invoice_line_number;
5433
5434 --> Cursor to fetch the maximum line_number for current invoice, Bug# 4445989
5435 CURSOR cur_get_max_line_number
5436 IS
5437 SELECT max (line_number)
5438 FROM ap_invoice_lines_all
5439 WHERE invoice_id = inv_id;
5440
5441 ln_min_dist_line_num NUMBER;
5442 lv_match_type varchar2(15);
5443 ln_max_lnno NUMBER;
5444 ln_inv_line_num AP_INVOICE_LINES_ALL.LINE_NUMBER%TYPE;
5445 ln_user_id NUMBER;
5446 ln_login_id NUMBER;
5447 -- Bug 7249100. Added by Lakshmi Gopalsami
5448 lv_dist_class VARCHAR2(30);
5449
5450 --> Cursor to fetch maximum line from ap_invoice_lines_all for current invoice, Bug# 4445989
5451 CURSOR cur_get_max_ap_inv_line (cpn_max_line_num AP_INVOICE_LINES_ALL.LINE_NUMBER%TYPE)
5452 IS
5453 SELECT accounting_date
5454 ,period_name
5455 ,deferred_acctg_flag
5456 ,def_acctg_start_date
5457 ,def_acctg_end_date
5458 ,def_acctg_number_of_periods
5459 ,def_acctg_period_type
5460 ,set_of_books_id
5461 , wfapproval_status
5462 FROM ap_invoice_lines_all
5463 WHERE invoice_id = inv_id
5464 AND line_number = cpn_max_line_num;
5465
5466 rec_max_ap_lines_all CUR_GET_MAX_AP_INV_LINE%ROWTYPE;
5467
5468 -- End Bug# 4445989
5469
5470 CURSOR c_tax(t_id NUMBER) IS
5471 SELECT tax_name, tax_account_id, mod_cr_percentage, tax_type,
5472 NVL(rounding_factor,0) rounding_factor /* added by vumaasha for bug 6761425 */
5473 -- bug 3051832, mod_cr_percentage added by aparajita on 10/10/2002 for bug # 2616100
5474 FROM JAI_CMN_TAXES_ALL
5475 WHERE tax_id = t_id;
5476
5477 CURSOR c_inv(inv_id NUMBER) IS
5478 SELECT batch_id,source
5479 FROM ap_invoices_all
5480 WHERE invoice_id = inv_id;
5481
5482 CURSOR for_org_id(inv_id NUMBER) IS
5483 SELECT org_id, vendor_id, NVL(exchange_rate, 1) exchange_rate, invoice_currency_code
5484 FROM ap_invoices_all
5485 WHERE invoice_id = inv_id;
5486
5487 /*CURSOR for_acct_id(orgn_id NUMBER) IS
5488 SELECT accts_pay_code_combination_id
5489 FROM ap_system_parameters_all
5490 WHERE NVL(org_id, 0) = NVL(orgn_id, 0);
5491 */
5492 --commented the above by Sanjikum For Bug#4474501, as this cursor is not being used anywhere
5493
5494 CURSOR for_dist_insertion(inv_id NUMBER, inv_line_num NUMBER, cpn_min_dist_line_num NUMBER) IS /* Picks up dtls from std apps inserted line */
5495 SELECT a.accounting_date,a.accrual_posted_flag,
5496 a.assets_addition_flag,a.assets_tracking_flag,
5497 a.cash_posted_flag,a.dist_code_combination_id,
5498 a.last_updated_by,a.last_update_date,
5499 a.line_type_lookup_code,a.period_name,
5500 a.set_of_books_id,a.amount,a.base_amount,a.batch_id,
5501 a.created_by,a.creation_date,a.description,
5502 a.accts_pay_code_combination_id,
5503 a.exchange_rate_variance,
5504 a.last_update_login,a.match_status_flag,
5505 a.posted_flag, a.rate_var_code_combination_id,
5506 a.reversal_flag,a.vat_code,a.exchange_date,
5507 a.exchange_rate, a.exchange_rate_type,
5508 a.price_adjustment_flag,a.program_application_id,
5509 a.program_id, a.program_update_date,
5510 a.global_attribute1, a.global_attribute2, a.global_attribute3,
5511 a.po_distribution_id, a.project_id,a.task_id,a.expenditure_type,
5512 a.expenditure_item_date,a.expenditure_organization_id,
5513 quantity_invoiced,
5514 invoice_distribution_id,
5515 matched_uom_lookup_code,
5516 org_id -- Bug 4863208
5517 , project_accounting_context /* 5763527 */
5518 , pa_addition_flag /* 5763527 */
5519 , asset_book_type_code /* 8406404 */
5520 FROM ap_invoice_distributions_all a
5521 WHERE invoice_id = inv_id
5522 AND invoice_line_number = inv_line_num
5523 AND distribution_line_number = cpn_min_dist_line_num;
5524
5525 CURSOR tax_lines1_cur(tran_id NUMBER,ven_id NUMBER)
5526 IS
5527 SELECT
5528 jrl.tax_amount tax_amount
5529 , jrl.tax_id
5530 , jrl.currency
5531 , jrl.tax_type tax_type
5532 , jrl.modvat_flag
5533 , jrl.tax_line_no
5534 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag
5535 FROM
5536 JAI_RCV_LINE_TAXES jrl
5537 , rcv_shipment_lines rsl
5538 , rcv_transactions rt
5539 , jai_cmn_taxes_all jcta
5540 WHERE jrl.shipment_line_id = rsl.shipment_line_id
5541 AND rt.shipment_line_id = rsl.shipment_line_id
5542 AND rt.transaction_id = tran_id
5543 AND jrl.vendor_id = ven_id
5544 AND jcta.tax_id = jrl.tax_id
5545 AND NVL(upper(jrl.tax_type),'TDS') NOT IN ('TDS',
5546 'CVD',
5547 jai_constants.tax_type_add_cvd ,
5548 'CUSTOMS',
5549 jai_constants.tax_type_customs_edu_cess,
5550 jai_constants.tax_type_cvd_edu_cess)
5551 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
5552 order by tax_line_no
5553 ;
5554
5555 /* Added by LGOPALSA. Bug 4210102
5556 * Added CVD and Customs Education Cess */
5557 --CURSOR from_line_location_taxes(p_line_location_id NUMBER, vend_id NUMBER) IS | pramasub commented and modified for FP
5558 CURSOR from_line_location_taxes
5559 ( p_line_location_id NUMBER
5560 , vend_id NUMBER
5561 , cp_source VARCHAR2 --pramasub FP
5562 , cp_shipment_num VARCHAR2
5563 ) --pramasub FP
5564 IS
5565 SELECT * FROM( --PRAMASUB FP
5566 SELECT
5567 jpt.tax_id
5568 , jpt.tax_amount
5569 , jpt.currency
5570 , jpt.tax_target_amount
5571 , jpt.modvat_flag
5572 , jpt.tax_type
5573 , jpt.tax_line_no
5574 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag
5575 FROM
5576 jai_po_taxes jpt
5577 , jai_cmn_taxes_all jcta
5578 WHERE jpt.line_location_id = p_line_location_id
5579 AND jcta.tax_id = jpt.tax_id
5580 AND NVL(upper(jpt.tax_type), 'A') NOT IN ('TDS',
5581 'CVD',
5582 jai_constants.tax_type_add_cvd ,
5583 'CUSTOMS',
5584 jai_constants.tax_type_customs_edu_cess,
5585 jai_constants.tax_type_cvd_edu_cess
5586 )
5587 AND NVL(jpt.vendor_id, 0) = vend_id
5588 AND cp_source <> 'ASBN'
5589 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
5590 UNION
5591 SELECT
5592 taxes.tax_id
5593 , taxes.TAX_AMT tax_amount
5594 , taxes.CURRENCY_CODE currency
5595 , taxes.TAX_AMT tax_target_amount
5596 , taxes.modvat_flag
5597 , taxes.tax_type
5598 , taxes.tax_line_no
5599 , NVL(jcta.inclusive_tax_flag,'N') inc_tax_flag
5600 FROM
5601 jai_cmn_lines lines
5602 , jai_cmn_document_Taxes taxes
5603 , jai_cmn_taxes_all jcta
5604 WHERE lines.cmn_line_id = taxes.source_doc_line_id
5605 AND taxes.source_doc_type = 'ASBN'
5606 AND lines.po_line_location_id = p_line_location_id
5607 AND lines.shipment_number = cp_shipment_num
5608 AND NVL(taxes.vendor_id, 0) = vend_id
5609 AND jcta.tax_id = taxes.tax_id
5610 AND cp_source = 'ASBN'
5611 AND NVL(jcta.reverse_charge_flag,'N') = 'Y'
5612 )
5613 ORDER BY tax_line_no; --pramasub FP end
5614
5615 CURSOR c_dist_reversal_cnt(p_invoice_id IN NUMBER) IS
5616 SELECT 1
5617 FROM ap_invoice_distributions_all
5618 WHERE invoice_id = p_invoice_id
5619 AND reversal_flag = 'Y'
5620 AND rownum = 1; -- Added by avallabh for bug 4926094 on 03-Feb-2006
5621
5622 CURSOR count_dist_no(inv_id NUMBER) IS
5623 SELECT NVL(DISTRIBUTION_LINE_NUMBER,1) FROM
5624 AP_INVOICE_DISTRIBUTIONS_ALL WHERE
5625 INVOICE_ID = inv_id
5626 AND DISTRIBUTION_LINE_NUMBER =
5627 (SELECT MAX(DISTRIBUTION_LINE_NUMBER)
5628 FROM AP_INVOICE_DISTRIBUTIONS_ALL
5629 WHERE INVOICE_ID = inv_id)
5630 FOR UPDATE OF DISTRIBUTION_LINE_NUMBER;
5631
5632 cursor c_get_invoice_distribution is -- bug#3332988
5633 select ap_invoice_distributions_s.nextval
5634 from dual;
5635
5636 cursor c_fnd_curr_precision(cp_currency_code fnd_currencies.currency_code%type) is
5637 select precision
5638 from fnd_currencies
5639 where currency_code = cp_currency_code;
5640
5641 cursor c_get_ship_to_org_loc (cpn_line_location_id po_line_locations_all.line_location_id%type)
5642 is
5643 select ship_to_organization_id
5644 ,ship_to_location_id
5645 from po_line_locations_all plla
5646 where plla.line_location_id = cpn_line_location_id;
5647
5648 ln_precision fnd_currencies.precision%type; -- added by sssumaith - bug# 3127834
5649 v_statement_no VARCHAR2(6);
5650 v_dist_reversal_cnt NUMBER;
5651 v_batch_id NUMBER;
5652 c_tax_rec c_tax%ROWTYPE;
5653 v_source VARCHAR2(25);
5654 shpmnt_ln_id rcv_shipment_lines.shipment_line_id%TYPE;
5655 cur_items_rec cur_items%ROWTYPE;
5656 caid gl_sets_of_books.chart_of_accounts_id%TYPE;
5657 for_dist_insertion_rec for_dist_insertion%ROWTYPE;
5658 cum_tax_amt NUMBER := 0;
5659 v_distribution_no NUMBER;
5660 v_tax_amount NUMBER;
5661 v_tax_amount_liability NUMBER;
5662 result BOOLEAN;
5663 req_id NUMBER;
5664 for_org_id_rec for_org_id%ROWTYPE;
5665 -- for_acct_id_rec for_acct_id%ROWTYPE;
5666 --commented the above by Sanjikum For Bug#4474501, as this variable is not being used anywhere
5667 v_cor_factor NUMBER;
5668 v_functional_currency gl_sets_of_books.currency_code%type; -- added for bug#3354932
5669 count_dist_no_rec NUMBER;
5670 v_attribute12 VARCHAR2(150);
5671 v_ATTRIBUTE2 VARCHAR2(150);
5672 v_sup_po_header_id NUMBER;
5673 v_sup_po_line_id NUMBER;
5674 v_sup_line_location_id NUMBER;
5675 v_sup_set_of_books_id NUMBER;
5676 v_sup_org_id NUMBER;
5677 v_sup_conversion_rate NUMBER;
5678 v_sup_tax_date DATE;
5679 v_sup_currency VARCHAR2(10);
5680 v_sup_invoice_date DATE;
5681 v_invoice_num VARCHAR2(50);
5682 v_sup_inv_type VARCHAR2(25);
5683 v_ship_num VARCHAR2(30); -- added pramasub FP
5684 get_ven_info_rec get_ven_info%ROWTYPE;
5685 chk_for_pcking_slip_rec checking_for_packing_slip%ROWTYPE;
5686 v_assets_tracking_flag ap_invoice_distributions_all.assets_tracking_flag%type;
5687 v_update_payment_schedule boolean; -- bug#3206083
5688 v_invoice_distribution_id ap_invoice_distributions_all.invoice_distribution_id%type; -- bug#3332988
5689 v_apportn_factor_for_item_line number;
5690 v_dist_code_combination_id ap_invoice_distributions_all.dist_code_combination_id%type;
5691 v_dist_ccid_liability ap_invoice_distributions_all.dist_code_combination_id%type;
5692
5693 -- Bug 5401111. Added by Lakshmi Gopalsami
5694 lv_account_type gl_code_combinations.account_type%TYPE;
5695
5696 /* 5763527 */
5697 ln_project_id ap_invoice_distributions_all.project_id%TYPE;
5698 ln_task_id ap_invoice_distributions_all.task_id%TYPE;
5699 lv_exp_type ap_invoice_distributions_all.expenditure_type%TYPE;
5700 ld_exp_item_date ap_invoice_distributions_all.expenditure_item_date%TYPE;
5701 ln_exp_organization_id ap_invoice_distributions_all.expenditure_organization_id%TYPE;
5702 lv_project_accounting_context ap_invoice_distributions_all.project_accounting_context%TYPE;
5703 lv_pa_addition_flag ap_invoice_distributions_all.pa_addition_flag%TYPE;
5704
5705 ln_lines_to_insert number;
5706 ln_nrec_tax_amt number;
5707 ln_rec_tax_amt number;
5708 lv_modvat_flag jai_ap_match_inv_taxes.recoverable_flag%type;
5709
5710 lv_excise_costing_flag varchar2 (1);
5711 lv_tax_type varchar2(5);
5712 lv_tax_line_amount NUMBER := 0;
5713 lv_ap_line_to_inst_flag VARCHAR2(1);
5714 lv_tax_line_to_inst_flag VARCHAR2(1);
5715 ln_ship_to_organization_id po_line_locations_all.ship_to_organization_id%type;
5716 ln_ship_to_location_id po_line_locations_all.ship_to_location_id%type;
5717
5718 /* Service Tax */
5719 cursor c_rcv_transactions(p_transaction_id number) is
5720 select po_line_id, organization_id
5721 from rcv_transactions
5722 where transaction_id = p_transaction_id;
5723
5724 cursor c_po_lines_all(p_po_line_id number) is
5725 select item_id
5726 from po_lines_all
5727 where po_line_id = p_po_line_id;
5728
5729 /* Bug 5358788. Added by Lakshmi Gopalsami
5730 * Added parameter cp_regime_code instead of
5731 * hardcoding the value for service. This is required
5732 * for re-using the same cursor to avoid performance issue
5733 * in using jai_regime_tax_types_v.
5734 */
5735 cursor c_jai_regimes(cp_regime_code IN JAI_RGM_DEFINITIONS.regime_code%TYPE)
5736 IS
5737 select regime_id
5738 from JAI_RGM_DEFINITIONS
5739 where regime_code = cp_regime_code ; /* SERVICE or VAT */
5740
5741 cursor c_regime_tax_type(cp_regime_id number, cp_tax_type varchar2) is
5742 select attribute_code tax_type
5743 from JAI_RGM_REGISTRATIONS
5744 where regime_id = cp_regime_id
5745 and registration_type = jai_constants.regn_type_tax_types /* TAX_TYPES */
5746 and attribute_code = cp_tax_type;
5747
5748 /*Added by kunkumar for bug#5593895*/
5749 Cursor c_tax_curr_prec(cp_tax_id jai_cmn_taxes_all.tax_id%type) is
5750 --select NVL(rounding_factor,-1) -- for bug 13954092 by anupgupt
5751 select NVL(rounding_factor,2) -- for bug 16226028
5752 from jai_cmn_taxes_all
5753 where tax_id = cp_tax_id ;
5754 /*End, Added by kunkumar for bug#5593895*/
5755
5756 r_rcv_transactions c_rcv_transactions%rowtype;
5757 r_po_lines_all c_po_lines_all%rowtype;
5758 r_jai_regimes c_jai_regimes%rowtype;
5759 r_service_regime_tax_type c_regime_tax_type%rowtype;
5760 lv_is_item_an_expense varchar2(20); /* Service */
5761 lv_accounting_method_option varchar2(20); /* Service */
5762 lv_accrue_on_receipt_flag po_distributions_all.accrue_on_receipt_flag%type;
5763 /* Service Tax */
5764
5765 /* Bug 5358788. Added by Lakshmi Gopalsami
5766 * Defined variable for fetching VAT regime/
5767 */
5768 r_vat_regimes c_jai_regimes%rowtype;
5769 r_vat_regime_tax_type c_regime_tax_type%rowtype;
5770
5771 ln_base_amount number ; --Added by kunkumar for bug#5593895
5772 ln_tax_precision JAI_CMN_TAXES_ALL.rounding_factor%type;--Added by kunkumar for bug#5593895
5773 l_api_name CONSTANT VARCHAR2(50) := 'process_batch_record()';
5774 ap_invoice_lines_all_rec ap_invoice_lines_all%ROWTYPE;
5775 ap_invoice_dist_all_rec ap_invoice_distributions_all%ROWTYPE;
5776
5777 FUNCTION update_payment_schedule (p_total_tax NUMBER) RETURN boolean IS -- bug # 3218978
5778
5779 v_total_tax_in_payment number;
5780 v_tax_installment number;
5781 v_payment_num ap_payment_schedules_all.payment_num%type;
5782 v_total_payment_amt number;
5783 v_diff_tax_amount number;
5784
5785 cursor c_total_payment_amt is
5786 select sum(gross_amount)
5787 from ap_payment_schedules_all
5788 where invoice_id = inv_id;
5789
5790 begin
5791
5792 Fnd_File.put_line(Fnd_File.LOG, 'Start of function update_payment_schedule');
5793
5794 open c_total_payment_amt;
5795 fetch c_total_payment_amt into v_total_payment_amt;
5796 close c_total_payment_amt;
5797
5798 If nvl(v_total_payment_amt, -1) = -1 then --Added by nprashar for bug # 13854408
5799 Fnd_File.put_line(Fnd_File.LOG, 'Cannot update payment schedule, total payment amount :'
5800 || to_char(v_total_payment_amt));
5801 return false;
5802 Elsif v_total_payment_amt = 0 Then
5803 v_total_payment_amt := 1;
5804 end if;
5805
5806 v_total_tax_in_payment := 0;
5807
5808 for c_installments in
5809 (
5810 select gross_amount,
5811 payment_num
5812 from ap_payment_schedules_all
5813 where invoice_id = inv_id
5814 order by payment_num
5815 )
5816 loop
5817
5818 v_tax_installment := 0 ;
5819 v_payment_num := c_installments.payment_num;
5820
5821 v_tax_installment := p_total_tax * (c_installments.gross_amount / nvl(v_total_payment_amt,1));
5822
5823 v_tax_installment := round(v_tax_installment, ln_precision);
5824
5825 update ap_payment_schedules_all
5826 set gross_amount = gross_amount + v_tax_installment,
5827 amount_remaining = amount_remaining + v_tax_installment,
5828 inv_curr_gross_amount = inv_curr_gross_amount + v_tax_installment,
5829 payment_status_flag = decode(payment_status_flag, 'Y', 'P', payment_status_flag)
5830 -- bug#3624898
5831 where invoice_id = inv_id
5832 and payment_num = v_payment_num;
5833
5834 v_total_tax_in_payment := v_total_tax_in_payment + v_tax_installment;
5835
5836 end loop;
5837
5838 -- any difference in tax because of rounding has to be added to the last installment.
5839 if v_total_tax_in_payment <> p_total_tax then
5840
5841 v_diff_tax_amount := p_total_tax - v_total_tax_in_payment;
5842
5843 v_diff_tax_amount := round(v_diff_tax_amount,ln_precision);
5844
5845 update ap_payment_schedules_all
5846 set gross_amount = gross_amount + v_diff_tax_amount,
5847 amount_remaining = amount_remaining + v_diff_tax_amount,
5848 inv_curr_gross_amount = inv_curr_gross_amount + v_diff_tax_amount,
5849 payment_status_flag = decode(payment_status_flag, 'Y', 'P', payment_status_flag)
5850 -- bug#3624898
5851 where invoice_id = inv_id
5852 and payment_num = v_payment_num;
5853 end if;
5854
5855 return true;
5856
5857 exception
5858 when others then
5859 Fnd_File.put_line(Fnd_File.LOG, 'exception from function update_payment_schedule');
5860 Fnd_File.put_line(Fnd_File.LOG, sqlerrm);
5861 return false;
5862
5863 end update_payment_schedule; -- bug # 3218978
5864
5865 BEGIN
5866
5867 /*------------------------------------------------------------------------------------------------------
5868 CHANGE HISTORY: FILENAME: jai_ap_match_tax_pkg.process_batch_record_p.sql
5869 S.No dd/mm/yyyy Author and Details
5870 ----------------------------------------------------------------------------------------------------------
5871 1. 24/07/2012 This procedure is extracted from jai_ap_match_tax_pkg.process_batch_record.
5872 Process similar logic for ERS invoice while only pick up reverse charge service tax.
5873
5874 ------------------------------------------------------------------------------------------------------*/
5875 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.BEGIN', G_PKG_NAME || ': '|| l_api_name || '()+');
5876 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'inv_id: ' || inv_id );
5877 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name || '.parameters', 'inv_id: ' || pn_invoice_line_number );
5878
5879 ln_user_id := fnd_global.user_id;
5880 ln_login_id := fnd_global.login_id;
5881
5882 OPEN get_ven_info(inv_id);
5883 FETCH get_ven_info INTO get_ven_info_rec;
5884 CLOSE get_ven_info;
5885
5886 open c_functional_currency(get_ven_info_rec.set_of_books_id);
5887 fetch c_functional_currency into v_functional_currency;
5888 close c_functional_currency;
5889
5890 OPEN checking_for_packing_slip(get_ven_info_rec.vendor_id, get_ven_info_rec.vendor_site_id,
5891 get_ven_info_rec.org_id);
5892 FETCH checking_for_packing_slip INTO chk_for_pcking_slip_rec;
5893 CLOSE checking_for_packing_slip;
5894
5895
5896 OPEN c_inv(inv_id);
5897 FETCH c_inv INTO v_batch_id, v_source;
5898 CLOSE c_inv;
5899
5900 -- Get mininum invoice distribution line number
5901 lv_match_type := 'NOT_MATCHED';
5902 lv_dist_class := 'PERMANENT';
5903
5904 OPEN cur_get_min_dist_linenum (inv_id, pn_invoice_line_number);
5905 FETCH cur_get_min_dist_linenum INTO ln_min_dist_line_num;
5906 CLOSE cur_get_min_dist_linenum;
5907
5908 OPEN cur_get_max_line_number;
5909 FETCH cur_get_max_line_number INTO ln_max_lnno;
5910 CLOSE cur_get_max_line_number;
5911
5912 OPEN cur_get_max_ap_inv_line (cpn_max_line_num => ln_max_lnno );
5913 FETCH cur_get_max_ap_inv_line INTO rec_max_ap_lines_all;
5914 CLOSE cur_get_max_ap_inv_line;
5915
5916 IF v_source <> 'SUPPLEMENT' THEN
5917 OPEN cur_items(inv_id,pn_invoice_line_number,ln_min_dist_line_num);
5918 FETCH cur_items INTO cur_items_rec;
5919 CLOSE cur_items;
5920 END IF;
5921
5922 OPEN for_org_id(inv_id);
5923 FETCH for_org_id INTO for_org_id_rec;
5924 CLOSE for_org_id;
5925
5926 open c_fnd_curr_precision(for_org_id_rec.invoice_currency_code);
5927 fetch c_fnd_curr_precision into ln_precision;
5928 close c_fnd_curr_precision;
5929
5930 if ln_precision is null then
5931 ln_precision := 0;
5932 end if;
5933
5934 IF v_source <> 'SUPPLEMENT' THEN
5935
5936 BEGIN
5937 SELECT chart_of_accounts_id INTO caid
5938 FROM gl_sets_of_books
5939 WHERE set_of_books_id = cur_items_rec.set_of_books_id;
5940 EXCEPTION
5941 WHEN OTHERS THEN
5942 NULL;
5943 END ;
5944
5945 END IF;
5946
5947 SELECT max(line_number)
5948 INTO ln_inv_line_num
5949 FROM ap_invoice_lines_all
5950 WHERE invoice_id = inv_id;
5951
5952 OPEN for_dist_insertion(inv_id,pn_invoice_line_number, ln_min_dist_line_num);
5953 FETCH for_dist_insertion INTO for_dist_insertion_rec;
5954 CLOSE for_dist_insertion;
5955
5956 v_apportn_factor_for_item_line :=
5957 jai_ap_utils_pkg.get_apportion_factor(inv_id, pn_invoice_line_number);
5958
5959 /* service Start */
5960 open c_rcv_transactions(rcv_tran_id);
5961 fetch c_rcv_transactions into r_rcv_transactions;
5962 close c_rcv_transactions;
5963
5964 open c_po_lines_all(po_dist_id);
5965 fetch c_po_lines_all into r_po_lines_all;
5966 close c_po_lines_all;
5967
5968 lv_is_item_an_expense :=
5969 jai_general_pkg.is_item_an_expense
5970 (
5971 p_organization_id => r_rcv_transactions.organization_id,
5972 p_item_id => r_po_lines_all.item_id
5973 );
5974
5975 lv_accrue_on_receipt_flag :=
5976 jai_rcv_trx_processing_pkg.get_accrue_on_receipt(p_po_distribution_id => po_dist_id);
5977
5978 open c_jai_regimes(jai_constants.service_regime);
5979 fetch c_jai_regimes into r_jai_regimes;
5980 close c_jai_regimes;
5981
5982 /* service End */
5983
5984 IF p_rematch = 'PAY_ON_RECEIPT' THEN
5985 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'p_rematch: ' || p_rematch );
5986
5987 IF rcv_tran_id IS NOT NULL THEN
5988 IF p_receipt_code = 'RECEIPT' OR p_receipt_code = 'PACKING_SLIP' THEN -- RECEIPT and PACKING_SLIP
5989 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'branch p_receipt_code: ' || p_receipt_code );
5990
5991 FOR tax_lines1_rec IN tax_lines1_cur(rcv_tran_id,for_org_id_rec.vendor_id) LOOP
5992
5993 v_distribution_no :=1;
5994 r_service_regime_tax_type := null;
5995 ln_project_id := null;
5996 ln_task_id := null;
5997 lv_exp_type := null;
5998 ld_exp_item_date := null;
5999 ln_exp_organization_id := null;
6000 lv_project_accounting_context := null;
6001 lv_pa_addition_flag := null;
6002 r_vat_regime_tax_type := null;
6003 ln_base_amount := null ;
6004
6005 OPEN c_tax(tax_lines1_rec.tax_id);
6006 FETCH c_tax INTO c_tax_rec;
6007 CLOSE c_tax;
6008
6009 OPEN c_tax_curr_prec( tax_lines1_rec.tax_id ) ;
6010 FETCH c_tax_curr_prec INTO ln_tax_precision ;
6011 CLOSE c_tax_curr_prec ;
6012
6013 /* Service Start */
6014 v_assets_tracking_flag := for_dist_insertion_rec.assets_tracking_flag;
6015 v_dist_code_combination_id := null;
6016
6017 --initial the tax_type
6018 lv_tax_type := NULL;
6019
6020 -- Modified the if condition to consider partial recoverable lines previous logic was hadling only when it is 100
6021 if tax_lines1_rec.modvat_flag = 'Y'
6022 and nvl(c_tax_rec.mod_cr_percentage, 0) > 0 then
6023
6024 --recoverable tax
6025 lv_tax_type := 'RE';
6026
6027 /* recoverable tax */
6028 v_assets_tracking_flag := 'N';
6029
6030 open c_regime_tax_type(r_jai_regimes.regime_id, c_tax_rec.tax_type);
6031 fetch c_regime_tax_type into r_service_regime_tax_type;
6032 close c_regime_tax_type;
6033
6034 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6035 ' Service regime: '||r_service_regime_tax_type.tax_type);
6036
6037 /* Fetch ship_to_location_id and ship_to_organization_id from po_line_locations */
6038 ln_ship_to_organization_id := null;
6039 ln_ship_to_location_id := null;
6040 open c_get_ship_to_org_loc (cur_items_rec.line_location_id);
6041 fetch c_get_ship_to_org_loc into ln_ship_to_organization_id
6042 ,ln_ship_to_location_id;
6043 close c_get_ship_to_org_loc;
6044
6045 if r_service_regime_tax_type.tax_type is not null then
6046 /* Service type of tax */
6047 v_dist_code_combination_id := jai_cmn_rgm_recording_pkg.get_account
6048 (
6049 p_regime_id => r_jai_regimes.regime_id,
6050 p_organization_type => jai_constants.orgn_type_io,
6051 p_organization_id => ln_ship_to_organization_id,
6052 p_location_id => ln_ship_to_location_id,
6053 p_tax_type => c_tax_rec.tax_type,
6054 p_account_name => GV_REVERSE_CHARGE
6055 );
6056 v_dist_ccid_liability := jai_cmn_rgm_recording_pkg.get_account
6057 (
6058 p_regime_id => r_jai_regimes.regime_id,
6059 p_organization_type => jai_constants.orgn_type_io,
6060 p_organization_id => ln_ship_to_organization_id,
6061 p_location_id => ln_ship_to_location_id,
6062 p_tax_type => c_tax_rec.tax_type,
6063 p_account_name => GV_INTERIM_LIABILITY
6064 );
6065
6066 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6067 ' Regime type , CCID ,v_dist_ccid_liability'
6068 || r_service_regime_tax_type.tax_type
6069 ||', ' || v_dist_code_combination_id || ', ' || v_dist_ccid_liability);
6070 end if;
6071
6072 else
6073
6074 IF nvl(lv_accrue_on_receipt_flag , '#') <> 'Y' THEN
6075 ln_project_id := p_project_id;
6076 ln_task_id := p_task_id;
6077 lv_exp_type := p_expenditure_type;
6078 ld_exp_item_date := p_expenditure_item_date;
6079 ln_exp_organization_id := p_expenditure_organization_id;
6080 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
6081 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
6082 END if;
6083
6084 --non recoverable
6085 lv_tax_type := 'NR';
6086 end if; /*nvl(c_tax_rec.mod_cr_percentage, 0) = 100 and c_tax_rec.tax_account_id is not null*/
6087
6088 if v_dist_code_combination_id is null then
6089 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
6090 end if;
6091 /* Service End */
6092
6093 v_tax_amount := tax_lines1_rec.tax_amount * v_apportn_factor_for_item_line;
6094
6095
6096 if for_org_id_rec.invoice_currency_code <> tax_lines1_rec.currency then
6097 v_tax_amount := v_tax_amount / for_org_id_rec.exchange_rate;
6098 end if;
6099 v_tax_amount_liability := v_tax_amount;
6100
6101 ln_rec_tax_amt := null;
6102 ln_nrec_tax_amt := null;
6103 --reverse charge service tax only exclusive tax.
6104 ln_lines_to_insert := 1; -- Loop controller to insert more than one lines for partially recoverable tax lines in PO
6105
6106 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6107 'tax_lines1_rec.modvat_flag ='||tax_lines1_rec.modvat_flag ||',c_tax_rec.mod_cr_percentage='||c_tax_rec.mod_cr_percentage);
6108
6109 if tax_lines1_rec.modvat_flag = jai_constants.YES
6110 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0
6111 and nvl(c_tax_rec.mod_cr_percentage, -1) < 100
6112 then
6113 --
6114 -- Tax line is for partial Recoverable tax. Hence split amount into two parts, Recoverable and Non-Recoverable
6115 -- and instead of one line, two lines needs to be inserted.
6116 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100) there will be only one line inserted
6117 --
6118 ln_lines_to_insert := 2 *ln_lines_to_insert;
6119 ln_rec_tax_amt := round ( nvl(v_tax_amount,0) * (c_tax_rec.mod_cr_percentage/100) , c_tax_rec.rounding_factor) ;
6120 ln_nrec_tax_amt := round ( nvl(v_tax_amount,0) - nvl(ln_rec_tax_amt,0) , c_tax_rec.rounding_factor) ;
6121 lv_tax_type := 'PR';
6122 end if;
6123
6124 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6125 'ln_lines_to_insert='||ln_lines_to_insert||
6126 ',ln_rec_tax_amt='||ln_rec_tax_amt ||
6127 ',ln_nrec_tax_amt='||ln_nrec_tax_amt
6128 );
6129
6130 --
6131 -- If a line has a partially recoverable tax the following loop will be executed twice. First line will always be for a
6132 -- non recoverable tax amount and the second line will be for a recoverable tax amount
6133 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100 fully recoverable) the variable
6134 -- ln_lines_to_insert will have value of 1 and hence only one line will be inserted with full tax amount
6135 --
6136 for line in 1..ln_lines_to_insert
6137 loop
6138
6139 IF (NVL(tax_lines1_rec.inc_tax_flag,'N') = 'N')--exclusive case
6140 THEN
6141 IF line = 1 then --recoverable part
6142
6143 v_tax_amount := nvl(ln_rec_tax_amt, v_tax_amount);
6144 lv_tax_line_amount:= v_tax_amount ;
6145 lv_modvat_flag := tax_lines1_rec.modvat_flag ;
6146
6147 ELSIF line = 2 then --no-recoverable part
6148
6149 v_tax_amount := ln_nrec_tax_amt;
6150 lv_tax_line_amount := v_tax_amount ;
6151
6152 IF for_dist_insertion_rec.assets_tracking_flag = jai_constants.YES THEN
6153 v_assets_tracking_flag := jai_constants.YES;
6154 END IF;
6155
6156 lv_modvat_flag := jai_constants.NO ;
6157
6158 --
6159 -- This is a non recoverable line hence the tax amounts should be added into the project costs by populating
6160 -- projects related columns so that PROJECTS can consider this line for Project Costing
6161 --
6162 IF nvl(lv_accrue_on_receipt_flag,'#') <> 'Y' THEN
6163 ln_project_id := p_project_id;
6164 ln_task_id := p_task_id;
6165 lv_exp_type := p_expenditure_type;
6166 ld_exp_item_date := p_expenditure_item_date;
6167 ln_exp_organization_id := p_expenditure_organization_id;
6168 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
6169 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
6170 END if;
6171
6172 -- For non recoverable line charge account should be same as of the parent line
6173 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
6174 END IF; --line = 1
6175 ELSE
6176 --reverse charge service tax should no inclusive tax.
6177 --CONTINUE;
6178 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_ERROR, GV_MODULE_PREFIX || '.' || l_api_name,
6179 'For reverse charge service, should only be exclusive tax. Tax ID: ' || tax_lines1_rec.tax_id);
6180 END IF; --(NVL(r_tax_lines_r ec.inc_tax_flag,'N') = 'N')
6181
6182
6183 --insert exclusive tax to the ap tables
6184 --or insert recoverable inclusive tax with project information the ap tables
6185 --1.Only exlusive taxes or inclusive taxes with project information
6186 -- are allowed to be inserted into Ap Lines and Dist Lines
6187 --2.All taxes need to be inserted into jai tax tables. Futher the
6188 -- partially recoverable tax need to be splitted into 2 lines
6189 ln_inv_line_num := ln_inv_line_num + 1;
6190 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into ap_invoice_lines_all for line no :'|| ln_inv_line_num );
6191
6192 ap_invoice_lines_all_rec := NULL;
6193 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
6194 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
6195 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := GV_CONSTANT_MISCELLANEOUS;
6196 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
6197 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
6198 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
6199 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_code_combination_id;
6200 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
6201 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
6202 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
6203 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
6204 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
6205 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
6206 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
6207 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
6208 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision);
6209 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
6210 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
6211 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
6212 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
6213 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
6214 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
6215 ap_invoice_lines_all_rec.project_id := ln_project_id;
6216 ap_invoice_lines_all_rec.task_id := ln_task_id;
6217 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
6218 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
6219 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
6220 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
6221 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
6222 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
6223 ap_invoice_lines_all_rec.reference_key1 := tax_lines1_rec.tax_id;
6224 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
6225 Insert_ap_inv_line( ap_invoice_lines_all_rec);
6226
6227 open c_get_invoice_distribution;
6228 fetch c_get_invoice_distribution into v_invoice_distribution_id;
6229 close c_get_invoice_distribution;
6230 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into ap_invoice_distributions_all for Invoice distribution id:'|| v_invoice_distribution_id );
6231
6232 ap_invoice_dist_all_rec := NULL;
6233 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
6234 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
6235 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
6236 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
6237 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
6238 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
6239 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_code_combination_id;
6240 ap_invoice_dist_all_rec.invoice_id := inv_id;
6241 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
6242 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
6243 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
6244 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
6245 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id;
6246 ap_invoice_dist_all_rec.amount := round(round(v_tax_amount,ln_tax_precision),ln_precision);
6247 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(v_tax_amount * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision);
6248 ap_invoice_dist_all_rec.batch_id := v_batch_id;
6249 ap_invoice_dist_all_rec.created_by := ln_user_id;
6250 ap_invoice_dist_all_rec.creation_date := SYSDATE;
6251 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
6252 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
6253 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag ;
6254 ap_invoice_dist_all_rec.posted_flag := 'N';
6255 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
6256 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
6257 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
6258 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
6259 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
6260 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
6261 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
6262 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0);
6263 IF (v_assets_tracking_flag = 'Y')
6264 THEN
6265 ap_invoice_dist_all_rec.quantity_invoiced := NULL;
6266 ELSE
6267 ap_invoice_dist_all_rec.quantity_invoiced := 0;
6268 END IF;
6269 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
6270 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
6271 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
6272 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
6273 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
6274 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id);
6275 IF (v_assets_tracking_flag = 'N')
6276 THEN
6277 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := NULL;
6278 ELSE
6279 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
6280 END IF;
6281 ap_invoice_dist_all_rec.project_id := ln_project_id;
6282 ap_invoice_dist_all_rec.task_id := ln_task_id;
6283 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
6284 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
6285 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
6286 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
6287 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
6288 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
6289 --ap_invoice_dist_all_rec.asset_book_type_code := decode(v_assets_tracking_flag,'Y',for_dist_insertion_rec.asset_book_type_code,NULL);
6290 IF (v_assets_tracking_flag = 'Y')
6291 THEN
6292 ap_invoice_dist_all_rec.asset_book_type_code := for_dist_insertion_rec.asset_book_type_code;
6293 ELSE
6294 ap_invoice_dist_all_rec.asset_book_type_code := NULL;
6295 END IF;
6296 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
6297
6298
6299 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into JAI_AP_MATCH_INV_TAXES');
6300 INSERT INTO JAI_AP_MATCH_INV_TAXES
6301 (
6302 tax_distribution_id,
6303 exchange_rate_variance,
6304 assets_tracking_flag,
6305 invoice_id,
6306 po_header_id,
6307 po_line_id,
6308 line_location_id,
6309 set_of_books_id,
6310 exchange_rate,
6311 exchange_rate_type,
6312 exchange_date,
6313 currency_code,
6314 code_combination_id,
6315 last_update_login,
6316 creation_date,
6317 created_by,
6318 last_update_date,
6319 last_updated_by,
6320 acct_pay_code_combination_id,
6321 accounting_date,
6322 tax_id,
6323 tax_amount,
6324 base_amount,
6325 chart_of_accounts_id,
6326 distribution_line_number,
6327 po_distribution_id,
6328 parent_invoice_distribution_id,
6329 legal_entity_id
6330 ,INVOICE_LINE_NUMBER
6331 ,INVOICE_DISTRIBUTION_ID
6332 ,PARENT_INVOICE_LINE_NUMBER
6333 ,RCV_TRANSACTION_ID
6334 ,LINE_TYPE_LOOKUP_CODE
6335 ,recoverable_flag
6336 ,line_no
6337 )
6338 VALUES
6339 (
6340 JAI_AP_MATCH_INV_TAXES_S.NEXTVAL,
6341 null,
6342 v_assets_tracking_flag ,
6343 inv_id,
6344 cur_items_rec.po_header_id,
6345 cur_items_rec.po_line_id,
6346 cur_items_rec.line_location_id,
6347 cur_items_rec.set_of_books_id,
6348 cur_items_rec.rate,
6349 cur_items_rec.rate_type,
6350 cur_items_rec.rate_date,
6351 cur_items_rec.currency_code,
6352 v_dist_code_combination_id,
6353 cur_items_rec.last_update_login,
6354 cur_items_rec.creation_date,
6355 cur_items_rec.created_by,
6356 cur_items_rec.last_update_date,
6357 cur_items_rec.last_updated_by,
6358 v_dist_code_combination_id,
6359 cur_items_rec.invoice_date,
6360 tax_lines1_rec.tax_id,
6361 ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision),
6362 ROUND(ROUND(v_tax_amount * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision),
6363 caid,
6364 v_distribution_no,
6365 po_dist_id,
6366 for_dist_insertion_rec.invoice_distribution_id,
6367 get_ven_info_rec.legal_entity_id
6368 , ln_inv_line_num
6369 , NVL(v_invoice_distribution_id,for_dist_insertion_rec.invoice_distribution_id)
6370 , pn_invoice_line_number
6371 , rcv_tran_id
6372 , GV_CONSTANT_MISCELLANEOUS
6373 , lv_modvat_flag
6374 , tax_lines1_rec.tax_line_no
6375 );
6376
6377 END LOOP; --> line in 1..ln_lines_to_insert
6378
6379 ln_inv_line_num := ln_inv_line_num + 1;
6380 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'@@Before inserting liability lines into ap_invoice_lines_all for line no :'|| ln_inv_line_num ||' tax amount = '||v_tax_amount_liability);
6381
6382 ap_invoice_lines_all_rec := NULL;
6383 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
6384 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
6385 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := GV_CONSTANT_MISCELLANEOUS;
6386 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
6387 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
6388 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
6389 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_ccid_liability;
6390 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
6391 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
6392 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
6393 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
6394 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
6395 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
6396 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
6397 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
6398 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(-v_tax_amount_liability, ln_tax_precision),ln_precision);
6399 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
6400 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
6401 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
6402 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
6403 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
6404 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
6405 ap_invoice_lines_all_rec.project_id := ln_project_id;
6406 ap_invoice_lines_all_rec.task_id := ln_task_id;
6407 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
6408 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
6409 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
6410 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
6411 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
6412 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
6413 ap_invoice_lines_all_rec.reference_key1 := tax_lines1_rec.tax_id;
6414 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
6415 Insert_ap_inv_line( ap_invoice_lines_all_rec);
6416
6417
6418 open c_get_invoice_distribution;
6419 fetch c_get_invoice_distribution into v_invoice_distribution_id;
6420 close c_get_invoice_distribution;
6421 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6422 '@Before inserting liability line into ap_invoice_distributions_all for distribution no :' || v_invoice_distribution_id);
6423
6424 ap_invoice_dist_all_rec := NULL;
6425 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
6426 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
6427 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
6428 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
6429 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
6430 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
6431 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_ccid_liability;
6432 ap_invoice_dist_all_rec.invoice_id := inv_id;
6433 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
6434 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
6435 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
6436 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
6437 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id;
6438 ap_invoice_dist_all_rec.amount := round(round(-v_tax_amount_liability,ln_tax_precision),ln_precision);
6439 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(-v_tax_amount_liability * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision);
6440 ap_invoice_dist_all_rec.batch_id := v_batch_id;
6441 ap_invoice_dist_all_rec.created_by := ln_user_id;
6442 ap_invoice_dist_all_rec.creation_date := SYSDATE;
6443 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
6444 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
6445 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag ;
6446 ap_invoice_dist_all_rec.posted_flag := 'N';
6447 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
6448 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
6449 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
6450 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
6451 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
6452 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
6453 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
6454 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0);
6455 IF (v_assets_tracking_flag = 'Y')
6456 THEN
6457 ap_invoice_dist_all_rec.quantity_invoiced := NULL;
6458 ELSE
6459 ap_invoice_dist_all_rec.quantity_invoiced := 0;
6460 END IF;
6461 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
6462 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
6463 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
6464 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
6465 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
6466 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id);
6467 IF (v_assets_tracking_flag = 'N')
6468 THEN
6469 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := NULL;
6470 ELSE
6471 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
6472 END IF;
6473 ap_invoice_dist_all_rec.project_id := ln_project_id;
6474 ap_invoice_dist_all_rec.task_id := ln_task_id;
6475 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
6476 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
6477 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
6478 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
6479 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
6480 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
6481 --ap_invoice_dist_all_rec.asset_book_type_code := decode(v_assets_tracking_flag,'Y',for_dist_insertion_rec.asset_book_type_code,NULL);
6482 IF (v_assets_tracking_flag = 'Y')
6483 THEN
6484 ap_invoice_dist_all_rec.asset_book_type_code := for_dist_insertion_rec.asset_book_type_code;
6485 ELSE
6486 ap_invoice_dist_all_rec.asset_book_type_code := NULL;
6487 END IF;
6488 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
6489
6490 --calc invoice amount
6491 IF NVL(tax_lines1_rec.inc_tax_flag,'N') ='N'
6492 THEN
6493 cum_tax_amt := cum_tax_amt + round(v_tax_amount_liability, ln_precision);
6494 END IF;
6495
6496 END LOOP; --tax_lines1_rec IN tax_lines1_cur(rcv_tran_id,for_org_id_rec.vendor_id)
6497
6498 END IF; -- p_receipt_code = 'PACKING_SLIP' or p_receipt_code = 'RECEIPT'
6499
6500 ELSIF rcv_tran_id IS NULL and v_source IN ('ERS', 'ASBN', 'RTS') THEN
6501
6502 --IF rcv_tran_id IS NOT NULL THEN
6503 -- to be fired when po_line_locations_all.match_option = 'P'
6504
6505 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Fired when rcv_tran_id IS NULL, match_option is P');
6506
6507 -- fetch shipment_num from rcv_headers_interface based on invoice_num
6508 -- pramasub start for isupplier IL FP
6509 -- local cursor to fetch shipment number
6510 For rcv_hdr_intf_rec in
6511 (Select shipment_num
6512 From rcv_headers_interface
6513 Where invoice_num = get_ven_info_rec.invoice_num)
6514 Loop
6515 v_ship_num := rcv_hdr_intf_rec.shipment_num;
6516 End loop;
6517 -- pramasub end FP
6518
6519
6520 FOR i IN
6521 from_line_location_taxes
6522 (
6523 cur_items_rec.line_location_id,
6524 for_org_id_rec.vendor_id,
6525 v_source, -- added by pramasub Isupplier IL FP
6526 v_ship_num -- added pramasub FP
6527 )LOOP
6528
6529 v_distribution_no :=1;
6530 r_service_regime_tax_type := null;
6531 r_VAT_regime_tax_type := null;
6532 ln_project_id := null;
6533 ln_task_id := null;
6534 lv_exp_type := null;
6535 ld_exp_item_date := null;
6536 ln_exp_organization_id := null;
6537 lv_project_accounting_context := null;
6538 lv_pa_addition_flag := null;
6539
6540 v_tax_amount := i.tax_amount * v_apportn_factor_for_item_line;
6541
6542 if i.currency <> for_org_id_rec.invoice_currency_code then
6543 v_tax_amount := v_tax_amount / for_org_id_rec.exchange_rate;
6544 end if;
6545 v_tax_amount_liability := v_tax_amount;
6546
6547 OPEN c_tax(i.tax_id);
6548 FETCH c_tax INTO c_tax_rec;
6549 CLOSE c_tax;
6550
6551 OPEN c_tax_curr_prec( i.tax_id ) ;
6552 FETCH c_tax_curr_prec INTO ln_tax_precision ;
6553 CLOSE c_tax_curr_prec ;
6554
6555 ln_base_amount := null ;
6556
6557 /* Service Start */
6558 v_assets_tracking_flag := for_dist_insertion_rec.assets_tracking_flag;
6559 v_dist_code_combination_id := null;
6560
6561 --initial the tax_type
6562 lv_tax_type := NULL;
6563
6564 if i.modvat_flag = 'Y'
6565 and nvl(c_tax_rec.mod_cr_percentage, 0) > 0
6566 then
6567
6568 --recoverable tax
6569 lv_tax_type := 'RE';
6570
6571 /* recoverable tax */
6572 v_assets_tracking_flag := 'N';
6573
6574 open c_regime_tax_type(r_jai_regimes.regime_id, c_tax_rec.tax_type);
6575 fetch c_regime_tax_type into r_service_regime_tax_type;
6576 close c_regime_tax_type;
6577
6578 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6579 ' Service regime: '||r_service_regime_tax_type.tax_type);
6580
6581 /* Fetch ship_to_location_id and ship_to_organization_id from po_line_locations */
6582 ln_ship_to_organization_id := null;
6583 ln_ship_to_location_id := null;
6584 open c_get_ship_to_org_loc (cur_items_rec.line_location_id);
6585 fetch c_get_ship_to_org_loc into ln_ship_to_organization_id
6586 ,ln_ship_to_location_id;
6587 close c_get_ship_to_org_loc;
6588
6589 if r_service_regime_tax_type.tax_type is not null then
6590 /* Service type of tax */
6591 v_dist_code_combination_id := jai_cmn_rgm_recording_pkg.get_account
6592 (
6593 p_regime_id => r_jai_regimes.regime_id,
6594 p_organization_type => jai_constants.orgn_type_io,
6595 p_organization_id => ln_ship_to_organization_id,
6596 p_location_id => ln_ship_to_location_id,
6597 p_tax_type => c_tax_rec.tax_type,
6598 p_account_name => GV_REVERSE_CHARGE
6599 );
6600 v_dist_ccid_liability := jai_cmn_rgm_recording_pkg.get_account
6601 (
6602 p_regime_id => r_jai_regimes.regime_id,
6603 p_organization_type => jai_constants.orgn_type_io,
6604 p_organization_id => ln_ship_to_organization_id,
6605 p_location_id => ln_ship_to_location_id,
6606 p_tax_type => c_tax_rec.tax_type,
6607 p_account_name => GV_INTERIM_LIABILITY
6608 );
6609
6610 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6611 ' Regime type , CCID ,v_dist_ccid_liability'
6612 || r_service_regime_tax_type.tax_type
6613 ||', ' || v_dist_code_combination_id || ', ' || v_dist_ccid_liability);
6614 end if;
6615
6616 else /*introduced for PROJETCS COSTING Impl */
6617
6618 ln_project_id := p_project_id;
6619 ln_task_id := p_task_id;
6620 lv_exp_type := p_expenditure_type;
6621 ld_exp_item_date := p_expenditure_item_date;
6622 ln_exp_organization_id := p_expenditure_organization_id;
6623 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
6624 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
6625
6626 --non recoverable
6627 lv_tax_type := 'NR';
6628 end if; /*nvl(c_tax_rec.mod_cr_percentage, 0) = 100 and c_tax_rec.tax_account_id is not null*/
6629
6630 if v_dist_code_combination_id is null then
6631 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
6632 end if;
6633 /* Service End */
6634
6635 ln_rec_tax_amt := null;
6636 ln_nrec_tax_amt := null;
6637 ln_lines_to_insert := 1; -- Loop controller to insert more than one lines for partially recoverable tax lines in PO
6638
6639 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6640 'i.modvat_flag ='||i.modvat_flag ||',c_tax_rec.mod_cr_percentage='||c_tax_rec.mod_cr_percentage);
6641
6642 if i.modvat_flag = jai_constants.YES
6643 and nvl(c_tax_rec.mod_cr_percentage, -1) > 0
6644 and nvl(c_tax_rec.mod_cr_percentage, -1) < 100
6645 then
6646 --
6647 -- Tax line is for partial Recoverable tax. Hence split amount into two parts, Recoverable and Non-Recoverable
6648 -- and instead of one line, two lines needs to be inserted.
6649 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100) there will be only one line inserted
6650 ln_lines_to_insert := 2 *ln_lines_to_insert;
6651 ln_rec_tax_amt := round ( nvl(v_tax_amount,0) * (c_tax_rec.mod_cr_percentage/100) , c_tax_rec.rounding_factor) ;
6652 ln_nrec_tax_amt := round ( nvl(v_tax_amount,0) - nvl(ln_rec_tax_amt,0) , c_tax_rec.rounding_factor) ;
6653
6654 lv_tax_type := 'PR';
6655 end if;
6656
6657 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6658 'ln_lines_to_insert='||ln_lines_to_insert||
6659 ',ln_rec_tax_amt='||ln_rec_tax_amt ||
6660 ',ln_nrec_tax_amt='||ln_nrec_tax_amt
6661 );
6662
6663 --
6664 -- If a line has a partially recoverable tax the following loop will be executed twice. First line will always be for a
6665 -- non recoverable tax amount and the second line will be for a recoverable tax amount
6666 -- For ordinary lines (with modvat_flag = 'N' or with mod_cr_percentage = 100 fully recoverable) the variable
6667 -- ln_lines_to_insert will have value of 1 and hence only one line will be inserted with full tax amount
6668 for line in 1..ln_lines_to_insert
6669 loop
6670 IF (NVL(i.inc_tax_flag,'N') = 'N')--exclusive case
6671 THEN
6672 IF line = 1 then
6673
6674 v_tax_amount := nvl(ln_rec_tax_amt, v_tax_amount);
6675 lv_tax_line_amount:= v_tax_amount ;
6676 lv_modvat_flag := i.modvat_flag ;
6677
6678 ELSIF line = 2 then
6679
6680 v_tax_amount := ln_nrec_tax_amt;
6681 lv_tax_line_amount := v_tax_amount ;
6682
6683 IF for_dist_insertion_rec.assets_tracking_flag = jai_constants.YES THEN
6684 v_assets_tracking_flag := jai_constants.YES;
6685 END IF;
6686
6687 lv_modvat_flag := jai_constants.NO ;
6688
6689 --
6690 -- This is a non recoverable line hence the tax amounts should be added into the project costs by populating
6691 -- projects related columns so that PROJECTS can consider this line for Project Costing
6692 --
6693 IF nvl(lv_accrue_on_receipt_flag,'#') <> 'Y' THEN
6694 ln_project_id := p_project_id;
6695 ln_task_id := p_task_id;
6696 lv_exp_type := p_expenditure_type;
6697 ld_exp_item_date := p_expenditure_item_date;
6698 ln_exp_organization_id := p_expenditure_organization_id;
6699 lv_project_accounting_context := for_dist_insertion_rec.project_accounting_context;
6700 lv_pa_addition_flag := for_dist_insertion_rec.pa_addition_flag;
6701 END if;
6702
6703 -- For non recoverable line charge account should be same as of the parent line
6704 v_dist_code_combination_id := for_dist_insertion_rec.dist_code_combination_id;
6705
6706 END IF; --line = 1
6707 ELSE --inclusive
6708 --CONTINUE;
6709 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_ERROR, GV_MODULE_PREFIX || '.' || l_api_name,
6710 'For reverse charge service, should only be exclusive tax. Tax ID: ' || i.tax_id);
6711 END IF; --(NVL(r_tax_lines_r ec.inc_tax_flag,'N') = 'N')
6712
6713 --insert exclusive tax to the ap tables
6714 --or insert recoverable inclusive tax with project information the ap tables
6715 --1.Only exlusive taxes or inclusive recoverable taxes with project information
6716 -- are inserted into Ap Lines and Dist Lines
6717 --2.All taxes need to be inserted into jai tax tables. Futher the
6718 -- partially recoverable tax need to be splitted into 2 lines
6719 ln_inv_line_num := ln_inv_line_num + 1;
6720 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into ap_invoice_lines_all for line no :'|| ln_inv_line_num );
6721
6722 ap_invoice_lines_all_rec := NULL;
6723 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
6724 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
6725 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := GV_CONSTANT_MISCELLANEOUS;
6726 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
6727 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
6728 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
6729 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_code_combination_id;
6730 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
6731 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
6732 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
6733 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
6734 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
6735 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
6736 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
6737 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
6738 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(v_tax_amount,ln_tax_precision),ln_precision);
6739 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
6740 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
6741 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
6742 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
6743 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
6744 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
6745 ap_invoice_lines_all_rec.project_id := ln_project_id;
6746 ap_invoice_lines_all_rec.task_id := ln_task_id;
6747 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
6748 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
6749 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
6750 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
6751 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
6752 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
6753 ap_invoice_lines_all_rec.reference_key1 := i.tax_id;
6754 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
6755 Insert_ap_inv_line( ap_invoice_lines_all_rec);
6756
6757 open c_get_invoice_distribution;
6758 fetch c_get_invoice_distribution into v_invoice_distribution_id;
6759 close c_get_invoice_distribution;
6760 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'Before inserting into ap_invoice_distributions_all for Invoice distribution id:'|| v_invoice_distribution_id );
6761
6762 ap_invoice_dist_all_rec := NULL;
6763 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
6764 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
6765 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
6766 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
6767 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
6768 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
6769 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_code_combination_id;
6770 ap_invoice_dist_all_rec.invoice_id := inv_id;
6771 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
6772 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
6773 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
6774 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
6775 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id;
6776 ap_invoice_dist_all_rec.amount := round(round(v_tax_amount,ln_tax_precision),ln_precision);
6777 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(v_tax_amount * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision);
6778 ap_invoice_dist_all_rec.batch_id := v_batch_id;
6779 ap_invoice_dist_all_rec.created_by := ln_user_id;
6780 ap_invoice_dist_all_rec.creation_date := SYSDATE;
6781 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
6782 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
6783 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag ;
6784 ap_invoice_dist_all_rec.posted_flag := 'N';
6785 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
6786 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
6787 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
6788 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
6789 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
6790 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
6791 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
6792 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0);
6793 IF (v_assets_tracking_flag = 'Y')
6794 THEN
6795 ap_invoice_dist_all_rec.quantity_invoiced := NULL;
6796 ELSE
6797 ap_invoice_dist_all_rec.quantity_invoiced := 0;
6798 END IF;
6799 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
6800 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
6801 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
6802 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
6803 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
6804 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id);
6805 IF (v_assets_tracking_flag = 'N')
6806 THEN
6807 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := NULL;
6808 ELSE
6809 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
6810 END IF;
6811 ap_invoice_dist_all_rec.project_id := ln_project_id;
6812 ap_invoice_dist_all_rec.task_id := ln_task_id;
6813 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
6814 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
6815 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
6816 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
6817 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
6818 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
6819 --ap_invoice_dist_all_rec.asset_book_type_code := decode(v_assets_tracking_flag,'Y',for_dist_insertion_rec.asset_book_type_code,NULL);
6820 IF (v_assets_tracking_flag = 'Y')
6821 THEN
6822 ap_invoice_dist_all_rec.asset_book_type_code := for_dist_insertion_rec.asset_book_type_code;
6823 ELSE
6824 ap_invoice_dist_all_rec.asset_book_type_code := NULL;
6825 END IF;
6826 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
6827
6828
6829 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6830 'Before inserting into JAI_AP_MATCH_INV_TAXES tax id ' || i.tax_id );
6831 INSERT INTO JAI_AP_MATCH_INV_TAXES
6832 (
6833 tax_distribution_id,
6834 exchange_rate_variance,
6835 assets_tracking_flag,
6836 invoice_id,
6837 po_header_id,
6838 po_line_id,
6839 line_location_id,
6840 set_of_books_id,
6841 exchange_rate,
6842 exchange_rate_type,
6843 exchange_date,
6844 currency_code,
6845 code_combination_id,
6846 last_update_login,
6847 creation_date,
6848 created_by,
6849 last_update_date,
6850 last_updated_by,
6851 acct_pay_code_combination_id,
6852 accounting_date,
6853 tax_id,
6854 tax_amount,
6855 base_amount,
6856 chart_of_accounts_id,
6857 distribution_line_number,
6858 po_distribution_id,
6859 parent_invoice_distribution_id,
6860 legal_entity_id
6861 ,INVOICE_LINE_NUMBER
6862 ,INVOICE_DISTRIBUTION_ID
6863 ,PARENT_INVOICE_LINE_NUMBER
6864 ,RCV_TRANSACTION_ID
6865 ,LINE_TYPE_LOOKUP_CODE
6866 ,recoverable_flag
6867 ,line_no
6868 )
6869 VALUES
6870 (
6871 JAI_AP_MATCH_INV_TAXES_S.NEXTVAL,
6872 null,
6873 v_assets_tracking_flag ,
6874 inv_id,
6875 cur_items_rec.po_header_id,
6876 cur_items_rec.po_line_id,
6877 cur_items_rec.line_location_id,
6878 cur_items_rec.set_of_books_id,
6879 cur_items_rec.rate,
6880 cur_items_rec.rate_type,
6881 cur_items_rec.rate_date,
6882 cur_items_rec.currency_code,
6883 v_dist_code_combination_id,
6884 cur_items_rec.last_update_login,
6885 cur_items_rec.creation_date,
6886 cur_items_rec.created_by,
6887 cur_items_rec.last_update_date,
6888 cur_items_rec.last_updated_by,
6889 v_dist_code_combination_id,
6890 cur_items_rec.invoice_date,
6891 i.tax_id,
6892 ROUND(ROUND(lv_tax_line_amount,ln_tax_precision),ln_precision),
6893 ROUND(ROUND(i.tax_amount, ln_tax_precision),ln_precision),
6894 caid,
6895 v_distribution_no,
6896 po_dist_id,
6897 for_dist_insertion_rec.invoice_distribution_id,
6898 get_ven_info_rec.legal_entity_id
6899 , DECODE ( NVL(i.inc_tax_flag,'N')
6900 , 'N',ln_inv_line_num
6901 , 'Y',pn_invoice_line_number
6902 )
6903 ,NVL(v_invoice_distribution_id,for_dist_insertion_rec.invoice_distribution_id)
6904 , pn_invoice_line_number
6905 , rcv_tran_id
6906 , GV_CONSTANT_MISCELLANEOUS
6907 , lv_modvat_flag
6908 , i.tax_line_no
6909 );
6910 END LOOP; --> for line in
6911 ln_inv_line_num := ln_inv_line_num + 1;
6912 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,'@@Before inserting liability lines into ap_invoice_lines_all for line no :'|| ln_inv_line_num ||' tax amount = '||lv_tax_line_amount);
6913
6914 ap_invoice_lines_all_rec := NULL;
6915 ap_invoice_lines_all_rec.INVOICE_ID := inv_id;
6916 ap_invoice_lines_all_rec.LINE_NUMBER := ln_inv_line_num;
6917 ap_invoice_lines_all_rec.LINE_TYPE_LOOKUP_CODE := GV_CONSTANT_MISCELLANEOUS;
6918 ap_invoice_lines_all_rec.DESCRIPTION := c_tax_rec.tax_name;
6919 ap_invoice_lines_all_rec.ORG_ID := v_org_id;
6920 ap_invoice_lines_all_rec.MATCH_TYPE := lv_match_type;
6921 ap_invoice_lines_all_rec.DEFAULT_DIST_CCID := v_dist_ccid_liability;
6922 ap_invoice_lines_all_rec.ACCOUNTING_DATE := rec_max_ap_lines_all.accounting_date;
6923 ap_invoice_lines_all_rec.PERIOD_NAME := rec_max_ap_lines_all.period_name;
6924 ap_invoice_lines_all_rec.DEFERRED_ACCTG_FLAG := rec_max_ap_lines_all.deferred_acctg_flag;
6925 ap_invoice_lines_all_rec.DEF_ACCTG_START_DATE := rec_max_ap_lines_all.def_acctg_start_date;
6926 ap_invoice_lines_all_rec.DEF_ACCTG_END_DATE := rec_max_ap_lines_all.def_acctg_end_date;
6927 ap_invoice_lines_all_rec.DEF_ACCTG_NUMBER_OF_PERIODS := rec_max_ap_lines_all.def_acctg_number_of_periods;
6928 ap_invoice_lines_all_rec.DEF_ACCTG_PERIOD_TYPE := rec_max_ap_lines_all.def_acctg_period_type;
6929 ap_invoice_lines_all_rec.SET_OF_BOOKS_ID := rec_max_ap_lines_all.set_of_books_id;
6930 ap_invoice_lines_all_rec.AMOUNT := ROUND(ROUND(-v_tax_amount_liability, ln_tax_precision),ln_precision);
6931 ap_invoice_lines_all_rec.WFAPPROVAL_STATUS := rec_max_ap_lines_all.wfapproval_status;
6932 ap_invoice_lines_all_rec.CREATION_DATE := sysdate;
6933 ap_invoice_lines_all_rec.CREATED_BY := ln_user_id;
6934 ap_invoice_lines_all_rec.LAST_UPDATED_BY := ln_user_id;
6935 ap_invoice_lines_all_rec.LAST_UPDATE_DATE := sysdate;
6936 ap_invoice_lines_all_rec.LAST_UPDATE_LOGIN := ln_login_id;
6937 ap_invoice_lines_all_rec.project_id := ln_project_id;
6938 ap_invoice_lines_all_rec.task_id := ln_task_id;
6939 ap_invoice_lines_all_rec.expenditure_type := lv_exp_type;
6940 ap_invoice_lines_all_rec.expenditure_item_date := ld_exp_item_date;
6941 ap_invoice_lines_all_rec.expenditure_organization_id := ln_exp_organization_id;
6942 ap_invoice_lines_all_rec.po_distribution_id := po_dist_id;
6943 ap_invoice_lines_all_rec.application_id := G_JAI_APPLICATION_ID;
6944 ap_invoice_lines_all_rec.product_table := G_MATCH_PRODUCT_TABLE;
6945 ap_invoice_lines_all_rec.reference_key1 := i.tax_id;
6946 ap_invoice_lines_all_rec.reference_key2 := pn_invoice_line_number;
6947 Insert_ap_inv_line( ap_invoice_lines_all_rec);
6948
6949
6950 open c_get_invoice_distribution;
6951 fetch c_get_invoice_distribution into v_invoice_distribution_id;
6952 close c_get_invoice_distribution;
6953 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
6954 '@Before inserting liability line into ap_invoice_distributions_all for distribution no :' || v_invoice_distribution_id);
6955
6956 ap_invoice_dist_all_rec := NULL;
6957 ap_invoice_dist_all_rec.accounting_date := rec_max_ap_lines_all.accounting_date;
6958 ap_invoice_dist_all_rec.accrual_posted_flag := 'N';
6959 ap_invoice_dist_all_rec.assets_addition_flag := for_dist_insertion_rec.assets_addition_flag;
6960 ap_invoice_dist_all_rec.assets_tracking_flag := v_assets_tracking_flag;
6961 ap_invoice_dist_all_rec.cash_posted_flag := 'N';
6962 ap_invoice_dist_all_rec.distribution_line_number := v_distribution_no;
6963 ap_invoice_dist_all_rec.dist_code_combination_id := v_dist_ccid_liability;
6964 ap_invoice_dist_all_rec.invoice_id := inv_id;
6965 ap_invoice_dist_all_rec.last_updated_by := ln_user_id;
6966 ap_invoice_dist_all_rec.last_update_date := SYSDATE;
6967 ap_invoice_dist_all_rec.line_type_lookup_code := GV_CONSTANT_MISCELLANEOUS;
6968 ap_invoice_dist_all_rec.period_name := rec_max_ap_lines_all.period_name;
6969 ap_invoice_dist_all_rec.set_of_books_id := rec_max_ap_lines_all.set_of_books_id;
6970 ap_invoice_dist_all_rec.amount := round(round(-v_tax_amount_liability,ln_tax_precision),ln_precision);
6971 ap_invoice_dist_all_rec.base_amount := ROUND(ROUND(-v_tax_amount_liability * for_dist_insertion_rec.exchange_rate,ln_tax_precision), ln_precision);
6972 ap_invoice_dist_all_rec.batch_id := v_batch_id;
6973 ap_invoice_dist_all_rec.created_by := ln_user_id;
6974 ap_invoice_dist_all_rec.creation_date := SYSDATE;
6975 ap_invoice_dist_all_rec.description := c_tax_rec.tax_name;
6976 ap_invoice_dist_all_rec.last_update_login := ln_login_id;
6977 ap_invoice_dist_all_rec.match_status_flag := for_dist_insertion_rec.match_status_flag ;
6978 ap_invoice_dist_all_rec.posted_flag := 'N';
6979 ap_invoice_dist_all_rec.rate_var_code_combination_id := NULL;
6980 ap_invoice_dist_all_rec.reversal_flag := for_dist_insertion_rec.reversal_flag;
6981 ap_invoice_dist_all_rec.program_application_id := for_dist_insertion_rec.program_application_id;
6982 ap_invoice_dist_all_rec.program_id := for_dist_insertion_rec.program_id;
6983 ap_invoice_dist_all_rec.program_update_date := for_dist_insertion_rec.program_update_date;
6984 ap_invoice_dist_all_rec.accts_pay_code_combination_id := for_dist_insertion_rec.accts_pay_code_combination_id;
6985 ap_invoice_dist_all_rec.invoice_distribution_id := v_invoice_distribution_id;
6986 --ap_invoice_dist_all_rec.quantity_invoiced := decode(v_assets_tracking_flag, 'Y', NULL, 0);
6987 IF (v_assets_tracking_flag = 'Y')
6988 THEN
6989 ap_invoice_dist_all_rec.quantity_invoiced := NULL;
6990 ELSE
6991 ap_invoice_dist_all_rec.quantity_invoiced := 0;
6992 END IF;
6993 ap_invoice_dist_all_rec.org_id := for_dist_insertion_rec.org_id;
6994 ap_invoice_dist_all_rec.po_distribution_id := for_dist_insertion_rec.po_distribution_id;
6995 ap_invoice_dist_all_rec.rcv_transaction_id := rcv_tran_id;
6996 ap_invoice_dist_all_rec.matched_uom_lookup_code := for_dist_insertion_rec.matched_uom_lookup_code;
6997 ap_invoice_dist_all_rec.invoice_line_number := ln_inv_line_num;
6998 --ap_invoice_dist_all_rec.charge_applicable_to_dist_id := decode(v_assets_tracking_flag,'N',NULL,for_dist_insertion_rec.invoice_distribution_id);
6999 IF (v_assets_tracking_flag = 'N')
7000 THEN
7001 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := NULL;
7002 ELSE
7003 ap_invoice_dist_all_rec.charge_applicable_to_dist_id := for_dist_insertion_rec.invoice_distribution_id;
7004 END IF;
7005 ap_invoice_dist_all_rec.project_id := ln_project_id;
7006 ap_invoice_dist_all_rec.task_id := ln_task_id;
7007 ap_invoice_dist_all_rec.expenditure_type := lv_exp_type;
7008 ap_invoice_dist_all_rec.expenditure_item_date := ld_exp_item_date;
7009 ap_invoice_dist_all_rec.expenditure_organization_id := ln_exp_organization_id;
7010 ap_invoice_dist_all_rec.project_accounting_context := lv_project_accounting_context;
7011 ap_invoice_dist_all_rec.pa_addition_flag := lv_pa_addition_flag;
7012 ap_invoice_dist_all_rec.distribution_class := lv_dist_class;
7013 --ap_invoice_dist_all_rec.asset_book_type_code := decode(v_assets_tracking_flag,'Y',for_dist_insertion_rec.asset_book_type_code,NULL);
7014 IF (v_assets_tracking_flag = 'Y')
7015 THEN
7016 ap_invoice_dist_all_rec.asset_book_type_code := for_dist_insertion_rec.asset_book_type_code;
7017 ELSE
7018 ap_invoice_dist_all_rec.asset_book_type_code := NULL;
7019 END IF;
7020 Insert_ap_inv_dst_line(ap_invoice_dist_all_rec);
7021
7022
7023 --calc invoice amount
7024 IF NVL(i.inc_tax_flag,'N') ='N'
7025 THEN
7026 cum_tax_amt := cum_tax_amt + round(v_tax_amount_liability, ln_precision);
7027 END IF;
7028
7029 END LOOP;
7030
7031 /*
7032 -- check to avoid amount updation in the invoice header when any of the dist lines are reversed
7033 v_dist_reversal_cnt := 0; -- Added by avallabh for bug 4926094 on 03-Feb-2006
7034 OPEN c_dist_reversal_cnt(inv_id);
7035 FETCH c_dist_reversal_cnt INTO v_dist_reversal_cnt;
7036 CLOSE c_dist_reversal_cnt;
7037
7038 if v_dist_reversal_cnt = 0 then
7039 v_statement_no := '66';
7040
7041 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name,
7042 'update_payment_schedule(cum_tax_amt): amount add' || cum_tax_amt);
7043
7044 v_update_payment_schedule:=update_payment_schedule(cum_tax_amt);
7045
7046 UPDATE ap_invoices_all
7047 SET invoice_amount = invoice_amount + cum_tax_amt,
7048 approved_amount = approved_amount + cum_tax_amt,
7049 pay_curr_invoice_amount = pay_curr_invoice_amount + cum_tax_amt,
7050 amount_applicable_to_discount = amount_applicable_to_discount + cum_tax_amt,
7051 payment_status_flag = decode(payment_status_flag, 'Y', 'P', payment_status_flag)
7052 WHERE invoice_id = inv_id;
7053
7054 if for_org_id_rec.invoice_currency_code <> v_functional_currency then
7055 -- invoice currency is not the functional currency.
7056 update ap_invoices_all
7057 set base_amount = invoice_amount * exchange_rate
7058 where invoice_id = inv_id;
7059 end if;
7060 end if; -- v_dist_reversal_cnt = 0
7061 */
7062
7063 ELSE
7064
7065 err_mesg :=
7066 'This procedure should be called for RCV_MATCHING only, the input parameter is : '
7067 || p_rematch;
7068 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name,
7069 'This procedure should be called for RCV_MATCHING only, the input parameter is : ' || p_rematch);
7070 RETURN;
7071
7072 END IF; -- if rcv_tran_id is not null
7073
7074 END IF; -- 'PAY_ON_RECEIPT'
7075
7076 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_PROCEDURE, GV_MODULE_PREFIX || '.' || l_api_name ||'.END', G_PKG_NAME || ': '|| l_api_name || '()-');
7077 EXCEPTION
7078 WHEN OTHERS THEN
7079 err_mesg := SQLERRM;
7080 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'SQLERRM -> '|| SQLERRM ||', SQLCODE -> '||SQLCODE);
7081 jai_cmn_utils_pkg.WRITE_FND_LOG(G_LEVEL_STATEMENT, GV_MODULE_PREFIX || '.' || l_api_name, 'Statement -> '|| v_statement_no);
7082 RETURN;
7083 END process_batch_record;
7084
7085 END JAI_AP_ST_REVERSE_PROCESS;