DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_VERTEX_TAX_SERVICE_PKG

Source


1 PACKAGE BODY ZX_VERTEX_TAX_SERVICE_PKG as
2 /*$Header: zxvtxsrvcpkgb.pls 120.91.12020000.4 2012/10/26 09:22:45 ssanka noship $*/
3 
4 /* ======================================================================*
5  | FND Logging infrastructure                                           |
6  * ======================================================================*/
7 G_PKG_NAME               CONSTANT VARCHAR2(30) := 'ZX_VERTEX_TAX_SERVICE_PKG';
8 G_CURRENT_RUNTIME_LEVEL  CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
9 G_LEVEL_UNEXPECTED       CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
10 G_LEVEL_ERROR            CONSTANT NUMBER       := FND_LOG.LEVEL_ERROR;
11 G_LEVEL_EXCEPTION        CONSTANT NUMBER       := FND_LOG.LEVEL_EXCEPTION;
12 G_LEVEL_EVENT            CONSTANT NUMBER       := FND_LOG.LEVEL_EVENT;
13 G_LEVEL_PROCEDURE        CONSTANT NUMBER       := FND_LOG.LEVEL_PROCEDURE;
14 G_LEVEL_STATEMENT        CONSTANT NUMBER       := FND_LOG.LEVEL_STATEMENT;
15 G_MODULE_NAME            CONSTANT VARCHAR2(80) := 'ZX.PLSQL.ZX_VERTEX_TAX_SERVICE_PKG.';
16 
17 /* ======================================================================*
18  | Global Structure Data Types                                           |
19  * ======================================================================*/
20 
21 TYPE NUMBER_tbl_type       IS TABLE OF NUMBER         INDEX BY BINARY_INTEGER;
22 TYPE VARCHAR2_1_tbl_type   IS TABLE OF VARCHAR2(1)    INDEX BY BINARY_INTEGER;
23 TYPE VARCHAR2_2_tbl_type   IS TABLE OF VARCHAR2(2)    INDEX BY BINARY_INTEGER;
24 TYPE VARCHAR2_15_tbl_type  IS TABLE OF VARCHAR2(15)   INDEX BY BINARY_INTEGER;
25 TYPE VARCHAR2_30_tbl_type  IS TABLE OF VARCHAR2(30)   INDEX BY BINARY_INTEGER;
26 TYPE VARCHAR2_80_tbl_type  IS TABLE OF VARCHAR2(80)   INDEX BY BINARY_INTEGER;
27 TYPE VARCHAR2_50_tbl_type  IS TABLE OF VARCHAR2(50)   INDEX BY BINARY_INTEGER;
28 TYPE VARCHAR2_240_tbl_type IS TABLE OF VARCHAR2(240)  INDEX BY BINARY_INTEGER;
29 TYPE DATE_tbl_type         IS TABLE OF DATE           INDEX BY BINARY_INTEGER;
30 
31 TYPE SYNC_TAX_LINES_TBL IS RECORD(
32   document_type_id           NUMBER_tbl_type,
33   transaction_id             NUMBER_tbl_type,
34   transaction_line_id        NUMBER_tbl_type,
35   trx_level_type             VARCHAR2_30_tbl_type,
36   country_code               VARCHAR2_30_tbl_type,
37   tax                        VARCHAR2_30_tbl_type,
38   situs                      VARCHAR2_30_tbl_type,
39   tax_jurisdiction           VARCHAR2_30_tbl_type,
40   tax_currency_code          VARCHAR2_15_tbl_type,
41   tax_curr_tax_amount        NUMBER_tbl_type,
42   tax_amount                 NUMBER_tbl_type,
43   tax_rate_percentage        NUMBER_tbl_type,
44   taxable_amount             NUMBER_tbl_type,
45   exempt_rate_modifier       NUMBER_tbl_type,
46   exempt_reason              VARCHAR2_240_tbl_type,
47   tax_only_line_flag         VARCHAR2_1_tbl_type,
48   inclusive_tax_line_flag    VARCHAR2_1_tbl_type,
49   use_tax_flag               VARCHAR2_1_tbl_type,
50   ebiz_override_flag         VARCHAR2_1_tbl_type,
51   user_override_flag         VARCHAR2_1_tbl_type,
52   last_manual_entry          VARCHAR2_30_tbl_type,
53   manually_entered_flag      VARCHAR2_1_tbl_type,
54   cancel_flag                VARCHAR2_1_tbl_type,
55   delete_flag                VARCHAR2_1_tbl_type
56 );
57 
58 
59 /*------------------------------------------------
60 |         Global Variables                        |
61  ------------------------------------------------*/
62   C_LINES_PER_COMMIT CONSTANT NUMBER := 1000;
63   I Number;
64   l_line_level_action varchar2(20);
65   l_document_type zx_lines_det_factors.event_class_code%type;
66   l_trx_line_context_changed      BOOLEAN;
67   l_state_tax_cnt        NUMBER;
68   l_county_tax_cnt       NUMBER;
69   l_city_tax_cnt         NUMBER;
70 -- PG_DEBUG varchar2(1);
71 -- x_return_status varchar2(2);
72   g_StTaxAmt     NUMBER;
73   g_CoTaxAmt     NUMBER;
74   g_CiTaxAmt     NUMBER;
75   g_TotalTaxAmt  NUMBER;
76   cache_index    NUMBER:=0;
77   g_string       VARCHAR2(200);
78 
79   g_docment_type_id  NUMBER;
80   g_trasaction_id  NUMBER;
81   g_tax_regime_code  varchar2(80);
82   g_transaction_line_id  NUMBER;
83   g_trx_level_type       varchar2(20);
84 
85   TYPE cache_record_type is record(
86     internal_organization_id  NUMBER,
87     document_type_id          NUMBER,
88     transaction_id            NUMBER,
89     transaction_line_id       NUMBER
90     );
91 
92   TYPE cache_tab is table of cache_record_type index by binary_integer;
93   cache_table cache_tab;
94 
95  /**** Type used in GET_GEOCODE ***/
96   TYPE tab_var_type IS TABLE OF VARCHAR2(60) INDEX BY BINARY_INTEGER;
97 
98   pg_state        tab_var_type; -- Ship-To State Name(Abbriv)
99   pg_county       tab_var_type; -- Ship-To County Name
100   pg_city         tab_var_type; -- Ship-To City Name
101   pg_postal_code  tab_var_type; -- Ship-To Postal_code
102   pg_geocode      tab_var_type; -- Jurisdiction code(GeoCode)
103   pg_max_index    BINARY_INTEGER := 0; -- Pointer to the no. of jurisdiction
104                    -- combination in the table
105 /*-----------------------------------------------
106  | Records for Tax Calculation Package     |
107  -----------------------------------------------*/
108   version_rec             ZX_TAX_VERTEX_QSU.tQSUVersionRecord;
109   context_rec             ZX_TAX_VERTEX_QSU.tQSUContextRecord;
110   inv_in_rec              ZX_TAX_VERTEX_QSU.tQSUInvoiceRecord;
111   line_in_tab             ZX_TAX_VERTEX_QSU.tQSULineItemTable;
112   inv_out_rec             ZX_TAX_VERTEX_QSU.tQSUInvoiceRecord;
113   line_out_tab            ZX_TAX_VERTEX_QSU.tQSULineItemTable;
114 
115 /* ======================================================================*
116  | Data Type Definitions                                                 |
117  * ======================================================================*/
118 
119   type char_tab is table of char           index by binary_integer;
120   type num_tab  is table of NUMBER(15)     index by binary_integer;
121   type num1_tab is table of NUMBER         index by binary_integer;
122   type date_tab is table of DATE           index by binary_integer;
123   type var1_tab is table of VARCHAR2(1)    index by binary_integer;
124   type var2_tab is table of VARCHAR2(80)   index by binary_integer;
125   type var3_tab is table of VARCHAR2(2000) index by binary_integer;
126   type var4_tab is table of VARCHAR2(150)  index by binary_integer;
127   type var5_tab is table of VARCHAR2(240)  index by binary_integer;
128   type var6_tab is table of VARCHAR2(300)  index by binary_integer;
129 
130  /*-----------------------------------------------
131  | Records for GeoCode Retrieval Package   |
132  -----------------------------------------------*/
133   search_rec              ZX_TAX_VERTEX_GEO.tGeoSearchRecord;
134   result_rec              ZX_TAX_VERTEX_GEO.tGeoResultsRecord;
135 
136   TYPE location_info_rec_type IS RECORD(
137    state         VARCHAR2(2),
138    county        VARCHAR2(30),
139    city          VARCHAR2(30),
140    postal_code   VARCHAR2(30)
141   );
142 
143   /*Private Procedures*/
144   PROCEDURE PERFORM_VALIDATE(x_return_status OUT NOCOPY VARCHAR2) ;
145 
146   PROCEDURE PERFORM_LINE_CREATION (
147     p_tax_lines_tbl    OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
148     p_currency_tab  IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
149     x_return_status    OUT NOCOPY VARCHAR2);
150 
151   PROCEDURE PERFORM_LINE_DELETION(x_return_status OUT NOCOPY VARCHAR2);
152 
153   PROCEDURE PERFORM_UPDATE (
154     p_tax_lines_tbl    OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
155     p_currency_tab  IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
156     x_return_status    OUT NOCOPY VARCHAR2);
157 
158   PROCEDURE SET_PARAMETERS       (x_return_status OUT NOCOPY VARCHAR2);
159 
160   PROCEDURE SET_DOCUMENT_TYPE (
161     p_document_type     IN OUT NOCOPY VARCHAR2,
162     p_adj_doc_trx_id    IN NUMBER,
163     p_line_amount       IN NUMBER,
164     p_line_level_action IN VARCHAR2,
165     x_return_status     OUT NOCOPY VARCHAR2);
166 
167   FUNCTION GET_GEOCODE(p_location_info_rec location_info_rec_type) return VARCHAR2;
168 
169   PROCEDURE CALCULATE_TAX(x_return_status OUT NOCOPY VARCHAR2);
170 
171   PROCEDURE WRITE_TO_VERTEX_REPOSITORY(x_return_status OUT NOCOPY VARCHAR2);
172 
173   PROCEDURE TAX_RESULTS_PROCESSING (
174     p_tax_lines_tbl    OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
175     p_currency_tab  IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
176     x_return_status    OUT NOCOPY VARCHAR2);
177 
178   PROCEDURE RESET_PARAMETERS(x_return_status OUT NOCOPY VARCHAR2);
179 
180   PROCEDURE INITIALIZE;
181 
182   PROCEDURE DISPLAY_OUTPUT(p_type IN VARCHAR2);
183 
184   PROCEDURE ERROR_EXCEPTION_HANDLE(str  VARCHAR2);
185 
186   /*Structure to hold the transaction information*/
187   pg_internal_org_id_tab         num1_tab;
188   pg_doc_type_id_tab             num1_tab;
189   pg_trx_id_tab                  num1_tab;
190   pg_appli_code_tab              var2_tab;
191   pg_doc_level_action_tab        var2_tab;
192   pg_trx_date_tab                date_tab;
193   pg_trx_curr_code_tab           var2_tab;
194   /* Bug 5090593:
195   pg_quote_flag_tab              var1_tab;
196   */
197   pg_legal_entity_num_tab        var2_tab;
198   pg_esta_name_tab               var3_tab;
199   pg_Trx_number_tab              var4_tab;
200   pg_Trx_desc_tab                var3_tab;
201   pg_doc_sequence_value_tab      var3_tab;
202   pg_Trx_due_date_tab            date_tab;
203   /* Bug 5090593:
204   pg_Trx_Sol_Ori_tab             var2_tab;
205   */
206   pg_Allow_Tax_Calc_tab          var1_tab;
207   pg_trx_line_id_tab             num1_tab;
208   pg_trx_level_type_tab          var2_tab;
209   pg_line_level_action_tab       var2_tab;
210   pg_line_class_tab              var2_tab;
211   pg_trx_shipping_date_tab       date_tab;
212   pg_trx_receipt_date_tab        date_tab;
213   pg_trx_line_type_tab           var2_tab;
214   pg_trx_line_date_tab           date_tab;
215   pg_trx_business_cat_tab        var3_tab;
216   pg_line_intended_use_tab       var3_tab;
217   pg_line_amt_incl_tax_flag_tab  var1_tab;
218   pg_line_amount_tab             num1_tab;
219   pg_other_incl_tax_amt_tab      num1_tab;
220   pg_trx_line_qty_tab            num1_tab;
221   pg_unit_price_tab              num1_tab;
222   pg_cash_discount_tab           num1_tab;
223   pg_volume_discount_tab         num1_tab;
224   pg_trading_discount_tab        num1_tab;
225   pg_trans_charge_tab            num1_tab;
226   pg_ins_charge_tab              num1_tab;
227   pg_other_charge_tab            num1_tab;
228   pg_prod_id_tab                 num1_tab;
229   pg_uom_code_tab                var2_tab;
230   pg_prod_type_tab               var3_tab;
231   pg_prod_code_tab               var6_tab;
232   pg_fob_point_tab               var2_tab;
233   pg_ship_to_pty_numr_tab        var2_tab;
234   pg_ship_to_pty_name_tab        var3_tab;
235   pg_ship_from_pty_num_tab       var2_tab;
236   pg_ship_from_pty_name_tab      var3_tab;
237   pg_ship_to_loc_id_tab          num1_tab;      -- Bug 5090593
238   pg_ship_to_grphy_type1_tab     var5_tab;
239   pg_ship_to_grphy_value1_tab    var5_tab;
240   pg_ship_to_grphy_type2_tab     var5_tab;
241   pg_ship_to_grphy_value2_tab    var5_tab;
242   pg_ship_to_grphy_type3_tab     var5_tab;
243   pg_ship_to_grphy_value3_tab    var5_tab;
244   pg_ship_to_grphy_type4_tab     var5_tab;
245   pg_ship_to_grphy_value4_tab    var5_tab;
246   pg_ship_to_grphy_type5_tab     var5_tab;
247   pg_ship_to_grphy_value5_tab    var5_tab;
248   pg_ship_to_grphy_type6_tab     var5_tab;
249   pg_ship_to_grphy_value6_tab    var5_tab;
250   pg_ship_to_grphy_type7_tab     var5_tab;
251   pg_ship_to_grphy_value7_tab    var5_tab;
252   pg_ship_to_grphy_type8_tab     var5_tab;
253   pg_ship_to_grphy_value8_tab    var5_tab;
254   pg_ship_to_grphy_type9_tab     var5_tab;
255   pg_ship_to_grphy_value9_tab    var5_tab;
256   pg_ship_to_grphy_type10_tab    var5_tab;
257   pg_ship_to_grphy_value10_tab   var5_tab;
258   pg_ship_fr_loc_id_tab          num1_tab;      -- Bug 5090593
259   pg_ship_fr_grphy_type1_tab     var5_tab;
260   pg_ship_fr_grphy_value1_tab    var5_tab;
261   pg_ship_fr_grphy_type2_tab     var5_tab;
262   pg_ship_fr_grphy_value2_tab    var5_tab;
263   pg_ship_fr_grphy_type3_tab     var5_tab;
264   pg_ship_fr_grphy_value3_tab    var5_tab;
265   pg_ship_fr_grphy_type4_tab     var5_tab;
266   pg_ship_fr_grphy_value4_tab    var5_tab;
267   pg_ship_fr_grphy_type5_tab     var5_tab;
268   pg_ship_fr_grphy_value5_tab    var5_tab;
269   pg_ship_fr_grphy_type6_tab     var5_tab;
270   pg_ship_fr_grphy_value6_tab    var5_tab;
271   pg_ship_fr_grphy_type7_tab     var5_tab;
272   pg_ship_fr_grphy_value7_tab    var5_tab;
273   pg_ship_fr_grphy_type8_tab     var5_tab;
274   pg_ship_fr_grphy_value8_tab    var5_tab;
275   pg_ship_fr_grphy_type9_tab     var5_tab;
276   pg_ship_fr_grphy_value9_tab    var5_tab;
277   pg_ship_fr_grphy_type10_tab    var5_tab;
278   pg_ship_fr_grphy_value10_tab   var5_tab;
279   pg_poa_loc_id_tab              num1_tab;      -- Bug 5090593
280   pg_poa_grphy_type1_tab         var5_tab;
281   pg_poa_grphy_value1_tab        var5_tab;
282   pg_poa_grphy_type2_tab         var5_tab;
283   pg_poa_grphy_value2_tab        var5_tab;
284   pg_poa_grphy_type3_tab         var5_tab;
285   pg_poa_grphy_value3_tab        var5_tab;
286   pg_poa_grphy_type4_tab         var5_tab;
287   pg_poa_grphy_value4_tab        var5_tab;
288   pg_poa_grphy_type5_tab         var5_tab;
289   pg_poa_grphy_value5_tab        var5_tab;
290   pg_poa_grphy_type6_tab         var5_tab;
291   pg_poa_grphy_value6_tab        var5_tab;
292   pg_poa_grphy_type7_tab         var5_tab;
293   pg_poa_grphy_value7_tab        var5_tab;
294   pg_poa_grphy_type8_tab         var5_tab;
295   pg_poa_grphy_value8_tab        var5_tab;
296   pg_poa_grphy_type9_tab         var5_tab;
297   pg_poa_grphy_value9_tab        var5_tab;
298   pg_poa_grphy_type10_tab        var5_tab;
299   pg_poa_grphy_value10_tab       var5_tab;
300   pg_poo_loc_id_tab              num1_tab;      -- Bug 5090593
301   pg_poo_grphy_type1_tab         var5_tab;
302   pg_poo_grphy_value1_tab        var5_tab;
303   pg_poo_grphy_type2_tab         var5_tab;
304   pg_poo_grphy_value2_tab        var5_tab;
305   pg_poo_grphy_type3_tab         var5_tab;
306   pg_poo_grphy_value3_tab        var5_tab;
307   pg_poo_grphy_type4_tab         var5_tab;
308   pg_poo_grphy_value4_tab        var5_tab;
309   pg_poo_grphy_type5_tab         var5_tab;
310   pg_poo_grphy_value5_tab        var5_tab;
311   pg_poo_grphy_type6_tab         var5_tab;
312   pg_poo_grphy_value6_tab        var5_tab;
313   pg_poo_grphy_type7_tab         var5_tab;
314   pg_poo_grphy_value7_tab        var5_tab;
315   pg_poo_grphy_type8_tab         var5_tab;
316   pg_poo_grphy_value8_tab        var5_tab;
317   pg_poo_grphy_type9_tab         var5_tab;
318   pg_poo_grphy_value9_tab        var5_tab;
319   pg_poo_grphy_type10_tab        var5_tab;
320   pg_poo_grphy_value10_tab       var5_tab;
321   pg_bill_to_pty_num_tab         var2_tab;
322   pg_bill_to_pty_name_tab        var3_tab;
323   pg_bill_from_pty_num_tab       var2_tab;
324   pg_bill_from_pty_name_tab      var3_tab;
325   pg_bill_to_loc_id_tab          num1_tab;      -- Bug 5090593
326   pg_bill_to_grphy_type1_tab     var5_tab;
327   pg_bill_to_grphy_value1_tab    var5_tab;
328   pg_bill_to_grphy_type2_tab     var5_tab;
329   pg_bill_to_grphy_value2_tab    var5_tab;
330   pg_bill_to_grphy_type3_tab     var5_tab;
331   pg_bill_to_grphy_value3_tab    var5_tab;
332   pg_bill_to_grphy_type4_tab     var5_tab;
333   pg_bill_to_grphy_value4_tab    var5_tab;
334   pg_bill_to_grphy_type5_tab     var5_tab;
335   pg_bill_to_grphy_value5_tab    var5_tab;
336   pg_bill_to_grphy_type6_tab     var5_tab;
337   pg_bill_to_grphy_value6_tab    var5_tab;
338   pg_bill_to_grphy_type7_tab     var5_tab;
339   pg_bill_to_grphy_value7_tab    var5_tab;
340   pg_bill_to_grphy_type8_tab     var5_tab;
341   pg_bill_to_grphy_value8_tab    var5_tab;
342   pg_bill_to_grphy_type9_tab     var5_tab;
343   pg_bill_to_grphy_value9_tab    var5_tab;
344   pg_bill_to_grphy_type10_tab    var5_tab;
345   pg_bill_to_grphy_value10_tab   var5_tab;
346   pg_bill_fr_loc_id_tab          num1_tab;      -- Bug 5090593
347   pg_bill_fr_grphy_type1_tab     var5_tab;
348   pg_bill_fr_grphy_value1_tab    var5_tab;
349   pg_bill_fr_grphy_type2_tab     var5_tab;
350   pg_bill_fr_grphy_value2_tab    var5_tab;
351   pg_bill_fr_grphy_type3_tab     var5_tab;
352   pg_bill_fr_grphy_value3_tab    var5_tab;
353   pg_bill_fr_grphy_type4_tab     var5_tab;
354   pg_bill_fr_grphy_value4_tab    var5_tab;
355   pg_bill_fr_grphy_type5_tab     var5_tab;
356   pg_bill_fr_grphy_value5_tab    var5_tab;
357   pg_bill_fr_grphy_type6_tab     var5_tab;
358   pg_bill_fr_grphy_value6_tab    var5_tab;
359   pg_bill_fr_grphy_type7_tab     var5_tab;
360   pg_bill_fr_grphy_value7_tab    var5_tab;
361   pg_bill_fr_grphy_type8_tab     var5_tab;
362   pg_bill_fr_grphy_value8_tab    var5_tab;
363   pg_bill_fr_grphy_type9_tab     var5_tab;
364   pg_bill_fr_grphy_value9_tab    var5_tab;
365   pg_bill_fr_grphy_type10_tab    var5_tab;
366   pg_bill_fr_grphy_value10_tab   var5_tab;
367   pg_account_ccid_tab            num1_tab;
368   pg_appl_fr_doc_type_id_tab     num1_tab;
369   pg_appl_from_trx_id_tab        num1_tab;
370   pg_appl_from_line_id_tab       num1_tab;
371   pg_appl_fr_trx_lev_type_tab    var2_tab;
372   pg_appl_from_doc_num_tab       var2_tab;
373   pg_adj_doc_doc_type_id_tab     num1_tab;
374   pg_adj_doc_trx_id_tab          num1_tab;
375   pg_adj_doc_line_id_tab         num1_tab;
376   pg_adj_doc_number_tab          var2_tab;
377   pg_ADJ_doc_trx_lev_type_tab    var2_tab;
378   pg_adj_doc_date_tab            date_tab;
379   pg_assess_value_tab            num1_tab;
380   pg_trx_line_number_tab         num1_tab;
381   pg_trx_line_desc_tab           var3_tab;
382   pg_prod_desc_tab               var3_tab;
383   pg_header_char1_tab            var4_tab;
384   pg_header_char2_tab            var4_tab;
385   pg_header_char3_tab            var4_tab;
386   pg_header_char4_tab            var4_tab;
387   pg_header_char5_tab            var4_tab;
388   pg_header_char6_tab            var4_tab;
389   pg_header_char7_tab            var4_tab;
390   pg_header_char8_tab            var4_tab;
391   pg_header_char9_tab            var4_tab;
392   pg_header_char10_tab           var4_tab;
393   pg_header_char11_tab           var4_tab;
394   pg_header_char12_tab           var4_tab;
395   pg_header_char13_tab           var4_tab;
396   pg_header_char14_tab           var4_tab;
397   pg_header_char15_tab           var4_tab;
398   pg_header_numeric1_tab         num1_tab;
399   pg_header_numeric2_tab         num1_tab;
400   pg_header_numeric3_tab         num1_tab;
401   pg_header_numeric4_tab         num1_tab;
402   pg_header_numeric5_tab         num1_tab;
403   pg_header_numeric6_tab         num1_tab;
404   pg_header_numeric7_tab         num1_tab;
405   pg_header_numeric8_tab         num1_tab;
406   pg_header_numeric9_tab         num1_tab;
407   pg_header_numeric10_tab        num1_tab;
408   pg_header_date1_tab            date_tab;
409   pg_header_date2_tab            date_tab;
410   pg_header_date3_tab            date_tab;
411   pg_header_date4_tab            date_tab;
412   pg_header_date5_tab            date_tab;
413   pg_line_char1_tab              var4_tab;
414   pg_line_char2_tab              var4_tab;
415   pg_line_char3_tab              var4_tab;
416   pg_line_char4_tab              var4_tab;
417   pg_line_char5_tab              var4_tab;
418   pg_line_char6_tab              var4_tab;
419   pg_line_char7_tab              var4_tab;
420   pg_line_char8_tab              var4_tab;
421   pg_line_char9_tab              var4_tab;
422   pg_line_char10_tab             var4_tab;
423   pg_line_char11_tab             var4_tab;
424   pg_line_char12_tab             var4_tab;
425   pg_line_char13_tab             var4_tab;
426   pg_line_char14_tab             var4_tab;
427   pg_line_char15_tab             var4_tab;
428   pg_line_numeric1_tab           num1_tab;
429   pg_line_numeric2_tab           num1_tab;
430   pg_line_numeric3_tab           num1_tab;
431   pg_line_numeric4_tab           num1_tab;
432   pg_line_numeric5_tab           num1_tab;
433   pg_line_numeric6_tab           num1_tab;
434   pg_line_numeric7_tab           num1_tab;
435   pg_line_numeric8_tab           num1_tab;
436   pg_line_numeric9_tab           num1_tab;
437   pg_line_numeric10_tab          num1_tab;
438   pg_line_date1_tab              date_tab;
439   pg_line_date2_tab              date_tab;
440   pg_line_date3_tab              date_tab;
441   pg_line_date4_tab              date_tab;
442   pg_line_date5_tab              date_tab;
443   pg_exempt_certi_numb_tab       var2_tab;
444   pg_exempt_reason_tab           var3_tab;
445   pg_exempt_cont_flag_tab        var2_tab;
446   pg_ugraded_inv_flag_tab        var1_tab;
447 
448 PROCEDURE CALCULATE_TAX_API (
449   p_currency_tab     IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
450   x_tax_lines_tbl       OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
451   x_error_status        OUT NOCOPY VARCHAR2,
452   x_messages_tbl        OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type)is
453 
454   Cursor item_lines_to_be_processed is
455      SELECT
456   internal_organization_id               ,
457   document_type_id                       ,
458   transaction_id                         ,
459   application_code                       ,
460   document_level_action                  ,
461   trx_date                               ,
462   trx_currency_code                      ,
463 /* Bug 5090593:
464   quote_flag             ,
465 */
466   legal_entity_number                    ,
467   establishment_number                   ,
468   transaction_number                     ,
469   transaction_description                ,
470   document_sequence_value                ,
471   transaction_due_date                   ,
472 /* Bug 5090593:
473   transaction_solution_origin            ,
474 */
475   allow_tax_calculation                  ,
476   transaction_line_id                    ,
477   trx_level_type                         ,
478   line_level_action                      ,
479   line_class                             ,
480   transaction_shipping_date              ,
481   transaction_receipt_date               ,
482   transaction_line_type                  ,
483   transaction_line_date                  ,
484   trx_business_category                  ,
485   line_intended_use                      ,
486   line_amt_includes_tax_flag             ,
487   line_amount                            ,
488   other_inclusive_tax_amount             ,
489   transaction_line_quantity              ,
490   unit_price                             ,
491   cash_discount                          ,
492   volume_discount                        ,
493   trading_discount                       ,
494   transportation_charge                  ,
495   insurance_charge                       ,
496   other_charge                           ,
497   product_id                             ,
498   uom_code                               ,
499   product_type                           ,
500   product_code                           ,
501   fob_point                              ,
502   ship_to_party_number                   ,
503   ship_to_party_name                     ,
504   ship_from_party_number                 ,
505   ship_from_party_name                   ,
506   ship_to_loc_id                         ,     -- Bug 5090593
507   ship_to_geography_type1                ,
508   ship_to_geography_value1               ,
509   ship_to_geography_type2                ,
510   ship_to_geography_value2               ,
511   ship_to_geography_type3                ,
512   ship_to_geography_value3               ,
513   ship_to_geography_type4                ,
514   ship_to_geography_value4               ,
515   ship_to_geography_type5                ,
516   ship_to_geography_value5               ,
517   ship_to_geography_type6                ,
518   ship_to_geography_value6               ,
519   ship_to_geography_type7                ,
520   ship_to_geography_value7               ,
521   ship_to_geography_type8                ,
522   ship_to_geography_value8               ,
523   ship_to_geography_type9                ,
524   ship_to_geography_value9               ,
525   ship_to_geography_type10               ,
526   ship_to_geography_value10              ,
527   ship_from_loc_id                       ,     -- Bug 5090593
528   ship_from_geography_type1              ,
529   ship_from_geography_value1             ,
530   ship_from_geography_type2              ,
531   ship_from_geography_value2             ,
532   ship_from_geography_type3              ,
533   ship_from_geography_value3             ,
534   ship_from_geography_type4              ,
535   ship_from_geography_value4             ,
536   ship_from_geography_type5              ,
537   ship_from_geography_value5             ,
538   ship_from_geography_type6              ,
539   ship_from_geography_value6             ,
540   ship_from_geography_type7              ,
541   ship_from_geography_value7             ,
542   ship_from_geography_type8              ,
543   ship_from_geography_value8             ,
544   ship_from_geography_type9              ,
545   ship_from_geography_value9             ,
546   ship_from_geography_type10             ,
547   ship_from_geography_value10            ,
548   poa_loc_id                             ,     -- Bug 5090593
549   poa_geography_type1                    ,
550   poa_geography_value1                   ,
551   poa_geography_type2                    ,
552   poa_geography_value2                   ,
553   poa_geography_type3                    ,
554   poa_geography_value3                   ,
555   poa_geography_type4                    ,
556   poa_geography_value4                   ,
557   poa_geography_type5                    ,
558   poa_geography_value5                   ,
559   poa_geography_type6                    ,
560   poa_geography_value6                   ,
561   poa_geography_type7                    ,
562   poa_geography_value7                   ,
563   poa_geography_type8                    ,
564   poa_geography_value8                   ,
565   poa_geography_type9                    ,
566   poa_geography_value9                   ,
567   poa_geography_type10                   ,
568   poa_geography_value10                  ,
569   poo_loc_id                             ,     -- Bug 5090593
570   poo_geography_type1                    ,
571   poo_geography_value1                   ,
572   poo_geography_type2                    ,
573   poo_geography_value2                   ,
574   poo_geography_type3                    ,
575   poo_geography_value3                   ,
576   poo_geography_type4                    ,
577   poo_geography_value4                   ,
578   poo_geography_type5                    ,
579   poo_geography_value5                   ,
580   poo_geography_type6                    ,
581   poo_geography_value6                   ,
582   poo_geography_type7                    ,
583   poo_geography_value7                   ,
584   poo_geography_type8                    ,
585   poo_geography_value8                   ,
586   poo_geography_type9                    ,
587   poo_geography_value9                   ,
588   poo_geography_type10                   ,
589   poo_geography_value10                  ,
590   bill_to_party_number                   ,
591   bill_to_party_name                     ,
592   bill_from_party_number                 ,
593   bill_from_party_name                   ,
594   bill_to_loc_id                         ,     -- Bug 5090593
595   bill_to_geography_type1                ,
596   bill_to_geography_value1               ,
597   bill_to_geography_type2                ,
598   bill_to_geography_value2               ,
599   bill_to_geography_type3                ,
600   bill_to_geography_value3               ,
601   bill_to_geography_type4                ,
602   bill_to_geography_value4               ,
603   bill_to_geography_type5                ,
604   bill_to_geography_value5               ,
605   bill_to_geography_type6                ,
606   bill_to_geography_value6               ,
607   bill_to_geography_type7                ,
608   bill_to_geography_value7               ,
609   bill_to_geography_type8                ,
610   bill_to_geography_value8               ,
611   bill_to_geography_type9                ,
612   bill_to_geography_value9               ,
613   bill_to_geography_type10               ,
614   bill_to_geography_value10              ,
615   bill_from_loc_id                       ,     -- Bug 5090593
616   bill_from_geography_type1              ,
617   bill_from_geography_value1             ,
618   bill_from_geography_type2              ,
619   bill_from_geography_value2             ,
620   bill_from_geography_type3              ,
621   bill_from_geography_value3             ,
622   bill_from_geography_type4              ,
623   bill_from_geography_value4             ,
624   bill_from_geography_type5              ,
625   bill_from_geography_value5             ,
626   bill_from_geography_type6              ,
627   bill_from_geography_value6             ,
628   bill_from_geography_type7              ,
629   bill_from_geography_value7             ,
630   bill_from_geography_type8              ,
631   bill_from_geography_value8             ,
632   bill_from_geography_type9              ,
633   bill_from_geography_value9             ,
634   bill_from_geography_type10             ,
635   bill_from_geography_value10            ,
636   account_ccid                           ,
637   --applied_from_document_type_id          ,
638   applied_from_transaction_id            ,
639   applied_from_line_id                   ,
640   applied_from_trx_level_type,
641   applied_from_doc_number                ,
642   adjusted_doc_document_type_id          ,
643   adjusted_doc_transaction_id            ,
644   adjusted_doc_line_id                   ,
645   adjusted_doc_number                    ,
646   adjusted_doc_trx_level_type,
647   adjusted_doc_date                      ,
648   assessable_value                       ,
649   trx_line_number                        ,
650   trx_line_description                   ,
651   product_description                    ,
652   header_char1                           ,
653   header_char2                           ,
654   header_char3                           ,
655   header_char4                           ,
656   header_char5                           ,
657   header_char6                           ,
658   header_char7                           ,
659   header_char8                           ,
660   header_char9                           ,
661   header_char10                          ,
662   header_char11                          ,
663   header_char12                          ,
664   header_char13                          ,
665   header_char14                          ,
666   header_char15                          ,
667   header_numeric1                        ,
668   header_numeric2                        ,
669   header_numeric3                        ,
670   header_numeric4                        ,
671   header_numeric5                        ,
672   header_numeric6                        ,
673   header_numeric7                        ,
674   header_numeric8                        ,
675   header_numeric9                        ,
676   header_numeric10                       ,
677   header_date1                           ,
678   header_date2                           ,
679   header_date3                           ,
680   header_date4                           ,
681   header_date5                           ,
682   line_char1                             ,
683   line_char2                             ,
684   line_char3                             ,
685   line_char4                             ,
686   line_char5                             ,
687   line_char6                             ,
688   line_char7                             ,
689   line_char8                             ,
690   line_char9                             ,
691   line_char10                            ,
692   line_char11                            ,
693   line_char12                            ,
694   line_char13                            ,
695   line_char14                            ,
696   line_char15                            ,
697   line_numeric1                          ,
698   line_numeric2                          ,
699   line_numeric3                          ,
700   line_numeric4                          ,
701   line_numeric5                          ,
702   line_numeric6                          ,
703   line_numeric7                          ,
704   line_numeric8                          ,
705   line_numeric9                          ,
706   line_numeric10                         ,
707   line_date1                             ,
708   line_date2                             ,
709   line_date3                             ,
710   line_date4                             ,
711   line_date5                             ,
712   exempt_certificate_number              ,
713   exempt_reason                          ,
714   exemption_control_flag
715      From ZX_O2C_CALC_TXN_INPUT_V;
716 --     WHERE transaction_id = p_trx_id;
717 
718   l_api_name             CONSTANT VARCHAR2(30) := 'CALCULATE_TAX_API';
719   l_return_status        VARCHAR2(30);
720   ptr                    NUMBER;
721   l_cnt_of_options_gt    NUMBER;
722   l_cnt_of_hdr_extns_gt  NUMBER;
723   l_cnt_of_line_extns_gt NUMBER;
724   l_cnt_of_loc_info_gt   NUMBER;
725   l_cnt_of_ptnr_neg_line_gt NUMBER;
726   l_partner_processing_flag  VARCHAR2(80);
727   l_record_for_partners_flag VARCHAR2(80);
728   l_line_action  zx_lines_det_factors.line_level_action%type;
729 --  l_inclusive_tax_override_flag VARCHAR2(80);
730   l_application_id  NUMBER;
731   l_entity_code     VARCHAR2(80);
732   l_event_class_code VARCHAR2(100);
733 --  l_trx_level_type   VARCHAR2(100);
734 --  l_trx_id           NUMBER;
735 --  l_org_id           NUMBER;
736 --  l_trx_type_id      NUMBER;
737 --  l_trx_line_id      NUMBER;
738 --  l_tax_code         VARCHAR2(100);
739 --  l_tax_type         VARCHAR2(100);
740 --  l_tax_flag         VARCHAR2(10);
741 --  l_ship_to_location_id NUMBER;
742 --  l_bill_to_location_id NUMBER;
743   l_doc_amount       NUMBER;
744   l_doc_trx_id       NUMBER;
745 
746   cnt_end         NUMBER;
747   cnt             NUMBER := 1;
748   l_index         NUMBER;
749   l_tax_lines_tbl ZX_TAX_PARTNER_PKG.tax_lines_tbl_type;
750 
751 BEGIN
752   x_error_status := FND_API.G_RET_STS_SUCCESS;
753   err_count      := 0;
754   l_doc_trx_id   := NULL;
755 
756   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
757     FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
758   END IF;
759 
760   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
761     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
762                           ' zx_tax_partner_pkg.G_BUSINESS_FLOW = ' || zx_tax_partner_pkg.G_BUSINESS_FLOW);
763   END IF;
764 
765   IF zx_tax_partner_pkg.G_BUSINESS_FLOW = 'O2C' THEN
766     --  Verify the integration with the version of Vertex Q Series product is certified.
767     BEGIN
768       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
769         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
770                           'Calling ZX_TAX_VERTEX_REV.GET_RELEASE Verify the integration with the version of Vertex Q Series product is certified');
771       END IF;
772 
773       ZX_TAX_VERTEX_REV.GET_RELEASE(context_rec,version_rec,l_return_status);
774 
775       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
776         IF (g_level_exception >= g_current_runtime_level ) THEN
777           FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
778         END IF;
779         x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
780         g_string :='Not compaitable to VERTEX Release';
781         error_exception_handle(g_string);
782         x_messages_tbl:=g_messages_tbl;
783         return;
784       END IF;
785 
786     EXCEPTION
787       WHEN OTHERS THEN
788         IF (g_level_exception >= g_current_runtime_level ) THEN
789           FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
790         END IF;
791         x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
792         g_string :='Not compaitable to VERTEX Release failed with exception';
793         error_exception_handle(g_string);
794         x_messages_tbl:=g_messages_tbl;
795         return;
796     END;
797   ELSE
798     --Release 12 Old tax partner integration does not support P2P products;
799     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
800       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
801                           'Release 12 Old tax partner integration does not support P2P products' );
802     END IF;
803     x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
804     g_string :='Release 12 Old tax partner integration does not support P2P products';
805     error_exception_handle(g_string);
806     x_messages_tbl:=g_messages_tbl;
807     return;
808   END IF;
809 
810   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
811     BEGIN
812       SELECT count(*)
813       INTO l_cnt_of_options_gt
814       FROM ZX_TRX_PRE_PROC_OPTIONS_GT;
815     EXCEPTION WHEN OTHERS THEN
816       l_cnt_of_options_gt := 0;
817     END;
818 
819     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
820                       'l_cnt_of_options_gt = '||l_cnt_of_options_gt);
821 
822     BEGIN
823       SELECT count(*)
824       INTO l_cnt_of_options_gt
825       FROM ZX_TRX_PRE_PROC_OPTIONS_GT ztppo
826           , ZX_LINES_DET_FACTORS zldf
827       WHERE ztppo.application_id   = zldf.application_id
828       AND ztppo.entity_code      = zldf.entity_code
829       AND ztppo.event_class_code = zldf.event_class_code
830       AND ztppo.trx_id           = zldf.trx_id;
831     EXCEPTION WHEN OTHERS THEN
832       l_cnt_of_options_gt := 0;
833     END;
834 
835     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
836                       'l_cnt_of_line_det_factors = '||l_cnt_of_options_gt);
837 
838     BEGIN
839       SELECT count(*)
840       INTO l_cnt_of_hdr_extns_gt
841       FROM ZX_PRVDR_HDR_EXTNS_GT;
842     EXCEPTION WHEN OTHERS THEN
843       l_cnt_of_hdr_extns_gt := 0;
844     END;
845 
846     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
847                         'l_cnt_of_hdr_extns_gt = '||l_cnt_of_hdr_extns_gt);
848 
849     BEGIN
850       SELECT count(*)
851       INTO l_cnt_of_line_extns_gt
852       FROM ZX_PRVDR_LINE_EXTNS_GT;
853     EXCEPTION WHEN OTHERS THEN
854       l_cnt_of_line_extns_gt := 0;
855     END;
856 
857     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
858                       'l_cnt_of_line_extns_gt = '||l_cnt_of_line_extns_gt);
859 
860     BEGIN
861       SELECT count(*)
862       INTO l_cnt_of_loc_info_gt
863       FROM ZX_PTNR_LOCATION_INFO_GT;
864       EXCEPTION WHEN OTHERS THEN
865         l_cnt_of_loc_info_gt := 0;
866     END;
867 
868     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
869                       'l_cnt_of_loc_info_gt = '||l_cnt_of_loc_info_gt);
870 
871     BEGIN
872       SELECT count(*)
873       INTO l_cnt_of_ptnr_neg_line_gt
874       FROM ZX_PTNR_NEG_LINE_GT;
875     EXCEPTION WHEN OTHERS THEN
876       l_cnt_of_ptnr_neg_line_gt := 0;
877     END;
878 
879     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
880                         'l_cnt_of_ptnr_neg_line_gt = '||l_cnt_of_ptnr_neg_line_gt);
881   END IF;
882 
883   /***
884   BEGIN
885     SELECT distinct application_id,entity_code,event_class_code,
886             trx_id,trx_level_type,trx_line_id
887     INTO l_application_id,l_entity_code,l_event_class_code,
888           l_trx_id,l_trx_level_type,l_trx_line_id
889     FROM ZX_PRVDR_LINE_EXTNS_GT where rownum = 1;
890 
891     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
892       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'before tax code');
893     END IF;
894     -- bug 6755603
895 
896     SELECT output_tax_classification_code,receivables_trx_type_id,internal_organization_id, ship_to_location_id,
897             bill_to_location_id
898     INTO  l_tax_code, l_trx_type_id, l_org_id, l_ship_to_location_id, l_bill_to_location_id
899     FROM zx_lines_det_factors
900     WHERE application_id = l_application_id
901     and entity_code = l_entity_code
902     and event_class_code = l_event_class_code
903     and trx_id = l_trx_id
904     and trx_line_id = l_trx_line_id
905     and trx_level_type = l_trx_level_type;
906 
907     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
908       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_ship_to_location_id '||l_ship_to_location_id);
909       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_bill_to_location_id '||l_bill_to_location_id);
910     END IF;
911 
912     BEGIN
913       select tax_type_code INTO l_tax_type -- from zx_taxes_b zx, zx_rates_b zr
914       from zx_sco_taxes zx,   -- Changed from clause to use sco views not base tables
915             zx_sco_rates zr
916       where zx.tax = zr.tax
917       AND zx.tax_regime_code = zr.tax_regime_code
918       AND zr.tax_rate_code = l_tax_code
919       AND zx.live_for_processing_flag = 'Y' --Bug 7594634
920       AND rownum = 1;
921     EXCEPTION
922       WHEN others THEN
923         l_tax_type := NULL;
924     END;
925 
926     IF zx_global_structures_pkg.tax_calc_flag_tbl.exists(to_char(l_trx_type_id)) THEN
927       l_tax_flag := zx_global_structures_pkg.tax_calc_flag_tbl(to_char(l_trx_type_id));
928     ELSE
929       SELECT tax_calculation_flag into l_tax_flag
930       FROM  ra_cust_trx_types_all rtt
931       WHERE rtt.cust_trx_type_id = l_trx_type_id
932       AND org_id = l_org_id;
933     END IF;
934 
935     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
936       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_tax_code'||l_tax_code);
937       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_tax_type_code'||l_tax_type);
938       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Tax calculation flag '||l_tax_flag);
939     END IF;
940 
941     IF l_tax_flag = 'N' AND l_tax_code is NULL THEN
942       RETURN;
943     ELSIF l_tax_type NOT IN ('SALES_TAX','LOCATION') THEN
944       RETURN;
945     ELSIF (l_tax_type = 'SALES_TAX' AND l_tax_code <> 'STATE' and  l_tax_code <> 'COUNTY' and l_tax_code <> 'CITY' and l_tax_code not like '%_COUNTY'
946               and l_tax_code not like '%_CITY') THEN
947       RETURN;
948     END IF;
949   EXCEPTION WHEN OTHERS THEN
950     null;
951   END;
952 
953   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
954     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_cnt_of_line_extns_gt = '||l_cnt_of_line_extns_gt);
955   END IF;
956   ***/
957 
958 
959   BEGIN
960     select record_for_partners_flag,partner_processing_flag
961     into  l_record_for_partners_flag,l_partner_processing_flag
962     from ZX_TRX_PRE_PROC_OPTIONS_GT
963     where rownum=1;
964   EXCEPTION WHEN OTHERS THEN
965     l_record_for_partners_flag := 'N';
966     l_partner_processing_flag  := 'N';
967     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
968       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Exception: No Data in Pre Proc Options GT');
969     END IF;
970   END;
971 
972   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
973     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
974                       'l_record_for_partners_flag  = '||l_record_for_partners_flag||
975                       ' l_partner_processing_flag   = '||l_partner_processing_flag);
976   END IF;
977 
978   --BEGIN
979   --  select zldf.line_level_action,zldf.inclusive_tax_override_flag
980   --  into l_line_level_action, l_inclusive_tax_override_flag
981   --  FROM ZX_TRX_PRE_PROC_OPTIONS_GT ztppo
982   --      ,ZX_LINES_DET_FACTORS zldf
983   --  WHERE ztppo.application_id   = zldf.application_id
984   --  AND ztppo.entity_code      = zldf.entity_code
985   --  AND ztppo.event_class_code = zldf.event_class_code
986   --  AND ztppo.trx_id           = zldf.trx_id;
987   --EXCEPTION WHEN OTHERS THEN
988   --  l_line_level_action := 'N';
989   --  l_inclusive_tax_override_flag  := 'N';
990   --  IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
991   --    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
992   --                      'Exp : l_line_level_action =' ||l_line_level_action
993   --                    ||'Exp : l_inclusive_tax_override_flag '|| l_inclusive_tax_override_flag);
994   --  END IF;
995   --END;
996 
997   --IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
998   --  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
999   --                        ' l_line_level_action =' ||l_line_level_action
1000   --                      ||' l_inclusive_tax_override_flag '|| l_inclusive_tax_override_flag);
1001   --END IF;
1002 
1003   open item_lines_to_be_processed ;
1004   LOOP
1005     fetch item_lines_to_be_processed
1006     bulk collect into
1007               pg_internal_org_id_tab    ,
1008               pg_doc_type_id_tab    ,
1009               pg_trx_id_tab      ,
1010               pg_appli_code_tab    ,
1011               pg_doc_level_action_tab    ,
1012               pg_trx_date_tab      ,
1013               pg_trx_curr_code_tab    ,
1014               /* Bug 5090593:
1015               pg_quote_flag_tab    ,
1016               */
1017               pg_legal_entity_num_tab    ,
1018               pg_esta_name_tab    ,
1019               pg_trx_number_tab    ,
1020               pg_trx_desc_tab      ,
1021               pg_doc_sequence_value_tab  ,
1022               pg_trx_due_date_tab    ,
1023               /* Bug 5090593:
1024               pg_trx_sol_ori_tab    ,
1025               */
1026               pg_allow_tax_calc_tab    ,
1027               pg_trx_line_id_tab    ,
1028               pg_trx_level_type_tab    ,
1029               pg_line_level_action_tab  ,
1030               pg_line_class_tab    ,
1031               pg_trx_shipping_date_tab  ,
1032               pg_trx_receipt_date_tab    ,
1033               pg_trx_line_type_tab    ,
1034               pg_trx_line_date_tab    ,
1035               pg_trx_business_cat_tab    ,
1036               pg_line_intended_use_tab  ,
1037               pg_line_amt_incl_tax_flag_tab  ,
1038               pg_line_amount_tab    ,
1039               pg_other_incl_tax_amt_tab  ,
1040               pg_trx_line_qty_tab    ,
1041               pg_unit_price_tab    ,
1042               pg_cash_discount_tab    ,
1043               pg_volume_discount_tab    ,
1044               pg_trading_discount_tab    ,
1045               pg_trans_charge_tab    ,
1046               pg_ins_charge_tab    ,
1047               pg_other_charge_tab    ,
1048               pg_prod_id_tab      ,
1049               pg_uom_code_tab      ,
1050               pg_prod_type_tab    ,
1051               pg_prod_code_tab    ,
1052               pg_fob_point_tab    ,
1053               pg_ship_to_pty_numr_tab    ,
1054               pg_ship_to_pty_name_tab    ,
1055               pg_ship_from_pty_num_tab  ,
1056               pg_ship_from_pty_name_tab  ,
1057               pg_ship_to_loc_id_tab           ,    -- Bug 5090593
1058               pg_ship_to_grphy_type1_tab      ,
1059               pg_ship_to_grphy_value1_tab     ,
1060               pg_ship_to_grphy_type2_tab      ,
1061               pg_ship_to_grphy_value2_tab     ,
1062               pg_ship_to_grphy_type3_tab      ,
1063               pg_ship_to_grphy_value3_tab     ,
1064               pg_ship_to_grphy_type4_tab      ,
1065               pg_ship_to_grphy_value4_tab     ,
1066               pg_ship_to_grphy_type5_tab      ,
1067               pg_ship_to_grphy_value5_tab     ,
1068               pg_ship_to_grphy_type6_tab      ,
1069               pg_ship_to_grphy_value6_tab     ,
1070               pg_ship_to_grphy_type7_tab      ,
1071               pg_ship_to_grphy_value7_tab     ,
1072               pg_ship_to_grphy_type8_tab      ,
1073               pg_ship_to_grphy_value8_tab     ,
1074               pg_ship_to_grphy_type9_tab      ,
1075               pg_ship_to_grphy_value9_tab     ,
1076               pg_ship_to_grphy_type10_tab     ,
1077               pg_ship_to_grphy_value10_tab    ,
1078               pg_ship_fr_loc_id_tab           ,    -- Bug 5090593
1079               pg_ship_fr_grphy_type1_tab      ,
1080               pg_ship_fr_grphy_value1_tab     ,
1081               pg_ship_fr_grphy_type2_tab      ,
1082               pg_ship_fr_grphy_value2_tab     ,
1083               pg_ship_fr_grphy_type3_tab      ,
1084               pg_ship_fr_grphy_value3_tab     ,
1085               pg_ship_fr_grphy_type4_tab      ,
1086               pg_ship_fr_grphy_value4_tab     ,
1087               pg_ship_fr_grphy_type5_tab      ,
1088               pg_ship_fr_grphy_value5_tab     ,
1089               pg_ship_fr_grphy_type6_tab      ,
1090               pg_ship_fr_grphy_value6_tab     ,
1091               pg_ship_fr_grphy_type7_tab      ,
1092               pg_ship_fr_grphy_value7_tab     ,
1093               pg_ship_fr_grphy_type8_tab      ,
1094               pg_ship_fr_grphy_value8_tab     ,
1095               pg_ship_fr_grphy_type9_tab      ,
1096               pg_ship_fr_grphy_value9_tab     ,
1097               pg_ship_fr_grphy_type10_tab     ,
1098               pg_ship_fr_grphy_value10_tab    ,
1099               pg_poa_loc_id_tab               ,    -- Bug 5090593
1100               pg_poa_grphy_type1_tab          ,
1101               pg_poa_grphy_value1_tab         ,
1102               pg_poa_grphy_type2_tab          ,
1103               pg_poa_grphy_value2_tab         ,
1104               pg_poa_grphy_type3_tab          ,
1105               pg_poa_grphy_value3_tab         ,
1106               pg_poa_grphy_type4_tab          ,
1107               pg_poa_grphy_value4_tab         ,
1108               pg_poa_grphy_type5_tab          ,
1109               pg_poa_grphy_value5_tab         ,
1110               pg_poa_grphy_type6_tab          ,
1111               pg_poa_grphy_value6_tab         ,
1112               pg_poa_grphy_type7_tab          ,
1113               pg_poa_grphy_value7_tab         ,
1114               pg_poa_grphy_type8_tab          ,
1115               pg_poa_grphy_value8_tab         ,
1116               pg_poa_grphy_type9_tab          ,
1117               pg_poa_grphy_value9_tab         ,
1118               pg_poa_grphy_type10_tab         ,
1119               pg_poa_grphy_value10_tab        ,
1120               pg_poo_loc_id_tab               ,    -- Bug 5090593
1121               pg_poo_grphy_type1_tab          ,
1122               pg_poo_grphy_value1_tab         ,
1123               pg_poo_grphy_type2_tab          ,
1124               pg_poo_grphy_value2_tab         ,
1125               pg_poo_grphy_type3_tab          ,
1126               pg_poo_grphy_value3_tab         ,
1127               pg_poo_grphy_type4_tab          ,
1128               pg_poo_grphy_value4_tab         ,
1129               pg_poo_grphy_type5_tab          ,
1130               pg_poo_grphy_value5_tab         ,
1131               pg_poo_grphy_type6_tab          ,
1132               pg_poo_grphy_value6_tab         ,
1133               pg_poo_grphy_type7_tab          ,
1134               pg_poo_grphy_value7_tab         ,
1135               pg_poo_grphy_type8_tab          ,
1136               pg_poo_grphy_value8_tab         ,
1137               pg_poo_grphy_type9_tab          ,
1138               pg_poo_grphy_value9_tab         ,
1139               pg_poo_grphy_type10_tab         ,
1140               pg_poo_grphy_value10_tab        ,
1141               pg_bill_to_pty_num_tab    ,
1142               pg_bill_to_pty_name_tab    ,
1143               pg_bill_from_pty_num_tab  ,
1144               pg_bill_from_pty_name_tab  ,
1145               pg_bill_to_loc_id_tab           ,    -- Bug 5090593
1146               pg_bill_to_grphy_type1_tab      ,
1147               pg_bill_to_grphy_value1_tab     ,
1148               pg_bill_to_grphy_type2_tab      ,
1149               pg_bill_to_grphy_value2_tab     ,
1150               pg_bill_to_grphy_type3_tab      ,
1151               pg_bill_to_grphy_value3_tab     ,
1152               pg_bill_to_grphy_type4_tab      ,
1153               pg_bill_to_grphy_value4_tab     ,
1154               pg_bill_to_grphy_type5_tab      ,
1155               pg_bill_to_grphy_value5_tab     ,
1156               pg_bill_to_grphy_type6_tab      ,
1157               pg_bill_to_grphy_value6_tab     ,
1158               pg_bill_to_grphy_type7_tab      ,
1159               pg_bill_to_grphy_value7_tab     ,
1160               pg_bill_to_grphy_type8_tab      ,
1161               pg_bill_to_grphy_value8_tab     ,
1162               pg_bill_to_grphy_type9_tab      ,
1163               pg_bill_to_grphy_value9_tab     ,
1164               pg_bill_to_grphy_type10_tab     ,
1165               pg_bill_to_grphy_value10_tab    ,
1166               pg_bill_fr_loc_id_tab           ,    -- Bug 5090593
1167               pg_bill_fr_grphy_type1_tab      ,
1168               pg_bill_fr_grphy_value1_tab     ,
1169               pg_bill_fr_grphy_type2_tab      ,
1170               pg_bill_fr_grphy_value2_tab     ,
1171               pg_bill_fr_grphy_type3_tab      ,
1172               pg_bill_fr_grphy_value3_tab     ,
1173               pg_bill_fr_grphy_type4_tab      ,
1174               pg_bill_fr_grphy_value4_tab     ,
1175               pg_bill_fr_grphy_type5_tab      ,
1176               pg_bill_fr_grphy_value5_tab     ,
1177               pg_bill_fr_grphy_type6_tab      ,
1178               pg_bill_fr_grphy_value6_tab     ,
1179               pg_bill_fr_grphy_type7_tab      ,
1180               pg_bill_fr_grphy_value7_tab     ,
1181               pg_bill_fr_grphy_type8_tab      ,
1182               pg_bill_fr_grphy_value8_tab     ,
1183               pg_bill_fr_grphy_type9_tab      ,
1184               pg_bill_fr_grphy_value9_tab     ,
1185               pg_bill_fr_grphy_type10_tab     ,
1186               pg_bill_fr_grphy_value10_tab    ,
1187               pg_account_ccid_tab    ,
1188               --pg_appl_fr_doc_type_id_tab  ,
1189               pg_appl_from_trx_id_tab    ,
1190               pg_appl_from_line_id_tab  ,
1191               pg_appl_fr_trx_lev_type_tab  ,
1192               pg_appl_from_doc_num_tab  ,
1193               pg_adj_doc_doc_type_id_tab  ,
1194               pg_adj_doc_trx_id_tab    ,
1195               pg_adj_doc_line_id_tab    ,
1196               pg_adj_doc_number_tab    ,
1197               pg_adj_doc_trx_lev_type_tab  ,
1198               pg_adj_doc_date_tab    ,
1199               pg_assess_value_tab    ,
1200               pg_trx_line_number_tab    ,
1201               pg_trx_line_desc_tab    ,
1202               pg_prod_desc_tab    ,
1203               pg_header_char1_tab    ,
1204               pg_header_char2_tab    ,
1205               pg_header_char3_tab    ,
1206               pg_header_char4_tab    ,
1207               pg_header_char5_tab    ,
1208               pg_header_char6_tab    ,
1209               pg_header_char7_tab    ,
1210               pg_header_char8_tab    ,
1211               pg_header_char9_tab    ,
1212               pg_header_char10_tab    ,
1213               pg_header_char11_tab    ,
1214               pg_header_char12_tab    ,
1215               pg_header_char13_tab    ,
1216               pg_header_char14_tab    ,
1217               pg_header_char15_tab    ,
1218               pg_header_numeric1_tab    ,
1219               pg_header_numeric2_tab    ,
1220               pg_header_numeric3_tab    ,
1221               pg_header_numeric4_tab    ,
1222               pg_header_numeric5_tab    ,
1223               pg_header_numeric6_tab    ,
1224               pg_header_numeric7_tab    ,
1225               pg_header_numeric8_tab    ,
1226               pg_header_numeric9_tab    ,
1227               pg_header_numeric10_tab    ,
1228               pg_header_date1_tab    ,
1229               pg_header_date2_tab    ,
1230               pg_header_date3_tab    ,
1231               pg_header_date4_tab    ,
1232               pg_header_date5_tab    ,
1233               pg_line_char1_tab    ,
1234               pg_line_char2_tab    ,
1235               pg_line_char3_tab    ,
1236               pg_line_char4_tab    ,
1237               pg_line_char5_tab    ,
1238               pg_line_char6_tab    ,
1239               pg_line_char7_tab    ,
1240               pg_line_char8_tab    ,
1241               pg_line_char9_tab    ,
1242               pg_line_char10_tab    ,
1243               pg_line_char11_tab    ,
1244               pg_line_char12_tab    ,
1245               pg_line_char13_tab    ,
1246               pg_line_char14_tab    ,
1247               pg_line_char15_tab    ,
1248               pg_line_numeric1_tab    ,
1249               pg_line_numeric2_tab    ,
1250               pg_line_numeric3_tab    ,
1251               pg_line_numeric4_tab    ,
1252               pg_line_numeric5_tab    ,
1253               pg_line_numeric6_tab    ,
1254               pg_line_numeric7_tab    ,
1255               pg_line_numeric8_tab    ,
1256               pg_line_numeric9_tab    ,
1257               pg_line_numeric10_tab    ,
1258               pg_line_date1_tab    ,
1259               pg_line_date2_tab    ,
1260               pg_line_date3_tab    ,
1261               pg_line_date4_tab    ,
1262               pg_line_date5_tab    ,
1263               pg_exempt_certi_numb_tab  ,
1264               pg_exempt_reason_tab    ,
1265               pg_exempt_cont_flag_tab
1266     limit C_LINES_PER_COMMIT;/*Need to limit the fetch*/
1267 
1268     delete from zx_jurisdictions_gt;
1269     l_index := 0;
1270 
1271     IF (nvl(pg_trx_id_tab.last,0) = 0) Then
1272       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1273         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1274                           'No item lines exist to whom tax lines need to be created' );
1275       END IF;
1276       -- x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1277       -- g_string :='Not compaitable to VERTEX Release';
1278       -- error_exception_handle(g_string);
1279       -- x_messages_tbl:=g_messages_tbl;
1280       return;
1281 
1282     ELSE /*The view has returned some rows that can be processed below */
1283 
1284       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1285        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1286                       ' Records in ZX_O2C_CALC_TXN_INPUT_V = '||pg_trx_id_tab.last);
1287       END IF;
1288 
1289       For ptr in 1..nvl(pg_trx_id_tab.last, 0) loop
1290 
1291         I:=ptr;
1292         -- In case of partners, since there are two calls to get_tax_jurisdictions API
1293         -- we need to delete from zx_jurisdictions_gt before each of the calls to
1294         -- get_tax_jurisdictions API
1295         --  IF pg_trx_line_id_tab(i) <> g_transaction_line_id THEN
1296         --    delete from zx_jurisdictions_gt;
1297         --  END IF;
1298         g_transaction_line_id  :=  pg_trx_line_id_tab(i);
1299         g_trx_level_type  :=  pg_trx_level_type_tab(i);
1300         g_docment_type_id  :=  pg_doc_type_id_tab(i);
1301         g_trasaction_id  :=  pg_trx_id_tab(i);
1302         g_tax_regime_code  :=  zx_tax_partner_pkg.g_tax_regime_code;
1303 
1304         pg_ugraded_inv_flag_tab(I) := 'N';
1305 
1306         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1307           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Value of Variable I is :'||I);
1308           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1309                             'pg_ship_to_loc_id_tab is : '||pg_ship_to_loc_id_tab(i)||
1310                             ' pg_bill_to_loc_id_tab is : '||pg_bill_to_loc_id_tab(i));
1311         END IF;
1312 
1313         /* Performing validation of passed document level,line level actions */
1314         Perform_validate(l_return_status);
1315 
1316         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1317           IF (g_level_exception >= g_current_runtime_level ) THEN
1318             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1319           END IF;
1320           x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1321           g_string :='Header ,line level actions are incompaitable';
1322           error_exception_handle(g_string);
1323           x_messages_tbl:=g_messages_tbl;
1324           return;
1325         END IF;
1326 
1327         IF(pg_doc_type_id_tab(i)<>0) then
1328           IF l_doc_trx_id IS NULL or l_doc_trx_id <> pg_trx_id_tab(i) THEN
1329             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1330               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1331                                 ' Selecting document type for event_class_mapping id  '||pg_doc_type_id_tab(i));
1332             END IF;
1333             Begin
1334               select  event_class_code, application_id, entity_code, event_class_code
1335               into    l_document_type, l_application_id, l_entity_code, l_event_class_code
1336               from    zx_evnt_cls_mappings
1337               where   event_class_mapping_id = pg_doc_type_id_tab(i);
1338             Exception
1339             When no_data_found then
1340               IF (g_level_exception >= g_current_runtime_level ) THEN
1341                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1342               End if;
1343               x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1344               g_string :='No document type exist for provided event_class_mapping_id ';
1345               error_exception_handle(g_string);
1346               x_messages_tbl:=g_messages_tbl;
1347               return;
1348             End;
1349           END IF;
1350         ELSE /*"Sales Transaction Quote*/
1351           l_document_type := 'SALES_QUOTE';
1352         END IF;
1353 
1354         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1355           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'DOCUMENT_TYPE  '||l_document_type);
1356         END IF;
1357 
1358         IF l_doc_trx_id IS NULL or l_doc_trx_id <> pg_trx_id_tab(I) THEN
1359           l_doc_trx_id := pg_trx_id_tab(I);
1360 
1361           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1362             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Setting up Document type' );
1363           END IF;
1364 
1365           SELECT SUM(ABS(line_amount))
1366           INTO l_doc_amount
1367           FROM ZX_O2C_CALC_TXN_INPUT_V
1368           WHERE transaction_id = l_doc_trx_id;
1369 
1370           SET_DOCUMENT_TYPE(l_document_type,pg_adj_doc_trx_id_tab(I),l_doc_amount,pg_line_level_action_tab(I),l_return_status);
1371 
1372           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1373             IF (g_level_exception >= g_current_runtime_level ) THEN
1374               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1375             END IF;
1376             x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1377             g_string :='Failed in setting up document type';
1378             error_exception_handle(g_string);
1379             x_messages_tbl:=g_messages_tbl;
1380             return;
1381           END IF;
1382         END IF;
1383 
1384         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1385           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1386                             ' Document Type : '||l_document_type||
1387                             ' Line Amount: '||pg_line_amount_tab(I)||
1388                             ' Line Action: '||pg_line_level_action_tab(I) );
1389         END IF;
1390 
1391         IF pg_doc_level_action_tab(i) not in ('CREATE', 'QUOTE', 'UPDATE') THEN
1392           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1393             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown header level action' );
1394           END IF;
1395           x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1396           g_string :=' Unknown header  level action';
1397           error_exception_handle(g_string);
1398           x_messages_tbl:=g_messages_tbl;
1399           return;
1400         ELSIF l_document_type in ('TAX_ONLY_CREDIT_MEMO', 'TAX_ONLY_ADJUSTMENT','TAX_ONLY_INVOICE', 'INVOICE_ADJUSTMENT') THEN
1401           null;
1402         ELSE
1403           IF l_document_type = 'APPLIED_CREDIT_MEMO' and pg_line_amount_tab(I) = 0 THEN
1404             BEGIN
1405               select line_level_action into l_line_action
1406               from zx_lines_det_factors
1407               where application_id = l_application_id
1408               and entity_code = l_entity_code
1409               and event_class_code = l_event_class_code
1410               and trx_id = pg_trx_id_tab(I)
1411               and trx_line_id = pg_trx_line_id_tab(I);
1412             EXCEPTION
1413               WHEN OTHERS THEN
1414                 l_line_action := pg_line_level_action_tab(I);
1415             END;
1416           ELSE
1417             l_line_action := pg_line_level_action_tab(I);
1418           END IF;
1419 
1420           IF l_line_action <> 'ALLOCATE_TAX_ONLY_ADJUSTMENT' THEN
1421             IF (pg_doc_level_action_tab(i) in ('CREATE', 'QUOTE')) THEN
1422               Perform_line_creation(l_tax_lines_tbl,p_currency_tab,l_return_status);
1423               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1424                 IF (g_level_exception >= g_current_runtime_level ) THEN
1425                   FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1426                 END IF;
1427                 x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1428                 g_string :='Failed in creating tax line';
1429                 error_exception_handle(g_string);
1430                 x_messages_tbl:=g_messages_tbl;
1431                 return;
1432               END IF;
1433             ELSIF (pg_doc_level_action_tab(i) = 'UPDATE') then
1434               Perform_update(l_tax_lines_tbl,p_currency_tab,l_return_status);
1435               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1436                 IF (g_level_exception >= g_current_runtime_level ) THEN
1437                   FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1438                 END IF;
1439                 x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1440                 g_string :='Failed in creating update';
1441                 error_exception_handle(g_string);
1442                 x_messages_tbl:=g_messages_tbl;
1443                 return;
1444               END IF;
1445 
1446               BEGIN
1447                 DELETE FROM zx_ptnr_neg_line_gt
1448                 WHERE  event_class_mapping_id = pg_doc_type_id_tab(I)
1449                 and trx_id                 = pg_trx_id_tab(I)
1450                 and trx_line_id            = pg_trx_line_id_tab(I)
1451                 and trx_level_type         = pg_trx_level_type_tab(I);
1452               EXCEPTION
1453                 WHEN no_data_found THEN
1454                   null;
1455               END;
1456             End if; -- Document Level Action Check
1457 
1458             cnt_end := cnt + l_tax_lines_tbl.transaction_line_id.COUNT - 1;
1459 
1460             FOR inner IN cnt .. cnt_end LOOP
1461               IF inner = cnt THEN
1462                 IF pg_ugraded_inv_flag_tab(I) = 'Y' THEN
1463                   l_index := I;
1464                 ELSE
1465                   l_index := (3 * i) - 2;
1466                 END IF;
1467               ELSE
1468                 l_index := l_index + 1;
1469               END IF;
1470 
1471               x_tax_lines_tbl.DOCUMENT_TYPE_ID(inner)               :=  l_tax_lines_tbl.DOCUMENT_TYPE_ID(l_index);
1472               x_tax_lines_tbl.TRANSACTION_ID(inner)                 :=  l_tax_lines_tbl.TRANSACTION_ID(l_index);
1473               x_tax_lines_tbl.TRANSACTION_LINE_ID(inner)            :=  l_tax_lines_tbl.TRANSACTION_LINE_ID(l_index);
1474               x_tax_lines_tbl.TRX_LEVEL_TYPE(inner)                 :=  l_tax_lines_tbl.TRX_LEVEL_TYPE(l_index);
1475               x_tax_lines_tbl.COUNTRY_CODE(inner)                   :=  l_tax_lines_tbl.COUNTRY_CODE(l_index);
1476               x_tax_lines_tbl.TAX(inner)                            :=  l_tax_lines_tbl.TAX(l_index);
1477               x_tax_lines_tbl.SITUS(inner)                          :=  l_tax_lines_tbl.SITUS(l_index);
1478               x_tax_lines_tbl.TAX_JURISDICTION(inner)               :=  l_tax_lines_tbl.TAX_JURISDICTION(l_index);
1479               x_tax_lines_tbl.TAX_CURRENCY_CODE(inner)              :=  l_tax_lines_tbl.TAX_CURRENCY_CODE(l_index);
1480               x_tax_lines_tbl.TAX_AMOUNT(inner)                     :=  l_tax_lines_tbl.TAX_AMOUNT(l_index);
1481               x_tax_lines_tbl.UNROUNDED_TAX_AMOUNT(inner)           :=  l_tax_lines_tbl.UNROUNDED_TAX_AMOUNT(l_index);
1482               x_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(inner)            :=  l_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(l_index);
1483               x_tax_lines_tbl.TAX_RATE_PERCENTAGE(inner)            :=  l_tax_lines_tbl.TAX_RATE_PERCENTAGE(l_index);
1484               x_tax_lines_tbl.TAXABLE_AMOUNT(inner)                 :=  l_tax_lines_tbl.TAXABLE_AMOUNT(l_index);
1485               x_tax_lines_tbl.EXEMPT_CERTIFICATE_NUMBER(inner)      :=  l_tax_lines_tbl.EXEMPT_CERTIFICATE_NUMBER(l_index);
1486               x_tax_lines_tbl.EXEMPT_RATE_MODIFIER(inner)           :=  l_tax_lines_tbl.EXEMPT_RATE_MODIFIER(l_index);
1487               x_tax_lines_tbl.EXEMPT_REASON(inner)                  :=  l_tax_lines_tbl.EXEMPT_REASON(l_index);
1488               x_tax_lines_tbl.TAX_ONLY_LINE_FLAG(inner)             :=  l_tax_lines_tbl.TAX_ONLY_LINE_FLAG(l_index);
1489               x_tax_lines_tbl.INCLUSIVE_TAX_LINE_FLAG(inner)        :=  l_tax_lines_tbl.INCLUSIVE_TAX_LINE_FLAG(l_index);
1490               x_tax_lines_tbl.LINE_AMT_INCLUDES_TAX_FLAG(inner)     :=  l_tax_lines_tbl.LINE_AMT_INCLUDES_TAX_FLAG(l_index);
1491               x_tax_lines_tbl.USE_TAX_FLAG(inner)                   :=  l_tax_lines_tbl.USE_TAX_FLAG(l_index);
1492               x_tax_lines_tbl.USER_OVERRIDE_FLAG(inner)             :=  l_tax_lines_tbl.USER_OVERRIDE_FLAG(l_index);
1493               x_tax_lines_tbl.LAST_MANUAL_ENTRY(inner)              :=  l_tax_lines_tbl.LAST_MANUAL_ENTRY(l_index);
1494               x_tax_lines_tbl.MANUALLY_ENTERED_FLAG(inner)          :=  l_tax_lines_tbl.MANUALLY_ENTERED_FLAG(l_index);
1495               x_tax_lines_tbl.REGISTRATION_PARTY_TYPE(inner)        :=  l_tax_lines_tbl.REGISTRATION_PARTY_TYPE(l_index);
1496               x_tax_lines_tbl.PARTY_TAX_REG_NUMBER(inner)           :=  l_tax_lines_tbl.PARTY_TAX_REG_NUMBER(l_index);
1497               x_tax_lines_tbl.THIRD_PARTY_TAX_REG_NUMBER(inner)     :=  l_tax_lines_tbl.THIRD_PARTY_TAX_REG_NUMBER(l_index);
1498               x_tax_lines_tbl.THRESHOLD_INDICATOR_FLAG(inner)       :=  l_tax_lines_tbl.THRESHOLD_INDICATOR_FLAG(l_index);
1499               x_tax_lines_tbl.STATE(inner)                          :=  l_tax_lines_tbl.STATE(l_index);
1500               x_tax_lines_tbl.COUNTY(inner)                         :=  l_tax_lines_tbl.COUNTY(l_index);
1501               x_tax_lines_tbl.CITY(inner)                           :=  l_tax_lines_tbl.CITY(l_index);
1502               --bug7140895
1503               x_tax_lines_tbl.global_attribute_category(inner)      :=  l_tax_lines_tbl.global_attribute_category(l_index);
1504               x_tax_lines_tbl.global_attribute2(inner)              :=  l_tax_lines_tbl.global_attribute2(l_index);
1505               x_tax_lines_tbl.global_attribute4(inner)              :=  l_tax_lines_tbl.global_attribute4(l_index);
1506               x_tax_lines_tbl.global_attribute6(inner)              :=  l_tax_lines_tbl.global_attribute6(l_index);
1507             END LOOP;
1508             cnt := cnt + l_tax_lines_tbl.transaction_line_id.COUNT;
1509           END IF; -- Allocate Tax Only Adjustment Check
1510         END IF; -- Document Level Action Validation
1511       END LOOP; -- Processing the data exists in pg variables
1512     END IF; -- The rows returned by the view
1513     EXIT WHEN item_lines_to_be_processed%NOTFOUND;
1514   END LOOP;
1515   CLOSE item_lines_to_be_processed;
1516 
1517   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1518     FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1519   END IF;
1520 Exception
1521   when others then
1522     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1523       FND_LOG.STRING(g_level_unexpected,G_MODULE_NAME||l_api_name,sqlerrm);
1524     END IF;
1525     x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1526     g_string :='Not compaitable to VERTEX Release';
1527     error_exception_handle(g_string);
1528     x_messages_tbl:=g_messages_tbl;
1529     return;
1530 END CALCULATE_TAX_API;
1531 
1532 PROCEDURE SET_DOCUMENT_TYPE( P_DOCUMENT_TYPE  IN OUT NOCOPY VARCHAR2,
1533            P_ADJ_DOC_TRX_ID IN NUMBER,
1534            P_LINE_AMOUNT    IN NUMBER,
1535            p_LINE_LEVEL_ACTION IN VARCHAR2,
1536            x_return_status  OUT NOCOPY VARCHAR2)IS
1537 l_api_name           CONSTANT VARCHAR2(30) := 'SET_DOCUMENT_TYPE';
1538 BEGIN
1539    x_return_status := FND_API.G_RET_STS_SUCCESS;
1540 
1541    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1542      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1543     END IF;
1544 
1545    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1546        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_DOCUMENT_TYPE : '||P_DOCUMENT_TYPE );
1547        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_ADJ_DOC_TRX_ID : '||P_ADJ_DOC_TRX_ID );
1548        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_LINE_LEVEL_ACTION : '||p_line_level_action );
1549        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_LINE_AMOUNT : '||P_LINE_AMOUNT );
1550    END IF;
1551 
1552    IF (p_document_type = 'CREDIT_MEMO') THEN
1553       IF (p_adj_doc_trx_id is not null) THEN
1554          IF p_line_amount = 0 THEN
1555             p_document_type :='TAX_ONLY_CREDIT_MEMO';
1556          ELSIF p_line_level_action = 'RECORD_WITH_NO_TAX' THEN
1557          --ELSIF (pg_allow_tax_calc_tab(I) ='N') THEN
1558             p_document_type :='LINE_ONLY_CREDIT_MEMO';
1559          ELSE
1560             p_document_type :='APPLIED_CREDIT_MEMO';
1561          END IF;     /*LINE_AMOUNT*/
1562       ELSE
1563         p_document_type :='ON_ACCT_CREDIT_MEMO';
1564       END IF;     /*ADJ_DOC_TRX_ID*/
1565    END IF;     /*'CREDIT_MEMO*/
1566 
1567    IF (p_document_type = 'INVOICE') THEN
1568       IF (p_line_amount = 0 AND p_line_level_action = 'LINE_INFO_TAX_ONLY') THEN
1569          p_document_type :='TAX_ONLY_INVOICE';
1570       END IF;
1571    END IF;/*INVOICE*/
1572 
1573    IF (p_document_type = 'INVOICE_ADJUSTMENT') THEN
1574       IF (p_line_amount = 0) THEN
1575          p_document_type := 'TAX_ONLY_ADJUSTMENT';
1576       END IF;
1577    END IF;     /*INVOICE_ADJUSTMENT*/
1578 
1579    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1580       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1581    END IF;
1582 
1583 End SET_DOCUMENT_TYPE;
1584 
1585 PROCEDURE PERFORM_VALIDATE(x_return_status OUT NOCOPY VARCHAR2) is
1586 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_VALIDATE';
1587 
1588 Begin
1589   x_return_status := FND_API.G_RET_STS_SUCCESS;
1590 
1591     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1592      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1593     END IF;
1594 
1595     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1596        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_DOC_LEVEL_ACTION_TAB(i)  :  '||pg_doc_level_action_tab(i));
1597        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_LINE_LEVEL_ACTION_TAB(i) : '||pg_line_level_action_tab(i));
1598     END IF;
1599 
1600       if(pg_doc_level_action_tab(i) = 'CREATE') Then
1601          if(pg_line_level_action_tab(i) NOT IN ('CREATE', 'QUOTE','SYNCHRONIZE','RECORD_WITH_NO_TAX')) Then
1602        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1603                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1604              END IF;
1605             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1606          end if;
1607       elsif(pg_doc_level_action_tab(i) = 'QUOTE') Then
1608          if(pg_line_level_action_tab(i) NOT IN ('QUOTE')) Then
1609              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1610                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1611              END IF;
1612             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1613          end if;
1614       elsif(pg_doc_level_action_tab(i) = 'UPDATE') Then
1615           if(pg_line_level_action_tab(i) NOT IN ('CREATE', 'UPDATE', 'QUOTE', 'CANCEL', 'DELETE', 'SYNCHRONIZE','RECORD_WITH_NO_TAX')) Then
1616              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1617                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1618              END IF;
1619             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1620           end if;
1621       else
1622           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1623                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown header level action');
1624           END IF;
1625       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1626     end if;
1627 
1628     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1629      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1630     END IF;
1631 End PERFORM_VALIDATE;
1632 
1633 PROCEDURE PERFORM_LINE_CREATION(p_tax_lines_tbl OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
1634         p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
1635         x_return_status     OUT NOCOPY VARCHAR2)is
1636 
1637 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_LINE_CREATION';
1638 l_return_status               VARCHAR2(30);
1639 Begin
1640    x_return_status := FND_API.G_RET_STS_SUCCESS;
1641 
1642    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1643      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1644    END IF;
1645 
1646    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1647        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Value of Variable I is'|| I );
1648    END IF;
1649 
1650    reset_parameters(l_return_status);
1651    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1652           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1653                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1654           END IF;
1655      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1656      g_string :='Failed in RESET_PARAMETERS procedure';
1657      error_exception_handle(g_string);
1658      return;
1659    END IF;
1660 
1661    l_line_level_action := 'CREATE';
1662    set_parameters(l_return_status);
1663    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1664           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1665                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1666           END IF;
1667      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1668      g_string :='Failed in SET_PRAMETERS procedure';
1669      error_exception_handle(g_string);
1670      return;
1671    END IF;
1672 
1673    calculate_tax(l_return_status);
1674    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1675           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1676                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1677           END IF;
1678      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1679      g_string :='Failed in CALCULATE_TAX Procedure ';
1680      error_exception_handle(g_string);
1681      return;
1682    END IF;
1683 
1684    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1685         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME,
1686         'pg_line_level_action_tab(i)  : '|| pg_line_level_action_tab(i));
1687    END IF;
1688 
1689    IF (pg_line_level_action_tab(i)<>'QUOTE') THEN
1690       write_to_vertex_repository(l_return_status);
1691       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1692           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1693                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1694           END IF;
1695      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1696      g_string :='Failed in WRITE_TO_VERTEX_REPOSITORY Procedure ';
1697      error_exception_handle(g_string);
1698      return;
1699       END IF;
1700    END IF;
1701 
1702 /*Vertex returned values need to be written back to zx_repository.*/
1703    tax_results_processing(p_tax_lines_tbl,p_currency_tab,l_return_status);
1704    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1705           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1706                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1707           END IF;
1708      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1709      g_string :='Failed in TAX_RESULTS_PROCESSING procedure';
1710      error_exception_handle(g_string);
1711      return;
1712    END IF;
1713 
1714 
1715    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1716      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1717    END IF;
1718 
1719 End PERFORM_LINE_CREATION;
1720 
1721 PROCEDURE PERFORM_LINE_DELETION(x_return_status OUT NOCOPY VARCHAR2) is
1722  l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_LINE_DELETION';
1723  l_return_status               VARCHAR2(30);
1724 Begin
1725   x_return_status := FND_API.G_RET_STS_SUCCESS;
1726 
1727    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1728      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1729    END IF;
1730        /*ZX_VTX_USER_PKG.g_line_negation := TRUE;
1731        ZX_VTX_USER_PKG.g_trx_line_id := pg_trx_line_id_tab(I);*/
1732 
1733       reset_parameters(l_return_status);
1734 
1735    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1736           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1737                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1738           END IF;
1739      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1740      g_string :='Failed in RESET_PARAMETERS Procedure';
1741      error_exception_handle(g_string);
1742      return;
1743    END IF;
1744        set_parameters(l_return_status);
1745 
1746    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1747           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1748                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1749           END IF;
1750      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1751      g_string :='Failed in SET_PARAMETERS procedure';
1752      error_exception_handle(g_string);
1753      return;
1754    END IF;
1755        calculate_tax(l_return_status);
1756    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1757           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1758                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1759           END IF;
1760      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1761      g_string :='Failed in CALCULATE_TAX procedure';
1762      error_exception_handle(g_string);
1763      return;
1764    END IF;
1765     write_to_vertex_repository(l_return_status);
1766    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1767           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1768                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1769           END IF;
1770      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1771      g_string :='Failed in WRITE_TO_VERTEX_REPOSITORY procedure';
1772      error_exception_handle(g_string);
1773      return;
1774    END IF;
1775 
1776    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1777      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1778    END IF;
1779 End PERFORM_LINE_DELETION;
1780 
1781 
1782 PROCEDURE PERFORM_UPDATE       (p_tax_lines_tbl OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
1783         p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
1784         x_return_status     OUT NOCOPY VARCHAR2) is
1785 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_UPDATE';
1786 l_return_status               VARCHAR2(30);
1787 l_application_id              NUMBER;
1788 l_ver_count                   NUMBER(10);
1789 Begin
1790    x_return_status := FND_API.G_RET_STS_SUCCESS;
1791 
1792    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1793      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1794    END IF;
1795 
1796    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1797        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_LINE_LEVEL_ACTION_TAB(i)'||pg_line_level_action_tab(i) );
1798    END IF;
1799 
1800       if (pg_line_level_action_tab(i) in ('CREATE','QUOTE')) Then
1801 
1802          l_line_level_action := 'CREATE';
1803              perform_line_creation(p_tax_lines_tbl,p_currency_tab,l_return_status);
1804 
1805      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1806     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1807       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1808           END IF;
1809     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1810     g_string :='Failed in PERFORM_LINE_CREATION procedure';
1811     error_exception_handle(g_string);
1812     return;
1813      END IF;
1814 
1815   elsif(pg_line_level_action_tab(i) in ('UPDATE')) Then
1816            /*First make contra entry*/
1817     BEGIN
1818       SELECT APPLICATION_ID
1819         INTO l_application_id
1820         FROM ZX_PRVDR_LINE_EXTNS_GT
1821        WHERE ROWNUM = 1;
1822     EXCEPTION
1823       WHEN OTHERS THEN
1824         l_application_id := NULL;
1825     END;
1826     IF l_application_id IS NOT NULL THEN
1827       BEGIN
1828         SELECT Count(*)
1829           INTO l_ver_count
1830           FROM ZX_LINES
1831          WHERE APPLICATION_ID = l_application_id
1832            AND TRX_ID = pg_trx_id_tab(I)
1833            AND TRX_LINE_ID = pg_trx_line_id_tab(I)
1834            AND TAX_PROVIDER_ID IS NOT NULL;
1835       EXCEPTION
1836         WHEN OTHERS THEN
1837           l_ver_count := 0;
1838       END;
1839     END IF;
1840     IF l_ver_count <> 0 THEN
1841         l_line_level_action := 'NEGATE';
1842   perform_line_deletion(l_return_status);
1843 
1844   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1845     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1846             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1847     END IF;
1848     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1849     g_string :='Failed in PERFORM_LINE_DELETION procedure';
1850     error_exception_handle(g_string);
1851     return;
1852   END IF;
1853      END IF;
1854     /*For new line*/
1855      --  l_line_level_action := 'CREATE';
1856      perform_line_creation(p_tax_lines_tbl,p_currency_tab,l_return_status);
1857 
1858      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1859   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1860         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1861   END IF;
1862   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1863   g_string :='Failed in PERFORM_LINE_CREATION procedure';
1864   error_exception_handle(g_string);
1865   return;
1866      END IF;
1867 
1868       elsif(pg_line_level_action_tab(i) in ('DELETE','CANCEL')) Then
1869           l_line_level_action := pg_line_level_action_tab(i);
1870           perform_line_deletion(l_return_status);
1871            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1872     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1873       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
1874           END IF;
1875     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1876     g_string :='Failed in PERFORM_LINE_DELETION procedure';
1877     error_exception_handle(g_string);
1878     return;
1879      END IF;
1880         else
1881              Null;/*Need to add for  SYNCHRONIZE */
1882       end if;/*Line level operation*/
1883 
1884     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1885      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1886     END IF;
1887 
1888 End PERFORM_UPDATE;
1889 
1890 PROCEDURE GET_TAX_JUR_CODE(p_location_id           IN  NUMBER,
1891                            p_situs                 IN  VARCHAR2,
1892                            p_tax                   IN  VARCHAR2,
1893                            p_regime_code           IN  VARCHAR2,
1894                            p_inv_date              IN  DATE,
1895                            x_tax_jurisdiction_code  OUT NOCOPY  VARCHAR2,
1896                            x_return_status         OUT NOCOPY  VARCHAR2) IS
1897 
1898 l_api_name             CONSTANT VARCHAR2(30) := 'GET_TAX_JUR_CODE';
1899 x_tax_jurisdiction_rec ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_type;
1900 x_jurisdictions_found  VARCHAR2(20);
1901 l_return_status        VARCHAR2(30);
1902 
1903 BEGIN
1904    x_return_status := FND_API.G_RET_STS_SUCCESS;
1905 
1906    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1907      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1908    END IF;
1909 
1910    ZX_TCM_GEO_JUR_PKG.get_tax_jurisdictions
1911            (p_location_id                 ,
1912             p_situs                       ,
1913                  p_tax                         ,
1914                        p_regime_code         ,
1915             p_inv_date                  ,
1916             x_tax_jurisdiction_rec         ,
1917             x_jurisdictions_found         ,
1918             x_return_status
1919            );
1920    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1921       IF (g_level_exception >= g_current_runtime_level ) THEN
1922                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1923       END IF;
1924     -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1925       g_string :='Not able to find Jurisdiction';
1926       error_exception_handle(g_string);
1927       RETURN;
1928    END IF;
1929 
1930    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1931       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1932           'x_jurisdictions_found :'||x_jurisdictions_found);
1933       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1934           'x_tax_jurisdiction_rec.tax_jurisdiction_code :'||x_tax_jurisdiction_rec.tax_jurisdiction_code);
1935    END IF;
1936 
1937    IF x_jurisdictions_found = 'Y' THEN
1938       IF x_tax_jurisdiction_rec.tax_jurisdiction_code IS NOT NULL THEN
1939          x_tax_jurisdiction_code := x_tax_jurisdiction_rec.tax_jurisdiction_code;
1940       ELSE
1941          BEGIN
1942             SELECT tax_jurisdiction_code
1943             INTO x_tax_jurisdiction_code
1944             FROM (
1945             SELECT tax_jurisdiction_code
1946               FROM zx_jurisdictions_gt
1947              WHERE tax_regime_code = p_regime_code
1948                AND tax = p_tax
1949                AND substr(tax_jurisdiction_code, 4) BETWEEN '000000000' and '999999999'
1950                AND precedence_level = (SELECT max(precedence_level)
1951                                          FROM zx_jurisdictions_gt
1952                                         WHERE tax_regime_code = p_regime_code
1953                                           AND   substr(tax_jurisdiction_code, 4) BETWEEN '000000000' and '999999999'
1954                                           AND tax = p_tax)
1955             ORDER BY tax_jurisdiction_code)
1956             WHERE rownum = 1 ;
1957          END;
1958       END IF;
1959    END IF;
1960 
1961    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1962       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1963    END IF;
1964 
1965 END GET_TAX_JUR_CODE;
1966 
1967 
1968 PROCEDURE SET_PARAMETERS(x_return_status OUT NOCOPY VARCHAR2) IS
1969 
1970  /*Following variables used during line deletion process.*/
1971   arp_line_amount     ZX_PTNR_NEG_LINE_GT.line_amt%type;
1972   arp_quantity        ZX_PTNR_NEG_LINE_GT.trx_line_quantity%type;
1973   arp_trx_id      ZX_PTNR_NEG_LINE_GT.trx_id%type;
1974   arp_trx_number      ZX_PTNR_NEG_LINE_GT.trx_number%type;
1975   arp_trx_date      ZX_PTNR_NEG_LINE_GT.trx_date%type;
1976   arp_exemption_control_flag   ZX_PTNR_NEG_LINE_GT.exemption_control_flag%type;
1977   arp_ship_to_grphy_type1        VARCHAR2(30);
1978   arp_ship_to_grphy_value1      VARCHAR2(30);
1979   arp_ship_to_grphy_type2             VARCHAR2(30);
1980   arp_ship_to_grphy_value2            VARCHAR2(30);
1981   arp_ship_to_grphy_type3             VARCHAR2(30);
1982   arp_ship_to_grphy_value3            VARCHAR2(30);
1983   arp_ship_to_grphy_type4             VARCHAR2(30);
1984   arp_ship_to_grphy_value4            VARCHAR2(30);
1985   arp_ship_to_grphy_type5             VARCHAR2(30);
1986   arp_ship_to_grphy_value5            VARCHAR2(30);
1987   arp_ship_to_grphy_type6             VARCHAR2(30);
1988   arp_ship_to_grphy_value6            VARCHAR2(30);
1989   arp_ship_to_grphy_type7             VARCHAR2(30);
1990   arp_ship_to_grphy_value7            VARCHAR2(30);
1991   arp_ship_to_grphy_type8             VARCHAR2(30);
1992   arp_ship_to_grphy_value8            VARCHAR2(30);
1993   arp_ship_to_grphy_type9             VARCHAR2(30);
1994   arp_ship_to_grphy_value9            VARCHAR2(30);
1995   arp_ship_to_grphy_type10            VARCHAR2(30);
1996   arp_ship_to_grphy_value10           VARCHAR2(30);
1997   arp_ship_from_grphy_type1           VARCHAR2(30);
1998   arp_ship_from_grphy_value1          VARCHAR2(30);
1999   arp_ship_from_grphy_type2           VARCHAR2(30);
2000   arp_ship_from_grphy_value2          VARCHAR2(30);
2001   arp_ship_from_grphy_type3           VARCHAR2(30);
2002   arp_ship_from_grphy_value3          VARCHAR2(30);
2003   arp_ship_from_grphy_type4           VARCHAR2(30);
2004   arp_ship_from_grphy_value4          VARCHAR2(30);
2005   arp_ship_from_grphy_type5           VARCHAR2(30);
2006   arp_ship_from_grphy_value5          VARCHAR2(30);
2007   arp_ship_from_grphy_type6           VARCHAR2(30);
2008   arp_ship_from_grphy_value6          VARCHAR2(30);
2009   arp_ship_from_grphy_type7           VARCHAR2(30);
2010   arp_ship_from_grphy_value7          VARCHAR2(30);
2011   arp_ship_from_grphy_type8           VARCHAR2(30);
2012   arp_ship_from_grphy_value8          VARCHAR2(30);
2013   arp_ship_from_grphy_type9           VARCHAR2(30);
2014   arp_ship_from_grphy_value9          VARCHAR2(30);
2015   arp_ship_from_grphy_type10          VARCHAR2(30);
2016   arp_ship_from_grphy_value10         VARCHAR2(30);
2017   /*arp_poa_grphy_type1                 VARCHAR2(30);
2018   arp_poa_grphy_value1                VARCHAR2(30);
2019   arp_poa_grphy_type2                 VARCHAR2(30);
2020   arp_poa_grphy_value2                VARCHAR2(30);
2021   arp_poa_grphy_type3                 VARCHAR2(30);
2022   arp_poa_grphy_value3                VARCHAR2(30);
2023   arp_poa_grphy_type4                 VARCHAR2(30);
2024   arp_poa_grphy_value4                VARCHAR2(30);
2025   arp_poa_grphy_type5                 VARCHAR2(30);
2026   arp_poa_grphy_value5                VARCHAR2(30);
2027   arp_poa_grphy_type6                 VARCHAR2(30);
2028   arp_poa_grphy_value6                VARCHAR2(30);
2029   arp_poa_grphy_type7                 VARCHAR2(30);
2030   arp_poa_grphy_value7                VARCHAR2(30);
2031   arp_poa_grphy_type8                 VARCHAR2(30);
2032   arp_poa_grphy_value8                VARCHAR2(30);
2033   arp_poa_grphy_type9                 VARCHAR2(30);
2034   arp_poa_grphy_value9                VARCHAR2(30);
2035   arp_poa_grphy_type10                VARCHAR2(30);
2036   arp_poa_grphy_value10               VARCHAR2(30);
2037   arp_poo_grphy_type1                 VARCHAR2(30);
2038   arp_poo_grphy_value1                VARCHAR2(30);
2039   arp_poo_grphy_type2                 VARCHAR2(30);
2040   arp_poo_grphy_value2                VARCHAR2(30);
2041   arp_poo_grphy_type3                 VARCHAR2(30);
2042   arp_poo_grphy_value3                VARCHAR2(30);
2043   arp_poo_grphy_type4                 VARCHAR2(30);
2044   arp_poo_grphy_value4                VARCHAR2(30);
2045   arp_poo_grphy_type5                 VARCHAR2(30);
2046   arp_poo_grphy_value5                VARCHAR2(30);
2047   arp_poo_grphy_type6                 VARCHAR2(30);
2048   arp_poo_grphy_value6                VARCHAR2(30);
2049   arp_poo_grphy_type7                 VARCHAR2(30);
2050   arp_poo_grphy_value7                VARCHAR2(30);
2051   arp_poo_grphy_type8                 VARCHAR2(30);
2052   arp_poo_grphy_type9                 VARCHAR2(30);
2053   arp_poo_grphy_value9                VARCHAR2(30);
2054   arp_poo_grphy_type10                VARCHAR2(30);
2055   arp_poo_grphy_value10               VARCHAR2(30);*/
2056   arp_bill_to_grphy_type1             VARCHAR2(30);
2057   arp_bill_to_grphy_value1            VARCHAR2(30);
2058   arp_bill_to_grphy_type2             VARCHAR2(30);
2059   arp_bill_to_grphy_value2            VARCHAR2(30);
2060   arp_bill_to_grphy_type3             VARCHAR2(30);
2061   arp_bill_to_grphy_value3            VARCHAR2(30);
2062   arp_bill_to_grphy_type4             VARCHAR2(30);
2063   arp_bill_to_grphy_value4            VARCHAR2(30);
2064   arp_bill_to_grphy_type5             VARCHAR2(30);
2065   arp_bill_to_grphy_value5            VARCHAR2(30);
2066   arp_bill_to_grphy_type6             VARCHAR2(30);
2067   arp_bill_to_grphy_value6            VARCHAR2(30);
2068   arp_bill_to_grphy_type7             VARCHAR2(30);
2069   arp_bill_to_grphy_value7            VARCHAR2(30);
2070   arp_bill_to_grphy_type8             VARCHAR2(30);
2071   arp_bill_to_grphy_value8            VARCHAR2(30);
2072   arp_bill_to_grphy_type9             VARCHAR2(30);
2073   arp_bill_to_grphy_value9            VARCHAR2(30);
2074   arp_bill_to_grphy_type10            VARCHAR2(30);
2075   arp_bill_to_grphy_value10           VARCHAR2(30);
2076   arp_bill_from_grphy_type1           VARCHAR2(30);
2077   arp_bill_from_grphy_value1          VARCHAR2(30);
2078   arp_bill_from_grphy_type2           VARCHAR2(30);
2079   arp_bill_from_grphy_value2          VARCHAR2(30);
2080   arp_bill_from_grphy_type3           VARCHAR2(30);
2081   arp_bill_from_grphy_value3          VARCHAR2(30);
2082   arp_bill_from_grphy_type4           VARCHAR2(30);
2083   arp_bill_from_grphy_value4          VARCHAR2(30);
2084   arp_bill_from_grphy_type5           VARCHAR2(30);
2085   arp_bill_from_grphy_value5          VARCHAR2(30);
2086   arp_bill_from_grphy_type6           VARCHAR2(30);
2087   arp_bill_from_grphy_value6          VARCHAR2(30);
2088   arp_bill_from_grphy_type7           VARCHAR2(30);
2089   arp_bill_from_grphy_value7          VARCHAR2(30);
2090   arp_bill_from_grphy_type8           VARCHAR2(30);
2091   arp_bill_from_grphy_value8          VARCHAR2(30);
2092   arp_bill_from_grphy_type9           VARCHAR2(30);
2093   arp_bill_from_grphy_value9          VARCHAR2(30);
2094   arp_bill_from_grphy_type10          VARCHAR2(30);
2095   arp_bill_from_grphy_value10         VARCHAR2(30);
2096   arp_trx_line_type        VARCHAR2(30);
2097   arp_product_code        VARCHAR2(150);
2098   arp_cert_num          VARCHAR2(30);
2099   arp_state_exempt_reason        VARCHAR2(30);
2100   arp_county_exempt_reason       VARCHAR2(30);
2101   arp_city_exempt_reason        VARCHAR2(30);
2102   arp_district_exempt_rs        VARCHAR2(30);
2103   arp_audit_flag          VARCHAR2(30);
2104   arp_ship_to_add          VARCHAR2(30);
2105   arp_ship_from_add        VARCHAR2(30);
2106   arp_poa_add_code        VARCHAR2(30);
2107   arp_customer_code        VARCHAR2(30);
2108   arp_customer_class        VARCHAR2(30);
2109   arp_company_code        VARCHAR2(30);
2110   arp_division_code        VARCHAR2(30);
2111   arp_state_exempt_percent      NUMBER;
2112   arp_county_exempt_pct        NUMBER;
2113   arp_city_exempt_pct          NUMBER;
2114   arp_district_exempt_pct        NUMBER;
2115   arp_transaction_date        DATE;
2116   arp_adjusted_doc_date        DATE;
2117 
2118   l_location_info_rec location_info_rec_type;
2119   l_api_name           CONSTANT VARCHAR2(30) := 'SET_PARAMETERS';
2120 BEGIN
2121    x_return_status := FND_API.G_RET_STS_SUCCESS;
2122 
2123    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2124       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
2125    END IF;
2126 
2127    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2128       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'L_LINE_LEVEL_ACTION :'||l_line_level_action);
2129       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Value of I is :'||I);
2130    END IF;
2131 
2132    IF (l_line_level_action IN ('CREATE','DELETE','CANCEL')) THEN
2133       IF substrb(nvl(pg_Line_char10_tab(I),'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2134          inv_in_rec.fJurisSFGeoCd := null;
2135     inv_in_rec.fJurisSFInCi  := null;
2136       ELSE
2137          inv_in_rec.fJurisSFGeoCd  := to_number(substrb(pg_Line_char10_tab(I), 2, 9));
2138     inv_in_rec.fJurisSFInCi        := case substrb(pg_Line_char10_tab(I), 1, 1)
2139                                            when 'X'  then NULL
2140                     when '1'  then TRUE
2141              when '0'  then FALSE
2142              else  NULL
2143              end ;
2144       END IF;
2145       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2146          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisSFGeoCd : '||to_char(inv_in_rec.fJurisSFGeoCd) );
2147          -- FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisSFInCi :'||inv_in_rec.fJurisSFInCi );
2148       END IF;
2149 
2150       IF substrb(nvl(pg_Line_char9_tab(I),'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2151          inv_in_rec.fJurisSTGeoCd := null;
2152       ELSE
2153          inv_in_rec.fJurisSTGeoCd := to_number(substrb(pg_Line_char9_tab(I), 2, 9));
2154       END IF;
2155       inv_in_rec.fJurisSTInCi  := case substrb(pg_Line_char9_tab(I), 1, 1)
2156                                     when 'X'  then NULL
2157                                     when '1'  then TRUE
2158                                     when '0'  then FALSE
2159                                     else  NULL
2160                                   end ;
2161 
2162       IF substrb(nvl(pg_Line_char11_tab(I),'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2163          inv_in_rec.fJurisOAGeoCd := null;
2164          inv_in_rec.fJurisOAInCi  := null;
2165       ELSE
2166   inv_in_rec.fJurisOAGeoCd  := to_number(substrb(pg_Line_char11_tab(I), 2, 9));
2167   inv_in_rec.fJurisOAInCi         := case substrb(pg_Line_char11_tab(I), 1, 1)
2168                                                   when 'X'  then NULL
2169               when '1'  then TRUE
2170               when '0'  then FALSE
2171               else  NULL
2172               end ;
2173       END IF;
2174     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2175          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisOAGeoCd : '||to_char(inv_in_rec.fJurisOAGeoCd ));
2176   -- FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisOAInCi :'||inv_in_rec.fJurisOAInCi);
2177     END IF;
2178 
2179    IF (l_line_level_action IN ('CREATE', 'DELETE')) THEN
2180       inv_in_rec.fTDMCustCd := pg_Line_char12_tab(I);
2181    ELSE
2182       /*
2183       BEGIN
2184          SELECT pty.party_number
2185            INTO inv_in_rec.fTDMCustCd
2186            FROM hz_parties pty,
2187                 zx_party_tax_profile ptp
2188           WHERE ptp.party_tax_profile_id = bill_to_party_tax_id_tab(i)
2189             AND ptp.party_id = pty.party_id;
2190       EXCEPTION WHEN OTHERS THEN
2191          inv_in_rec.fTDMCustCd := NULL;
2192       END;
2193       */
2194       null;
2195    END IF;
2196    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2197          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCustCd : '||inv_in_rec.fTDMCustCd );
2198    END IF;
2199 
2200    inv_in_rec.fTDMCustClassCd  := pg_Line_char13_tab(I);
2201    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2202    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCustClassCd :'||inv_in_rec.fTDMCustClassCd );
2203    END IF;
2204 
2205    inv_in_rec.fTDMCompCd    := pg_Line_char14_tab(I);
2206    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2207    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCompCd :'||inv_in_rec.fTDMCompCd );
2208    END IF;
2209 
2210    inv_in_rec.fInvIdNum    := pg_trx_number_tab(I);
2211    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2212    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fInvIdNum :'||inv_in_rec.fInvIdNum );
2213    END IF;
2214 
2215    inv_in_rec.fTDMDivCd    := pg_Line_char15_tab(I);
2216    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2217    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMDivCd :'||inv_in_rec.fTDMDivCd );
2218    END IF;
2219 
2220    /*-----------------------------------------------------------
2221     | The transaction type identifies the type of transaction  |
2222     | being processed.           |
2223     -----------------------------------------------------------*/
2224    IF pg_Line_char1_tab(I) = 'PURCHASE' THEN
2225            line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypePurchase;
2226    ELSIF pg_Line_char1_tab(I) = 'RENTAL' THEN
2227               line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeRentLease;
2228    ELSIF pg_Line_char1_tab(I) = 'LEASE' THEN
2229               line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeRentLease;
2230    ELSIF pg_Line_char1_tab(I) = 'SALE' THEN
2231               line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeSale;
2232    ELSIF pg_Line_char1_tab(I) = 'SERVICE' THEN
2233               line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeService;
2234    END IF;
2235    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2236    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransType :'||to_char(line_in_tab(1).fTransType));
2237    END IF;
2238 
2239    line_in_tab(1).fTransDate    := pg_line_date1_tab(i);
2240    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2241          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransDate : '||to_char(line_in_tab(1).fTransDate));
2242    END IF;
2243 
2244    line_in_tab(1).fTransUserArea  := to_char(pg_Trx_id_tab(I));
2245    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2246    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransUserArea :'||line_in_tab(1).fTransUserArea );
2247    END IF;
2248 
2249    line_in_tab(1).fTDMProdCd  := substrb(pg_Line_char2_tab(I),1,32); --14120013
2250    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2251    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTDMProdCd   :'  ||line_in_tab(1).fTDMProdCd );
2252    END IF;
2253 
2254 
2255 
2256    ELSE /*Line level action is delete*/
2257      SELECT line_amt,
2258            trx_line_quantity,
2259            trx_id,
2260            trx_number,
2261            ship_to_geography_type1,
2262            ship_to_geography_value1,
2263            ship_to_geography_type2,
2264            ship_to_geography_value2,
2265            ship_to_geography_type3,
2266            ship_to_geography_value3,
2267            ship_to_geography_type4,
2268            ship_to_geography_value4,
2269            ship_to_geography_type5,
2270            ship_to_geography_value5,
2271            ship_to_geography_type6,
2272            ship_to_geography_value6,
2273            ship_to_geography_type7,
2274            ship_to_geography_value7,
2275            ship_to_geography_type8,
2276            ship_to_geography_value8,
2277            ship_to_geography_type9,
2278            ship_to_geography_value9,
2279            ship_to_geography_type10,
2280            ship_to_geography_value10,
2281            ship_from_geography_type1,
2282            ship_from_geography_value1,
2283            ship_from_geography_type2,
2284            ship_from_geography_value2,
2285            ship_from_geography_type3,
2286            ship_from_geography_value3,
2287            ship_from_geography_type4,
2288            ship_from_geography_value4,
2289            ship_from_geography_type5,
2290            ship_from_geography_value5,
2291            ship_from_geography_type6,
2292            ship_from_geography_value6,
2293            ship_from_geography_type7,
2294            ship_from_geography_value7,
2295            ship_from_geography_type8,
2296            ship_from_geography_value8,
2297            ship_from_geography_type9,
2298            ship_from_geography_value9,
2299            ship_from_geography_type10,
2300            ship_from_geography_value10,
2301            /*poa_geography_type1,
2302            poa_geography_value1,
2303            poa_geography_type2,
2304            poa_geography_value2,
2305            poa_geography_type3,
2306            poa_geography_value3,
2307            poa_geography_type4,
2308            poa_geography_value4,
2309            poa_geography_type5,
2310            poa_geography_value5,
2311            poa_geography_type6,
2312            poa_geography_value6,
2313            poa_geography_type7,
2314            poa_geography_value7,
2315            poa_geography_type8,
2316            poa_geography_value8,
2317            poa_geography_type9,
2318            poa_geography_value9,
2319            poa_geography_type10,
2320            poa_geography_value10,
2321            poo_geography_type1,
2322            poo_geography_value1,
2323            poo_geography_type2,
2324            poo_geography_value2,
2325            poo_geography_type3,
2326            poo_geography_value3,
2327            poo_geography_type4,
2328            poo_geography_value4,
2329            poo_geography_type5,
2330            poo_geography_value5,
2331            poo_geography_type6,
2332            poo_geography_value6,
2333            poo_geography_type7,
2334            poo_geography_value7,
2335            poo_geography_type8,
2336            poo_geography_type9,
2337            poo_geography_value9,
2338            poo_geography_type10,
2339            poo_geography_value10,*/
2340            bill_to_geography_type1,
2341            bill_to_geography_value1,
2342            bill_to_geography_type2,
2343            bill_to_geography_value2,
2344            bill_to_geography_type3,
2345            bill_to_geography_value3,
2346            bill_to_geography_type4,
2347            bill_to_geography_value4,
2348            bill_to_geography_type5,
2349            bill_to_geography_value5,
2350            bill_to_geography_type6,
2351            bill_to_geography_value6,
2352            bill_to_geography_type7,
2353            bill_to_geography_value7,
2354            bill_to_geography_type8,
2355            bill_to_geography_value8,
2356            bill_to_geography_type9,
2357            bill_to_geography_value9,
2358            bill_to_geography_type10,
2359            bill_to_geography_value10,
2360            bill_from_geography_type1,
2361            bill_from_geography_value1,
2362            bill_from_geography_type2,
2363            bill_from_geography_value2,
2364            bill_from_geography_type3,
2365            bill_from_geography_value3,
2366            bill_from_geography_type4,
2367            bill_from_geography_value4,
2368            bill_from_geography_type5,
2369            bill_from_geography_value5,
2370            bill_from_geography_type6,
2371            bill_from_geography_value6,
2372            bill_from_geography_type7,
2373            bill_from_geography_value7,
2374            bill_from_geography_type8,
2375            bill_from_geography_value8,
2376            bill_from_geography_type9,
2377            bill_from_geography_value9,
2378            bill_from_geography_type10,
2379            bill_from_geography_value10,
2380            LINE_EXT_VARCHAR_ATTRIBUTE1,
2381            LINE_EXT_VARCHAR_ATTRIBUTE2,
2382            LINE_EXT_VARCHAR_ATTRIBUTE3,
2383            LINE_EXT_VARCHAR_ATTRIBUTE4,
2384            LINE_EXT_VARCHAR_ATTRIBUTE5,
2385            LINE_EXT_VARCHAR_ATTRIBUTE6,
2386            LINE_EXT_VARCHAR_ATTRIBUTE7,
2387            LINE_EXT_VARCHAR_ATTRIBUTE8,
2388            LINE_EXT_VARCHAR_ATTRIBUTE9,
2389            LINE_EXT_VARCHAR_ATTRIBUTE10,
2390            LINE_EXT_VARCHAR_ATTRIBUTE11,
2391            LINE_EXT_VARCHAR_ATTRIBUTE12,
2392            LINE_EXT_VARCHAR_ATTRIBUTE13,
2393            LINE_EXT_VARCHAR_ATTRIBUTE14,
2394            LINE_EXT_VARCHAR_ATTRIBUTE15,
2395            LINE_EXT_NUMBER_ATTRIBUTE1,
2396            LINE_EXT_NUMBER_ATTRIBUTE2,
2397            LINE_EXT_NUMBER_ATTRIBUTE3,
2398            LINE_EXT_NUMBER_ATTRIBUTE4,
2399            LINE_EXT_DATE_ATTRIBUTE1,
2400            adjusted_doc_date,
2401            trx_date,
2402            exemption_control_flag
2403      INTO arp_line_amount,
2404           arp_quantity,
2405           arp_trx_id,
2406           arp_trx_number,
2407           arp_ship_to_grphy_type1,
2408           arp_ship_to_grphy_value1,
2409           arp_ship_to_grphy_type2,
2410           arp_ship_to_grphy_value2,
2411           arp_ship_to_grphy_type3,
2412           arp_ship_to_grphy_value3,
2413           arp_ship_to_grphy_type4,
2414           arp_ship_to_grphy_value4,
2415           arp_ship_to_grphy_type5,
2416           arp_ship_to_grphy_value5,
2417           arp_ship_to_grphy_type6,
2418           arp_ship_to_grphy_value6,
2419           arp_ship_to_grphy_type7,
2420           arp_ship_to_grphy_value7,
2421           arp_ship_to_grphy_type8,
2422           arp_ship_to_grphy_value8,
2423           arp_ship_to_grphy_type9,
2424           arp_ship_to_grphy_value9,
2425           arp_ship_to_grphy_type10,
2426           arp_ship_to_grphy_value10,
2427           arp_ship_from_grphy_type1,
2428           arp_ship_from_grphy_value1,
2429           arp_ship_from_grphy_type2,
2430           arp_ship_from_grphy_value2,
2431           arp_ship_from_grphy_type3,
2432           arp_ship_from_grphy_value3,
2433           arp_ship_from_grphy_type4,
2434           arp_ship_from_grphy_value4,
2435           arp_ship_from_grphy_type5,
2436           arp_ship_from_grphy_value5,
2437           arp_ship_from_grphy_type6,
2438           arp_ship_from_grphy_value6,
2439           arp_ship_from_grphy_type7,
2440           arp_ship_from_grphy_value7,
2441           arp_ship_from_grphy_type8,
2442           arp_ship_from_grphy_value8,
2443           arp_ship_from_grphy_type9,
2444           arp_ship_from_grphy_value9,
2445           arp_ship_from_grphy_type10,
2446           arp_ship_from_grphy_value10,
2447           /*arp_poa_grphy_type1,
2448           arp_poa_grphy_value1,
2449           arp_poa_grphy_type2,
2450           arp_poa_grphy_value2,
2451           arp_poa_grphy_type3,
2452           arp_poa_grphy_value3,
2453           arp_poa_grphy_type4,
2454           arp_poa_grphy_value4,
2455           arp_poa_grphy_type5,
2456           arp_poa_grphy_value5,
2457           arp_poa_grphy_type6,
2458           arp_poa_grphy_value6,
2459           arp_poa_grphy_type7,
2460           arp_poa_grphy_value7,
2461           arp_poa_grphy_type8,
2462           arp_poa_grphy_value8,
2463           arp_poa_grphy_type9,
2464           arp_poa_grphy_value9,
2465           arp_poa_grphy_type10,
2466           arp_poa_grphy_value10,
2467           arp_poo_grphy_type1,
2468           arp_poo_grphy_value1,
2469           arp_poo_grphy_type2,
2470           arp_poo_grphy_value2,
2471           arp_poo_grphy_type3,
2472           arp_poo_grphy_value3,
2473           arp_poo_grphy_type4,
2474           arp_poo_grphy_value4,
2475           arp_poo_grphy_type5,
2476           arp_poo_grphy_value5,
2477           arp_poo_grphy_type6,
2478           arp_poo_grphy_value6,
2479           arp_poo_grphy_type7,
2480           arp_poo_grphy_value7,
2481           arp_poo_grphy_type8,
2482           arp_poo_grphy_type9,
2483           arp_poo_grphy_value9,
2484           arp_poo_grphy_type10,
2485           arp_poo_grphy_value10,*/
2486           arp_bill_to_grphy_type1,
2487           arp_bill_to_grphy_value1,
2488           arp_bill_to_grphy_type2,
2489           arp_bill_to_grphy_value2,
2490           arp_bill_to_grphy_type3,
2491           arp_bill_to_grphy_value3,
2492           arp_bill_to_grphy_type4,
2493           arp_bill_to_grphy_value4,
2494           arp_bill_to_grphy_type5,
2495           arp_bill_to_grphy_value5,
2496           arp_bill_to_grphy_type6,
2497           arp_bill_to_grphy_value6,
2498           arp_bill_to_grphy_type7,
2499           arp_bill_to_grphy_value7,
2500           arp_bill_to_grphy_type8,
2501           arp_bill_to_grphy_value8,
2502           arp_bill_to_grphy_type9,
2503           arp_bill_to_grphy_value9,
2504           arp_bill_to_grphy_type10,
2505           arp_bill_to_grphy_value10,
2506           arp_bill_from_grphy_type1,
2507           arp_bill_from_grphy_value1,
2508           arp_bill_from_grphy_type2,
2509           arp_bill_from_grphy_value2,
2510           arp_bill_from_grphy_type3,
2511           arp_bill_from_grphy_value3,
2512           arp_bill_from_grphy_type4,
2513           arp_bill_from_grphy_value4,
2514           arp_bill_from_grphy_type5,
2515           arp_bill_from_grphy_value5,
2516           arp_bill_from_grphy_type6,
2517           arp_bill_from_grphy_value6,
2518           arp_bill_from_grphy_type7,
2519           arp_bill_from_grphy_value7,
2520           arp_bill_from_grphy_type8,
2521           arp_bill_from_grphy_value8,
2522           arp_bill_from_grphy_type9,
2523           arp_bill_from_grphy_value9,
2524           arp_bill_from_grphy_type10,
2525           arp_bill_from_grphy_value10,
2526           arp_trx_line_type,
2527           arp_product_code,
2528           arp_cert_num,
2529           arp_state_exempt_reason,
2530           arp_county_exempt_reason,
2531           arp_city_exempt_reason,
2532           arp_district_exempt_rs,
2533           arp_audit_flag,
2534           arp_ship_to_add,
2535           arp_ship_from_add,
2536           arp_poa_add_code,
2537           arp_customer_code,
2538           arp_customer_class,
2539           arp_company_code,
2540           arp_division_code,
2541           arp_state_exempt_percent,
2542           arp_county_exempt_pct,
2543           arp_city_exempt_pct  ,
2544           arp_district_exempt_pct,
2545           arp_transaction_date,
2546           arp_adjusted_doc_date,
2547           arp_trx_date,
2548           arp_exemption_control_flag
2549      FROM  ZX_PTNR_NEG_LINE_GT
2550      WHERE trx_line_id= pg_trx_line_id_tab(I);
2551 
2552 
2553      IF substrb(nvl(arp_ship_from_add,'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2554        inv_in_rec.fJurisSFGeoCd := null;
2555        inv_in_rec.fJurisSFInCi  := null;
2556      ELSE
2557        inv_in_rec.fJurisSFGeoCd := to_number(substrb(arp_ship_from_add, 2, 9));
2558        inv_in_rec.fJurisSFInCi  := case substrb(arp_ship_from_add, 1, 1)
2559                                         when 'X'  then NULL
2560                                         when '1'  then TRUE
2561                                         when '0'  then FALSE
2562                                         else  NULL
2563                                    end ;
2564      END IF;
2565 
2566      IF substrb(nvl(arp_ship_to_add,'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2567        inv_in_rec.fJurisSTGeoCd := null;
2568        inv_in_rec.fJurisSTInCi  := null;
2569      ELSE
2570        inv_in_rec.fJurisSTGeoCd := to_number(substrb(arp_ship_to_add, 2, 9));
2571        inv_in_rec.fJurisSTInCi  := case substrb(arp_ship_to_add, 1, 1)
2572                                                  when 'X'  then NULL
2573                                                  when '1'  then TRUE
2574                                                  when '0'  then FALSE
2575                                                  else  NULL
2576                                     end ;
2577      END IF;
2578 
2579      IF substrb(nvl(arp_poa_add_code,'XXXXXXXXX'), 2,9)='XXXXXXXXX' THEN
2580        inv_in_rec.fJurisOAGeoCd := null;
2581        inv_in_rec.fJurisOAInCi  := null;
2582      ELSE
2583        inv_in_rec.fJurisOAGeoCd := to_number(substrb(arp_poa_add_code, 2, 9));
2584        inv_in_rec.fJurisOAInCi  := case substrb(arp_poa_add_code, 1, 1)
2585                                                   when 'X'  then NULL
2586                                                   when '1'  then TRUE
2587                                                   when '0'  then FALSE
2588                                                   else  NULL
2589                                     end ;
2590      END IF;
2591      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2592        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisSFGeoCd :'||inv_in_rec.fJurisSFGeoCd );
2593        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisSTGeoCd :'||inv_in_rec.fJurisSTGeoCd );
2594        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fJurisOAGeoCd :'||inv_in_rec.fJurisOAGeoCd );
2595      END IF;
2596 
2597      inv_in_rec.fTDMCustCd    :=  arp_customer_code;
2598      inv_in_rec.fTDMCustClassCd  :=  arp_customer_class;
2599      inv_in_rec.fTDMCompCd    :=  arp_company_code;     -- Bug 5007293
2600      inv_in_rec.fInvIdNum    :=  to_char(arp_trx_number);
2601      inv_in_rec.fTDMDivCd    :=  arp_division_code;
2602   --Bug Fix: 4950901
2603     /*-----------------------------------------------------------
2604      | The transaction type identifies the type of transaction  |
2605      | being processed.           |
2606      -----------------------------------------------------------*/
2607      IF arp_trx_line_type = 'PURCHASE' THEN
2608        line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypePurchase;
2609      ELSIF arp_trx_line_type = 'RENTAL' THEN
2610        line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeRentLease;
2611      ELSIF arp_trx_line_type = 'LEASE' THEN
2612        line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeRentLease;
2613      ELSIF arp_trx_line_type = 'SALE' THEN
2614        line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeSale;
2615      ELSIF arp_trx_line_type = 'SERVICE' THEN
2616        line_in_tab(1).fTransType := ZX_TAX_VERTEX_QSU.cQSUTransTypeService;
2617      END IF;
2618 
2619      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2620        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransType :'||to_char(line_in_tab(1).fTransType));
2621      END IF;
2622 --End of Bug Fix : 4950901
2623 
2624      line_in_tab(1).fTransDate    :=  arp_transaction_date;
2625      line_in_tab(1).fTransUserArea  :=  to_char(arp_trx_id);
2626      line_in_tab(1).fTDMProdCd  :=  substrb(arp_product_code,1,32);  --14120013
2627 
2628      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2629        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCustCd      : '||inv_in_rec.fTDMCustCd );
2630        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCustClassCd : '||inv_in_rec.fTDMCustClassCd );
2631        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMCompCd      : '||inv_in_rec.fTDMCompCd );
2632        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fInvIdNum       : '||inv_in_rec.fInvIdNum );
2633        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'inv_in_rec.fTDMDivCd       : '||inv_in_rec.fTDMDivCd );
2634        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransType  : '||line_in_tab(1).fTransType );
2635        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTransDate  : '||line_in_tab(1).fTransDate );
2636        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'line_in_tab(1).fTDMProdCd  : '||line_in_tab(1).fTDMProdCd );
2637      END IF;
2638   END IF;
2639 
2640   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2641     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2642        ' pg_ship_to_loc_id_tab before hz_locations : '||pg_ship_to_loc_id_tab(i));
2643   END IF;
2644   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2645     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2646        ' pg_bill_to_loc_id_tab before hz_locations : '||pg_bill_to_loc_id_tab(i));
2647   END IF;
2648 
2649   if (inv_in_rec.fJurisSTGeoCd is null) then
2650     BEGIN
2651       SELECT loc.STATE, loc.COUNTY, loc.CITY, substrb(loc.POSTAL_CODE,1,5)
2652       INTO inv_in_rec.fJurisSTStAbbrv
2653            ,inv_in_rec.fJurisSTCoName
2654            ,inv_in_rec.fJurisSTCiName
2655            ,inv_in_rec.fJurisSTZipCd
2656       FROM hz_locations loc
2657       WHERE loc.location_id =  NVL(pg_ship_to_loc_id_tab(I),pg_bill_to_loc_id_tab(I));
2658     EXCEPTION
2659       WHEN OTHERS THEN
2660         inv_in_rec.fJurisSTStAbbrv := NULL;
2661         inv_in_rec.fJurisSTCoName := NULL;
2662         inv_in_rec.fJurisSTCiName := NULL;
2663         inv_in_rec.fJurisSTZipCd := NULL;
2664     END;
2665     l_location_info_rec.state  := inv_in_rec.fJurisSTStAbbrv;
2666     l_location_info_rec.county  := inv_in_rec.fJurisSTCoName;
2667     l_location_info_rec.city  := inv_in_rec.fJurisSTCiName;
2668     l_location_info_rec.postal_code  := inv_in_rec.fJurisSTZipCd;
2669     /*Calling GET_GEOCODE function for fetching geocode value*/
2670     inv_in_rec.fJurisSTGeoCd :=get_geocode(l_location_info_rec);
2671   end if;
2672 
2673   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2674        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_document_type : '||l_document_type );
2675        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'l_line_level_action :'||l_line_level_action );
2676   END IF;
2677 
2678   IF (l_document_type in ('INVOICE', 'DEBIT_MEMO', 'ON_ACCT_CREDIT_MEMO')) THEN
2679     IF (l_line_level_action IN ('CREATE','DELETE','CANCEL')) THEN
2680       inv_in_rec.fInvDate                := pg_trx_date_tab(i);
2681       line_in_tab(1).fTransCd            := ZX_TAX_VERTEX_QSU.cQSUTransCdNormal;
2682 
2683       IF l_line_level_action =  'CREATE' THEN
2684         line_in_tab(1).fTransExtendedAmt   := pg_line_amount_tab(I);
2685         line_in_tab(1).fPriStExmtAmt       := pg_line_numeric1_tab(i) * pg_line_amount_tab(I)/100;
2686         line_in_tab(1).fPriCoExmtAmt       := pg_line_numeric2_tab(i) * pg_line_amount_tab(I)/100;
2687         line_in_tab(1).fPriCiExmtAmt       := pg_line_numeric3_tab(i) * pg_line_amount_tab(I)/100;
2688         line_in_tab(1).fPriDiExmtAmt       := pg_line_numeric4_tab(i) * pg_line_amount_tab(I)/100;
2689       ELSE
2690         line_in_tab(1).fTransExtendedAmt   := -1 * pg_line_amount_tab(I);
2691         line_in_tab(1).fPriStExmtAmt       := -1 * pg_line_numeric1_tab(i) * pg_line_amount_tab(I)/100;
2692         line_in_tab(1).fPriCoExmtAmt       := -1 * pg_line_numeric2_tab(i) * pg_line_amount_tab(I)/100;
2693         line_in_tab(1).fPriCiExmtAmt       := -1 * pg_line_numeric3_tab(i) * pg_line_amount_tab(I)/100;
2694         line_in_tab(1).fPriDiExmtAmt       := -1 * pg_line_numeric4_tab(i) * pg_line_amount_tab(I)/100;
2695       END IF;
2696 
2697       line_in_tab(1).fTransQuantity      := abs(pg_trx_line_qty_tab(I));
2698 
2699       IF (pg_exempt_cont_flag_tab(I)='R') then
2700         line_in_tab(1).fProdTxblty      := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2701         inv_in_rec.fCustTxblty          := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2702       END IF;
2703 
2704       line_in_tab(1).fPriCustExmtCrtfNum := substrb(pg_Line_char3_tab(I), 1, 15);
2705       line_in_tab(1).fPriStExmtRsnCd     := SUBSTRB(pg_Line_char4_tab(I),1,1);
2706       line_in_tab(1).fPriCoExmtRsnCd     := SUBSTRB(pg_Line_char5_tab(I),1,1);
2707       line_in_tab(1).fPriCiExmtRsnCd     := SUBSTRB(pg_Line_char6_tab(I),1,1);
2708       line_in_tab(1).fPriDiExmtRsnCd     := SUBSTRB(pg_Line_char7_tab(I),1,1);
2709 
2710     ELSE
2711       inv_in_rec.fInvDate                := arp_trx_date;
2712       line_in_tab(1).fTransCd            := ZX_TAX_VERTEX_QSU.cQSUTransCdNormal;
2713       line_in_tab(1).fTransExtendedAmt   :=(-1*arp_line_amount);
2714       line_in_tab(1).fTransQuantity      := abs(arp_quantity);
2715 
2716       IF (arp_exemption_control_flag ='R') THEN
2717          line_in_tab(1).fProdTxblty      := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2718          inv_in_rec.fCustTxblty          := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2719       END IF;
2720 
2721       line_in_tab(1).fPriCustExmtCrtfNum := substrb(arp_cert_num, 1, 15);
2722       line_in_tab(1).fPriStExmtRsnCd     := SUBSTRB(arp_state_exempt_reason,1,1);
2723       line_in_tab(1).fPriStExmtAmt       := (-1 * arp_state_exempt_percent * arp_line_amount/100);
2724 
2725       line_in_tab(1).fPriCoExmtRsnCd     := SUBSTRB(arp_county_exempt_reason,1,1);
2726       line_in_tab(1).fPriCoExmtAmt       := (-1 * arp_county_exempt_pct * arp_line_amount/100);
2727 
2728       line_in_tab(1).fPriCiExmtRsnCd     := SUBSTRB(arp_city_exempt_reason,1,1);
2729       line_in_tab(1).fPriCiExmtAmt       := (-1 * arp_city_exempt_pct * arp_line_amount/100);
2730 
2731       line_in_tab(1).fPriDiExmtRsnCd     := SUBSTRB(arp_district_exempt_rs,1,1);
2732       line_in_tab(1).fPriDiExmtAmt       := (-1 * arp_district_exempt_pct * arp_line_amount/100);
2733     END IF;
2734 
2735   ELSIF (l_document_type in ('APPLIED_CREDIT_MEMO')) then
2736        --bug#6831713
2737     BEGIN
2738       SELECT nvl(zd.partner_migrated_flag, 'N')     -- Bug 5007293
2739       INTO   pg_ugraded_inv_flag_tab(I)
2740       FROM ZX_LINES_DET_FACTORS zd
2741       WHERE zd.event_class_mapping_id  = pg_adj_doc_doc_type_id_tab(i)
2742       AND zd.trx_id                    = pg_adj_doc_trx_id_tab(i)
2743       AND zd.trx_line_id               = pg_adj_doc_line_id_tab(i)
2744       AND zd.trx_level_type            = pg_adj_doc_trx_lev_type_tab(i)
2745       AND EXISTS (SELECT 'Y'
2746                   FROM ZX_LINES zl
2747                   WHERE zl.application_id = zd.application_id
2748                     AND zl.entity_code = zd.entity_code
2749                     AND zl.event_class_code = zd.event_class_code
2750                     AND zl.trx_id = pg_adj_doc_trx_id_tab(i)
2751                     AND zl.trx_line_id = pg_adj_doc_line_id_tab(i)
2752                     AND zl.trx_level_type = pg_adj_doc_trx_lev_type_tab(i)
2753                     AND zl.tax = 'LOCATION');
2754     EXCEPTION
2755       WHEN OTHERS THEN
2756        pg_ugraded_inv_flag_tab(I) := 'N';
2757     END;
2758 
2759     IF (l_line_level_action IN ('CREATE','DELETE','CANCEL')) THEN
2760       inv_in_rec.fInvDate                := pg_adj_doc_date_tab(I);
2761       line_in_tab(1).fTransCd            := ZX_TAX_VERTEX_QSU.cQSUTransCdNormal;
2762       line_in_tab(1).fTransExtendedAmt   :=pg_line_amount_tab(I);
2763       line_in_tab(1).fTransQuantity      := abs(pg_trx_line_qty_tab(I));
2764 
2765       IF (pg_exempt_cont_flag_tab(I)='R') THEN
2766          line_in_tab(1).fProdTxblty      := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2767          inv_in_rec.fCustTxblty          := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2768       END IF;
2769 
2770       line_in_tab(1).fPriCustExmtCrtfNum := substrb(pg_Line_char3_tab(I), 1, 15);
2771       line_in_tab(1).fPriStExmtRsnCd     := SUBSTRB(pg_Line_char4_tab(I),1,1);
2772       line_in_tab(1).fPriStExmtAmt       := pg_line_numeric1_tab(i) *
2773                                             pg_line_amount_tab(I)/100;
2774 
2775       line_in_tab(1).fPriCoExmtRsnCd     := SUBSTRB(pg_Line_char5_tab(I),1,1);
2776       line_in_tab(1).fPriCoExmtAmt       := pg_line_numeric2_tab(i) *
2777                                             pg_line_amount_tab(I)/100;
2778       line_in_tab(1).fPriCiExmtRsnCd     := SUBSTRB(pg_Line_char6_tab(I),1,1);
2779       line_in_tab(1).fPriCiExmtAmt       := pg_line_numeric3_tab(i) *
2780                                             pg_line_amount_tab(I)/100;
2781       line_in_tab(1).fPriDiExmtRsnCd     := SUBSTRB(pg_Line_char7_tab(I),1,1);
2782       line_in_tab(1).fPriDiExmtAmt       := pg_line_numeric4_tab(i) *
2783                                             pg_line_amount_tab(I)/100;
2784     ELSE
2785       inv_in_rec.fInvDate    := arp_adjusted_doc_date;
2786       line_in_tab(1).fTransCd  := ZX_TAX_VERTEX_QSU.cQSUTransCdNormal;
2787       line_in_tab(1).fTransExtendedAmt :=(-1*arp_line_amount);
2788       line_in_tab(1).fTransQuantity    := abs(arp_quantity);
2789 
2790       IF (arp_exemption_control_flag='R') THEN /*Need to check*/
2791          line_in_tab(1).fProdTxblty   := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2792          inv_in_rec.fCustTxblty       := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2793       END IF;
2794       line_in_tab(1).fPriCustExmtCrtfNum := substrb(arp_cert_num, 1, 15);
2795       line_in_tab(1).fPriStExmtRsnCd     := SUBSTRB(arp_state_exempt_reason,1,1);
2796       line_in_tab(1).fPriStExmtAmt       := -1 * arp_state_exempt_percent *
2797                                             arp_line_amount/100;
2798 
2799       line_in_tab(1).fPriCoExmtRsnCd     := SUBSTRB(arp_county_exempt_reason,1,1);
2800       line_in_tab(1).fPriCoExmtAmt       := -1 * arp_county_exempt_pct *
2801                                             arp_line_amount/100;
2802 
2803       line_in_tab(1).fPriCiExmtRsnCd     := SUBSTRB(arp_city_exempt_reason,1,1);
2804       line_in_tab(1).fPriCiExmtAmt       := -1 * arp_city_exempt_pct *
2805                                             arp_line_amount/100;
2806       line_in_tab(1).fPriDiExmtRsnCd     := SUBSTRB(arp_district_exempt_rs,1,1);
2807       line_in_tab(1).fPriDiExmtAmt       := -1 * arp_district_exempt_pct *
2808                                             arp_line_amount/100;
2809     END IF;
2810 
2811     ELSIF (l_document_type IN ('LINE_ONLY_CREDIT_MEMO')) THEN
2812       IF (l_line_level_action IN ('CREATE','DELETE','CANCEL')) THEN
2813         inv_in_rec.fInvDate    := pg_adj_doc_date_tab(I);
2814         line_in_tab(1).fTransCd  := ZX_TAX_VERTEX_QSU.cQSUTransCdDistributeTax;
2815         line_in_tab(1).fTransExtendedAmt :=pg_line_amount_tab(I);
2816         line_in_tab(1).fTransQuantity    := abs(pg_trx_line_qty_tab(I));
2817         line_in_tab(1).fTransTotalTaxAmt :=0;
2818 
2819         IF (pg_exempt_cont_flag_tab(I)='R') then
2820           line_in_tab(1).fProdTxblty   := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2821           inv_in_rec.fCustTxblty       := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2822         end if;
2823       ELSE
2824         inv_in_rec.fInvDate    := arp_adjusted_doc_date;
2825         line_in_tab(1).fTransCd  := ZX_TAX_VERTEX_QSU.cQSUTransCdDistributeTax;
2826         line_in_tab(1).fTransExtendedAmt :=(-1*arp_line_amount);
2827         line_in_tab(1).fTransQuantity    := abs(arp_quantity);
2828         line_in_tab(1).fTransTotalTaxAmt :=0;
2829 
2830         if(arp_exemption_control_flag='R') then /*Need to check*/
2831           line_in_tab(1).fProdTxblty   := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2832           inv_in_rec.fCustTxblty       := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2833         END IF;
2834       END IF;
2835 
2836     ELSIF l_document_type IN ('TAX_ONLY_CREDIT_MEMO') THEN
2837       IF (l_line_level_action IN ('CREATE','DELETE','CANCEL')) THEN
2838          inv_in_rec.fInvDate              := pg_adj_doc_date_tab(I);
2839 
2840          IF g_TotalTaxAmt is NULL THEN
2841            line_in_tab(1).fTransTotalTaxAmt := g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt;
2842          ELSE
2843            line_in_tab(1).fTransTotalTaxAmt := g_TotalTaxAmt;
2844          END IF;
2845 
2846          IF line_in_tab(1).fTransTotalTaxAmt > 0 THEN
2847           line_in_tab(1).fTransCd          := ZX_TAX_VERTEX_QSU.cQSUTransCdTaxOnlyDebit;
2848          ELSE
2849           line_in_tab(1).fTransCd          := ZX_TAX_VERTEX_QSU.cQSUTransCdTaxOnlyCredit;
2850          END IF;
2851 
2852          line_in_tab(1).fTransExtendedAmt := NULL;
2853          line_in_tab(1).fTransQuantity    := NULL;
2854 
2855          IF (pg_exempt_cont_flag_tab(I)='R') THEN
2856             line_in_tab(1).fProdTxblty    := NULL ;
2857             inv_in_rec.fCustTxblty        := NULL;
2858          END IF;
2859          --line_in_tab(1).fPriStTaxAmt      := g_StTaxAmt;
2860          --line_in_tab(1).fPriCoTaxAmt      := g_CoTaxAmt;
2861          --line_in_tab(1).fPriCiTaxAmt      := g_CiTaxAmt;
2862       ELSE
2863          inv_in_rec.fInvDate              := arp_adjusted_doc_date;
2864 
2865          IF g_TotalTaxAmt is NULL THEN
2866            line_in_tab(1).fTransTotalTaxAmt := g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt;
2867          ELSE
2868            line_in_tab(1).fTransTotalTaxAmt := g_TotalTaxAmt;
2869          END IF;
2870 
2871          IF line_in_tab(1).fTransTotalTaxAmt > 0 THEN
2872           line_in_tab(1).fTransCd          := ZX_TAX_VERTEX_QSU.cQSUTransCdTaxOnlyDebit;
2873          ELSE
2874           line_in_tab(1).fTransCd          := ZX_TAX_VERTEX_QSU.cQSUTransCdTaxOnlyCredit;
2875          END IF;
2876 
2877         line_in_tab(1).fTransExtendedAmt  := NULL;
2878         line_in_tab(1).fTransQuantity     := NULL;
2879 
2880         IF (arp_exemption_control_flag='R') THEN /*Need to check*/
2881            line_in_tab(1).fProdTxblty     := NULL ;
2882            inv_in_rec.fCustTxblty         := NULL;
2883         END IF;
2884       END IF;
2885     ELSIF l_document_type in ('INVOICE_ADJUSTMENT') THEN
2886       inv_in_rec.fInvDate                 := pg_trx_date_tab(i);
2887       line_in_tab(1).fTransCd             := ZX_TAX_VERTEX_QSU.cQSUTransCdDistributeTax;
2888       line_in_tab(1).fTransExtendedAmt    := pg_line_amount_tab(i)-
2889                                                 (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2890       line_in_tab(1).fTransQuantity       := abs(pg_trx_line_qty_tab(I));
2891       line_in_tab(1).fTransTotalTaxAmt    := g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt;
2892     ELSIF l_document_type in ('TAX_LINE_SYNC'
2893                              ,'TAX_ONLY_INVOICE'
2894                              ,'TAX_ONLY_ADJUSTMENT') THEN
2895       inv_in_rec.fInvDate                 := arp_trx_date;
2896       line_in_tab(1).fTransCd             := ZX_TAX_VERTEX_QSU.cQSUTransCdDistributeTax;
2897       line_in_tab(1).fTransExtendedAmt    := NULL;
2898       line_in_tab(1).fTransQuantity       := NULL;
2899       --bug#6831713
2900       line_in_tab(1).fTransTotalTaxAmt    := g_TotalTaxAmt;
2901       line_in_tab(1).fPriStTaxAmt         := g_StTaxAmt;
2902       line_in_tab(1).fPriCoTaxAmt         := g_CoTaxAmt;
2903       line_in_tab(1).fPriCiTaxAmt         := g_CiTaxAmt;
2904       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2905         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2906            ' line_in_tab(1).fPriStTaxAmt  '||line_in_tab(1).fPriStTaxAmt);
2907         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2908            ' line_in_tab(1).fPriCoTaxAmt  '||line_in_tab(1).fPriCoTaxAmt);
2909         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2910            ' line_in_tab(1).fPriCiTaxAmt  '||line_in_tab(1).fPriCiTaxAmt);
2911       END IF;
2912 
2913     ELSIF (l_document_type in ('SALES_QUOTE')) then -- Bug5927656
2914       inv_in_rec.fInvDate                := pg_trx_date_tab(i);
2915       line_in_tab(1).fTransCd            := ZX_TAX_VERTEX_QSU.cQSUTransCdNormal;
2916 
2917       IF l_line_level_action =  'CREATE' THEN
2918          line_in_tab(1).fTransExtendedAmt   := pg_line_amount_tab(I);
2919        END IF;
2920 
2921       line_in_tab(1).fTransQuantity      := abs(pg_trx_line_qty_tab(I));
2922 
2923       IF (pg_exempt_cont_flag_tab(I)='R') then
2924          line_in_tab(1).fProdTxblty      := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2925          inv_in_rec.fCustTxblty          := ZX_TAX_VERTEX_QSU.cQSUTxbltyTxbl ;
2926        END IF;
2927 
2928       line_in_tab(1).fPriCustExmtCrtfNum := substrb(pg_Line_char3_tab(I), 1, 15);
2929       line_in_tab(1).fPriStExmtRsnCd     := SUBSTRB(pg_Line_char4_tab(I),1,1);
2930       line_in_tab(1).fPriStExmtAmt       := pg_line_numeric1_tab(i) *
2931                                             pg_line_amount_tab(I)/100;
2932 
2933       line_in_tab(1).fPriCoExmtRsnCd     := SUBSTRB(pg_Line_char5_tab(I),1,1);
2934       line_in_tab(1).fPriCoExmtAmt       := pg_line_numeric2_tab(i) *
2935                                             pg_line_amount_tab(I)/100;
2936       line_in_tab(1).fPriCiExmtRsnCd     := SUBSTRB(pg_Line_char6_tab(I),1,1);
2937       line_in_tab(1).fPriCiExmtAmt       := pg_line_numeric3_tab(i) *
2938                                             pg_line_amount_tab(I)/100;
2939       line_in_tab(1).fPriDiExmtRsnCd     := SUBSTRB(pg_Line_char7_tab(I),1,1);
2940       line_in_tab(1).fPriDiExmtAmt       := pg_line_numeric4_tab(i) *
2941                                              pg_line_amount_tab(I)/100;
2942 
2943     END IF;
2944 
2945     display_output('I');
2946 
2947     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2948       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
2949     END IF;
2950 
2951 END SET_PARAMETERS;
2952 
2953 
2954 FUNCTION GET_GEOCODE(p_location_info_rec location_info_rec_type) return VARCHAR2 IS
2955 
2956 k    INTEGER;
2957 ptr    INTEGER;
2958 found     BOOLEAN := FALSE;
2959 
2960 l_state    VARCHAR2(60);
2961 l_county  VARCHAR2(60);
2962 l_city    VARCHAR2(60);
2963 l_postal_code  VARCHAR2(60);
2964 l_geocode  BINARY_INTEGER;
2965 
2966 retval    BOOLEAN := FALSE;
2967 
2968 l_api_name           CONSTANT VARCHAR2(30) := 'GET_GEOCODE';
2969 
2970 BEGIN
2971   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2972      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
2973   END IF;
2974 
2975   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2976        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'STATE    :'||p_location_info_rec.state );
2977        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'COUNTY   :'||p_location_info_rec.county );
2978        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'CITY     :'||p_location_info_rec.city );
2979        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'POSTAL CODE :'||p_location_info_rec.postal_code);
2980   END IF;
2981 
2982 l_state    :=p_location_info_rec.state;
2983 l_county  :=p_location_info_rec.county;
2984 l_city    :=p_location_info_rec.city;
2985 l_postal_code  :=p_location_info_rec.postal_code;
2986 
2987 
2988     /*---------------------------------------------------
2989      | Look for the conbination from cache    |
2990      ---------------------------------------------------*/
2991     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2992        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Look for the combination from cache' );
2993     END IF;
2994     FOR k in 1 .. pg_max_index
2995     LOOP
2996         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2997           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'-- k = '|| to_char(k) );
2998         END IF;
2999       IF (l_state = pg_state(k)) and (l_county = pg_county(k)) and
3000         (l_city = pg_city(k)) and
3001         (l_postal_code = pg_postal_code(k)) THEN
3002       found := TRUE;
3003       ptr := k;
3004         EXIT;
3005         END IF;
3006     END LOOP;
3007 
3008     IF NOT found THEN
3009   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3010            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Could not find the combination  in the cache.' );
3011         END IF;
3012 
3013   BEGIN
3014       /*-------------------------------------------------------
3015        | Call API to set search criteria for finding GeoCode. |
3016        -------------------------------------------------------*/
3017    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3018        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Call API to set search criteria for '||
3019         'finding GeoCode.');
3020     END IF;
3021 
3022           ZX_TAX_VERTEX_GEO.GeoSetNameCriteria(
3023                         search_rec,
3024                         ZX_TAX_VERTEX_GEO.cGeoCodeLevelCity,
3025                         substrb(l_state, 1, 2),
3026                         FALSE,
3027                         '',
3028                         FALSE,
3029                         substrb(l_county, 1, 20),
3030                         FALSE,
3031                         FALSE,
3032                         substrb(l_city, 1, 25),
3033                         FALSE,
3034                         substrb(l_postal_code, 1, 5),
3035                         NULL);
3036       EXCEPTION
3037             WHEN OTHERS THEN
3038         IF (g_level_exception >= g_current_runtime_level ) THEN
3039                  FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3040      --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3041     g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3042     error_exception_handle(g_string);
3043     --return;
3044 
3045         END IF;
3046 
3047 
3048       END;
3049 
3050   BEGIN
3051             /*---------------------------
3052              | Call API to get GeoCode.  |
3053               ---------------------------*/
3054       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3055                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Call API to get GeoCode.' );
3056             END IF;
3057       retval := ZX_TAX_VERTEX_GEO.GeoRetrieveFirst(search_rec, result_rec);
3058 
3059         EXCEPTION
3060             WHEN OTHERS THEN
3061                 IF (g_level_exception >= g_current_runtime_level ) THEN
3062                    FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3063           END IF;
3064                 IF (SQLCODE > -20500) OR (SQLCODE < -20599) THEN
3065                     --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3066         g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3067         error_exception_handle(g_string);
3068         --return;
3069                 END IF;
3070   END;
3071 
3072       IF retval = FALSE THEN
3073       /*******No jurisdiction code is found.*******/
3074     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3075             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'No Jurisdiction code is found.' );
3076           END IF;
3077       return '';
3078   ElSE
3079     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3080             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Found the combination from Vendor Table.' );
3081           END IF;
3082   END IF;
3083 
3084   BEGIN
3085       /*-----------------------------------------------------------
3086        | Call API to pack GeoCode(Convert state, county, and city |
3087        | GeoCode into one 9-digit GeoCode.      |
3088          -----------------------------------------------------------*/
3089   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3090           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Call API to pack GeoCode to convert state, '||
3091       'county, and city GeoCode into one 9-digit GeoCode.' );
3092         END IF;
3093 
3094           l_geocode :=ZX_TAX_VERTEX_GEO.GeoPackGeoCode( result_rec.fResGeoState,
3095                                    result_rec.fResGeoCounty,
3096                                                    result_rec.fResGeoCity);
3097 
3098       EXCEPTION
3099             WHEN OTHERS THEN
3100                 IF (g_level_exception >= g_current_runtime_level ) THEN
3101                    FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3102           END IF;
3103               IF (SQLCODE > -20500) OR (SQLCODE < -20599) THEN
3104                 g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3105     error_exception_handle(g_string);
3106     return' ';
3107               END IF;
3108     --RAISE;
3109       END;
3110 
3111       pg_max_index := pg_max_index + 1;
3112     ptr := pg_max_index;
3113       pg_state( ptr ) := l_state;
3114       pg_county( ptr ) := l_county;
3115       pg_city(ptr ) := l_city;
3116       pg_postal_code( ptr ) := l_postal_code;
3117       pg_geocode( ptr ) := to_char(l_geocode);
3118 
3119   BEGIN
3120       /*----------------------------------------------------------
3121        | Call API to find out whether there is another record or |
3122        | not.  If there is, then raise error later.         |
3123        ----------------------------------------------------------*/
3124        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3125          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Call API to find out whether there is another '||
3126                                                          'record or not.  If there is, then raise error later.' );
3127        END IF;
3128 
3129           retval := ZX_TAX_VERTEX_GEO.GeoRetrieveNext(search_rec, result_rec);
3130 
3131         EXCEPTION
3132             WHEN OTHERS THEN
3133                 IF (g_level_exception >= g_current_runtime_level ) THEN
3134                    FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3135           END IF;
3136                 IF (SQLCODE > -20500) OR (SQLCODE < -20599) THEN
3137                  --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3138     g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3139     error_exception_handle(g_string);
3140 
3141                 END IF;
3142     --RAISE;
3143     return '';
3144         END;
3145 
3146       IF retval = TRUE THEN
3147               -- Bug2609220
3148       /*******too_many_rows*******/
3149      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3150              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Too Many Rows for the combination of ST,CNTY,CITY' );
3151            END IF;
3152       return '';
3153       END IF;
3154 
3155     ElSE
3156   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3157           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Find the combination from the cache.' );
3158         END IF;
3159     END IF; -- NOT found
3160 
3161     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3162      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3163     END IF;
3164 
3165     RETURN(pg_geocode( ptr ));
3166 
3167 END GET_GEOCODE;
3168 
3169 
3170 
3171 PROCEDURE CALCULATE_TAX(x_return_status OUT NOCOPY VARCHAR2) IS
3172  l_api_name           CONSTANT VARCHAR2(30) := 'CALCULATE_TAX';
3173 BEGIN
3174     x_return_status := FND_API.G_RET_STS_SUCCESS;
3175 
3176     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3177      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3178     END IF;
3179 
3180     /*-----------------------------------------------------------
3181      | Calculate tax for a invoice line.                        |
3182      -----------------------------------------------------------*/
3183     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3184        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Before calculate '||
3185                                                 to_char(sysdate, 'DD/MON/YYYY HH:MI:SS'));
3186     END IF;
3187 
3188     BEGIN
3189       ZX_TAX_VERTEX_QSU.QSUCalculateTaxes(context_rec,
3190                                    inv_in_rec,
3191                                    line_in_tab,
3192                                    inv_out_rec,
3193                                    line_out_tab,
3194                                    FALSE);
3195 
3196       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3197         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'After calculate '||
3198                                                  to_char(sysdate, 'DD/MON/YYYY HH:MI:SS'));
3199       END IF;
3200 
3201       IF line_out_tab(1).fPriStTaxType = 0 THEN
3202         g_string := 'Ship to/Bill To Address is Invalid. Please review the Address Setup';
3203         error_exception_handle(g_string);
3204         RAISE FND_API.G_EXC_ERROR;
3205       END IF;
3206 
3207         display_output('O');
3208 
3209     EXCEPTION
3210       WHEN FND_API.G_EXC_ERROR THEN
3211         x_return_status := FND_API.G_RET_STS_ERROR ;
3212         g_string :='Error in VERTEX tax calulation API due to incorrect address passed :'||
3213                      to_char(SQLCODE)||SQLERRM;
3214         IF (g_level_exception >= g_current_runtime_level ) THEN
3215           FND_LOG.STRING(G_LEVEL_EXCEPTION,
3216                          G_MODULE_NAME||l_api_name,
3217                          g_string);
3218         END IF;
3219         RETURN;
3220       WHEN OTHERS THEN
3221         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3222         g_string :='Error in VERTEX tax calulation API:'||to_char(SQLCODE)||SQLERRM;
3223         IF (g_level_exception >= g_current_runtime_level ) THEN
3224           FND_LOG.STRING(G_LEVEL_EXCEPTION,
3225                          G_MODULE_NAME||l_api_name,
3226                          g_string);
3227         END IF;
3228         --error_exception_handle(g_string);
3229      return;
3230     END;
3231 
3232     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3233      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3234     END IF;
3235 
3236 End CALCULATE_TAX;
3237 
3238 Procedure WRITE_TO_VERTEX_REPOSITORY(x_return_status OUT NOCOPY VARCHAR2) is
3239  l_api_name           CONSTANT VARCHAR2(30) := 'WRITE_TO_VERTEX_REPOSITORY';
3240 Begin
3241 
3242     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3243      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3244     END IF;
3245 
3246     /*-----------------------------------------------------------
3247      | Write the transaction to register table(regprereturnstbl)|
3248      -----------------------------------------------------------*/
3249 
3250   BEGIN
3251          ZX_TAX_VERTEX_QSU.QSUWritePreReturnsData(context_rec,
3252                             inv_out_rec,
3253                             line_out_tab);
3254         EXCEPTION
3255              WHEN OTHERS THEN
3256         IF (g_level_exception >= g_current_runtime_level ) THEN
3257                  FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3258         END IF;
3259 
3260                    g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3261        error_exception_handle(g_string);
3262                    x_return_status := FND_API.G_RET_STS_ERROR;
3263              return;
3264       END;
3265 
3266     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3267      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3268     END IF;
3269 
3270 END WRITE_TO_VERTEX_REPOSITORY;
3271 
3272 
3273 PROCEDURE TAX_RESULTS_PROCESSING(
3274   p_tax_lines_tbl     OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
3275   p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
3276   x_return_status     OUT NOCOPY VARCHAR2) IS
3277 
3278   J NUMBER;
3279   x_tax_jurisdiction_code ZX_JURISDICTIONS_B.tax_jurisdiction_code%type;
3280   p_location_id           NUMBER;
3281   l_regime_code           ZX_REGIMES_B.tax_regime_code%type;
3282   state_tax_rate          NUMBER; -- state tax rate in %
3283   state_tax_amount        NUMBER; -- state tax amount
3284   county_tax_rate         NUMBER; -- county tax rate in %
3285   county_tax_amount       NUMBER; -- county tax amount
3286   city_tax_rate           NUMBER; -- city tax rate in %
3287   city_tax_amount         NUMBER; -- city tax amount
3288   dist_tax_rate           NUMBER; -- district tax rate in %
3289   dist_tax_amount         NUMBER; -- district tax amounts
3290   sec_county_tax_rate     NUMBER; -- secondary county tax rate
3291   sec_county_tax_amount   NUMBER; -- secondary county tax amount
3292   sec_city_tax_rate       NUMBER; -- secondary city tax rate
3293   sec_city_tax_amount     NUMBER; -- secondary city tax amount
3294   add_county_tax_rate     NUMBER; -- additional county tax rate in %
3295   add_county_tax_amount   NUMBER; -- additional county tax amount
3296   add_city_tax_rate       NUMBER; -- additional city tax rate in %
3297   add_city_tax_amount     NUMBER; -- additional city tax amount
3298   add_dist_tax_rate       NUMBER; -- additional district tax rate in %
3299   add_dist_tax_amount  NUMBER; -- additional district tax amount
3300   l_situs                 VARCHAR2(20);
3301   ind      NUMBER;
3302 
3303   l_api_name           CONSTANT VARCHAR2(30) := 'TAX_RESULTS_PROCESSING';
3304   l_return_status         VARCHAR2(30);
3305 
3306 Begin
3307   x_return_status := FND_API.G_RET_STS_SUCCESS;
3308 
3309   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3310      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3311   END IF;
3312 
3313     l_regime_code      := zx_tax_partner_pkg.g_tax_regime_code;
3314     p_currency_tab(1).tax_currency_precision      := 2;   -- Bug 5288518
3315   /*-------------------------------------------------------------
3316      | Populate Tax Amounts and Rates        |
3317      -----------------------------------------------------------*/
3318     /* State tax rate */
3319     state_tax_rate := round(line_out_tab(1).fPriStRate * 100, 6);
3320     /* State tax amount */
3321     state_tax_amount := line_out_tab(1).fPriStTaxAmt;
3322     /* County tax rate */
3323     county_tax_rate := round(line_out_tab(1).fPriCoRate * 100, 6);
3324     /* County tax amount */
3325     county_tax_amount := line_out_tab(1).fPriCoTaxAmt;
3326     /* City tax Rate */
3327     city_tax_rate := round(line_out_tab(1).fPriCiRate * 100, 6);
3328     /* City tax amount */
3329     city_tax_amount := line_out_tab(1).fPriCiTaxAmt;
3330     /* District tax rate */
3331     dist_tax_rate := round(line_out_tab(1).fPriDiRate * 100, 6);
3332     /* District tax amount */
3333     dist_tax_amount := line_out_tab(1).fPriDiTaxAmt;
3334 
3335     /*-----------------------------------------------------------
3336      | Populate Secondary Tax Amounts and Rates      |
3337      -----------------------------------------------------------*/
3338     IF line_out_tab(1).fPriDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi THEN
3339       sec_county_tax_rate := 0;
3340       sec_county_tax_amount := 0;
3341       sec_city_tax_rate := dist_tax_rate;
3342       sec_city_tax_amount := dist_tax_amount;
3343     ELSE
3344       sec_county_tax_rate := dist_tax_rate;
3345       sec_county_tax_amount := dist_tax_amount;
3346       sec_city_tax_rate := 0;
3347       sec_city_tax_amount := 0;
3348     END IF;
3349 
3350 
3351     /*-----------------------------------------------------------
3352      | Populate Additional Tax Amounts and Rates    |
3353      -----------------------------------------------------------*/
3354     /* County tax rate */
3355     add_county_tax_rate := line_out_tab(1).fAddCoRate * 100;
3356     /* County tax amount */
3357     add_county_tax_amount := line_out_tab(1).fAddCoTaxAmt;
3358     /* City tax Rate */
3359     add_city_tax_rate := line_out_tab(1).fAddCiRate * 100;
3360     /* City tax amount */
3361     add_city_tax_amount := line_out_tab(1).fAddCiTaxAmt;
3362     /* District tax rate */
3363     add_dist_tax_rate := line_out_tab(1).fAddDiRate * 100;
3364     /* District tax amount */
3365     add_dist_tax_amount := line_out_tab(1).fAddDiTaxAmt;
3366 
3367     IF line_out_tab(1).fAddDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi THEN
3368       add_city_tax_rate := round(add_city_tax_rate + add_dist_tax_rate, 6);
3369       add_city_tax_amount := add_city_tax_amount + add_dist_tax_amount;
3370     ELSE
3371         add_county_tax_rate := round(add_county_tax_rate + add_dist_tax_rate, 6);
3372         add_county_tax_amount := add_county_tax_amount + add_dist_tax_amount;
3373     END IF;
3374 
3375   IF line_out_tab(1).fPriTaxingJuris = 0 then
3376        l_situs := 'SHIP_TO';
3377   ELSIF line_out_tab(1).fPriTaxingJuris = 1 then
3378        l_situs := 'SHIP_FROM';
3379   ELSIF line_out_tab(1).fPriTaxingJuris = 2 then
3380              l_situs :=  'POA';
3381   ELSE null;
3382   END IF;
3383 
3384   IF l_situs =  'SHIP_TO' THEN
3385 /* Bug 5090593: Making use of the location ids passed thru view.
3386            select nvl(ship_to_location_id, bill_to_location_id)
3387            INTO    p_location_id
3388       From    zx_lines_det_factors
3389       WHERE   event_class_mapping_id =  pg_doc_type_id_tab(I) and
3390                    trx_id           =  pg_trx_id_tab(I) and
3391               trx_line_id      =  pg_trx_line_id_tab(I) and
3392               trx_level_type    =  pg_trx_level_type_tab(I);
3393 */
3394            p_location_id := nvl(pg_ship_to_loc_id_tab(I), pg_bill_to_loc_id_tab(I));
3395 
3396         ELSIF l_situs =  'SHIP_FROM' THEN
3397 /* Bug 5090593: Making use of the location ids passed thru view.
3398            select nvl(ship_from_location_id, bill_from_location_id)
3399            INTO    p_location_id
3400       From    zx_lines_det_factors
3401       WHERE   event_class_mapping_id =  pg_doc_type_id_tab(I) and
3402                    trx_id           =  pg_trx_id_tab(I) and
3403               trx_line_id      =  pg_trx_line_id_tab(I) and
3404               trx_level_type    =  pg_trx_level_type_tab(I);
3405 */
3406            p_location_id := nvl(pg_ship_fr_loc_id_tab(I), pg_bill_fr_loc_id_tab(I));
3407   ELSIF l_situs =  'POA' THEN
3408     p_location_id := pg_poa_loc_id_tab(I);
3409   ELSE null;
3410         END IF;
3411 
3412   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3413      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Displaying for the transaction line : '||I);
3414   End If;
3415 
3416    --bug#6831713
3417    IF pg_ugraded_inv_flag_tab(I) = 'Y' THEN
3418         p_tax_lines_tbl.document_type_id(i)           := pg_doc_type_id_tab(I);
3419         p_tax_lines_tbl.transaction_id(i)             := pg_trx_id_tab(I);
3420         p_tax_lines_tbl.transaction_line_id(i)        := pg_trx_line_id_tab(I);
3421         p_tax_lines_tbl.trx_level_type(i)             := pg_trx_level_type_tab(I);
3422         p_tax_lines_tbl.country_code(i)               := l_regime_code ;
3423         p_tax_lines_tbl.situs(i)                      := l_situs;
3424         p_tax_lines_tbl.tax_currency_code(i)          := p_currency_tab(1).tax_currency_code;
3425         p_tax_lines_tbl.Inclusive_tax_line_flag(i)    := 'N';
3426         p_tax_lines_tbl.Line_amt_includes_tax_flag(i) := 'N';
3427         p_tax_lines_tbl.use_tax_flag(i)               := 'N';
3428         p_tax_lines_tbl.User_override_flag(i)         := 'N'; -- Need to see if different for override_tax
3429         p_tax_lines_tbl.last_manual_entry(i)          := NULL;
3430         p_tax_lines_tbl.manually_entered_flag(i)      := 'N'; -- Need to see if different for override_tax
3431         p_tax_lines_tbl.registration_party_type(i)    := NULL;  -- Bug 5288518
3432         p_tax_lines_tbl.party_tax_reg_number(i)       := NULL;  -- Bug 5288518
3433         p_tax_lines_tbl.third_party_tax_reg_number(i) := NULL;
3434         p_tax_lines_tbl.threshold_indicator_flag(i)   := Null;
3435         p_tax_lines_tbl.State(i)                      := inv_out_rec.fJurisSTStAbbrv;
3436         p_tax_lines_tbl.County(i)                     := inv_out_rec.fJurisSTCoName;
3437         p_tax_lines_tbl.City(i)                       := inv_out_rec.fJurisSTCiName;
3438         p_tax_lines_tbl.tax_only_line_flag(i) := 'N';
3439         p_tax_lines_tbl.Tax(i)                         := 'LOCATION';
3440         p_tax_lines_tbl.tax_amount(i)                  := line_out_tab(1).fPriStTaxAmt
3441                                                           + (county_tax_amount + sec_county_tax_amount + add_county_tax_amount)
3442                                                           + (city_tax_amount + sec_city_tax_amount + add_city_tax_amount);
3443         --added them
3444   p_tax_lines_tbl.unrounded_tax_amount(i)      := line_out_tab(1).fPriStTaxAmt
3445                                                           + (county_tax_amount + sec_county_tax_amount + add_county_tax_amount)
3446                                                           + (city_tax_amount + sec_city_tax_amount + add_city_tax_amount);
3447   p_tax_lines_tbl.tax_curr_tax_amount(i)       := p_tax_lines_tbl.tax_amount(i) * p_currency_tab(1).exchange_rate;
3448   p_tax_lines_tbl.tax_rate_percentage(i)       := state_tax_rate
3449                                                   + (county_tax_rate + sec_county_tax_rate + add_county_tax_rate)
3450               + (city_tax_rate + sec_city_tax_rate + add_city_tax_rate);
3451 
3452         p_tax_lines_tbl.taxable_amount(i)              := line_out_tab(1).fPriStTaxedAmt;
3453 
3454   p_tax_lines_tbl.tax_jurisdiction(i) := NULL;
3455         -- Can alternatively call GET_TAX_JUR_CODE for tax = 'CITY'  (lowest level jurisdiction)
3456 
3457   p_tax_lines_tbl.global_attribute_category(i) := 'VERTEX';
3458         p_tax_lines_tbl.global_attribute2(i) := to_char(line_out_tab(1).fPriStTaxAmt);
3459         p_tax_lines_tbl.global_attribute4(i) := to_char((county_tax_amount + sec_county_tax_amount + add_county_tax_amount));
3460         p_tax_lines_tbl.global_attribute6(i) := to_char((city_tax_amount + sec_city_tax_amount + add_city_tax_amount));
3461 
3462 
3463         p_tax_lines_tbl.exempt_reason(i) :=line_out_tab(1).fPriStExmtRsnCd;
3464 
3465         IF (NVL(line_out_tab(1).fPriStExmtAmt, 0) + NVL(line_out_tab(1).fPriCoExmtAmt, 0)
3466                                                   + NVL(line_out_tab(1).fPriCiExmtAmt, 0)) <> 0 THEN
3467           IF (line_out_tab(1).fTransExtendedAmt <> 0) then
3468              p_tax_lines_tbl.exempt_rate_modifier(i) := (line_out_tab(1).fPriStExmtAmt +
3469                                                          line_out_tab(1).fPriCoExmtAmt +
3470                                                          line_out_tab(1).fPriCiExmtAmt)/
3471                                                          line_out_tab(1).fTransExtendedAmt;
3472              p_tax_lines_tbl.exempt_certificate_number(i) := line_out_tab(1).fPriCustExmtCrtfNum;
3473           ELSE
3474             p_tax_lines_tbl.exempt_rate_modifier(i) := 0;
3475             p_tax_lines_tbl.exempt_certificate_number(i) := NULL;
3476           END IF;
3477         ELSE
3478           p_tax_lines_tbl.exempt_rate_modifier(i) := 0;
3479           p_tax_lines_tbl.exempt_certificate_number(i) := NULL;
3480         END IF;
3481 
3482   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3483      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'tax line output ');
3484      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.document_type_id('||i||') = '|| to_char(p_tax_lines_tbl.document_type_id(i)));
3485            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_id('||i||') = '|| to_char(p_tax_lines_tbl.transaction_id(i)));
3486            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_line_id('||i||') = '||
3487                 to_char(p_tax_lines_tbl.transaction_line_id(i)));
3488            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.trx_level_type('||i||') = '||
3489                 p_tax_lines_tbl.trx_level_type(i));
3490            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.country_code('||i||') = '|| p_tax_lines_tbl.country_code(i));
3491            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.Tax('||i||') = '|| p_tax_lines_tbl.Tax(i));
3492            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.situs('||i||') = '|| p_tax_lines_tbl.situs(i));
3493            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_jurisdiction('||i||') = '||
3494     p_tax_lines_tbl.tax_jurisdiction(i));
3495            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.tax_currency_code('||i||') = '|| p_tax_lines_tbl.tax_currency_code(i));
3496            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT('||i||')  = '||
3497     to_char(p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(i)));
3498            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_amount('||i||') = '|| to_char(p_tax_lines_tbl.tax_amount(i)));
3499            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_rate_percentage('||i||') = '||
3500     to_char(p_tax_lines_tbl.tax_rate_percentage(i)));
3501            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.taxable_amount('||i||') = '||
3502     to_char(p_tax_lines_tbl.taxable_amount(i)));
3503            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.State('||i||') = '|| p_tax_lines_tbl.State(i));
3504            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.County('||i||') = '|| p_tax_lines_tbl.County(i));
3505            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.City('||i||') = '|| p_tax_lines_tbl.City(i));
3506            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.unrounded_tax_amount('||i||') = '||
3507     to_char(p_tax_lines_tbl.unrounded_tax_amount(i)));
3508            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' line_out_tab(1).fPriCustExmtCrtfNum = '||
3509                 line_out_tab(1).fPriCustExmtCrtfNum);
3510            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.exempt_certificate_number('||i||') = '||
3511                 p_tax_lines_tbl.exempt_certificate_number(i));
3512 
3513            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute_category('||i||') = '|| p_tax_lines_tbl.global_attribute_category(i));
3514            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute2('||i||') = '|| p_tax_lines_tbl.global_attribute2(i));
3515            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute4('||i||') = '|| p_tax_lines_tbl.global_attribute4(i));
3516            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute6('||i||') = '|| p_tax_lines_tbl.global_attribute6(i));
3517 
3518         END IF;
3519 
3520    ELSE
3521     For J in 1..3
3522     loop
3523      /*Bug fix :4941881 , As we are processing all the transaction lines in one time,we need to use index accordingly*/
3524       ind:=j+(3*i-3);
3525   p_tax_lines_tbl.document_type_id(ind)    := pg_doc_type_id_tab(I);
3526   p_tax_lines_tbl.transaction_id(ind)    := pg_trx_id_tab(I);
3527   p_tax_lines_tbl.transaction_line_id(ind)  := pg_trx_line_id_tab(I);
3528   p_tax_lines_tbl.trx_level_type(ind)       := pg_trx_level_type_tab(I);
3529   p_tax_lines_tbl.country_code(ind)          := l_regime_code ;
3530   p_tax_lines_tbl.situs(ind)      := l_situs;
3531   p_tax_lines_tbl.tax_currency_code(ind)    := p_currency_tab(1).tax_currency_code;
3532   p_tax_lines_tbl.Inclusive_tax_line_flag(ind)  := 'N';
3533   p_tax_lines_tbl.Line_amt_includes_tax_flag(ind) := 'N';
3534   p_tax_lines_tbl.use_tax_flag(ind)    := 'N';
3535   p_tax_lines_tbl.User_override_flag(ind)    := 'N'; -- Need to see if different for override_tax
3536   p_tax_lines_tbl.last_manual_entry(ind)    := NULL;
3537   p_tax_lines_tbl.manually_entered_flag(ind)  := 'N'; -- Need to see if different for override_tax
3538   p_tax_lines_tbl.registration_party_type(ind)    := NULL;  -- Bug 5288518
3539   p_tax_lines_tbl.party_tax_reg_number(ind)       := NULL;  -- Bug 5288518
3540   p_tax_lines_tbl.third_party_tax_reg_number(ind)  := NULL;
3541   p_tax_lines_tbl.threshold_indicator_flag(ind)  := Null;
3542   p_tax_lines_tbl.State(ind)      := inv_out_rec.fJurisSTStAbbrv;
3543   p_tax_lines_tbl.County(ind)      := inv_out_rec.fJurisSTCoName;
3544   p_tax_lines_tbl.City(ind)      := inv_out_rec.fJurisSTCiName;
3545 
3546   p_tax_lines_tbl.global_attribute_category(ind) := 'VERTEX';
3547         p_tax_lines_tbl.global_attribute2(ind) := NULL;
3548         p_tax_lines_tbl.global_attribute4(ind) := NULL;
3549         p_tax_lines_tbl.global_attribute6(ind) := NULL;
3550 
3551       if(l_document_type in ('TAX_ONLY_CREDIT_MEMO','TAX_ONLY_ADJUSTMENT')) then
3552   p_tax_lines_tbl.tax_only_line_flag(ind)  := 'Y';
3553       else
3554         p_tax_lines_tbl.tax_only_line_flag(ind)  := 'N';
3555       end if;
3556 
3557   IF J=1 then /*Case for State*/
3558     p_tax_lines_tbl.Tax(ind)       := 'STATE';
3559     p_tax_lines_tbl.tax_amount(ind)       := line_out_tab(1).fPriStTaxAmt;
3560     p_tax_lines_tbl.unrounded_tax_amount(ind)   := line_out_tab(1).fPriStTaxAmt;
3561     p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind)    := line_out_tab(1).fPriStTaxAmt*p_currency_tab(1).exchange_rate;
3562     p_tax_lines_tbl.tax_rate_percentage(ind)    := state_tax_rate;   -- Bug 5162537
3563     p_tax_lines_tbl.taxable_amount(ind)      := line_out_tab(1).fPriStTaxedAmt;
3564            IF nvl(line_out_tab(1).fPriStExmtAmt, 0) <> 0 THEN
3565         IF (line_out_tab(1).fTransExtendedAmt <> 0) then
3566                  p_tax_lines_tbl.exempt_rate_modifier(ind) := line_out_tab(1).fPriStExmtAmt/line_out_tab(1).fTransExtendedAmt;
3567                  p_tax_lines_tbl.exempt_certificate_number(ind)  := line_out_tab(1).fPriCustExmtCrtfNum;
3568               ELSE
3569                  p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3570                  p_tax_lines_tbl.exempt_certificate_number(ind)  := NULL;
3571               END IF;
3572           ELSE
3573              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3574              p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3575           END IF;
3576     p_tax_lines_tbl.exempt_reason(ind)     :=line_out_tab(1).fPriStExmtRsnCd;
3577   ELSIF J=2 then
3578              p_tax_lines_tbl.Tax(ind)       := 'COUNTY';
3579     p_tax_lines_tbl.tax_amount(ind)       :=(county_tax_amount +
3580                         sec_county_tax_amount +
3581                                                 add_county_tax_amount);
3582     p_tax_lines_tbl.unrounded_tax_amount(ind)   := county_tax_amount +
3583                     sec_county_tax_amount +
3584                                                   add_county_tax_amount;
3585     p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind)    := p_tax_lines_tbl.tax_amount(ind) *p_currency_tab(1).exchange_rate;
3586     p_tax_lines_tbl.tax_rate_percentage(ind)    := county_tax_rate +
3587                                                                     sec_county_tax_rate +
3588                                                         add_county_tax_rate;
3589     p_tax_lines_tbl.taxable_amount(ind)      := line_out_tab(1).fPriCoTaxedAmt;
3590            IF nvl(line_out_tab(1).fPriCoExmtAmt, 0) <> 0 THEN
3591         IF (line_out_tab(1).fTransExtendedAmt <> 0) then
3592                  p_tax_lines_tbl.exempt_rate_modifier(ind) := line_out_tab(1).fPriCoExmtAmt/line_out_tab(1).fTransExtendedAmt;
3593                  p_tax_lines_tbl.exempt_certificate_number(ind)   := line_out_tab(1).fPriCustExmtCrtfNum;
3594              ELSE
3595                 p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3596                 p_tax_lines_tbl.exempt_certificate_number(ind)  := NULL;
3597              END IF;
3598           ELSE
3599              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3600              p_tax_lines_tbl.exempt_certificate_number(ind)  := NULL;
3601           END IF;
3602     p_tax_lines_tbl.exempt_reason(ind)    :=line_out_tab(1).fPriCoExmtRsnCd;
3603   ELSIF J=3 then
3604 
3605                  p_tax_lines_tbl.Tax(ind)       := 'CITY';
3606     p_tax_lines_tbl.tax_amount(ind)       := (city_tax_amount +
3607                     sec_city_tax_amount +
3608                                                                     add_city_tax_amount);
3609     p_tax_lines_tbl.unrounded_tax_amount(ind)   := city_tax_amount +
3610                     sec_city_tax_amount +
3611                                                                     add_city_tax_amount;
3612     p_tax_lines_tbl.tax_curr_tax_amount(ind)    := p_tax_lines_tbl.unrounded_tax_amount(ind)*p_currency_tab(1).exchange_rate;
3613     p_tax_lines_tbl.tax_rate_percentage(ind)    := city_tax_rate +
3614                     sec_city_tax_rate +
3615                                                                     add_city_tax_rate;
3616     p_tax_lines_tbl.taxable_amount(ind)      := line_out_tab(1).fPriCiTaxedAmt;
3617            IF nvl(line_out_tab(1).fPriCiExmtAmt, 0) <> 0 THEN
3618         IF (line_out_tab(1).fTransExtendedAmt <> 0) then
3619                  p_tax_lines_tbl.exempt_rate_modifier(ind) := line_out_tab(1).fPriCiExmtAmt/line_out_tab(1).fTransExtendedAmt;
3620                  p_tax_lines_tbl.exempt_certificate_number(ind)   := line_out_tab(1).fPriCustExmtCrtfNum;
3621              ELSE
3622                 p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3623                 p_tax_lines_tbl.exempt_certificate_number(ind)  := NULL;
3624              END IF;
3625           ELSE
3626              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3627              p_tax_lines_tbl.exempt_certificate_number(ind)  := NULL;
3628           END IF;
3629     p_tax_lines_tbl.exempt_reason(ind)     :=line_out_tab(1).fPriCiExmtRsnCd;
3630         else null;
3631   END IF;
3632 
3633         delete from zx_jurisdictions_gt;
3634         GET_TAX_JUR_CODE (p_location_id                 ,
3635                p_tax_lines_tbl.Situs(ind)    ,
3636                     p_tax_lines_tbl.Tax(ind)      ,
3637                           l_regime_code            ,
3638                      inv_out_rec.fInvDate     ,
3639                x_tax_jurisdiction_code   ,
3640                l_return_status
3641               );
3642 
3643   p_tax_lines_tbl.tax_jurisdiction(ind)      := x_tax_jurisdiction_code;
3644 
3645         delete from zx_jurisdictions_gt;
3646 
3647         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3648      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'tax line output ');
3649      FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.document_type_id('||ind||') = '|| to_char(p_tax_lines_tbl.document_type_id(ind)));
3650            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_id('||ind||') = '|| to_char(p_tax_lines_tbl.transaction_id(ind)));
3651            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_line_id('||ind||') = '||
3652                 to_char(p_tax_lines_tbl.transaction_line_id(ind)));
3653            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.trx_level_type('||ind||') = '||
3654                 p_tax_lines_tbl.trx_level_type(ind));
3655            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.country_code('||ind||') = '|| p_tax_lines_tbl.country_code(ind));
3656            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.Tax('||ind||') = '|| p_tax_lines_tbl.Tax(ind));
3657            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.situs('||ind||') = '|| p_tax_lines_tbl.situs(ind));
3658            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_jurisdiction('||ind||') = '||
3659     p_tax_lines_tbl.tax_jurisdiction(ind));
3660            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.tax_currency_code('||ind||') = '|| p_tax_lines_tbl.tax_currency_code(ind));
3661            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT('||ind||')  = '||
3662     to_char(p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind)));
3663            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_amount('||ind||') = '|| to_char(p_tax_lines_tbl.tax_amount(ind)));
3664            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_rate_percentage('||ind||') = '||
3665     to_char(p_tax_lines_tbl.tax_rate_percentage(ind)));
3666            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.taxable_amount('||ind||') = '||
3667     to_char(p_tax_lines_tbl.taxable_amount(ind)));
3668            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.State('||ind||') = '|| p_tax_lines_tbl.State(ind));
3669            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.County('||ind||') = '|| p_tax_lines_tbl.County(ind));
3670            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.City('||ind||') = '|| p_tax_lines_tbl.City(ind));
3671            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.unrounded_tax_amount('||ind||') = '||
3672     to_char(p_tax_lines_tbl.unrounded_tax_amount(ind)));
3673              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' line_out_tab(1).fPriCustExmtCrtfNum = '||
3674                 line_out_tab(1).fPriCustExmtCrtfNum);
3675              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.exempt_certificate_number('||ind||') = '||
3676                 p_tax_lines_tbl.exempt_certificate_number(ind));
3677 
3678            -- bug 6831713
3679            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute_category('||ind||') = '|| p_tax_lines_tbl.global_attribute_category(ind));
3680            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute2('||ind||') = '|| p_tax_lines_tbl.global_attribute2(ind));
3681            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute4('||ind||') = '|| p_tax_lines_tbl.global_attribute4(ind));
3682            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.global_attribute6('||ind||') = '|| p_tax_lines_tbl.global_attribute6(ind));
3683 
3684         END IF;
3685    END LOOP;
3686   END IF;
3687   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3688       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3689   END IF;
3690 
3691 END TAX_RESULTS_PROCESSING;
3692 
3693 
3694 PROCEDURE RESET_PARAMETERS(x_return_status OUT NOCOPY VARCHAR2) IS
3695  l_api_name           CONSTANT VARCHAR2(30) := 'RESET_PARAMETERS';
3696 BEGIN
3697 
3698    x_return_status := FND_API.G_RET_STS_SUCCESS;
3699 
3700     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3701      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3702     END IF;
3703 
3704 
3705     /*------------------------------------------------------
3706      | Initialize context_rec, inv_in_rec, and line_in_tab.|
3707      ------------------------------------------------------*/
3708     BEGIN
3709       ZX_TAX_VERTEX_QSU.QSUInitializeInvoice(context_rec,
3710                   inv_in_rec,
3711                   line_in_tab);
3712 
3713     EXCEPTION
3714         WHEN OTHERS THEN
3715             IF (g_level_exception >= g_current_runtime_level ) THEN
3716                FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3717       END IF;
3718      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3719      g_string :='Error in VERTEX API:'||to_char(SQLCODE)||SQLERRM;
3720      error_exception_handle(g_string);
3721      return;
3722     END;
3723 
3724 
3725     /*-----------------------------------------------------------
3726      | Set default value to the ARP_TAX_VERTEX_QSU.inv_in_rec|
3727      | and line_in_tab.            |
3728      -----------------------------------------------------------*/
3729     /* ARP_TAX_VERTEX_QSU.tQSUInvoiceRecord Record Type */
3730 
3731     inv_in_rec.fJurisSTGeoCd := NULL;
3732     inv_in_rec.fJurisSTStAbbrv := NULL;
3733     inv_in_rec.fJurisSTCoName := NULL;
3734     inv_in_rec.fJurisSTCiName := NULL;
3735     inv_in_rec.fJurisSTCiCmprssd := NULL;
3736     inv_in_rec.fJurisSTZipCd := NULL;
3737     inv_in_rec.fJurisSTCiSearchCd := NULL;
3738     inv_in_rec.fJurisSTInCi := NULL;
3739     inv_in_rec.fJurisSFGeoCd := NULL;
3740     inv_in_rec.fJurisSFStAbbrv := NULL;
3741     inv_in_rec.fJurisSFCoName := NULL;
3742     inv_in_rec.fJurisSFCiName := NULL;
3743     inv_in_rec.fJurisSFCiCmprssd := NULL;
3744     inv_in_rec.fJurisSFZipCd := NULL;
3745     inv_in_rec.fJurisSFCiSearchCd := NULL;
3746     inv_in_rec.fJurisSFInCi := NULL;
3747     inv_in_rec.fJurisOAGeoCd := NULL;
3748     inv_in_rec.fJurisOAStAbbrv := NULL;
3749     inv_in_rec.fJurisOACoName := NULL;
3750     inv_in_rec.fJurisOACiName := NULL;
3751     inv_in_rec.fJurisOACiCmprssd := NULL;
3752     inv_in_rec.fJurisOAZipCd := NULL;
3753     inv_in_rec.fJurisOACiSearchCd := NULL;
3754     inv_in_rec.fJurisOAInCi := NULL;
3755     inv_in_rec.fInvIdNum := NULL;
3756     inv_in_rec.fInvCntrlNum := NULL;
3757     inv_in_rec.fInvDate := NULL;
3758     inv_in_rec.fInvGrossAmt := NULL;
3759     inv_in_rec.fInvTotalTaxAmt := NULL;
3760     inv_in_rec.fInvNumLineItems := NULL;
3761     inv_in_rec.fTDMCustCd := NULL;
3762     inv_in_rec.fTDMCustClassCd := NULL;
3763     inv_in_rec.fCustTxblty := NULL;
3764     inv_in_rec.fTDMCompCd := NULL;
3765     inv_in_rec.fTDMDivCd := NULL;
3766     inv_in_rec.fTDMStoreCd := NULL;
3767 
3768     /* ARP_TAX_VERTEX_QSU.tQSULineItemTable Record Type */
3769     line_in_tab(1).fTransType := NULL;
3770     line_in_tab(1).fTransSubType := NULL;
3771     line_in_tab(1).fTransCd := NULL;
3772     line_in_tab(1).fTransDate := NULL;
3773     line_in_tab(1).fTransExtendedAmt := NULL;
3774     line_in_tab(1).fTransQuantity := NULL;
3775     line_in_tab(1).fTransTotalTaxAmt := NULL;
3776     line_in_tab(1).fTransCombinedRate := NULL;
3777     line_in_tab(1).fTransUserArea := NULL;
3778     line_in_tab(1).fTransStatusCd := NULL;
3779     line_in_tab(1).fTDMProdCd := NULL;
3780     line_in_tab(1).fTDMProdRptngCd := NULL;
3781     line_in_tab(1).fProdTxblty := NULL;
3782     line_in_tab(1).fPriTaxingJuris := NULL;
3783     line_in_tab(1).fPriCustExmtCrtfNum := NULL;
3784     line_in_tab(1).fPriStTxblty := NULL;
3785     line_in_tab(1).fPriStTaxType := NULL;
3786     line_in_tab(1).fPriStTaxedAmt := NULL;
3787     line_in_tab(1).fPriStExmtAmt := NULL;
3788     line_in_tab(1).fPriStExmtRsnCd := NULL;
3789     line_in_tab(1).fPriStNonTxblAmt := NULL;
3790     line_in_tab(1).fPriStNonTxblRsnCd := NULL;
3791     line_in_tab(1).fPriStRate := NULL;
3792     line_in_tab(1).fPriStRateEffDate := NULL;
3793     line_in_tab(1).fPriStRateType := NULL;
3794     line_in_tab(1).fPriStTaxAmt := NULL;
3795     line_in_tab(1).fPriStTaxIncluded := NULL;
3796     line_in_tab(1).fPriCoTxblty := NULL;
3797     line_in_tab(1).fPriCoTaxType := NULL;
3798     line_in_tab(1).fPriCoTaxedAmt := NULL;
3799     line_in_tab(1).fPriCoExmtAmt := NULL;
3800     line_in_tab(1).fPriCoExmtRsnCd := NULL;
3801     line_in_tab(1).fPriCoNonTxblAmt := NULL;
3802     line_in_tab(1).fPriCoNonTxblRsnCd := NULL;
3803     line_in_tab(1).fPriCoRate := NULL;
3804     line_in_tab(1).fPriCoRateEffDate := NULL;
3805     line_in_tab(1).fPriCoRateType := NULL;
3806     line_in_tab(1).fPriCoTaxAmt := NULL;
3807     line_in_tab(1).fPriCoTaxIncluded := NULL;
3808     line_in_tab(1).fPriCoTxblty := NULL;
3809     line_in_tab(1).fPriCiTxblty := NULL;
3810     line_in_tab(1).fPriCiTaxType := NULL;
3811     line_in_tab(1).fPriCiTaxedAmt := NULL;
3812     line_in_tab(1).fPriCiExmtAmt := NULL;
3813     line_in_tab(1).fPriCiExmtRsnCd := NULL;
3814     line_in_tab(1).fPriCiNonTxblAmt := NULL;
3815     line_in_tab(1).fPriCiNonTxblRsnCd := NULL;
3816     line_in_tab(1).fPriCiRate := NULL;
3817     line_in_tab(1).fPriCiRateEffDate := NULL;
3818     line_in_tab(1).fPriCiRateType := NULL;
3819     line_in_tab(1).fPriCiTaxAmt := NULL;
3820     line_in_tab(1).fPriCiTaxIncluded := NULL;
3821     line_in_tab(1).fPriDiTxblty := NULL;
3822     line_in_tab(1).fPriDiTaxType := NULL;
3823     line_in_tab(1).fPriDiTaxedAmt := NULL;
3824     line_in_tab(1).fPriDiExmtAmt := NULL;
3825     line_in_tab(1).fPriDiExmtRsnCd := NULL;
3826     line_in_tab(1).fPriDiNonTxblAmt := NULL;
3827     line_in_tab(1).fPriDiNonTxblRsnCd := NULL;
3828     line_in_tab(1).fPriDiRate := NULL;
3829     line_in_tab(1).fPriDiRateEffDate := NULL;
3830     line_in_tab(1).fPriDiRateType := NULL;
3831     line_in_tab(1).fPriDiTaxAmt := NULL;
3832     line_in_tab(1).fPriDiTaxIncluded := NULL;
3833     line_in_tab(1).fPriDiAppliesTo := NULL;
3834     line_in_tab(1).fAddTaxingJuris := NULL;
3835     line_in_tab(1).fAddCustExmtCrtfNum := NULL;
3836     line_in_tab(1).fAddCoTxblty := NULL;
3837     line_in_tab(1).fAddCoTaxType := NULL;
3838     line_in_tab(1).fAddCoTaxedAmt := NULL;
3839     line_in_tab(1).fAddCoExmtAmt := NULL;
3840     line_in_tab(1).fAddCoExmtRsnCd := NULL;
3841     line_in_tab(1).fAddCoNonTxblAmt := NULL;
3842     line_in_tab(1).fAddCoNonTxblRsnCd := NULL;
3843     line_in_tab(1).fAddCoRate := NULL;
3844     line_in_tab(1).fAddCoRateEffDate := NULL;
3845     line_in_tab(1).fAddCoRateType := NULL;
3846     line_in_tab(1).fAddCoTaxAmt := NULL;
3847     line_in_tab(1).fAddCoTaxIncluded := NULL;
3848     line_in_tab(1).fAddCiTxblty := NULL;
3849     line_in_tab(1).fAddCiTaxType := NULL;
3850     line_in_tab(1).fAddCiTaxedAmt := NULL;
3851     line_in_tab(1).fAddCiExmtAmt := NULL;
3852     line_in_tab(1).fAddCiExmtRsnCd := NULL;
3853     line_in_tab(1).fAddCiNonTxblAmt := NULL;
3854     line_in_tab(1).fAddCiNonTxblRsnCd := NULL;
3855     line_in_tab(1).fAddCiRate := NULL;
3856     line_in_tab(1).fAddCiRateEffDate := NULL;
3857     line_in_tab(1).fAddCiRateType := NULL;
3858     line_in_tab(1).fAddCiTaxAmt := NULL;
3859     line_in_tab(1).fAddCiTaxIncluded := NULL;
3860     line_in_tab(1).fAddDiTxblty := NULL;
3861     line_in_tab(1).fAddDiTaxType := NULL;
3862     line_in_tab(1).fAddDiTaxedAmt := NULL;
3863     line_in_tab(1).fAddDiExmtAmt := NULL;
3864     line_in_tab(1).fAddDiExmtRsnCd := NULL;
3865     line_in_tab(1).fAddDiNonTxblAmt := NULL;
3866     line_in_tab(1).fAddDiNonTxblRsnCd := NULL;
3867     line_in_tab(1).fAddDiRate := NULL;
3868     line_in_tab(1).fAddDiRateEffDate := NULL;
3869     line_in_tab(1).fAddDiRateType := NULL;
3870     line_in_tab(1).fAddDiTaxAmt := NULL;
3871     line_in_tab(1).fAddDiTaxIncluded := NULL;
3872     line_in_tab(1).fAddDiAppliesTo := NULL;
3873 
3874     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3875      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3876     END IF;
3877 END RESET_PARAMETERS;
3878 
3879 PROCEDURE CREATE_TAX_LINE(
3880 p_tax     in VARCHAR2,
3881 p_amount  in number,
3882 x_return_status OUT NOCOPY VARCHAR2) IS
3883 
3884  l_api_name           CONSTANT VARCHAR2(30) := 'CREATE_TAX_LINE';
3885  l_precision             number;
3886  l_mau                   number;
3887  l_rounding_rule         varchar2(30);
3888  l_error_buffer          varchar2(200);
3889  l_return_Status         VARCHAR2(30);
3890 BEGIN
3891    x_return_status := FND_API.G_RET_STS_SUCCESS;
3892 
3893    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3894       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3895    END IF;
3896 
3897 /* For Tax only Credit Memo and Tax only adjustment, user does not enter the
3898    tax lines manually. Instead, the tax lines are calculated/prorated by eBTax.
3899    The number of tax lines for the trx line can be known.
3900    Hence, we can consoliate all the tax lines and make 1 call to Vertex engine.
3901    The ELSE clause of this IF statement handles the manually entered tax lines.
3902 */
3903 
3904    IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3905       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3906                      'Input Parameters :- DOCUMENT_TYPE : '||l_document_type||
3907                      ', TAX : '||p_tax||
3908                      ', TAX_AMOUNT : '||TO_CHAR(p_amount));
3909    END IF;
3910 
3911    IF l_document_type in ('TAX_ONLY_CREDIT_MEMO'
3912                          ,'TAX_ONLY_ADJUSTMENT'
3913                          ,'INVOICE_ADJUSTMENT') THEN
3914 
3915       l_line_level_action:='CREATE';
3916 
3917       IF INSTR(upper(p_tax),'STATE') > 0 THEN
3918          g_StTaxAmt := p_amount;
3919       ELSIF INSTR(upper(p_tax),'COUNTY') > 0 THEN
3920          g_CoTaxAmt := p_amount;
3921       ELSIF INSTR(upper(p_tax),'CITY') > 0 THEN
3922          g_CiTaxAmt := p_amount;
3923       ELSIF (p_tax='LOCATION') THEN
3924          BEGIN
3925           SELECT global_attribute2, global_attribute4, global_attribute6, tax_amt,
3926                  precision, minimum_accountable_unit, rounding_rule_code
3927           INTO g_StTaxAmt, g_CoTaxAmt, g_CiTaxAmt, g_TotalTaxAmt,
3928                l_precision, l_mau, l_rounding_rule
3929           FROM zx_lines
3930           WHERE application_id = NVL2(pg_adj_doc_doc_type_id_tab(I),222, NULL)
3931           AND entity_code = NVL2(pg_adj_doc_doc_type_id_tab(I),'TRANSACTIONS',NULL)
3932           AND event_class_code = decode(pg_adj_doc_doc_type_id_tab(I), 4, 'INVOICE',
3933                                                                        5, 'DEBIT_MEMO',
3934                                                                        6, 'CREDIT_MEMO', null)
3935           AND trx_id = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_trx_id_tab(I), NULL)
3936           AND trx_line_id = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_line_id_tab(I), NULL)
3937           AND trx_level_type = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_trx_lev_type_tab(I), NULL);
3938         EXCEPTION
3939           WHEN OTHERS THEN
3940             IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
3941               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,
3942                              'Error occured while fetching amounts from Adjusted Doc. '||SQLERRM);
3943             END IF;
3944             g_StTaxAmt := 0;
3945             g_CoTaxAmt := 0;
3946             g_CiTaxAmt := 0;
3947         END;
3948 
3949         -- If condition added for Bug#12596517 to handle
3950         -- the error 'divisor is equal to zero'
3951         IF g_TotalTaxAmt = 0 THEN
3952           g_StTaxAmt := 0;
3953           g_CoTaxAmt := 0;
3954           g_CiTaxAmt := 0;
3955         ELSE
3956           g_StTaxAmt := g_StTaxAmt * (p_amount/ g_TotalTaxAmt);
3957           g_CoTaxAmt := g_CoTaxAmt * (p_amount/ g_TotalTaxAmt);
3958           g_CiTaxAmt := g_CiTaxAmt * (p_amount/ g_TotalTaxAmt);
3959           g_TotalTaxAmt := p_amount;
3960         END IF;
3961 
3962         g_StTaxAmt := ZX_TDS_TAX_ROUNDING_PKG.round_tax(g_StTaxAmt,
3963                                                         l_rounding_rule,
3964                                                         l_mau,
3965                                                         l_precision,
3966                                                         x_return_status,
3967                                                         l_error_buffer
3968                                                         );
3969         g_CoTaxAmt := ZX_TDS_TAX_ROUNDING_PKG.round_tax(g_CoTaxAmt,
3970                                                         l_rounding_rule,
3971                                                         l_mau,
3972                                                         l_precision,
3973                                                         x_return_status,
3974                                                         l_error_buffer
3975                                                         );
3976         g_CiTaxAmt := p_amount - (g_StTaxAmt + g_CoTaxAmt);
3977       END IF;
3978 
3979       IF NOT l_trx_line_context_changed THEN
3980          RETURN;
3981       END IF;
3982 
3983       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3984          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3985                         'Encountered the last tax line for the trx line.');
3986       END IF;
3987 
3988    ELSE
3989 
3990       IF l_document_type IN ('TAX_ONLY_INVOICE') THEN
3991          l_line_level_action:='CREATE';
3992       ELSE
3993          l_line_level_action:='TAX_LINE_DELETE';
3994          l_document_type := 'TAX_LINE_SYNC';
3995       END IF;
3996 
3997       IF INSTR(upper(p_tax),'STATE') > 0 THEN
3998          g_TotalTaxAmt := p_amount; -- Bug 6831713
3999          g_StTaxAmt := p_amount;
4000          g_CoTaxAmt := 0;
4001          g_CiTaxAmt := 0;
4002       ELSIF INSTR(upper(p_tax),'COUNTY') > 0 THEN
4003          g_TotalTaxAmt := p_amount; -- Bug 6831713
4004          g_StTaxAmt := 0;
4005          g_CoTaxAmt := p_amount;
4006          g_CiTaxAmt := 0;
4007       ELSIF INSTR(upper(p_tax),'CITY') > 0 THEN
4008          g_TotalTaxAmt := p_amount; -- Bug 6831713
4009          g_StTaxAmt := 0;
4010          g_CoTaxAmt := 0;
4011          g_CiTaxAmt := p_amount;
4012       ELSIF (p_tax='LOCATION') THEN -- Bug 6831713
4013          g_TotalTaxAmt := p_amount;
4014          g_StTaxAmt := 0;
4015          g_CoTaxAmt := 0;
4016          g_CiTaxAmt := 0;
4017          /* Ideally, we should implement g_StTaxAmt := p_amount * GA_2 / (GA_2 + GA_4 + GA_6)
4018                                          g_CoTaxAmt := p_amount * GA_4 / (GA_2 + GA_4 + GA_6)
4019                                          g_CiTaxAmt := p_amount * GA_6 / (GA_2 + GA_4 + GA_6)
4020             With above implementation we are relying on Vertex to distribute amounts */
4021       END IF;
4022 
4023    END IF;
4024 
4025    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4026       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax : '||p_tax );
4027       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_amount : '||p_amount);
4028       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_StTaxAmt : '||g_StTaxAmt);
4029       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_CoTaxAmt : '||g_CoTaxAmt);
4030       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_CiTaxAmt : '||g_CiTaxAmt);
4031       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_TotalTaxAmt : '||g_TotalTaxAmt);
4032    END IF;
4033 
4034    RESET_PARAMETERS(l_return_status);
4035    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4036       IF (g_level_exception >= g_current_runtime_level ) THEN
4037          FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4038       END IF;
4039       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4040       g_string :='Failed in RESET_PARAMETERS procedure';
4041       error_exception_handle(g_string);
4042       RETURN;
4043    END IF;
4044 
4045    SET_PARAMETERS(l_return_status);
4046    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4047            IF (g_level_exception >= g_current_runtime_level ) THEN
4048                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4049            END IF;
4050      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4051      g_string :='Failed in SET_PARAMETERS procedure';
4052      error_exception_handle(g_string);
4053      RETURN;
4054    END IF;
4055 
4056    CALCULATE_TAX(l_return_status);
4057 
4058    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4059            IF (g_level_exception >= g_current_runtime_level ) THEN
4060                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4061            END IF;
4062      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4063      g_string :='Failed in CALCULATE_TAX procedure';
4064      error_exception_handle(g_string);
4065      RETURN;
4066    END IF;
4067 
4068    IF (l_document_type = 'TAX_ONLY_ADJUSTMENT') AND pg_Line_char8_tab(I) <> 'Y' THEN
4069      NULL;
4070    ELSE
4071      WRITE_TO_VERTEX_REPOSITORY(l_return_status);
4072    END IF;
4073 
4074    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4075            IF (g_level_exception >= g_current_runtime_level ) THEN
4076                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4077            END IF;
4078      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4079      g_string :='Failed in WRITE_TO_VERTEX_REPOSITORY procedure';
4080      error_exception_handle(g_string);
4081      RETURN;
4082    END IF;
4083 
4084    g_StTaxAmt:= 0;
4085    g_CoTaxAmt:= 0;
4086    g_CiTaxAmt:= 0;
4087    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4088      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4089    END IF;
4090 
4091 EXCEPTION
4092   -- Added exception code for Bug#12596517 --
4093   -- to print the exception in log file    --
4094   WHEN OTHERS THEN
4095     l_error_buffer := SUBSTRB(SQLERRM,1,200);
4096     IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
4097       FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name||'.ERROR',l_error_buffer);
4098     END IF;
4099     RAISE;
4100 
4101 END CREATE_TAX_LINE;
4102 
4103 Procedure get_doc_and_ext_att_info(p_evnt_cls_mapping_id IN  ZX_EVNT_CLS_MAPPINGS.event_class_mapping_id%type,
4104            p_transaction_id      IN  ZX_LINES.trx_id%type,
4105                                    p_transaction_line_id IN  ZX_LINES.trx_line_id%type,
4106            p_trx_level_type      IN  ZX_LINES.trx_level_type%type,
4107                                    p_regime_code         IN  ZX_LINES.tax_regime_code%type,
4108                                    p_tax_provider_id     IN  ZX_LINES.tax_provider_id%type,
4109            x_return_status   OUT NOCOPY VARCHAR2 ) is
4110 
4111  trx_line_dist_tbl          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl%type;
4112  event_class_rec            ZX_API_PUB.event_class_rec_type;
4113  l_return_status            VARCHAR2(30);
4114  l_APPLICATION_ID           NUMBER;
4115  l_ENTITY_CODE              VARCHAR2(20);
4116  l_EVENT_CLASS_CODE         VARCHAR2(20);
4117  l_TRX_ID                   NUMBER;
4118  l_TRX_LINE_ID              NUMBER;
4119  l_TRX_LEVEL_TYPE           VARCHAR2(20);
4120  l_neg_line_gt_exists       NUMBER;
4121 
4122  l_api_name           CONSTANT VARCHAR2(30) := 'GET_DOC_AND_EXT_ATT_INFO';
4123 Begin
4124  x_return_status := FND_API.G_RET_STS_SUCCESS;
4125 
4126    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4127      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
4128    END IF;
4129 
4130    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4131        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_transaction_id : '||p_transaction_id );
4132        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_transaction_line_id : '||p_transaction_line_id);
4133        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_regime_code : '||p_regime_code);
4134        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_provider_id : '||p_tax_provider_id);
4135    END IF;
4136 
4137    l_neg_line_gt_exists := 0;
4138    BEGIN
4139       SELECT 1
4140         INTO l_neg_line_gt_exists
4141         FROM zx_ptnr_neg_line_gt
4142        WHERE event_class_mapping_id = p_evnt_cls_mapping_id
4143          AND trx_id                 = p_transaction_id
4144          AND trx_line_id            = p_transaction_line_id
4145          AND trx_level_type         = p_trx_level_type;
4146    EXCEPTION
4147       WHEN OTHERS THEN
4148          l_neg_line_gt_exists := 0;
4149    END;
4150 
4151 /* For given transaction line id, record already exists in zx_ptnr_neg_line_gt, then there is no need to recreate it */
4152 
4153    IF l_neg_line_gt_exists <> 0 THEN
4154       RETURN;
4155    END IF;
4156 
4157    BEGIN
4158       SELECT APPLICATION_ID,
4159              ENTITY_CODE      ,
4160              EVENT_CLASS_CODE,
4161              TRX_ID ,
4162              TRX_LINE_ID,
4163              TRX_LEVEL_TYPE
4164         INTO l_APPLICATION_ID,
4165              l_ENTITY_CODE      ,
4166              l_EVENT_CLASS_CODE,
4167              l_TRX_ID ,
4168              l_TRX_LINE_ID,
4169              l_TRX_LEVEL_TYPE
4170         FROM zx_lines_det_factors
4171        WHERE event_class_mapping_id  = p_evnt_cls_mapping_id
4172          AND   trx_id      = p_transaction_id
4173          AND  trx_line_id    = p_transaction_line_id
4174          AND   trx_level_type    = p_trx_level_type;
4175    EXCEPTION
4176       WHEN no_data_found THEN
4177          IF (g_level_exception >= g_current_runtime_level ) THEN
4178             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4179          END IF;
4180          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4181          g_string :='No data found in zx_lines_det_factors ';
4182          error_exception_handle(g_string);
4183          RETURN;
4184    END;
4185 
4186 
4187 /* Since, we need to pass the item line information associated to the
4188    tax line, populate the trx_line_dist_tbl and pass specific trx_line_id */
4189 trx_line_dist_tbl.application_id(1)  :=l_APPLICATION_ID;
4190 trx_line_dist_tbl.TRX_LINE_ID(1)  :=l_TRX_LINE_ID;
4191 trx_line_dist_tbl.TRX_LEVEL_TYPE(1)  :=l_TRX_LEVEL_TYPE;
4192 
4193 event_class_rec.APPLICATION_ID    :=l_APPLICATION_ID;
4194 event_class_rec.ENTITY_CODE    :=l_ENTITY_CODE;
4195 event_class_rec.EVENT_CLASS_CODE  :=l_EVENT_CLASS_CODE;
4196 event_class_rec.TRX_ID      :=l_TRX_ID;
4197 --event_class_rec.TRX_LINE_ID             :=l_TRX_LINE_ID;
4198 
4199 
4200   zx_r11i_tax_partner_pkg.copy_trx_line_for_ptnr_bef_upd
4201      (p_trx_line_dist_tbl       => trx_line_dist_tbl,
4202       p_event_class_rec         => event_class_rec,
4203       p_update_index            => 1,
4204       p_trx_copy_for_tax_update => 'Y' ,
4205       p_regime_code             => p_regime_code,
4206       p_tax_provider_id         => p_tax_provider_id,
4207       x_return_status           => l_return_status);
4208 
4209       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4210            IF (g_level_exception >= g_current_runtime_level ) THEN
4211                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4212            END IF;
4213      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4214      g_string :='Not able to copy the line information :Failed with an exception';
4215      error_exception_handle(g_string);
4216      return;
4217       END IF;
4218 
4219    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4220      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4221    END IF;
4222 
4223 END get_doc_and_ext_att_info;
4224 
4225 Function CHECK_IN_CACHE(p_internal_organization_id number,
4226                         P_document_type_id number,
4227       p_transaction_id number,
4228       p_transaction_line_id number) return boolean is
4229 
4230 l_index NUMBER;
4231 l_api_name           CONSTANT VARCHAR2(30) := 'CHECK_IN_CACHE';
4232 Begin
4233 
4234    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4235      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
4236    END IF;
4237 
4238    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4239        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_INTERNAL_ORGANIZATION_ID : ' || p_internal_organization_id );
4240        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_DOCUMENT_TYPE_ID : '|| P_document_type_id);
4241        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_TRANSACTION_ID : '|| p_transaction_id);
4242        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_TRANSACTION_LINE_ID : '|| p_transaction_line_id);
4243    END IF;
4244 
4245 For l_index in 1 .. cache_index loop
4246   if(cache_table(l_index).internal_organization_id = p_internal_organization_id and
4247      cache_table(l_index).document_type_id   = P_document_type_id and
4248      cache_table(l_index).transaction_id   = p_transaction_id and
4249      cache_table(l_index).transaction_line_id   = p_transaction_line_id) then
4250 
4251      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4252        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Found in the Cache' );
4253      END IF;
4254 
4255      Return TRUE;
4256   end if;
4257  end loop;
4258      cache_index    :=cache_index+1;
4259      cache_table(cache_index).internal_organization_id  := p_internal_organization_id;
4260      cache_table(cache_index).document_type_id    := P_document_type_id;
4261      cache_table(cache_index).transaction_id    := p_transaction_id;
4262      cache_table(cache_index).transaction_line_id  := p_transaction_line_id;
4263 
4264      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4265        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Not Found in the Cache' );
4266      END IF;
4267 
4268      return FALSE;
4269 
4270      IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4271         FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4272      END IF;
4273 
4274 End Check_in_cache;
4275 
4276 PROCEDURE POPULATE_SYNC_TAX_AMTS(p_sync_tax_cnt          IN  NUMBER
4277                                , p_tax                   IN  zx_lines.tax%type
4278                                , x_output_sync_tax_lines IN OUT NOCOPY zx_tax_partner_pkg.output_sync_tax_lines_tbl_type
4279                                , x_return_status         OUT NOCOPY VARCHAR2) IS
4280 
4281  l_api_name             CONSTANT VARCHAR2(30) := 'POPULATE_SYNC_TAX_AMTS';
4282 
4283 BEGIN
4284    x_return_status := FND_API.G_RET_STS_SUCCESS;
4285 
4286    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4287      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
4288    END IF;
4289 
4290    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4291        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_sync_tax_cnt : '||p_sync_tax_cnt);
4292        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax : '||p_tax);
4293    END IF;
4294 
4295 /* For Tax only Credit Memo and Tax only adjustment, we consoliate all the tax lines and make 1 call to Vertex engine.
4296    The output is available at the end of the processing of the last tax line.
4297    l_trx_line_context_changed indicates that the tax line being processed is the last tax line for the trx line.
4298 */
4299    IF l_document_type in ('TAX_ONLY_CREDIT_MEMO'
4300                          ,'TAX_ONLY_ADJUSTMENT'
4301                          ,'INVOICE_ADJUSTMENT') THEN
4302       IF INSTR(upper(p_tax),'STATE') > 0 THEN
4303          l_state_tax_cnt := p_sync_tax_cnt;
4304       ELSIF INSTR(upper(p_tax),'COUNTY') > 0 THEN
4305          l_county_tax_cnt := p_sync_tax_cnt;
4306       ELSIF INSTR(upper(p_tax),'CITY') > 0 THEN
4307          l_city_tax_cnt := p_sync_tax_cnt;
4308       END IF;
4309       IF l_trx_line_context_changed THEN
4310          IF l_state_tax_cnt IS NOT NULL THEN
4311             x_output_sync_tax_lines(l_state_tax_cnt).TAX_RATE_PERCENTAGE  := line_out_tab(1).fPriStRate*100;
4312             x_output_sync_tax_lines(l_state_tax_cnt).TAXABLE_AMOUNT       := line_out_tab(1).fPriStTaxedAmt;
4313          END IF;
4314          IF l_county_tax_cnt IS NOT NULL THEN
4315             x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE := line_out_tab(1).fPriCoRate*100 + Nvl(line_out_tab(1).fAddCoRate,0) * 100;
4316             x_output_sync_tax_lines(l_county_tax_cnt).TAXABLE_AMOUNT      := line_out_tab(1).fPriCoTaxedAmt;
4317          END IF;
4318          IF l_city_tax_cnt IS NOT NULL THEN
4319             x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE   := line_out_tab(1).fPriCiRate*100 + Nvl(line_out_tab(1).fAddCiRate,0) * 100;
4320             x_output_sync_tax_lines(l_city_tax_cnt).TAXABLE_AMOUNT        := line_out_tab(1).fPriCiTaxedAmt;
4321          END IF;
4322 
4323          IF line_out_tab(1).fPriDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi and l_city_tax_cnt IS NOT NULL THEN
4324            x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE
4325                      := x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fPriDiRate,0) * 100;
4326          ELSIF l_county_tax_cnt IS NOT NULL THEN
4327            x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE
4328                      := x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fPriDiRate,0) * 100;
4329          END IF;
4330 
4331          IF line_out_tab(1).fAddDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi and l_city_tax_cnt IS NOT NULL THEN
4332            x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE
4333                      := x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fAddDiRate,0) * 100;
4334          ELSIF l_county_tax_cnt IS NOT NULL THEN
4335            x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE
4336                      := x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fAddDiRate,0) * 100;
4337          END IF;
4338 
4339          l_state_tax_cnt := null;
4340          l_county_tax_cnt := null;
4341          l_city_tax_cnt := null;
4342       ELSE
4343          RETURN;
4344       END IF;
4345    ELSE
4346       IF INSTR(upper(p_tax),'STATE') > 0 THEN
4347          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := line_out_tab(1).fPriStRate*100;
4348          x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := line_out_tab(1).fPriStTaxedAmt;
4349       ELSIF INSTR(upper(p_tax),'COUNTY') > 0 THEN
4350          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := line_out_tab(1).fPriCoRate*100 + Nvl(line_out_tab(1).fAddCoRate,0) * 100;
4351          x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := line_out_tab(1).fPriCoTaxedAmt;
4352       ELSIF INSTR(upper(p_tax),'CITY') > 0 THEN
4353          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := line_out_tab(1).fPriCiRate*100 + Nvl(line_out_tab(1).fAddCiRate,0) * 100;
4354          x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := line_out_tab(1).fPriCiTaxedAmt;
4355       END IF;
4356 
4357        IF line_out_tab(1).fPriDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi THEN
4358         IF INSTR(upper(p_tax),'CITY') > 0 THEN
4359          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE
4360                    := x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fPriDiRate,0) * 100;
4361         END IF;
4362        ELSE
4363         IF INSTR(upper(p_tax),'COUNTY') > 0 THEN
4364          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE
4365                    := x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fPriDiRate,0) * 100;
4366         END IF;
4367        END IF;
4368 
4369        IF line_out_tab(1).fAddDiAppliesTo = ZX_TAX_VERTEX_QSU.cQSUDiApplyCi THEN
4370         IF INSTR(upper(p_tax),'CITY') > 0 THEN
4371          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE
4372                    := x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fAddDiRate,0) * 100;
4373         END IF;
4374        ELSE
4375         IF INSTR(upper(p_tax),'COUNTY') > 0 THEN
4376          x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE
4377                    := x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE + nvl(line_out_tab(1).fAddDiRate,0) * 100;
4378         END IF;
4379        END IF;
4380 
4381    END IF;
4382 
4383    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4384        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE : '||x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE);
4385        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT : '||x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT);
4386    END IF;
4387 
4388    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4389       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4390    END IF;
4391 
4392 END POPULATE_SYNC_TAX_AMTS;
4393 
4394 PROCEDURE SYNCHRONIZE_VERTEX_REPOSITORY
4395    (x_output_sync_tax_lines OUT NOCOPY zx_tax_partner_pkg.output_sync_tax_lines_tbl_type,
4396     x_return_status         OUT NOCOPY VARCHAR2,
4397     x_messages_tbl          OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type) IS
4398 
4399   CURSOR TAX_LINES_TO_BE_PROCESSED is
4400     SELECT
4401       DOCUMENT_TYPE_ID           ,
4402       TRANSACTION_ID             ,
4403       TRANSACTION_LINE_ID        ,
4404       TRX_LEVEL_TYPE             ,
4405       COUNTRY_CODE               ,
4406       TAX                        ,
4407       SITUS                      ,
4408       TAX_JURISDICTION           ,
4409       TAX_CURRENCY_CODE          ,
4410       TAX_AMOUNT                 ,
4411       TAX_CURR_TAX_AMT           ,
4412       TAX_RATE_PERCENTAGE        ,
4413       TAXABLE_AMOUNT             ,
4414       EXEMPT_RATE_MODIFIER       ,
4415       EXEMPT_REASON              ,
4416       TAX_ONLY_LINE_FLAG         ,
4417       INCLUSIVE_TAX_LINE_FLAG    ,
4418       USE_TAX_FLAG               ,
4419       EBIZ_OVERRIDE_FLAG         ,
4420       USER_OVERRIDE_FLAG         ,
4421       LAST_MANUAL_ENTRY          ,
4422       MANUALLY_ENTERED_FLAG      ,
4423       CANCEL_FLAG                ,
4424       DELETE_FLAG
4425     FROM
4426       ZX_SYNC_TAX_LINES_INPUT_V
4427     ORDER BY
4428       DOCUMENT_TYPE_ID,
4429       TRANSACTION_ID,
4430       TRANSACTION_LINE_ID,
4431       TRX_LEVEL_TYPE;
4432 
4433 
4434   SYNC_TAX_LINES              SYNC_TAX_LINES_TBL;
4435   l_internal_organization_id  ZX_SYNC_HDR_INPUT_V.internal_organization_id%type;
4436   l_document_type_id          ZX_SYNC_HDR_INPUT_V.document_type_id%type;
4437   l_transaction_id            ZX_SYNC_HDR_INPUT_V.transaction_id%type;
4438   l_legal_entity_number       ZX_SYNC_HDR_INPUT_V.legal_entity_number%type;
4439   l_establishment_number      ZX_SYNC_HDR_INPUT_V.establishment_number%type;  -- Bug 5139731
4440   l_transaction_line_id       ZX_SYNC_TAX_LINES_INPUT_V.transaction_line_id%type;
4441   l_event_type         VARCHAR2(20);
4442   l_write_record       BOOLEAN;
4443   l_event_class_code   VARCHAR2(20);
4444   l_application_id     NUMBER;
4445   l_entity_code        VARCHAR2(20);
4446   l_trx_level_type     VARCHAR2(20);
4447   l_regime_code        ZX_REGIMES_B.tax_regime_code%type;
4448   l_amount             NUMBER;
4449 --  l_found              BOOLEAN;
4450   l_debug_count        NUMBER;
4451   l_api_name           CONSTANT VARCHAR2(30) := 'SYNCHRONIZE_VERTEX_REPOSITORY';
4452   l_return_status      VARCHAR2(30);
4453 --  l_tax_code           VARCHAR2(100);
4454 --  l_tax_type           VARCHAR2(100);
4455 --  l_tax_flag           VARCHAR2(5);
4456 --  l_trx_type_id        NUMBER;
4457 --  l_org_id             NUMBER;
4458 
4459   char_ctrx_id         VARCHAR2(32);
4460   l_trx_number         VARCHAR2(150);
4461   l_statements         VARCHAR2(2000);
4462   cnt                  NUMBER;
4463 
4464   l_neg_tax_line_count NUMBER;       -- Added for Bug#12544630
4465   l_neg_trx_line_count NUMBER;       -- Added for Bug#12544630
4466   l_update_mode        BOOLEAN;      -- Added for Bug#12544630
4467 
4468   l_line_action  zx_lines_det_factors.line_level_action%type;
4469   l_adj_trx_id   ZX_SYNC_HDR_INPUT_V.transaction_id%type;
4470 BEGIN
4471    x_return_status := FND_API.G_RET_STS_SUCCESS;
4472    err_count       := 0;
4473 
4474    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4475      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
4476    END IF;
4477 
4478    -- BUG7435393
4479    IF ZX_API_PUB.G_PUB_SRVC <> 'SYNCHRONIZE_TAX_REPOSITORY' THEN
4480 
4481      BEGIN
4482        SELECT internal_organization_id,
4483               document_type_id,
4484               transaction_id,
4485               legal_entity_number,
4486               establishment_number
4487          INTO l_internal_organization_id,
4488               l_document_type_id,
4489               l_transaction_id,
4490               l_legal_entity_number,
4491               l_establishment_number    -- Bug 5139731
4492          FROM ZX_SYNC_HDR_INPUT_V;
4493      EXCEPTION
4494        WHEN TOO_MANY_ROWS THEN
4495          IF (g_level_exception >= g_current_runtime_level ) THEN
4496             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4497          End if;
4498          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4499          g_string :='More than one row exist at header level';
4500          error_exception_handle(g_string);
4501          RETURN;
4502      END;
4503 
4504      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4505        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4506           'Transaction_id = ' || l_transaction_id);
4507        BEGIN
4508          SELECT count(*)
4509            INTO l_debug_count
4510            FROM zx_detail_tax_lines_gt;
4511        END;
4512        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4513           'Detail_Tax_Lines_Gt Count = ' || l_debug_count);
4514      END IF;
4515 
4516      OPEN tax_lines_to_be_processed;
4517 
4518      FETCH tax_lines_to_be_processed BULK COLLECT INTO
4519         SYNC_TAX_LINES.document_type_id,
4520         SYNC_TAX_LINES.transaction_id,
4521         SYNC_TAX_LINES.transaction_line_id,
4522         SYNC_TAX_LINES.trx_level_type,
4523         SYNC_TAX_LINES.country_code,
4524         SYNC_TAX_LINES.tax,
4525         SYNC_TAX_LINES.situs,
4526         SYNC_TAX_LINES.tax_jurisdiction,
4527         SYNC_TAX_LINES.tax_currency_code,
4528         SYNC_TAX_LINES.tax_amount,
4529         SYNC_TAX_LINES.tax_curr_tax_amount,
4530         SYNC_TAX_LINES.tax_rate_percentage,
4531         SYNC_TAX_LINES.taxable_amount,
4532         SYNC_TAX_LINES.exempt_rate_modifier,
4533         SYNC_TAX_LINES.exempt_reason,
4534         SYNC_TAX_LINES.tax_only_line_flag,
4535         SYNC_TAX_LINES.inclusive_tax_line_flag,
4536         SYNC_TAX_LINES.use_tax_flag,
4537         SYNC_TAX_LINES.ebiz_override_flag,
4538         SYNC_TAX_LINES.user_override_flag,
4539         SYNC_TAX_LINES.last_manual_entry,
4540         SYNC_TAX_LINES.manually_entered_flag,
4541         SYNC_TAX_LINES.cancel_flag,
4542         SYNC_TAX_LINES.delete_flag
4543       LIMIT C_LINES_PER_COMMIT;
4544 
4545      BEGIN
4546        SELECT event_class_code
4547              ,application_id
4548              ,entity_code
4549          INTO l_event_class_code
4550              ,l_application_id
4551              ,l_entity_code
4552          FROM zx_evnt_cls_mappings
4553         WHERE EVENT_CLASS_MAPPING_ID = SYNC_TAX_LINES.document_type_id(1);
4554      END;
4555 
4556      -- SELECT output_tax_classification_code , receivables_trx_type_id,
4557      --        internal_organization_id
4558      --   INTO l_tax_code, l_trx_type_id, l_org_id
4559      --   FROM zx_lines_det_factors
4560      --  WHERE application_id = l_application_id
4561      --    AND entity_code = l_entity_code
4562      --    AND event_class_code = l_event_class_code
4563      --    AND trx_id = SYNC_TAX_LINES.transaction_id(1)
4564      --    AND trx_line_id = SYNC_TAX_LINES.transaction_line_id(1)
4565      --    AND trx_level_type = SYNC_TAX_LINES.trx_level_type(1);
4566      --
4567      -- BEGIN
4568      --   SELECT tax_type_code INTO l_tax_type  -- from zx_taxes_b zx, zx_rates_b zr
4569      --     FROM zx_sco_taxes zx,               -- Changed from clause to use sco views not base tables
4570      --          zx_sco_rates zr
4571      --    WHERE zx.tax = zr.tax
4572      --      AND zr.tax_rate_code = l_tax_code
4573      --      AND rownum = 1;
4574      -- EXCEPTION
4575      --   WHEN others THEN
4576      --     l_tax_type := NULL;
4577      -- END;
4578      --
4579      -- IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4580      --       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_tax_code'||l_tax_code);
4581      -- END IF;
4582      --
4583      -- SELECT tax_calculation_flag into l_tax_flag
4584      --   FROM ra_cust_trx_types_all rtt
4585      --  WHERE rtt.cust_trx_type_id = l_trx_type_id
4586      --    AND rtt.org_id = l_org_id;
4587      --
4588      -- IF l_tax_flag = 'N' AND l_tax_code is NULL THEN
4589      --   RETURN;
4590      -- ELSIF l_tax_type NOT IN ('SALES_TAX','LOCATION') THEN
4591      --   RETURN;
4592      -- ELSIF (l_tax_type = 'SALES_TAX' AND l_tax_code <> 'STATE' AND
4593      --        l_tax_code <> 'COUNTY' AND l_tax_code <> 'CITY' AND
4594      --        l_tax_code NOT LIKE '%_COUNTY' AND l_tax_code NOT LIKE '%_CITY') THEN
4595      --   RETURN;
4596      -- END IF;
4597 
4598      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4599         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4600             'Opening tax line processing loop first time');
4601      END IF;
4602 
4603      I := 0;
4604 
4605      FOR sync_tax_cnt IN 1..sync_tax_lines.document_type_id.last LOOP
4606 
4607         -- Maintain the trx line counter. The tax lines are fetched together
4608         -- for a transaction_line_id.
4609         --
4610         -- For Tax only documents, we need to know the last tax line being
4611         -- fetched so that all the tax lines can be consolidated and passed
4612         -- as one record
4613 
4614         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4615           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4616              'SYNC_TAX_LINES.transaction_line_id(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt));
4617           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4618              'SYNC_TAX_LINES.tax(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.tax(sync_tax_cnt));
4619           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4620              'SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt));
4621           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4622              'SYNC_TAX_LINES.document_type_id(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.document_type_id(sync_tax_cnt));
4623         END IF;
4624 
4625         IF nvl(l_transaction_line_id, -999) <> SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt) THEN
4626           I := I+1;
4627           l_transaction_line_id := SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4628 
4629           IF SYNC_TAX_LINES.document_type_id(sync_tax_cnt) <> 0 THEN
4630             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4631               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4632                                 ' Selecting document type for event_class_mapping id  '||SYNC_TAX_LINES.document_type_id(sync_tax_cnt));
4633             END IF;
4634             Begin
4635               select  event_class_code
4636               into    l_document_type
4637               from    zx_evnt_cls_mappings
4638               where   event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt);
4639             Exception
4640             When no_data_found then
4641               IF (g_level_exception >= g_current_runtime_level ) THEN
4642                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4643               End if;
4644               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4645               g_string :='No document type exist for provided event_class_mapping_id ';
4646               error_exception_handle(g_string);
4647               x_messages_tbl:=g_messages_tbl;
4648               return;
4649             End;
4650           ELSE /*"Sales Transaction Quote*/
4651             l_document_type := 'SALES_QUOTE';
4652           END IF;
4653 
4654           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4655             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'DOCUMENT_TYPE  '||l_document_type);
4656             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Setting up Document type');
4657           END IF;
4658 
4659           BEGIN
4660             select line_amount, adjusted_doc_transaction_id, line_level_action
4661             into l_amount,l_adj_trx_id,l_line_action
4662             from ZX_O2C_CALC_TXN_INPUT_V
4663             where transaction_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4664             and transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4665           EXCEPTION
4666             when others then
4667               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4668                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Exception While fetching the o2c view: '||sqlerrm);
4669               END IF;
4670           END;
4671 
4672           SET_DOCUMENT_TYPE(l_document_type,l_adj_trx_id,l_amount,l_line_action,l_return_status);
4673 
4674           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4675             IF (g_level_exception >= g_current_runtime_level ) THEN
4676               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4677             END IF;
4678             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4679             g_string :='Failed in setting up document type';
4680             error_exception_handle(g_string);
4681             x_messages_tbl:=g_messages_tbl;
4682             return;
4683           END IF;
4684 
4685           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4686             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Document_Type : ' || l_document_type);
4687           END IF;
4688 
4689           l_amount := null;
4690 
4691         END IF;
4692 
4693         IF sync_tax_cnt = sync_tax_lines.document_type_id.LAST THEN
4694           l_trx_line_context_changed := TRUE;
4695         ELSE
4696           IF l_transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt+1) THEN
4697             l_trx_line_context_changed := FALSE;
4698           ELSE
4699             l_trx_line_context_changed := TRUE;
4700           END IF;
4701         END IF;
4702 
4703         l_neg_tax_line_count := 0;
4704         l_neg_trx_line_count := 0;
4705 
4706         -- Start : Identify Tax event type --
4707         BEGIN
4708            SELECT COUNT(*)
4709              INTO l_neg_tax_line_count
4710              FROM ZX_PTNR_NEG_TAX_LINE_GT
4711             WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4712               AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4713               AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt)
4714               AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt)
4715               AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt)
4716               AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt);
4717         EXCEPTION
4718            WHEN OTHERS THEN
4719               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4720                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4721                     'Error while accessing ZX_PTNR_NEG_TAX_LINE_GT');
4722               END IF;
4723         END;
4724 
4725         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4726            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4727               'No of records in ZX_PTNR_NEG_TAX_LINE_GT = ' || l_neg_tax_line_count);
4728         END IF;
4729 
4730         -- Added the code to get the count from ZX_PTNR_NEG_LINE_GT to handle
4731         -- UPDATE event. Code changed for Bug#12544630
4732         -- Start --
4733         BEGIN
4734           SELECT COUNT(*)
4735             INTO l_neg_trx_line_count
4736             FROM ZX_PTNR_NEG_LINE_GT
4737            WHERE event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4738              AND trx_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4739              AND trx_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4740         EXCEPTION
4741           WHEN OTHERS THEN
4742             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4743                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4744                   ' Error while accessing ZX_PTNR_NEG_LINE_GT');
4745             END IF;
4746         END;
4747 
4748         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4749           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4750              ' No of records in ZX_PTNR_NEG_LINE_GT = ' || l_neg_trx_line_count);
4751         END IF;
4752         -- End --
4753 
4754         -- Check if the Line is present in ZX_PTNR_NEG_TAX_LINE_GT table.
4755         -- Deleted line is passed thru zx_sync_tax_lines_input_v and there is
4756         -- no corresponding line in ZX_PTNR_NEG_TAX_LINE_GT
4757 
4758         -- Changed logic to set the event type
4759         -- Code changed for Bug#12544630
4760         -- Start --
4761         IF (l_neg_tax_line_count = 1 OR l_neg_trx_line_count = 1) THEN  -- Line is present. Hence, it is an UPDATE action --
4762           l_event_type  := 'TAX_LINE_UPDATE';
4763           l_update_mode := TRUE;
4764         ELSIF (l_neg_tax_line_count = 0 AND l_neg_trx_line_count = 0) THEN
4765           IF (SYNC_TAX_LINES.delete_flag(sync_tax_cnt) ='Y') THEN -- Delete action --
4766             l_event_type := 'TAX_LINE_DELETE';
4767           ELSE
4768             l_event_type := 'TAX_LINE_CREATE';
4769           END IF;
4770         ELSE
4771           x_return_status :=FND_API.G_RET_STS_UNEXP_ERROR;
4772           g_string := 'There were more than one tax/trx lines';
4773           IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
4774             FND_LOG.STRING(G_LEVEL_EXCEPTION,
4775                            G_MODULE_NAME||l_api_name,
4776                            g_string);
4777           END IF;
4778           RETURN;
4779         END IF;
4780         -- End --
4781 
4782         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4783           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4784             'l_event_type : ' || l_event_type);
4785         END IF;
4786         -- End : Identify Tax event type --
4787 
4788         -- Check whether there exists a row in ZX_PTNR_NEG_LINES_GT table for the transaction line.
4789         -- If not available then populate these values by calling the
4790         -- zx_r11i_tax_partner_pkg.COPY_TRX_LINE_FOR_PTNR_BEF_UPD.
4791 
4792         -- l_found := check_in_cache(l_internal_organization_id,
4793         --                           SYNC_TAX_LINES.document_type_id(sync_tax_cnt),
4794         --                           SYNC_TAX_LINES.transaction_id(sync_tax_cnt),
4795         --                           SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt));
4796 
4797         IF NOT pg_trx_id_tab.exists(I) THEN
4798           get_doc_and_ext_att_info(SYNC_TAX_LINES.document_type_id(sync_tax_cnt),
4799                                    SYNC_TAX_LINES.transaction_id(sync_tax_cnt),
4800                                    SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt),
4801                                    SYNC_TAX_LINES.trx_level_type(sync_tax_cnt),
4802                                    SYNC_TAX_LINES.country_code(sync_tax_cnt),
4803                                    1,l_return_status);
4804           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4805             IF (g_level_exception >= g_current_runtime_level ) THEN
4806               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4807             END IF;
4808             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4809             g_string :='Failed in GET_DOC_AND_EXT_ATT_INFO procedure';
4810             error_exception_handle(g_string);
4811             RETURN;
4812           END IF;
4813           pg_trx_line_id_tab(I) := SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4814         END IF;
4815 
4816         IF (l_event_type='TAX_LINE_UPDATE') THEN
4817           IF l_neg_tax_line_count = 1 THEN
4818             BEGIN
4819               SELECT tax_amount
4820                 INTO l_amount
4821                 FROM ZX_PTNR_NEG_TAX_LINE_GT
4822                WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4823                  AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4824                  AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt)
4825                  AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt)
4826                  AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt)
4827                  AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt);
4828             END;
4829           ELSIF l_neg_trx_line_count = 1 THEN
4830             l_amount := SYNC_TAX_LINES.tax_amount(sync_tax_cnt);
4831           END IF;
4832 
4833           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4834              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4835                 'l_amount : ' || l_amount);
4836           END IF;
4837 
4838           create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),-1*l_amount,l_return_status);
4839           -- Commented the following call and moved out of this loop
4840           -- and will be processed in separate loop. Code changed for Bug#12544630
4841           -- create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),SYNC_TAX_LINES.tax_amount(sync_tax_cnt),l_return_status);
4842           l_write_record:=TRUE;
4843 
4844         ELSIF(l_event_type='TAX_LINE_DELETE')then
4845           create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),-1*SYNC_TAX_LINES.tax_amount(sync_tax_cnt),l_return_status);
4846           l_write_record:=FALSE;
4847 
4848         ELSIF (l_event_type='TAX_LINE_CREATE') THEN
4849           create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),SYNC_TAX_LINES.tax_amount(sync_tax_cnt),l_return_status);
4850           l_write_record:=TRUE;
4851 
4852         END IF;
4853 
4854         IF (l_write_record) THEN
4855           x_output_sync_tax_lines(sync_tax_cnt).INTERNAL_ORGANIZATION_ID  := l_internal_organization_id;
4856           x_output_sync_tax_lines(sync_tax_cnt).LEGAL_ENTITY_NUMBER       := l_legal_entity_number;
4857           x_output_sync_tax_lines(sync_tax_cnt).ESTABLISHMENT_NUMBER      := l_establishment_number;  -- Bug 5139731
4858           x_output_sync_tax_lines(sync_tax_cnt).DOCUMENT_TYPE_ID          := SYNC_TAX_LINES.document_type_id(sync_tax_cnt);
4859           x_output_sync_tax_lines(sync_tax_cnt).APPLICATION_ID            := l_application_id;
4860           x_output_sync_tax_lines(sync_tax_cnt).ENTITY_CODE               := l_entity_code;
4861           x_output_sync_tax_lines(sync_tax_cnt).EVENT_CLASS_CODE          := l_event_class_code;
4862           x_output_sync_tax_lines(sync_tax_cnt).TRANSACTION_ID            := sync_tax_lines.transaction_id(sync_tax_cnt);
4863           x_output_sync_tax_lines(sync_tax_cnt).TRANSACTION_LINE_ID       := sync_tax_lines.transaction_line_id(sync_tax_cnt);
4864           x_output_sync_tax_lines(sync_tax_cnt).TRX_LEVEL_TYPE            := sync_tax_lines.trx_level_type(sync_tax_cnt);
4865           x_output_sync_tax_lines(sync_tax_cnt).COUNTRY_CODE              := sync_tax_lines.country_code(sync_tax_cnt);
4866           x_output_sync_tax_lines(sync_tax_cnt).TAX                       := sync_tax_lines.tax(sync_tax_cnt);
4867           x_output_sync_tax_lines(sync_tax_cnt).SITUS                     := sync_tax_lines.situs(sync_tax_cnt);
4868 
4869           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4870             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4871                'x_output_sync_tax_lines(sync_tax_cnt).internal_organization_id = ' || x_output_sync_tax_lines(sync_tax_cnt).internal_organization_id);
4872             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4873                'x_output_sync_tax_lines(sync_tax_cnt).transaction_line_id = ' || x_output_sync_tax_lines(sync_tax_cnt).transaction_line_id);
4874             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4875                'x_output_sync_tax_lines(sync_tax_cnt).trx_level_type = ' || x_output_sync_tax_lines(sync_tax_cnt).trx_level_type);
4876             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4877                'x_output_sync_tax_lines(sync_tax_cnt).tax = ' || x_output_sync_tax_lines(sync_tax_cnt).tax);
4878             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4879                'x_output_sync_tax_lines(sync_tax_cnt).SITUS = ' || x_output_sync_tax_lines(sync_tax_cnt).SITUS);
4880           END IF;
4881 
4882           populate_sync_tax_amts(sync_tax_cnt
4883                              , sync_tax_lines.tax(sync_tax_cnt)
4884                              , x_output_sync_tax_lines
4885                              , x_return_status);
4886           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4887             IF (g_level_exception >= g_current_runtime_level ) THEN
4888                FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4889             END IF;
4890             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4891             g_string :='Failed in populate_sync_tax_amts procedure';
4892             error_exception_handle(g_string);
4893             RETURN;
4894           END IF;
4895 
4896           l_write_record := FALSE;
4897         END IF;
4898      END LOOP;
4899 
4900      -- Start : Code Added for Bug#12544630
4901      -- Insert the line with original tax amount in case of Update Mode
4902      IF (l_update_mode) THEN
4903        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4904          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4905             'Opening tax line processing loop second time.' );
4906        END IF;
4907 
4908        l_transaction_line_id := NULL;
4909        I := 0;
4910        l_neg_tax_line_count := 0;
4911        l_neg_trx_line_count := 0;
4912        l_event_type := NULL;
4913        l_write_record := FALSE;
4914 
4915        FOR sync_tax_cnt1 IN 1..sync_tax_lines.document_type_id.last LOOP
4916 
4917          -- Opening the Tax Lines processing loop again for Update event
4918          -- to create tax lines with original amount
4919 
4920          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4921            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4922              'SYNC_TAX_LINES.transaction_line_id(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1));
4923            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4924              'SYNC_TAX_LINES.tax(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax(sync_tax_cnt1));
4925            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4926              'SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt1));
4927            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4928              'SYNC_TAX_LINES.document_type_id(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.document_type_id(sync_tax_cnt1));
4929          END IF;
4930 
4931          IF nvl(l_transaction_line_id, -999) <> SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1) THEN
4932            I := I+1;
4933            l_transaction_line_id := SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1);
4934 
4935           IF SYNC_TAX_LINES.document_type_id(sync_tax_cnt1) <> 0 THEN
4936             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4937               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4938                                 ' Selecting document type for event_class_mapping id  '||SYNC_TAX_LINES.document_type_id(sync_tax_cnt1));
4939             END IF;
4940             Begin
4941               select  event_class_code
4942               into    l_document_type
4943               from    zx_evnt_cls_mappings
4944               where   event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt1);
4945             Exception
4946             When no_data_found then
4947               IF (g_level_exception >= g_current_runtime_level ) THEN
4948                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4949               End if;
4950               x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4951               g_string :='No document type exist for provided event_class_mapping_id ';
4952               error_exception_handle(g_string);
4953               x_messages_tbl:=g_messages_tbl;
4954               return;
4955             End;
4956           ELSE /*"Sales Transaction Quote*/
4957             l_document_type := 'SALES_QUOTE';
4958           END IF;
4959 
4960           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4961             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'DOCUMENT_TYPE  '||l_document_type);
4962             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Setting up Document type');
4963           END IF;
4964 
4965           BEGIN
4966             select line_amount, adjusted_doc_transaction_id, line_level_action
4967             into l_amount,l_adj_trx_id,l_line_action
4968             from ZX_O2C_CALC_TXN_INPUT_V
4969             where transaction_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt1)
4970             and transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1);
4971           EXCEPTION
4972             when others then
4973               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4974                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Exception While fetching the o2c view: '||sqlerrm);
4975               END IF;
4976           END;
4977 
4978           SET_DOCUMENT_TYPE(l_document_type,l_adj_trx_id,l_amount,l_line_action,l_return_status);
4979 
4980           IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4981             IF (g_level_exception >= g_current_runtime_level ) THEN
4982               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4983             END IF;
4984             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4985             g_string :='Failed in setting up document type';
4986             error_exception_handle(g_string);
4987             x_messages_tbl:=g_messages_tbl;
4988             return;
4989           END IF;
4990 
4991           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4992             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Document_Type : ' || l_document_type);
4993           END IF;
4994 
4995           l_amount := null;
4996 
4997          END IF;
4998 
4999          IF sync_tax_cnt1 = sync_tax_lines.document_type_id.LAST THEN
5000            l_trx_line_context_changed := TRUE;
5001          ELSE
5002            IF l_transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1+1) THEN
5003              l_trx_line_context_changed := FALSE;
5004            ELSE
5005              l_trx_line_context_changed := TRUE;
5006            END IF;
5007          END IF;
5008 
5009          l_neg_tax_line_count := 0;
5010          l_neg_trx_line_count := 0;
5011 
5012          BEGIN
5013            SELECT COUNT(*)
5014              INTO l_neg_tax_line_count
5015              FROM ZX_PTNR_NEG_TAX_LINE_GT
5016             WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt1)
5017               AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt1)
5018               AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1)
5019               AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt1)
5020               AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt1)
5021               AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt1);
5022          EXCEPTION
5023            WHEN OTHERS THEN
5024               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5025                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5026                     'Error while accessing ZX_PTNR_NEG_TAX_LINE_GT');
5027               END IF;
5028          END;
5029 
5030          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5031            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5032               'No of records in ZX_PTNR_NEG_TAX_LINE_GT = ' || l_neg_tax_line_count);
5033          END IF;
5034 
5035          BEGIN
5036            SELECT COUNT(*)
5037              INTO l_neg_trx_line_count
5038              FROM ZX_PTNR_NEG_LINE_GT
5039             WHERE event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt1)
5040               AND trx_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt1)
5041               AND trx_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1);
5042          EXCEPTION
5043            WHEN OTHERS THEN
5044              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5045                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5046                    ' Error while accessing ZX_PTNR_NEG_LINE_GT');
5047              END IF;
5048          END;
5049 
5050          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5051            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5052               ' No of records in ZX_PTNR_NEG_LINE_GT = ' || l_neg_trx_line_count);
5053          END IF;
5054 
5055          IF (l_neg_tax_line_count = 1 OR l_neg_trx_line_count = 1) THEN  -- Line is present. Hence, it is an UPDATE action --
5056            l_event_type  := 'TAX_LINE_UPDATE';
5057          ELSIF (l_neg_tax_line_count = 0 AND l_neg_trx_line_count = 0) THEN
5058            IF (SYNC_TAX_LINES.delete_flag(sync_tax_cnt1) ='Y') THEN -- Delete action --
5059              l_event_type := 'TAX_LINE_DELETE';
5060            ELSE
5061              l_event_type := 'TAX_LINE_CREATE';
5062            END IF;
5063          ELSE
5064            x_return_status :=FND_API.G_RET_STS_UNEXP_ERROR;
5065            g_string := 'There were more than one tax/trx lines';
5066            IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
5067              FND_LOG.STRING(G_LEVEL_EXCEPTION,
5068                             G_MODULE_NAME||l_api_name,
5069                             g_string);
5070            END IF;
5071            RETURN;
5072          END IF;
5073 
5074          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5075            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5076              'l_event_type : ' || l_event_type);
5077          END IF;
5078 
5079          IF (l_event_type='TAX_LINE_UPDATE') THEN
5080            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5081              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5082                'SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt1));
5083            END IF;
5084            create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt1),SYNC_TAX_LINES.tax_amount(sync_tax_cnt1),l_return_status);
5085            l_write_record:=TRUE;
5086          END IF;
5087 
5088          IF (l_write_record) THEN
5089            x_output_sync_tax_lines(sync_tax_cnt1).INTERNAL_ORGANIZATION_ID  := l_internal_organization_id;
5090            x_output_sync_tax_lines(sync_tax_cnt1).LEGAL_ENTITY_NUMBER       := l_legal_entity_number;
5091            x_output_sync_tax_lines(sync_tax_cnt1).ESTABLISHMENT_NUMBER      := l_establishment_number;  -- Bug 5139731
5092            x_output_sync_tax_lines(sync_tax_cnt1).DOCUMENT_TYPE_ID          := SYNC_TAX_LINES.document_type_id(sync_tax_cnt1);
5093            x_output_sync_tax_lines(sync_tax_cnt1).APPLICATION_ID            := l_application_id;
5094            x_output_sync_tax_lines(sync_tax_cnt1).ENTITY_CODE               := l_entity_code;
5095            x_output_sync_tax_lines(sync_tax_cnt1).EVENT_CLASS_CODE          := l_event_class_code;
5096            x_output_sync_tax_lines(sync_tax_cnt1).TRANSACTION_ID            := sync_tax_lines.transaction_id(sync_tax_cnt1);
5097            x_output_sync_tax_lines(sync_tax_cnt1).TRANSACTION_LINE_ID       := sync_tax_lines.transaction_line_id(sync_tax_cnt1);
5098            x_output_sync_tax_lines(sync_tax_cnt1).TRX_LEVEL_TYPE            := sync_tax_lines.trx_level_type(sync_tax_cnt1);
5099            x_output_sync_tax_lines(sync_tax_cnt1).COUNTRY_CODE              := sync_tax_lines.country_code(sync_tax_cnt1);
5100            x_output_sync_tax_lines(sync_tax_cnt1).TAX                       := sync_tax_lines.tax(sync_tax_cnt1);
5101            x_output_sync_tax_lines(sync_tax_cnt1).SITUS                     := sync_tax_lines.situs(sync_tax_cnt1);
5102 
5103            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5104              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5105                 'x_output_sync_tax_lines(sync_tax_cnt1).internal_organization_id = ' || x_output_sync_tax_lines(sync_tax_cnt1).internal_organization_id);
5106              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5107                 'x_output_sync_tax_lines(sync_tax_cnt1).transaction_line_id = ' || x_output_sync_tax_lines(sync_tax_cnt1).transaction_line_id);
5108              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5109                 'x_output_sync_tax_lines(sync_tax_cnt1).trx_level_type = ' || x_output_sync_tax_lines(sync_tax_cnt1).trx_level_type);
5110              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5111                 'x_output_sync_tax_lines(sync_tax_cnt1).tax = ' || x_output_sync_tax_lines(sync_tax_cnt1).tax);
5112              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5113                 'x_output_sync_tax_lines(sync_tax_cnt1).SITUS = ' || x_output_sync_tax_lines(sync_tax_cnt1).SITUS);
5114            END IF;
5115 
5116            populate_sync_tax_amts(sync_tax_cnt1
5117                               , sync_tax_lines.tax(sync_tax_cnt1)
5118                               , x_output_sync_tax_lines
5119                               , x_return_status);
5120            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5121              IF (g_level_exception >= g_current_runtime_level ) THEN
5122                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5123              END IF;
5124              x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5125              g_string :='Failed in populate_sync_tax_amts procedure';
5126              error_exception_handle(g_string);
5127              RETURN;
5128            END IF;
5129 
5130            l_write_record := FALSE;
5131          END IF;  -- IF l_write_record
5132 
5133        END LOOP;
5134      END IF;
5135      -- End : Code Added for Bug#12544630
5136 
5137    ELSE
5138      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5139        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, ' in the update part ');
5140      END IF;
5141 
5142      -- UPDATE ARP_TAX_VERTEX_AUDIT
5143      -- SET INVNO = (SELECT TRANSACTION_NUMBER
5144      --              FROM ZX_SYNC_HDR_INPUT_V)
5145      -- WHERE TRANSUSERAREA = (SELECT TRANSACTION_ID
5146      --                        FROM ZX_SYNC_HDR_INPUT_V);
5147 
5148      BEGIN
5149        SELECT TRANSACTION_NUMBER, TO_CHAR(TRANSACTION_ID)
5150        INTO l_trx_number, char_ctrx_id
5151        FROM ZX_SYNC_HDR_INPUT_V;
5152      EXCEPTION
5153        WHEN TOO_MANY_ROWS THEN
5154          IF (g_level_exception >= g_current_runtime_level ) THEN
5155             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5156          End if;
5157          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5158          g_string :='More than one row exist at header level';
5159          error_exception_handle(g_string);
5160          RETURN;
5161        WHEN OTHERS THEN
5162          NULL;
5163      END;
5164      l_statements := 'UPDATE ZX_TAX_VERTEX_AUDIT '||
5165                      'SET INVNO = :1' ||
5166                      ' WHERE TRANSUSERAREA = :2 ';
5167      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5168        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
5169      END IF;
5170      EXECUTE IMMEDIATE l_statements using l_trx_number,char_ctrx_id ;
5171      cnt:= SQL%ROWCOUNT;
5172      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5173        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Updated Rows in vertex table == ' || to_char(SQL%ROWCOUNT));
5174      END IF;
5175 
5176      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5177        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'ZX_TAX_VERTEX_AUDIT is updated');
5178      END IF;
5179 
5180    END IF;
5181 
5182 
5183    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5184      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
5185    END IF;
5186 
5187 END SYNCHRONIZE_VERTEX_REPOSITORY;
5188 
5189 /* Bug 5200373: Restructured the code to accomodate the header level deletions */
5190 PROCEDURE GLOBAL_DOCUMENT_UPDATE
5191   (x_transaction_rec       IN         zx_tax_partner_pkg.trx_rec_type,
5192       x_return_status         OUT NOCOPY VARCHAR2,
5193       x_messages_tbl          OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type) is
5194 
5195  l_cnt_of_options_gt    NUMBER;
5196  l_cnt_of_hdr_extns_gt  NUMBER;
5197  l_cnt_of_line_extns_gt NUMBER;
5198  l_cnt_of_loc_info_gt   NUMBER;
5199  l_cnt_of_neg_line_gt   NUMBER;
5200  l_cnt_of_det_factors   NUMBER;
5201  l_cnt_of_trx_hdr_gt    NUMBER; -- 9252613
5202  l_statements    VARCHAR2(2000); -- 9252613
5203  l_return_status        VARCHAR2(30);
5204  l_api_name             CONSTANT VARCHAR2(30) := 'GLOBAL_DOCUMENT_UPDATE';
5205 --l_application_id  NUMBER;
5206 --l_entity_code     VARCHAR2(80);
5207 --l_event_class_code VARCHAR2(100);
5208 --l_trx_level_type   VARCHAR2(100);
5209 --l_trx_id           NUMBER;
5210 --l_trx_line_id      NUMBER;
5211 --l_trx_type_id      NUMBER;
5212 --l_org_id      NUMBER;
5213 --l_tax_code         VARCHAR2(100);
5214 --l_tax_type         VARCHAR2(100);
5215 --l_tax_flag         VARCHAR2(10);
5216 --Bug 8532463
5217 l_doc_amount       NUMBER;
5218 
5219 BEGIN
5220    x_return_status := FND_API.G_RET_STS_SUCCESS;
5221    err_count       := 0;
5222 
5223    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5224      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
5225    END IF;
5226 
5227 
5228    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5229       BEGIN
5230          SELECT count(*)
5231            INTO l_cnt_of_det_factors
5232            FROM ZX_LINES_DET_FACTORS
5233           WHERE event_class_mapping_id = x_transaction_rec.document_type_id
5234             AND trx_id                 = x_transaction_rec.transaction_id;
5235       EXCEPTION WHEN OTHERS THEN
5236          l_cnt_of_det_factors := 0;
5237       END;
5238       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5239               'l_cnt_of_det_factors = '||l_cnt_of_det_factors);
5240       BEGIN
5241          SELECT count(*)
5242            INTO l_cnt_of_options_gt
5243            FROM ZX_TRX_PRE_PROC_OPTIONS_GT;
5244       EXCEPTION WHEN OTHERS THEN
5245          l_cnt_of_options_gt := 0;
5246       END;
5247       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5248              'l_cnt_of_options_gt = '||l_cnt_of_options_gt);
5249       BEGIN
5250          SELECT count(*)
5251            INTO l_cnt_of_hdr_extns_gt
5252            FROM ZX_PRVDR_HDR_EXTNS_GT;
5253       EXCEPTION WHEN OTHERS THEN
5254          l_cnt_of_hdr_extns_gt := 0;
5255       END;
5256       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5257              'l_cnt_of_hdr_extns_gt = '||l_cnt_of_hdr_extns_gt);
5258       BEGIN
5259          SELECT count(*)
5260            INTO l_cnt_of_line_extns_gt
5261            FROM ZX_PRVDR_HDR_EXTNS_GT;
5262       EXCEPTION WHEN OTHERS THEN
5263          l_cnt_of_line_extns_gt := 0;
5264       END;
5265       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5266              'l_cnt_of_line_extns_gt = '||l_cnt_of_line_extns_gt);
5267       BEGIN
5268          SELECT count(*)
5269            INTO l_cnt_of_loc_info_gt
5270            FROM ZX_PTNR_LOCATION_INFO_GT;
5271       EXCEPTION WHEN OTHERS THEN
5272          l_cnt_of_loc_info_gt := 0;
5273       END;
5274       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5275              'l_cnt_of_loc_info_gt = '||l_cnt_of_loc_info_gt);
5276       BEGIN
5277          SELECT count(*)
5278            INTO l_cnt_of_neg_line_gt
5279            FROM ZX_PTNR_NEG_LINE_GT;
5280       EXCEPTION WHEN OTHERS THEN
5281          l_cnt_of_neg_line_gt := 0;
5282       END;
5283       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5284          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
5285                 'l_cnt_of_neg_line_gt = '||l_cnt_of_neg_line_gt);
5286       END IF;
5287    END IF;
5288 	   -- 9252613
5289 	   select count(*)
5290 	   into l_cnt_of_trx_hdr_gt
5291 	   from ZX_TRX_HEADERS_GT
5292      where trx_id = x_transaction_rec.transaction_id;
5293 
5294      IF l_cnt_of_trx_hdr_gt > 0 THEN
5295       l_statements := 'DELETE FROM ZX_TAX_VERTEX_AUDIT '||
5296                      ' WHERE TRANSUSERAREA = :1 ';
5297       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5298         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
5299       END IF;
5300       EXECUTE IMMEDIATE l_statements using to_char(x_transaction_rec.transaction_id) ;
5301       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5302         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Deleted Rows in vertex table == ' || to_char(SQL%ROWCOUNT));
5303       END IF;
5304       RETURN;
5305      END IF;
5306      -- 9252613
5307 /***
5308        BEGIN
5309           SELECT
5310             distinct application_id,entity_code,event_class_code,
5311             trx_id,trx_level_type,trx_line_id
5312             INTO l_application_id,l_entity_code,l_event_class_code,
5313             l_trx_id,l_trx_level_type,l_trx_line_id
5314             FROM ZX_PRVDR_LINE_EXTNS_GT where rownum = 1;
5315    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5316 
5317          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'before tax code');
5318    END IF;
5319 -- bug 6755603
5320 
5321            SELECT output_tax_classification_code,receivables_trx_type_id,
5322 internal_organization_id into
5323            l_tax_code,l_trx_type_id, l_org_id
5324             FROM zx_lines_det_factors where
5325             application_id = l_application_id
5326             and entity_code = l_entity_code
5327             and event_class_code = l_event_class_code
5328             and trx_id = l_trx_id
5329             and trx_line_id = l_trx_line_id
5330             and trx_level_type = l_trx_level_type;
5331 
5332             BEGIN
5333              select tax_type_code INTO l_tax_type -- from zx_taxes_b zx, zx_rates_b zr
5334                from zx_sco_taxes zx,   -- Changed from clause to use sco views not base tables
5335                     zx_sco_rates zr
5336        where zx.tax = zr.tax
5337              AND zr.tax_rate_code = l_tax_code
5338              AND rownum = 1;
5339             EXCEPTION
5340               WHEN others THEN
5341                l_tax_type := NULL;
5342             END;
5343 
5344    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5345          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_tax_code'||l_tax_code);
5346    END IF;
5347 
5348             SELECT tax_calculation_flag into l_tax_flag
5349             FROM  ra_cust_trx_types_all rtt
5350             WHERE rtt.cust_trx_type_id = l_trx_type_id
5351             AND rtt.org_id = l_org_id;
5352 
5353             IF l_tax_flag = 'N' AND l_tax_code is NULL THEN
5354              RETURN;
5355             ELSIF l_tax_type NOT IN ('SALES_TAX','LOCATION') THEN
5356              RETURN;
5357             ELSIF (l_tax_type = 'SALES_TAX' AND l_tax_code <> 'STATE' and  l_tax_code <> 'COUNTY' and l_tax_code <> 'CITY' and l_tax_code not like '%_COUNTY'
5358 and l_tax_code not like '%_CITY') THEN
5359              RETURN;
5360             END IF;
5361 
5362        EXCEPTION WHEN OTHERS THEN
5363           null;
5364        END;
5365 ***/
5366    BEGIN
5367      --Bug 8532463
5368      SELECT trx_line_id,
5369             ship_to_location_id,
5370             bill_to_location_id,
5371             adjusted_doc_trx_id,
5372             adjusted_doc_line_id,
5373             adjusted_doc_trx_level_type,
5374             decode(adjusted_doc_application_id,
5375                         222,decode(adjusted_doc_event_class_code,
5376                                           'INVOICE', 4,
5377                                           'DEBIT_MEMO', 5,
5378                                           'CREDIT_MEMO', 6,
5379                                            NULL
5380                                   )
5381                         ,NULL) adjusted_doc_document_type_id
5382      BULK COLLECT INTO pg_trx_line_id_tab,
5383                        pg_ship_to_loc_id_tab,
5384                        pg_bill_to_loc_id_tab,
5385                        pg_adj_doc_trx_id_tab,
5386                        pg_adj_doc_line_id_tab,
5387                        pg_adj_doc_trx_lev_type_tab,
5388                        pg_adj_doc_doc_type_id_tab
5389        FROM ZX_PTNR_NEG_LINE_GT
5390       WHERE event_class_mapping_id = x_transaction_rec.document_type_id
5391         AND trx_id                 = x_transaction_rec.transaction_id;
5392    END;
5393 
5394    BEGIN
5395       SELECT event_class_code
5396         INTO l_document_type
5397         FROM zx_evnt_cls_mappings
5398        WHERE event_class_mapping_id = x_transaction_rec.document_type_id;
5399    EXCEPTION
5400         WHEN no_data_found THEN
5401      IF (g_level_exception >= g_current_runtime_level ) THEN
5402               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5403      End if;
5404            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5405            g_string        := 'No document type exist for provided event_class_mapping_id ';
5406            error_exception_handle(g_string);
5407            x_messages_tbl  :=  g_messages_tbl;
5408            RETURN;
5409    END;
5410    --Bug 8532463
5411    -- Call Set Document Type
5412 
5413    SELECT SUM(ABS(line_amt))
5414      INTO l_doc_amount
5415      FROM ZX_PTNR_NEG_LINE_GT
5416     WHERE event_class_mapping_id = x_transaction_rec.document_type_id
5417       AND trx_id                 = x_transaction_rec.transaction_id;
5418 
5419    SET_DOCUMENT_TYPE(l_document_type,
5420                      x_transaction_rec.transaction_id,
5421                      l_doc_amount,
5422                      'NEGATE',
5423                      l_return_status);
5424 
5425    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5426       IF (g_level_exception >= g_current_runtime_level ) THEN
5427         FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
5428       END IF;
5429       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5430       g_string :='Failed in setting up document type';
5431       error_exception_handle(g_string);
5432       x_messages_tbl:=g_messages_tbl;
5433       return;
5434    END IF;
5435 
5436    FOR cnt IN 1..nvl(pg_trx_line_id_tab.last, 0)
5437    LOOP
5438       I := cnt;
5439       l_line_level_action := 'NEGATE';
5440       perform_line_deletion(l_return_status);
5441       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5442          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5443             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
5444          END IF;
5445          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5446          g_string :='Failed in PERFORM_LINE_DELETION procedure';
5447          error_exception_handle(g_string);
5448          RETURN;
5449       END IF;
5450    END LOOP;
5451 
5452    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5453       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
5454    END IF;
5455 
5456 END GLOBAL_DOCUMENT_UPDATE;
5457 
5458 
5459 PROCEDURE DISPLAY_OUTPUT
5460         (p_type                   IN VARCHAR2) IS
5461 l_api_name           CONSTANT VARCHAR2(30) := 'DISPLAY_OUTPUT';
5462 BEGIN
5463    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5464      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
5465    END IF;
5466 
5467    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5468         IF (p_type = 'O') THEN
5469            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'*** Dumping Output ***');
5470         ELSE
5471            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'*** Dumping Input ***');
5472         END IF;
5473         IF context_rec.fGetJurisNames = TRUE THEN
5474              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fGetJurisNames = TRUE');
5475         ELSIF context_rec.fGetJurisNames = FALSE THEN
5476            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fGetJurisNames = FALSE');
5477         ELSE
5478            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fGetJurisNames = NULL');
5479         END IF;
5480 
5481         IF context_rec.fCaseSensitive = TRUE THEN
5482            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fCaseSensitive = TRUE');
5483         ELSIF context_rec.fCaseSensitive = FALSE THEN
5484            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fCaseSensitive = FALSE');
5485         ELSE
5486            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fCaseSensitive = NULL');
5487         END IF;
5488 
5489     IF (p_type = 'O') THEN
5490         /*-----------------------------------------------------------
5491          | Dumping ARP_TAX_VERTEX_QSU.tQSUInvoiceRecord Record Type |
5492          -----------------------------------------------------------*/
5493        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'*** Dumping tQSUInvoiceRecord Record Type***');
5494 
5495        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTGeoCd = '||to_char(inv_out_rec.fJurisSTGeoCd));
5496        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTStAbbrv = '||inv_out_rec.fJurisSTStAbbrv);
5497        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCoName = '||inv_out_rec.fJurisSTCoName);
5498        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiName = '||inv_out_rec.fJurisSTCiName);
5499 
5500         IF inv_out_rec.fJurisSTCiCmprssd = TRUE THEN
5501            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = TRUE');
5502         ELSIF inv_out_rec.fJurisSTCiCmprssd = FALSE THEN
5503            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = FALSE');
5504         ELSE
5505            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = NULL');
5506         END IF;
5507 
5508        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTZipCd = '||inv_out_rec.fJurisSTZipCd);
5509        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiSearchCd = '||inv_out_rec.fJurisSTCiSearchCd);
5510 
5511         IF inv_out_rec.fJurisSTInCi = TRUE THEN
5512            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = TRUE');
5513         ELSIF inv_out_rec.fJurisSTInCi = FALSE THEN
5514            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = FALSE');
5515         ELSE
5516            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = NULL');
5517         END IF;
5518 
5519        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFGeoCd  = '||to_char(inv_out_rec.fJurisSFGeoCd));
5520        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFStAbbrv = '||inv_out_rec.fJurisSFStAbbrv);
5521        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCoName = '||inv_out_rec.fJurisSFCoName);
5522        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiName = '||inv_out_rec.fJurisSFCiName);
5523 
5524         IF inv_out_rec.fJurisSFCiCmprssd = TRUE THEN
5525       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = TRUE');
5526         ELSIF inv_out_rec.fJurisSFCiCmprssd = FALSE THEN
5527            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = FALSE');
5528         ELSE
5529            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = NULL');
5530         END IF;
5531 
5532        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFZipCd = '||inv_out_rec.fJurisSFZipCd);
5533        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiSearchCd = '||inv_out_rec.fJurisSFCiSearchCd);
5534 
5535         IF inv_out_rec.fJurisSFInCi = TRUE THEN
5536            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = TRUE');
5537         ELSIF inv_out_rec.fJurisSFInCi = FALSE THEN
5538            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = FALSE');
5539         ELSE
5540            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = NULL');
5541         END IF;
5542 
5543        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAGeoCd = '||to_char(inv_out_rec.fJurisOAGeoCd));
5544        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAStAbbrv = '||inv_out_rec.fJurisOAStAbbrv);
5545        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACoName = '||inv_out_rec.fJurisOACoName);
5546        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiName = '||inv_out_rec.fJurisOACiName);
5547 
5548         IF inv_out_rec.fJurisOACiCmprssd = TRUE THEN
5549            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = TRUE');
5550         ELSIF inv_out_rec.fJurisOACiCmprssd = FALSE THEN
5551            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = FALSE');
5552         ELSE
5553            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = NULL');
5554         END IF;
5555 
5556        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAZipCd = '||inv_out_rec.fJurisOAZipCd);
5557        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiSearchCd = '||inv_out_rec.fJurisOACiSearchCd);
5558 
5559         IF inv_out_rec.fJurisOAInCi = TRUE THEN
5560            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = TRUE');
5561         ELSIF inv_out_rec.fJurisOAInCi = FALSE THEN
5562            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = FALSE');
5563         ELSE
5564            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = NULL');
5565         END IF;
5566 
5567        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvIdNum = '||inv_out_rec.fInvIdNum);
5568        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvCntrlNum = '||inv_out_rec.fInvCntrlNum);
5569        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvDate = '||inv_out_rec.fInvDate);
5570        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvGrossAmt = '||to_char(inv_out_rec.fInvGrossAmt));
5571        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvTotalTaxAmt = '||to_char(inv_out_rec.fInvTotalTaxAmt));
5572        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvNumLineItems = '||inv_out_rec.fInvNumLineItems);
5573        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCustCd = '||inv_out_rec.fTDMCustCd);
5574        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCustClassCd = '||inv_out_rec.fTDMCustClassCd);
5575        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fCustTxblty = '||inv_out_rec.fCustTxblty);
5576        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCompCd = '||inv_out_rec.fTDMCompCd);
5577        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMDivCd = '||inv_out_rec.fTDMDivCd);
5578        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMStoreCd = '||inv_out_rec.fTDMStoreCd);
5579 
5580         /*------------------------------------------------------------
5581          | Dumping ARP_TAX_VERTEX_QSU.tQSULineItemTable Record Type  |
5582          ------------------------------------------------------------*/
5583        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'***Dumping tQSULineItemTable Record Type***');
5584        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransType = '||to_char(line_out_tab(1).fTransType));
5585        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransSubType = '||to_char(line_out_tab(1).fTransSubType));
5586        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransCd = '||to_char(line_out_tab(1).fTransCd));
5587        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransDate = '||line_out_tab(1).fTransDate);
5588        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransExtendedAmt = '||
5589             to_char(line_out_tab(1).fTransExtendedAmt));
5590        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransQuantity = '||
5591             to_char(line_out_tab(1).fTransQuantity));
5592        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransTotalTaxAmt = '||
5593             to_char(line_out_tab(1).fTransTotalTaxAmt));
5594        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransCombinedRate = '||
5595           to_char(line_out_tab(1).fTransCombinedRate));
5596        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransUserArea = '||line_out_tab(1).fTransUserArea);
5597        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransStatusCd = '||
5598           to_char(line_out_tab(1).fTransStatusCd));
5599        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMProdCd = '||line_out_tab(1).fTDMProdCd);
5600        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMProdRptngCd = '||line_out_tab(1).fTDMProdRptngCd);
5601        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fProdTxblty = '||to_char(line_out_tab(1).fProdTxblty));
5602        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriTaxingJuris = '||
5603           to_char(line_out_tab(1).fPriTaxingJuris));
5604        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCustExmtCrtfNum = '||
5605           line_out_tab(1).fPriCustExmtCrtfNum);
5606        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTxblty = '||to_char(line_out_tab(1).fPriStTxblty));
5607        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxType = '||to_char(line_out_tab(1).fPriStTaxType));
5608        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxedAmt = '||
5609           to_char(line_out_tab(1).fPriStTaxedAmt));
5610        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStExmtAmt = '||to_char(line_out_tab(1).fPriStExmtAmt));
5611        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStExmtRsnCd = '||line_out_tab(1).fPriStExmtRsnCd);
5612        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStNonTxblAmt = '||
5613           to_char(line_out_tab(1).fPriStNonTxblAmt));
5614        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStNonTxblRsnCd = '||
5615           line_out_tab(1).fPriStNonTxblRsnCd);
5616        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRate = '||to_char(line_out_tab(1).fPriStRate));
5617        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRateEffDate = '||line_out_tab(1).fPriStRateEffDate);
5618        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRateType = '||
5619           to_char(line_out_tab(1).fPriStRateType));
5620        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxAmt = '||to_char(line_out_tab(1).fPriStTaxAmt));
5621 
5622         IF line_out_tab(1).fPriStTaxIncluded = TRUE THEN
5623       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = TRUE');
5624         ELSIF line_out_tab(1).fPriStTaxIncluded = FALSE THEN
5625            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = FALSE');
5626         ELSE
5627            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = NULL');
5628         END IF;
5629 
5630        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTxblty = '||to_char(line_out_tab(1).fPriCoTxblty));
5631        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxType = '||to_char(line_out_tab(1).fPriCoTaxType));
5632        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxedAmt = '||
5633           to_char(line_out_tab(1).fPriCoTaxedAmt));
5634        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoExmtAmt = '||to_char(line_out_tab(1).fPriCoExmtAmt));
5635        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoExmtRsnCd = '||line_out_tab(1).fPriCoExmtRsnCd);
5636        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoNonTxblAmt = '||
5637           to_char(line_out_tab(1).fPriCoNonTxblAmt));
5638        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoNonTxblRsnCd = '||
5639           line_out_tab(1).fPriCoNonTxblRsnCd);
5640        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRate = '||to_char(line_out_tab(1).fPriCoRate));
5641        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRateEffDate = '||line_out_tab(1).fPriCoRateEffDate);
5642        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRateType = '||
5643           to_char(line_out_tab(1).fPriCoRateType));
5644        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxAmt = '||to_char(line_out_tab(1).fPriCoTaxAmt));
5645 
5646         IF line_out_tab(1).fPriCoTaxIncluded = TRUE THEN
5647            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = TRUE');
5648         ELSIF line_out_tab(1).fPriCoTaxIncluded = FALSE THEN
5649            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = FALSE');
5650         ELSE
5651            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = NULL');
5652         END IF;
5653 
5654        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTxblty = '||to_char(line_out_tab(1).fPriCiTxblty));
5655        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxType = '||to_char(line_out_tab(1).fPriCiTaxType));
5656        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxedAmt = '||
5657           to_char(line_out_tab(1).fPriCiTaxedAmt));
5658        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiExmtAmt = '||to_char(line_out_tab(1).fPriCiExmtAmt));
5659        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiExmtRsnCd = '||line_out_tab(1).fPriCiExmtRsnCd);
5660        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiNonTxblAmt = '||
5661           to_char(line_out_tab(1).fPriCiNonTxblAmt));
5662        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiNonTxblRsnCd = '||
5663           line_out_tab(1).fPriCiNonTxblRsnCd);
5664        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRate = '||to_char(line_out_tab(1).fPriCiRate));
5665        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRateEffDate = '||line_out_tab(1).fPriCiRateEffDate);
5666        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRateType = '||
5667           to_char(line_out_tab(1).fPriCiRateType));
5668        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxAmt = '||to_char(line_out_tab(1).fPriCiTaxAmt));
5669 
5670         IF line_out_tab(1).fPriCiTaxIncluded = TRUE THEN
5671            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = TRUE');
5672         ELSIF line_out_tab(1).fPriCiTaxIncluded = FALSE THEN
5673            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = FALSE');
5674         ELSE
5675            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = NULL');
5676         END IF;
5677 
5678        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTxblty = '||to_char(line_out_tab(1).fPriDiTxblty));
5679        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxType = '||to_char(line_out_tab(1).fPriDiTaxType));
5680        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxedAmt = '||
5681           to_char(line_out_tab(1).fPriDiTaxedAmt));
5682        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiExmtAmt = '||to_char(line_out_tab(1).fPriDiExmtAmt));
5683        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiExmtRsnCd = '||line_out_tab(1).fPriDiExmtRsnCd);
5684        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiNonTxblAmt = '||
5685           to_char(line_out_tab(1).fPriDiNonTxblAmt));
5686        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiNonTxblRsnCd = '||
5687           line_out_tab(1).fPriDiNonTxblRsnCd);
5688        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRate = '||to_char(line_out_tab(1).fPriDiRate));
5689        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRateEffDate = '||line_out_tab(1).fPriDiRateEffDate);
5690        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRateType = '||
5691           to_char(line_out_tab(1).fPriDiRateType));
5692        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxAmt = '||to_char(line_out_tab(1).fPriDiTaxAmt));
5693 
5694         IF line_out_tab(1).fPriDiTaxIncluded = TRUE THEN
5695            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = TRUE');
5696         ELSIF line_out_tab(1).fPriDiTaxIncluded = FALSE THEN
5697            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = FALSE');
5698         ELSE
5699            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = NULL');
5700         END IF;
5701 
5702        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiAppliesTo = '||
5703           to_char(line_out_tab(1).fPriDiAppliesTo));
5704        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddTaxingJuris = '||
5705           to_char(line_out_tab(1).fAddTaxingJuris));
5706        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCustExmtCrtfNum = '||
5707             line_out_tab(1).fAddCustExmtCrtfNum);
5708        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTxblty = '||to_char(line_out_tab(1).fAddCoTxblty));
5709        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxType = '||to_char(line_out_tab(1).fAddCoTaxType));
5710        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxedAmt = '||
5711           to_char(line_out_tab(1).fAddCoTaxedAmt));
5712        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoExmtAmt = '||to_char(line_out_tab(1).fAddCoExmtAmt));
5713        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoExmtRsnCd = '||line_out_tab(1).fAddCoExmtRsnCd);
5714        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoNonTxblAmt = '||
5715           to_char(line_out_tab(1).fAddCoNonTxblAmt));
5716        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoNonTxblRsnCd = '||
5717           line_out_tab(1).fAddCoNonTxblRsnCd);
5718        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRate = '||to_char(line_out_tab(1).fAddCoRate));
5719        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRateEffDate = '||line_out_tab(1).fAddCoRateEffDate);
5720        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRateType = '||
5721           to_char(line_out_tab(1).fAddCoRateType));
5722        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxAmt = '||to_char(line_out_tab(1).fAddCoTaxAmt));
5723 
5724         IF line_out_tab(1).fAddCoTaxIncluded = TRUE THEN
5725            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = TRUE');
5726         ELSIF line_out_tab(1).fAddCoTaxIncluded = FALSE THEN
5727            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = FALSE');
5728         ELSE
5729            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = NULL');
5730         END IF;
5731 
5732        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTxblty = '||to_char(line_out_tab(1).fAddCiTxblty));
5733        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxType = '||to_char(line_out_tab(1).fAddCiTaxType));
5734        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxedAmt = '||
5735           to_char(line_out_tab(1).fAddCiTaxedAmt));
5736        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiExmtAmt = '||to_char(line_out_tab(1).fAddCiExmtAmt));
5737        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiExmtRsnCd = '||line_out_tab(1).fAddCiExmtRsnCd);
5738        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiNonTxblAmt = '||
5739           to_char(line_out_tab(1).fAddCiNonTxblAmt));
5740        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiNonTxblRsnCd = '||
5741           line_out_tab(1).fAddCiNonTxblRsnCd);
5742        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRate = '||to_char(line_out_tab(1).fAddCiRate));
5743        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRateEffDate = '||line_out_tab(1).fAddCiRateEffDate);
5744        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRateType = '||
5745           to_char(line_out_tab(1).fAddCiRateType));
5746        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxAmt = '||to_char(line_out_tab(1).fAddCiTaxAmt));
5747 
5748         IF line_out_tab(1).fAddCiTaxIncluded = TRUE THEN
5749            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = TRUE');
5750         ELSIF line_out_tab(1).fAddCiTaxIncluded = FALSE THEN
5751            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = FALSE');
5752         ELSE
5753            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = NULL');
5754         END IF;
5755 
5756        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTxblty = '||to_char(line_out_tab(1).fAddDiTxblty));
5757        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxType = '||to_char(line_out_tab(1).fAddDiTaxType));
5758        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxedAmt = '||
5759           to_char(line_out_tab(1).fAddDiTaxedAmt));
5760        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiExmtAmt = '||to_char(line_out_tab(1).fAddDiExmtAmt));
5761        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiExmtRsnCd = '||line_out_tab(1).fAddDiExmtRsnCd);
5762        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiNonTxblAmt = '||
5763           to_char(line_out_tab(1).fAddDiNonTxblAmt));
5764        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiNonTxblRsnCd = '||
5765           line_out_tab(1).fAddDiNonTxblRsnCd);
5766        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRate = '||to_char(line_out_tab(1).fAddDiRate));
5767        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRateEffDate = '||line_out_tab(1).fAddDiRateEffDate);
5768        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRateType = '||
5769           to_char(line_out_tab(1).fAddDiRateType));
5770        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxAmt = '||to_char(line_out_tab(1).fAddDiTaxAmt));
5771 
5772         IF line_out_tab(1).fAddDiTaxIncluded = TRUE THEN
5773            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = TRUE');
5774         ELSIF line_out_tab(1).fAddDiTaxIncluded = FALSE THEN
5775            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = FALSE');
5776         ELSE
5777            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = NULL');
5778         END IF;
5779 
5780        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiAppliesTo = '|| to_char(line_out_tab(1).fAddDiAppliesTo));
5781 
5782     ELSIF (p_type = 'I') THEN
5783 
5784         /*-----------------------------------------------------------
5785          | Dumping ARP_TAX_VERTEX_QSU.tQSUInvoiceRecord Record Type |
5786          -----------------------------------------------------------*/
5787        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'*** Dumping tQSUInvoiceRecord Record Type***');
5788 
5789        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTGeoCd = '||to_char(inv_in_rec.fJurisSTGeoCd));
5790        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTStAbbrv = '||inv_in_rec.fJurisSTStAbbrv);
5791        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCoName = '||inv_in_rec.fJurisSTCoName);
5792        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiName = '||inv_in_rec.fJurisSTCiName);
5793 
5794         IF inv_in_rec.fJurisSTCiCmprssd = TRUE THEN
5795            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = TRUE');
5796         ELSIF inv_in_rec.fJurisSTCiCmprssd = FALSE THEN
5797            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = FALSE');
5798         ELSE
5799            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiCmprssd = NULL');
5800         END IF;
5801 
5802        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTZipCd = '||inv_in_rec.fJurisSTZipCd);
5803        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTCiSearchCd = '||inv_in_rec.fJurisSTCiSearchCd);
5804 
5805         IF inv_in_rec.fJurisSTInCi = TRUE THEN
5806            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = TRUE');
5807         ELSIF inv_in_rec.fJurisSTInCi = FALSE THEN
5808            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = FALSE');
5809         ELSE
5810            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSTInCi = NULL');
5811         END IF;
5812 
5813        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFGeoCd  = '||to_char(inv_in_rec.fJurisSFGeoCd));
5814        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFStAbbrv = '||inv_in_rec.fJurisSFStAbbrv);
5815        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCoName = '||inv_in_rec.fJurisSFCoName);
5816        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiName = '||inv_in_rec.fJurisSFCiName);
5817 
5818         IF inv_in_rec.fJurisSFCiCmprssd = TRUE THEN
5819       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = TRUE');
5820         ELSIF inv_in_rec.fJurisSFCiCmprssd = FALSE THEN
5821            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = FALSE');
5822         ELSE
5823            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiCmprssd = NULL');
5824         END IF;
5825 
5826        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFZipCd = '||inv_in_rec.fJurisSFZipCd);
5827        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFCiSearchCd = '||inv_in_rec.fJurisSFCiSearchCd);
5828 
5829         IF inv_in_rec.fJurisSFInCi = TRUE THEN
5830            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = TRUE');
5831         ELSIF inv_in_rec.fJurisSFInCi = FALSE THEN
5832            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = FALSE');
5833         ELSE
5834            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisSFInCi = NULL');
5835         END IF;
5836 
5837        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAGeoCd = '||to_char(inv_in_rec.fJurisOAGeoCd));
5838        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAStAbbrv = '||inv_in_rec.fJurisOAStAbbrv);
5839        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACoName = '||inv_in_rec.fJurisOACoName);
5840        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiName = '||inv_in_rec.fJurisOACiName);
5841 
5842         IF inv_in_rec.fJurisOACiCmprssd = TRUE THEN
5843            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = TRUE');
5844         ELSIF inv_in_rec.fJurisOACiCmprssd = FALSE THEN
5845            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = FALSE');
5846         ELSE
5847            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiCmprssd = NULL');
5848         END IF;
5849 
5850        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAZipCd = '||inv_in_rec.fJurisOAZipCd);
5851        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOACiSearchCd = '||inv_in_rec.fJurisOACiSearchCd);
5852 
5853         IF inv_in_rec.fJurisOAInCi = TRUE THEN
5854            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = TRUE');
5855         ELSIF inv_in_rec.fJurisOAInCi = FALSE THEN
5856            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = FALSE');
5857         ELSE
5858            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fJurisOAInCi = NULL');
5859         END IF;
5860 
5861        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvIdNum = '||inv_in_rec.fInvIdNum);
5862        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvCntrlNum = '||inv_in_rec.fInvCntrlNum);
5863        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvDate = '||inv_in_rec.fInvDate);
5864        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvGrossAmt = '||to_char(inv_in_rec.fInvGrossAmt));
5865        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvTotalTaxAmt = '||to_char(inv_in_rec.fInvTotalTaxAmt));
5866        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fInvNumLineItems = '||inv_in_rec.fInvNumLineItems);
5867        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCustCd = '||inv_in_rec.fTDMCustCd);
5868        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCustClassCd = '||inv_in_rec.fTDMCustClassCd);
5869        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fCustTxblty = '||inv_in_rec.fCustTxblty);
5870        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMCompCd = '||inv_in_rec.fTDMCompCd);
5871        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMDivCd = '||inv_in_rec.fTDMDivCd);
5872        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMStoreCd = '||inv_in_rec.fTDMStoreCd);
5873 
5874         /*------------------------------------------------------------
5875          | Dumping ARP_TAX_VERTEX_QSU.tQSULineItemTable Record Type  |
5876          ------------------------------------------------------------*/
5877        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'***Dumping tQSULineItemTable Record Type***');
5878        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransType = '||to_char(line_in_tab(1).fTransType));
5879        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransSubType = '||to_char(line_in_tab(1).fTransSubType));
5880        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransCd = '||to_char(line_in_tab(1).fTransCd));
5881        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransDate = '||line_in_tab(1).fTransDate);
5882        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransExtendedAmt = '||
5883             to_char(line_in_tab(1).fTransExtendedAmt));
5884        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransQuantity = '||
5885             to_char(line_in_tab(1).fTransQuantity));
5886        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransTotalTaxAmt = '||
5887             to_char(line_in_tab(1).fTransTotalTaxAmt));
5888        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransCombinedRate = '||
5889           to_char(line_in_tab(1).fTransCombinedRate));
5890        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransUserArea = '||line_in_tab(1).fTransUserArea);
5891        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTransStatusCd = '||
5892           to_char(line_in_tab(1).fTransStatusCd));
5893        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMProdCd = '||line_in_tab(1).fTDMProdCd);
5894        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fTDMProdRptngCd = '||line_in_tab(1).fTDMProdRptngCd);
5895        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fProdTxblty = '||to_char(line_in_tab(1).fProdTxblty));
5896        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriTaxingJuris = '||
5897           to_char(line_in_tab(1).fPriTaxingJuris));
5898        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCustExmtCrtfNum = '||
5899           line_in_tab(1).fPriCustExmtCrtfNum);
5900        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTxblty = '||to_char(line_in_tab(1).fPriStTxblty));
5901        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxType = '||to_char(line_in_tab(1).fPriStTaxType));
5902        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxedAmt = '||
5903           to_char(line_in_tab(1).fPriStTaxedAmt));
5904        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStExmtAmt = '||to_char(line_in_tab(1).fPriStExmtAmt));
5905        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStExmtRsnCd = '||line_in_tab(1).fPriStExmtRsnCd);
5906        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStNonTxblAmt = '||
5907           to_char(line_in_tab(1).fPriStNonTxblAmt));
5908        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStNonTxblRsnCd = '||
5909           line_in_tab(1).fPriStNonTxblRsnCd);
5910        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRate = '||to_char(line_in_tab(1).fPriStRate));
5911        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRateEffDate = '||line_in_tab(1).fPriStRateEffDate);
5912        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStRateType = '||
5913           to_char(line_in_tab(1).fPriStRateType));
5914        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxAmt = '||to_char(line_in_tab(1).fPriStTaxAmt));
5915 
5916         IF line_in_tab(1).fPriStTaxIncluded = TRUE THEN
5917       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = TRUE');
5918         ELSIF line_in_tab(1).fPriStTaxIncluded = FALSE THEN
5919            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = FALSE');
5920         ELSE
5921            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriStTaxIncluded = NULL');
5922         END IF;
5923 
5924        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTxblty = '||to_char(line_in_tab(1).fPriCoTxblty));
5925        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxType = '||to_char(line_in_tab(1).fPriCoTaxType));
5926        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxedAmt = '||
5927           to_char(line_in_tab(1).fPriCoTaxedAmt));
5928        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoExmtAmt = '||to_char(line_in_tab(1).fPriCoExmtAmt));
5929        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoExmtRsnCd = '||line_in_tab(1).fPriCoExmtRsnCd);
5930        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoNonTxblAmt = '||
5931           to_char(line_in_tab(1).fPriCoNonTxblAmt));
5932        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoNonTxblRsnCd = '||
5933           line_in_tab(1).fPriCoNonTxblRsnCd);
5934        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRate = '||to_char(line_in_tab(1).fPriCoRate));
5935        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRateEffDate = '||line_in_tab(1).fPriCoRateEffDate);
5936        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoRateType = '||
5937           to_char(line_in_tab(1).fPriCoRateType));
5938        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxAmt = '||to_char(line_in_tab(1).fPriCoTaxAmt));
5939 
5940         IF line_in_tab(1).fPriCoTaxIncluded = TRUE THEN
5941            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = TRUE');
5942         ELSIF line_in_tab(1).fPriCoTaxIncluded = FALSE THEN
5943            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = FALSE');
5944         ELSE
5945            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCoTaxIncluded = NULL');
5946         END IF;
5947 
5948        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTxblty = '||to_char(line_in_tab(1).fPriCiTxblty));
5949        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxType = '||to_char(line_in_tab(1).fPriCiTaxType));
5950        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxedAmt = '||
5951           to_char(line_in_tab(1).fPriCiTaxedAmt));
5952        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiExmtAmt = '||to_char(line_in_tab(1).fPriCiExmtAmt));
5953        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiExmtRsnCd = '||line_in_tab(1).fPriCiExmtRsnCd);
5954        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiNonTxblAmt = '||
5955           to_char(line_in_tab(1).fPriCiNonTxblAmt));
5956        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiNonTxblRsnCd = '||
5957           line_in_tab(1).fPriCiNonTxblRsnCd);
5958        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRate = '||to_char(line_in_tab(1).fPriCiRate));
5959        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRateEffDate = '||line_in_tab(1).fPriCiRateEffDate);
5960        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiRateType = '||
5961           to_char(line_in_tab(1).fPriCiRateType));
5962        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxAmt = '||to_char(line_in_tab(1).fPriCiTaxAmt));
5963 
5964         IF line_in_tab(1).fPriCiTaxIncluded = TRUE THEN
5965            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = TRUE');
5966         ELSIF line_in_tab(1).fPriCiTaxIncluded = FALSE THEN
5967            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = FALSE');
5968         ELSE
5969            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriCiTaxIncluded = NULL');
5970         END IF;
5971 
5972        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTxblty = '||to_char(line_in_tab(1).fPriDiTxblty));
5973        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxType = '||to_char(line_in_tab(1).fPriDiTaxType));
5974        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxedAmt = '||
5975           to_char(line_in_tab(1).fPriDiTaxedAmt));
5976        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiExmtAmt = '||to_char(line_in_tab(1).fPriDiExmtAmt));
5977        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiExmtRsnCd = '||line_in_tab(1).fPriDiExmtRsnCd);
5978        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiNonTxblAmt = '||
5979           to_char(line_in_tab(1).fPriDiNonTxblAmt));
5980        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiNonTxblRsnCd = '||
5981           line_in_tab(1).fPriDiNonTxblRsnCd);
5982        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRate = '||to_char(line_in_tab(1).fPriDiRate));
5983        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRateEffDate = '||line_in_tab(1).fPriDiRateEffDate);
5984        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiRateType = '||
5985           to_char(line_in_tab(1).fPriDiRateType));
5986        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxAmt = '||to_char(line_in_tab(1).fPriDiTaxAmt));
5987 
5988         IF line_in_tab(1).fPriDiTaxIncluded = TRUE THEN
5989            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = TRUE');
5990         ELSIF line_in_tab(1).fPriDiTaxIncluded = FALSE THEN
5991            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = FALSE');
5992         ELSE
5993            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiTaxIncluded = NULL');
5994         END IF;
5995 
5996        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fPriDiAppliesTo = '||
5997           to_char(line_in_tab(1).fPriDiAppliesTo));
5998        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddTaxingJuris = '||
5999           to_char(line_in_tab(1).fAddTaxingJuris));
6000        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCustExmtCrtfNum = '||
6001             line_in_tab(1).fAddCustExmtCrtfNum);
6002        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTxblty = '||to_char(line_in_tab(1).fAddCoTxblty));
6003        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxType = '||to_char(line_in_tab(1).fAddCoTaxType));
6004        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxedAmt = '||
6005           to_char(line_in_tab(1).fAddCoTaxedAmt));
6006        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoExmtAmt = '||to_char(line_in_tab(1).fAddCoExmtAmt));
6007        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoExmtRsnCd = '||line_in_tab(1).fAddCoExmtRsnCd);
6008        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoNonTxblAmt = '||
6009           to_char(line_in_tab(1).fAddCoNonTxblAmt));
6010        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoNonTxblRsnCd = '||
6011           line_in_tab(1).fAddCoNonTxblRsnCd);
6012        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRate = '||to_char(line_in_tab(1).fAddCoRate));
6013        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRateEffDate = '||line_in_tab(1).fAddCoRateEffDate);
6014        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoRateType = '||
6015           to_char(line_in_tab(1).fAddCoRateType));
6016        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxAmt = '||to_char(line_in_tab(1).fAddCoTaxAmt));
6017 
6018         IF line_in_tab(1).fAddCoTaxIncluded = TRUE THEN
6019            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = TRUE');
6020         ELSIF line_in_tab(1).fAddCoTaxIncluded = FALSE THEN
6021            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = FALSE');
6022         ELSE
6023            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCoTaxIncluded = NULL');
6024         END IF;
6025 
6026        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTxblty = '||to_char(line_in_tab(1).fAddCiTxblty));
6027        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxType = '||to_char(line_in_tab(1).fAddCiTaxType));
6028        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxedAmt = '||
6029           to_char(line_in_tab(1).fAddCiTaxedAmt));
6030        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiExmtAmt = '||to_char(line_in_tab(1).fAddCiExmtAmt));
6031        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiExmtRsnCd = '||line_in_tab(1).fAddCiExmtRsnCd);
6032        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiNonTxblAmt = '||
6033           to_char(line_in_tab(1).fAddCiNonTxblAmt));
6034        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiNonTxblRsnCd = '||
6035           line_in_tab(1).fAddCiNonTxblRsnCd);
6036        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRate = '||to_char(line_in_tab(1).fAddCiRate));
6037        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRateEffDate = '||line_in_tab(1).fAddCiRateEffDate);
6038        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiRateType = '||
6039           to_char(line_in_tab(1).fAddCiRateType));
6040        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxAmt = '||to_char(line_in_tab(1).fAddCiTaxAmt));
6041 
6042         IF line_in_tab(1).fAddCiTaxIncluded = TRUE THEN
6043            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = TRUE');
6044         ELSIF line_in_tab(1).fAddCiTaxIncluded = FALSE THEN
6045            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = FALSE');
6046         ELSE
6047            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddCiTaxIncluded = NULL');
6048         END IF;
6049 
6050        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTxblty = '||to_char(line_in_tab(1).fAddDiTxblty));
6051        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxType = '||to_char(line_in_tab(1).fAddDiTaxType));
6052        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxedAmt = '||
6053           to_char(line_in_tab(1).fAddDiTaxedAmt));
6054        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiExmtAmt = '||to_char(line_in_tab(1).fAddDiExmtAmt));
6055        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiExmtRsnCd = '||line_in_tab(1).fAddDiExmtRsnCd);
6056        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiNonTxblAmt = '||
6057           to_char(line_in_tab(1).fAddDiNonTxblAmt));
6058        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiNonTxblRsnCd = '||
6059           line_in_tab(1).fAddDiNonTxblRsnCd);
6060        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRate = '||to_char(line_in_tab(1).fAddDiRate));
6061        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRateEffDate = '||line_in_tab(1).fAddDiRateEffDate);
6062        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiRateType = '||
6063           to_char(line_in_tab(1).fAddDiRateType));
6064        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxAmt = '||to_char(line_in_tab(1).fAddDiTaxAmt));
6065 
6066         IF line_in_tab(1).fAddDiTaxIncluded = TRUE THEN
6067            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = TRUE');
6068         ELSIF line_in_tab(1).fAddDiTaxIncluded = FALSE THEN
6069            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = FALSE');
6070         ELSE
6071            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiTaxIncluded = NULL');
6072         END IF;
6073 
6074        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'fAddDiAppliesTo = '|| to_char(line_in_tab(1).fAddDiAppliesTo));
6075     END IF;
6076    END IF;
6077 
6078    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6079      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
6080    END IF;
6081 
6082 end DISPLAY_OUTPUT;
6083 
6084 PROCEDURE ERROR_EXCEPTION_HANDLE(str  VARCHAR2) is
6085 
6086 CURSOR error_exception_cursor IS
6087 SELECT  EVNT_CLS_MAPPING_ID,
6088   TRX_ID,
6089   TAX_REGIME_CODE
6090 FROM    ZX_TRX_PRE_PROC_OPTIONS_GT;
6091 
6092 BEGIN
6093    IF (g_docment_type_id is null) THEN
6094       OPEN  error_exception_cursor;
6095       FETCH error_exception_cursor
6096        INTO g_docment_type_id,
6097             g_trasaction_id,
6098             g_tax_regime_code;
6099       CLOSE error_exception_cursor;
6100    END IF;
6101 
6102    err_count := nvl(err_count,0)+1;
6103    G_MESSAGES_TBL.DOCUMENT_TYPE_ID(err_count)     := g_docment_type_id;
6104    G_MESSAGES_TBL.TRANSACTION_ID(err_count)       := g_trasaction_id;
6105    G_MESSAGES_TBL.COUNTRY_CODE(err_count)         := g_tax_regime_code;
6106    G_MESSAGES_TBL.TRANSACTION_LINE_ID(err_count)  := g_transaction_line_id;
6107    G_MESSAGES_TBL.TRX_LEVEL_TYPE(err_count)       := g_trx_level_type;
6108    G_MESSAGES_TBL.ERROR_MESSAGE_TYPE(err_count)   := 'ERROR';
6109    G_MESSAGES_TBL.ERROR_MESSAGE_STRING(err_count) := str;
6110 
6111 END ERROR_EXCEPTION_HANDLE;
6112 
6113 PROCEDURE INITIALIZE is
6114   l_api_name           CONSTANT VARCHAR2(30) := 'INITIALIZE';
6115 BEGIN
6116    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6117      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
6118    END IF;
6119 
6120    context_rec.fGetJurisNames := TRUE;
6121    context_rec.fRoundingMethod := ZX_TAX_VERTEX_QSU.cQSURndngMethodQuantum;
6122 
6123    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
6124      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
6125    END IF;
6126 end INITIALIZE;
6127 
6128 begin /*Constructor*/
6129    initialize;
6130 END ZX_VERTEX_TAX_SERVICE_PKG;