DBA Data[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;