DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_TAXWARE_TAX_SERVICE_PKG

Source


1 PACKAGE BODY ZX_TAXWARE_TAX_SERVICE_PKG as
2 /*$Header: zxtxwsrvcpkgb.pls 120.49.12020000.6 2012/12/22 00:09:37 ssanka ship $*/
3 
4 /* ======================================================================*
5  | FND Logging infrastructure                                           |
9 G_LEVEL_UNEXPECTED          CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
6  * ======================================================================*/
7 G_PKG_NAME                  CONSTANT VARCHAR2(30) := 'ZX_TAXWARE_TAX_SERVICE_PKG';
8 G_CURRENT_RUNTIME_LEVEL     CONSTANT NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
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_TAXWARE_TAX_SERVICE_PKG.';
16 
17 -- Service Indicator
18 SERVIND		CHAR;
19 NOSERV_IND	CONSTANT SERVIND%TYPE := ' ';
20 SERVICE_IND	CONSTANT SERVIND%TYPE := 'S';
21 RENTAL_IND	CONSTANT SERVIND%TYPE := 'R';
22 G_tax_selection     		ZX_TAX_TAXWARE_GEN.SELPARMTYP%TYPE;
23 G_STRING       VARCHAR2(200);
24 g_docment_type_id	number;
25 g_trasaction_id		number;
26 g_tax_regime_code	varchar2(80);
27 g_transaction_line_id	number;
28 g_trx_level_type	varchar2(20);
29 l_trx_line_context_changed      BOOLEAN;
30 g_StTaxAmt	number;
31 g_CoTaxAmt	number;
32 g_CiTaxAmt	number;
33 g_TotalTaxAmt   NUMBER;
34 cache_index    number :=0;
35 l_state_tax_cnt        NUMBER;
36 l_county_tax_cnt       NUMBER;
37 l_city_tax_cnt         NUMBER;
38 l_state_cert_no                 varchar2(150);
39 l_county_cert_no                varchar2(150);
40 l_city_cert_no                  varchar2(150);
41 
42 Type cache_record_type is record(
43 internal_organization_id  number,
44 document_type_id          number,
45 transaction_id		  number,
46 transaction_line_id       number
47 );
48 
49 type cache_tab is table of cache_record_type index by binary_integer;
50 cache_table cache_tab;
51 
52 TYPE NUMBER_tbl_type            IS TABLE OF NUMBER         INDEX BY BINARY_INTEGER;
53 TYPE VARCHAR2_1_tbl_type        IS TABLE OF VARCHAR2(1)    INDEX BY BINARY_INTEGER;
54 TYPE VARCHAR2_2_tbl_type        IS TABLE OF VARCHAR2(2)    INDEX BY BINARY_INTEGER;
55 TYPE VARCHAR2_15_tbl_type       IS TABLE OF VARCHAR2(15)   INDEX BY BINARY_INTEGER;
56 TYPE VARCHAR2_30_tbl_type       IS TABLE OF VARCHAR2(30)   INDEX BY BINARY_INTEGER;
57 TYPE VARCHAR2_80_tbl_type       IS TABLE OF VARCHAR2(80)   INDEX BY BINARY_INTEGER;
58 TYPE VARCHAR2_50_tbl_type       IS TABLE OF VARCHAR2(50)   INDEX BY BINARY_INTEGER;
59 TYPE VARCHAR2_240_tbl_type      IS TABLE OF VARCHAR2(240)  INDEX BY BINARY_INTEGER;
60 TYPE DATE_tbl_type              IS TABLE OF DATE           INDEX BY BINARY_INTEGER;
61 
62 
63 TYPE SYNC_TAX_LINES_TBL IS RECORD(
64 document_type_id		NUMBER_tbl_type,
65 transaction_id			NUMBER_tbl_type,
66 transaction_line_id		NUMBER_tbl_type,
67 trx_level_type   		VARCHAR2_30_tbl_type,
68 country_code			VARCHAR2_30_tbl_type,
69 tax				VARCHAR2_30_tbl_type,
70 situs				VARCHAR2_30_tbl_type,
71 tax_jurisdiction		VARCHAR2_30_tbl_type,
72 tax_currency_code		VARCHAR2_15_tbl_type,
73 tax_curr_tax_amount		NUMBER_tbl_type,
74 tax_amount			NUMBER_tbl_type,
75 tax_rate_percentage		NUMBER_tbl_type,
76 taxable_amount			NUMBER_tbl_type,
77 exempt_rate_modifier		NUMBER_tbl_type,
78 exempt_reason			VARCHAR2_240_tbl_type,
79 tax_only_line_flag		VARCHAR2_1_tbl_type,
80 inclusive_tax_line_flag		VARCHAR2_1_tbl_type,
81 use_tax_flag			VARCHAR2_1_tbl_type,
82 ebiz_override_flag		VARCHAR2_1_tbl_type,
83 user_override_flag		VARCHAR2_1_tbl_type,
84 last_manual_entry		VARCHAR2_30_tbl_type,
85 manually_entered_flag		VARCHAR2_1_tbl_type,
86 cancel_flag			VARCHAR2_1_tbl_type,
87 delete_flag			VARCHAR2_1_tbl_type
88 );
89 
90 /*-----------------------------------------------------------------------*/
91 /* Taxware error messages - based on Completion code                     */
92 /*-----------------------------------------------------------------------*/
93 --
94 -- Generic Tax Calculation error messages
95 --
96 TGMSG_SUCCESS       CONSTANT VARCHAR2(80) :=
97 	'Tax calculation processing completed successfully.';
98 TGMSG_EMPTY         CONSTANT VARCHAR2(80) := ' ';
99 TGMSG_INVALIDZIP    CONSTANT VARCHAR2(80) := 'Zip code is not numeric.';
100 TGMSG_INVALIDST     CONSTANT VARCHAR2(80) := 'Invalid state code.';
101 TGMSG_INVALIDGRS    CONSTANT VARCHAR2(80) :=
102 	'CalcType = G and supplied gross amount is zero.';
103 TGMSG_INVALIDTAXAMT CONSTANT VARCHAR2(80) :=
104 	'CalcType = T and supplied tax amount is zero.';
105 TGMSG_GENINVZIPST   CONSTANT VARCHAR2(80) :=
106 	'Invalid zip code - zip code is not in range for state.';
107 TGMSG_INVALIDLINK  CONSTANT VARCHAR2(80) :=
108 	'Linkage parameters are invalid (possibly missing ENDLINK).';
109 TGMSG_TAXACCESSERR  CONSTANT VARCHAR2(80) := 'Error accessing Tax Master File.';
110 TGMSG_TAXNOTOPEN    CONSTANT VARCHAR2(80) := 'Tax file is not open.';
111 TGMSG_INVCALCTYP    CONSTANT VARCHAR2(80) :=
112 	'Calculation type is not G, T, or space.';
113 TGMSG_PRDACCESSERR  CONSTANT VARCHAR2(80) := 'Error accessing product file.';
114 TGMSG_RUNTIMEOPENERR CONSTANT VARCHAR2(80) :=
115 	'Error accessing TAX010 runtime files.';
116 TGMSG_RATEISZERO    CONSTANT VARCHAR2(80) := 'Total rate determined by TAX010 is zero.  Gross amount cannot be determined.';
117 TGMSG_NEGFIELDS     CONSTANT VARCHAR2(80) := 'Negative field passed to TAX010.';
118 TGMSG_INVALIDDTE    CONSTANT VARCHAR2(80) :=
119 	'Invalid date passed - defaulted to system date.';
120 TGMSG_APOFPO        CONSTANT VARCHAR2(80) :=
121 	'No taxes calculated for APO/FPO zip code.';
122 TGMSG_AUDACCESSERR  CONSTANT VARCHAR2(80) := 'Error accessing audit file.';
123 TGMSG_INVCALCERR    CONSTANT VARCHAR2(80) :=
124 	'Calculation error file requested but not defined in TAXSET.H';
125 TGMSG_CERRACCESSERR CONSTANT VARCHAR2(80) :=
126 	'Error accessing calculation error file.';
127 TGMSG_JERRACCESSERR CONSTANT VARCHAR2(80) :=
128 	'Error accessing jurisdiction error file.';
129 TGMSG_INVJURERR     CONSTANT VARCHAR2(80) :=
130 	'Error accessing jurisdiction error file.';
131 TGMSG_INVJURPROC    CONSTANT VARCHAR2(80) :=
132 	'Jurisdiction processing requested but not defined in TAXSET.H';
133 TGMSG_INVSELPARM    CONSTANT VARCHAR2(80) :=
134 	'Tax selection parameter was not 1, 2, 3, or space.';
135 TGMSG_JURISERROR    CONSTANT VARCHAR2(80) := 'A jurisdiction error has occurred.  Tax calculation will not be performed.';
136 TGMSG_UNKNOWN       CONSTANT VARCHAR2(80) :=
137 	'Unrecognized Tax Calculation general completion code: ';
138 TGMSG_STEPNOTOPENERR  CONSTANT VARCHAR2(80) :=
139 	'Error accessing STEP90 runtime files.';
140 TGMSG_STEPNOCUSTERR  CONSTANT VARCHAR2(80) :=
141 	'STEP processing requested but customer number was blank.';
142 TGMSG_NOSTEPPROC     CONSTANT VARCHAR2(200) := 'Either a Tax Certificate was present or CalcType = T or the transcation was a credit, NO STEP processing.';
143 TGMSG_STEPFILEOPENERR  CONSTANT VARCHAR2(80) :=
144 	'STEP OPEN was successful but the subsequent call to STEP failed.';
145 TGMSG_STEPPARAMERR  CONSTANT VARCHAR2(80) :=
146 	'One or more of STEP parameters were invalid.';
147 TGMSG_STEPMISCERR   CONSTANT VARCHAR2(80) :=
148 	'Unknown STEP Error Occurred. No further processing occurs.';
149 TGMSG_PRDINVALID4CU  CONSTANT VARCHAR2(80) := 'The product code passed is invalid for a Consumer Use or service transaction.';
150 TGMSG_NEXMERCHACCESSERR  CONSTANT VARCHAR2(80) :=
151 	'Company profile indexed file could not be accessed.';
152 TGMSG_NEXNOMERCHRECERR   CONSTANT VARCHAR2(80) :=
153 	'No company profile record found for Company ID passed to TAX010.';
154 TGMSG_NEXSTATEACCESSERR  CONSTANT VARCHAR2(80) :=
155 	'State nexus indexed file could not be accessed.';
156 TGMSG_NEXLOCALACCESSERR  CONSTANT VARCHAR2(80) :=
157 	'Local nexus indexed file could not be accessed.';
158 TGMSG_NOCOMPIDERROR      CONSTANT VARCHAR2(80) := 'No Company ID was passed.';
159 TGMSG_NEXPRONOTOPENERR   CONSTANT VARCHAR2(80) :=
160 	'Nexus data files could not be opened.';
161 TGMSG_NOSTATENEXRECERR   CONSTANT VARCHAR2(80) := 'No state nexus record found.';
162 TGMSG_NEXPRONOTCLOSEERR  CONSTANT VARCHAR2(80) :=
163 	'Nexus data files could not be closed.';
164 TGMSG_CONUSEFILEERR      CONSTANT VARCHAR2(80) :=
165 	'Consumer use file could not be accessed.';
166 TGMSG_PRDINVALID4SERV    CONSTANT VARCHAR2(80) :=
167 	'Product code invalid for service.';
168 TGMSG_CALC_E_ERROR       CONSTANT VARCHAR2(80) :=
169 	'Error in calculation type E processing.';
170 TGMSG_EXEMPTLGRGROSS     CONSTANT VARCHAR2(80) :=
171 	'Exempt amount larger than gross plus exempt.' ;
172 TGMSG_AMOUNTOVERFLOW     CONSTANT VARCHAR2(80) := 'Amount passed exceeds the maximum value that can be stored in the audit file.';
173 TGMSG_PRODCONVNOTOPEN    CONSTANT VARCHAR2(80) :=
174 	'Product conversion files could not be opened.';
175 TGMSG_PRODCDCONVNOTFOUND CONSTANT VARCHAR2(80) :=
176 	'Product conversion files could not be found.';
177 TGMSG_PRODCONVCLOSEERR   CONSTANT VARCHAR2(80) :=
178 	'Error while closing product conversion files.';
179 
180 --
181 -- Location Specific Tax Calculation error messages
182 -- Note: Since all these completion codes indicate warning, These
183 -- 	 completion codes are not trapped. Future use.
184 --
185 TMSG_INVTAXIND 		 CONSTANT VARCHAR2(80) :=
186 	'Sales/use tax indicator not valid, defaulted to sales tax.';
187 TMSG_OVRRDERATE     CONSTANT VARCHAR2(80) :=
188 	'Used override rate for calculation.';
189 TMSG_OVRRDEAMT      CONSTANT VARCHAR2(80) :=
190 	'Used override amount for calculation.';
191 TMSG_NOTAXIND       CONSTANT VARCHAR2(80) :=
192 	'Used no tax indicator for calculation.';
193 TMSG_PRODRATE       CONSTANT VARCHAR2(80) :=
194 	'Used product code rate to calculate taxes.';
195 TMSG_PRODMAXUSE     CONSTANT VARCHAR2(80) := 'The product file rates used to calculate taxes were adjusted per max tax.';
196 TMSG_PRODMAXINV     CONSTANT VARCHAR2(80) :=
197 	'Product file rates were used to calculate taxes.';
198 TMSG_MAXADJUST      CONSTANT VARCHAR2(80) :=
199 	'Taxes adjusted per product maximum tax laws.';
200 TMSG_NITEM_INCOMPAT_MAX CONSTANT VARCHAR2(80) :=
201 	'Number of items is not compatible with maximum tax laws.';
202 TMSG_DEFAULT_CURRENT CONSTANT VARCHAR2(80) :=
203 	'Invoice date is before prior date on file - used current rate.';
204 TMSG_NO_TAXES     CONSTANT VARCHAR2(80) := 'Administration code is 2 - taxes not calculated for this location type.';
205 TMSG_STATE_TAX_ONLY CONSTANT VARCHAR2(80) := 'State administration is 3 - taxes not calculated for this location type.';
206 TMSG_STATE_FED_USE_ONLY CONSTANT VARCHAR2(80) := 'Administration code is 4 - use taxes not calculated for this location type';
207 TMSG_STATE_FED_SALES_ONLY CONSTANT VARCHAR2(80) := 'Administration code is 5 - sales taxes not calculated for this location type';
208 TMSG_CITY_DEFAULT    CONSTANT VARCHAR2(80) := 'Used county code/defaulted to most likely city.';
209 TMSG_CNLO_NO_TAXES   CONSTANT VARCHAR2(80) := 'Administration code is 2 - taxes not calculated.';
210 TMSG_CNLO_USE_ONLY CONSTANT VARCHAR2(80) := 'Administration code is 3 - use taxes not calculated.';
211 TMSG_CNLO_SALES_ONLY CONSTANT VARCHAR2(80) := 'Administration code is 4 - sales taxes not calculated.';
212 TMSG_CNLO_NOTAXFORZP CONSTANT VARCHAR2(80) := 'This state has city/town taxes but not for this zip. no taxes calculated';
213 TMSG_UNKNOWN         CONSTANT VARCHAR2(80) := 'Unrecognized location completion code: ';
214 --
215 -- Generic Jurisdiction error messages
216 --
217 JGMSG_JURSUCCESS     CONSTANT VARCHAR2(80) := 'Jurisdiction processing completed successfully.';
218 JGMSG_JURINVPOT   CONSTANT VARCHAR2(80) := 'Invalid POT (Not O or D).';
219 JGMSG_JURINVSRVIN CONSTANT VARCHAR2(80) := 'Invalid service indicator (not S, R, or space).';
220 JGMSG_JURERROR    CONSTANT VARCHAR2(80) := 'Jurisdiction error.';
221 --
222 -- Location Specific Jurisdiction error messages
223 --
224 JMSG_LOCCNTYDEF   CONSTANT VARCHAR2(80) := 'Defaulted to system county code.';
225 JMSG_LOCINVSTATE  CONSTANT VARCHAR2(80) := 'Invalid state code.';
226 JMSG_LOCNOZIP     CONSTANT VARCHAR2(80) := 'Zip code was not supplied.';
227 JMSG_LOCINVZIP    CONSTANT VARCHAR2(80) := 'Invalid zip code.';
228 JMSG_LOCNOGEO     CONSTANT VARCHAR2(80) := 'The city or geo code was not supplied.';
229 JMSG_LOCINVCITY   CONSTANT VARCHAR2(80) := 'City code is spaces or not numeric.';
230 JMSG_UNKNOWN      CONSTANT VARCHAR2(80) := 'Unrecognized Jurisdiction location completion code: ';
231 
232 /*------------------------------------------------
233 |         Global Variables                        |
234  ------------------------------------------------*/
235  C_LINES_PER_COMMIT CONSTANT NUMBER := 1000;
236  I Number;  --Index Variable.
237  g_line_level_action varchar2(20);
238  l_document_type zx_lines_det_factors.event_class_code%type;
239 -- PG_DEBUG varchar2(1);
240 -- x_return_status varchar2(20);
241 
242 /* ======================================================================*
243  | Data Type Definitions                                                 |
244  * ======================================================================*/
245 
246    type char_tab is table of char       index by binary_integer;
247    type num_tab  is table of number(15) index by binary_integer;
248    type num1_tab is table of number     index by binary_integer;
249    type date_tab is table of date       index by binary_integer;
250    type var1_tab is table of varchar2(1)    index by binary_integer;
251    type var2_tab is table of varchar2(80)   index by binary_integer;
252    type var3_tab is table of varchar2(2000) index by binary_integer;
253    type var4_tab is table of varchar2(150)  index by binary_integer;
254    type var5_tab is table of varchar2(240)  index by binary_integer;
255 
256 
257    /*Private Procedures*/
258    PROCEDURE PERFORM_VALIDATE(X_RETURN_STATUS  OUT NOCOPY VARCHAR2);
259    PROCEDURE PERFORM_LINE_CREATION(p_tax_lines_tbl     OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
260 				   p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
261 				   X_RETURN_STATUS  OUT NOCOPY VARCHAR2);
262    PROCEDURE PERFORM_LINE_DELETION (X_RETURN_STATUS OUT NOCOPY VARCHAR2);
263    PROCEDURE PERFORM_UPDATE       (p_tax_lines_tbl     OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
264 				   p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
265 				   X_RETURN_STATUS  OUT NOCOPY VARCHAR2);
266    FUNCTION SET_PARAMETERS(
267 	l_Tax_Link 	IN OUT NOCOPY zx_tax_taxware_GEN.TaxParm,
268 	l_JurLink 	IN OUT NOCOPY zx_tax_taxware_GEN.JurParm,
269 	l_OraLink       IN OUT NOCOPY zx_tax_taxware_GEN.t_OraParm) RETURN BOOLEAN;
270    FUNCTION  CALCULATE_TAX(
271 	l_TaxLink 	IN OUT NOCOPY zx_tax_taxware_GEN.TaxParm,
272 	l_JurLink 	IN OUT NOCOPY zx_tax_taxware_GEN.JurParm,
273 	l_OraLink       IN OUT NOCOPY zx_tax_taxware_GEN.t_OraParm) RETURN BOOLEAN;
274    PROCEDURE TAX_RESULTS_PROCESSING(
275 	p_tax_lines_tbl    OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
276 	p_currency_tab  IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
277 	l_TaxLink 	IN OUT NOCOPY  zx_tax_taxware_GEN.TaxParm,
278 	l_JurLink 	IN OUT NOCOPY  zx_tax_taxware_GEN.JurParm,
279 	l_OraLink       IN OUT NOCOPY  zx_tax_taxware_GEN.t_OraParm,
280 	X_RETURN_STATUS  OUT NOCOPY VARCHAR2);
281 
282    PROCEDURE SET_DOCUMENT_TYPE( P_DOCUMENT_TYPE IN OUT NOCOPY VARCHAR2,
283 				P_ADJ_DOC_TRX_ID IN NUMBER,
284 				P_LINE_AMOUNT IN NUMBER,
285 				X_RETURN_STATUS  OUT NOCOPY VARCHAR2);
286 
287    PROCEDURE ERROR_EXCEPTION_HANDLE(P_ERROR_STRING VARCHAR2);
288    PROCEDURE INITIALIZE;
289    PROCEDURE STACK_ERROR
290 	(p_msgname IN    VARCHAR2,
291          p_token1  IN    VARCHAR2 ,
292          p_value1  IN    VARCHAR2 ,
293          p_token2  IN    VARCHAR2 ,
294          p_value2  IN    VARCHAR2  );
295    PROCEDURE GET_VENDOR_ERROR(
296 	tax_selection 	IN	ZX_TAX_TAXWARE_GEN.SELPARMTYP%TYPE,
297 	errTaxParm	IN	ZX_TAX_TAXWARE_GEN.TaxParm,
298 	errJurParm	IN	ZX_TAX_TAXWARE_GEN.JurParm );
299 
300    PROCEDURE dump_vendor_rec ( dmpTaxLink  IN  	ZX_TAX_TAXWARE_GEN.TaxParm,
301                                dmpJurLink  IN 	ZX_TAX_TAXWARE_GEN.JurParm,
302                                dmpOraLink  IN   ZX_TAX_TAXWARE_GEN.t_OraParm,
303 			       input_param_flag IN  	BOOLEAN  ) ;
304 
305 
306     /*Structure to hold the transaction information*/
307 
308 pg_internal_org_id_tab			num1_tab;
309 pg_doc_type_id_tab     			num1_tab;
310 pg_trx_id_tab				num1_tab;
311 pg_appli_code_tab			var2_tab;
312 pg_doc_level_action_tab			var2_tab;
313 pg_trx_date_tab				date_tab;
317 */
314 pg_trx_curr_code_tab			var2_tab;
315 /* Bug 5090593:
316 pg_quote_flag_tab			var1_tab;
318 pg_legal_entity_num_tab 		var2_tab;
319 pg_esta_name_tab			var3_tab;
320 pg_Trx_number_tab			var4_tab;
321 pg_Trx_desc_tab				var3_tab;
322 pg_doc_sequence_value_tab		var3_tab;
323 pg_Trx_due_date_tab			date_tab;
324 /* Bug 5090593:
325 pg_Trx_Sol_Ori_tab			var2_tab;
326 */
327 pg_Allow_Tax_Calc_tab			var1_tab;
328 pg_trx_line_id_tab			num1_tab;
329 pg_trx_level_type_tab			var2_tab;
330 pg_line_level_action_tab		var2_tab;
331 pg_line_class_tab			var2_tab;
332 pg_trx_shipping_date_tab		date_tab;
333 pg_trx_receipt_date_tab			date_tab;
334 pg_trx_line_type_tab			var2_tab;
335 pg_trx_line_date_tab			date_tab;
336 pg_trx_business_cat_tab			var3_tab;
337 pg_line_intended_use_tab		var3_tab;
338 pg_line_amt_incl_tax_flag_tab		var1_tab;
339 pg_line_amount_tab			num1_tab;
340 pg_other_incl_tax_amt_tab		num1_tab;
341 pg_trx_line_qty_tab			num1_tab;
342 pg_unit_price_tab			num1_tab;
343 pg_cash_discount_tab			num1_tab;
344 pg_volume_discount_tab			num1_tab;
345 pg_trading_discount_tab			num1_tab;
346 pg_trans_charge_tab			num1_tab;
347 pg_ins_charge_tab			num1_tab;
348 pg_other_charge_tab			num1_tab;
349 pg_prod_id_tab				num1_tab;
350 pg_uom_code_tab				var2_tab;
351 pg_prod_type_tab			var3_tab;
352 pg_prod_code_tab			var2_tab;
353 pg_fob_point_tab			var2_tab;
354 pg_ship_to_pty_numr_tab			var2_tab;
355 pg_ship_to_pty_name_tab			var3_tab;
356 pg_ship_from_pty_num_tab		var2_tab;
357 pg_ship_from_pty_name_tab		var3_tab;
358 pg_ship_to_loc_id_tab                   num1_tab;      -- Bug 5090593
359 Pg_ship_to_grphy_type1_tab          	var5_tab;
360 pg_ship_to_grphy_value1_tab     	var5_tab;
361 pg_ship_to_grphy_type2_tab      	var5_tab;
362 pg_ship_to_grphy_value2_tab     	var5_tab;
363 pg_ship_to_grphy_type3_tab      	var5_tab;
364 pg_ship_to_grphy_value3_tab     	var5_tab;
365 pg_ship_to_grphy_type4_tab      	var5_tab;
366 pg_ship_to_grphy_value4_tab     	var5_tab;
367 pg_ship_to_grphy_type5_tab      	var5_tab;
368 pg_ship_to_grphy_value5_tab     	var5_tab;
369 pg_ship_to_grphy_type6_tab      	var5_tab;
370 pg_ship_to_grphy_value6_tab     	var5_tab;
371 pg_ship_to_grphy_type7_tab      	var5_tab;
372 pg_ship_to_grphy_value7_tab     	var5_tab;
373 pg_ship_to_grphy_type8_tab      	var5_tab;
374 pg_ship_to_grphy_value8_tab     	var5_tab;
375 pg_ship_to_grphy_type9_tab      	var5_tab;
376 pg_ship_to_grphy_value9_tab     	var5_tab;
377 pg_ship_to_grphy_type10_tab     	var5_tab;
378 pg_ship_to_grphy_value10_tab    	var5_tab;
379 pg_ship_fr_loc_id_tab                   num1_tab;      -- Bug 5090593
380 pg_ship_fr_grphy_type1_tab      	var5_tab;
381 pg_ship_fr_grphy_value1_tab     	var5_tab;
382 pg_ship_fr_grphy_type2_tab      	var5_tab;
383 pg_ship_fr_grphy_value2_tab     	var5_tab;
384 pg_ship_fr_grphy_type3_tab      	var5_tab;
385 pg_ship_fr_grphy_value3_tab     	var5_tab;
386 pg_ship_fr_grphy_type4_tab      	var5_tab;
387 pg_ship_fr_grphy_value4_tab     	var5_tab;
388 pg_ship_fr_grphy_type5_tab      	var5_tab;
389 pg_ship_fr_grphy_value5_tab     	var5_tab;
390 pg_ship_fr_grphy_type6_tab      	var5_tab;
391 pg_ship_fr_grphy_value6_tab     	var5_tab;
392 pg_ship_fr_grphy_type7_tab      	var5_tab;
393 pg_ship_fr_grphy_value7_tab     	var5_tab;
394 pg_ship_fr_grphy_type8_tab      	var5_tab;
395 pg_ship_fr_grphy_value8_tab     	var5_tab;
396 pg_ship_fr_grphy_type9_tab      	var5_tab;
397 pg_ship_fr_grphy_value9_tab     	var5_tab;
398 pg_ship_fr_grphy_type10_tab     	var5_tab;
399 pg_ship_fr_grphy_value10_tab    	var5_tab;
400 pg_poa_loc_id_tab                       num1_tab;      -- Bug 5090593
401 pg_poa_grphy_type1_tab          	var5_tab;
402 pg_poa_grphy_value1_tab         	var5_tab;
403 pg_poa_grphy_type2_tab          	var5_tab;
404 pg_poa_grphy_value2_tab         	var5_tab;
405 pg_poa_grphy_type3_tab          	var5_tab;
406 pg_poa_grphy_value3_tab         	var5_tab;
407 pg_poa_grphy_type4_tab          	var5_tab;
408 pg_poa_grphy_value4_tab         	var5_tab;
409 pg_poa_grphy_type5_tab          	var5_tab;
410 pg_poa_grphy_value5_tab         	var5_tab;
411 pg_poa_grphy_type6_tab          	var5_tab;
412 pg_poa_grphy_value6_tab         	var5_tab;
413 pg_poa_grphy_type7_tab          	var5_tab;
414 pg_poa_grphy_value7_tab         	var5_tab;
415 pg_poa_grphy_type8_tab          	var5_tab;
416 pg_poa_grphy_value8_tab         	var5_tab;
417 pg_poa_grphy_type9_tab          	var5_tab;
418 pg_poa_grphy_value9_tab         	var5_tab;
419 pg_poa_grphy_type10_tab         	var5_tab;
420 pg_poa_grphy_value10_tab        	var5_tab;
421 pg_poo_loc_id_tab                       num1_tab;      -- Bug 5090593
422 pg_poo_grphy_type1_tab          	var5_tab;
423 pg_poo_grphy_value1_tab         	var5_tab;
424 pg_poo_grphy_type2_tab          	var5_tab;
425 pg_poo_grphy_value2_tab         	var5_tab;
426 pg_poo_grphy_type3_tab          	var5_tab;
427 pg_poo_grphy_value3_tab         	var5_tab;
428 pg_poo_grphy_type4_tab          	var5_tab;
429 pg_poo_grphy_value4_tab         	var5_tab;
430 pg_poo_grphy_type5_tab          	var5_tab;
431 pg_poo_grphy_value5_tab         	var5_tab;
432 pg_poo_grphy_type6_tab          	var5_tab;
433 pg_poo_grphy_value6_tab         	var5_tab;
434 pg_poo_grphy_type7_tab          	var5_tab;
435 pg_poo_grphy_value7_tab         	var5_tab;
436 pg_poo_grphy_type8_tab          	var5_tab;
437 pg_poo_grphy_value8_tab         	var5_tab;
438 pg_poo_grphy_type9_tab          	var5_tab;
439 pg_poo_grphy_value9_tab         	var5_tab;
440 pg_poo_grphy_type10_tab         	var5_tab;
441 pg_poo_grphy_value10_tab        	var5_tab;
442 pg_bill_to_pty_num_tab			var2_tab;
443 pg_bill_to_pty_name_tab			var3_tab;
444 pg_bill_from_pty_num_tab		var2_tab;
445 pg_bill_from_pty_name_tab		var3_tab;
446 pg_bill_to_loc_id_tab                   num1_tab;      -- Bug 5090593
447 pg_bill_to_grphy_type1_tab      	var5_tab;
448 pg_bill_to_grphy_value1_tab     	var5_tab;
449 pg_bill_to_grphy_type2_tab      	var5_tab;
450 pg_bill_to_grphy_value2_tab     	var5_tab;
451 pg_bill_to_grphy_type3_tab      	var5_tab;
452 pg_bill_to_grphy_value3_tab     	var5_tab;
453 pg_bill_to_grphy_type4_tab      	var5_tab;
454 pg_bill_to_grphy_value4_tab     	var5_tab;
455 pg_bill_to_grphy_type5_tab      	var5_tab;
456 pg_bill_to_grphy_value5_tab     	var5_tab;
457 pg_bill_to_grphy_type6_tab      	var5_tab;
458 pg_bill_to_grphy_value6_tab     	var5_tab;
459 pg_bill_to_grphy_type7_tab      	var5_tab;
460 pg_bill_to_grphy_value7_tab     	var5_tab;
461 pg_bill_to_grphy_type8_tab      	var5_tab;
462 pg_bill_to_grphy_value8_tab     	var5_tab;
463 pg_bill_to_grphy_type9_tab      	var5_tab;
464 pg_bill_to_grphy_value9_tab     	var5_tab;
465 pg_bill_to_grphy_type10_tab     	var5_tab;
466 pg_bill_to_grphy_value10_tab    	var5_tab;
467 pg_bill_fr_loc_id_tab                   num1_tab;      -- Bug 5090593
468 pg_bill_fr_grphy_type1_tab      	var5_tab;
469 pg_bill_fr_grphy_value1_tab     	var5_tab;
470 pg_bill_fr_grphy_type2_tab      	var5_tab;
471 pg_bill_fr_grphy_value2_tab     	var5_tab;
472 pg_bill_fr_grphy_type3_tab      	var5_tab;
473 pg_bill_fr_grphy_value3_tab     	var5_tab;
474 pg_bill_fr_grphy_type4_tab      	var5_tab;
475 pg_bill_fr_grphy_value4_tab     	var5_tab;
476 pg_bill_fr_grphy_type5_tab      	var5_tab;
477 pg_bill_fr_grphy_value5_tab     	var5_tab;
478 pg_bill_fr_grphy_type6_tab      	var5_tab;
479 pg_bill_fr_grphy_value6_tab     	var5_tab;
480 pg_bill_fr_grphy_type7_tab      	var5_tab;
481 pg_bill_fr_grphy_value7_tab     	var5_tab;
482 pg_bill_fr_grphy_type8_tab      	var5_tab;
483 pg_bill_fr_grphy_value8_tab     	var5_tab;
484 pg_bill_fr_grphy_type9_tab      	var5_tab;
485 pg_bill_fr_grphy_value9_tab     	var5_tab;
486 pg_bill_fr_grphy_type10_tab     	var5_tab;
487 pg_bill_fr_grphy_value10_tab    	var5_tab;
488 pg_account_ccid_tab			num1_tab;
489 pg_appl_fr_doc_type_id_tab		num1_tab;
490 pg_appl_from_trx_id_tab			num1_tab;
491 pg_appl_from_line_id_tab		num1_tab;
492 pg_appl_fr_trx_lev_type_tab		var2_tab;
493 pg_appl_from_doc_num_tab		var2_tab;
494 pg_adj_doc_doc_type_id_tab		num1_tab;
495 pg_adj_doc_trx_id_tab			num1_tab;
496 pg_adj_doc_line_id_tab			num1_tab;
497 pg_adj_doc_number_tab			var2_tab;
498 pg_ADJ_doc_trx_lev_type_tab		var2_tab;
499 pg_adj_doc_date_tab			date_tab;
500 pg_assess_value_tab			num1_tab;
501 pg_trx_line_number_tab			num1_tab;
502 pg_trx_line_desc_tab			var3_tab;
503 pg_prod_desc_tab			var3_tab;
504 pg_header_char1_tab			var4_tab;
505 pg_header_char2_tab			var4_tab;
506 pg_header_char3_tab			var4_tab;
507 pg_header_char4_tab			var4_tab;
508 pg_header_char5_tab			var4_tab;
509 pg_header_char6_tab			var4_tab;
510 pg_header_char7_tab			var4_tab;
511 pg_header_char8_tab			var4_tab;
512 pg_header_char9_tab			var4_tab;
513 pg_header_char10_tab			var4_tab;
514 pg_header_char11_tab			var4_tab;
515 pg_header_char12_tab			var4_tab;
516 pg_header_char13_tab			var4_tab;
517 pg_header_char14_tab			var4_tab;
518 pg_header_char15_tab			var4_tab;
519 pg_header_numeric1_tab			num1_tab;
520 pg_header_numeric2_tab			num1_tab;
521 pg_header_numeric3_tab			num1_tab;
522 pg_header_numeric4_tab			num1_tab;
523 pg_header_numeric5_tab			num1_tab;
524 pg_header_numeric6_tab			num1_tab;
525 pg_header_numeric7_tab			num1_tab;
526 pg_header_numeric8_tab			num1_tab;
527 pg_header_numeric9_tab			num1_tab;
528 pg_header_numeric10_tab			num1_tab;
529 pg_header_date1_tab			date_tab;
530 pg_header_date2_tab			date_tab;
531 pg_header_date3_tab			date_tab;
532 pg_header_date4_tab			date_tab;
533 pg_header_date5_tab			date_tab;
534 pg_line_char1_tab			var4_tab;
535 pg_line_char2_tab			var4_tab;
536 pg_line_char3_tab			var4_tab;
537 pg_line_char4_tab			var4_tab;
538 pg_line_char5_tab			var4_tab;
539 pg_line_char6_tab			var4_tab;
540 pg_line_char7_tab			var4_tab;
541 pg_line_char8_tab			var4_tab;
542 pg_line_char9_tab			var4_tab;
543 pg_line_char10_tab			var4_tab;
544 pg_line_char11_tab			var4_tab;
545 pg_line_char12_tab			var4_tab;
546 pg_line_char13_tab			var4_tab;
547 pg_line_char14_tab			var4_tab;
548 pg_line_char15_tab			var4_tab;
549 pg_line_char16_tab			var4_tab;
550 pg_line_char17_tab			var4_tab;
551 pg_line_char18_tab			var4_tab;
552 pg_line_char19_tab			var4_tab;
553 pg_line_char20_tab			var4_tab;
554 pg_line_char21_tab			var4_tab;
555 pg_line_char22_tab			var4_tab;
556 pg_line_char23_tab			var4_tab;
557 pg_line_char24_tab			var4_tab;
558 pg_line_char25_tab			var4_tab;
559 pg_line_char26_tab			var4_tab;
560 pg_line_char27_tab			var4_tab;
561 pg_line_char28_tab			var4_tab;
562 pg_line_char29_tab			var4_tab;
563 pg_line_char30_tab			var4_tab;
564 pg_line_numeric1_tab			num1_tab;
565 pg_line_numeric2_tab			num1_tab;
566 pg_line_numeric3_tab			num1_tab;
567 pg_line_numeric4_tab			num1_tab;
568 pg_line_numeric5_tab			num1_tab;
569 pg_line_numeric6_tab			num1_tab;
570 pg_line_numeric7_tab			num1_tab;
571 pg_line_numeric8_tab			num1_tab;
572 pg_line_numeric9_tab			num1_tab;
573 pg_line_numeric10_tab			num1_tab;
574 pg_line_date1_tab			date_tab;
575 pg_line_date2_tab			date_tab;
576 pg_line_date3_tab			date_tab;
577 pg_line_date4_tab			date_tab;
578 pg_line_date5_tab			date_tab;
579 pg_exempt_certi_numb_tab		var2_tab;
580 pg_exempt_reason_tab			var3_tab;
581 pg_exempt_cont_flag_tab			var2_tab;
582 pg_ugraded_inv_flag_tab                 var1_tab;
583 
584 
585 PROCEDURE CALCULATE_TAX_API
586        (p_currency_tab        IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
587 	x_tax_lines_tbl          OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
588 	x_error_status           OUT NOCOPY VARCHAR2,
589 	x_messages_tbl           OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type) is
590     l_rel_ret_code Varchar2(20);
591     Cursor item_lines_to_be_processed is
592      select
593 	internal_organization_id               ,
594 	document_type_id                       ,
595 	transaction_id                         ,
596 	application_code                       ,
597 	document_level_action                  ,
598 	trx_date                               ,
599 	trx_currency_code                      ,
600 /* Bug 5090593:
601 	quote_flag			       ,
602 */
603 	legal_entity_number                    ,
604 	establishment_number                     ,
605 	transaction_number                     ,
606 	transaction_description                ,
607 	document_sequence_value                ,
608 	transaction_due_date                   ,
609 /* Bug 5090593:
610 	transaction_solution_origin            ,
611 */
612 	allow_tax_calculation                  ,
613 	transaction_line_id                    ,
614 	trx_level_type                         ,
615 	line_level_action                      ,
616 	line_class                             ,
617 	transaction_shipping_date              ,
618 	transaction_receipt_date               ,
619 	transaction_line_type                  ,
620 	transaction_line_date                  ,
621 	trx_business_category                  ,
622 	line_intended_use                      ,
623 	line_amt_includes_tax_flag             ,
624 	line_amount                            ,
625 	other_inclusive_tax_amount             ,
626 	transaction_line_quantity              ,
627 	unit_price                             ,
628 	cash_discount                          ,
629 	volume_discount                        ,
630 	trading_discount                       ,
631 	transportation_charge                  ,
632 	insurance_charge                       ,
633 	other_charge                           ,
634 	product_id                             ,
635 	uom_code                               ,
636 	product_type                           ,
637 	product_code                           ,
638 	fob_point                              ,
639 	ship_to_party_number                   ,
640 	ship_to_party_name                     ,
641 	ship_from_party_number                 ,
642 	ship_from_party_name                   ,
643 	ship_to_loc_id                         ,     -- Bug 5090593
644 	ship_to_geography_type1                ,
645 	ship_to_geography_value1               ,
646 	ship_to_geography_type2                ,
647 	ship_to_geography_value2               ,
648 	ship_to_geography_type3                ,
649 	ship_to_geography_value3               ,
650 	ship_to_geography_type4                ,
651 	ship_to_geography_value4               ,
652 	ship_to_geography_type5                ,
653 	ship_to_geography_value5               ,
654 	ship_to_geography_type6                ,
655 	ship_to_geography_value6               ,
656 	ship_to_geography_type7                ,
657 	ship_to_geography_value7               ,
658 	ship_to_geography_type8                ,
659 	ship_to_geography_value8               ,
660 	ship_to_geography_type9                ,
661 	ship_to_geography_value9               ,
662 	ship_to_geography_type10               ,
663 	ship_to_geography_value10              ,
664 	ship_from_loc_id                       ,     -- Bug 5090593
665 	ship_from_geography_type1              ,
666 	ship_from_geography_value1             ,
667 	ship_from_geography_type2              ,
668 	ship_from_geography_value2             ,
669 	ship_from_geography_type3              ,
670 	ship_from_geography_value3             ,
671 	ship_from_geography_type4              ,
672 	ship_from_geography_value4             ,
673 	ship_from_geography_type5              ,
674 	ship_from_geography_value5             ,
675 	ship_from_geography_type6              ,
676 	ship_from_geography_value6             ,
677 	ship_from_geography_type7              ,
678 	ship_from_geography_value7             ,
679 	ship_from_geography_type8              ,
680 	ship_from_geography_value8             ,
681 	ship_from_geography_type9              ,
682 	ship_from_geography_value9             ,
683 	ship_from_geography_type10             ,
684 	ship_from_geography_value10            ,
685 	poa_loc_id                             ,     -- Bug 5090593
686 	poa_geography_type1                    ,
687 	poa_geography_value1                   ,
688 	poa_geography_type2                    ,
689 	poa_geography_value2                   ,
690 	poa_geography_type3                    ,
691 	poa_geography_value3                   ,
692 	poa_geography_type4                    ,
693 	poa_geography_value4                   ,
694 	poa_geography_type5                    ,
695 	poa_geography_value5                   ,
696 	poa_geography_type6                    ,
697 	poa_geography_value6                   ,
698 	poa_geography_type7                    ,
699 	poa_geography_value7                   ,
700 	poa_geography_type8                    ,
701 	poa_geography_value8                   ,
702 	poa_geography_type9                    ,
703 	poa_geography_value9                   ,
704 	poa_geography_type10                   ,
705 	poa_geography_value10                  ,
706 	poo_loc_id                             ,     -- Bug 5090593
707 	poo_geography_type1                    ,
708 	poo_geography_value1                   ,
709 	poo_geography_type2                    ,
710 	poo_geography_value2                   ,
711 	poo_geography_type3                    ,
712 	poo_geography_value3                   ,
713 	poo_geography_type4                    ,
714 	poo_geography_value4                   ,
715 	poo_geography_type5                    ,
716 	poo_geography_value5                   ,
717 	poo_geography_type6                    ,
718 	poo_geography_value6                   ,
719 	poo_geography_type7                    ,
720 	poo_geography_value7                   ,
721 	poo_geography_type8                    ,
722 	poo_geography_value8                   ,
723 	poo_geography_type9                    ,
724 	poo_geography_value9                   ,
725 	poo_geography_type10                   ,
726 	poo_geography_value10                  ,
727 	bill_to_party_number                   ,
728 	bill_to_party_name                     ,
729 	bill_from_party_number                 ,
730 	bill_from_party_name                   ,
731 	bill_to_loc_id                         ,     -- Bug 5090593
732 	bill_to_geography_type1                ,
733 	bill_to_geography_value1               ,
734 	bill_to_geography_type2                ,
735 	bill_to_geography_value2               ,
736 	bill_to_geography_type3                ,
737 	bill_to_geography_value3               ,
738 	bill_to_geography_type4                ,
739 	bill_to_geography_value4               ,
740 	bill_to_geography_type5                ,
741 	bill_to_geography_value5               ,
742 	bill_to_geography_type6                ,
743 	bill_to_geography_value6               ,
744 	bill_to_geography_type7                ,
745 	bill_to_geography_value7               ,
746 	bill_to_geography_type8                ,
747 	bill_to_geography_value8               ,
748 	bill_to_geography_type9                ,
749 	bill_to_geography_value9               ,
750 	bill_to_geography_type10               ,
751 	bill_to_geography_value10              ,
752 	bill_from_loc_id                       ,     -- Bug 5090593
753 	bill_from_geography_type1              ,
754 	bill_from_geography_value1             ,
755 	bill_from_geography_type2              ,
756 	bill_from_geography_value2             ,
757 	bill_from_geography_type3              ,
758 	bill_from_geography_value3             ,
759 	bill_from_geography_type4              ,
760 	bill_from_geography_value4             ,
761 	bill_from_geography_type5              ,
762 	bill_from_geography_value5             ,
763 	bill_from_geography_type6              ,
764 	bill_from_geography_value6             ,
765 	bill_from_geography_type7              ,
766 	bill_from_geography_value7             ,
767 	bill_from_geography_type8              ,
768 	bill_from_geography_value8             ,
769 	bill_from_geography_type9              ,
770 	bill_from_geography_value9             ,
771 	bill_from_geography_type10             ,
772 	bill_from_geography_value10            ,
773 	account_ccid                           ,
774 	applied_from_document_type_id          ,
775 	applied_from_transaction_id            ,
776 	applied_from_line_id                   ,
777 	applied_from_trx_level_type,
778 	applied_from_doc_number                ,
779 	adjusted_doc_document_type_id          ,
780 	adjusted_doc_transaction_id            ,
781 	adjusted_doc_line_id                   ,
782 	adjusted_doc_number                    ,
783 	adjusted_doc_trx_level_type,
784 	adjusted_doc_date                      ,
785 	assessable_value                       ,
786 	trx_line_number                        ,
787 	trx_line_description                   ,
788 	product_description                    ,
789 	header_char1                           ,
790 	header_char2                           ,
791 	header_char3                           ,
792 	header_char4                           ,
793 	header_char5                           ,
794 	header_char6                           ,
795 	header_char7                           ,
796 	header_char8                           ,
797 	header_char9                           ,
798 	header_char10                          ,
799 	header_char11                          ,
800 	header_char12                          ,
801 	header_char13                          ,
802 	header_char14                          ,
803 	header_char15                          ,
804 	header_numeric1                        ,
805 	header_numeric2                        ,
806 	header_numeric3                        ,
807 	header_numeric4                        ,
808 	header_numeric5                        ,
809 	header_numeric6                        ,
810 	header_numeric7                        ,
811 	header_numeric8                        ,
812 	header_numeric9                        ,
813 	header_numeric10                       ,
814 	header_date1                           ,
815 	header_date2                           ,
816 	header_date3                           ,
817 	header_date4                           ,
818 	header_date5                           ,
819 	line_char1                             ,
820 	line_char2                             ,
821 	line_char3                             ,
822 	line_char4                             ,
823 	line_char5                             ,
824 	line_char6                             ,
825 	line_char7                             ,
826 	line_char8                             ,
827 	line_char9                             ,
828 	line_char10                            ,
829 	line_char11                            ,
830 	line_char12                            ,
831 	line_char13                            ,
832 	line_char14                            ,
833 	line_char15                            ,
834 	line_char16                             ,
835 	line_char17                            ,
836 	line_char18                            ,
837 	line_char19                            ,
838 	line_char20                             ,
839 	line_char21                             ,
840 	line_char22                            ,
841 	line_char23                            ,
842 	line_char24                             ,
843 	line_char25                            ,
844 	line_char26                            ,
845 	line_char27                            ,
846 	line_char28                            ,
847 	line_char29                            ,
848 	line_char30                            ,
849 	line_numeric1                          ,
850 	line_numeric2                          ,
851 	line_numeric3                          ,
852 	line_numeric4                          ,
853 	line_numeric5                          ,
854 	line_numeric6                          ,
855 	line_numeric7                          ,
856 	line_numeric8                          ,
857 	line_numeric9                          ,
858 	line_numeric10                         ,
859 	line_date1                             ,
860 	line_date2                             ,
861 	line_date3                             ,
862 	line_date4                             ,
863 	line_date5                             ,
864 	exempt_certificate_number              ,
865 	exempt_reason                          ,
866 	exemption_control_flag
867      From ZX_O2C_CALC_TXN_INPUT_V;
868 
869    l_api_name           CONSTANT VARCHAR2(30) := 'CALCULATE_TAX_API';
870    l_return_status varchar2(30);
871    ptr number;
872    cnt_end NUMBER;
873    cnt            NUMBER := 1;
874    l_index        NUMBER;
875    l_tax_lines_tbl ZX_TAX_PARTNER_PKG.tax_lines_tbl_type;
876    l_doc_amount       NUMBER;
877    l_doc_trx_id       NUMBER;
878 
879  Begin
880         IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
881           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
882         END IF;
883 
884         l_doc_trx_id   := NULL;
885 
886         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
887 	   FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
888 	   ' zx_tax_partner_pkg.G_BUSINESS_FLOW = ' || zx_tax_partner_pkg.G_BUSINESS_FLOW);
889         END IF;
890    	IF zx_tax_partner_pkg.G_BUSINESS_FLOW = 'O2C' THEN
891 	    --  Verify the integration with the version of Taxware product is certified.
892 	   Begin
893 	       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
894                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
895 		'Calling ZX_TAX_TAXWARE_REV.GET_RELEASE Verify the integration
896 		  with the version of Taxware product is certified' );
897                 END IF;
898         	l_rel_ret_code := ZX_TAX_TAXWARE_REV.GET_RELEASE;
899 		if l_rel_ret_code = ZX_TAXWARE_TAX_SERVICE_PKG.NOT_VALID_VERSION then
900 			Raise VERSION_ERROR;
901 		end if;
902 	   Exception
903 	  	When VERSION_ERROR then
904 			IF (g_level_exception >= g_current_runtime_level ) THEN
905 			  FND_LOG.STRING(g_level_exception,
906 				  G_PKG_NAME||'.'||l_api_name,'Current Taxware version is imcompaitable with Oracle Apps');
907 			END IF;
908 			x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
909 			g_string :='Call to ZX_TAX_TAXWARE_REV.GET_RELEASE failed with exception';
910 			error_exception_handle(g_string);
911 			x_messages_tbl:=g_messages_tbl;
912 			return;
913   	   End;
914 
915 	ELSE
916 	    --Release 12 Old tax partner integration does not support P2P products;
917 	    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
918                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
919 		'Release 12 Old tax partner integration does not support P2P products' );
920             END IF;
921             x_error_status := FND_API.G_RET_STS_ERROR;
922             FND_MESSAGE.SET_NAME('ZX', 'ZX_FLOW_NOT_SUPPORTED_4_PTNR');
923             FND_MESSAGE.SET_TOKEN('BUSINESS_FLOW',zx_tax_partner_pkg.G_BUSINESS_FLOW);
924             FND_MESSAGE.SET_TOKEN('SERVICE_PROVIDER','TAXWARE');
925 	    Raise WRONG_BUSINESS_FLOW;
926 	END IF;
927 
928   open item_lines_to_be_processed;
929   Loop
930     fetch item_lines_to_be_processed
931      bulk collect into
932 		pg_internal_org_id_tab		,
933 		pg_doc_type_id_tab		,
934 		pg_trx_id_tab			,
935 		pg_appli_code_tab		,
936 		pg_doc_level_action_tab		,
937 		pg_trx_date_tab			,
938 		pg_trx_curr_code_tab		,
939 /* Bug 5090593:
940 		pg_quote_flag_tab		,
941 */
942 		pg_legal_entity_num_tab		,
943 		pg_esta_name_tab		,
944 		pg_trx_number_tab		,
945 		pg_trx_desc_tab			,
946 		pg_doc_sequence_value_tab	,
947 		pg_trx_due_date_tab		,
948 /* Bug 5090593:
949 		pg_trx_sol_ori_tab		,
950 */
951 		pg_allow_tax_calc_tab		,
952 		pg_trx_line_id_tab		,
953 		pg_trx_level_type_tab		,
954 		pg_line_level_action_tab	,
955 		pg_line_class_tab		,
956 		pg_trx_shipping_date_tab	,
957 		pg_trx_receipt_date_tab		,
958 		pg_trx_line_type_tab		,
959 		pg_trx_line_date_tab		,
960 		pg_trx_business_cat_tab		,
961 		pg_line_intended_use_tab	,
962 		pg_line_amt_incl_tax_flag_tab	,
963 		pg_line_amount_tab		,
964 		pg_other_incl_tax_amt_tab	,
965 		pg_trx_line_qty_tab		,
966 		pg_unit_price_tab		,
967 		pg_cash_discount_tab		,
968 		pg_volume_discount_tab		,
969 		pg_trading_discount_tab		,
970 		pg_trans_charge_tab		,
971 		pg_ins_charge_tab		,
972 		pg_other_charge_tab		,
973 		pg_prod_id_tab			,
974 		pg_uom_code_tab			,
975 		pg_prod_type_tab		,
976 		pg_prod_code_tab		,
977 		pg_fob_point_tab		,
978 		pg_ship_to_pty_numr_tab		,
979 		pg_ship_to_pty_name_tab		,
980 		pg_ship_from_pty_num_tab	,
981 		pg_ship_from_pty_name_tab	,
982 		pg_ship_to_loc_id_tab           ,    -- Bug 5090593
983 		pg_ship_to_grphy_type1_tab      ,
984 		pg_ship_to_grphy_value1_tab     ,
985 		pg_ship_to_grphy_type2_tab      ,
986 		pg_ship_to_grphy_value2_tab     ,
987 		pg_ship_to_grphy_type3_tab      ,
988 		pg_ship_to_grphy_value3_tab     ,
989 		pg_ship_to_grphy_type4_tab      ,
990 		pg_ship_to_grphy_value4_tab     ,
991 		pg_ship_to_grphy_type5_tab      ,
992 		pg_ship_to_grphy_value5_tab     ,
993 		pg_ship_to_grphy_type6_tab      ,
994 		pg_ship_to_grphy_value6_tab     ,
995 		pg_ship_to_grphy_type7_tab      ,
996 		pg_ship_to_grphy_value7_tab     ,
997 		pg_ship_to_grphy_type8_tab      ,
998 		pg_ship_to_grphy_value8_tab     ,
999 		pg_ship_to_grphy_type9_tab      ,
1000 		pg_ship_to_grphy_value9_tab     ,
1001 		pg_ship_to_grphy_type10_tab     ,
1002 		pg_ship_to_grphy_value10_tab    ,
1003 		pg_ship_fr_loc_id_tab           ,    -- Bug 5090593
1004 		pg_ship_fr_grphy_type1_tab      ,
1005 		pg_ship_fr_grphy_value1_tab     ,
1006 		pg_ship_fr_grphy_type2_tab      ,
1007 		pg_ship_fr_grphy_value2_tab     ,
1008 		pg_ship_fr_grphy_type3_tab      ,
1009 		pg_ship_fr_grphy_value3_tab     ,
1010 		pg_ship_fr_grphy_type4_tab      ,
1011 		pg_ship_fr_grphy_value4_tab     ,
1012 		pg_ship_fr_grphy_type5_tab      ,
1013 		pg_ship_fr_grphy_value5_tab     ,
1014 		pg_ship_fr_grphy_type6_tab      ,
1015 		pg_ship_fr_grphy_value6_tab     ,
1016 		pg_ship_fr_grphy_type7_tab      ,
1017 		pg_ship_fr_grphy_value7_tab     ,
1018 		pg_ship_fr_grphy_type8_tab      ,
1019 		pg_ship_fr_grphy_value8_tab     ,
1020 		pg_ship_fr_grphy_type9_tab      ,
1021 		pg_ship_fr_grphy_value9_tab     ,
1022 		pg_ship_fr_grphy_type10_tab     ,
1023 		pg_ship_fr_grphy_value10_tab    ,
1024 		pg_poa_loc_id_tab               ,    -- Bug 5090593
1025 		pg_poa_grphy_type1_tab          ,
1026 		pg_poa_grphy_value1_tab         ,
1027 		pg_poa_grphy_type2_tab          ,
1028 		pg_poa_grphy_value2_tab         ,
1029 		pg_poa_grphy_type3_tab          ,
1030 		pg_poa_grphy_value3_tab         ,
1031 		pg_poa_grphy_type4_tab          ,
1032 		pg_poa_grphy_value4_tab         ,
1033 		pg_poa_grphy_type5_tab          ,
1034 		pg_poa_grphy_value5_tab         ,
1035 		pg_poa_grphy_type6_tab          ,
1036 		pg_poa_grphy_value6_tab         ,
1037 		pg_poa_grphy_type7_tab          ,
1038 		pg_poa_grphy_value7_tab         ,
1039 		pg_poa_grphy_type8_tab          ,
1040 		pg_poa_grphy_value8_tab         ,
1041 		pg_poa_grphy_type9_tab          ,
1042 		pg_poa_grphy_value9_tab         ,
1043 		pg_poa_grphy_type10_tab         ,
1044 		pg_poa_grphy_value10_tab        ,
1045 		pg_poo_loc_id_tab               ,    -- Bug 5090593
1046 		pg_poo_grphy_type1_tab          ,
1047 		pg_poo_grphy_value1_tab         ,
1048 		pg_poo_grphy_type2_tab          ,
1049 		pg_poo_grphy_value2_tab         ,
1050 		pg_poo_grphy_type3_tab          ,
1051 		pg_poo_grphy_value3_tab         ,
1052 		pg_poo_grphy_type4_tab          ,
1053 		pg_poo_grphy_value4_tab         ,
1054 		pg_poo_grphy_type5_tab          ,
1055 		pg_poo_grphy_value5_tab         ,
1056 		pg_poo_grphy_type6_tab          ,
1057 		pg_poo_grphy_value6_tab         ,
1058 		pg_poo_grphy_type7_tab          ,
1059 		pg_poo_grphy_value7_tab         ,
1060 		pg_poo_grphy_type8_tab          ,
1061 		pg_poo_grphy_value8_tab         ,
1062 		pg_poo_grphy_type9_tab          ,
1063 		pg_poo_grphy_value9_tab         ,
1064 		pg_poo_grphy_type10_tab         ,
1065 		pg_poo_grphy_value10_tab        ,
1066 		pg_bill_to_pty_num_tab		,
1067 		pg_bill_to_pty_name_tab		,
1068 		pg_bill_from_pty_num_tab	,
1069 		pg_bill_from_pty_name_tab	,
1070 		pg_bill_to_loc_id_tab           ,    -- Bug 5090593
1071 		pg_bill_to_grphy_type1_tab      ,
1072 		pg_bill_to_grphy_value1_tab     ,
1073 		pg_bill_to_grphy_type2_tab      ,
1074 		pg_bill_to_grphy_value2_tab     ,
1075 		pg_bill_to_grphy_type3_tab      ,
1076 		pg_bill_to_grphy_value3_tab     ,
1077 		pg_bill_to_grphy_type4_tab      ,
1078 		pg_bill_to_grphy_value4_tab     ,
1079 		pg_bill_to_grphy_type5_tab      ,
1080 		pg_bill_to_grphy_value5_tab     ,
1081 		pg_bill_to_grphy_type6_tab      ,
1082 		pg_bill_to_grphy_value6_tab     ,
1083 		pg_bill_to_grphy_type7_tab      ,
1084 		pg_bill_to_grphy_value7_tab     ,
1085 		pg_bill_to_grphy_type8_tab      ,
1086 		pg_bill_to_grphy_value8_tab     ,
1087 		pg_bill_to_grphy_type9_tab      ,
1088 		pg_bill_to_grphy_value9_tab     ,
1089 		pg_bill_to_grphy_type10_tab     ,
1090 		pg_bill_to_grphy_value10_tab    ,
1091 		pg_bill_fr_loc_id_tab           ,    -- Bug 5090593
1092 		pg_bill_fr_grphy_type1_tab      ,
1093 		pg_bill_fr_grphy_value1_tab     ,
1094 		pg_bill_fr_grphy_type2_tab      ,
1095 		pg_bill_fr_grphy_value2_tab     ,
1096 		pg_bill_fr_grphy_type3_tab      ,
1097 		pg_bill_fr_grphy_value3_tab     ,
1098 		pg_bill_fr_grphy_type4_tab      ,
1099 		pg_bill_fr_grphy_value4_tab     ,
1100 		pg_bill_fr_grphy_type5_tab      ,
1101 		pg_bill_fr_grphy_value5_tab     ,
1102 		pg_bill_fr_grphy_type6_tab      ,
1103 		pg_bill_fr_grphy_value6_tab     ,
1104 		pg_bill_fr_grphy_type7_tab      ,
1105 		pg_bill_fr_grphy_value7_tab     ,
1106 		pg_bill_fr_grphy_type8_tab      ,
1107 		pg_bill_fr_grphy_value8_tab     ,
1108 		pg_bill_fr_grphy_type9_tab      ,
1109 		pg_bill_fr_grphy_value9_tab     ,
1110 		pg_bill_fr_grphy_type10_tab     ,
1111 		pg_bill_fr_grphy_value10_tab    ,
1112 		pg_account_ccid_tab		,
1113 		pg_appl_fr_doc_type_id_tab	,
1114 		pg_appl_from_trx_id_tab		,
1115 		pg_appl_from_line_id_tab	,
1116 		pg_appl_fr_trx_lev_type_tab	,
1117 		pg_appl_from_doc_num_tab	,
1118 		pg_adj_doc_doc_type_id_tab	,
1119 		pg_adj_doc_trx_id_tab		,
1120 		pg_adj_doc_line_id_tab		,
1121 		pg_adj_doc_number_tab		,
1122 		pg_adj_doc_trx_lev_type_tab	,
1123 		pg_adj_doc_date_tab		,
1124 		pg_assess_value_tab		,
1125 		pg_trx_line_number_tab		,
1126 		pg_trx_line_desc_tab		,
1127 		pg_prod_desc_tab		,
1128 		pg_header_char1_tab		,
1129 		pg_header_char2_tab		,
1130 		pg_header_char3_tab		,
1131 		pg_header_char4_tab		,
1132 		pg_header_char5_tab		,
1133 		pg_header_char6_tab		,
1134 		pg_header_char7_tab		,
1135 		pg_header_char8_tab		,
1136 		pg_header_char9_tab		,
1137 		pg_header_char10_tab		,
1138 		pg_header_char11_tab		,
1139 		pg_header_char12_tab		,
1140 		pg_header_char13_tab		,
1141 		pg_header_char14_tab		,
1142 		pg_header_char15_tab		,
1143 		pg_header_numeric1_tab		,
1144 		pg_header_numeric2_tab		,
1145 		pg_header_numeric3_tab		,
1146 		pg_header_numeric4_tab		,
1147 		pg_header_numeric5_tab		,
1148 		pg_header_numeric6_tab		,
1149 		pg_header_numeric7_tab		,
1150 		pg_header_numeric8_tab		,
1151 		pg_header_numeric9_tab		,
1152 		pg_header_numeric10_tab		,
1153 		pg_header_date1_tab		,
1154 		pg_header_date2_tab		,
1155 		pg_header_date3_tab		,
1156 		pg_header_date4_tab		,
1157 		pg_header_date5_tab		,
1158 		pg_line_char1_tab		,
1159 		pg_line_char2_tab		,
1160 		pg_line_char3_tab		,
1161 		pg_line_char4_tab		,
1162 		pg_line_char5_tab		,
1163 		pg_line_char6_tab		,
1164 		pg_line_char7_tab		,
1165 		pg_line_char8_tab		,
1166 		pg_line_char9_tab		,
1167 		pg_line_char10_tab		,
1168 		pg_line_char11_tab		,
1169 		pg_line_char12_tab		,
1170 		pg_line_char13_tab		,
1171 		pg_line_char14_tab		,
1172 		pg_line_char15_tab		,
1173 		pg_line_char16_tab		,
1174 		pg_line_char17_tab		,
1175 		pg_line_char18_tab		,
1176 		pg_line_char19_tab		,
1177 		pg_line_char20_tab		,
1178 		pg_line_char21_tab		,
1179 		pg_line_char22_tab		,
1180 		pg_line_char23_tab		,
1181 		pg_line_char24_tab		,
1182 		pg_line_char25_tab		,
1183 		pg_line_char26_tab		,
1184 		pg_line_char27_tab		,
1185 		pg_line_char28_tab		,
1186 		pg_line_char29_tab		,
1187 		pg_line_char30_tab		,
1188 		pg_line_numeric1_tab		,
1189 		pg_line_numeric2_tab		,
1190 		pg_line_numeric3_tab		,
1191 		pg_line_numeric4_tab		,
1192 		pg_line_numeric5_tab		,
1193 		pg_line_numeric6_tab		,
1194 		pg_line_numeric7_tab		,
1195 		pg_line_numeric8_tab		,
1196 		pg_line_numeric9_tab		,
1197 		pg_line_numeric10_tab		,
1198 		pg_line_date1_tab		,
1199 		pg_line_date2_tab		,
1200 		pg_line_date3_tab		,
1201 		pg_line_date4_tab		,
1202 		pg_line_date5_tab		,
1203 		pg_exempt_certi_numb_tab	,
1204 		pg_exempt_reason_tab		,
1205 		pg_exempt_cont_flag_tab
1206    limit C_LINES_PER_COMMIT;/*Need to limit the fetch*/
1207 
1208     delete from zx_jurisdictions_gt;
1209     l_index := 0;
1213               'No item lines exist to whom tax lines need to be created' );
1210     IF (nvl(pg_trx_id_tab.last,0) = 0) Then
1211       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1212         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1214       END IF;
1215       --x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1216       --g_string :='No item lines exist to whom tax lines need to be created';
1217       --error_exception_handle(g_string);
1218       --x_messages_tbl:=g_messages_tbl;
1219       RETURN;
1220     ELSE /*there are Some lines for processing*/
1221       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1222         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1223                 ' Item lines exist to whom tax lines need to be created');
1224       END IF;
1225       For ptr in 1..nvl(pg_trx_id_tab.last, 0) loop
1226 
1227         I:=ptr;
1228         g_transaction_line_id	:=  pg_trx_line_id_tab(i);
1229         g_trx_level_type	:=  pg_trx_level_type_tab(i);
1230         g_docment_type_id	:=  pg_doc_type_id_tab(i);
1231         g_trasaction_id	:=  pg_trx_id_tab(i);
1232         g_tax_regime_code	:=  zx_tax_partner_pkg.g_tax_regime_code;
1233         pg_ugraded_inv_flag_tab(I) := 'N';
1234 
1235         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1236           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1237           ' Value of Variable I is :'||I);
1238           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1239           ' Performing validation of passed document level,line level actions BY PERFORM_VALIDATE' );
1240         END IF;
1241 
1242         Perform_validate(l_return_status);
1243 
1244         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1245           IF (g_level_exception >= g_current_runtime_level ) THEN
1246             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1247           END IF;
1248           x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1249           g_string :='Header ,line level actions are incompaitable';
1250           error_exception_handle(g_string);
1251           x_messages_tbl:=g_messages_tbl;
1252           RETURN;
1253         END IF;
1254 
1255       IF(pg_doc_type_id_tab(i)<>0) then
1256         IF l_doc_trx_id IS NULL or l_doc_trx_id <> pg_trx_id_tab(i) THEN
1257 
1258           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1259             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1260                     ' Selecting document type for event_class_mapping id  '||pg_doc_type_id_tab(i));
1261           END IF;
1262 
1263           Begin
1264             select  event_class_code
1265             into    l_document_type
1266             from    zx_evnt_cls_mappings
1267             where   event_class_mapping_id = pg_doc_type_id_tab(i);
1268           Exception
1269           When no_data_found then
1270             IF (g_level_exception >= g_current_runtime_level ) THEN
1271               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1272             End if;
1273             x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1274             g_string :='No document type exist for provided event_class_mapping_id ';
1275             error_exception_handle(g_string);
1276             x_messages_tbl:=g_messages_tbl;
1277             return;
1278           End;
1279         END IF;
1280       ELSE /*"Sales Transaction Quote*/
1281         l_document_type := 'SALES_QUOTE';
1282       END IF;
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                   ' DOCUMENT_TYPE  '||l_document_type);
1287       END IF;
1288 
1289     IF l_doc_trx_id IS NULL or l_doc_trx_id <> pg_trx_id_tab(I) THEN
1290       l_doc_trx_id := pg_trx_id_tab(I);
1291 
1292       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1293         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1294           ' Setting up Document type' );
1295       END IF;
1296 
1297       SELECT SUM(ABS(line_amount))
1298         INTO l_doc_amount
1299         FROM ZX_O2C_CALC_TXN_INPUT_V
1300        WHERE transaction_id = l_doc_trx_id;
1301 
1302       SET_DOCUMENT_TYPE(l_document_type,pg_adj_doc_trx_id_tab(I),l_doc_amount,l_return_status);
1303 
1304       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1305         IF (g_level_exception >= g_current_runtime_level ) THEN
1306           FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1307         END IF;
1308         x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1309         g_string :='Failed in setting up document type';
1310         error_exception_handle(g_string);
1311         x_messages_tbl:=g_messages_tbl;
1312         RETURN;
1313       END IF;
1314     END IF;
1315 
1316     IF(pg_doc_level_action_tab(i) in ('CREATE', 'QUOTE')) then
1317       IF(l_document_type in ('TAX_ONLY_CREDIT_MEMO', 'TAX_ONLY_ADJUSTMENT')) then
1318         Return;
1319       ELSE
1320         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1321           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1322                               ' Calling LINE_CREATION procedure to create entry in TAXWARE' );
1323         END IF;
1324 
1325         Perform_line_creation(l_tax_lines_tbl,p_currency_tab,l_return_status);
1326 
1327         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1328           IF (g_level_exception >= g_current_runtime_level ) THEN
1329             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1330           END IF;
1331           x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1332           g_string :='Failed in creating tax line';
1333           error_exception_handle(g_string);
1334           x_messages_tbl:=g_messages_tbl;
1335           return;
1336         END IF;
1337       END IF;
1338     ELSIF(pg_doc_level_action_tab(i) = 'UPDATE') then
1339       IF l_document_type in ('TAX_ONLY_CREDIT_MEMO', 'TAX_ONLY_ADJUSTMENT') then
1340         Return;
1341       ELSE
1342         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1343           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1344                     ' Calling PERFORM_UPDATE procedure to update an entry in TAXWARE' );
1345         END IF;
1346 
1347         Perform_update(l_tax_lines_tbl,p_currency_tab,l_return_status);
1348 
1349         IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1350           IF (g_level_exception >= g_current_runtime_level ) THEN
1351             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1352           END IF;
1353           x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1354           g_string :='Failed in performing the update';
1355           error_exception_handle(g_string);
1356           x_messages_tbl:=g_messages_tbl;
1357           RETURN;
1358         END IF;
1359 
1360         Begin
1361           Delete from zx_ptnr_neg_line_gt
1362           WHERE  event_class_mapping_id	=  pg_doc_type_id_tab(I)
1363           and    trx_id       		=  pg_trx_id_tab(I)
1364           and    trx_line_id  		=  pg_trx_line_id_tab(I)
1365           and    trx_level_type		=  pg_trx_level_type_tab(I);
1366         Exception
1367           When no_data_found then null;
1368         End;
1369       END IF;
1370     ELSE
1371       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1372           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1373                 ' Unknown header level action' );
1374       END IF;
1375 
1376       x_error_status := FND_API.G_RET_STS_UNEXP_ERROR;
1377       g_string :=' Unknown header  level action';
1378       error_exception_handle(g_string);
1379       x_messages_tbl:=g_messages_tbl;
1380       RETURN;
1381     END IF;
1382 
1383 	 cnt_end := cnt + l_tax_lines_tbl.transaction_line_id.COUNT - 1;
1384 
1385 	 FOR inner IN cnt .. cnt_end LOOP
1386 	    l_index := l_index + 1;
1387             x_tax_lines_tbl.DOCUMENT_TYPE_ID(inner)               :=  l_tax_lines_tbl.DOCUMENT_TYPE_ID(l_index);
1388             x_tax_lines_tbl.TRANSACTION_ID(inner)                 :=  l_tax_lines_tbl.TRANSACTION_ID(l_index);
1389             x_tax_lines_tbl.TRANSACTION_LINE_ID(inner)            :=  l_tax_lines_tbl.TRANSACTION_LINE_ID(l_index);
1390             x_tax_lines_tbl.TRX_LEVEL_TYPE(inner)                 :=  l_tax_lines_tbl.TRX_LEVEL_TYPE(l_index);
1391             x_tax_lines_tbl.COUNTRY_CODE(inner)                   :=  l_tax_lines_tbl.COUNTRY_CODE(l_index);
1392             x_tax_lines_tbl.TAX(inner)                            :=  l_tax_lines_tbl.TAX(l_index);
1393             x_tax_lines_tbl.SITUS(inner)                          :=  l_tax_lines_tbl.SITUS(l_index);
1394             x_tax_lines_tbl.TAX_JURISDICTION(inner)               :=  l_tax_lines_tbl.TAX_JURISDICTION(l_index);
1395             x_tax_lines_tbl.TAX_CURRENCY_CODE(inner)              :=  l_tax_lines_tbl.TAX_CURRENCY_CODE(l_index);
1396             x_tax_lines_tbl.TAX_AMOUNT(inner)                     :=  l_tax_lines_tbl.TAX_AMOUNT(l_index);
1397             x_tax_lines_tbl.UNROUNDED_TAX_AMOUNT(inner)           :=  l_tax_lines_tbl.UNROUNDED_TAX_AMOUNT(l_index);
1398             x_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(inner)            :=  l_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(l_index);
1399             x_tax_lines_tbl.TAX_RATE_PERCENTAGE(inner)            :=  l_tax_lines_tbl.TAX_RATE_PERCENTAGE(l_index);
1400             x_tax_lines_tbl.TAXABLE_AMOUNT(inner)                 :=  l_tax_lines_tbl.TAXABLE_AMOUNT(l_index);
1401             x_tax_lines_tbl.EXEMPT_CERTIFICATE_NUMBER(inner)      :=  l_tax_lines_tbl.EXEMPT_CERTIFICATE_NUMBER(l_index);
1402             x_tax_lines_tbl.EXEMPT_RATE_MODIFIER(inner)           :=  l_tax_lines_tbl.EXEMPT_RATE_MODIFIER(l_index);
1403             x_tax_lines_tbl.EXEMPT_REASON(inner)                  :=  l_tax_lines_tbl.EXEMPT_REASON(l_index);
1404             x_tax_lines_tbl.TAX_ONLY_LINE_FLAG(inner)             :=  l_tax_lines_tbl.TAX_ONLY_LINE_FLAG(l_index);
1405             x_tax_lines_tbl.INCLUSIVE_TAX_LINE_FLAG(inner)        :=  l_tax_lines_tbl.INCLUSIVE_TAX_LINE_FLAG(l_index);
1406             x_tax_lines_tbl.LINE_AMT_INCLUDES_TAX_FLAG(inner)     :=  l_tax_lines_tbl.LINE_AMT_INCLUDES_TAX_FLAG(l_index);
1407             x_tax_lines_tbl.USE_TAX_FLAG(inner)                   :=  l_tax_lines_tbl.USE_TAX_FLAG(l_index);
1408             x_tax_lines_tbl.USER_OVERRIDE_FLAG(inner)             :=  l_tax_lines_tbl.USER_OVERRIDE_FLAG(l_index);
1409             x_tax_lines_tbl.LAST_MANUAL_ENTRY(inner)              :=  l_tax_lines_tbl.LAST_MANUAL_ENTRY(l_index);
1410             x_tax_lines_tbl.MANUALLY_ENTERED_FLAG(inner)          :=  l_tax_lines_tbl.MANUALLY_ENTERED_FLAG(l_index);
1411             x_tax_lines_tbl.REGISTRATION_PARTY_TYPE(inner)        :=  l_tax_lines_tbl.REGISTRATION_PARTY_TYPE(l_index);
1412             x_tax_lines_tbl.PARTY_TAX_REG_NUMBER(inner)           :=  l_tax_lines_tbl.PARTY_TAX_REG_NUMBER(l_index);
1413             x_tax_lines_tbl.THIRD_PARTY_TAX_REG_NUMBER(inner)     :=  l_tax_lines_tbl.THIRD_PARTY_TAX_REG_NUMBER(l_index);
1414             x_tax_lines_tbl.THRESHOLD_INDICATOR_FLAG(inner)       :=  l_tax_lines_tbl.THRESHOLD_INDICATOR_FLAG(l_index);
1415             x_tax_lines_tbl.STATE(inner)                          :=  l_tax_lines_tbl.STATE(l_index);
1416             x_tax_lines_tbl.COUNTY(inner)                         :=  l_tax_lines_tbl.COUNTY(l_index);
1417             x_tax_lines_tbl.CITY(inner)                           :=  l_tax_lines_tbl.CITY(l_index);
1418             --bug7140895
1419             x_tax_lines_tbl.global_attribute_category(inner)      :=  l_tax_lines_tbl.global_attribute_category(l_index);
1420             x_tax_lines_tbl.global_attribute2(inner)              :=  l_tax_lines_tbl.global_attribute2(l_index);
1421             x_tax_lines_tbl.global_attribute4(inner)              :=  l_tax_lines_tbl.global_attribute4(l_index);
1422             x_tax_lines_tbl.global_attribute6(inner)              :=  l_tax_lines_tbl.global_attribute6(l_index);
1423           END LOOP;
1424           cnt := cnt + l_tax_lines_tbl.transaction_line_id.COUNT;
1425        END LOOP;
1426      END IF;
1427      EXIT WHEN item_lines_to_be_processed%NOTFOUND;
1428    END LOOP;
1429    CLOSE item_lines_to_be_processed;
1430 
1431      IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1432           FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
1433      END IF;
1434 
1435      Exception
1436       WHEN WRONG_BUSINESS_FLOW then
1437 	   IF (g_level_exception >= g_current_runtime_level ) THEN
1438 		  FND_LOG.STRING(g_level_exception,G_PKG_NAME||': '||l_api_name,
1439 			   'Failed in calculate_tax_api procedure');
1440 	   END IF;
1441 	   g_string :='Release 12 Old tax partner integration does not support P2P products';
1442 	   error_exception_handle(g_string);
1443 	   x_messages_tbl:=g_messages_tbl;
1444 	   CLOSE item_lines_to_be_processed;
1445 	   RAISE;
1446 
1447 END CALCULATE_TAX_API;
1448 
1449 PROCEDURE SET_DOCUMENT_TYPE( P_DOCUMENT_TYPE IN OUT NOCOPY VARCHAR2,
1450 			     P_ADJ_DOC_TRX_ID IN NUMBER,
1451 			     P_LINE_AMOUNT IN NUMBER,
1452 			     x_return_status OUT NOCOPY VARCHAR2)IS
1453 l_api_name           CONSTANT VARCHAR2(30) := 'SET_DOCUMENT_TYPE';
1454 
1455 Begin
1456     x_return_status := FND_API.G_RET_STS_SUCCESS;
1457 
1458     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1459       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1460     END IF;
1461 
1462     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1463        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_DOCUMENT_TYPE : '||P_DOCUMENT_TYPE );
1464        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_ADJ_DOC_TRX_ID : '||P_ADJ_DOC_TRX_ID );
1465        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_LINE_AMOUNT : '||P_LINE_AMOUNT );
1466     END IF;
1467    IF (p_document_type = 'CREDIT_MEMO') THEN
1468       IF (p_adj_doc_trx_id is not null) THEN
1469          IF (p_line_amount = 0) THEN
1470             p_document_type :='TAX_ONLY_CREDIT_MEMO';
1471          ELSIF pg_line_level_action_tab(I) = 'RECORD_WITH_NO_TAX' THEN
1472          --ELSIF (pg_allow_tax_calc_tab(I) ='N') THEN
1473             p_document_type :='LINE_ONLY_CREDIT_MEMO';
1474          ELSE
1475             p_document_type :='APPLIED_CREDIT_MEMO';
1476          END IF;     /*LINE_AMOUNT*/
1477       ELSE
1478         p_document_type :='ON_ACCT_CREDIT_MEMO';
1479       END IF;     /*ADJ_DOC_TRX_ID*/
1480    END IF;     /*'CREDIT_MEMO*/
1481 
1482    IF (p_document_type = 'INVOICE') THEN
1483       IF (p_line_amount = 0) THEN
1484          p_document_type :='TAX_ONLY_INVOICE';
1485       END IF;
1486    END IF;/*INVOICE*/
1487 
1488    IF (p_document_type = 'INVOICE_ADJUSTMENT') THEN
1489       IF (p_line_amount = 0) THEN
1490          p_document_type := 'TAX_ONLY_ADJUSTMENT';
1491       END IF;
1492    END IF;
1493     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1494        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
1495     END IF;
1496 End;
1497 
1498 
1499 PROCEDURE PERFORM_VALIDATE(x_return_status OUT NOCOPY varchar2) is
1500 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_VALIDATE';
1501 Begin
1502 
1503     x_return_status := FND_API.G_RET_STS_SUCCESS;
1504 
1505     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1506      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1507     END IF;
1508 
1509     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1510        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_DOC_LEVEL_ACTION_TAB(i)  :  '||pg_doc_level_action_tab(i));
1511        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_LINE_LEVEL_ACTION_TAB(i) : '||pg_line_level_action_tab(i));
1512     END IF;
1513       if(pg_doc_level_action_tab(i) = 'CREATE') Then
1514          if(pg_line_level_action_tab(i) NOT IN ('CREATE', 'QUOTE','SYNCHRONIZE','RECORD_WITH_NO_TAX')) Then
1515            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1516                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1517            END IF;
1518            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1519          end if;
1520       elsif(pg_doc_level_action_tab(i) = 'QUOTE') Then
1521          if(pg_line_level_action_tab(i) NOT IN ('QUOTE')) Then
1522            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1523                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1524            END IF;
1525             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1526          end if;
1527       elsif(pg_doc_level_action_tab(i) = 'UPDATE') Then
1528           if(pg_line_level_action_tab(i) NOT IN ('CREATE', 'UPDATE', 'QUOTE', 'CANCEL', 'DELETE', 'SYNCHRONIZE','RECORD_WITH_NO_TAX')) Then
1529              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1530                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown line level action');
1531              END IF;
1532              x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1533           end if;
1534       else
1535        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1536                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Unknown header level action');
1537        END IF;
1538        null;
1539     end if;
1540     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1541      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
1542     END IF;
1543 End perform_validate;
1544 
1545 
1546 PROCEDURE PERFORM_LINE_CREATION(p_tax_lines_tbl     OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
1547 				p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
1548 				 x_return_status OUT NOCOPY VARCHAR2)is
1549 l_TaxLink                    ZX_TAX_TAXWARE_GEN.TaxParm;
1550 l_JurLink                     ZX_TAX_TAXWARE_GEN.JurParm;
1551 l_OraLink                     ZX_TAX_TAXWARE_GEN.t_OraParm;
1552 return_code			 boolean;
1553 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_LINE_CREATION';
1554 l_return_status		VARCHAR2(30);
1555 input_param_flag        boolean;
1556 Begin
1557 
1558    x_return_status := FND_API.G_RET_STS_SUCCESS;
1559 
1560     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1561      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1562    END IF;
1563 
1564    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1565        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling SET_PARAMETERS procedure' );
1566    END IF;
1567 
1568 	g_line_level_action:='CREATE';
1569     	return_code := Set_Parameters(l_TaxLink, l_JurLink, l_OraLink);
1570 	input_param_flag := TRUE;
1571 	dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
1572 
1573 	if(return_code = TRUE) then
1574 	     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1575 		FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling CALCULATE_TAX procedure' );
1576 	     END IF;
1577 
1578 	     return_code := calculate_tax(l_TaxLink, l_JurLink, l_OraLink);
1579 	     input_param_flag := FALSE;
1580 	dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
1581 	     IF (return_code = FALSE) then
1582 	         x_return_status := FND_API.G_RET_STS_ERROR; --13533328
1583 		 g_string :='Failed in CALCULATE_TAX procedure';
1584 		 error_exception_handle(g_string);
1585  		return;
1586 	     END IF;
1587         else
1588 	     x_return_status := FND_API.G_RET_STS_ERROR;
1589 	     g_string :='Failed in SET_PRAMETERS procedure';
1590 	     error_exception_handle(g_string);
1591 	     return;
1592 	end if;
1593    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1594        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling TAX_RESULTS_PROCESSING procedure' );
1595    END IF;
1596 
1597       tax_results_processing(p_tax_lines_tbl,p_currency_tab,l_TaxLink, l_JurLink, l_OraLink,l_return_status);
1598       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1599 	  IF (g_level_exception >= g_current_runtime_level ) THEN
1600 	     FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1601 	  END IF;
1602 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603 	  g_string :='Failed in call to the TAX_RESULTS_PROCESSING';
1604 	  error_exception_handle(g_string);
1605 	  RETURN;
1606       END IF;
1607 
1608   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1609      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
1610    END IF;
1611 Exception
1612 	When Others then
1613 	  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1614 	  IF (g_level_exception >= g_current_runtime_level ) THEN
1615                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
1616                            'Failed in Line creation procedure');
1617           END IF;
1618 End;
1619 
1620 PROCEDURE PERFORM_LINE_DELETION(x_return_status OUT NOCOPY VARCHAR2) is
1621 l_TaxLink                     ZX_TAX_TAXWARE_GEN.TaxParm;
1622 l_JurLink                     ZX_TAX_TAXWARE_GEN.JurParm;
1623 l_OraLink                     ZX_TAX_TAXWARE_GEN.t_OraParm;
1624 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_LINE_DELETION';
1625 return_code		boolean;
1626 input_param_flag        boolean;
1627 Begin
1628    x_return_status := FND_API.G_RET_STS_SUCCESS;
1629    	  /*ZX_TAXWARE_USER_PKG.g_line_negation := TRUE;
1630    	  ZX_TAXWARE_USER_PKG.g_trx_line_id := pg_trx_line_id_tab(I);
1631    	  ZX_TAXWARE_USER_PKG.Derive_Hdr_Ext_Attr;
1632 	  ZX_TAXWARE_USER_PKG.Derive_Line_Ext_Attr;*/
1633    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1634      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1635    END IF;
1636    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1637        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling SET_PARAMETERS procedure' );
1638    END IF;
1639       --Bug 8576319
1640    	  g_line_level_action:='DELETE';
1641    	  return_code := Set_Parameters(l_TaxLink, l_JurLink, l_OraLink);
1642     	  if(return_code = TRUE) then
1643 	     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1644                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling CALCULATE_TAX procedure' );
1645              END IF;
1646 
1647 		input_param_flag := TRUE;
1648 		dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
1649 
1650 	    	return_code := calculate_tax(l_TaxLink, l_JurLink, l_OraLink);
1651 		input_param_flag := FALSE;
1652 		dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
1653 	     IF (return_code = FALSE) then
1654 	         x_return_status := FND_API.G_RET_STS_ERROR; --13533328
1655 		 g_string :='Failed in CALCULATE_TAX procedure';
1656 		 error_exception_handle(g_string);
1657  		return;
1658 	     END IF;
1659           else
1660 	      x_return_status := FND_API.G_RET_STS_ERROR;
1661 	  end if;
1662 	/*end of line deletion process.*/
1663    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1664      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
1665    END IF;
1666 Exception
1667 	When Others then
1668 	    x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1669 	   IF (g_level_exception >= g_current_runtime_level ) THEN
1670                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
1671                            'Failed in Line deletion procedure');
1672           END IF;
1673 
1674 End;
1675 
1676 PROCEDURE PERFORM_UPDATE       (p_tax_lines_tbl     OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
1677 				p_currency_tab   IN OUT NOCOPY ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
1678 				x_return_status  OUT NOCOPY VARCHAR2) is
1679 l_api_name           CONSTANT VARCHAR2(30) := 'PERFORM_UPDATE';
1680 l_return_status    varchar2(30);
1681 l_ret_code boolean;
1682 Begin
1683 
1684    x_return_status := FND_API.G_RET_STS_SUCCESS;
1685 
1686    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1687      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
1688    END IF;
1689 
1690    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1691        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'PG_LINE_LEVEL_ACTION_TAB(i)'||pg_line_level_action_tab(i) );
1692    END IF;
1693     	if (pg_line_level_action_tab(i) in ('CREATE','QUOTE')) Then
1694 
1695                g_line_level_action := 'CREATE';
1696 
1697 	       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1698                     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling PERFORM_LINE_CREATION procedure' );
1699                END IF;
1700 
1701     	       Perform_line_creation(p_tax_lines_tbl,p_currency_tab,l_return_status);
1702 	       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1703 			  IF (g_level_exception >= g_current_runtime_level ) THEN
1704 			     FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1705 			  END IF;
1706 			  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1707 			  g_string :='Not compaitable to TAXWARE Release';
1708 			  error_exception_handle(g_string);
1709 			  return;
1710 	       END IF;
1711 
1712     	elsif(pg_line_level_action_tab(i) in ('UPDATE')) Then
1713     	     /*First make contra entry*/
1714 	     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1715                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling PERFORM_LINE_DELETION procedure' );
1716              END IF;
1717       --Bug 8576319
1718       g_line_level_action := 'DELETE';
1719 	    perform_line_deletion(l_return_status);
1720 
1721 	    /*For new line*/
1722              --  g_line_level_action := 'CREATE';
1723 	     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1724                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling PERFORM_LINE_CREATION procedure' );
1725              END IF;
1726 
1727     	     perform_line_creation(p_tax_lines_tbl,p_currency_tab,l_return_status);
1728 	     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1729 			  IF (g_level_exception >= g_current_runtime_level ) THEN
1730 			     FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1731 			  END IF;
1732 			  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1733 			  g_string :='Not compaitable to TAXWARE Release';
1734 			  error_exception_handle(g_string);
1735 			  return;
1736             END IF;
1737     	elsif(pg_line_level_action_tab(i) in ('DELETE','CANCEL')) Then
1738           -- g_line_level_action := pg_line_level_action_tab(i);
1739 	   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1740               FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling PERFORM_LINE_DELETION procedure' );
1741            END IF;
1742            --Bug 8576319
1743            g_line_level_action := 'CREATE';
1744            perform_line_deletion(l_return_status);
1745 
1746         else
1747              Null;/*Need to add for  SYNCHRONIZE */
1748     	end if;/*Line level operation*/
1749 
1750 
1751 End PERFORM_UPDATE;
1752 
1753 PROCEDURE GET_TAX_JUR_CODE(p_location_id           IN  NUMBER,
1754                            p_situs                 IN  VARCHAR2,
1755                            p_tax                   IN  VARCHAR2,
1756                            p_regime_code           IN  VARCHAR2,
1757                            p_inv_date              IN  DATE,
1758                            x_tax_jurisdiction_code  OUT NOCOPY  VARCHAR2,
1759                            x_return_status         OUT NOCOPY  VARCHAR2) IS
1760 
1761 l_api_name             CONSTANT VARCHAR2(30) := 'GET_TAX_JUR_CODE';
1762 x_tax_jurisdiction_rec ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_type;
1763 x_jurisdictions_found  VARCHAR2(20);
1764 l_return_status        VARCHAR2(30);
1765 
1766 BEGIN
1767    x_return_status := FND_API.G_RET_STS_SUCCESS;
1768 
1769    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1770      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
1771    END IF;
1772 
1773    ZX_TCM_GEO_JUR_PKG.get_tax_jurisdictions
1774 	 	      (p_location_id                 ,
1775 	 	       p_situs                       ,
1776 	               p_tax                         ,
1777                        p_regime_code		     ,
1778 	 	       p_inv_date   	             ,
1779 	 	       x_tax_jurisdiction_rec  	     ,
1780 	 	       x_jurisdictions_found         ,
1781 	 	       x_return_status
1782 	 	      );
1783    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1784       IF (g_level_exception >= g_current_runtime_level ) THEN
1785                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
1786       END IF;
1787 	  -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1788       g_string :='Not able to find Jurisdiction';
1789       error_exception_handle(g_string);
1790       RETURN;
1791    END IF;
1792 
1793    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1794       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1795           'x_jurisdictions_found :'||x_jurisdictions_found);
1796       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
1797           'x_tax_jurisdiction_rec.tax_jurisdiction_code :'||x_tax_jurisdiction_rec.tax_jurisdiction_code);
1798    END IF;
1799 
1800    IF x_jurisdictions_found = 'Y' THEN
1801       IF x_tax_jurisdiction_rec.tax_jurisdiction_code IS NOT NULL THEN
1802          x_tax_jurisdiction_code := x_tax_jurisdiction_rec.tax_jurisdiction_code;
1803       ELSE
1804          BEGIN
1805             SELECT tax_jurisdiction_code
1806               INTO x_tax_jurisdiction_code
1807 	      FROM
1808 	      (SELECT tax_jurisdiction_code
1809 	       FROM zx_jurisdictions_gt
1810                WHERE tax_regime_code = p_regime_code
1811                AND tax = p_tax
1812                AND precedence_level = (SELECT max(precedence_level)
1813                                          FROM zx_jurisdictions_gt
1814                                         WHERE tax_regime_code = p_regime_code
1815                                           AND tax = p_tax)
1816               ORDER BY tax_jurisdiction_code)
1817              WHERE ROWNUM = 1;
1818          END;
1819       END IF;
1820    END IF;
1821 
1822    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
1823       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
1824    END IF;
1825 
1826 END GET_TAX_JUR_CODE;
1827 
1828 FUNCTION SET_PARAMETERS(
1829 l_Tax_Link 	IN OUT NOCOPY zx_tax_taxware_GEN.TaxParm,
1830 l_JurLink 	IN OUT NOCOPY zx_tax_taxware_GEN.JurParm,
1831 l_OraLink       IN OUT NOCOPY zx_tax_taxware_GEN.t_OraParm) RETURN BOOLEAN is
1832 
1833  /*Following variables used during line deletion process.*/
1834 arp_line_amount     ZX_PTNR_NEG_LINE_GT.line_amt%type;
1835 arp_quantity        ZX_PTNR_NEG_LINE_GT.trx_line_quantity%type;
1836 arp_trx_id	    ZX_PTNR_NEG_LINE_GT.trx_id%type;
1837 arp_trx_number      ZX_PTNR_NEG_LINE_GT.trx_number%type;
1838 /*Not needed for TAXWARE
1839 arp_ship_to_grphy_type1		    varchar2(240);
1840 arp_ship_to_grphy_value1	    varchar2(240);
1841 arp_ship_to_grphy_type2             varchar2(240);
1842 arp_ship_to_grphy_value2            varchar2(240);
1843 arp_ship_to_grphy_type3             varchar2(240);
1844 arp_ship_to_grphy_value3            varchar2(240);
1845 arp_ship_to_grphy_type4             varchar2(240);
1846 arp_ship_to_grphy_value4            varchar2(240);
1847 arp_ship_to_grphy_type5             varchar2(240);
1848 arp_ship_to_grphy_value5            varchar2(240);
1849 arp_ship_to_grphy_type6             varchar2(240);
1850 arp_ship_to_grphy_value6            varchar2(240);
1851 arp_ship_to_grphy_type7             varchar2(240);
1852 arp_ship_to_grphy_value7            varchar2(240);
1853 arp_ship_to_grphy_type8             varchar2(240);
1854 arp_ship_to_grphy_value8            varchar2(240);
1855 arp_ship_to_grphy_type9             varchar2(240);
1856 arp_ship_to_grphy_value9            varchar2(240);
1857 arp_ship_to_grphy_type10            varchar2(240);
1858 arp_ship_to_grphy_value10           varchar2(240);
1859 arp_ship_from_grphy_type1           varchar2(240);
1860 arp_ship_from_grphy_value1          varchar2(240);
1861 arp_ship_from_grphy_type2           varchar2(240);
1862 arp_ship_from_grphy_value2          varchar2(240);
1863 arp_ship_from_grphy_type3           varchar2(240);
1864 arp_ship_from_grphy_value3          varchar2(240);
1865 arp_ship_from_grphy_type4           varchar2(240);
1866 arp_ship_from_grphy_value4          varchar2(240);
1867 arp_ship_from_grphy_type5           varchar2(240);
1868 arp_ship_from_grphy_value5          varchar2(240);
1869 arp_ship_from_grphy_type6           varchar2(240);
1870 arp_ship_from_grphy_value6          varchar2(240);
1871 arp_ship_from_grphy_type7           varchar2(240);
1872 arp_ship_from_grphy_value7          varchar2(240);
1873 arp_ship_from_grphy_type8           varchar2(240);
1874 arp_ship_from_grphy_value8          varchar2(240);
1875 arp_ship_from_grphy_type9           varchar2(240);
1876 arp_ship_from_grphy_value9          varchar2(240);
1877 arp_ship_from_grphy_type10          varchar2(240);
1878 arp_ship_from_grphy_value10         varchar2(240);
1879 arp_poa_grphy_type1                 varchar2(240);
1880 arp_poa_grphy_value1                varchar2(240);
1881 arp_poa_grphy_type2                 varchar2(240);
1882 arp_poa_grphy_value2                varchar2(240);
1883 arp_poa_grphy_type3                 varchar2(240);
1884 arp_poa_grphy_value3                varchar2(240);
1885 arp_poa_grphy_type4                 varchar2(240);
1886 arp_poa_grphy_value4                varchar2(240);
1887 arp_poa_grphy_type5                 varchar2(240);
1888 arp_poa_grphy_value5                varchar2(240);
1889 arp_poa_grphy_type6                 varchar2(240);
1890 arp_poa_grphy_value6                varchar2(240);
1891 arp_poa_grphy_type7                 varchar2(240);
1892 arp_poa_grphy_value7                varchar2(240);
1893 arp_poa_grphy_type8                 varchar2(240);
1894 arp_poa_grphy_value8                varchar2(240);
1895 arp_poa_grphy_type9                 varchar2(240);
1896 arp_poa_grphy_value9                varchar2(240);
1897 arp_poa_grphy_type10                varchar2(240);
1898 arp_poa_grphy_value10               varchar2(240);
1899 arp_poo_grphy_type1                 varchar2(240);
1900 arp_poo_grphy_value1                varchar2(240);
1901 arp_poo_grphy_type2                 varchar2(240);
1902 arp_poo_grphy_value2                varchar2(240);
1903 arp_poo_grphy_type3                 varchar2(240);
1904 arp_poo_grphy_value3                varchar2(240);
1905 arp_poo_grphy_type4                 varchar2(240);
1906 arp_poo_grphy_value4                varchar2(240);
1907 arp_poo_grphy_type5                 varchar2(240);
1908 arp_poo_grphy_value5                varchar2(240);
1909 arp_poo_grphy_type6                 varchar2(240);
1910 arp_poo_grphy_value6                varchar2(240);
1911 arp_poo_grphy_type7                 varchar2(240);
1912 arp_poo_grphy_value7                varchar2(240);
1913 arp_poo_grphy_type8                 varchar2(240);
1914 arp_poo_grphy_type9                 varchar2(240);
1915 arp_poo_grphy_value9                varchar2(240);
1916 arp_poo_grphy_type10                varchar2(240);
1917 arp_poo_grphy_value10               varchar2(240);
1918 arp_bill_to_grphy_type1             varchar2(240);
1919 arp_bill_to_grphy_value1            varchar2(240);
1920 arp_bill_to_grphy_type2             varchar2(240);
1921 arp_bill_to_grphy_value2            varchar2(240);
1922 arp_bill_to_grphy_type3             varchar2(240);
1923 arp_bill_to_grphy_value3            varchar2(240);
1924 arp_bill_to_grphy_type4             varchar2(240);
1925 arp_bill_to_grphy_value4            varchar2(240);
1926 arp_bill_to_grphy_type5             varchar2(240);
1927 arp_bill_to_grphy_value5            varchar2(240);
1928 arp_bill_to_grphy_type6             varchar2(240);
1929 arp_bill_to_grphy_value6            varchar2(240);
1930 arp_bill_to_grphy_type7             varchar2(240);
1931 arp_bill_to_grphy_value7            varchar2(240);
1932 arp_bill_to_grphy_type8             varchar2(240);
1933 arp_bill_to_grphy_value8            varchar2(240);
1934 arp_bill_to_grphy_type9             varchar2(240);
1935 arp_bill_to_grphy_value9            varchar2(240);
1936 arp_bill_to_grphy_type10            varchar2(240);
1937 arp_bill_to_grphy_value10           varchar2(240);
1938 arp_bill_from_grphy_type1           varchar2(240);
1939 arp_bill_from_grphy_value1          varchar2(240);
1940 arp_bill_from_grphy_type2           varchar2(240);
1941 arp_bill_from_grphy_value2          varchar2(240);
1942 arp_bill_from_grphy_type3           varchar2(240);
1943 arp_bill_from_grphy_value3          varchar2(240);
1944 arp_bill_from_grphy_type4           varchar2(240);
1945 arp_bill_from_grphy_value4          varchar2(240);
1946 arp_bill_from_grphy_type5           varchar2(240);
1947 arp_bill_from_grphy_value5          varchar2(240);
1948 arp_bill_from_grphy_type6           varchar2(240);
1949 arp_bill_from_grphy_value6          varchar2(240);
1950 arp_bill_from_grphy_type7           varchar2(240);
1951 arp_bill_from_grphy_value7          varchar2(240);
1952 arp_bill_from_grphy_type8           varchar2(240);
1953 arp_bill_from_grphy_value8          varchar2(240);
1954 arp_bill_from_grphy_type9           varchar2(240);
1955 arp_bill_from_grphy_value9          varchar2(240);
1956 arp_bill_from_grphy_type10          varchar2(240);
1957 arp_bill_from_grphy_value10         varchar2(240); Not Required for TAXWARE*/
1958 arp_tax_type			    varchar2(150);
1959 arp_product_code		    ZX_LINES_DET_FACTORS.PRODUCT_CODE%TYPE;
1960 use_step			    varchar2(30);
1961 arp_state_exempt_reason		    varchar2(240);
1962 arp_county_exempt_reason	    varchar2(240);
1963 arp_city_exempt_reason		    varchar2(240);
1964 step_proc_flag			    varchar2(30);
1965 arp_audit_flag			    varchar2(30);
1966 arp_ship_to_add			    varchar2(240);
1967 arp_ship_from_add		    varchar2(240);
1968 arp_poa_add_code		    varchar2(240);
1969 arp_poo_add_code		    varchar2(240);
1970 arp_customer_code		    varchar2(150);
1971 arp_customer_name		    varchar2(360);
1972 arp_company_code		    varchar2(150);
1973 arp_division_code		    varchar2(150);
1974 arp_vnd_ctrl_exmpt		    varchar2(150);
1975 arp_use_nexpro			    varchar2(30);
1976 arp_service_ind			    varchar2(150);
1977 crit_flag			    varchar2(30);
1978 calculation_flag		    varchar2(30);
1979 state_cert_no			    varchar2(150);
1980 county_cert_no			    varchar2(150);
1981 city_cert_no			    varchar2(150);
1982 arp_state_exempt_percent	    number;
1983 arp_county_exempt_pct		    number;
1984 arp_city_exempt_pct		    number;
1985 sec_county_exempt_pct		    number;
1986 sec_city_exempt_pct		    number;
1987 arp_tax_sel_param		    number;
1988 arp_transaction_date		    date;
1989 arp_adj_doc_date		    date;
1990 arp_trx_date                        date;
1991 arp_fob_point   varchar2(80);
1992 arp_exempt_control_flag varchar2(1);
1993 
1994 /*Following variables defined for local use*/
1995 l_tax_sel_param			number;
1996 l_tax_type_param		varchar2(150);
1997 l_tax_type			varchar2(150);
1998 l_calculation_flag		varchar2(150);
1999 l_poo_code			varchar2(150);
2000 l_poa_code			varchar2(150);
2001 l_ship_from_code		varchar2(150);
2002 l_ship_to_code			varchar2(150);
2003 l_service_indicator		varchar2(150);
2004 l_state_exempt_reason		varchar2(150);
2005 l_county_exempt_reason		varchar2(150);
2006 l_city_exempt_reason		varchar2(150);
2007 l_sec_county_exempt_reason	varchar2(150);
2008 l_sec_city_exempt_reason	varchar2(150);
2009 l_state_exempt_percent		number;
2010 l_county_exempt_percent		number;
2011 l_city_exempt_percent		number;
2012 l_sec_county_exempt_percent	number;
2013 l_sec_city_exempt_percent	number;
2014 /*st_tax_amt			number;
2015 co_tax_amt			number;
2016 ci_tax_amt			number;	*/
2017 l_use_step			varchar2(20);
2018 l_step_proc_flag		varchar2(20);
2019 l_job_no			varchar2(20);
2020 l_criterion_flag		varchar2(20);
2021 l_prod_ind			varchar2(20);
2022 l_fob_point			varchar2(80);
2023 l_api_name           CONSTANT VARCHAR2(30) := 'SET_PARAMETERS';
2024 
2025 Begin
2026 
2027    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2028      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2029    END IF;
2030 
2031    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2032        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'G_LINE_LEVEL_ACTION :'||g_line_level_action);
2033        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Value of I is :'||I);
2034    END IF;
2035 
2036    if(g_line_level_action='CREATE') then
2037 	l_OraLink.oracleid          := pg_Trx_id_tab(I);
2038    else /*Line level action is delete*/
2039        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2040 	 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2041 	     'Selecting data from ZX_PTNR_NEG_LINE_GT');
2042        END IF;
2043 
2044    select
2045         line_amt,
2046         trx_line_quantity,
2047         trx_id,
2048         trx_number,
2049 	adjusted_doc_date,
2050 	trx_date,
2051 	exemption_control_flag,
2052 	fob_point,
2053 	line_ext_varchar_attribute1  ,
2054 	line_ext_varchar_attribute2  ,
2055 	line_ext_varchar_attribute3  ,
2056 	line_ext_varchar_attribute4  ,
2057 	line_ext_varchar_attribute5  ,
2058 	line_ext_varchar_attribute6  ,
2059 	line_ext_varchar_attribute7  ,
2060 	line_ext_varchar_attribute8  ,
2061 	line_ext_varchar_attribute9   ,
2062 	line_ext_varchar_attribute10  ,
2063 	line_ext_varchar_attribute11  ,
2064 	line_ext_varchar_attribute12  ,
2065 	line_ext_varchar_attribute13  ,
2066 	line_ext_varchar_attribute14  ,
2067 	line_ext_varchar_attribute15  ,
2068 	line_ext_varchar_attribute16  ,
2069 	line_ext_varchar_attribute17  ,
2070 	line_ext_varchar_attribute18  ,
2071 	line_ext_varchar_attribute19  ,
2072 	line_ext_varchar_attribute20  ,
2073 	line_ext_varchar_attribute21  ,
2074 	line_ext_varchar_attribute22  ,
2075 	line_ext_varchar_attribute23  ,
2076 	line_ext_varchar_attribute24  ,
2077 	line_ext_number_attribute1    ,
2078 	line_ext_number_attribute2    ,
2079 	line_ext_number_attribute3    ,
2080 	line_ext_number_attribute4    ,
2081 	line_ext_number_attribute5    ,
2082 	line_ext_number_attribute6    ,
2083 	line_ext_date_attribute1
2084 Into    arp_line_amount,
2085         arp_quantity,
2086         arp_trx_id,
2087 	arp_trx_number,
2088         arp_adj_doc_date,
2089 	arp_trx_date,
2090 	arp_exempt_control_flag,
2091 	arp_fob_point,
2092 	arp_tax_type		    ,
2093 	arp_product_code	    ,
2094 	use_step		    ,
2095 	arp_state_exempt_reason     ,
2096 	arp_county_exempt_reason    ,
2097 	arp_city_exempt_reason      ,
2098 	step_proc_flag	     	    ,
2099 	arp_audit_flag	     	    ,
2100 	arp_ship_to_add             ,
2101 	arp_ship_from_add           ,
2102 	arp_poa_add_code            ,
2103 	arp_customer_code	    ,
2104 	arp_customer_name           ,
2105 	arp_company_code            ,
2106 	arp_division_code           ,
2107 	arp_vnd_ctrl_exmpt          ,
2108 	arp_use_nexpro              ,
2109 	arp_service_ind             ,
2110 	crit_flag                   ,
2111 	arp_poo_add_code            ,
2112 	calculation_flag            ,
2113 	state_cert_no               ,
2114 	county_cert_no              ,
2115 	city_cert_no		    ,
2116 	arp_state_exempt_percent    ,
2117 	arp_county_exempt_pct       ,
2118 	arp_city_exempt_pct  	    ,
2119 	sec_county_exempt_pct       ,
2120 	sec_city_exempt_pct         ,
2121 	arp_tax_sel_param           ,
2122 	arp_transaction_date
2123          from  ZX_PTNR_NEG_LINE_GT
2124          WHERE trx_line_id= pg_trx_line_id_tab(I);
2125 
2126 	l_OraLink.oracleid          := arp_Trx_id;
2127    end if;
2128 
2129    l_OraLink.oracle_msg_text   := null;
2130    l_OraLink.oracle_msg_label  := null;
2131    l_OraLink.taxware_msg_text  := null;
2132    l_OraLink.reserved_text_1   := null;
2133    l_OraLink.reserved_text_2   := null;
2134    l_OraLink.reserved_text_3   := null;
2135    l_OraLink.reserved_bool_1   := null;
2136    l_OraLink.reserved_bool_2   := null;
2137    l_OraLink.reserved_bool_3   := null;
2138    l_OraLink.reserved_char_1   := null;
2139    l_OraLink.reserved_char_2   := null;
2140    l_OraLink.reserved_char_3   := null;
2141    l_OraLink.reserved_num_1    := null;
2142    l_OraLink.reserved_num_2    := null;
2143    l_OraLink.reserved_bignum_1 := null;
2144    l_OraLink.reserved_date_1   := null;
2145 
2146 /*-------------------------------------------------------------+
2147    | Validate Taxware attributes passed                        |
2148    +-----------------------------------------------------------*/
2149 
2150    /*Here we are assigning to the variables..In subsequent changes
2151      we may directly use these values*/
2152 
2153 
2154    if(g_line_level_action = 'CREATE') then
2155 	   l_tax_sel_param		:=	pg_line_numeric6_tab(i);
2156 	   l_tax_type_param		:=	pg_line_char1_tab(i);
2157 	   l_calculation_flag		:=	pg_line_char21_tab(I);
2158 	   l_poo_code			:=	pg_line_char20_tab(i); /*assigned*/
2159 	   l_poa_code			:=	pg_line_char11_tab(i);
2160 	   l_ship_from_code		:=	pg_line_char10_tab(i);
2161 	   l_ship_to_code		:=	pg_line_char9_tab(i);
2162 	   l_service_indicator		:=	pg_line_char18_tab(i);
2163 	   l_state_exempt_reason	:=	pg_line_char4_tab(i);
2164 	   l_county_exempt_reason	:=	pg_line_char5_tab(i);
2165 	   l_city_exempt_reason		:=	pg_line_char6_tab(i);
2166 	   l_sec_county_exempt_reason	:=	pg_line_char5_tab(i);
2167 	   l_sec_city_exempt_reason	:=	pg_line_char6_tab(i);
2168            l_state_cert_no              :=      pg_line_char22_tab(i);
2169            l_county_cert_no             :=      pg_line_char23_tab(i);
2170            l_city_cert_no               :=      pg_line_char24_tab(i);
2171 	   l_state_exempt_percent	:=	pg_line_numeric1_tab(i);
2172 	   l_county_exempt_percent	:=	pg_line_numeric2_tab(i);
2173 	   l_city_exempt_percent	:=	pg_line_numeric3_tab(i);
2174 	   l_sec_county_exempt_percent	:=	pg_line_numeric4_tab(i);
2175 	   l_sec_city_exempt_percent	:=	pg_line_numeric5_tab(i);
2176    else
2177 	   l_tax_sel_param		:=	arp_tax_sel_param;
2178 	   l_tax_type_param		:=	arp_tax_type;
2179 	   l_calculation_flag		:=	calculation_flag;
2183 	   l_ship_to_code		:=	arp_ship_to_add;
2180 	   l_poo_code			:=	arp_poo_add_code;
2181 	   l_poa_code			:=	arp_poa_add_code;
2182 	   l_ship_from_code		:=	arp_ship_from_add;
2184 	   l_service_indicator		:=	arp_service_ind;
2185 	   l_state_exempt_reason	:=	arp_state_exempt_reason;
2186 	   l_county_exempt_reason	:=	arp_county_exempt_reason;
2187 	   l_city_exempt_reason		:=	arp_city_exempt_reason;
2188 	   l_sec_county_exempt_reason	:=	arp_county_exempt_reason;
2189 	   l_sec_city_exempt_reason	:=	arp_city_exempt_reason;
2190 	   l_state_exempt_percent	:=	arp_state_exempt_percent;
2191 	   l_county_exempt_percent	:=	arp_county_exempt_pct;
2192 	   l_city_exempt_percent	:=	arp_city_exempt_pct ;
2193 	   l_sec_county_exempt_percent	:=	sec_county_exempt_pct;
2194 	   l_sec_city_exempt_percent	:=	sec_city_exempt_pct;
2195    end if;
2196 
2197        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2198            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2199 	             'Value of l_tax_sel_param is :'||to_char(l_tax_sel_param));
2200            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2201 	             'Value of l_tax_type_param is :'||l_tax_type_param);
2202        END IF;
2203 
2204 
2205 	   IF l_tax_sel_param is NULL then
2206 		g_tax_SELECTION := ZX_TAX_TAXWARE_GEN.SELPRM_TAX_JUR;
2207 	   ELSIF l_tax_sel_param = 1 THEN
2208 		g_tax_SELECTION := ZX_TAX_TAXWARE_GEN.SELPRM_JUR_ONLY;
2209 	   ELSIF l_tax_sel_param = 2 THEN
2210 		g_tax_SELECTION := ZX_TAX_TAXWARE_GEN.SELPRM_TAXES_ONLY;
2211 	   ELSE
2212 		g_tax_SELECTION := ZX_TAX_TAXWARE_GEN.SELPRM_TAX_JUR;
2213 	   END IF;
2214 
2215 	  IF l_tax_type_param = '1' THEN
2216 		l_tax_type := ZX_TAX_TAXWARE_GEN.IND_SALES;
2217 	  ELSIF l_tax_type_param = '2' THEN
2218 		l_tax_type := ZX_TAX_TAXWARE_GEN.IND_USE;
2219 	  ELSIF l_tax_type_param = '3' THEN
2220 		l_tax_type := ZX_TAX_TAXWARE_GEN.IND_RENTAL;
2221 	  ELSE
2222 		l_tax_type := ZX_TAX_TAXWARE_GEN.IND_SALES;
2223 	  END IF;
2224      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2225            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2226 	             'Value of l_poo_code is :'||l_poo_code);
2227            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2228 	             'Value of l_poa_code is :'||l_poa_code);
2229            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2230 	             'Value of l_ship_from_code is :'||l_ship_from_code);
2231            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2232 	             'Value of l_ship_to_code is :'||l_ship_to_code);
2233            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2234 	             'Value of l_calculation_flag is :'||l_calculation_flag);
2235 
2236      END IF;
2237 -- Validate POO, POA and SHIP-FROM if tax selection specifies use of
2238   -- Jurisdictions.
2239   IF (g_tax_SELECTION IN
2240                 (ZX_TAX_TAXWARE_GEN.SELPRM_JUR_ONLY, ZX_TAX_TAXWARE_GEN.SELPRM_TAX_JUR) ) THEN
2241      -- POO Code
2242      IF ( l_poo_code IS NULL ) THEN
2243 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2244 		'Taxware Error: Point Of Order Origin(POO) Information is not passed.',null,null);
2245      END IF;
2246 
2247      -- POA Code
2248      IF ( l_poa_code IS NULL ) THEN
2249 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2250 		'Taxware Error: Point Of Order Acceptance(POA) Information is not passed.',null,null);
2251 		Return FALSE;
2252      END IF;
2253 
2254      -- Ship From Address
2255      IF ( l_ship_from_code IS NULL ) THEN
2256 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2257 		'Taxware Error: Ship From Address Information is not passed.',null,null);
2258 		RETURN FALSE;
2259      END IF;
2260 
2261   END IF;		-- Tax selection uses Jurisdictions?
2262 
2263   -- Ship To Address
2264   IF ( l_ship_to_code IS NULL ) THEN
2265 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2266 		'Taxware Error: Ship To Address Information is not passed.',null,null);
2267 		RETURN FALSE;
2268   END IF;
2269 
2270  /*----------------------------------------------------------------------+
2271    | Users could customize the tax views to totally exempt tax at any of  |
2272    | the jurisdiction levels using No Tax Indicators.                     |
2273    | No Tax Indicators for all the levels are passed in thru              |
2274    | calculation_flag as State||County||City||Sec County||Sec City.       |
2275    +----------------------------------------------------------------------*/
2276 
2277 
2278 
2279   -- No State Tax Indicator
2280   IF ( nvl(substrb(l_calculation_flag,1,1), '0') NOT IN ('0','1'))
2281   THEN
2282 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2283 		'Taxware Error: Invalid No State Tax Indicator. Must be 1 or 0.',null,null);
2284 		RETURN FALSE;
2285   END IF;
2286 
2287   -- No County Tax Indicator
2288   IF ( nvl(substrb(l_calculation_flag,2,1), '0') NOT IN ('0','1'))
2289   THEN
2290 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2291 		'Taxware Error: Invalid No County Tax Indicator. Must be 1 or 0.',null,null);
2292 		RETURN FALSE;
2293   END IF;
2294 
2295   -- No City/Town Tax Indicator
2296   IF ( nvl(substrb(l_calculation_flag,3,1), '0') NOT IN ('0','1'))
2297   THEN
2298 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2299 		'Taxware Error: Invalid No City/Town Tax Indicator. Must be 1 or 0.',null,null);
2300 		RETURN FALSE;
2301   END IF;
2302 
2303   -- No Secondary County Tax Indicator
2304   IF ( nvl(substrb(l_calculation_flag,4,1), '0') NOT IN ('0','1'))
2305   THEN
2306 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2307 		'Taxware Error: Invalid No Secondary County Tax Indicator. Must be 1 or 0.',null,null);
2308 		RETURN FALSE;
2309   END IF;
2310 
2311   -- No Secondary City/Town Tax Indicator
2312   IF ( nvl(substrb(l_calculation_flag,5,1), '0') NOT IN ('0','1'))
2313   THEN
2314 	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2315 		'Taxware Error: Invalid No Secondary City/Town Tax Indicator. Must be 1 or 0.',null,null);
2316 		RETURN FALSE;
2317   END IF;
2318 
2319  /*-------------------------------------------------------------+
2320    | Validation Complete. 					 |
2321    +-------------------------------------------------------------*/
2322 
2323 
2324    if(g_line_level_action = 'CREATE') then
2325 	   l_Tax_link.CustNo		:=pg_line_char12_tab(I);
2326 	   l_Tax_link.CustName		:=substrb(pg_line_char13_tab(I),1,20);
2327 	   l_Tax_link.InvoiceNo		:=pg_trx_number_tab(I);
2328 	   l_Tax_link.FiscalDate	:=pg_line_date1_tab(I);
2329 	   l_Tax_link.ProdCode		:=substrb(pg_line_char2_tab(I),1,25);
2330 	   l_Tax_link.NumItems		:=abs(nvl(pg_trx_line_qty_tab(I),1));
2331 	   l_Tax_link.NoTaxInd		:=FALSE;
2332 	   l_Tax_link.ReptInd		:=nvl(pg_line_char8_tab(I),'N') = 'Y';/*Need to check whether QUOTE to be also added*/
2333 	   l_Tax_link.DivCode		:=pg_line_char15_tab(I);
2334 	   l_Tax_link.CompanyID		:=pg_line_char14_tab(I);
2335 
2336 	IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2337            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2338 	             'Value of pg_line_amount_tab is :'||to_char(pg_line_amount_tab(I)));
2339         END IF;
2340 	if(pg_line_amount_tab(I)<0) then
2341 		l_tax_link.CreditInd :=TRUE;
2342 	else
2343 		l_tax_link.CreditInd :=FALSE;
2344 	end if;
2345 
2346   --Bug 8576319
2347 	--Setting the credit indicator if line_level_action = DELETE
2348 	IF pg_line_level_action_tab(i) = 'DELETE' THEN
2349 	   l_tax_link.CreditInd := NOT l_tax_link.CreditInd;
2350 	END IF;
2351     else
2352 	   l_Tax_link.CustNo		:=arp_customer_code;
2353 	   l_Tax_link.CustName		:=substrb(arp_customer_name,1,20);
2354 	   l_Tax_link.InvoiceNo		:=arp_trx_number;
2355 	   l_Tax_link.FiscalDate	:=arp_transaction_date;
2356 	   l_Tax_link.ProdCode		:=substrb(arp_product_code,1,25);
2357 	   l_Tax_link.NumItems		:=abs(nvl(arp_quantity,1));
2358 	   l_Tax_link.NoTaxInd		:=FALSE;			/*This need to be checked*/
2359 	   l_Tax_link.ReptInd		:=TRUE;
2360 	   l_Tax_link.DivCode		:=arp_division_code;
2361 	   l_Tax_link.CompanyID		:=arp_company_code;
2362 
2363 	IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2364            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2365 	             'Value of arp_line_amount is :'||to_char(arp_line_amount));
2366         END IF;
2367 	if(arp_line_amount >0) then
2368 		l_tax_link.CreditInd :=TRUE;
2369 	else
2370 		l_tax_link.CreditInd :=FALSE;
2371 	end if;
2372     end if;
2373    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2374            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2375 	             'Value of l_document_type is :'||l_document_type);
2376    END IF;
2377    if(l_document_type in ('INVOICE', 'DEBIT_MEMO', 'ON_ACCT_CREDIT_MEMO'))then
2378 	if(g_line_level_action ='CREATE') then
2379 	  l_Tax_link.GrossAmt	:= abs(pg_line_amount_tab(I));
2380 	  l_Tax_link.InvoiceDate	:= pg_trx_date_tab(I);
2381 	  l_Tax_link.CalcType	:= 'G';
2382 	elsif(g_line_level_action ='DELETE') then
2383 	  l_Tax_link.GrossAmt	:= abs(arp_line_amount);
2384   	  l_Tax_link.InvoiceDate	:= arp_trx_date;
2385 	  l_Tax_link.CalcType	:= 'G';
2386 	end if;
2387 
2388    elsif(l_document_type in ('APPLIED_CREDIT_MEMO'))then
2389 
2393           FROM ZX_LINES_DET_FACTORS zd
2390 	BEGIN
2391           SELECT nvl(zd.partner_migrated_flag, 'N')     -- Bug 5007293
2392           INTO   pg_ugraded_inv_flag_tab(I)
2394           WHERE zd.event_class_mapping_id  = pg_adj_doc_doc_type_id_tab(i)
2395           AND zd.trx_id                    = pg_adj_doc_trx_id_tab(i)
2396           AND zd.trx_line_id               = pg_adj_doc_line_id_tab(i)
2397           AND zd.trx_level_type            = pg_adj_doc_trx_lev_type_tab(i)
2398           AND EXISTS (SELECT 'Y'
2399                       FROM ZX_LINES zl
2400                       WHERE zl.application_id = zd.application_id
2401                       AND zl.entity_code = zd.entity_code
2402                       AND zl.event_class_code = zd.event_class_code
2403                       AND zl.trx_id = pg_adj_doc_trx_id_tab(i)
2404                       AND zl.trx_line_id = pg_adj_doc_line_id_tab(i)
2405                       AND zl.trx_level_type = pg_adj_doc_trx_lev_type_tab(i)
2406                       AND zl.tax = 'LOCATION');
2407         EXCEPTION
2408           WHEN OTHERS THEN
2409             pg_ugraded_inv_flag_tab(I) := 'N';
2410         END;
2411 
2412 	if(g_line_level_action ='CREATE') then
2413           l_Tax_link.GrossAmt	:= abs(pg_line_amount_tab(I));
2414 	  l_Tax_link.InvoiceDate	:= pg_adj_doc_date_tab(I);
2415 	  l_Tax_link.CalcType	:= 'G';
2416         elsif(g_line_level_action ='DELETE') then
2417 	  l_Tax_link.GrossAmt	:= abs(arp_line_amount);
2418 	  l_Tax_link.InvoiceDate	:= arp_adj_doc_date;
2419 	  l_Tax_link.CalcType	:= 'G';
2420         end if;
2421    elsif(l_document_type in ('TAX_ONLY_CREDIT_MEMO'))then
2422     	if(g_line_level_action ='CREATE') then
2423         l_Tax_link.GrossAmt	:= 0;
2424     	  l_Tax_link.InvoiceDate	:= pg_adj_doc_date_tab(I);
2425     	  l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2426     	  l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2427     	  l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2428     	  l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2429         IF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt>0) THEN
2430            l_tax_link.CreditInd :=FALSE;
2431            l_Tax_link.CalcType	:= 'T';
2432         ELSIF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt = 0) THEN
2433            l_tax_link.CreditInd :=FALSE;
2434            l_Tax_link.CalcType	:= 'G';
2435         ELSE
2436            l_tax_link.CreditInd :=TRUE;
2437            l_Tax_link.CalcType	:= 'E';
2438         END IF;
2439 
2440       elsif(g_line_level_action ='DELETE') then
2441     	  l_Tax_link.GrossAmt	:= 0;
2442     	  l_Tax_link.InvoiceDate	:= arp_adj_doc_date;
2443     	  l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2444     	  l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2445     	  l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2446     	  l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2447         IF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt>0) THEN
2448            l_tax_link.CreditInd :=FALSE;
2449            l_Tax_link.CalcType	:= 'T';
2450         ELSIF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt = 0) THEN
2451            l_tax_link.CreditInd :=FALSE;
2452            l_Tax_link.CalcType	:= 'G';
2453         ELSE
2454            l_tax_link.CreditInd :=TRUE;
2455            l_Tax_link.CalcType	:= 'E';
2456         END IF;
2457 
2458       end if;
2459     elsif (l_document_type in ('ADJUSTMENT'))then
2460 	if(g_line_level_action ='CREATE') then
2461 	  l_Tax_link.GrossAmt	:= 0;
2462 	  l_Tax_link.InvoiceDate	:= pg_adj_doc_date_tab(I);
2463 	  l_Tax_link.CalcType	:= 'T';
2464 	  l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2465 	  l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2466 	  l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2467 	  l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2468 	IF(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt<0) then
2469 	   l_tax_link.CreditInd :=TRUE;
2470 	else
2471 	   l_tax_link.CreditInd :=FALSE;
2472 	end if;
2473         elsif(g_line_level_action ='DELETE') then
2474 	  l_Tax_link.GrossAmt	:= 0;
2475 	  l_Tax_link.InvoiceDate	:= arp_adj_doc_date;
2476 	  l_Tax_link.CalcType	:= 'T';
2477 	  l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2478 	  l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2479 	  l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2480 	  l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2481 	IF(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt>0) then
2482 	   l_tax_link.CreditInd :=TRUE;
2483 	else
2484 	   l_tax_link.CreditInd :=FALSE;
2485 	end if;
2486         end if;
2487   elsif(l_document_type in ('TAX_ONLY_ADJUSTMENT'))then
2488 	  if(g_line_level_action ='CREATE') then
2489       l_Tax_link.GrossAmt	:= 0;
2490 	    l_Tax_link.InvoiceDate	:= pg_adj_doc_date_tab(I);
2491 	    l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2492 	    l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2493 	    l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2494 	    l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2495       IF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt>0) THEN
2496          l_tax_link.CreditInd :=FALSE;
2497          l_Tax_link.CalcType	:= 'T';
2498       ELSIF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt = 0) THEN
2499          l_tax_link.CreditInd :=FALSE;
2500          l_Tax_link.CalcType	:= 'G';
2501       ELSE
2502          l_tax_link.CreditInd :=TRUE;
2503          l_Tax_link.CalcType	:= 'E';
2504       END IF;
2505 
2506 	  elsif(g_line_level_action ='DELETE') then
2507 	    l_Tax_link.GrossAmt	:= 0;
2508 	    l_Tax_link.InvoiceDate	:= arp_adj_doc_date;
2509 	    l_Tax_link.TaxAmt	:= abs(g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt);
2510 	    l_Tax_link.StOvAmt	:= abs(g_StTaxAmt);
2511 	    l_Tax_link.CnOvAmt	:= abs(g_CoTaxAmt);
2512 	    l_Tax_link.LoOvAmt	:= abs(g_CiTaxAmt);
2513       IF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt>0) THEN
2514          l_tax_link.CreditInd :=FALSE;
2515          l_Tax_link.CalcType	:= 'T';
2516       ELSIF (g_StTaxAmt+g_CoTaxAmt+g_CiTaxAmt = 0) THEN
2520          l_tax_link.CreditInd :=TRUE;
2517          l_tax_link.CreditInd :=FALSE;
2518          l_Tax_link.CalcType	:= 'G';
2519       ELSE
2521          l_Tax_link.CalcType	:= 'E';
2522       END IF;
2523     end if;
2524   elsif (l_document_type in ('SALES_QUOTE'))then --Bug5927656
2525       if(g_line_level_action ='CREATE') then
2526         l_Tax_link.GrossAmt	:= abs(pg_line_amount_tab(I));
2527         l_Tax_link.InvoiceDate	:= pg_trx_date_tab(I);
2528         l_Tax_link.CalcType	:= 'G';
2529       end if;
2530   end if;
2531 
2532 IF (g_tax_SELECTION = ZX_TAX_TAXWARE_GEN.SELPRM_TAXES_ONLY ) THEN
2533 -- Only (primary)Ship To information is required.
2534        l_Tax_link.StateCode	:= substrb(l_ship_to_code,2,2);
2535       l_Tax_link.PriZip		:= substrb(l_ship_to_code,4,5);
2536       l_Tax_link.PriGeo		:= substrb(l_ship_to_code,9,2);
2537       l_Tax_link.InOutCityLimits := NULL;		-- future use
2538    ELSE
2539       -- Jurisdiction information including Ship To, Ship From, POO and POA.
2540       -- Use Ship To for Ship From and Ship From for POO and POA if not passed!
2541 
2542       l_JurLink.ShipTo.State	:= substrb(l_ship_to_code,2,2);
2543       l_JurLink.ShipTo.Zip	:= substrb(l_ship_to_code,4,5);
2544       l_JurLink.ShipTo.Geo	:= substrb(l_ship_to_code,9,2);
2545       l_JurLink.InOutCiLimShTo	:= NULL;		-- future use
2546 
2547       IF (l_ship_from_code =
2548 		arp_tax_view_taxware.USE_SHIP_TO ) THEN
2549         l_JurLink.ShipFr.State	:= substrb(l_ship_to_code,2,2);
2550         l_JurLink.ShipFr.Zip	:= substrb(l_ship_to_code,4,5);
2551         l_JurLink.ShipFr.Geo	:= substrb(l_ship_to_code,9,2);
2552         l_JurLink.InOutCiLimShFr	:= NULL;		-- future use
2553       ELSE
2554         l_JurLink.ShipFr.State	:= substrb(l_ship_from_code,2,2);
2555         l_JurLink.ShipFr.Zip	:= substrb(l_ship_from_code,4,5);
2556         l_JurLink.ShipFr.Geo	:= substrb(l_ship_from_code,9,2);
2557         l_JurLink.InOutCiLimShFr	:= NULL;		-- future use
2558       END IF;
2559 
2560       IF (l_poo_code  =
2561 		arp_tax_view_taxware.USE_SHIP_TO) THEN
2562         l_JurLink.POO.State	:= l_JurLink.ShipFr.State;
2563         l_JurLink.POO.Zip	:= l_JurLink.ShipFr.Zip;
2564         l_JurLink.POO.Geo	:= l_JurLink.ShipFr.Geo;
2565         l_JurLink.InOutCiLimPOO	:= NULL;		-- future use
2566       ELSE
2567         l_JurLink.POO.State	:= substrb(l_poo_code,2,2);
2568         l_JurLink.POO.Zip	:= substrb(l_poo_code,4,5);
2569         l_JurLink.POO.Geo	:= substrb(l_poo_code,9,2);
2570         l_JurLink.InOutCiLimPOO	:= NULL;		-- future use
2571       END IF;
2572 
2573       IF ( l_poa_code =
2574 		arp_tax_view_taxware.USE_SHIP_TO ) THEN
2575         l_JurLink.POA.State	:= l_JurLink.ShipFr.State;
2576         l_JurLink.POA.Zip	:= l_JurLink.ShipFr.Zip;
2577         l_JurLink.POA.Geo	:= l_JurLink.ShipFr.Geo;
2578         l_JurLink.InOutCiLimPOA	:= NULL;		-- future use
2579       ELSE
2580         l_JurLink.POA.State	:= substrb(l_poa_code,2,2);
2581         l_JurLink.POA.Zip		:= substrb(l_poa_code,4,5);
2582         l_JurLink.POA.Geo		:= substrb(l_poa_code,9,2);
2583         l_JurLink.InOutCiLimPOA	:= NULL;		-- future use
2584       END IF;
2585 
2586       -- Set Service Indicator , Default to 3(Non Service)
2587       IF l_service_indicator = 1 THEN
2588         l_JurLink.ServInd := SERVICE_IND;
2589       ELSIF l_service_indicator = 2 THEN
2590         l_JurLink.ServInd := RENTAL_IND;
2591       ELSIF l_service_indicator = 3 THEN
2592         l_JurLink.ServInd := NOSERV_IND;
2593       ELSE
2594         l_JurLink.ServInd := NOSERV_IND;
2595       END IF;
2596 
2597       --
2598       -- If FOB Point is Destination, Then the Point of Title passage(POT)
2599       -- will be set to POT_DEST. All other values will be set to POT_ORIG.
2600       --
2601 
2602       If(g_line_level_action = 'CREATE') then
2603         l_fob_point		:=pg_fob_point_tab(I);
2604       else
2605 	l_fob_point		:=arp_fob_point;
2606       end if;
2607 
2608       IF ( substrb(l_fob_point,1,1) = 'D' ) THEN
2609             l_JurLink.POT := ZX_TAX_TAXWARE_GEN.POT_DEST;
2610       ELSE
2611             l_JurLink.POT := ZX_TAX_TAXWARE_GEN.POT_ORIG;
2612       END IF;
2613 
2614  END IF;
2615 
2616 if(g_line_level_action='CREATE') then
2617 	l_use_step		:=pg_line_char3_tab(i);
2618 	l_step_proc_flag	:=pg_line_char7_tab(i);
2619 	l_job_no		:=pg_line_char16_tab(i);
2620 	l_criterion_flag	:=pg_line_char19_tab(i);
2621 	l_prod_ind		:=pg_line_char17_tab(i);
2622 else
2623 	l_use_step		:= use_step;
2624 	l_step_proc_flag	:= step_proc_flag;
2625 	l_job_no		:= arp_vnd_ctrl_exmpt;
2626 	l_criterion_flag	:= crit_flag;
2627 	l_prod_ind		:= arp_use_nexpro;
2628 end if;
2629 
2630 
2631 If(g_line_level_action='CREATE') then
2632   if(pg_exempt_cont_flag_tab(I)='R') then
2633 	   l_use_step:='N';
2634   end if;
2635 Else
2636   if(arp_exempt_control_flag='R') then
2637 	   l_use_step:='N';
2638   end if;
2639 End if;
2640    l_Tax_link.UseStep      := l_use_step;
2641    l_Tax_link.StepProcFlg  := l_step_proc_flag;
2642    l_Tax_link.JobNo        := substrb(l_job_no, 1, 10);
2643    l_Tax_link.CritFlg      := l_criterion_flag;
2644    l_Tax_link.UseNexproInd := l_prod_ind;
2645 
2646 
2647   -- Exempt using No Tax Indicators?
2648    IF ( nvl(substrb(l_calculation_flag,1,1),'0') = '0' AND
2649         nvl(substrb(l_calculation_flag,2,1),'0') = '0' AND
2650         nvl(substrb(l_calculation_flag,3,1),'0') = '0' AND
2651         nvl(substrb(l_calculation_flag,4,1),'0') = '0' AND
2652         nvl(substrb(l_calculation_flag,5,1),'0') = '0' )
2653    THEN
2654 
2655 	-- Do not exempt at the jurisdiction level
2656 	l_Tax_link.StaExempt := FALSE;
2657 	l_Tax_link.CnExempt := FALSE;
2661    ELSE
2658 	l_Tax_link.LoExempt := FALSE;
2659 	l_Tax_link.SecCnExempt := FALSE;
2660 	l_Tax_link.SecLoExempt := FALSE;
2662 	-- Exempt 100% at the appropriate level
2663 	l_Tax_link.NoStaTax :=
2664 		nvl(substrb(l_calculation_flag,1,1),'0') = '1';
2665 	l_Tax_link.StaExempt :=
2666 		nvl(substrb(l_calculation_flag,1,1),'0') = '1';
2667 	l_Tax_link.NoCnTax  :=
2668 		nvl(substrb(l_calculation_flag,2,1),'0') = '1';
2669 	l_Tax_link.CnExempt :=
2670 		nvl(substrb(l_calculation_flag,2,1),'0') = '1';
2671 	l_Tax_link.NoLoTax  :=
2672 		nvl(substrb(l_calculation_flag,3,1),'0') = '1';
2673 	l_Tax_link.LoExempt :=
2674 		nvl(substrb(l_calculation_flag,3,1),'0') = '1';
2675 	l_Tax_link.NoSecCnTax  :=
2676 		nvl(substrb(l_calculation_flag,4,1),'0') = '1';
2677 	l_Tax_link.SecCnExempt :=
2678 		nvl(substrb(l_calculation_flag,4,1),'0') = '1';
2679 	l_Tax_link.NoSecLoTax  :=
2680 		nvl(substrb(l_calculation_flag,5,1),'0') = '1';
2681 	l_Tax_link.SecLoExempt :=
2682 		nvl(substrb(l_calculation_flag,5,1),'0') = '1';
2683    END IF;
2684 
2685    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2686            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2687 	             'Value of l_state_exempt_reason is :'||l_state_exempt_reason);
2688            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2689 	             'Value of l_county_exempt_reason is :'||l_county_exempt_reason);
2690            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2691 	             'Value of l_city_exempt_reason is :'||l_city_exempt_reason);
2692            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2693 	             'Value of l_sec_county_exempt_reason is :'||l_sec_county_exempt_reason);
2694    END IF;
2695 
2696    -- Oracle State level Exemption exists?
2697    IF ( l_state_exempt_reason IS NOT NULL ) THEN
2698 
2699       -- Pass Oracle Exemptions info to Taxware
2700       l_Tax_link.StReasonCode := substrb(l_state_exempt_reason,1,2);
2701 
2702       /**********************************************************
2703        * commented out, otherwise taxware treats as 100% exempt *
2704        **********************************************************/
2705       --l_Tax_link.StTaxCertNo := substrb(l_state_cert_no, 1, 25);
2706       l_Tax_link.StTaxCertNo := NULL;
2707 
2708       IF ( l_state_exempt_percent IS NOT NULL ) THEN
2709 
2710 	    IF ( l_Tax_link.StaExempt = TRUE ) THEN
2711 		l_Tax_link.StExemptAmt := 0;	-- Use State No Tax Indicator
2712 	    ELSE
2713 		l_Tax_link.StaExempt := TRUE;
2714 
2715 	        IF ( l_state_exempt_percent = 100 ) THEN
2716 		   l_Tax_link.StExemptAmt := l_Tax_link.GrossAmt;
2717 		ELSE
2718                    l_Tax_link.StExemptAmt :=
2719 				abs(l_Tax_link.GrossAmt*
2720 				      	(l_state_exempt_percent/100)) ;
2721 		END IF;		-- 100% exemption?
2722 
2723 	    END IF;	-- l_Tax_link.Exempt = TRUE, Exempt using No Tax indicator?
2724       END IF;		-- % Exemption specified?
2725    END IF;		-- Exemption reason specified?
2726 
2727 
2728    -- Oracle County level Exemption exists?
2729    IF ( l_county_exempt_reason IS NOT NULL ) THEN
2730 
2731       -- Pass Oracle Exemptions info to Taxware
2732       l_Tax_link.CntyReasonCode := substrb(l_county_exempt_reason,1,2);
2733 
2734       /**********************************************************
2735        * commented out, otherwise taxware treats as 100% exempt *
2736        **********************************************************/
2737       --l_Tax_link.CnTaxCertNo := substrb(l_county_cert_no, 1, 25);
2738       l_Tax_link.CnTaxCertNo := NULL;
2739 
2740       IF ( l_county_exempt_percent IS NOT NULL ) THEN
2741 
2742 	    IF ( l_Tax_link.CnExempt = TRUE ) THEN
2743 		l_Tax_link.CntyExemptAmt := 0;	-- Use County No Tax Indicator
2744 	    ELSE
2745 		l_Tax_link.CnExempt := TRUE;
2746 
2747 	        IF ( l_county_exempt_percent = 100 ) THEN
2748 		   l_Tax_link.CntyExemptAmt := l_Tax_link.GrossAmt;
2749 		ELSE
2750                    l_Tax_link.CntyExemptAmt :=
2751 				abs(l_Tax_link.GrossAmt *
2752 				      	(l_county_exempt_percent/100));
2753 		END IF;		-- 100% exemption?
2754 
2755 	    END IF;	-- l_Tax_link.Exempt = TRUE, Exempt using No Tax indicator?
2756       END IF;		-- % Exemption specified?
2757    END IF;		-- Exemption reason specified?
2758 
2759    -- Oracle City level Exemption exists?
2760    IF ( l_city_exempt_reason IS NOT NULL ) THEN
2761 
2762       -- Pass Oracle Exemptions info to Taxware
2763       l_Tax_link.CityReasonCode := substrb(l_city_exempt_reason,1,2);
2764 
2765       /**********************************************************
2766        * commented out, otherwise taxware treats as 100% exempt *
2767        **********************************************************/
2768       --l_Tax_link.LoTaxCertNo := substrb(l_city_cert_no, 1, 25);
2769       l_Tax_link.LoTaxCertNo := NULL;
2770 
2771       IF ( l_city_exempt_percent IS NOT NULL ) THEN
2772 
2773 	    IF ( l_Tax_link.LoExempt = TRUE ) THEN
2774 		l_Tax_link.CityExemptAmt := 0;	-- Use County No Tax Indicator
2775 	    ELSE
2776 		l_Tax_link.LoExempt := TRUE;
2777 
2778 	        IF ( l_city_exempt_percent = 100 ) THEN
2779 		   l_Tax_link.CityExemptAmt := l_Tax_link.GrossAmt;
2780 		ELSE
2781                    l_Tax_link.CityExemptAmt :=
2782 				abs(l_Tax_link.GrossAmt *
2783 				      	(l_city_exempt_percent/100));
2784 		END IF;		-- 100% exemption?
2785 
2786 	    END IF;	-- l_Tax_link.Exempt = TRUE, Exempt using No Tax indicator?
2790    -- Oracle Secondary County level Exemption exists?
2787       END IF;		-- % Exemption specified?
2788    END IF;		-- Exemption reason specified?
2789 
2791    -- Secondary County exemptions do not require Reason Code and Certificate
2792    IF ( l_sec_county_exempt_reason IS NOT NULL OR
2793 	l_Tax_link.SecCnExempt ) THEN
2794 
2795       IF ( l_sec_county_exempt_percent IS NOT NULL ) THEN
2796 
2797 	    IF ( l_Tax_link.SecCnExempt = TRUE ) THEN
2798 		l_Tax_link.SecCnExemptAmt := 0;	-- Use Sec County No Tax Indicator
2799 	    ELSE
2800 		l_Tax_link.SecCnExempt := TRUE;
2801 
2802 	        IF ( l_sec_county_exempt_percent = 100 ) THEN
2803 		   l_Tax_link.SecCnExemptAmt := l_Tax_link.GrossAmt;
2804 		ELSE
2805                    l_Tax_link.SecCnExemptAmt :=
2806 				abs(l_Tax_link.GrossAmt *
2807 				      	(l_sec_county_exempt_percent/100));
2808 		END IF;		-- 100% exemption?
2809 
2810 	    END IF;	-- l_Tax_link.Exempt = TRUE, Exempt using No Tax indicator?
2811       END IF;		-- % Exemption specified?
2812    END IF;		-- Exemption reason specified?
2813 
2814    -- Oracle Secondary City level Exemption exists?
2815    -- Secondary City exemptions do not require Reason Code and Certificate
2816    IF ( l_sec_city_exempt_reason IS NOT NULL OR
2817 	l_Tax_link.SecLoExempt ) THEN
2818 
2819       IF ( l_sec_city_exempt_percent IS NOT NULL ) THEN
2820 
2821 	    IF ( l_Tax_link.SecLoExempt = TRUE ) THEN
2822 		l_Tax_link.SecLoExemptAmt := 0;	-- Use Sec City No Tax Indicator
2823 	    ELSE
2824 		l_Tax_link.SecLoExempt := TRUE;
2825 
2826 	        IF ( l_sec_city_exempt_percent = 100 ) THEN
2827 		   l_Tax_link.SecLoExemptAmt := l_Tax_link.GrossAmt;
2828 		ELSE
2829                    l_Tax_link.SecLoExemptAmt :=
2830 				abs(l_Tax_link.GrossAmt *
2831 				      	(l_sec_city_exempt_percent/100));
2832 		END IF;		-- 100% exemption?
2833 
2834 	    END IF;	-- l_Tax_link.Exempt = TRUE, Exempt using No Tax indicator?
2835       END IF;		-- % Exemption specified?
2836    END IF;		-- Exemption reason specified?
2837     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2838      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2839     END IF;
2840      Return TRUE;
2841 EXCEPTION
2842 	When OTHERS then
2843 	   IF (g_level_exception >= g_current_runtime_level ) THEN
2844                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
2845                            'Failed in setting the parameters');
2846                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
2847                            'Error is :'||sqlcode || sqlerrm);
2848            END IF;
2849            Return FALSE;
2850 END ;--SET_PARMETERS;
2851 
2852 Function CALCULATE_TAX (
2853 l_TaxLink 	IN OUT NOCOPY zx_tax_taxware_GEN.TaxParm,
2854 l_JurLink 	IN OUT NOCOPY zx_tax_taxware_GEN.JurParm,
2855 l_OraLink       IN OUT NOCOPY zx_tax_taxware_GEN.t_OraParm  ) return boolean is
2856 
2857    Tax_Success			BOOLEAN;
2858    Valid_Err			BOOLEAN;
2859    return_code			boolean;
2860 
2861 l_api_name  CONSTANT VARCHAR2(30) := 'CALCULATE_TAX';
2862 BEGIN
2863     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2864        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2865     END IF;
2866     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2867            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2868 	             'Calling Taxware ZX_TAX_TAXWARE_010.Taxfn_Tax010');
2869     END IF;
2870 
2871      BEGIN
2872 
2873       		Tax_Success := ZX_TAX_TAXWARE_010.Taxfn_Tax010(l_OraLink,
2874                                                                 l_TaxLink,
2875    			  		                        g_tax_selection,
2876    			  		                        l_JurLink);
2877       EXCEPTION
2878 		WHEN OTHERS THEN
2879 		        IF (g_level_exception >= g_current_runtime_level ) THEN
2880                             FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
2881                            'Taxware raised unexpected error:'||sqlerrm);
2882                         END IF;
2883 			stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2884 				    'Taxware raised unexpected error:  '||
2885 				     sqlcode||':'||sqlerrm,null,null);
2886 			RETURN FALSE;
2887       END;
2888       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2889            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2890 	            '-- calculate()... after  ZX_TAX_TAXWARE_010.Taxfn_Tax010() '||to_char(sysdate, 'DD-MON-RR HH24:MI:SS'));
2891       END IF;
2892 
2893      /*-------------------------------------------------------------+
2894       | If Tax Calculated in error, Handle error.                   |
2895       +-------------------------------------------------------------*/
2896       IF NOT Tax_Success THEN
2897            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2898                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2899 	         '-- calculate()... Tax vendor error.');
2900 		  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2901 	         '-- calculate()... before ZX_TAX_TAXWARE_010.Taxfn910_ValidErr()');
2902            END IF;
2903            BEGIN
2904 		Valid_Err := ZX_TAX_TAXWARE_010.Taxfn910_ValidErr(l_TaxLink.GenCmplCd);
2905 	   EXCEPTION
2906 		WHEN OTHERS THEN
2907 		        IF (g_level_exception >= g_current_runtime_level ) THEN
2908                             FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
2909                            'Taxware raised unexpected error during error checking:'||sqlerrm);
2910                         END IF;
2911 			stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
2912 					    'Taxware raised unexpected error during error checking:  '||
2913 					     sqlcode||':'||sqlerrm,null,null);
2914 			RETURN FALSE;
2915 	   END;
2916 	   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2917                    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2918 	             'Calling Get_Vendor_Error');
2919            END IF;
2920 
2921 	   Get_Vendor_Error(g_tax_selection,
2922    				 l_TaxLink,
2923    				 l_JurLink);
2924            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2925                    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2926 	             'After Calling Get_Vendor_Error');
2927            END IF;
2928 
2929       	   return_code := False;
2930 
2931       ELSE
2932            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
2933                    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
2934 	             '-- calculate()... Tax vendor success.');
2935            END IF;
2936 
2937    	   return_code := TRUE;
2938       END IF;
2939 
2940    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2941        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
2942    END IF;
2943 
2944   RETURN ( return_code );
2945 
2946 End;
2947 
2948 PROCEDURE TAX_RESULTS_PROCESSING(
2949 p_tax_lines_tbl    OUT NOCOPY  ZX_TAX_PARTNER_PKG.tax_lines_tbl_type,
2950 p_currency_tab  IN OUT NOCOPY  ZX_TAX_PARTNER_PKG.tax_currencies_tbl_type,
2951 l_TaxLink 	IN OUT NOCOPY  zx_tax_taxware_GEN.TaxParm,
2952 l_JurLink 	IN OUT NOCOPY  zx_tax_taxware_GEN.JurParm,
2953 l_OraLink       IN OUT NOCOPY  zx_tax_taxware_GEN.t_OraParm,
2954 x_return_status     OUT NOCOPY VARCHAR2) IS
2955 J number;
2956 x_tax_jurisdiction_code ZX_JURISDICTIONS_B.tax_jurisdiction_code%type;
2957 p_location_id           NUMBER;
2958 l_regime_code           ZX_REGIMES_B.tax_regime_code%type;
2959 state_tax_rate          NUMBER; -- state tax rate in %
2960 state_tax_amount        NUMBER; -- state tax amount
2961 county_tax_rate         NUMBER; -- county tax rate in %
2962 county_tax_amount       NUMBER; -- county tax amount
2963 city_tax_rate           NUMBER; -- city tax rate in %
2964 city_tax_amount         NUMBER; -- city tax amount
2965 dist_tax_rate           NUMBER; -- district tax rate in %
2966 dist_tax_amount         NUMBER; -- district tax amounts
2967 sec_state_tax_rate      NUMBER; -- secondary state tax rate in %
2968 sec_state_tax_amount    NUMBER; -- secondary state tax amount
2969 sec_county_tax_rate     NUMBER; -- secondary county tax rate
2970 sec_county_tax_amount   NUMBER; -- secondary county tax amount
2971 sec_city_tax_rate       NUMBER; -- secondary city tax rate
2972 sec_city_tax_amount     NUMBER; -- secondary city tax amount
2973 l_situs                 VARCHAR2(20);
2974 sign_flag		number;
2975 l_api_name           CONSTANT VARCHAR2(30) := 'TAX_RESULTS_PROCESSING';
2976 l_return_status         VARCHAR2(30);
2977 ind			NUMBER;
2978 Begin
2979 
2980  x_return_status	:= FND_API.G_RET_STS_SUCCESS;
2981 
2982  IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
2983        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
2984  END IF;
2985 
2986 l_regime_code          := zx_tax_partner_pkg.g_tax_regime_code;
2987 
2988   IF l_JurLink.JurLocType = 'T' THEN
2989     l_situs := 'SHIP_TO';
2990   ELSIF l_JurLink.JurLocType = 'F' AND pg_line_char10_tab(i) <> arp_tax_view_taxware.USE_SHIP_TO THEN
2991     l_situs := 'SHIP_FROM';
2992   ELSIF l_JurLink.JurLocType = 'A' THEN
2993     IF pg_line_char11_tab(i) <> arp_tax_view_taxware.USE_SHIP_TO THEN
2994       l_situs := 'POA';
2995     ELSIF pg_line_char10_tab(i) <> arp_tax_view_taxware.USE_SHIP_TO THEN
2996       l_situs := 'SHIP_FROM';
2997     ELSE
2998       l_situs := 'SHIP_TO';
2999     END IF;
3000   ELSIF l_JurLink.JurLocType = 'O' THEN
3001     IF pg_line_char20_tab(i) <> arp_tax_view_taxware.USE_SHIP_TO THEN
3002       l_situs := 'POO';
3003     ELSIF pg_line_char10_tab(i) <> arp_tax_view_taxware.USE_SHIP_TO THEN
3004       l_situs := 'SHIP_FROM';
3005     ELSE
3006       l_situs := 'SHIP_TO';
3007     END IF;
3008   ELSIF l_JurLink.JurLocType = 'B' THEN
3009     l_situs := 'BILL_TO';
3010   ELSE
3011     l_situs := 'SHIP_TO';
3012   END IF;
3013 
3014  IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3015        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME,'Situs: '||l_situs);
3016  END IF;
3017 
3018   IF l_situs =  'SHIP_TO' THEN
3019   /* Bug 5090593: Making use of the location ids passed thru view.
3020            select nvl(ship_to_location_id, bill_to_location_id)
3021            INTO    p_location_id
3022  	   From    zx_lines_det_factors
3023  	   WHERE
3024                    event_class_mapping_id =  pg_doc_type_id_tab(I) and
3025 		   trx_id	  =  pg_trx_id_tab(I) and
3026  	           trx_line_id    =  pg_trx_line_id_tab(I) and
3027 		   trx_level_type  =  pg_trx_level_type_tab(I);
3028   */
3029     p_location_id := nvl(pg_ship_to_loc_id_tab(I), pg_bill_to_loc_id_tab(I));
3030   ELSIF l_situs =  'SHIP_FROM' THEN
3031   /* Bug 5090593: Making use of the location ids passed thru view.
3032            select nvl(ship_from_location_id, bill_from_location_id)
3033            INTO    p_location_id
3034  	   From    zx_lines_det_factors
3035  	   WHERE
3036 		   event_class_mapping_id =  pg_doc_type_id_tab(I) and
3037                    trx_id       =  pg_trx_id_tab(I) and
3038  	           trx_line_id  =  pg_trx_line_id_tab(I) and
3039 		   trx_level_type  =  pg_trx_level_type_tab(I);
3040   */
3041     p_location_id := nvl(pg_ship_fr_loc_id_tab(I), pg_bill_fr_loc_id_tab(I));
3042   ELSIF l_situs = 'POA' THEN
3043     p_location_id := pg_poa_loc_id_tab(I);
3044   ELSIF l_situs = 'POO' THEN
3045     p_location_id := pg_poo_loc_id_tab(I);
3046   ELSIF l_situs = 'BILL_TO' THEN
3047     p_location_id := nvl(pg_bill_to_loc_id_tab(I), pg_ship_to_loc_id_tab(I));
3048   END IF;
3049 
3050 	IF ( l_TaxLink.CreditInd ) THEN
3051 	    sign_flag:=-1;
3052 	Else sign_flag:=1;
3053 	End if;
3054 
3055     p_currency_tab(1).tax_currency_precision      := 2;   -- Bug 5288518
3056     /*-----------------------------------------------------------
3057      | Populate Tax Amounts and Rates				|
3058      -----------------------------------------------------------*/
3059     /* State tax rate */
3060     state_tax_rate := l_TaxLink.StaTxRate * 100;
3061     /* State tax amount */
3062     state_tax_amount := sign_flag*l_TaxLink.StaTxAmt;
3063     /* County tax rate */
3064     county_tax_rate := l_TaxLink.CnTxRate * 100;
3065     /* County tax amount */
3066     county_tax_amount := sign_flag*l_TaxLink.CnTxAmt;
3067     /* City tax Rate */
3068     city_tax_rate := l_TaxLink.LoTxRate * 100;
3069     /* City tax amount */
3070     city_tax_amount := sign_flag*l_TaxLink.LoTxAmt;
3071     /* Secondary State tax rate */
3072     sec_state_tax_rate := l_TaxLink.ScStTxRate * 100;
3073     /* secondary state tax amount */
3074     sec_state_tax_amount := sign_flag*l_TaxLink.ScStTxAmt;
3075     /* Secondary county Rate */
3076     sec_county_tax_rate := l_TaxLink.ScCnTxRate * 100;
3077     /* Secondary County tax amount */
3078     sec_county_tax_amount := sign_flag*l_TaxLink.ScCnTxAmt;
3079     /* Secondary City tax Rate */
3080     sec_city_tax_rate := l_TaxLink.ScLoTxRate * 100;
3081     /* secondary City tax amount */
3082     sec_city_tax_amount := sign_flag*l_TaxLink.ScLoTxAmt;
3083 
3084 
3085    IF pg_ugraded_inv_flag_tab(I) = 'Y' THEN
3086         p_tax_lines_tbl.document_type_id(i)           := pg_doc_type_id_tab(I);
3087         p_tax_lines_tbl.transaction_id(i)             := pg_trx_id_tab(I);
3088         p_tax_lines_tbl.transaction_line_id(i)        := pg_trx_line_id_tab(I);
3089         p_tax_lines_tbl.trx_level_type(i)             := pg_trx_level_type_tab(I);
3090         p_tax_lines_tbl.country_code(i)               := l_regime_code ;
3091         p_tax_lines_tbl.situs(i)                      := l_situs;
3092         p_tax_lines_tbl.tax_currency_code(i)          := p_currency_tab(1).tax_currency_code;
3093         p_tax_lines_tbl.Inclusive_tax_line_flag(i)    := 'N';
3094         p_tax_lines_tbl.Line_amt_includes_tax_flag(i) := 'N';
3095         p_tax_lines_tbl.use_tax_flag(i)               := 'N';
3096         p_tax_lines_tbl.User_override_flag(i)         := 'N'; -- Need to see if different for override_tax
3097         p_tax_lines_tbl.last_manual_entry(i)          := NULL;
3098         p_tax_lines_tbl.manually_entered_flag(i)      := 'N'; -- Need to see if different for override_tax
3102         p_tax_lines_tbl.threshold_indicator_flag(i)   := Null;
3099         p_tax_lines_tbl.registration_party_type(i)    := NULL;  -- Bug 5288518
3100         p_tax_lines_tbl.party_tax_reg_number(i)       := NULL;  -- Bug 5288518
3101         p_tax_lines_tbl.third_party_tax_reg_number(i) := NULL;
3103         p_tax_lines_tbl.State(i)                      := l_JurLink.JurState;
3104         p_tax_lines_tbl.County(i)                     := NULL;
3105         p_tax_lines_tbl.City(i)                       := l_JurLink.JurCity;
3106         p_tax_lines_tbl.tax_only_line_flag(i)         := 'N';
3107         p_tax_lines_tbl.Tax(i)                        := 'LOCATION';
3108         p_tax_lines_tbl.tax_amount(i)                 :=  (state_tax_amount+sec_state_tax_amount)
3109                                                           + (county_tax_amount +sec_county_tax_amount)
3110                                                           + (city_tax_amount +sec_city_tax_amount);
3111         --added them
3112         p_tax_lines_tbl.unrounded_tax_amount(i)       :=  (state_tax_amount+sec_state_tax_amount)
3113                                                           + (county_tax_amount +sec_county_tax_amount)
3114                                                           + (city_tax_amount +sec_city_tax_amount);
3115         p_tax_lines_tbl.tax_curr_tax_amount(i)        := p_tax_lines_tbl.tax_amount(i) * p_currency_tab(1).exchange_rate;
3116         p_tax_lines_tbl.tax_rate_percentage(i)        :=  (state_tax_rate+sec_state_tax_rate)
3117                                                           + (county_tax_rate +sec_county_tax_rate)
3118                                                           + (city_tax_rate +sec_city_tax_rate);
3119 
3120         p_tax_lines_tbl.taxable_amount(i)             := sign_flag * l_TaxLink.StBasisAmt;
3121 
3122         p_tax_lines_tbl.tax_jurisdiction(i)           := NULL;
3123         -- Can alternatively call GET_TAX_JUR_CODE for tax = 'CITY'  (lowest level jurisdiction)
3124 
3125         p_tax_lines_tbl.global_attribute_category(i)  := 'TAXWARE';
3126         p_tax_lines_tbl.global_attribute2(i)          := to_char((state_tax_amount+sec_state_tax_amount));
3127         p_tax_lines_tbl.global_attribute4(i)          := to_char((county_tax_amount +sec_county_tax_amount));
3128         p_tax_lines_tbl.global_attribute6(i)          := to_char((city_tax_amount +sec_city_tax_amount));
3129 
3130 
3131         p_tax_lines_tbl.exempt_reason(i)              :=l_TaxLink.StReasonCode;
3132 
3133         IF (NVL(l_TaxLink.StExemptAmt, 0) + NVL(l_TaxLink.CntyExemptAmt, 0)
3134                                                   + NVL(l_TaxLink.CityExemptAmt, 0)) <> 0 THEN
3135           IF (l_TaxLink.GrossAmt <> 0) then
3136              p_tax_lines_tbl.exempt_rate_modifier(i)  := (l_TaxLink.StExemptAmt +
3137                                                           l_TaxLink.CntyExemptAmt +
3138                                                           l_TaxLink.CityExemptAmt)/
3139                                                          l_TaxLink.GrossAmt;
3140              p_tax_lines_tbl.exempt_certificate_number(i) := NVL(l_state_cert_no,NVL(l_TaxLink.StTaxCertNo,
3141                                                             NVL(l_TaxLink.CnTaxCertNo,l_TaxLink.LoTaxCertNo)));
3142           ELSE
3143             p_tax_lines_tbl.exempt_rate_modifier(i)   := 0;
3144             p_tax_lines_tbl.exempt_certificate_number(i) := NULL;
3145           END IF;
3146         ELSE
3147           p_tax_lines_tbl.exempt_rate_modifier(i)     := 0;
3148           p_tax_lines_tbl.exempt_certificate_number(i) := NULL;
3149         END IF;
3150 
3151         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3152 	   FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'tax line output ');
3153 	   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)));
3154            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)));
3155            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_line_id('||ind||') = '||
3156                 to_char(p_tax_lines_tbl.transaction_line_id(ind)));
3157            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.trx_level_type('||ind||') = '||
3158                 p_tax_lines_tbl.trx_level_type(ind));
3159            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));
3160            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.Tax('||ind||') = '|| p_tax_lines_tbl.Tax(ind));
3161            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.situs('||ind||') = '|| p_tax_lines_tbl.situs(ind));
3162            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_jurisdiction('||ind||') = '||
3163 		p_tax_lines_tbl.tax_jurisdiction(ind));
3164            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));
3165            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT('||ind||')  = '||
3166 		to_char(p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind)));
3167            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)));
3168            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_rate_percentage('||ind||') = '||
3169 		to_char(p_tax_lines_tbl.tax_rate_percentage(ind)));
3170            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.taxable_amount('||ind||') = '||
3171 		to_char(p_tax_lines_tbl.taxable_amount(ind)));
3172            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.State('||ind||') = '|| p_tax_lines_tbl.State(ind));
3173            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.County('||ind||') = '|| p_tax_lines_tbl.County(ind));
3174            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.City('||ind||') = '|| p_tax_lines_tbl.City(ind));
3175            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.unrounded_tax_amount('||ind||') = '||
3176 		to_char(p_tax_lines_tbl.unrounded_tax_amount(ind)));
3177            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.exempt_certificate_number('||ind||') = '||
3178                 p_tax_lines_tbl.exempt_certificate_number(ind));
3179            --bug7140895
3180            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));
3181            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));
3182            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));
3183            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));
3184         END IF;
3185 
3186    ELSE
3187     For J in 1..3
3188     loop
3189     ind:=j+(3*i-3);
3190 	p_tax_lines_tbl.document_type_id(ind)      := pg_doc_type_id_tab(I);
3191 	p_tax_lines_tbl.transaction_id(ind)		:= pg_trx_id_tab(I);
3192 	p_tax_lines_tbl.transaction_line_id(ind)	:= pg_trx_line_id_tab(I);
3193 	p_tax_lines_tbl.trx_level_type(ind)             := pg_trx_level_type_tab(I);
3194 	p_tax_lines_tbl.country_code(ind)      	:= l_regime_code;
3195 	p_tax_lines_tbl.tax_currency_code(ind)	:= p_currency_tab(1).tax_currency_code;
3196 	p_tax_lines_tbl.situs(ind)                  := l_situs;
3197 	p_tax_lines_tbl.State(ind)			:= l_JurLink.JurState;
3198 	p_tax_lines_tbl.County(ind)			:= null; /*Need to check what should be the value for this*/
3199 	p_tax_lines_tbl.City(ind)			:= l_JurLink.JurCity ;
3200 	p_tax_lines_tbl.Inclusive_tax_line_flag(ind)  := 'N';
3201 	p_tax_lines_tbl.Line_amt_includes_tax_flag(ind)   := 'N';
3202 	p_tax_lines_tbl.use_tax_flag(ind)		:= 'N';
3203 	p_tax_lines_tbl.User_override_flag(ind)	:= 'N'; -- Need to see if different for override_tax
3204         p_tax_lines_tbl.last_manual_entry(ind)          := NULL;
3205 	p_tax_lines_tbl.manually_entered_flag(ind)	:= 'N'; -- Need to see if different for override_tax
3206 	p_tax_lines_tbl.registration_party_type(ind)      := Null;   -- Bug 5288518
3207 	p_tax_lines_tbl.party_tax_reg_number(ind)	        := Null;   -- Bug 5288518
3208 	p_tax_lines_tbl.Third_party_tax_reg_number(ind)	:= Null;
3209 	p_tax_lines_tbl.threshold_indicator_flag(ind)	:= Null;
3210      	p_tax_lines_tbl.tax_only_line_flag(ind)	:= 'N';
3211         --bug7140895
3212         p_tax_lines_tbl.global_attribute_category(ind) := 'TAXWARE';
3213         p_tax_lines_tbl.global_attribute2(ind) := null;
3214         p_tax_lines_tbl.global_attribute4(ind) := null;
3215         p_tax_lines_tbl.global_attribute6(ind) := null;
3216 
3217 	IF J=1 then /*Case for State*/
3218 		p_tax_lines_tbl.Tax(ind)				 := 'STATE';
3219 		p_tax_lines_tbl.tax_amount(ind)			 := state_tax_amount+sec_state_tax_amount;
3220 		p_tax_lines_tbl.unrounded_tax_amount(ind)		 := state_tax_amount+sec_state_tax_amount;
3221 		p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind) 		 := p_tax_lines_tbl.tax_amount(ind)*p_currency_tab(1).exchange_rate;
3222 		p_tax_lines_tbl.tax_rate_percentage(ind) 		 := state_tax_rate+sec_state_tax_rate;
3223 		p_tax_lines_tbl.taxable_amount(ind) 		 := sign_flag * l_TaxLink.StBasisAmt;
3224 	  IF (l_TaxLink.StExemptAmt<>0) THEN
3225 	     if (l_TaxLink.GrossAmt<>0) then
3226                 p_tax_lines_tbl.exempt_rate_modifier(ind) := l_TaxLink.StExemptAmt/l_TaxLink.GrossAmt;
3227                 p_tax_lines_tbl.exempt_certificate_number(ind)	:= NVL(l_state_cert_no,l_TaxLink.StTaxCertNo);
3228              else
3229                p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3230                p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3231              end if;
3232           ELSE
3233              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3234              p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3235           END IF;
3236 		p_tax_lines_tbl.exempt_reason(ind) 			 :=l_TaxLink.StReasonCode;
3237 	ELSIF J=2 then
3238            	p_tax_lines_tbl.Tax(ind)				 := 'COUNTY';
3239 		p_tax_lines_tbl.tax_amount(ind)			 :=county_tax_amount +sec_county_tax_amount;
3240 		p_tax_lines_tbl.unrounded_tax_amount(ind)		 := county_tax_amount +sec_county_tax_amount;
3241 		p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind) 		 := p_tax_lines_tbl.tax_amount(ind) *p_currency_tab(1).exchange_rate;
3242 		p_tax_lines_tbl.tax_rate_percentage(ind) 		 := county_tax_rate +sec_county_tax_rate ;
3243 		p_tax_lines_tbl.taxable_amount(ind) 		 := sign_flag * l_TaxLink.CntyBasisAmt;
3244 	  IF (l_TaxLink.CntyExemptAmt<>0) THEN
3245 	     if (l_TaxLink.GrossAmt<>0) then
3246 		p_tax_lines_tbl.exempt_rate_modifier(ind) := l_TaxLink.CntyExemptAmt/l_TaxLink.GrossAmt;
3247                 p_tax_lines_tbl.exempt_certificate_number(ind)	:= NVL(l_county_cert_no,l_TaxLink.CnTaxCertNo);
3248              else
3249                p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3250                p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3251              end if;
3252           ELSE
3253              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3254              p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3255           END IF;
3256 		p_tax_lines_tbl.exempt_reason(ind) 			 :=l_TaxLink.CntyReasonCode;
3257 	ELSIF J=3 then
3258 
3259                	p_tax_lines_tbl.Tax(ind)				 := 'CITY';
3260 		p_tax_lines_tbl.tax_amount(ind)			 := (city_tax_amount +sec_city_tax_amount);
3261 		p_tax_lines_tbl.unrounded_tax_amount(ind)		 := city_tax_amount +sec_city_tax_amount ;
3262 		p_tax_lines_tbl.tax_curr_tax_amount(ind) 		 := p_tax_lines_tbl.unrounded_tax_amount(ind)*p_currency_tab(1).exchange_rate;
3263 		p_tax_lines_tbl.tax_rate_percentage(ind) 		 := city_tax_rate +sec_city_tax_rate;
3264 		p_tax_lines_tbl.taxable_amount(ind) 		 := sign_flag * l_TaxLink.CityBasisAmt;
3265 	  IF (l_TaxLink.CityExemptAmt<>0) THEN
3266 	     if (l_TaxLink.GrossAmt<>0) then
3267 		p_tax_lines_tbl.exempt_rate_modifier(ind)	:= l_TaxLink.CityExemptAmt/l_TaxLink.GrossAmt;
3268                 p_tax_lines_tbl.exempt_certificate_number(ind)	:= NVL(l_city_cert_no,l_TaxLink.LoTaxCertNo);
3269             else
3270               p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3271               p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3272             end if;
3273           ELSE
3274              p_tax_lines_tbl.exempt_rate_modifier(ind) := 0;
3275              p_tax_lines_tbl.exempt_certificate_number(ind) := NULL;
3276           END IF;
3277 		p_tax_lines_tbl.exempt_reason(ind) 			 :=l_TaxLink.CityReasonCode;
3278         else null;
3279 	END IF;
3280                GET_TAX_JUR_CODE (p_location_id          ,
3281 	 	          p_tax_lines_tbl.Situs(ind)    ,
3282 	                  p_tax_lines_tbl.Tax(ind)      ,
3283                           l_regime_code		        ,
3284 	       	          pg_trx_date_tab(I)	   	,
3285 	 	          x_tax_jurisdiction_code 	,
3286 	 	          l_return_status
3287 	 	         );
3288 
3289 		p_tax_lines_tbl.tax_jurisdiction(ind) 		 := x_tax_jurisdiction_code;
3290         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3291 	   FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'tax line output ');
3292 	   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)));
3293            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)));
3294            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.transaction_line_id('||ind||') = '||
3295                 to_char(p_tax_lines_tbl.transaction_line_id(ind)));
3296            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.trx_level_type('||ind||') = '||
3297                 p_tax_lines_tbl.trx_level_type(ind));
3298            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));
3299            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.Tax('||ind||') = '|| p_tax_lines_tbl.Tax(ind));
3300            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.situs('||ind||') = '|| p_tax_lines_tbl.situs(ind));
3301            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_jurisdiction('||ind||') = '||
3302 		p_tax_lines_tbl.tax_jurisdiction(ind));
3303            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));
3304            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT('||ind||')  = '||
3305 		to_char(p_tax_lines_tbl.TAX_CURR_TAX_AMOUNT(ind)));
3306            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)));
3307            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.tax_rate_percentage('||ind||') = '||
3308 		to_char(p_tax_lines_tbl.tax_rate_percentage(ind)));
3309            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.taxable_amount('||ind||') = '||
3310 		to_char(p_tax_lines_tbl.taxable_amount(ind)));
3311            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.State('||ind||') = '|| p_tax_lines_tbl.State(ind));
3312            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.County('||ind||') = '|| p_tax_lines_tbl.County(ind));
3313            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_lines_tbl.City('||ind||') = '|| p_tax_lines_tbl.City(ind));
3314            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.unrounded_tax_amount('||ind||') = '||
3315 		to_char(p_tax_lines_tbl.unrounded_tax_amount(ind)));
3316              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,' p_tax_lines_tbl.exempt_certificate_number('||ind||') = '||
3317                 p_tax_lines_tbl.exempt_certificate_number(ind));
3318            --bug7140895
3319            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));
3320            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));
3321            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));
3322            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));
3323         END IF;
3324    END LOOP;
3325  END IF;
3326 
3327  IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3328        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
3329  END IF;
3330 end;
3331 
3332 PROCEDURE stack_error (
3333 		  p_msgname IN    VARCHAR2,
3334                   p_token1  IN    VARCHAR2 ,
3335                   p_value1  IN    VARCHAR2 ,
3336                   p_token2  IN    VARCHAR2 ,
3337                   p_value2  IN    VARCHAR2  ) IS
3338 l_api_name     CONSTANT VARCHAR2(100) := 'STACK_ERROR';
3339 
3340 BEGIN
3341   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3342        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3343   END IF;
3344   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3345         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3346              '-- P_MSGNAME = '||p_msgname);
3347         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3348              '-- P_TOKEN1 = '||p_token1);
3349 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3350              '-- P_VALUE1 = '||p_value1);
3351 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3352              '-- P_TOKEN2 = '||p_token2);
3353         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3354              '-- P_VALUE2 = '||p_value2);
3355   END IF;
3356 
3357   error_exception_handle(p_value1||p_value2);
3358 
3359 
3360   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3361        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()-');
3362   END IF;
3363 
3364 END stack_error;
3365 
3366 PROCEDURE Get_Vendor_Error (
3367 	tax_selection 	IN	ZX_TAX_TAXWARE_GEN.SELPARMTYP%TYPE,
3368 	errTaxParm	IN	ZX_TAX_TAXWARE_GEN.TaxParm,
3369 	errJurParm	IN	ZX_TAX_TAXWARE_GEN.JurParm ) IS
3370 
3371   error_location 	VARCHAR2(30);
3372   error_mesg 		VARCHAR2(200);
3373   vdr_return_code	char(2);
3374 
3375   Jur_error		BOOLEAN := FALSE;
3376   Calc_error		BOOLEAN := FALSE;
3377   l_api_name    CONSTANT VARCHAR2(100) := 'GET_VENDOR_ERROR';
3378 BEGIN
3379   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3380        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3381   END IF;
3382   IF ( tax_selection IN
3383 		(zx_tax_taxware_GEN.SELPRM_JUR_ONLY, zx_tax_taxware_GEN.SELPRM_TAX_JUR) ) THEN
3384 
3385      -- Check for Jurisdiction errors
3386      IF ( errJurParm.ReturnCode <> zx_tax_taxware_GEN.JURSUCCESS ) THEN
3387 
3388 	Jur_Error := TRUE;
3389 
3390       	IF errJurParm.ReturnCode = zx_tax_taxware_GEN.JURINVPOT THEN
3391 	   error_mesg := JGMSG_JURINVPOT;
3392 	ELSIF errJurParm.ReturnCode = zx_tax_taxware_GEN.JURINVSRVIN THEN
3393 	   error_mesg := JGMSG_JURINVSRVIN;
3394 	ELSIF errJurParm.ReturnCode = zx_tax_taxware_GEN.JURERROR THEN
3395 
3396 	   -- Determine Jurisdiction Error Location
3397 	   IF errJurParm.POOJurRC <> to_char(0) THEN
3398 		vdr_return_code := errJurParm.POOJurRC;
3399 		error_location := 'POO';
3400 	   ELSIF errJurParm.POAJurRC <> to_char(0) THEN
3401 		vdr_return_code := errJurParm.POAJurRC;
3402 		error_location := 'POA';
3403 	   ELSIF errJurParm.ShpToJurRC <> to_char(0) THEN
3404 		vdr_return_code := errJurParm.ShpToJurRC;
3405 		error_location := 'SHIP-TO';
3406 	   ELSIF errJurParm.ShpFrJurRC <> to_char(0) THEN
3407 		vdr_return_code := errJurParm.ShpFrJurRC;
3408 		error_location := 'SHIP-FROM';
3409 	   ELSE
3410 	   	error_mesg := JGMSG_JURERROR;
3411 	   END IF;
3412 
3413 	   -- Determine type of Jurisdiction error for Location
3414 	   IF vdr_return_code IS NOT NULL THEN
3415 
3416 	     -- Check vdr_return_code
3417 	     IF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCCNTYDEF) THEN
3418 	   	error_mesg := error_location||' : '||JMSG_LOCCNTYDEF;
3419 	     ELSIF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCINVSTATE) THEN
3420 	   	error_mesg := error_location||' : '||JMSG_LOCINVSTATE;
3421 	     ELSIF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCNOZIP) THEN
3422 	   	error_mesg := error_location||' : '||JMSG_LOCNOZIP;
3423 	     ELSIF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCINVZIP) THEN
3424 	   	error_mesg := error_location||' : '||JMSG_LOCINVZIP;
3425 	     ELSIF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCNOGEO) THEN
3426 		-- Same as LOCNOCITY
3427 	   	error_mesg := error_location||' : '||JMSG_LOCNOGEO;
3428 	     ELSIF vdr_return_code = to_char(zx_tax_taxware_GEN.LOCINVCITY) THEN
3429 	   	error_mesg := error_location||' : '||JMSG_LOCINVCITY;
3430 	     ELSE
3431 	   	error_mesg := JMSG_UNKNOWN;
3432 	     END IF;		-- check vdr_return_code
3433 
3434 	   END IF;		-- vdr_return_code NOT NULL?
3435 
3436 	END IF;			-- zx_tax_taxware_GEN.JURERROR?
3437 
3438      END IF; 		-- Not JURSUCCESS?
3439 
3440   ELSIF ( NOT Jur_Error AND
3441 	  tax_selection IN
3442 		(zx_tax_taxware_GEN.SELPRM_TAXES_ONLY, zx_tax_taxware_GEN.SELPRM_TAX_JUR) ) THEN
3443 
3444      -- Check for Calculation errors
3445      IF ( nvl(errTaxParm.GenCmplCd,0) <> zx_tax_taxware_GEN.SUCCESSCC ) THEN
3446 
3447 	Calc_Error := TRUE;
3448 
3449       	IF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVALIDZIP THEN
3450 	   error_mesg := TGMSG_INVALIDZIP;
3451       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVALIDST THEN
3452 	   error_mesg := TGMSG_INVALIDST;
3453       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVALIDGRS THEN
3454 	   error_mesg := TGMSG_INVALIDGRS;
3455       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVALIDTAXAMT THEN
3456 	   error_mesg := TGMSG_INVALIDTAXAMT;
3457       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.GENINVZIPST THEN
3458 	   error_mesg := TGMSG_GENINVZIPST;
3459       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVCALCTYP THEN
3460 	   error_mesg := TGMSG_INVCALCTYP;
3461       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.PRDACCESSERR THEN
3462 	   error_mesg := TGMSG_PRDACCESSERR;
3463       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.RATEISZERO THEN
3464 	   error_mesg := TGMSG_RATEISZERO;
3465       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.NEGFIELDS THEN
3466 	   error_mesg := TGMSG_NEGFIELDS;
3467       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.AUDACCESSERR THEN
3468 	   error_mesg := TGMSG_AUDACCESSERR;
3469       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVCALCERR THEN
3470 	   error_mesg := TGMSG_INVCALCERR;
3471       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.STEPNOCUSTERR THEN
3472 	   error_mesg := TGMSG_STEPNOCUSTERR;
3473       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.NOSTEPPROC THEN
3474 	   error_mesg := TGMSG_NOSTEPPROC;
3475       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.STEPPARAMERR THEN
3476 	   error_mesg := TGMSG_STEPPARAMERR;
3477       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.STEPMISCERR THEN
3478 	   error_mesg := TGMSG_STEPMISCERR;
3479       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.CERRACCESSERR THEN
3480 	   error_mesg := TGMSG_CERRACCESSERR;
3481       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.JERRACCESSERR THEN
3482 	   error_mesg := TGMSG_JERRACCESSERR;
3483       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVJURERR THEN
3484 	   error_mesg := TGMSG_INVJURERR;
3485       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVJURERR THEN
3486 	   error_mesg := TGMSG_INVJURERR;
3487       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVJURPROC THEN
3488 	   error_mesg := TGMSG_INVJURPROC;
3489       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.INVSELPARM THEN
3490 	   error_mesg := TGMSG_INVSELPARM;
3491       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.JURISERROR THEN
3492 	   error_mesg := TGMSG_JURISERROR;
3493       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.PRDINVALID4CU THEN
3494 	   error_mesg := TGMSG_PRDINVALID4CU;
3495       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.CONUSEFILEERR THEN
3496 	   error_mesg := TGMSG_CONUSEFILEERR;
3497       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.CALC_E_ERROR THEN
3498 	   error_mesg := TGMSG_CALC_E_ERROR;
3499       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.EXEMPTLGRGROSS THEN
3500 	   error_mesg := TGMSG_EXEMPTLGRGROSS;
3501       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.AMOUNTOVERFLOW THEN
3502 	   error_mesg := TGMSG_AMOUNTOVERFLOW;
3503       	ELSIF errTaxParm.GenCmplCd = zx_tax_taxware_GEN.PRODCDCONVNOTFOUND THEN
3504 	   error_mesg := TGMSG_PRODCDCONVNOTFOUND;
3505 	ELSE
3506 	   error_mesg := TGMSG_UNKNOWN||' Return Code = '||errTaxParm.GenCmplCd;
3507 	END IF;
3508 
3509      END IF;		-- GenCmplCd <> SUCESSSCC?
3510 
3511   END IF;		-- Tax Selection type
3512 
3513   IF ( Jur_Error OR Calc_Error ) THEN
3514         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3515            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3516 	   '-- ERROR MESSAGE = '||error_mesg);
3517 	   FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3518 	   'CALLING STACK_ERROR');
3519         END IF;
3520 
3521   	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
3522 					'Taxware Error : '||error_mesg,null,null);
3523   ELSE
3524         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3525 	    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3526 	   'CALLING STACK_ERROR');
3527         END IF;
3528   	stack_error('GENERIC_MESSAGE', 'GENERIC_TEXT',
3529 					'Taxware Errror: Taxfn_Tax010 returned FALSE and GenCmplCd = '||
3530                                         errTaxParm.GenCmplCd,null,null);
3531   END IF;
3532 
3533   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3534        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
3535   END IF;
3536 END Get_Vendor_Error;
3537 
3538 
3539 PROCEDURE ERROR_EXCEPTION_HANDLE(P_ERROR_STRING  varchar2) is
3540 
3541 cursor error_exception_cursor is
3542 select	EVNT_CLS_MAPPING_ID,
3543 	TRX_ID,
3544 	TAX_REGIME_CODE
3545 from ZX_TRX_PRE_PROC_OPTIONS_GT;
3546 
3547 Begin
3548 If (g_docment_type_id is null) then
3549 	open error_exception_cursor;
3550 	fetch error_exception_cursor
3551 	into g_docment_type_id,
3552 	     g_trasaction_id,
3553 	     g_tax_regime_code;
3554 
3555 close error_exception_cursor;
3556 
3557 end if;
3558 
3559 
3560 G_MESSAGES_TBL.DOCUMENT_TYPE_ID(err_count)		:= g_docment_type_id;
3561 G_MESSAGES_TBL.TRANSACTION_ID(err_count)		:= g_trasaction_id;
3562 G_MESSAGES_TBL.COUNTRY_CODE(err_count)			:= g_tax_regime_code;
3563 G_MESSAGES_TBL.TRANSACTION_LINE_ID(err_count)		:= g_transaction_line_id;
3564 G_MESSAGES_TBL.TRX_LEVEL_TYPE(err_count)	        := g_trx_level_type;
3565 G_MESSAGES_TBL.ERROR_MESSAGE_TYPE(err_count)		:= 'ERROR';
3566 G_MESSAGES_TBL.ERROR_MESSAGE_STRING(err_count)		:= p_error_string;
3567 
3568 err_count :=err_count+1;
3569 
3570 End ERROR_EXCEPTION_HANDLE;
3571 
3572 PROCEDURE initialize IS
3573 l_synonym_name user_synonyms.synonym_name%TYPE;
3574 l_table_owner		varchar2(20);
3575 l_table_name		varchar2(20);
3576 l_column_name		varchar2(20);
3577 l_column_position 	number;
3578 l_no_index		boolean;
3579 
3580 CURSOR taxware_index(p_table_name in VARCHAR2, p_table_owner in VARCHAR2) is
3581   select column_name, column_position
3582   from   all_ind_columns
3583   where  table_name = p_table_name and table_owner = p_table_owner;
3584 
3585 l_api_name  CONSTANT VARCHAR2(100) := 'INITIALIZE';
3586 BEGIN
3587 
3588 
3589  l_synonym_name := 'ZX_TAX_TAXWARE_AUDIT_HEADER';
3590 
3591 
3592   BEGIN
3593      IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3594        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
3595      END IF;
3596      SELECT table_owner, table_name into l_table_owner, l_table_name
3597      FROM   user_synonyms
3598      WHERE  synonym_name = l_synonym_name;
3599      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3600 	    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3601 	   'table_owner :'|| l_table_owner);
3602 	    FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3603 	   'table_name  :'|| l_table_name);
3604      END IF;
3605 
3606      open taxware_index(l_table_name, l_table_owner);
3607      LOOP
3608         fetch taxware_index into l_column_name, l_column_position;
3609 
3610         if taxware_index%notfound then
3611 	   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3612 	     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3613 	     'No index on ZX_TAX_TAXWARE_AUDIT_HEADER.ORACLEID.');
3614 	   END IF;
3615            l_no_index := TRUE;
3616            exit;
3617         end if;
3618 
3619         if upper(l_column_name) = 'ORACLEID' and nvl(l_column_position, 1) = 1 then
3620            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3621 	     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3622 	     'Indexed on ZX_TAX_TAXWARE_AUDIT_HEADER.ORACLEID.');
3623 	   END IF;
3624 	   l_no_index := FALSE;
3625            exit;
3626         end if;
3627      END LOOP;
3628      close taxware_index;
3629 
3630      EXCEPTION
3631   	WHEN NO_DATA_FOUND then
3632 	  IF (g_level_exception >= g_current_runtime_level ) THEN
3633                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
3634                           'ZX_TAX_TAXWARE.INITIALIZE: NO_DATA_FOUND');
3635           END IF;
3636     	  l_no_index := TRUE;
3637 
3638 	WHEN OTHERS then
3639 	  IF (g_level_exception >= g_current_runtime_level ) THEN
3640                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
3641                           'ZX_TAX_TAXWARE.INITIALIZE: OTHERS');
3642           END IF;
3643 
3644 	  l_no_index := TRUE;
3645      END;
3646 
3647 
3648      IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3649        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
3650      END IF;
3651 
3652 EXCEPTION
3653   when OTHERS then
3654       IF (g_level_exception >= g_current_runtime_level ) THEN
3655                   FND_LOG.STRING(g_level_exception,G_PKG_NAME||'.'||l_api_name,
3656                           'EXCEPTION(OTHERS): ZX_TAX_TAXWARE.initialize()');
3657       END IF;
3658       RAISE;
3659 END initialize;
3660 
3661 PROCEDURE CREATE_TAX_LINE(
3662 p_tax     in varchar2,
3663 p_amount  in number,
3664 x_return_status OUT NOCOPY VARCHAR2) IS
3665 
3666  l_api_name           CONSTANT VARCHAR2(30) := 'CREATE_TAX_LINE';
3667  l_return_Status               VARCHAR2(30);
3668  return_code			 boolean;
3669  l_TaxLink                     ZX_TAX_TAXWARE_GEN.TaxParm;
3670  l_JurLink                     ZX_TAX_TAXWARE_GEN.JurParm;
3671  l_OraLink                     ZX_TAX_TAXWARE_GEN.t_OraParm;
3672  input_param_flag	       boolean;
3673  l_precision             number;
3674  l_mau                   number;
3675  l_rounding_rule         varchar2(30);
3676  l_error_buffer          varchar2(200);
3677 BEGIN
3678    x_return_status := FND_API.G_RET_STS_SUCCESS;
3679 
3680    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3681       FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3682    END IF;
3683 
3684 /* For Tax only Credit Memo and Tax only adjustment, user does not enter the
3685    tax lines manually. Instead, the tax lines are calculated/prorated by eBTax.
3686    The number of tax lines for the trx line can be known.
3687    Hence, we can consoliate all the tax lines and make 1 call to Vertex engine.
3688    The ELSE clause of this IF statement handles the manually entered tax lines.
3689 */
3690    IF l_document_type in ('TAX_ONLY_CREDIT_MEMO'
3691                          ,'TAX_ONLY_ADJUSTMENT') THEN
3692 
3693       g_line_level_action:='CREATE';
3694 
3695       IF (p_tax='STATE') THEN
3696          g_StTaxAmt := p_amount;
3697       ELSIF (p_tax='COUNTY') THEN
3698          g_CoTaxAmt := p_amount;
3699       ELSIF (p_tax='CITY') THEN
3700          g_CiTaxAmt := p_amount;
3701       ELSIF (p_tax='LOCATION') THEN
3702          BEGIN
3703           SELECT global_attribute2, global_attribute4, global_attribute6, tax_amt,
3704                  precision, minimum_accountable_unit, rounding_rule_code
3705           INTO g_StTaxAmt, g_CoTaxAmt, g_CiTaxAmt, g_TotalTaxAmt,
3706                l_precision, l_mau, l_rounding_rule
3707           FROM zx_lines
3708           WHERE application_id = NVL2(pg_adj_doc_doc_type_id_tab(I),222, NULL)
3709           AND entity_code = NVL2(pg_adj_doc_doc_type_id_tab(I),'TRANSACTIONS',NULL)
3710           AND event_class_code = decode(pg_adj_doc_doc_type_id_tab(I), 4, 'INVOICE',
3711                                                                        5, 'DEBIT_MEMO',
3712                                                                        6, 'CREDIT_MEMO', null)
3713           AND trx_id = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_trx_id_tab(I), NULL)
3714           AND trx_line_id = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_line_id_tab(I), NULL)
3715           AND trx_level_type = NVL2(pg_adj_doc_doc_type_id_tab(I),pg_adj_doc_trx_lev_type_tab(I), NULL);
3716         EXCEPTION
3717           WHEN OTHERS THEN
3718             IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
3719               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,
3720                              'Error occured while fetching amounts from Adjusted Doc. '||SQLERRM);
3721             END IF;
3722             g_StTaxAmt := 0;
3723             g_CoTaxAmt := 0;
3724             g_CiTaxAmt := 0;
3725         END;
3726 
3727         IF g_TotalTaxAmt = 0 THEN
3728           g_StTaxAmt := 0;
3729           g_CoTaxAmt := 0;
3730           g_CiTaxAmt := 0;
3731         ELSE
3732           g_StTaxAmt := g_StTaxAmt * (p_amount/ g_TotalTaxAmt);
3733           g_CoTaxAmt := g_CoTaxAmt * (p_amount/ g_TotalTaxAmt);
3734           g_CiTaxAmt := g_CiTaxAmt * (p_amount/ g_TotalTaxAmt);
3735           g_TotalTaxAmt := p_amount;
3736         END IF;
3737 
3738         g_StTaxAmt := ZX_TDS_TAX_ROUNDING_PKG.round_tax(g_StTaxAmt,
3739                                                         l_rounding_rule,
3740                                                         l_mau,
3741                                                         l_precision,
3742                                                         x_return_status,
3743                                                         l_error_buffer
3744                                                         );
3745         g_CoTaxAmt := ZX_TDS_TAX_ROUNDING_PKG.round_tax(g_CoTaxAmt,
3746                                                         l_rounding_rule,
3747                                                         l_mau,
3748                                                         l_precision,
3749                                                         x_return_status,
3750                                                         l_error_buffer
3751                                                         );
3752         g_CiTaxAmt := p_amount - (g_StTaxAmt + g_CoTaxAmt);
3753       END IF;
3754 
3755       IF NOT l_trx_line_context_changed THEN
3756          RETURN;
3757       END IF;
3758 
3759       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3760          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
3761                         'Encountered the last tax line for the trx line.');
3762       END IF;
3763 
3764    ELSE
3765 
3766       IF l_document_type IN ('TAX_ONLY_INVOICE') THEN
3767          g_line_level_action:='CREATE';
3768       ELSE
3769          g_line_level_action:='DELETE';
3770          l_document_type := 'TAX_LINE_SYNC';
3771       END IF;
3772 
3773       IF (p_tax='STATE') THEN
3774          g_TotalTaxAmt := p_amount;
3775 	 g_StTaxAmt := p_amount;
3776          g_CoTaxAmt := 0;
3777          g_CiTaxAmt := 0;
3778       ELSIF (p_tax='COUNTY') THEN
3779          g_TotalTaxAmt := p_amount;
3780 	 g_StTaxAmt := 0;
3781          g_CoTaxAmt := p_amount;
3782          g_CiTaxAmt := 0;
3783       ELSIF (p_tax='CITY') THEN
3784          g_TotalTaxAmt := p_amount;
3785 	 g_StTaxAmt := 0;
3786          g_CoTaxAmt := 0;
3787          g_CiTaxAmt := p_amount;
3788       ELSIF (p_tax='LOCATION') THEN
3789          g_TotalTaxAmt := p_amount;
3790          g_StTaxAmt := 0;
3791          g_CoTaxAmt := 0;
3792          g_CiTaxAmt := 0;
3793          /* Ideally, we should implement g_StTaxAmt := p_amount * GA_2 / (GA_2 + GA_4 + GA_6)
3794                                          g_CoTaxAmt := p_amount * GA_4 / (GA_2 + GA_4 + GA_6)
3795                                          g_CiTaxAmt := p_amount * GA_6 / (GA_2 + GA_4 + GA_6)
3796             With above implementation we are relying on Vertex to distribute amounts */
3797       END IF;
3798 
3799    END IF;
3800 
3801    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3802       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax : '||p_tax );
3803       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_amount : '||p_amount);
3804       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_StTaxAmt : '||g_StTaxAmt);
3805       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_CoTaxAmt : '||g_CoTaxAmt);
3806       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_CiTaxAmt : '||g_CiTaxAmt);
3807       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'g_TotalTaxAmt : '||g_TotalTaxAmt);
3808    END IF;
3809 
3810 
3811    return_code := Set_Parameters(l_TaxLink, l_JurLink, l_OraLink);
3812    input_param_flag := TRUE;
3813    dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
3814    if(return_code = TRUE) then
3815 		     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3816 			FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Calling CALCULATE_TAX procedure' );
3817 		     END IF;
3818 
3819 		     return_code := calculate_tax(l_TaxLink, l_JurLink, l_OraLink);
3820 		     input_param_flag := FALSE;
3821 		     dump_vendor_rec(l_TaxLink, l_JurLink, l_OraLink,input_param_flag);
3822 		     IF (return_code = FALSE) then
3823 		         x_return_status := FND_API.G_RET_STS_ERROR; --13533328
3824 			 g_string :='Failed in CALCULATE_TAX procedure';
3825 			 error_exception_handle(g_string);
3826 	 		return;
3827 		     END IF;
3828    else
3829 		     x_return_status := FND_API.G_RET_STS_ERROR;
3830 		     g_string :='Failed in SET_PRAMETERS procedure';
3831 		     error_exception_handle(g_string);
3832 		     return;
3833    end if;
3834 
3835 
3836         g_StTaxAmt:= 0;
3837         g_CoTaxAmt:= 0;
3838         g_CiTaxAmt:= 0;
3839    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3840      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3841    END IF;
3842 
3843 EXCEPTION
3844   WHEN OTHERS THEN
3845     l_error_buffer := SUBSTRB(SQLERRM,1,200);
3846     IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
3847       FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name||'.ERROR',l_error_buffer);
3848     END IF;
3849     RAISE;
3850 END CREATE_TAX_LINE;
3851 
3852 Procedure get_doc_and_ext_att_info(p_evnt_cls_mapping_id IN  ZX_EVNT_CLS_MAPPINGS.event_class_mapping_id%type,
3853                                    p_transaction_id      IN  ZX_LINES.trx_id%type,
3854                                    p_transaction_line_id IN  ZX_LINES.trx_line_id%type,
3855                                    p_trx_level_type      IN  ZX_LINES.trx_level_type%type,
3856                                    p_regime_code         IN  ZX_LINES.tax_regime_code%type,
3857                                    p_tax_provider_id     IN  ZX_LINES.tax_provider_id%type,
3858                                    x_return_status   OUT NOCOPY VARCHAR2 ) is
3859 
3860  trx_line_dist_tbl       ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl%type;
3861  event_class_rec         ZX_API_PUB.event_class_rec_type;
3862  l_return_status         varchar2(30);
3863  l_APPLICATION_ID        number;
3864  l_ENTITY_CODE          varchar2(20);
3865  l_EVENT_CLASS_CODE     varchar2(20);
3866  l_TRX_ID               number;
3867  l_TRX_LINE_ID          number;
3868  l_TRX_LEVEL_TYPE       varchar2(20);
3869 
3870  l_api_name           CONSTANT VARCHAR2(30) := 'GET_DOC_AND_EXT_ATT_INFO';
3871 Begin
3872  x_return_status := FND_API.G_RET_STS_SUCCESS;
3873 
3874    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3875      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3876    END IF;
3877 
3878    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3879        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_transaction_id : '||p_transaction_id );
3880        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_transaction_line_id : '||p_transaction_line_id);
3881        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_regime_code : '||p_regime_code);
3882        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax_provider_id : '||p_tax_provider_id);
3883    END IF;
3884 
3885 Begin
3886   select
3887         APPLICATION_ID,
3888         ENTITY_CODE      ,
3889         EVENT_CLASS_CODE,
3890         TRX_ID ,
3891         TRX_LINE_ID,
3892         TRX_LEVEL_TYPE
3893   into
3894         l_APPLICATION_ID,
3895         l_ENTITY_CODE      ,
3896         l_EVENT_CLASS_CODE,
3897         l_TRX_ID ,
3898         l_TRX_LINE_ID,
3899         l_TRX_LEVEL_TYPE
3900   From  zx_lines_det_factors
3901  where
3902                 event_class_mapping_id  = p_evnt_cls_mapping_id
3903       AND       trx_id                  = p_transaction_id
3904       AND       trx_line_id             = p_transaction_line_id
3905       AND       trx_level_type          = p_trx_level_type;
3906 
3907 Exception
3908   When no_data_found then
3909             IF (g_level_exception >= g_current_runtime_level ) THEN
3910                FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3911             End if;
3912             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3913             g_string :='No data found in zx_lines_det_factors ';
3914             error_exception_handle(g_string);
3915             return;
3916  End;
3917 
3918 
3919 trx_line_dist_tbl.application_id(1)     :=l_APPLICATION_ID;
3920 trx_line_dist_tbl.TRX_LINE_ID(1)        :=l_TRX_LINE_ID;
3921 trx_line_dist_tbl.TRX_LEVEL_TYPE(1)     :=l_TRX_LEVEL_TYPE;
3922 
3923 event_class_rec.APPLICATION_ID          :=l_APPLICATION_ID;
3924 event_class_rec.ENTITY_CODE             :=l_ENTITY_CODE;
3925 event_class_rec.EVENT_CLASS_CODE        :=l_EVENT_CLASS_CODE;
3926 event_class_rec.TRX_ID                  :=l_TRX_ID;
3927 --event_class_rec.TRX_LINE_ID             :=l_TRX_LINE_ID;
3928 
3929 
3930   zx_r11i_tax_partner_pkg.copy_trx_line_for_ptnr_bef_upd
3931      (p_trx_line_dist_tbl       => trx_line_dist_tbl,
3932       p_event_class_rec         => event_class_rec,
3933       p_update_index            => 1,
3934       p_trx_copy_for_tax_update => 'N' ,
3935       p_regime_code             => p_regime_code,
3936       p_tax_provider_id         => p_tax_provider_id,
3937       x_return_status           => l_return_status);
3938 
3939       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3940            IF (g_level_exception >= g_current_runtime_level ) THEN
3941                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
3942            END IF;
3943            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3944            g_string :='Not able to copy the line information :Failed with an exception';
3945            error_exception_handle(g_string);
3946            return;
3947       END IF;
3948  IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3949      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
3950    END IF;
3951 
3952 END get_doc_and_ext_att_info;
3953 
3954 Function CHECK_IN_CACHE(p_internal_organization_id number,
3955                         P_document_type_id number,
3956                         p_transaction_id number,
3957                         p_transaction_line_id number) return boolean is
3958 
3959 l_index number;
3960 l_api_name           CONSTANT VARCHAR2(30) := 'CHECK_IN_CACHE';
3961 Begin
3962 
3963    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
3964      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
3965    END IF;
3966 
3967    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3968        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_INTERNAL_ORGANIZATION_ID : ' || p_internal_organization_id );
3969        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_DOCUMENT_TYPE_ID : '|| P_document_type_id);
3970        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_TRANSACTION_ID : '|| p_transaction_id);
3971        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'P_TRANSACTION_LINE_ID : '|| p_transaction_line_id);
3972    END IF;
3973 
3974 For l_index in 1 .. cache_index loop
3975   if(cache_table(l_index).internal_organization_id = p_internal_organization_id and
3976      cache_table(l_index).document_type_id       = P_document_type_id and
3977      cache_table(l_index).transaction_id         = p_transaction_id and
3978      cache_table(l_index).transaction_line_id    = p_transaction_line_id) then
3979 
3980      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3981        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Found in the Cache' );
3982      END IF;
3983 
3984      Return TRUE;
3985   end if;
3986  end loop;
3987      cache_index                :=cache_index+1;
3988      cache_table(cache_index).internal_organization_id  := p_internal_organization_id;
3992 
3989      cache_table(cache_index).document_type_id          := P_document_type_id;
3990      cache_table(cache_index).transaction_id            := p_transaction_id;
3991      cache_table(cache_index).transaction_line_id       := p_transaction_line_id;
3993      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
3994        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Not Found in the Cache' );
3995      END IF;
3996 
3997      return FALSE;
3998 
3999 IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4000      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4001     END IF;
4002 End Check_in_cache;
4003 
4004 PROCEDURE POPULATE_SYNC_TAX_AMTS(p_sync_tax_cnt          IN  NUMBER
4005                                , p_tax                   IN  zx_lines.tax%type
4006                                , x_output_sync_tax_lines OUT NOCOPY zx_tax_partner_pkg.output_sync_tax_lines_tbl_type
4007                                , x_return_status         OUT NOCOPY VARCHAR2) IS
4008 
4009  l_api_name             CONSTANT VARCHAR2(30) := 'POPULATE_SYNC_TAX_AMTS';
4010 
4011 BEGIN
4012    x_return_status := FND_API.G_RET_STS_SUCCESS;
4013 
4014    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4015      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'(+)');
4016    END IF;
4017 
4018    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4019        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_sync_tax_cnt : '||p_sync_tax_cnt);
4020        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'p_tax : '||p_tax);
4021    END IF;
4022 
4023 /* For Tax only Credit Memo and Tax only adjustment, we consoliate all the tax lines and make 1 call to Vertex engine.
4024    The output is available at the end of the processing of the last tax line.
4025    l_trx_line_context_changed indicates that the tax line being processed is the last tax line for the trx line.
4026 */
4027    IF l_document_type in ('TAX_ONLY_CREDIT_MEMO'
4028                          ,'TAX_ONLY_ADJUSTMENT') THEN
4029       IF (p_tax = 'STATE') THEN
4030          l_state_tax_cnt := p_sync_tax_cnt;
4031       ELSIF(p_tax = 'COUNTY') THEN
4032          l_county_tax_cnt := p_sync_tax_cnt;
4033       ELSIF(p_tax = 'CITY') THEN
4034          l_city_tax_cnt := p_sync_tax_cnt;
4035       END IF;
4036       IF l_trx_line_context_changed THEN
4037          IF l_state_tax_cnt IS NOT NULL THEN
4038 --          x_output_sync_tax_lines(l_state_tax_cnt).TAX_RATE_PERCENTAGE  := l_TaxLink.StaTxRate*100;
4039 --          x_output_sync_tax_lines(l_state_tax_cnt).TAXABLE_AMOUNT       := l_TaxLink.StBasisAmt;
4040           null;
4041          END IF;
4042          IF l_county_tax_cnt IS NOT NULL THEN
4043     --        x_output_sync_tax_lines(l_county_tax_cnt).TAX_RATE_PERCENTAGE := l_TaxLink.CnTxRate *100;
4044       --      x_output_sync_tax_lines(l_county_tax_cnt).TAXABLE_AMOUNT      := l_TaxLink.CntyBasisAmt;
4045 	    null;
4046          END IF;
4047          IF l_city_tax_cnt IS NOT NULL THEN
4048   --          x_output_sync_tax_lines(l_city_tax_cnt).TAX_RATE_PERCENTAGE   := l_TaxLink.LoTxRate*100;
4049 --            x_output_sync_tax_lines(l_city_tax_cnt).TAXABLE_AMOUNT        := l_TaxLink.CityBasisAmt;
4050 	    null;
4051          END IF;
4052          l_state_tax_cnt := null;
4053          l_county_tax_cnt := null;
4054          l_city_tax_cnt := null;
4055       ELSE
4056          RETURN;
4057       END IF;
4058    ELSE
4059       IF (p_tax = 'STATE') THEN
4060        --  x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := l_TaxLink.StaTxRate*100;
4061          --x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := l_TaxLink.StBasisAmt;
4062 	 null;
4063       ELSIF(p_tax = 'COUNTY') THEN
4064 --         x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := l_TaxLink.CnTxRate *100;
4065 --         x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := l_TaxLink.CntyBasisAmt;
4066          null;
4067       ELSIF(p_tax = 'CITY') THEN
4068 --         x_output_sync_tax_lines(p_sync_tax_cnt).TAX_RATE_PERCENTAGE    := l_TaxLink.LoTxRate*100;
4069 --         x_output_sync_tax_lines(p_sync_tax_cnt).TAXABLE_AMOUNT         := l_TaxLink.CityBasisAmt;
4070          null;
4071       END IF;
4072    END IF;
4073 
4074 END POPULATE_SYNC_TAX_AMTS;
4075 
4076 
4077 Procedure SYNCHRONIZE_TAXWARE_REPOSITORY
4078 	(x_output_sync_tax_lines OUT NOCOPY zx_tax_partner_pkg.output_sync_tax_lines_tbl_type,
4079    	 x_return_status         OUT NOCOPY varchar2,
4080    	 x_messages_tbl          OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type) is
4081 	 l_api_name     CONSTANT VARCHAR2(100) := 'SYNCHRONIZE_TAXWARE_REPOSITORY';
4082 CURSOR TAX_LINES_TO_BE_PROCESSED is
4083    SELECT
4084          DOCUMENT_TYPE_ID           ,
4085          TRANSACTION_ID             ,
4086          TRANSACTION_LINE_ID        ,
4087          TRX_LEVEL_TYPE             ,
4088          COUNTRY_CODE               ,
4089          TAX                        ,
4090          SITUS                      ,
4091          TAX_JURISDICTION           ,
4092          TAX_CURRENCY_CODE          ,
4093          TAX_AMOUNT                 ,
4094          TAX_CURR_TAX_AMT           ,
4095          TAX_RATE_PERCENTAGE        ,
4096          TAXABLE_AMOUNT             ,
4097          EXEMPT_RATE_MODIFIER       ,
4098          EXEMPT_REASON              ,
4099          TAX_ONLY_LINE_FLAG         ,
4100          INCLUSIVE_TAX_LINE_FLAG    ,
4101          USE_TAX_FLAG               ,
4102          EBIZ_OVERRIDE_FLAG         ,
4103          USER_OVERRIDE_FLAG         ,
4104          LAST_MANUAL_ENTRY          ,
4105          MANUALLY_ENTERED_FLAG      ,
4106          CANCEL_FLAG                ,
4107          DELETE_FLAG
4108     FROM ZX_SYNC_TAX_LINES_INPUT_V
4109     ORDER BY DOCUMENT_TYPE_ID,
4110              TRANSACTION_ID,
4111              TRANSACTION_LINE_ID,
4112              TRX_LEVEL_TYPE;
4113 
4114 
4115 SYNC_TAX_LINES SYNC_TAX_LINES_TBL;
4116 l_internal_organization_id      ZX_SYNC_HDR_INPUT_V.internal_organization_id%type;
4117 l_document_type_id              ZX_SYNC_HDR_INPUT_V.document_type_id%type;
4118 l_transaction_id                ZX_SYNC_HDR_INPUT_V.transaction_id%type;
4119 l_legal_entity_number           ZX_SYNC_HDR_INPUT_V.legal_entity_number%type;
4120 l_establishment_number          ZX_SYNC_HDR_INPUT_V.establishment_number%type;  -- Bug 5139731
4121 l_transaction_line_id           ZX_SYNC_TAX_LINES_INPUT_V.transaction_line_id%type;
4122 --l_count number;
4123 l_event_type varchar2(20);
4124 l_write_record boolean;
4125 l_event_class_code      varchar2(20);
4126 l_application_id        number;
4127 l_entity_code           varchar2(20);
4128 l_trx_level_type        varchar2(20);
4129 l_regime_code           ZX_REGIMES_B.tax_regime_code%type;
4130 l_amount  number;
4131 l_found boolean;
4132 l_return_status varchar2(30);
4133 ctrx_id NUMBER;
4134 l_trx_number    VARCHAR2(150);
4135 l_statements    VARCHAR2(2000);
4136 
4137 
4138   l_neg_tax_line_count NUMBER;       -- Added for Bug#12544630
4139   l_neg_trx_line_count NUMBER;       -- Added for Bug#12544630
4140   l_update_mode        BOOLEAN;      -- Added for Bug#12544630
4141 
4142 
4143 BEGIN
4144  x_return_status := FND_API.G_RET_STS_SUCCESS;
4145 
4146     IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4147        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
4148     END IF;
4149 
4150   IF ZX_API_PUB.G_PUB_SRVC <> 'SYNCHRONIZE_TAX_REPOSITORY' THEN
4151 
4152     BEGIN
4153       SELECT internal_organization_id,
4154              document_type_id,
4155              transaction_id,
4156              legal_entity_number,
4157              establishment_number
4158         INTO l_internal_organization_id,
4159              l_document_type_id,
4160              l_transaction_id,
4161              l_legal_entity_number,
4162              l_establishment_number    -- Bug 5139731
4163         FROM ZX_SYNC_HDR_INPUT_V;
4164    EXCEPTION
4165       WHEN TOO_MANY_ROWS THEN
4166          IF (g_level_exception >= g_current_runtime_level ) THEN
4167             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4168          End if;
4169          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4170          g_string :='More than one row exist at header level';
4171          error_exception_handle(g_string);
4172          RETURN;
4173    END;
4174 
4175    IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4176       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4177          'Transaction_id = ' || l_transaction_id);
4178    END IF;
4179 
4180    OPEN tax_lines_to_be_processed;
4181 
4182    FETCH tax_lines_to_be_processed BULK COLLECT INTO
4183       SYNC_TAX_LINES.document_type_id           ,
4184       SYNC_TAX_LINES.transaction_id             ,
4185       SYNC_TAX_LINES.transaction_line_id        ,
4186       SYNC_TAX_LINES.trx_level_type           ,
4187       SYNC_TAX_LINES.country_code               ,
4188       SYNC_TAX_LINES.tax                        ,
4189       SYNC_TAX_LINES.situs                      ,
4190       SYNC_TAX_LINES.tax_jurisdiction           ,
4191       SYNC_TAX_LINES.tax_currency_code  ,
4192       SYNC_TAX_LINES.tax_curr_tax_amount        ,
4193       SYNC_TAX_LINES.tax_amount         ,
4194       SYNC_TAX_LINES.tax_rate_percentage        ,
4195       SYNC_TAX_LINES.taxable_amount             ,
4196       SYNC_TAX_LINES.exempt_rate_modifier       ,
4197       SYNC_TAX_LINES.exempt_reason              ,
4198       SYNC_TAX_LINES.tax_only_line_flag ,
4199       SYNC_TAX_LINES.inclusive_tax_line_flag    ,
4200       SYNC_TAX_LINES.use_tax_flag               ,
4201       SYNC_TAX_LINES.ebiz_override_flag ,
4202       SYNC_TAX_LINES.user_override_flag ,
4203       SYNC_TAX_LINES.last_manual_entry  ,
4204       SYNC_TAX_LINES.manually_entered_flag      ,
4205       SYNC_TAX_LINES.cancel_flag                ,
4206       SYNC_TAX_LINES.delete_flag;
4207 
4208    I := 0;
4209    BEGIN
4210       SELECT event_class_code
4211            , application_id
4212            , entity_code
4213         INTO l_event_class_code
4214            , l_application_id
4215            , l_entity_code
4216         FROM zx_evnt_cls_mappings
4217        WHERE EVENT_CLASS_MAPPING_ID = SYNC_TAX_LINES.document_type_id(1);
4218     EXCEPTION
4219      WHEN OTHERS THEN
4220        l_event_class_code := NULL;
4221        l_application_id := NULL;
4222        l_entity_code := NULL;
4223 
4224    END;
4225 
4226      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4227        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4228             'Document_Type : ' || l_document_type);
4229         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4230             'Opening tax line processing loop first time');
4231      END IF;
4232 
4233 
4234    FOR sync_tax_cnt IN 1..sync_tax_lines.document_type_id.last LOOP
4235 
4236 /* Maintain the trx line counter. The tax lines are fetched together for a transaction_line_id.
4237    For Tax only documents, we need to know the last tax line being fetch so that all the tax lines can be consolidated and passed as one record */
4238 
4239       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4240          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4241             ' SYNC_TAX_LINES.transaction_line_id(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt));
4242          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4243             ' SYNC_TAX_LINES.tax(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.tax(sync_tax_cnt));
4244          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4248       END IF;
4245             ' SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt));
4246           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4247              'SYNC_TAX_LINES.document_type_id(' || sync_tax_cnt || ') = ' || SYNC_TAX_LINES.document_type_id(sync_tax_cnt));
4249 
4250       IF nvl(l_transaction_line_id, -999) <> SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt) THEN
4251          I := I+1;
4252          l_transaction_line_id := SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4253       END IF;
4254       IF sync_tax_cnt = sync_tax_lines.document_type_id.last THEN
4255          l_trx_line_context_changed := TRUE;
4256       ELSE
4257          IF l_transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt+1) THEN
4258             l_trx_line_context_changed := FALSE;
4259          ELSE
4260             l_trx_line_context_changed := TRUE;
4261          END IF;
4262       END IF;
4263 
4264         l_neg_tax_line_count := 0;
4265         l_neg_trx_line_count := 0;
4266 
4267         -- Start : Identify Tax event type --
4268       BEGIN
4269          SELECT count(*)
4270            INTO l_neg_tax_line_count
4271            FROM ZX_PTNR_NEG_TAX_LINE_GT
4272           WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4273             AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4274             AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt)
4275             AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt)
4276             AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt)
4277             AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt);
4278       EXCEPTION
4279          WHEN OTHERS THEN
4280             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4281                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4282                   ' Error while accessing ZX_PTNR_NEG_TAX_LINE_GT');
4283             END IF;
4284       END;
4285 
4286       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4287          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4288             ' No of records in ZX_PTNR_NEG_TAX_LINE_GT = ' || l_neg_tax_line_count);
4289       END IF;
4290 
4291         -- Added the code to get the count from ZX_PTNR_NEG_LINE_GT to handle
4292         -- UPDATE event. Code changed for Bug#12544630
4293         -- Start --
4294         BEGIN
4295           SELECT COUNT(*)
4296             INTO l_neg_trx_line_count
4297             FROM ZX_PTNR_NEG_LINE_GT
4298            WHERE event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4299              AND trx_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4300              AND trx_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4301         EXCEPTION
4302           WHEN OTHERS THEN
4303             IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4304                FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4305                   ' Error while accessing ZX_PTNR_NEG_LINE_GT');
4306             END IF;
4307         END;
4308 
4309         IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4310           FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4311              ' No of records in ZX_PTNR_NEG_LINE_GT = ' || l_neg_trx_line_count);
4312         END IF;
4313         -- End --
4314 
4315         -- Check if the Line is present in ZX_PTNR_NEG_TAX_LINE_GT table.
4316         -- Deleted line is passed thru zx_sync_tax_lines_input_v and there is
4317         -- no corresponding line in ZX_PTNR_NEG_TAX_LINE_GT
4318 
4319         -- Changed logic to set the event type
4320         -- Code changed for Bug#12544630
4321         -- Start --
4322 
4323         IF (l_neg_tax_line_count = 1 OR l_neg_trx_line_count = 1) THEN  -- Line is present. Hence, it is an UPDATE action --
4324           l_event_type  := 'TAX_LINE_UPDATE';
4325           l_update_mode := TRUE;
4326         ELSIF (l_neg_tax_line_count = 0 AND l_neg_trx_line_count = 0) THEN
4327           IF (SYNC_TAX_LINES.delete_flag(sync_tax_cnt) ='Y') THEN -- Delete action --
4328             l_event_type := 'TAX_LINE_DELETE';
4329           ELSE
4330             l_event_type := 'TAX_LINE_CREATE';
4331           END IF;
4332         ELSE
4333           x_return_status :=FND_API.G_RET_STS_ERROR;
4334           g_string := 'There were more than one tax/trx lines';
4335 
4336           IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
4337             FND_LOG.STRING(G_LEVEL_EXCEPTION,
4338                            G_MODULE_NAME||l_api_name,
4339                            g_string);
4340           END IF;
4341           --error_exception_handle(g_string);
4342           RETURN;
4343         END IF;
4344         -- End --
4345 
4346 
4347       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4348          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4349             ' l_event_type ' || l_event_type);
4350          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4351             ' pg_trx_id_tab(I) ' || pg_trx_id_tab(I));
4352       END IF;
4353 	    get_doc_and_ext_att_info(SYNC_TAX_LINES.document_type_id(sync_tax_cnt),
4354                                      SYNC_TAX_LINES.transaction_id(sync_tax_cnt),
4355                                      SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt),
4356                                      SYNC_TAX_LINES.trx_level_type(sync_tax_cnt),
4357                                      SYNC_TAX_LINES.country_code(sync_tax_cnt),
4358                                      1,l_return_status);
4359             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4360                IF (g_level_exception >= g_current_runtime_level ) THEN
4364                g_string :='Failed in GET_DOC_AND_EXT_ATT_INFO procedure';
4361                   FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4362                END IF;
4363                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4365                error_exception_handle(g_string);
4366                RETURN;
4367             END IF;
4368       --END IF;
4369 
4370       IF (l_event_type='TAX_LINE_UPDATE') THEN
4371       /*Taxware does not have this feature*/
4372       --x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4373       --g_string :='Unable to perform with Taxware';
4374       --error_exception_handle(g_string);
4375 
4376           IF l_neg_tax_line_count = 1 THEN
4377             BEGIN
4378               SELECT tax_amount
4379                 INTO l_amount
4380                 FROM ZX_PTNR_NEG_TAX_LINE_GT
4381                WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt)
4382                  AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt)
4383                  AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt)
4384                  AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt)
4385                  AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt)
4386                  AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt);
4387             END;
4388           ELSIF l_neg_trx_line_count = 1 THEN
4389             l_amount := SYNC_TAX_LINES.tax_amount(sync_tax_cnt);
4390           END IF;
4391 
4392           IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4393              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4394                 'l_amount : ' || l_amount);
4395           END IF;
4396 
4397           create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),-1*l_amount,l_return_status);
4398           -- Commented the following call and moved out of this loop
4399           -- and will be processed in separate loop. Code changed for Bug#12544630
4400           -- create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),SYNC_TAX_LINES.tax_amount(sync_tax_cnt),l_return_status);
4401           l_write_record:=TRUE;
4402       ELSIF(l_event_type='TAX_LINE_DELETE')then
4403             select tax_amount
4404               into l_amount
4405               from ZX_PTNR_NEG_TAX_LINE_GT
4406              where trx_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt) and
4407                    trx_line_id  = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt);
4408 
4409          create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),-1*l_amount,l_return_status);
4410          l_write_record:=false;
4411 
4412       ELSIF (l_event_type='TAX_LINE_CREATE') THEN
4413             create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt),SYNC_TAX_LINES.tax_amount(sync_tax_cnt),l_return_status);
4414             l_write_record:=true;
4415       END IF;
4416 
4417       IF (l_write_record and l_trx_line_context_changed) THEN
4418          x_output_sync_tax_lines(sync_tax_cnt).INTERNAL_ORGANIZATION_ID  := l_internal_organization_id;
4419          x_output_sync_tax_lines(sync_tax_cnt).LEGAL_ENTITY_NUMBER       := l_legal_entity_number;
4420          x_output_sync_tax_lines(sync_tax_cnt).ESTABLISHMENT_NUMBER      := l_establishment_number;  -- Bug 5139731
4421          x_output_sync_tax_lines(sync_tax_cnt).DOCUMENT_TYPE_ID          := SYNC_TAX_LINES.document_type_id(sync_tax_cnt);
4422          x_output_sync_tax_lines(sync_tax_cnt).APPLICATION_ID            := l_application_id;
4423          x_output_sync_tax_lines(sync_tax_cnt).ENTITY_CODE               := l_entity_code;
4424 	       x_output_sync_tax_lines(sync_tax_cnt).EVENT_CLASS_CODE          := l_event_class_code;
4425          x_output_sync_tax_lines(sync_tax_cnt).TRANSACTION_ID            := sync_tax_lines.transaction_id(sync_tax_cnt);
4426          x_output_sync_tax_lines(sync_tax_cnt).TRANSACTION_LINE_ID       := sync_tax_lines.transaction_line_id(sync_tax_cnt);
4427          x_output_sync_tax_lines(sync_tax_cnt).TRX_LEVEL_TYPE            := sync_tax_lines.trx_level_type(sync_tax_cnt);
4428          x_output_sync_tax_lines(sync_tax_cnt).COUNTRY_CODE              := sync_tax_lines.country_code(sync_tax_cnt);
4429          x_output_sync_tax_lines(sync_tax_cnt).TAX                       := sync_tax_lines.tax(sync_tax_cnt);
4430          x_output_sync_tax_lines(sync_tax_cnt).SITUS                     := sync_tax_lines.situs(sync_tax_cnt);
4431 
4432          populate_sync_tax_amts(sync_tax_cnt
4433                               , sync_tax_lines.tax(sync_tax_cnt)
4434                               , x_output_sync_tax_lines
4435                               , x_return_status);
4436          IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4437             IF (g_level_exception >= g_current_runtime_level ) THEN
4438                FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4439             END IF;
4440             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4441             g_string :='Failed in populate_sync_tax_amts procedure';
4442             error_exception_handle(g_string);
4443             RETURN;
4444          END IF;
4445          l_write_record := FALSE;
4446       END IF;
4447 
4448    END LOOP;
4449 
4450 
4451      -- Start : Code Added for Bug#12544630
4452      -- Insert the line with original tax amount in case of Update Mode
4453      IF (l_update_mode) THEN
4454        IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4455          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4456             'Opening tax line processing loop second time.' );
4457        END IF;
4458 
4459        l_transaction_line_id := NULL;
4460        I := 0;
4461        l_neg_tax_line_count := 0;
4462        l_neg_trx_line_count := 0;
4463        l_event_type := NULL;
4464        l_write_record := FALSE;
4465 
4466        FOR sync_tax_cnt1 IN 1..sync_tax_lines.document_type_id.last LOOP
4467 
4468          -- Opening the Tax Lines processing loop again for Update event
4469          -- to create tax lines with original amount
4470 
4471          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4472            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4473              'SYNC_TAX_LINES.transaction_line_id(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1));
4474            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4475              'SYNC_TAX_LINES.tax(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax(sync_tax_cnt1));
4476            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4477              'SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt1));
4478            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4479              'SYNC_TAX_LINES.document_type_id(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.document_type_id(sync_tax_cnt1));
4480          END IF;
4481 
4482          IF nvl(l_transaction_line_id, -999) <> SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1) THEN
4483            I := I+1;
4484            l_transaction_line_id := SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1);
4485          END IF;
4486 
4487          IF sync_tax_cnt1 = sync_tax_lines.document_type_id.LAST THEN
4488            l_trx_line_context_changed := TRUE;
4489          ELSE
4490            IF l_transaction_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1+1) THEN
4491              l_trx_line_context_changed := FALSE;
4492            ELSE
4493              l_trx_line_context_changed := TRUE;
4494            END IF;
4495          END IF;
4496 
4497          l_neg_tax_line_count := 0;
4498          l_neg_trx_line_count := 0;
4499 
4500          BEGIN
4501            SELECT COUNT(*)
4502              INTO l_neg_tax_line_count
4503              FROM ZX_PTNR_NEG_TAX_LINE_GT
4504             WHERE document_type_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt1)
4505               AND trx_id           = SYNC_TAX_LINES.transaction_id(sync_tax_cnt1)
4506               AND trx_line_id      = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1)
4507               AND country_code     = SYNC_TAX_LINES.country_code(sync_tax_cnt1)
4508               AND tax              = SYNC_TAX_LINES.tax(sync_tax_cnt1)
4509               AND situs            = SYNC_TAX_LINES.situs(sync_tax_cnt1);
4510          EXCEPTION
4511            WHEN OTHERS THEN
4512               IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4513                  FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4514                     'Error while accessing ZX_PTNR_NEG_TAX_LINE_GT');
4515               END IF;
4516          END;
4517 
4518          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4519            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4520               'No of records in ZX_PTNR_NEG_TAX_LINE_GT = ' || l_neg_tax_line_count);
4521          END IF;
4522 
4523          BEGIN
4524            SELECT COUNT(*)
4525              INTO l_neg_trx_line_count
4526              FROM ZX_PTNR_NEG_LINE_GT
4527             WHERE event_class_mapping_id = SYNC_TAX_LINES.document_type_id(sync_tax_cnt1)
4528               AND trx_id = SYNC_TAX_LINES.transaction_id(sync_tax_cnt1)
4529               AND trx_line_id = SYNC_TAX_LINES.transaction_line_id(sync_tax_cnt1);
4530          EXCEPTION
4531            WHEN OTHERS THEN
4532              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4533                 FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4534                    ' Error while accessing ZX_PTNR_NEG_LINE_GT');
4535              END IF;
4536          END;
4537 
4538          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4539            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4540               ' No of records in ZX_PTNR_NEG_LINE_GT = ' || l_neg_trx_line_count);
4541          END IF;
4542 
4543          IF (l_neg_tax_line_count = 1 OR l_neg_trx_line_count = 1) THEN  -- Line is present. Hence, it is an UPDATE action --
4544            l_event_type  := 'TAX_LINE_UPDATE';
4545          ELSIF (l_neg_tax_line_count = 0 AND l_neg_trx_line_count = 0) THEN
4546            IF (SYNC_TAX_LINES.delete_flag(sync_tax_cnt1) ='Y') THEN -- Delete action --
4547              l_event_type := 'TAX_LINE_DELETE';
4548            ELSE
4549              l_event_type := 'TAX_LINE_CREATE';
4550            END IF;
4551          ELSE
4552            x_return_status :=FND_API.G_RET_STS_UNEXP_ERROR;
4553            g_string := 'There were more than one tax/trx lines';
4554            IF ( G_LEVEL_EXCEPTION >= G_CURRENT_RUNTIME_LEVEL) THEN
4555              FND_LOG.STRING(G_LEVEL_EXCEPTION,
4556                             G_MODULE_NAME||l_api_name,
4557                             g_string);
4558            END IF;
4559            RETURN;
4560          END IF;
4561 
4562          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4563            FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4564              'l_event_type : ' || l_event_type);
4565          END IF;
4566 
4567          IF (l_event_type='TAX_LINE_UPDATE') THEN
4568            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4569              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4570                'SYNC_TAX_LINES.tax_amount(' || sync_tax_cnt1 || ') = ' || SYNC_TAX_LINES.tax_amount(sync_tax_cnt1));
4571            END IF;
4572            create_tax_line(SYNC_TAX_LINES.tax(sync_tax_cnt1),SYNC_TAX_LINES.tax_amount(sync_tax_cnt1),l_return_status);
4573            l_write_record:=TRUE;
4574          END IF;
4575 
4576          IF (l_write_record) THEN
4577            x_output_sync_tax_lines(sync_tax_cnt1).INTERNAL_ORGANIZATION_ID  := l_internal_organization_id;
4578            x_output_sync_tax_lines(sync_tax_cnt1).LEGAL_ENTITY_NUMBER       := l_legal_entity_number;
4579            x_output_sync_tax_lines(sync_tax_cnt1).ESTABLISHMENT_NUMBER      := l_establishment_number;  -- Bug 5139731
4580            x_output_sync_tax_lines(sync_tax_cnt1).DOCUMENT_TYPE_ID          := SYNC_TAX_LINES.document_type_id(sync_tax_cnt1);
4581            x_output_sync_tax_lines(sync_tax_cnt1).APPLICATION_ID            := l_application_id;
4582            x_output_sync_tax_lines(sync_tax_cnt1).ENTITY_CODE               := l_entity_code;
4583            x_output_sync_tax_lines(sync_tax_cnt1).EVENT_CLASS_CODE          := l_event_class_code;
4584            x_output_sync_tax_lines(sync_tax_cnt1).TRANSACTION_ID            := sync_tax_lines.transaction_id(sync_tax_cnt1);
4585            x_output_sync_tax_lines(sync_tax_cnt1).TRANSACTION_LINE_ID       := sync_tax_lines.transaction_line_id(sync_tax_cnt1);
4586            x_output_sync_tax_lines(sync_tax_cnt1).TRX_LEVEL_TYPE            := sync_tax_lines.trx_level_type(sync_tax_cnt1);
4587            x_output_sync_tax_lines(sync_tax_cnt1).COUNTRY_CODE              := sync_tax_lines.country_code(sync_tax_cnt1);
4588            x_output_sync_tax_lines(sync_tax_cnt1).TAX                       := sync_tax_lines.tax(sync_tax_cnt1);
4589            x_output_sync_tax_lines(sync_tax_cnt1).SITUS                     := sync_tax_lines.situs(sync_tax_cnt1);
4590 
4591            IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4592              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4593                 'x_output_sync_tax_lines(sync_tax_cnt1).internal_organization_id = ' || x_output_sync_tax_lines(sync_tax_cnt1).internal_organization_id);
4594              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4595                 'x_output_sync_tax_lines(sync_tax_cnt1).transaction_line_id = ' || x_output_sync_tax_lines(sync_tax_cnt1).transaction_line_id);
4596              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4597                 'x_output_sync_tax_lines(sync_tax_cnt1).trx_level_type = ' || x_output_sync_tax_lines(sync_tax_cnt1).trx_level_type);
4598              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4599                 'x_output_sync_tax_lines(sync_tax_cnt1).tax = ' || x_output_sync_tax_lines(sync_tax_cnt1).tax);
4600              FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4601                 'x_output_sync_tax_lines(sync_tax_cnt1).SITUS = ' || x_output_sync_tax_lines(sync_tax_cnt1).SITUS);
4602            END IF;
4603 
4604            populate_sync_tax_amts(sync_tax_cnt1
4605                               , sync_tax_lines.tax(sync_tax_cnt1)
4606                               , x_output_sync_tax_lines
4607                               , x_return_status);
4608            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4609              IF (g_level_exception >= g_current_runtime_level ) THEN
4610                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4611              END IF;
4612              x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4613              g_string :='Failed in populate_sync_tax_amts procedure';
4614              error_exception_handle(g_string);
4615              RETURN;
4616            END IF;
4617 
4618            l_write_record := FALSE;
4619          END IF;  -- IF l_write_record
4620 
4621        END LOOP;
4622      END IF;
4623      -- End : Code Added for Bug#12544630
4624 
4625 
4626   ELSE
4627     IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4628        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, ' in the update part ');
4629     END IF;
4630 
4631      BEGIN
4632        SELECT TRANSACTION_NUMBER, TRANSACTION_ID
4633        INTO l_trx_number, ctrx_id
4634        FROM ZX_SYNC_HDR_INPUT_V;
4635      EXCEPTION
4636        WHEN TOO_MANY_ROWS THEN
4637          IF (g_level_exception >= g_current_runtime_level ) THEN
4638             FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4639          End if;
4640          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4641          g_string :='More than one row exist at header level';
4642          error_exception_handle(g_string);
4643          RETURN;
4644        WHEN OTHERS THEN
4645          NULL;
4646      END;
4647      l_statements := 'UPDATE ZX_TAX_TAXWARE_AUDIT_HEADER '||
4648                      'SET INVNUM = :1' ||
4649                      ' WHERE ORACLEID = :2 ';
4650 
4651      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4652        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
4653      END IF;
4654      EXECUTE IMMEDIATE l_statements using l_trx_number,ctrx_id ;
4655      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4656        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Updated Rows in taxware table == ' || to_char(SQL%ROWCOUNT));
4657      END IF;
4658 
4659      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4660        FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'ZX_TAX_TAXWARE_AUDIT_HEADER is updated');
4661      END IF;
4662 
4663    END IF;
4664 
4665 
4666    IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4667      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'(-)');
4668    END IF;
4669 
4670 
4671 End SYNCHRONIZE_TAXWARE_REPOSITORY;
4672 
4673 Procedure GLOBAL_DOCUMENT_UPDATE
4674 	(x_transaction_rec       IN         zx_tax_partner_pkg.trx_rec_type,
4675    	 x_return_status         OUT NOCOPY varchar2,
4676    	 x_messages_tbl          OUT NOCOPY ZX_TAX_PARTNER_PKG.messages_tbl_type) is
4677  l_cnt_of_options_gt    NUMBER;
4678  l_cnt_of_hdr_extns_gt  NUMBER;
4679  l_cnt_of_line_extns_gt NUMBER;
4680  l_cnt_of_loc_info_gt   NUMBER;
4681  l_cnt_of_neg_line_gt   NUMBER;
4682  l_cnt_of_det_factors   NUMBER;
4683  l_cnt_of_trx_hdr_gt    NUMBER;
4684  l_statements    VARCHAR2(2000);
4685  l_return_status        VARCHAR2(30);
4686  l_api_name     CONSTANT VARCHAR2(100) := 'GLOBAL_DOCUMENT_UPDATE';
4687  --Bug 8576319
4688  l_doc_amount       NUMBER;
4689 BEGIN
4690   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4691        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
4692   END IF;
4693 
4694    x_return_status := FND_API.G_RET_STS_SUCCESS;
4695 
4696 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4697       BEGIN
4698          SELECT count(*)
4699            INTO l_cnt_of_det_factors
4700            FROM ZX_LINES_DET_FACTORS
4701           WHERE event_class_mapping_id = x_transaction_rec.document_type_id
4702             AND trx_id                 = x_transaction_rec.transaction_id;
4703       EXCEPTION WHEN OTHERS THEN
4704          l_cnt_of_det_factors := 0;
4705       END;
4706       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4707               'l_cnt_of_det_factors = '||l_cnt_of_det_factors);
4708       BEGIN
4709          SELECT count(*)
4710            INTO l_cnt_of_options_gt
4711            FROM ZX_TRX_PRE_PROC_OPTIONS_GT;
4712       EXCEPTION WHEN OTHERS THEN
4713          l_cnt_of_options_gt := 0;
4714       END;
4715       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4716              'l_cnt_of_options_gt = '||l_cnt_of_options_gt);
4717       BEGIN
4718          SELECT count(*)
4719            INTO l_cnt_of_hdr_extns_gt
4720            FROM ZX_PRVDR_HDR_EXTNS_GT;
4721       EXCEPTION WHEN OTHERS THEN
4722          l_cnt_of_hdr_extns_gt := 0;
4723       END;
4724       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4725              'l_cnt_of_hdr_extns_gt = '||l_cnt_of_hdr_extns_gt);
4726       BEGIN
4727          SELECT count(*)
4728            INTO l_cnt_of_line_extns_gt
4729            FROM ZX_PRVDR_HDR_EXTNS_GT;
4730       EXCEPTION WHEN OTHERS THEN
4731          l_cnt_of_line_extns_gt := 0;
4732       END;
4733       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4734              'l_cnt_of_line_extns_gt = '||l_cnt_of_line_extns_gt);
4735       BEGIN
4736          SELECT count(*)
4737            INTO l_cnt_of_loc_info_gt
4738            FROM ZX_PTNR_LOCATION_INFO_GT;
4739       EXCEPTION WHEN OTHERS THEN
4740          l_cnt_of_loc_info_gt := 0;
4741       END;
4742       FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4743              'l_cnt_of_loc_info_gt = '||l_cnt_of_loc_info_gt);
4744       BEGIN
4745          SELECT count(*)
4746            INTO l_cnt_of_neg_line_gt
4747            FROM ZX_PTNR_NEG_LINE_GT;
4748       EXCEPTION WHEN OTHERS THEN
4749          l_cnt_of_neg_line_gt := 0;
4750       END;
4751       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4752          FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,
4753                 'l_cnt_of_neg_line_gt = '||l_cnt_of_neg_line_gt);
4754       END IF;
4755    END IF;
4756 
4757    BEGIN
4758     select count(*)
4759     into l_cnt_of_trx_hdr_gt
4760     from ZX_TRX_HEADERS_GT
4761     where trx_id = x_transaction_rec.transaction_id;
4762    EXCEPTION WHEN OTHERS THEN
4763     l_cnt_of_trx_hdr_gt := 0;
4764    END;
4765 
4766    IF l_cnt_of_trx_hdr_gt > 0 THEN
4767     BEGIN
4768       l_statements := 'DELETE FROM ZX_TAX_TAXWARE_AUDIT_DETAIL WHERE HEADERNO in (select HEADERNO from ZX_TAX_TAXWARE_AUDIT_HEADER where ORACLEID = :1 ) ';
4769       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4770         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
4771       END IF;
4772       EXECUTE IMMEDIATE l_statements using to_char(x_transaction_rec.transaction_id) ;
4773       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4774         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Deleted Rows in Audit Detail table == ' || to_char(SQL%ROWCOUNT));
4775       END IF;
4776 
4777       l_statements := 'DELETE FROM ZX_TAX_TAXWARE_AUDIT_TAX WHERE HEADERNO in (select HEADERNO from ZX_TAX_TAXWARE_AUDIT_HEADER where ORACLEID = :1 ) ';
4778       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4779         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
4780       END IF;
4781       EXECUTE IMMEDIATE l_statements using to_char(x_transaction_rec.transaction_id) ;
4782       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4783         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Deleted Rows in Audit Tax table == ' || to_char(SQL%ROWCOUNT));
4784       END IF;
4785 
4786       l_statements := 'DELETE FROM ZX_TAX_TAXWARE_AUDIT_JURIS WHERE HEADERNO in (select HEADERNO from ZX_TAX_TAXWARE_AUDIT_HEADER where ORACLEID = :1 ) ';
4787       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4788         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
4789       END IF;
4790       EXECUTE IMMEDIATE l_statements using to_char(x_transaction_rec.transaction_id) ;
4791       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4792         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Deleted Rows in Audot Juris table == ' || to_char(SQL%ROWCOUNT));
4793       END IF;
4794 
4795       l_statements := 'DELETE FROM ZX_TAX_TAXWARE_AUDIT_HEADER where ORACLEID = :1 ';
4796       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4797         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'l_statements ==' || l_statements);
4798       END IF;
4799       EXECUTE IMMEDIATE l_statements using to_char(x_transaction_rec.transaction_id) ;
4800       IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4801         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name, 'Deleted Rows in Audit Header table == ' || to_char(SQL%ROWCOUNT));
4802       END IF;
4803 
4804      EXCEPTION
4805           WHEN OTHERS THEN
4806         	   IF (g_level_exception >= g_current_runtime_level ) THEN
4807                 FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,'Exception in Deleting data from TAXAUDIT_* tables'||SQLERRM);
4808         	   End if;
4809      END;
4810     RETURN;
4811    END IF;
4812 
4813    BEGIN
4814      SELECT trx_line_id,
4815             decode(adjusted_doc_application_id,
4816                         222,decode(adjusted_doc_event_class_code,
4817                                           'INVOICE', 4,
4818                                           'DEBIT_MEMO', 5,
4819                                           'CREDIT_MEMO', 6,
4820                                            NULL
4821                                   )
4822                         ,NULL) adjusted_doc_document_type_id,
4823             adjusted_doc_trx_id,
4824             adjusted_doc_line_id,
4825             adjusted_doc_trx_level_type,
4826             line_level_action
4827        BULK COLLECT
4828        INTO pg_trx_line_id_tab,
4829             pg_adj_doc_doc_type_id_tab,
4830             pg_adj_doc_trx_id_tab,
4831             pg_adj_doc_line_id_tab,
4832             pg_adj_doc_trx_lev_type_tab,
4833             pg_line_level_action_tab
4834        FROM ZX_PTNR_NEG_LINE_GT
4835       WHERE event_class_mapping_id = x_transaction_rec.document_type_id
4836         AND trx_id                 = x_transaction_rec.transaction_id;
4837    EXCEPTION
4838         WHEN no_data_found THEN
4839       	   IF (g_level_exception >= g_current_runtime_level ) THEN
4840                     FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4841       	   End if;
4842            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4843            g_string        := 'No document type exist for provided event_class_mapping_id ';
4844            error_exception_handle(g_string);
4845            x_messages_tbl  :=  g_messages_tbl;
4846            RETURN;
4847    END;
4848 
4849  BEGIN
4850       SELECT event_class_code
4851         INTO l_document_type
4852         FROM zx_evnt_cls_mappings
4853        WHERE event_class_mapping_id = x_transaction_rec.document_type_id;
4854    EXCEPTION
4855         WHEN no_data_found THEN
4856 	   IF (g_level_exception >= g_current_runtime_level ) THEN
4857               FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4858 	   End if;
4859            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4860            g_string        := 'No document type exist for provided event_class_mapping_id ';
4861            error_exception_handle(g_string);
4862            x_messages_tbl  :=  g_messages_tbl;
4863            RETURN;
4864    END;
4865    --Bug 8576319
4866    --Call Set Document Type
4867 
4868    SELECT SUM(ABS(line_amt))
4869      INTO l_doc_amount
4870      FROM ZX_PTNR_NEG_LINE_GT
4871     WHERE event_class_mapping_id = x_transaction_rec.document_type_id
4872       AND trx_id                 = x_transaction_rec.transaction_id;
4873 
4874    I := 1;
4875 
4876    SET_DOCUMENT_TYPE(l_document_type,
4877                      x_transaction_rec.transaction_id,
4878                      l_doc_amount,
4879                      l_return_status);
4880 
4881    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4882       IF (g_level_exception >= g_current_runtime_level ) THEN
4883         FND_LOG.STRING(G_LEVEL_EXCEPTION,G_MODULE_NAME||l_api_name,SQLERRM);
4884       END IF;
4885       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4886       g_string :='Failed in setting up document type';
4887       error_exception_handle(g_string);
4888       x_messages_tbl:=g_messages_tbl;
4889       return;
4890    END IF;
4891    -- End Bug 8576319
4892    FOR cnt IN 1..nvl(pg_trx_line_id_tab.last, 0)
4893    LOOP
4894       I := cnt;
4895       perform_line_deletion(l_return_status);
4896       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4897          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4898             FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,SQLERRM);
4899          END IF;
4900          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4901          g_string :='Failed in PERFORM_LINE_DELETION procedure';
4902          error_exception_handle(g_string);
4903          RETURN;
4904       END IF;
4905    END LOOP;
4906 
4907 
4908   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4909        FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.END',G_PKG_NAME||': '||l_api_name||'()+');
4910   END IF;
4911 
4912 End GLOBAL_DOCUMENT_UPDATE;
4913 
4914 PROCEDURE dump_vendor_rec ( dmpTaxLink      	ZX_TAX_TAXWARE_GEN.TaxParm,
4915                             dmpJurLink      	ZX_TAX_TAXWARE_GEN.JurParm,
4916                             dmpOraLink          ZX_TAX_TAXWARE_GEN.t_OraParm,
4917 			    input_param_flag  	BOOLEAN  ) IS
4918 
4919   l_temp_reserved_bool VARCHAR2(10) := null;
4920   l_api_name           CONSTANT VARCHAR2(30) := 'DUMP_VENDOR_REC';
4921 BEGIN
4922 
4923   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
4924      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()+');
4925   END IF;
4926 
4927   IF input_param_flag THEN
4928      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4929      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
4930      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- OraLink Input Parameters -----');
4931      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
4932      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'OracleId = ['||dmpOraLink.OracleId||']');
4933      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Oracle_Msg_Text = ['||dmpOraLink.oracle_msg_text||']');
4934      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Oracle_Msg_Label = ['||dmpOraLink.oracle_msg_label||']');
4935      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Taxware_Msg_Text = ['||dmpOraLink.taxware_msg_text||']');
4936      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_1 = ['||dmpOraLink.reserved_text_1||']');
4937      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_2 = ['||dmpOraLink.reserved_text_2||']');
4938      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_3 = ['||dmpOraLink.reserved_text_3||']');
4939      END IF;
4940      if dmpOraLink.reserved_bool_1 is null then
4941        l_temp_reserved_bool := '';
4942      elsif dmpOraLink.reserved_bool_1 then
4943        l_temp_reserved_bool := 'TRUE';
4944      else
4945        l_temp_reserved_bool := 'FALSE';
4946      end if;
4947      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4948      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_1 = ['||l_temp_reserved_bool||']');
4949      END IF;
4950      if dmpOraLink.reserved_bool_2 is null then
4951        l_temp_reserved_bool := '';
4952      elsif dmpOraLink.reserved_bool_2 then
4953        l_temp_reserved_bool := 'TRUE';
4954      else
4955        l_temp_reserved_bool := 'FALSE';
4956      end if;
4957      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4958      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_2 = ['||l_temp_reserved_bool||']');
4959      END IF;
4960      if dmpOraLink.reserved_bool_3 is null then
4961        l_temp_reserved_bool := '';
4962      elsif dmpOraLink.reserved_bool_3 then
4963        l_temp_reserved_bool := 'TRUE';
4964      else
4965        l_temp_reserved_bool := 'FALSE';
4966      end if;
4967      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4968      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_3 = ['||l_temp_reserved_bool||']');
4969      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_1 = ['||dmpOraLink.reserved_char_1||']');
4970      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_2 = ['||dmpOraLink.reserved_char_2||']');
4971      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_3 = ['||dmpOraLink.reserved_char_3||']');
4972      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_NUM_1 = ['||to_char(dmpOraLink.reserved_num_1)||']');
4973      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_NUM_2 = ['||to_char(dmpOraLink.reserved_num_2)||']');
4974      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BIGNUM_1 = ['||to_char(dmpOraLink.reserved_bignum_1)||']');
4975 
4976         FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_DATE_1 = ['||to_char(dmpOraLink.reserved_date_1,'DD-MON-RR')||']');
4977      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
4978      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- TaxLink Input Parameters -----');
4979      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
4980      	--FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'vendor_param.tax_selection = ['||vendor_param.tax_selection||']');
4981      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CalcType = ['||dmpTaxLink.CalcType||']');
4982      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnSlsUse = ['||dmpTaxLink.CnSlsUse||']');
4983      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CustNo = ['||dmpTaxLink.CustNo||']');
4984      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CustName = ['||dmpTaxLink.CustName||']');
4985      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CompanyID = ['||dmpTaxLink.CompanyID||']');
4986      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.DivCode = ['||dmpTaxLink.DivCode||']');
4987      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.GrossAmt = ['||to_char(dmpTaxLink.GrossAmt)||']');
4988      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.TaxAmt = ['||to_char(dmpTaxLink.TaxAmt)||']');
4989      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CreditInd = ['||
4990    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.CreditInd)||']');
4991      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.InvoiceDate = ['||to_char(dmpTaxLink.InvoiceDate)||']');
4992      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.InvoiceNo = ['||dmpTaxLink.InvoiceNo||']');
4993      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoSlsUse = ['||dmpTaxLink.LoSlsUse||']');
4994      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoCnTax = ['||
4995    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoCnTax)||']');
4996      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoLoTax = ['||
4997    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoLoTax)||']');
4998      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoSecCnTax = ['||
4999    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoSecCnTax)||']');
5000      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoSecLoTax = ['||
5004      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoTaxInd = ['||
5001    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoSecLoTax)||']');
5002      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NoStaTax = ['||
5003    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoStaTax)||']');
5005    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.NoTaxInd)||']');
5006      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.NumItems = ['||to_char(dmpTaxLink.NumItems)||']');
5007      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.PriGeo = ['||dmpTaxLink.PriGeo||']');
5008      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.PriZip = ['||dmpTaxLink.PriZip||']');
5009      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.InOutCityLimits = ['||dmpTaxLink.InOutCityLimits||']');
5010      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ProdCode = ['||dmpTaxLink.ProdCode||']');
5011      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ReptInd = ['||
5012    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.ReptInd)||']');
5013      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecStSlsUse = ['||dmpTaxLink.SecStSlsUse||']');
5014      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaSlsUse = ['||dmpTaxLink.StaSlsUse||']');
5015      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StateCode = ['||dmpTaxLink.StateCode||']');
5016      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaExempt = ['||
5017    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.StaExempt)||']');
5018      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StExemptAmt = ['||to_char(dmpTaxLink.StExemptAmt)||']');
5019      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StReasonCode = ['||dmpTaxLink.StReasonCode||']');
5020      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StTaxCertNo = ['||dmpTaxLink.StTaxCertNo||']');
5021      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnExempt = ['||
5022    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.CnExempt)||']');
5023      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CntyExemptAmt = ['||to_char(dmpTaxLink.CntyExemptAmt)||']');
5024      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CntyReasonCode = ['||dmpTaxLink.CntyReasonCode||']');
5025      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnTaxCertNo = ['||dmpTaxLink.CnTaxCertNo||']');
5026      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoExempt = ['||
5027    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.LoExempt)||']');
5028      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CityExemptAmt = ['||to_char(dmpTaxLink.CityExemptAmt)||']');
5029      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CityReasonCode = ['||dmpTaxLink.CityReasonCode||']');
5030      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoTaxCertNo = ['||dmpTaxLink.LoTaxCertNo||']');
5031      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecCnExempt = ['||
5032    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.SecCnExempt)||']');
5033      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecCnExemptAmt = ['||to_char(dmpTaxLink.SecCnExemptAmt)||']');
5034      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecLoExempt = ['||
5035    		arp_trx_util.boolean_to_varchar2(dmpTaxLink.SecLoExempt)||']');
5036      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecLoExemptAmt = ['||to_char(dmpTaxLink.SecLoExemptAmt)||']');
5037      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'');
5038      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- STEP/NEXPRO Input Parameters -----');
5039      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'');
5040      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.UseStep = ['||dmpTaxLink.UseStep||']');
5041      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StepProcFlg = ['||dmpTaxLink.StepProcFlg||']');
5042      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.JobNo = ['||dmpTaxLink.JobNo||']');
5043      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CritFlg = ['||dmpTaxLink.CritFlg||']');
5044      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.UseNexproInd = ['||dmpTaxLink.UseNexproInd||']');
5045 
5046     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 StOvAmt =='|| dmpTaxLink.StOvAmt);
5047     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 CnOvAmt =='|| dmpTaxLink.CnOvAmt);
5048     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 LoOvAmt =='|| dmpTaxLink.LoOvAmt);
5049     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 ScStOvAmt =='|| dmpTaxLink.ScStOvAmt);
5050     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 ScCnOvAmt =='|| dmpTaxLink.ScCnOvAmt);
5051     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 ScLoOvAmt =='|| dmpTaxLink.ScLoOvAmt);
5052     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 DistOvAmt =='|| dmpTaxLink.DistOvAmt);
5053     FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3232492 FedOvAmt =='|| dmpTaxLink.FedOvAmt);
5054 
5055      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5056      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- JurLink Input Parameters -----');
5057      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5058      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POA.Geo = ['||dmpJurLink.POA.Geo||']');
5059      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POA.State = ['||dmpJurLink.POA.State||']');
5060      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POA.Zip = ['||dmpJurLink.POA.Zip||']');
5061      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.InOutCiLimPOA = ['||dmpJurLink.InOutCiLimPOA||']');
5062      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POO.Geo = ['||dmpJurLink.POO.Geo||']');
5063      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POO.State = ['||dmpJurLink.POO.State||']');
5064      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POO.Zip = ['||dmpJurLink.POO.Zip||']');
5065      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.InOutCiLimPOO = ['||dmpJurLink.InOutCiLimPOO||']');
5066      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipFr.Geo = ['||dmpJurLink.ShipFr.Geo||']');
5067      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipFr.State = ['||dmpJurLink.ShipFr.State||']');
5068      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipFr.Zip = ['||dmpJurLink.ShipFr.Zip||']');
5069      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.InOutCiLimShFr = ['||dmpJurLink.InOutCiLimShFr||']');
5070      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipTo.Geo = ['||dmpJurLink.ShipTo.Geo||']');
5071      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipTo.State = ['||dmpJurLink.ShipTo.State||']');
5072      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShipTo.Zip = ['||dmpJurLink.ShipTo.Zip||']');
5073      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.InOutCiLimShTo = ['||dmpJurLink.InOutCiLimShTo||']');
5074      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POT = ['||dmpJurLink.POT||']');
5075      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ServInd = ['||dmpJurLink.ServInd||']');
5076      END IF;
5077 
5078   ELSE
5079      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5080      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5081      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- OraLink Output Parameters ----');
5082      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5083      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'OracleId = ['||dmpOraLink.OracleId||']');
5084      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Oracle_Msg_Text = ['||dmpOraLink.oracle_msg_text||']');
5085      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Oracle_Msg_Label = ['||dmpOraLink.oracle_msg_label||']');
5086      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Taxware_Msg_Text = ['||dmpOraLink.taxware_msg_text||']');
5087      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_1 = ['||dmpOraLink.reserved_text_1||']');
5088      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_2 = ['||dmpOraLink.reserved_text_2||']');
5089      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_Text_3 = ['||dmpOraLink.reserved_text_3||']');
5090      END IF;
5091      if dmpOraLink.reserved_bool_1 is null then
5092        l_temp_reserved_bool := '';
5093      elsif dmpOraLink.reserved_bool_1 then
5094        l_temp_reserved_bool := 'TRUE';
5095      else
5096        l_temp_reserved_bool := 'FALSE';
5097      end if;
5098      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5099      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_1 = ['||l_temp_reserved_bool||']');
5100      END IF;
5101      if dmpOraLink.reserved_bool_2 is null then
5102        l_temp_reserved_bool := '';
5103      elsif dmpOraLink.reserved_bool_2 then
5104        l_temp_reserved_bool := 'TRUE';
5105      else
5106        l_temp_reserved_bool := 'FALSE';
5107      end if;
5108      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5109      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_2 = ['||l_temp_reserved_bool||']');
5110      END IF;
5111      if dmpOraLink.reserved_bool_3 is null then
5112        l_temp_reserved_bool := '';
5113      elsif dmpOraLink.reserved_bool_3 then
5114        l_temp_reserved_bool := 'TRUE';
5115      else
5116        l_temp_reserved_bool := 'FALSE';
5117      end if;
5118      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5119      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BOOL_3 = ['||l_temp_reserved_bool||']');
5120      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_1 = ['||dmpOraLink.reserved_char_1||']');
5121      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_2 = ['||dmpOraLink.reserved_char_2||']');
5122      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_CHAR_3 = ['||dmpOraLink.reserved_char_3||']');
5123      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_NUM_1 = ['||to_char(dmpOraLink.reserved_num_1)||']');
5124      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_NUM_2 = ['||to_char(dmpOraLink.reserved_num_2)||']');
5125      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_BIGNUM_1 = ['||to_char(dmpOraLink.reserved_bignum_1)||']');
5126 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'Reserved_DATE_1 = ['||to_char(dmpOraLink.reserved_date_1,'DD-MON-RR')||']');
5127      END IF;
5128 
5129      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5130      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5131      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- TaxLink Output Parameters ----');
5132      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5133      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.GenCmplCd = ['||dmpTaxLink.GenCmplCd||']');
5134      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaCmplCd = ['||dmpTaxLink.StaCmplCd||']');
5135      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnCmplCd = ['||dmpTaxLink.CnCmplCd||']');
5136      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoCmplCd = ['||dmpTaxLink.LoCmplCd||']');
5137      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CreditInd = ['||
5138 	   		arp_trx_util.boolean_to_varchar2(dmpTaxLink.CreditInd)||']');
5139      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScCnCmplCd = ['||dmpTaxLink.ScCnCmplCd||']');
5140      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScLoCmplCd = ['||dmpTaxLink.ScLoCmplCd||']');
5141      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.DistCmplCd = ['||dmpTaxLink.DistCmplCd||']');
5142      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.GrossAmt = ['||to_char(dmpTaxLink.GrossAmt)||']');
5143      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.TaxAmt = ['||to_char(dmpTaxLink.TaxAmt)||']');
5144 
5145 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaTxRate = ['||
5146 			to_char(dmpTaxLink.StaTxRate*100)||']');
5147 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnTxRate = ['||
5148 			to_char(dmpTaxLink.CnTxRate*100)||']');
5149 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoTxRate = ['||
5150 			to_char(dmpTaxLink.LoTxRate*100)||']');
5151 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScCnTxRate = ['||
5152 			to_char(dmpTaxLink.ScCnTxRate*100)||']');
5153 	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScLoTxRate = ['||
5154 			to_char(dmpTaxLink.ScLoTxRate*100)||']');
5155      END IF;
5156      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
5157      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaTxAmt = ['||to_char(dmpTaxLink.StaTxAmt)||']');
5158      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnTxAmt = ['||to_char(dmpTaxLink.CnTxAmt)||']');
5159      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoTxAmt = ['||to_char(dmpTaxLink.LoTxAmt)||']');
5160      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScCnTxAmt = ['||to_char(dmpTaxLink.ScCnTxAmt)||']');
5161      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScLoTxAmt = ['||to_char(dmpTaxLink.ScLoTxAmt)||']');
5162      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.FedBasisAmt = ['||to_char(dmpTaxLink.FedBasisAmt)||']');
5163      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StBasisAmt = ['||to_char(dmpTaxLink.StBasisAmt)||']');
5164      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CntyBasisAmt = ['||to_char(dmpTaxLink.CntyBasisAmt)||']');
5165      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CityBasisAmt = ['||to_char(dmpTaxLink.CityBasisAmt)||']');
5166      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScStBasisAmt = ['||to_char(dmpTaxLink.ScStBasisAmt)||']');
5167      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScCntyBasisAmt = ['||to_char(dmpTaxLink.ScCntyBasisAmt)||']');
5168      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.ScCityBasisAmt = ['||to_char(dmpTaxLink.ScCityBasisAmt)||']');
5169      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.DistBasisAmt = ['||to_char(dmpTaxLink.DistBasisAmt)||']');
5170      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'');
5171      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- STEP/NEXPRO Output Parameters -----');
5172      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'');
5173      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StaStatus = ['||dmpTaxLink.StaStatus||']');
5174      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnStatus = ['||dmpTaxLink.CnStatus||']');
5175      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoStatus = ['||dmpTaxLink.LoStatus||']');
5176      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StComment = ['||dmpTaxLink.StComment||']');
5177      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnComment = ['||dmpTaxLink.CnComment||']');
5178      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoComment = ['||dmpTaxLink.LoComment||']');
5179      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StExemptAmt = ['||to_char(dmpTaxLink.StExemptAmt)||']');
5180      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CntyExemptAmt = ['||to_char(dmpTaxLink.CntyExemptAmt)||']');
5181      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CityExemptAmt = ['||to_char(dmpTaxLink.CityExemptAmt)||']');
5182      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecCnExemptAmt = ['||to_char(dmpTaxLink.SecCnExemptAmt)||']');
5183      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.SecLoExemptAmt = ['||to_char(dmpTaxLink.SecLoExemptAmt)||']');
5184      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StReasonCode = ['||dmpTaxLink.StReasonCode||']');
5185      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CntyReasonCode = ['||dmpTaxLink.CntyReasonCode||']');
5186      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CityReasonCode = ['||dmpTaxLink.CityReasonCode||']');
5187      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.StTaxCertNo = ['||dmpTaxLink.StTaxCertNo||']');
5188      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.CnTaxCertNo = ['||dmpTaxLink.CnTaxCertNo||']');
5189      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'TaxLink.LoTaxCertNo = ['||dmpTaxLink.LoTaxCertNo||']');
5190      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5191      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'----- JurLink Output Parameters ----');
5192      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'====================================');
5193      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ReturnCode = ['||dmpJurLink.ReturnCode||']');
5194      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POOJurRC = ['||dmpJurLink.POOJurRC||']');
5195      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.POAJurRC = ['||dmpJurLink.POAJurRC||']');
5196      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShpToJurRC = ['||dmpJurLink.ShpToJurRC||']');
5197      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.ShpFrJurRC = ['||dmpJurLink.ShpFrJurRC||']');
5198      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.JurLocType = ['||dmpJurLink.JurLocType||']');
5199      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.JurState = ['||dmpJurLink.JurState||']');
5200      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.JurCity = ['||dmpJurLink.JurCity||']');
5201      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.JurZip = ['||dmpJurLink.JurZip||']');
5202      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.JurGeo = ['||dmpJurLink.JurGeo||']');
5203      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypState = ['||dmpJurLink.TypState||']');
5204      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypCnty = ['||dmpJurLink.TypCnty||']');
5205      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypCity = ['||dmpJurLink.TypCity||']');
5206      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypSecState = ['||dmpJurLink.TypSecState||']');
5207      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypSecCnty = ['||dmpJurLink.TypSecCnty||']');
5208      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'JurLink.TypSecCity = ['||dmpJurLink.TypSecCity||']');
5209      /*Bug 3257088
5210         arp_tax.tax_info_rec.global_attribute16 :=  dmpJurLink.JurLocType ;*/
5211      	FND_LOG.STRING(G_LEVEL_STATEMENT,G_MODULE_NAME||l_api_name,'3257078:JurLink.JurLocType = ['||dmpJurLink.JurLocType||']');
5212      END IF;
5213   END IF;		-- input_param_flag?
5214 
5215   IF ( G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL) THEN
5216      FND_LOG.STRING(G_LEVEL_PROCEDURE,G_MODULE_NAME||l_api_name||'.BEGIN',G_PKG_NAME||': '||l_api_name||'()-');
5217    END IF;
5218 
5219 END dump_vendor_rec;
5220 
5221 Begin /*Constructor*/
5222    initialize;
5223 END ZX_TAXWARE_TAX_SERVICE_PKG;