DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_PRODUCT_INTEGRATION_PKG

Source


1 PACKAGE BODY ZX_PRODUCT_INTEGRATION_PKG AS
2 /* $Header: zxdiprodintgpkgb.pls 120.48.12010000.2 2008/11/12 12:23:10 spasala ship $ */
3 
4 -- global variable
5   pg_debug   VARCHAR2(1);
6   dummy   VARCHAR2(25);
7 
8   C_LINES_PER_INSERT      CONSTANT NUMBER :=1000;
9 
10   g_current_runtime_level NUMBER;
11   g_level_statement            CONSTANT  NUMBER   := FND_LOG.LEVEL_STATEMENT;
12   g_level_procedure            CONSTANT  NUMBER   := FND_LOG.LEVEL_PROCEDURE;
13   g_level_event                CONSTANT  NUMBER   := FND_LOG.LEVEL_EVENT;
14   g_level_unexpected           CONSTANT  NUMBER   := FND_LOG.LEVEL_UNEXPECTED;
15 
16 
17   pg_application_id            NUMBER;
18   pg_application_short_name    FND_APPLICATION.APPLICATION_SHORT_NAME%TYPE;
19 
20   pg_old_customer_trx_id       NUMBER;
21   pg_cm_type                   VARCHAR2(15);
22   pg_bad_lines                 NUMBER;
23 
24   -- global variables for arp_tax_calculate
25    pg_tax_rate_passed          ar_vat_tax.tax_rate%TYPE;
26    pg_adhoc_tax_code           VARCHAR2(1);
27 
28   TYPE tax_line_rec_type is RECORD (
29     summary_tax_line_number   zx_import_tax_lines_gt.summary_tax_line_number%TYPE,
30     internal_organization_id  zx_import_tax_lines_gt.internal_organization_id%TYPE,
31     tax_regime_code           zx_import_tax_lines_gt.tax_regime_code%TYPE,
32     tax                       zx_import_tax_lines_gt.tax%TYPE,
33     tax_status_code           zx_import_tax_lines_gt.tax_status_code%TYPE,
34     tax_rate_code             zx_import_tax_lines_gt.tax_rate_code%TYPE,
35     tax_rate                  zx_import_tax_lines_gt.tax_rate%TYPE,
36     tax_amt                   zx_import_tax_lines_gt.tax_amt%TYPE,
37     tax_jurisdiction_code     zx_import_tax_lines_gt.tax_jurisdiction_code%TYPE,
38     tax_amt_included_flag     zx_import_tax_lines_gt.tax_amt_included_flag%TYPE,
39     tax_rate_id               zx_import_tax_lines_gt.tax_rate_id%TYPE,
40     tax_provider_id           zx_import_tax_lines_gt.tax_provider_id%TYPE,
41     tax_exception_id          zx_import_tax_lines_gt.tax_exception_id%TYPE,
42     tax_exemption_id          zx_import_tax_lines_gt.tax_exemption_id%TYPE,
43     exempt_reason_code        zx_import_tax_lines_gt.exempt_reason_code%TYPE,
44     exempt_certificate_number zx_import_tax_lines_gt.exempt_certificate_number%TYPE,
45     trx_level_type            zx_trx_tax_link_gt.trx_level_type%TYPE,
46     trx_line_id               zx_trx_tax_link_gt.trx_line_id%TYPE,
47     line_amt                  zx_trx_tax_link_gt.line_amt%TYPE
48   --  trx_date                  zx_trx_headers_gt.trx_date%TYPE,
49   --  minimum_accountable_unit  zx_trx_headers_gt.minimum_accountable_unit%TYPE,
50   --  precision                 zx_trx_headers_gt.precision%TYPE,
51   --  trx_line_date             zx_transaction_lines_gt.trx_line_date%TYPE,
52   --  adjusted_doc_date         zx_transaction_lines_gt.adjusted_doc_date%TYPE,
53   --  line_level_action         zx_transaction_lines_gt.line_level_action%TYPE
54     );
55 
56 -- Private Methods
57 PROCEDURE  get_vat_tax_rate;
58 
59 PROCEDURE import_trx_line_with_taxes (
60  p_event_class_rec          IN          zx_api_pub.event_class_rec_type,
61  p_id_dist_tbl              IN          NUMBER,
62  x_return_status            OUT NOCOPY  VARCHAR2);
63 
64 PROCEDURE calculate_tax_lte (
65   p_event_class_rec   IN         ZX_API_PUB.EVENT_CLASS_REC_TYPE,
66   p_id_dist_tbl             IN         NUMBER,
67   x_return_status    OUT NOCOPY  VARCHAR2
68 );
69 
70 PROCEDURE prepare_tax_info_rec(
71   p_index   IN NUMBER
72 );
73 
74 PROCEDURE process_tax_rec_f_sql_lte (
75 		p_appl_short_name	 IN VARCHAR2
76 );
77 
78 PROCEDURE arp_tax_calculate;
79 
80 PROCEDURE  prepare_detail_tax_line(
81   p_event_class_rec  IN zx_api_pub.event_class_rec_type,
82   p_id_dist_tbl      IN NUMBER,
83   p_new_row_num      IN NUMBER,
84   p_tax_out_rec      IN tax_info_rec_TYPE
85 );
86 
87  PROCEDURE create_detail_tax_line (
88   p_event_class_rec         IN 	           zx_api_pub.event_class_rec_type,
89   p_tax_line_rec	    IN	    	   tax_line_rec_type,
90   p_id_dist_tbl         IN NUMBER,
91   p_new_row_num		    IN		   NUMBER,
92   x_return_status              OUT NOCOPY  VARCHAR2);
93 
94 PROCEDURE  get_tax_rate_id (
95   p_tax_regime_code	    IN		 VARCHAR2,
96   p_tax                     IN	         VARCHAR2,
97   p_tax_status_code         IN           VARCHAR2,
98   p_tax_rate_code           IN           VARCHAR2,
99   p_tax_determine_date      IN		 DATE,
100   p_tax_jurisdiction_code   IN           VARCHAR2,  -- bug#5395227
101   x_tax_rate_id 	    OUT NOCOPY	 NUMBER,
102   x_return_status           OUT NOCOPY   VARCHAR2,
103   x_error_buffer            OUT NOCOPY   VARCHAR2); -- bug#5395227
104 
105 FUNCTION adjust_compound_inclusive return NUMBER;
106 
107 /*===========================================================================+
108  | PROCEDURE                                                                 |
109  |    initialize                                                             |
110  |                                                                           |
111  | DESCRIPTION                                                               |
112  |      Initialize the debug info, cache info. set System and Profile        |
113  |      options required by the Tax Entity Handler and other functions in    |
114  |      the global records sysinfo and profinfo.                             |
115  | SCOPE - PRIVATE                                                           |
116  |                                                                           |
117  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
118  |                                                                           |
119  | CALLED FROM                                                               |
120  |      calculate_tax                                                        |
121  | NOTES                                                                     |
122  | MODIFICATION HISTORY                                                      |
123  |      30-Dec-2003     Ling Zhang modified from                             |
124  |                      arp_tax_crm_integration_pkg.initialize               |
125  |      27-Dec-2004	Nilesh Patel created from arp_tax                    |
126  +===========================================================================*/
127 
128 PROCEDURE initialize(
129   p_event_class_rec   IN   zx_api_pub.event_class_rec_type,
130   x_return_status     OUT NOCOPY  VARCHAR2
131 ) is
132 
133   CURSOR c_application_short_name (l_appl_id IN NUMBER) IS
134     SELECT application_short_name, application_id
135     FROM FND_APPLICATION
136     WHERE application_id = l_appl_id;
137 
138   l_last_org_id NUMBER;
139   l_debug_flag               VARCHAR2(1);
140   l_security_profile_id       FND_PROFILE_OPTION_VALUES.PROFILE_OPTION_VALUE%TYPE := NULL;
141 
142  l_chart_of_accounts_id  gl_sets_of_books.chart_of_accounts_id%type;
143  l_functional_currency   gl_sets_of_books.currency_code%type;
144  l_base_precision        fnd_currencies.precision%type;
145  l_base_min_acc_unit     fnd_currencies.minimum_accountable_unit%type;
146  l_master_org_id         oe_system_parameters_all.master_organization_id%type;
147  l_sob_test              gl_sets_of_books.set_of_books_id%type;
148  -- bug fix 3142794 l_last_org_id           ar_system_parameters_all.org_id%type;
149 
150 type l_ar_sys_rec is record(
151           DEFAULT_GROUPING_RULE_ID  	AR_SYSTEM_PARAMETERS_ALL.DEFAULT_GROUPING_RULE_ID%TYPE,
152           SALESREP_REQUIRED_FLAG    	AR_SYSTEM_PARAMETERS_ALL.SALESREP_REQUIRED_FLAG%TYPE ,
153           ATTRIBUTE11    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE11%TYPE,
154           ATTRIBUTE12    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE12%TYPE,
155           ATTRIBUTE13    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE13%TYPE,
156           ATTRIBUTE14    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE14%TYPE,
157           ATTRIBUTE15    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE15%TYPE,
158           AUTO_REC_INVOICES_PER_COMMIT  AR_SYSTEM_PARAMETERS_ALL.AUTO_REC_INVOICES_PER_COMMIT%type,
159           AUTO_REC_RECEIPTS_PER_COMMIT  AR_SYSTEM_PARAMETERS_ALL.AUTO_REC_RECEIPTS_PER_COMMIT%type,
160           PAY_UNRELATED_INVOICES_FLAG   AR_SYSTEM_PARAMETERS_ALL.PAY_UNRELATED_INVOICES_FLAG%type,
161           PRINT_HOME_COUNTRY_FLAG     	AR_SYSTEM_PARAMETERS_ALL.PRINT_HOME_COUNTRY_FLAG%type,
162           LOCATION_TAX_ACCOUNT    	AR_SYSTEM_PARAMETERS_ALL.LOCATION_TAX_ACCOUNT%type,
163           FROM_POSTAL_CODE    		AR_SYSTEM_PARAMETERS_ALL.FROM_POSTAL_CODE%type,
164           TO_POSTAL_CODE    		AR_SYSTEM_PARAMETERS_ALL.TO_POSTAL_CODE%type,
165           TAX_REGISTRATION_NUMBER    	AR_SYSTEM_PARAMETERS_ALL.TAX_REGISTRATION_NUMBER%type,
166           POPULATE_GL_SEGMENTS_FLAG     AR_SYSTEM_PARAMETERS_ALL.POPULATE_GL_SEGMENTS_FLAG%type,
167           UNALLOCATED_REVENUE_CCID    	AR_SYSTEM_PARAMETERS_ALL. UNALLOCATED_REVENUE_CCID%type,
168           ORG_ID    			AR_SYSTEM_PARAMETERS_ALL.ORG_ID%TYPE,
169           ATTRIBUTE9    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE9%TYPE,
170           ATTRIBUTE10    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE10%TYPE,
171           CALC_DISCOUNT_ON_LINES_FLAG   AR_SYSTEM_PARAMETERS_ALL.CALC_DISCOUNT_ON_LINES_FLAG%type,
172           CHANGE_PRINTED_INVOICE_FLAG   AR_SYSTEM_PARAMETERS_ALL.CHANGE_PRINTED_INVOICE_FLAG%type,
173           CODE_COMBINATION_ID_LOSS      AR_SYSTEM_PARAMETERS_ALL.CODE_COMBINATION_ID_LOSS%type,
174            CREATE_RECIPROCAL_FLAG       AR_SYSTEM_PARAMETERS_ALL. CREATE_RECIPROCAL_FLAG%type,
175            DEFAULT_COUNTRY    		AR_SYSTEM_PARAMETERS_ALL.DEFAULT_COUNTRY%type,
176            DEFAULT_TERRITORY    	AR_SYSTEM_PARAMETERS_ALL.DEFAULT_TERRITORY%type,
177            GENERATE_CUSTOMER_NUMBER     AR_SYSTEM_PARAMETERS_ALL.GENERATE_CUSTOMER_NUMBER%type,
178            INVOICE_DELETION_FLAG    	AR_SYSTEM_PARAMETERS_ALL.INVOICE_DELETION_FLAG%type,
179            LOCATION_STRUCTURE_ID    	AR_SYSTEM_PARAMETERS_ALL.LOCATION_STRUCTURE_ID %type,
180            SITE_REQUIRED_FLAG    	AR_SYSTEM_PARAMETERS_ALL.SITE_REQUIRED_FLAG%type,
181            TAX_ALLOW_COMPOUND_FLAG      AR_SYSTEM_PARAMETERS_ALL.TAX_ALLOW_COMPOUND_FLAG%type,
182            TAX_INVOICE_PRINT    	AR_SYSTEM_PARAMETERS_ALL.TAX_INVOICE_PRINT%type,
183            TAX_METHOD    		AR_SYSTEM_PARAMETERS_ALL. TAX_METHOD%type,
184            TAX_USE_CUSTOMER_EXEMPT_FLAG AR_SYSTEM_PARAMETERS_ALL.TAX_USE_CUSTOMER_EXEMPT_FLAG%type,
185            TAX_USE_CUST_EXC_RATE_FLAG   AR_SYSTEM_PARAMETERS_ALL. TAX_USE_CUST_EXC_RATE_FLAG%type,
186            TAX_USE_LOC_EXC_RATE_FLAG    AR_SYSTEM_PARAMETERS_ALL.TAX_USE_LOC_EXC_RATE_FLAG%type,
187            TAX_USE_PRODUCT_EXEMPT_FLAG  AR_SYSTEM_PARAMETERS_ALL.TAX_USE_PRODUCT_EXEMPT_FLAG%type,
188            TAX_USE_PROD_EXC_RATE_FLAG   AR_SYSTEM_PARAMETERS_ALL. TAX_USE_PROD_EXC_RATE_FLAG%type,
189            TAX_USE_SITE_EXC_RATE_FLAG   AR_SYSTEM_PARAMETERS_ALL.TAX_USE_SITE_EXC_RATE_FLAG%type,
190            AI_LOG_FILE_MESSAGE_LEVEL    AR_SYSTEM_PARAMETERS_ALL. AI_LOG_FILE_MESSAGE_LEVEL%type,
191            AI_MAX_MEMORY_IN_BYTES    	AR_SYSTEM_PARAMETERS_ALL.AI_MAX_MEMORY_IN_BYTES%type,
192            AI_ACCT_FLEX_KEY_LEFT_PROMPT AR_SYSTEM_PARAMETERS_ALL. AI_ACCT_FLEX_KEY_LEFT_PROMPT%type,
193            AI_MTL_ITEMS_KEY_LEFT_PROMPT AR_SYSTEM_PARAMETERS_ALL.AI_MTL_ITEMS_KEY_LEFT_PROMPT%type,
194            AI_TERRITORY_KEY_LEFT_PROMPT AR_SYSTEM_PARAMETERS_ALL.AI_TERRITORY_KEY_LEFT_PROMPT%type,
195            AI_PURGE_INTERFACE_TABLES_FLAG  AR_SYSTEM_PARAMETERS_ALL. AI_PURGE_INTERFACE_TABLES_FLAG%type,
196            AI_ACTIVATE_SQL_TRACE_FLAG   AR_SYSTEM_PARAMETERS_ALL.AI_ACTIVATE_SQL_TRACE_FLAG %type,
197            SET_OF_BOOKS_ID    		AR_SYSTEM_PARAMETERS_ALL.SET_OF_BOOKS_ID%type,
198            CREATED_BY    		AR_SYSTEM_PARAMETERS_ALL. CREATED_BY%type,
199            CREATION_DATE 		AR_SYSTEM_PARAMETERS_ALL.CREATION_DATE%TYPE,
200            LAST_UPDATED_BY 		AR_SYSTEM_PARAMETERS_ALL.LAST_UPDATED_BY%TYPE,
201            LAST_UPDATE_DATE    		AR_SYSTEM_PARAMETERS_ALL.LAST_UPDATE_DATE%type,
202            LAST_UPDATE_LOGIN    	AR_SYSTEM_PARAMETERS_ALL. LAST_UPDATE_LOGIN%type,
203            ACCOUNTING_METHOD    	AR_SYSTEM_PARAMETERS_ALL.ACCOUNTING_METHOD%TYPE,
204            ACCRUE_INTEREST    		AR_SYSTEM_PARAMETERS_ALL.ACCRUE_INTEREST%TYPE,
205            UNEARNED_DISCOUNT    	AR_SYSTEM_PARAMETERS_ALL.UNEARNED_DISCOUNT%TYPE,
206            PARTIAL_DISCOUNT_FLAG    	AR_SYSTEM_PARAMETERS_ALL.PARTIAL_DISCOUNT_FLAG%type,
207            PRINT_REMIT_TO    		AR_SYSTEM_PARAMETERS_ALL. PRINT_REMIT_TO%type,
208            DEFAULT_CB_DUE_DATE    	AR_SYSTEM_PARAMETERS_ALL. DEFAULT_CB_DUE_DATE%type,
209            AUTO_SITE_NUMBERING    	AR_SYSTEM_PARAMETERS_ALL.AUTO_SITE_NUMBERING%type,
210            CASH_BASIS_SET_OF_BOOKS_ID   AR_SYSTEM_PARAMETERS_ALL.CASH_BASIS_SET_OF_BOOKS_ID%type,
211            CODE_COMBINATION_ID_GAIN     AR_SYSTEM_PARAMETERS_ALL.CODE_COMBINATION_ID_GAIN%type,
212            AUTOCASH_HIERARCHY_ID    	AR_SYSTEM_PARAMETERS_ALL. AUTOCASH_HIERARCHY_ID%type,
213            RUN_GL_JOURNAL_IMPORT_FLAG   AR_SYSTEM_PARAMETERS_ALL.RUN_GL_JOURNAL_IMPORT_FLAG%type,
214            CER_SPLIT_AMOUNT    		AR_SYSTEM_PARAMETERS_ALL. CER_SPLIT_AMOUNT%type,
215            CER_DSO_DAYS    		AR_SYSTEM_PARAMETERS_ALL.CER_DSO_DAYS%type,
216            POSTING_DAYS_PER_CYCLE    	AR_SYSTEM_PARAMETERS_ALL.POSTING_DAYS_PER_CYCLE%type,
217            ADDRESS_VALIDATION    	AR_SYSTEM_PARAMETERS_ALL. ADDRESS_VALIDATION%type,
218            ATTRIBUTE1    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE1%type,
219            ATTRIBUTE2    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE2%type,
220            ATTRIBUTE_CATEGORY    	AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE_CATEGORY%type,
221            ATTRIBUTE3    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE3%type,
222            ATTRIBUTE4    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE4%type,
223            ATTRIBUTE5    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE5%type,
224            ATTRIBUTE6    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE6%type,
225            ATTRIBUTE7    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE7%type,
226            ATTRIBUTE8    		AR_SYSTEM_PARAMETERS_ALL.ATTRIBUTE8%type,
227            TAX_CODE    			AR_SYSTEM_PARAMETERS_ALL.TAX_CODE%type,
228            TAX_CURRENCY_CODE    	AR_SYSTEM_PARAMETERS_ALL.TAX_CURRENCY_CODE%type,
229            TAX_HEADER_LEVEL_FLAG    	AR_SYSTEM_PARAMETERS_ALL.TAX_HEADER_LEVEL_FLAG%type,
230            TAX_MINIMUM_ACCOUNTABLE_UNIT AR_SYSTEM_PARAMETERS_ALL.TAX_MINIMUM_ACCOUNTABLE_UNIT%type,
231            TAX_PRECISION    		AR_SYSTEM_PARAMETERS_ALL.TAX_PRECISION%type,
232            TAX_ROUNDING_RULE    	AR_SYSTEM_PARAMETERS_ALL.TAX_ROUNDING_RULE%type,
233            GLOBAL_ATTRIBUTE1    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE1%type,
234            GLOBAL_ATTRIBUTE2    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE2%type,
235            GLOBAL_ATTRIBUTE3    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE3%type,
236            GLOBAL_ATTRIBUTE4    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE4%type,
237            GLOBAL_ATTRIBUTE5    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE5%type,
238            GLOBAL_ATTRIBUTE6    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE6%type,
239            GLOBAL_ATTRIBUTE7    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE7%type,
240            GLOBAL_ATTRIBUTE8    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE8%type,
241            GLOBAL_ATTRIBUTE9    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE9%type,
242            GLOBAL_ATTRIBUTE10    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE10%type,
243            GLOBAL_ATTRIBUTE11    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE11%type,
244            GLOBAL_ATTRIBUTE12    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE12%type,
245            GLOBAL_ATTRIBUTE13    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE13%type,
246            GLOBAL_ATTRIBUTE14    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE14%type,
247            GLOBAL_ATTRIBUTE15    	AR_SYSTEM_PARAMETERS_ALL. GLOBAL_ATTRIBUTE15%type,
248            GLOBAL_ATTRIBUTE16    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE16%type,
249            GLOBAL_ATTRIBUTE17    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE17%type,
250            GLOBAL_ATTRIBUTE18    	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE18%type,
251            GLOBAL_ATTRIBUTE19     	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE19%type,
252            GLOBAL_ATTRIBUTE20     	AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE20%type,
253            GLOBAL_ATTRIBUTE_CATEGORY    AR_SYSTEM_PARAMETERS_ALL.GLOBAL_ATTRIBUTE_CATEGORY%TYPE,
254            TAX_ROUNDING_ALLOW_OVERRIDE  AR_SYSTEM_PARAMETERS_ALL.TAX_ROUNDING_ALLOW_OVERRIDE%TYPE,
255            RULE_SET_ID     		 AR_SYSTEM_PARAMETERS_ALL.RULE_SET_ID%type,
256            TAX_USE_ACCOUNT_EXC_RATE_FLAG AR_SYSTEM_PARAMETERS_ALL.TAX_USE_ACCOUNT_EXC_RATE_FLAG%type,
257            TAX_USE_SYSTEM_EXC_RATE_FLAG  AR_SYSTEM_PARAMETERS_ALL.TAX_USE_SYSTEM_EXC_RATE_FLAG%type,
258            TAX_HIER_SITE_EXC_RATE     	AR_SYSTEM_PARAMETERS_ALL.TAX_HIER_SITE_EXC_RATE%type,
259            TAX_HIER_CUST_EXC_RATE     	AR_SYSTEM_PARAMETERS_ALL. TAX_HIER_CUST_EXC_RATE%type,
260            TAX_HIER_PROD_EXC_RATE     	AR_SYSTEM_PARAMETERS_ALL.TAX_HIER_PROD_EXC_RATE%type,
261            TAX_HIER_ACCOUNT_EXC_RATE    AR_SYSTEM_PARAMETERS_ALL.TAX_HIER_ACCOUNT_EXC_RATE%type,
262            TAX_HIER_SYSTEM_EXC_RATE     AR_SYSTEM_PARAMETERS_ALL. TAX_HIER_SYSTEM_EXC_RATE%type,
263            TAX_DATABASE_VIEW_SET     	AR_SYSTEM_PARAMETERS_ALL. TAX_DATABASE_VIEW_SET%type,
264            INCLUSIVE_TAX_USED     	AR_SYSTEM_PARAMETERS_ALL. INCLUSIVE_TAX_USED%type,
265            CODE_COMBINATION_ID_ROUND    AR_SYSTEM_PARAMETERS_ALL. CODE_COMBINATION_ID_ROUNd%type,
266            TRX_HEADER_LEVEL_ROUNDING    AR_SYSTEM_PARAMETERS_ALL.TRX_HEADER_LEVEL_ROUNDING%type,
267            TRX_HEADER_ROUND_CCID     	AR_SYSTEM_PARAMETERS_ALL.TRX_HEADER_ROUND_CCID%type,
268            FINCHRG_RECEIVABLES_TRX_ID   AR_SYSTEM_PARAMETERS_ALL.FINCHRG_RECEIVABLES_TRX_ID%type,
269            SALES_TAX_GEOCODE     	AR_SYSTEM_PARAMETERS_ALL.SALES_TAX_GEOCODE%type,
270            BILLS_RECEIVABLE_ENABLED_FLAG   AR_SYSTEM_PARAMETERS_ALL.BILLS_RECEIVABLE_ENABLED_FLAG%type,
271            TA_INSTALLED_FLAG     	AR_SYSTEM_PARAMETERS_ALL.TA_INSTALLED_FLAG%type,
272            REV_TRANSFER_CLEAR_CCID 	AR_SYSTEM_PARAMETERS_ALL.REV_TRANSFER_CLEAR_CCID%type,
273            SALES_CREDIT_PCT_LIMIT  	AR_SYSTEM_PARAMETERS_ALL.SALES_CREDIT_PCT_LIMIT%TYPE);
274 
275  l_ar_sys_param_rec l_ar_sys_rec;
276 
277  CURSOR c_product_options (c_org_id         NUMBER,
278                            c_application_id NUMBER) IS
279  SELECT org_id,
280         def_option_hier_1_code,
281         def_option_hier_2_code,
282         def_option_hier_3_code,
283         def_option_hier_4_code,
284         def_option_hier_5_code,
285         def_option_hier_6_code,
286         def_option_hier_7_code,
287         home_country_default_flag,
288         tax_classification_code,
289         tax_method_code,
290         inclusive_tax_used_flag,
291         tax_use_customer_exempt_flag,
292         tax_use_product_exempt_flag,
293         tax_use_loc_exc_rate_flag,
294         tax_allow_compound_flag,
295         tax_rounding_rule,
296         tax_precision,
297         tax_minimum_accountable_unit,
298         use_tax_classification_flag,
299         allow_tax_rounding_ovrd_flag
300    FROM zx_product_options_all
301   WHERE org_id = c_org_id
302     AND application_id = c_application_id;
303 
304 BEGIN
305   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
306 
307   IF (g_level_procedure >= g_current_runtime_level ) THEN
308     FND_LOG.STRING(g_level_procedure,
309                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize.BEGIN',
310                      'ZX_PRODUCT_INTEGRATION_PKG: initialize (+)');
311   END IF;
312 
313   x_return_status := FND_API.G_RET_STS_SUCCESS;
314  -- l_debug_flag :=  NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
315 
316  -- IF L_DEBUG_FLAG <> PG_DEBUG THEN
317  --   FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Calling initialize ....');
318  --   PG_DEBUG := l_debug_flag;
319  -- END IF;
320 
321   IF (g_level_statement >= g_current_runtime_level) THEN
322        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','pg_application_short_name = '||pg_application_short_name);
323        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','pg_application_id = '||pg_application_id);
324        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','p_event_class_rec.application_id = '||p_event_class_rec.application_id);
325        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',SQLCODE||'  ;  '||SQLERRM);
326   END IF;
327 
328   IF (pg_application_short_name IS NULL and pg_application_id IS NULL)
329    OR p_event_class_rec.application_id <> pg_application_id
330   THEN
331 
332     IF (g_level_statement >= g_current_runtime_level) THEN
333      FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Getting application short name');
334     END IF;
335 
336     OPEN c_application_short_name(p_event_class_rec.application_id);
337 
338     FETCH c_application_short_name into pg_application_short_name, pg_application_id;
339 
340     IF c_application_short_name%NOTFOUND THEN
341 
342       IF (g_level_event >= g_current_runtime_level) THEN
343         FND_LOG.STRING(g_level_event,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Error: application short name not found');
344       END IF;
345       x_return_status := FND_API.G_RET_STS_ERROR;
346       FND_MESSAGE.SET_NAME ('ZX','GENERIC_MESSAGE');
347       FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','Application ID is invalid, please fix and try again');
348       ZX_API_PUB.add_msg(
349           ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
350 
351       IF ( g_level_unexpected >= g_current_runtime_level) THEN
352         FND_LOG.STRING(g_level_unexpected,
353                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize',
354                       'Application ID is invalid. '||
355                       'No application short name found for the application id input.'
356                       );
357       END IF;
358       RETURN;
359 
360     ELSE
361          IF (g_level_statement >= g_current_runtime_level) THEN
362           FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Application short name found. pg_application_short_name = '||pg_application_Short_name);
363          END IF;
364 
365            IF MO_GLOBAL.is_multi_org_enabled = 'Y' THEN
366               IF (g_level_statement >= g_current_runtime_level) THEN
367                 FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Multi-Org enabled');
368               END IF;
369            End if;
370 
371     END IF;
372 
373     CLOSE c_application_short_name;
374 
375 
376   END IF;
377 
378     IF (g_level_statement >= g_current_runtime_level) THEN
379        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Calling MO_GLOBAL.is_multi_org_enabled');
380     END IF;
381 
382   pg_application_short_name := 'AR';
383 
384   -- set up MOAC based on the passed in organization ID
385   IF MO_GLOBAL.is_multi_org_enabled = 'Y' THEN
386 
387     IF (g_level_statement >= g_current_runtime_level) THEN
388         FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Multi-org Enabled');
389     END IF;
390 
391     l_last_org_id := sysinfo.sysparam.org_id;
392 
393     -- Call intialization when no cache available or orgnation context changed
394     IF l_last_org_id IS NULL
395       OR l_last_org_id <> p_event_class_rec.internal_organization_id
396     THEN
397 
398       IF (g_level_statement >= g_current_runtime_level) THEN
399           FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','New OU. Calling initialize ...');
400       END IF;
401 
402       --
403       -- Get the profile values and call set_org_access API
404       --
405       fnd_profile.get('XLA_MO_SECURITY_PROFILE_LEVEL', l_security_profile_id);
406       IF (g_level_procedure >= g_current_runtime_level) THEN
407         FND_LOG.STRING(g_level_procedure,
408                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize()',
409                       'MO: Operating Unit=>'||p_event_class_rec.internal_organization_id||
410                       ', MO: Security Profile=>'||l_security_profile_id||
411                       ', p_appl_short_name=>'||pg_application_short_name);
412       END IF;
413 
414       IF (g_level_statement >= g_current_runtime_level) THEN
415           FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' calling MO_GLOBAL.SET_ORG_ACCESS');
416       END IF;
417 
418      -- Bug 5022934 the call to MO_GLOBAL is internally calling
419      -- MO_GLOBAL.SET_POLICY_CONTEXT: p_access_mode=>M,p_org_id
420      -- which is causing too many rows within AR. commenting out this call
421      -- as org_access should already have been set by calling side.
422      /*
423       MO_GLOBAL.SET_ORG_ACCESS(
424         p_event_class_rec.internal_organization_id,
425         l_security_profile_id,
426         pg_application_short_name
427       );
428      */
429 
430     END IF;
431 
432   --   arp_util_tax.initialize;
433 
434 
435   ELSE -- Single Organization
436     -- Call initalizations when no cache available
437 
438     IF (g_level_statement >= g_current_runtime_level) THEN
439         FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Multi-org NOT Enabled');
440     END IF;
441 
442     IF sysinfo.sysparam.set_of_books_id IS NULL  THEN
443   --     arp_util_tax.initialize;
444          NULL;
445     END IF;
446 
447   END IF; -- multi org is enabled
448 
449   --
450   -- Get System Info
451   --
452   BEGIN
453 
454     -- bug fix 3142794 l_last_org_id := sysinfo.sysparam.org_id;
455     trx_type_tbl.DELETE;
456 
457     /* bug fix 3142794 begin*/
458     -- if the org_id has not changed, then do nothing, return.
459     IF (sysinfo.sysparam.org_id is null and p_event_class_rec.internal_organization_id is NULL)
460     THEN
461          IF (g_level_statement >= g_current_runtime_level) THEN
462            FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','sysinfo.sysparam.org_id is null as well as '||
463              'p_event_class_rec.internal_organization_id is NULL ');
464          END IF;
465          return;
466     ELSIF ( (sysinfo.sysparam.org_id is not null)
467         and (sysinfo.sysparam.org_id = p_event_class_rec.internal_organization_id))
468     THEN
469          IF (g_level_statement >= g_current_runtime_level) THEN
470           FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','sysinfo.sysparam.org_id is equal to '||
471                       'p_event_class_rec.internal_organization_id: '||p_event_class_rec.internal_organization_id||
472                       'Hence not performing initialization.');
473          END IF;
474         return;
475     END IF;
476     /* bug fix 3142794 end*/
477 
478     -- Populate global variable sysparam
479     IF (g_level_statement >= g_current_runtime_level) THEN
480        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','No cache value available, Populate global'||
481             ' variable sysparam from ar_system_parameters');
482     END IF;
483 
484     -- Condition added for Bug#6893532
485     -- Adding OM application Ids in the IF statement
486     -- as for all OM related applications, AR tax setup (Product Options) are used.
487     -- Order Management 660
488     -- Order Capture    697
489     -- Order Entry      300
490 
491     -- IF p_event_class_rec.application_id = 222 THEN
492     IF p_event_class_rec.application_id IN (222, 300, 660, 697) THEN
493        -- Fetch AR Application Product Options
494        OPEN c_product_options (p_event_class_rec.internal_organization_id, 222);
495        FETCH c_product_options
496         INTO sysinfo.ar_product_options_rec.org_id,
497              sysinfo.ar_product_options_rec.def_option_hier_1_code,
498              sysinfo.ar_product_options_rec.def_option_hier_2_code,
499              sysinfo.ar_product_options_rec.def_option_hier_3_code,
500              sysinfo.ar_product_options_rec.def_option_hier_4_code,
501              sysinfo.ar_product_options_rec.def_option_hier_5_code,
502              sysinfo.ar_product_options_rec.def_option_hier_6_code,
503              sysinfo.ar_product_options_rec.def_option_hier_7_code,
504              sysinfo.ar_product_options_rec.home_country_default_flag,
505              sysinfo.ar_product_options_rec.tax_classification_code,
506              sysinfo.ar_product_options_rec.tax_method_code,
507              sysinfo.ar_product_options_rec.inclusive_tax_used_flag,
508              sysinfo.ar_product_options_rec.tax_use_customer_exempt_flag,
509              sysinfo.ar_product_options_rec.tax_use_product_exempt_flag,
510              sysinfo.ar_product_options_rec.tax_use_loc_exc_rate_flag,
511              sysinfo.ar_product_options_rec.tax_allow_compound_flag,
512              sysinfo.ar_product_options_rec.tax_rounding_rule,
513              sysinfo.ar_product_options_rec.tax_precision,
514              sysinfo.ar_product_options_rec.tax_minimum_accountable_unit,
515              sysinfo.ar_product_options_rec.use_tax_classification_flag,
516              sysinfo.ar_product_options_rec.allow_tax_rounding_ovrd_flag;
517        CLOSE c_product_options;
518 
519        sysinfo.sysparam.TAX_METHOD
520                     :=sysinfo.ar_product_options_rec.TAX_METHOD_CODE ;
521        sysinfo.sysparam.ORG_ID
522                     :=sysinfo.ar_product_options_rec.ORG_ID ;
523        sysinfo.sysparam.INCLUSIVE_TAX_USED
524                     :=sysinfo.ar_product_options_rec.INCLUSIVE_TAX_USED_FLAG ;
525        sysinfo.sysparam.TAX_USE_CUSTOMER_EXEMPT_FLAG
526                     :=sysinfo.ar_product_options_rec.TAX_USE_CUSTOMER_EXEMPT_FLAG ;
527        sysinfo.sysparam.TAX_USE_PRODUCT_EXEMPT_FLAG
528                     :=sysinfo.ar_product_options_rec.TAX_USE_PRODUCT_EXEMPT_FLAG ;
529        sysinfo.sysparam.TAX_USE_LOC_EXC_RATE_FLAG
530                     :=sysinfo.ar_product_options_rec.TAX_USE_LOC_EXC_RATE_FLAG ;
531        sysinfo.sysparam.TAX_ALLOW_COMPOUND_FLAG
532                     :=sysinfo.ar_product_options_rec.TAX_ALLOW_COMPOUND_FLAG ;
533        sysinfo.sysparam.TAX_ROUNDING_RULE
534                     :=sysinfo.ar_product_options_rec.TAX_ROUNDING_RULE ;
535        sysinfo.sysparam.TAX_MINIMUM_ACCOUNTABLE_UNIT
536                     :=sysinfo.ar_product_options_rec.TAX_MINIMUM_ACCOUNTABLE_UNIT ;
537        sysinfo.sysparam.TAX_PRECISION
538                     :=sysinfo.ar_product_options_rec.TAX_PRECISION ;
539        sysinfo.sysparam.TAX_ROUNDING_ALLOW_OVERRIDE
540                     := sysinfo.ar_product_options_rec.ALLOW_TAX_ROUNDING_OVRD_FLAG;
541 
542     ELSIF p_event_class_rec.application_id = 275 THEN
543        -- Fetch PA Application Product Options
544        -- OPEN c_product_options (to_number(substrb(userenv('CLIENT_INFO'),1,10)), 275);  -- Commented for Bug#6893532
545        OPEN c_product_options (p_event_class_rec.internal_organization_id, 275);  -- Added for Bug#6893532
546        FETCH c_product_options
547         INTO sysinfo.pa_product_options_rec.org_id,
548              sysinfo.pa_product_options_rec.def_option_hier_1_code,
549              sysinfo.pa_product_options_rec.def_option_hier_2_code,
550              sysinfo.pa_product_options_rec.def_option_hier_3_code,
551              sysinfo.pa_product_options_rec.def_option_hier_4_code,
552              sysinfo.pa_product_options_rec.def_option_hier_5_code,
553              sysinfo.pa_product_options_rec.def_option_hier_6_code,
554              sysinfo.pa_product_options_rec.def_option_hier_7_code,
555              sysinfo.pa_product_options_rec.home_country_default_flag,
556              sysinfo.pa_product_options_rec.tax_classification_code,
557              sysinfo.pa_product_options_rec.tax_method_code,
558              sysinfo.pa_product_options_rec.inclusive_tax_used_flag,
559              sysinfo.pa_product_options_rec.tax_use_customer_exempt_flag,
560              sysinfo.pa_product_options_rec.tax_use_product_exempt_flag,
561              sysinfo.pa_product_options_rec.tax_use_loc_exc_rate_flag,
562              sysinfo.pa_product_options_rec.tax_allow_compound_flag,
563              sysinfo.pa_product_options_rec.tax_rounding_rule,
564              sysinfo.pa_product_options_rec.tax_precision,
565              sysinfo.pa_product_options_rec.tax_minimum_accountable_unit,
566              sysinfo.pa_product_options_rec.use_tax_classification_flag,
567              sysinfo.pa_product_options_rec.allow_tax_rounding_ovrd_flag;
568        CLOSE c_product_options;
569 
570        sysinfo.sysparam.TAX_METHOD
571                     :=sysinfo.pa_product_options_rec.TAX_METHOD_CODE ;
572        sysinfo.sysparam.ORG_ID
573                     :=sysinfo.pa_product_options_rec.ORG_ID ;
574        sysinfo.sysparam.INCLUSIVE_TAX_USED
575                     :=sysinfo.pa_product_options_rec.INCLUSIVE_TAX_USED_FLAG ;
576        sysinfo.sysparam.TAX_USE_CUSTOMER_EXEMPT_FLAG
577                     :=sysinfo.pa_product_options_rec.TAX_USE_CUSTOMER_EXEMPT_FLAG ;
578        sysinfo.sysparam.TAX_USE_PRODUCT_EXEMPT_FLAG
579                     :=sysinfo.pa_product_options_rec.TAX_USE_PRODUCT_EXEMPT_FLAG ;
580        sysinfo.sysparam.TAX_USE_LOC_EXC_RATE_FLAG
581                     :=sysinfo.pa_product_options_rec.TAX_USE_LOC_EXC_RATE_FLAG ;
582        sysinfo.sysparam.TAX_ALLOW_COMPOUND_FLAG
583                     :=sysinfo.pa_product_options_rec.TAX_ALLOW_COMPOUND_FLAG ;
584        sysinfo.sysparam.TAX_ROUNDING_RULE
585                     :=sysinfo.pa_product_options_rec.TAX_ROUNDING_RULE ;
586        sysinfo.sysparam.TAX_MINIMUM_ACCOUNTABLE_UNIT
587                     :=sysinfo.pa_product_options_rec.TAX_MINIMUM_ACCOUNTABLE_UNIT ;
588        sysinfo.sysparam.TAX_PRECISION
589                     :=sysinfo.pa_product_options_rec.TAX_PRECISION ;
590        sysinfo.sysparam.TAX_ROUNDING_ALLOW_OVERRIDE
591                     := sysinfo.pa_product_options_rec.ALLOW_TAX_ROUNDING_OVRD_FLAG;
592 
593     END IF;  -- End : Condition added for BUg#6893532
594 
595    IF (g_level_statement >= g_current_runtime_level) THEN
596        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','sysinfo.sysparam.TAX_METHOD = '||sysinfo.sysparam.TAX_METHOD);
597    END IF;
598 
599  /*
600 sysinfo.sysparam.LOCATION_TAX_ACCOUNT :=sysinfo.ar_product_options_rec.LOCATION_TAX_ACCOUNT ;
601 sysinfo.sysparam.DEFAULT_COUNTRY :=sysinfo.ar_product_options_rec.DEFAULT_COUNTRY ;
602 sysinfo.sysparam.TAX_USE_CUST_EXC_RATE_FLAG :=sysinfo.ar_product_options_rec.TAX_USE_CUST_EXC_RATE_FLAG ;
603 sysinfo.sysparam.TAX_USE_PROD_EXC_RATE_FLAG :=sysinfo.ar_product_options_rec.TAX_USE_PROD_EXC_RATE_FLAG ;
604 sysinfo.sysparam.TAX_USE_SITE_EXC_RATE_FLAG:=sysinfo.ar_product_options_rec.TAX_USE_SITE_EXC_RATE_FLAG ;
605 sysinfo.sysparam.SET_OF_BOOKS_ID :=sysinfo.ar_product_options_rec.SET_OF_BOOKS_ID ;
606 sysinfo.sysparam.TAX_CODE :=sysinfo.ar_product_options_rec.TAX_CODE ;
607 sysinfo.sysparam.TAX_CURRENCY_CODE :=sysinfo.ar_product_options_rec.TAX_CURRENCY_CODE ;
608 sysinfo.sysparam.TAX_HEADER_LEVEL_FLAG:=sysinfo.ar_product_options_rec.TAX_HEADER_LEVEL_FLAG ;
609 sysinfo.sysparam.GLOBAL_ATTRIBUTE10 :=sysinfo.ar_product_options_rec.GLOBAL_ATTRIBUTE10 ;
610 sysinfo.sysparam.GLOBAL_ATTRIBUTE13 :=sysinfo.ar_product_options_rec.GLOBAL_ATTRIBUTE13 ;
611 sysinfo.sysparam.GLOBAL_ATTRIBUTE_CATEGORY :=sysinfo.ar_product_options_rec.GLOBAL_ATTRIBUTE_CATEGORY ;
612 sysinfo.sysparam.TAX_ROUNDING_ALLOW_OVERRIDE :=sysinfo.ar_product_options_rec.TAX_ROUNDING_ALLOW_OVERRIDE ;
613 sysinfo.sysparam.TAX_USE_ACCOUNT_EXC_RATE_FLAG :=sysinfo.ar_product_options_rec.TAX_USE_ACCOUNT_EXC_RATE_FLAG ;
614 sysinfo.sysparam.TAX_USE_SYSTEM_EXC_RATE_FLAG :=sysinfo.ar_product_options_rec.TAX_USE_SYSTEM_EXC_RATE_FLAG ;
615 sysinfo.TAX_HIER_SITE_EXC_RATE :=sysinfo.ar_product_options_rec.TAX_HIER_SITE_EXC_RATE ;
616 sysinfo.sysparam.TAX_HIER_CUST_EXC_RATE :=sysinfo.ar_product_options_rec.TAX_HIER_CUST_EXC_RATE ;
617 sysinfo.sysparam.TAX_HIER_PROD_EXC_RATE :=sysinfo.ar_product_options_rec.TAX_HIER_PROD_EXC_RATE ;
618 sysinfo.TAX_HIER_ACCOUNT_EXC_RATE :=sysinfo.ar_product_options_rec.TAX_HIER_ACCOUNT_EXC_RATE ;
619 sysinfo.sysparam.TAX_HIER_SYSTEM_EXC_RATE :=sysinfo.ar_product_options_rec.TAX_HIER_SYSTEM_EXC_RATE ;
620   */
621 
622   /* Take the following columns from Event Class Options:
623       Enforce tax from Revenue Account
624       Calculation level - 'LINE' for LTE
625   */
626 
627     begin
628 
629        SELECT
630            DEFAULT_GROUPING_RULE_ID ,
631            SALESREP_REQUIRED_FLAG ,
632            ATTRIBUTE11 ,
633            ATTRIBUTE12 ,
634            ATTRIBUTE13 ,
635            ATTRIBUTE14 ,
636            ATTRIBUTE15 ,
637            AUTO_REC_INVOICES_PER_COMMIT ,
638            AUTO_REC_RECEIPTS_PER_COMMIT ,
639           PAY_UNRELATED_INVOICES_FLAG, -- TAX_CACHE
640           PRINT_HOME_COUNTRY_FLAG ,
641           LOCATION_TAX_ACCOUNT ,
642           FROM_POSTAL_CODE ,
643           TO_POSTAL_CODE ,
644           TAX_REGISTRATION_NUMBER ,
645           POPULATE_GL_SEGMENTS_FLAG ,
646           UNALLOCATED_REVENUE_CCID ,
647           ORG_ID ,
648           ATTRIBUTE9 ,
649           ATTRIBUTE10 ,
650           CALC_DISCOUNT_ON_LINES_FLAG ,
651            CHANGE_PRINTED_INVOICE_FLAG ,
652            CODE_COMBINATION_ID_LOSS ,
653            CREATE_RECIPROCAL_FLAG ,
654            DEFAULT_COUNTRY ,
655            DEFAULT_TERRITORY ,
656            GENERATE_CUSTOMER_NUMBER ,
657            INVOICE_DELETION_FLAG ,
658            LOCATION_STRUCTURE_ID ,
659            SITE_REQUIRED_FLAG ,
660            TAX_ALLOW_COMPOUND_FLAG ,
661            TAX_INVOICE_PRINT ,
662            TAX_METHOD ,
663            TAX_USE_CUSTOMER_EXEMPT_FLAG ,
664            TAX_USE_CUST_EXC_RATE_FLAG ,
665            TAX_USE_LOC_EXC_RATE_FLAG ,
666            TAX_USE_PRODUCT_EXEMPT_FLAG ,
667            TAX_USE_PROD_EXC_RATE_FLAG ,
668            TAX_USE_SITE_EXC_RATE_FLAG ,
669            AI_LOG_FILE_MESSAGE_LEVEL ,
670            AI_MAX_MEMORY_IN_BYTES ,
671            AI_ACCT_FLEX_KEY_LEFT_PROMPT ,
672            AI_MTL_ITEMS_KEY_LEFT_PROMPT ,
673            AI_TERRITORY_KEY_LEFT_PROMPT ,
674            AI_PURGE_INTERFACE_TABLES_FLAG ,
675            AI_ACTIVATE_SQL_TRACE_FLAG ,
676            SET_OF_BOOKS_ID ,
677            CREATED_BY ,
678            CREATION_DATE ,
679            LAST_UPDATED_BY ,
680            LAST_UPDATE_DATE ,
681            LAST_UPDATE_LOGIN ,
682            ACCOUNTING_METHOD ,
683            ACCRUE_INTEREST ,
684            UNEARNED_DISCOUNT ,
685            PARTIAL_DISCOUNT_FLAG ,
686            PRINT_REMIT_TO ,
687            DEFAULT_CB_DUE_DATE ,
688            AUTO_SITE_NUMBERING ,
689            CASH_BASIS_SET_OF_BOOKS_ID ,
690            CODE_COMBINATION_ID_GAIN ,
691            AUTOCASH_HIERARCHY_ID ,
692            RUN_GL_JOURNAL_IMPORT_FLAG ,
693            CER_SPLIT_AMOUNT ,
694            CER_DSO_DAYS ,
695            POSTING_DAYS_PER_CYCLE ,
696            ADDRESS_VALIDATION ,
697            ATTRIBUTE1 ,
698            ATTRIBUTE2 ,
699            ATTRIBUTE_CATEGORY ,
700            ATTRIBUTE3 ,
701            ATTRIBUTE4 ,
702            ATTRIBUTE5 ,
703            ATTRIBUTE6 ,
704            ATTRIBUTE7 ,
705            ATTRIBUTE8 ,
706            TAX_CODE ,
707            TAX_CURRENCY_CODE ,
708            TAX_HEADER_LEVEL_FLAG ,
709            TAX_MINIMUM_ACCOUNTABLE_UNIT ,
710            TAX_PRECISION ,
711            TAX_ROUNDING_RULE ,
712            GLOBAL_ATTRIBUTE1 ,
713            GLOBAL_ATTRIBUTE2 ,
714            GLOBAL_ATTRIBUTE3 ,
715            GLOBAL_ATTRIBUTE4 ,
716            GLOBAL_ATTRIBUTE5 ,
717            GLOBAL_ATTRIBUTE6 ,
718            GLOBAL_ATTRIBUTE7 ,
719            GLOBAL_ATTRIBUTE8 ,
720            GLOBAL_ATTRIBUTE9 ,
721            GLOBAL_ATTRIBUTE10 ,
722            GLOBAL_ATTRIBUTE11 ,
723            GLOBAL_ATTRIBUTE12 ,
724            GLOBAL_ATTRIBUTE13 ,
725            GLOBAL_ATTRIBUTE14 ,
726            GLOBAL_ATTRIBUTE15 ,
727            GLOBAL_ATTRIBUTE16 ,
728            GLOBAL_ATTRIBUTE17 ,
729            GLOBAL_ATTRIBUTE18 ,
730            GLOBAL_ATTRIBUTE19 ,
731            GLOBAL_ATTRIBUTE20 ,
732            GLOBAL_ATTRIBUTE_CATEGORY ,
733            TAX_ROUNDING_ALLOW_OVERRIDE ,
734            RULE_SET_ID ,
735            TAX_USE_ACCOUNT_EXC_RATE_FLAG ,
736            TAX_USE_SYSTEM_EXC_RATE_FLAG ,
737            TAX_HIER_SITE_EXC_RATE ,
738            TAX_HIER_CUST_EXC_RATE ,
739            TAX_HIER_PROD_EXC_RATE ,
740            TAX_HIER_ACCOUNT_EXC_RATE ,
741            TAX_HIER_SYSTEM_EXC_RATE ,
742            TAX_DATABASE_VIEW_SET ,
743            INCLUSIVE_TAX_USED ,
744            CODE_COMBINATION_ID_ROUND ,
745            TRX_HEADER_LEVEL_ROUNDING ,
746            TRX_HEADER_ROUND_CCID ,
747            FINCHRG_RECEIVABLES_TRX_ID ,
748            SALES_TAX_GEOCODE ,
749            BILLS_RECEIVABLE_ENABLED_FLAG ,
750            TA_INSTALLED_FLAG ,
751            REV_TRANSFER_CLEAR_CCID ,
752            SALES_CREDIT_PCT_LIMIT
753            --MAX_WRTOFF_AMOUNT ,
754            --IREC_CC_RECEIPT_METHOD_ID ,
755            --SHOW_BILLING_NUMBER_FLAG ,
756            --CROSS_CURRENCY_RATE_TYPE ,
757            --DOCUMENT_SEQ_GEN_LEVEL ,
758            --CALC_TAX_ON_CREDIT_MEMO_FLAG ,
759            --IREC_BA_RECEIPT_METHOD_ID
760       into l_ar_sys_param_rec from ar_system_parameters_all
761       where org_id = p_event_class_rec.internal_organization_id;
762 
763 --           sysinfo.sysparam.DEFAULT_GROUPING_RULE_ID :=l_ar_sys_param_rec.DEFAULT_GROUPING_RULE_ID ;
764 --           sysinfo.sysparam.SALESREP_REQUIRED_FLAG :=l_ar_sys_param_rec.SALESREP_REQUIRED_FLAG ;
765            sysinfo.sysparam.ATTRIBUTE11	:=l_ar_sys_param_rec.ATTRIBUTE11 ;
766            sysinfo.sysparam.ATTRIBUTE12:=l_ar_sys_param_rec.ATTRIBUTE12 ;
767            sysinfo.sysparam.ATTRIBUTE13 :=l_ar_sys_param_rec.ATTRIBUTE13 ;
768            sysinfo.sysparam.ATTRIBUTE14 :=l_ar_sys_param_rec.ATTRIBUTE14 ;
769            sysinfo.sysparam.ATTRIBUTE15 :=l_ar_sys_param_rec.ATTRIBUTE15 ;
770 --           sysinfo.sysparam.AUTO_REC_INVOICES_PER_COMMIT :=l_ar_sys_param_rec.AUTO_REC_INVOICES_PER_COMMIT ;
771 --           sysinfo.sysparam.AUTO_REC_RECEIPTS_PER_COMMIT :=l_ar_sys_param_rec.AUTO_REC_RECEIPTS_PER_COMMIT ;
772 --           sysinfo.sysparam.PAY_UNRELATED_INVOICES_FLAG :=l_ar_sys_param_rec.PAY_UNRELATED_INVOICES_FLAG  ;
773 --           sysinfo.sysparam.PRINT_HOME_COUNTRY_FLAG :=l_ar_sys_param_rec.PRINT_HOME_COUNTRY_FLAG ;
774            sysinfo.sysparam.LOCATION_TAX_ACCOUNT :=l_ar_sys_param_rec.LOCATION_TAX_ACCOUNT ;
775            sysinfo.sysparam.FROM_POSTAL_CODE :=l_ar_sys_param_rec.FROM_POSTAL_CODE ;
776            sysinfo.sysparam.TO_POSTAL_CODE :=l_ar_sys_param_rec.TO_POSTAL_CODE ;
777 --           sysinfo.sysparam.TAX_REGISTRATION_NUMBER :=l_ar_sys_param_rec. TAX_REGISTRATION_NUMBER ;
778 --           sysinfo.sysparam.POPULATE_GL_SEGMENTS_FLAG :=l_ar_sys_param_rec.POPULATE_GL_SEGMENTS_FLAG ;
779 --           sysinfo.sysparam.UNALLOCATED_REVENUE_CCID :=l_ar_sys_param_rec.UNALLOCATED_REVENUE_CCID ;
780            sysinfo.sysparam.ORG_ID :=l_ar_sys_param_rec.ORG_ID ;
781            sysinfo.sysparam.ATTRIBUTE9 :=l_ar_sys_param_rec.ATTRIBUTE9 ;
782            sysinfo.sysparam.ATTRIBUTE10 :=l_ar_sys_param_rec.ATTRIBUTE10 ;
783 --           sysinfo.sysparam.CALC_DISCOUNT_ON_LINES_FLAG :=l_ar_sys_param_rec.CALC_DISCOUNT_ON_LINES_FLAG ;
784 --           sysinfo.sysparam.CHANGE_PRINTED_INVOICE_FLAG :=l_ar_sys_param_rec.CHANGE_PRINTED_INVOICE_FLAG ;
785 --           sysinfo.sysparam.CODE_COMBINATION_ID_LOSS:=l_ar_sys_param_rec. CODE_COMBINATION_ID_LOSS ;
786 --          sysinfo.sysparam.CREATE_RECIPROCAL_FLAG :=l_ar_sys_param_rec.CREATE_RECIPROCAL_FLAG ;
787            sysinfo.sysparam.DEFAULT_COUNTRY :=l_ar_sys_param_rec.DEFAULT_COUNTRY ;
788 --           sysinfo.sysparam.DEFAULT_TERRITORY :=l_ar_sys_param_rec.DEFAULT_TERRITORY ;
789 --           sysinfo.sysparam.GENERATE_CUSTOMER_NUMBER :=l_ar_sys_param_rec.GENERATE_CUSTOMER_NUMBER ;
790 --           sysinfo.sysparam.INVOICE_DELETION_FLAG :=l_ar_sys_param_rec.INVOICE_DELETION_FLAG ;
791            sysinfo.sysparam.LOCATION_STRUCTURE_ID :=l_ar_sys_param_rec.LOCATION_STRUCTURE_ID ;
792 --           sysinfo.sysparam.SITE_REQUIRED_FLAG :=l_ar_sys_param_rec.SITE_REQUIRED_FLAG ;
793 --           sysinfo.sysparam.TAX_ALLOW_COMPOUND_FLAG :=l_ar_sys_param_rec.TAX_ALLOW_COMPOUND_FLAG ;
794            sysinfo.sysparam. TAX_INVOICE_PRINT:=l_ar_sys_param_rec.TAX_INVOICE_PRINT ;
795 --           sysinfo.sysparam.TAX_METHOD :=l_ar_sys_param_rec.TAX_METHOD ;
796 --           sysinfo.sysparam.TAX_USE_CUSTOMER_EXEMPT_FLAG :=l_ar_sys_param_rec.TAX_USE_CUSTOMER_EXEMPT_FLAG ;
797 --           sysinfo.sysparam.TAX_USE_CUST_EXC_RATE_FLAG :=l_ar_sys_param_rec.TAX_USE_CUST_EXC_RATE_FLAG ;
798            sysinfo.sysparam.TAX_USE_LOC_EXC_RATE_FLAG :=l_ar_sys_param_rec.TAX_USE_LOC_EXC_RATE_FLAG ;
799 --           sysinfo.sysparam.TAX_USE_PRODUCT_EXEMPT_FLAG:=l_ar_sys_param_rec.TAX_USE_PRODUCT_EXEMPT_FLAG ;
800            sysinfo.sysparam.TAX_USE_PROD_EXC_RATE_FLAG :=l_ar_sys_param_rec.TAX_USE_PROD_EXC_RATE_FLAG ;
801            sysinfo.sysparam.TAX_USE_SITE_EXC_RATE_FLAG:=l_ar_sys_param_rec.TAX_USE_SITE_EXC_RATE_FLAG ;
802 --           sysinfo.sysparam.AI_LOG_FILE_MESSAGE_LEVEL :=l_ar_sys_param_rec.AI_LOG_FILE_MESSAGE_LEVEL ;
803 --           sysinfo.sysparam.AI_MAX_MEMORY_IN_BYTES :=l_ar_sys_param_rec.AI_MAX_MEMORY_IN_BYTES ;
804 --           sysinfo.sysparam.AI_ACCT_FLEX_KEY_LEFT_PROMPT :=l_ar_sys_param_rec.AI_ACCT_FLEX_KEY_LEFT_PROMPT ;
805 --           sysinfo.sysparam.AI_MTL_ITEMS_KEY_LEFT_PROMPT :=l_ar_sys_param_rec.AI_MTL_ITEMS_KEY_LEFT_PROMPT ;
806 --           sysinfo.sysparam.AI_TERRITORY_KEY_LEFT_PROMPT :=l_ar_sys_param_rec.AI_TERRITORY_KEY_LEFT_PROMPT ;
807 --           sysinfo.sysparam.AI_PURGE_INTERFACE_TABLES_FLAG :=l_ar_sys_param_rec.AI_PURGE_INTERFACE_TABLES_FLAG ;
808 --           sysinfo.sysparam.AI_ACTIVATE_SQL_TRACE_FLAG :=l_ar_sys_param_rec.AI_ACTIVATE_SQL_TRACE_FLAG ;
809            sysinfo.sysparam.SET_OF_BOOKS_ID :=l_ar_sys_param_rec.SET_OF_BOOKS_ID ;
810 --           sysinfo.sysparam.CREATED_BY :=l_ar_sys_param_rec.CREATED_BY ;
811 --           sysinfo.sysparam.CREATION_DATE :=l_ar_sys_param_rec.CREATION_DATE ;
812 --           sysinfo.sysparam.LAST_UPDATED_BY :=l_ar_sys_param_rec.LAST_UPDATED_BY ;
813 --           sysinfo.sysparam.LAST_UPDATE_DATE :=l_ar_sys_param_rec. LAST_UPDATE_DATE ;
814 --           sysinfo.sysparam.LAST_UPDATE_LOGIN :=l_ar_sys_param_rec.LAST_UPDATE_LOGIN ;
815 --           sysinfo.sysparam.ACCOUNTING_METHOD :=l_ar_sys_param_rec.ACCOUNTING_METHOD ;
816 --           sysinfo.sysparam.ACCRUE_INTEREST :=l_ar_sys_param_rec.ACCRUE_INTEREST ;
817 --           sysinfo.sysparam.UNEARNED_DISCOUNT :=l_ar_sys_param_rec.UNEARNED_DISCOUNT ;
818 --           sysinfo.sysparam.PARTIAL_DISCOUNT_FLAG :=l_ar_sys_param_rec.PARTIAL_DISCOUNT_FLAG ;
819 --           sysinfo.sysparam.PRINT_REMIT_TO :=l_ar_sys_param_rec.PRINT_REMIT_TO ;
820 --           sysinfo.sysparam.DEFAULT_CB_DUE_DATE :=l_ar_sys_param_rec.DEFAULT_CB_DUE_DATE ;
821 --           sysinfo.sysparam.AUTO_SITE_NUMBERING :=l_ar_sys_param_rec.AUTO_SITE_NUMBERING ;
822 --           sysinfo.sysparam.CASH_BASIS_SET_OF_BOOKS_ID :=l_ar_sys_param_rec.CASH_BASIS_SET_OF_BOOKS_ID ;
823 --           sysinfo.sysparam.CODE_COMBINATION_ID_GAIN :=l_ar_sys_param_rec.CODE_COMBINATION_ID_GAIN ;
824 --           sysinfo.sysparam.AUTOCASH_HIERARCHY_ID :=l_ar_sys_param_rec.AUTOCASH_HIERARCHY_ID ;
825 --           sysinfo.sysparam.RUN_GL_JOURNAL_IMPORT_FLAG:=l_ar_sys_param_rec.RUN_GL_JOURNAL_IMPORT_FLAG ;
826 --           sysinfo.sysparam.CER_SPLIT_AMOUNT :=l_ar_sys_param_rec.CER_SPLIT_AMOUNT ;
827 --           sysinfo.sysparam.CER_DSO_DAYS :=l_ar_sys_param_rec.  CER_DSO_DAYS ;
828 --           sysinfo.sysparam.POSTING_DAYS_PER_CYCLE :=l_ar_sys_param_rec.POSTING_DAYS_PER_CYCLE ;
829            sysinfo.sysparam.ADDRESS_VALIDATION:=l_ar_sys_param_rec.ADDRESS_VALIDATION ;
830            sysinfo.sysparam.ATTRIBUTE1 :=l_ar_sys_param_rec.ATTRIBUTE1 ;
831            sysinfo.sysparam.ATTRIBUTE2 :=l_ar_sys_param_rec.ATTRIBUTE2 ;
832            sysinfo.sysparam.ATTRIBUTE_CATEGORY :=l_ar_sys_param_rec.ATTRIBUTE_CATEGORY ;
833            sysinfo.sysparam.ATTRIBUTE3 :=l_ar_sys_param_rec.ATTRIBUTE3 ;
834            sysinfo.sysparam.ATTRIBUTE4 :=l_ar_sys_param_rec.ATTRIBUTE4 ;
835            sysinfo.sysparam.ATTRIBUTE5  :=l_ar_sys_param_rec.ATTRIBUTE5 ;
836            sysinfo.sysparam.ATTRIBUTE6 :=l_ar_sys_param_rec.ATTRIBUTE6 ;
837            sysinfo.sysparam.ATTRIBUTE7 :=l_ar_sys_param_rec.ATTRIBUTE7 ;
838            sysinfo.sysparam.ATTRIBUTE8 :=l_ar_sys_param_rec.ATTRIBUTE8 ;
839            sysinfo.sysparam.TAX_CODE :=l_ar_sys_param_rec.TAX_CODE ;
840 --           sysinfo.sysparam.TAX_CURRENCY_CODE :=l_ar_sys_param_rec.TAX_CURRENCY_CODE ;
841 --           sysinfo.sysparam.TAX_HEADER_LEVEL_FLAG:=l_ar_sys_param_rec.TAX_HEADER_LEVEL_FLAG ;
842 --           sysinfo.sysparam.TAX_MINIMUM_ACCOUNTABLE_UNIT :=l_ar_sys_param_rec.TAX_MINIMUM_ACCOUNTABLE_UNIT ;
843 --           sysinfo.sysparam.TAX_PRECISION :=l_ar_sys_param_rec.TAX_PRECISION ;
844 --           sysinfo.sysparam.TAX_ROUNDING_RULE :=l_ar_sys_param_rec.TAX_ROUNDING_RULE ;
845            sysinfo.sysparam.GLOBAL_ATTRIBUTE1 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE1 ;
846            sysinfo.sysparam.GLOBAL_ATTRIBUTE2 :=l_ar_sys_param_rec. GLOBAL_ATTRIBUTE2 ;
847            sysinfo.sysparam.GLOBAL_ATTRIBUTE3 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE3 ;
848            sysinfo.sysparam.GLOBAL_ATTRIBUTE4 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE4 ;
849            sysinfo.sysparam.GLOBAL_ATTRIBUTE5 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE5 ;
850            sysinfo.sysparam.GLOBAL_ATTRIBUTE6 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE6 ;
851            sysinfo.sysparam.GLOBAL_ATTRIBUTE7 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE7 ;
852            sysinfo.sysparam.GLOBAL_ATTRIBUTE8 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE8 ;
853            sysinfo.sysparam.GLOBAL_ATTRIBUTE9 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE9 ;
854            sysinfo.sysparam.GLOBAL_ATTRIBUTE10 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE10 ;
855            sysinfo.sysparam.GLOBAL_ATTRIBUTE11 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE11 ;
856            sysinfo.sysparam.GLOBAL_ATTRIBUTE12 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE12 ;
857            sysinfo.sysparam.GLOBAL_ATTRIBUTE13 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE13 ;
858            sysinfo.sysparam.GLOBAL_ATTRIBUTE14 :=l_ar_sys_param_rec. GLOBAL_ATTRIBUTE14 ;
859            sysinfo.sysparam.GLOBAL_ATTRIBUTE15 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE15 ;
860            sysinfo.sysparam.GLOBAL_ATTRIBUTE16 :=l_ar_sys_param_rec. GLOBAL_ATTRIBUTE16 ;
861            sysinfo.sysparam.GLOBAL_ATTRIBUTE17 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE17 ;
862            sysinfo.sysparam.GLOBAL_ATTRIBUTE18 :=l_ar_sys_param_rec. GLOBAL_ATTRIBUTE18 ;
863            sysinfo.sysparam.GLOBAL_ATTRIBUTE19 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE19 ;
864            sysinfo.sysparam.GLOBAL_ATTRIBUTE20 :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE20 ;
865            sysinfo.sysparam.GLOBAL_ATTRIBUTE_CATEGORY :=l_ar_sys_param_rec.GLOBAL_ATTRIBUTE_CATEGORY ;
866            sysinfo.sysparam.TAX_ROUNDING_ALLOW_OVERRIDE :=l_ar_sys_param_rec.TAX_ROUNDING_ALLOW_OVERRIDE ;
867            sysinfo.sysparam.RULE_SET_ID :=l_ar_sys_param_rec. RULE_SET_ID ;
868            sysinfo.sysparam.TAX_USE_ACCOUNT_EXC_RATE_FLAG :=l_ar_sys_param_rec.TAX_USE_ACCOUNT_EXC_RATE_FLAG ;
869            sysinfo.sysparam.TAX_USE_SYSTEM_EXC_RATE_FLAG :=l_ar_sys_param_rec.TAX_USE_SYSTEM_EXC_RATE_FLAG ;
870 --           sysinfo.sysparam.TAX_HIER_SITE_EXC_RATE :=l_ar_sys_param_rec.TAX_HIER_SITE_EXC_RATE ;
871 --           sysinfo.sysparam.TAX_HIER_CUST_EXC_RATE :=l_ar_sys_param_rec.TAX_HIER_CUST_EXC_RATE ;
872 --           sysinfo.sysparam.TAX_HIER_PROD_EXC_RATE :=l_ar_sys_param_rec.TAX_HIER_PROD_EXC_RATE ;
873 --           sysinfo.sysparam.TAX_HIER_ACCOUNT_EXC_RATE :=l_ar_sys_param_rec.TAX_HIER_ACCOUNT_EXC_RATE ;
874 --           sysinfo.sysparam.TAX_HIER_SYSTEM_EXC_RATE :=l_ar_sys_param_rec.TAX_HIER_SYSTEM_EXC_RATE ;
875            sysinfo.sysparam.TAX_DATABASE_VIEW_SET :=l_ar_sys_param_rec.TAX_DATABASE_VIEW_SET ;
876            sysinfo.sysparam.INCLUSIVE_TAX_USED :=l_ar_sys_param_rec.INCLUSIVE_TAX_USED ;
877 --           sysinfo.sysparam.CODE_COMBINATION_ID_ROUND :=l_ar_sys_param_rec.CODE_COMBINATION_ID_ROUND ;
878 --           sysinfo.sysparam.TRX_HEADER_LEVEL_ROUNDING :=l_ar_sys_param_rec.TRX_HEADER_LEVEL_ROUNDING ;
879 --           sysinfo.sysparam.TRX_HEADER_ROUND_CCID :=l_ar_sys_param_rec.  TRX_HEADER_ROUND_CCID ;
880 --           sysinfo.sysparam.FINCHRG_RECEIVABLES_TRX_ID :=l_ar_sys_param_rec. FINCHRG_RECEIVABLES_TRX_ID ;
881 --           sysinfo.sysparam.SALES_TAX_GEOCODE :=l_ar_sys_param_rec. SALES_TAX_GEOCODE ;
882 --           sysinfo.sysparam.BILLS_RECEIVABLE_ENABLED_FLAG :=l_ar_sys_param_rec.  BILLS_RECEIVABLE_ENABLED_FLAG ;
883 --           sysinfo.sysparam.TA_INSTALLED_FLAG :=l_ar_sys_param_rec.TA_INSTALLED_FLAG ;
884 --           sysinfo.sysparam.REV_TRANSFER_CLEAR_CCID :=l_ar_sys_param_rec. REV_TRANSFER_CLEAR_CCID ;
885 --           sysinfo.sysparam.SALES_CREDIT_PCT_LIMIT :=l_ar_sys_param_rec. SALES_CREDIT_PCT_LIMIT;
886     exception when no_data_found then
887        IF (g_level_statement >= g_current_runtime_level) THEN
888        	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','EXCEPTION: NO_DATA_FOUND IN SYSTEM PARAMETERS  ' );
889        END IF;
890        FND_MESSAGE.set_name('AR','AR_NO_ROW_IN_SYSTEM_PARAMETERS');
891        APP_EXCEPTION.raise_exception;
892        RAISE;
893     end;
894 
895 
896    /* bug fix 3142794
897     -- if the org_id has not changed, then do nothing, return.
898     IF l_last_org_id = sysinfo.sysparam.org_id THEN
899         return;
900     END IF;
901     */
902 
903    -- pg_i := 0;
904 
905     --tax_info_rec.DELETE;
906     --tax_gbl_rec.DELETE;
907     --tax_rec_tbl.DELETE;
908     --tax_info_rec_tbl.DELETE;
909     --old_line_rec.DELETE;
910     --new_line_rec.DELETE;
911 
912     BEGIN
913       SELECT sob.chart_of_accounts_id,
914              sob.currency_code,
915              c.precision,
916              c.minimum_accountable_unit
917       INTO   l_chart_of_accounts_id,
918              l_functional_currency,
919              l_base_precision,
920              l_base_min_acc_unit
921       FROM   gl_sets_of_books sob, fnd_currencies c
922       WHERE  sob.set_of_books_id = sysinfo.sysparam.set_of_books_id
923       AND    sob.currency_code = c.currency_code;
924 
925    EXCEPTION
926      WHEN NO_DATA_FOUND THEN
927        -- test for reasons why failure occured
928        begin  --  Test 1: Check row exists in gl sets of books
929            select  sob.set_of_books_id
930            into    l_sob_test
931            from    gl_sets_of_books sob
932            where   sob.set_of_books_id = sysinfo.sysparam.set_of_books_id;
933        exception when no_data_found then
934            IF (g_level_statement >= g_current_runtime_level) THEN
935            	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','EXCEPTION: NO_DATA_FOUND IN SET OF BOOKS ' );
936            END IF;
937            FND_MESSAGE.set_name('AR','AR_NO_ROW_IN_GL_SET_OF_BOOKS');
938            APP_EXCEPTION.raise_exception;
939            RAISE;
940        end;
941 
942        -- Test 1 passed therefore currency must not be defined
943        IF (g_level_statement >= g_current_runtime_level) THEN
944        	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','EXCEPTION: NO_DATA_FOUND IN CURRENCIES ' );
945        END IF;
946        FND_MESSAGE.set_name('AR','AR_NO_ROW_IN_FND_CURRENCIES');
947        APP_EXCEPTION.raise_exception;
948        RAISE; --end of WHEN NO DATA FOUND
949    END;
950 
951 
952 	sysinfo.chart_of_accounts_id	:= l_chart_of_accounts_id;
953 	sysinfo.base_precision		:= l_base_precision;
954 	sysinfo.min_accountable_unit	:= l_base_min_acc_unit;
955 
956 	sysinfo.func_precision		:= sysinfo.base_precision;
957 	sysinfo.base_currency_code      := l_functional_currency;
958 
959 /*      nipatel added for eTax uptake;
960         It is enforced in System Options form that tax currency code should
961         be the same as functional currency   */
962 
963 	If sysinfo.sysparam.tax_precision is not NULL OR
964 	   sysinfo.sysparam.tax_minimum_accountable_unit is NOT NULL
965 	then
966 	   sysinfo.sysparam.tax_currency_code := sysinfo.base_currency_code;
967 	end if;
968 
969 /* nipatel sysinfo.tax_view_Set is obsolete after eTax uptake
970 	IF nvl(sysinfo.sysparam.tax_database_view_set, 'O') = 'O' THEN
971 		sysinfo.tax_view_set := NULL;	-- Oracle tax views
972 	ELSE
973 		sysinfo.tax_view_set := sysinfo.sysparam.tax_database_view_set;
974 	END IF;
975 */
976 
977 	-- allow multiple inclusive
978 	-- only for Latin America tax method.
979 	if (sysinfo.sysparam.tax_method = MTHD_LATIN) then
980 		sysinfo.allow_multiple_inclusive := 'Y';
981 	else
982 		sysinfo.allow_multiple_inclusive := 'N';
983 	end if;
984 
985   EXCEPTION
986     WHEN OTHERS THEN
987 	IF (g_level_statement >= g_current_runtime_level) THEN
988 		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Error Getting system information');
989 	END IF;
990  	RAISE;
991   END; -- Get System info
992 
993 
994   --
995   -- Get Profile Info
996   --
997   -- bug 5120920 - use oe_sys_parameters.value();
998   l_master_org_id := oe_sys_parameters.value('MASTER_ORGANIZATION_ID', p_event_class_rec.internal_organization_id);
999 
1000   If l_master_org_id is NULL then
1001            IF (g_level_unexpected  >= g_current_runtime_level ) THEN
1002            	FND_LOG.STRING(g_level_unexpected,
1003                                'ZX.PLSQL.ZX_AR_TAX_CLASSIFICATN_DEF_PKG.initialize',
1004                                'Error Getting OE Profile information');
1005            END IF;
1006          -- Bug 2185315 - added fnd_message so error will reflect on the form
1007            FND_MESSAGE.set_name('AR','AR_NO_OM_MASTER_ORG');  -- Bug 3151551
1008            APP_EXCEPTION.raise_exception;
1009   End if;
1010 
1011   profinfo.so_organization_id := l_master_org_id;
1012   --oe_profile.get('SO_ORGANIZATION_ID', profinfo.so_organization_id);
1013 
1014   BEGIN
1015 	IF ( arp_global.program_application_id IS NULL ) THEN
1016 		profinfo.application_id := -1;
1017 	ELSE
1018 		profinfo.application_id := arp_global.program_application_id;
1019 	END IF;
1020 
1021 	IF ( arp_global.user_id IS NULL ) THEN
1022 		profinfo.user_id := -1;
1023 	ELSE
1024 		profinfo.user_id := arp_global.user_id;
1025 	END IF;
1026   EXCEPTION
1027     WHEN OTHERS THEN
1028 	IF (g_level_statement >= g_current_runtime_level) THEN
1029 		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Error Getting Profile information');
1030 	END IF;
1031  	RAISE;
1032   END;
1033 
1034  /* not needed foir LTE
1035   --
1036   -- Location Flex Info
1037   --
1038   BEGIN
1039 	tax_gbl_rec.tax_accnt_column := arp_flex.expand(arp_flex.location,
1040 					'TAX_ACCOUNT', ',', '%COLUMN%');
1041         IF (g_level_statement >= g_current_runtime_level) THEN
1042         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','tax_accnt_column: '||tax_gbl_rec.tax_accnt_column);
1043         END IF;
1044 
1045   EXCEPTION
1046     WHEN OTHERS THEN
1047 	IF (g_level_statement >= g_current_runtime_level) THEN
1048 		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Error Getting Tax Account Qualifier');
1049 	END IF;
1050  	RAISE;
1051   END;
1052 
1053   --
1054   -- GL Natural Account info
1055   --
1056   BEGIN
1057         tax_gbl_rec.natural_acct_column := arp_flex.expand(arp_flex.gl,
1058                                             'GL_ACCOUNT', ',', '%COLUMN%');
1059   EXCEPTION
1060     WHEN OTHERS THEN
1061         IF (g_level_statement >= g_current_runtime_level) THEN
1062         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Error Getting GL Natural Account Segment');
1063         END IF;
1064 
1065         RAISE;
1066 
1067   END;
1068 */
1069 
1070 
1071 
1072   IF (g_level_statement >= g_current_runtime_level) THEN
1073   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Setting Tax processing flags!');
1074   END IF;
1075   sysinfo.insert_tax_lines := 'Y';
1076   sysinfo.call_auto_acctng := 'Y';
1077   tax_gbl_rec.one_err_msg_flag := 'Y';
1078 
1079 --  arp_tax_group.initialize;
1080 
1081   IF (g_level_procedure >= g_current_runtime_level ) THEN
1082     FND_LOG.STRING(g_level_procedure,
1083                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize.END',
1084                      'ZX_PRODUCT_INTEGRATION_PKG: initialize (-)');
1085   END IF;
1086 
1087 EXCEPTION
1088   WHEN OTHERS THEN
1089     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1090     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1091       FND_LOG.STRING(g_level_unexpected,
1092                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize',
1093                    SQLCODE || ' ; ' || SQLERRM);
1094     END IF;
1095 
1096     IF (g_level_procedure >= g_current_runtime_level ) THEN
1097       FND_LOG.STRING(g_level_procedure,
1098                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize.END',
1099                      'ZX_PRODUCT_INTEGRATION_PKG: initialize (-)');
1100     END IF;
1101 
1102 END initialize;
1103 
1104 /*===========================================================================+
1105  | PROCEDURE                                                                 |
1106  |    calculate_tax                                                          |
1107  |                                                                           |
1108  | DESCRIPTION                                                               |
1109  |    calculate_tax API when transaction come in with no tax                 |
1110  | SCOPE - PUBLIC                                                            |
1111  |                                                                           |
1112  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1113  |                                                                           |
1114  | CALLED FROM                                                               |
1115  |                                                                           |
1116  |                                                                           |
1117  | NOTES                                                                     |
1118  |                                                                           |
1119  | MODIFICATION HISTORY                                                      |
1120  |                                                                           |
1121 +===========================================================================*/
1122 
1123 PROCEDURE calculate_tax (
1124   p_event_class_rec     IN  zx_api_pub.event_class_rec_type,
1125   x_return_status       OUT NOCOPY VARCHAR2
1126 ) IS
1127 
1128 l_tax_calculation_flag    VARCHAR2(1);
1129 
1130 BEGIN
1131 
1132   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1133   IF (g_level_procedure >= g_current_runtime_level ) THEN
1134     FND_LOG.STRING(g_level_procedure,
1135                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.BEGIN',
1136                      'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (+)');
1137   END IF;
1138 
1139   x_return_status := FND_API.G_RET_STS_SUCCESS;
1140 
1141   -- adjustment is not supported for LTE tax method
1142   IF p_event_class_rec.event_class_code = 'ADJUSTMENT' THEN
1143     IF (g_level_procedure >= g_current_runtime_level ) THEN
1144       FND_LOG.STRING(g_level_procedure,
1145                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1146                      'adjustment is not supported for LTE tax method');
1147       FND_LOG.STRING(g_level_procedure,
1148                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1149                      'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (-)');
1150     END IF;
1151     RETURN;
1152   END IF;
1153 
1154   --initialize the cache structure.
1155   initialize (
1156     p_event_class_rec => p_event_class_rec,
1157     x_return_status => x_return_status
1158   );
1159 
1160 
1161   IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1162     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1163       FND_LOG.STRING(g_level_unexpected,
1164                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1165                     'Incorrect return_status after calling ' ||
1166                      'ZX_PRODUCT_INTEGRATION_PKG.initialize()');
1167     END IF;
1168     IF (g_level_procedure >= g_current_runtime_level ) THEN
1169       FND_LOG.STRING(g_level_procedure,
1170                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1171                      'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (-)');
1172     END IF;
1173 
1174     RETURN;
1175   END IF;
1176 
1177   -- error handling mode should already set when reach here
1178   -- zx_api_pub.G_DATA_TRANSFER_MODE := 'TAB';
1179 
1180   IF (g_level_statement >= g_current_runtime_level) THEN
1181     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Count in zx_global_structures_pkg.trx_line_dist_tbl = '||
1182                        NVL(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.LAST, 0));
1183   END IF;
1184 
1185 
1186   FOR l_index IN NVL(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.FIRST, 1) ..
1187                  NVL(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.LAST, 0)
1188   LOOP
1189 
1190     -- for CREATE event and for UPDATE and CREATE line level action in UPDTAE event
1191     -- populate_tax_info_rec
1192     -- call lte to calculate the tax
1193     -- dump the output into detail_tax_lines_gt
1194 
1195     -- getting the tax calculation flag for the org and trx type id to determine if tax needs
1196     -- to be calculated for each line.
1197    BEGIN
1198     SELECT   INV_TYPE.TAX_CALCULATION_FLAG
1199     INTO   l_tax_calculation_flag
1200     FROM   RA_CUST_TRX_TYPES_ALL INV_TYPE
1201     WHERE  INV_TYPE.CUST_TRX_TYPE_ID = zx_global_structures_pkg.trx_line_dist_tbl.receivables_trx_type_id(l_index)
1202     AND  ORG_ID = zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id(l_index);
1203    EXCEPTION
1204     WHEN OTHERS THEN
1205      l_tax_calculation_flag := NULL;
1206    END;
1207 
1208    IF NVL(l_tax_calculation_flag,'N') = 'Y' THEN
1209     calculate_tax_lte (
1210       p_event_class_rec => p_event_class_rec,
1211       p_id_dist_tbl => l_index,
1212       x_return_status => x_return_status
1213     );
1214 
1215     IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1216       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1217         FND_LOG.STRING(g_level_unexpected,
1218                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1219                      'Errored out when calculate tax.');
1220       END IF;
1221       IF (g_level_procedure >= g_current_runtime_level ) THEN
1222         FND_LOG.STRING(g_level_procedure,
1223                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1224                      'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (-)');
1225       END IF;
1226       RETURN;
1227     END IF;
1228    END IF;
1229 
1230   END LOOP;
1231 
1232 
1233 /* TSRM already dumped after the calculation call
1234   -- dump remaining record into the detail_tax_lines_gt
1235   ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt (
1236     x_return_status => x_return_status
1237   );
1238 
1239   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1240     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1241       FND_LOG.STRING(g_level_unexpected,
1242                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1243                     'Incorrect return_status after calling ' ||
1244                     'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt()');
1245       FND_LOG.STRING(g_level_unexpected,
1246                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1247                     'RETURN_STATUS = ' || x_return_status);
1248       FND_LOG.STRING(g_level_unexpected,
1249                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1250                     'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1251     END IF;
1252     RETURN;
1253   END IF;
1254 */
1255   -- delete the store data structure
1256   tax_rec_tbl.delete;
1257   tax_info_out_rec_tbl.delete;
1258 
1259   IF (g_level_procedure >= g_current_runtime_level ) THEN
1260     FND_LOG.STRING(g_level_procedure,
1261                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1262                  'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (-)');
1263   END IF;
1264 
1265 EXCEPTION
1266   WHEN OTHERS THEN
1267     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1268     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1269       FND_LOG.STRING(g_level_unexpected,
1270                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax',
1271                    SQLCODE || ' ; ' || SQLERRM);
1272     END IF;
1273     IF (g_level_procedure >= g_current_runtime_level ) THEN
1274       FND_LOG.STRING(g_level_procedure,
1275                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax.END',
1276                    'ZX_PRODUCT_INTEGRATION_PKG: calculate_tax (-)');
1277     END IF;
1278 END calculate_tax;
1279 
1280 /*===========================================================================+
1281  | PROCEDURE                                                                 |
1282  |    import_document_with_tax                                               |
1283  |                                                                           |
1284  | DESCRIPTION                                                               |
1285  |    Provide import service call from eBusiness Suite product,              |
1286  |    Support transaction line are imported with/without tax lines.          |
1287  | SCOPE - PUBLIC                                                            |
1288  |                                                                           |
1289  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
1290  |                                                                           |
1291  | CALLED FROM                                                               |
1292  |                                                                           |
1293  |                                                                           |
1294  | NOTES                                                                     |
1295  |     currently assume all passing lines belong to one trx                  |
1296  | MODIFICATION HISTORY                                                      |
1297  |                                                                           |
1298 +===========================================================================*/
1299 
1300 PROCEDURE import_document_with_tax (
1301   p_event_class_rec     IN OUT NOCOPY zx_api_pub.event_class_rec_type,
1302   x_return_status       OUT NOCOPY VARCHAR2
1303 ) IS
1304 
1305   l_error_buffer			  VARCHAR2(240);
1306 
1307 BEGIN
1308 
1309   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1310   IF (g_level_procedure >= g_current_runtime_level ) THEN
1311     FND_LOG.STRING(g_level_procedure,
1312                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.BEGIN',
1313                      'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax (+)');
1314   END IF;
1315 
1316   x_return_status := FND_API.G_RET_STS_SUCCESS;
1317 
1318   --initialize the cache structure.
1319   initialize (
1320     p_event_class_rec => p_event_class_rec,
1321     x_return_status => x_return_status
1322   );
1323   IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1324     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1325       FND_LOG.STRING(g_level_unexpected,
1326                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1327                     'Incorrect return_status after calling ' ||
1328                      'ZX_PRODUCT_INTEGRATION_PKG.initialize()');
1329     END IF;
1330     IF (g_level_procedure >= g_current_runtime_level ) THEN
1331       FND_LOG.STRING(g_level_procedure,
1332                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1333                      'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax (-)');
1334     END IF;
1335 
1336     RETURN;
1337   END IF;
1338 
1339   FOR l_index IN NVL(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.FIRST, 1) ..
1340                  NVL(zx_global_structures_pkg.trx_line_dist_tbl.internal_organization_id.LAST, 0)
1341   LOOP
1342 
1343     IF zx_global_structures_pkg.trx_line_dist_tbl.line_level_action(l_index) = 'CREATE_WITH_TAX'
1344     THEN -- for line level action is 'CREATE_WITH_TAX'
1345 
1346       ZX_TDS_CALC_SERVICES_PUB_PKG.initialize (
1347                                  p_event_class_rec ,
1348                                  'LINE'          ,
1349                                  x_return_status   );
1350 
1351       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1352         IF (g_level_procedure >= g_current_runtime_level ) THEN
1353           FND_LOG.STRING(g_level_procedure,
1354                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1355                      'Incorrect return_status when calling '||
1356                      'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize().');
1357         END IF;
1358         IF (g_level_procedure >= g_current_runtime_level ) THEN
1359           FND_LOG.STRING(g_level_procedure,
1360                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1361                        'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax (-)');
1362         END IF;
1363         RETURN;
1364       END IF;
1365 
1366       ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level :='LINE';
1367       -- Check what is the hard coded value for thr party_type
1368       -- and then assign the correpsonding value for the profile.
1369       ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type := 'BILL_TO_PTY_SITE'; --?
1370       ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id := p_event_class_rec.rdng_bill_to_pty_tx_p_st_id;
1371 
1372 
1373       /* Assign LTE Rounding level directly.
1374       ZX_TDS_TAX_ROUNDING_PKG.get_rounding_level(
1375                           p_event_class_rec,
1376                           ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level,
1377                           ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id,
1378                           ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type,
1379                           x_return_status,
1380                           l_error_buffer );
1381 
1382       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1383         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1384           FND_LOG.STRING(g_level_unexpected,
1385                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1386                  'Incorrect return_status after calling ' ||
1387                  'ZX_TDS_TAX_ROUNDING_PKG.get_rounding_level()');
1388           FND_LOG.STRING(g_level_unexpected,
1389                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1390                  'RETURN_STATUS = ' || x_return_status);
1391           FND_LOG.STRING(g_level_unexpected,
1392                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1393                  'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax(-)');
1394         END IF;
1395         RETURN;
1396       END IF;
1397       */
1398 
1399       import_trx_line_with_taxes (
1400         p_event_class_rec => p_event_class_rec,
1401         p_id_dist_tbl     => l_index,
1402         x_return_status   => x_return_status
1403       );
1404 
1405       IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1406         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1407           FND_LOG.STRING(g_level_unexpected,
1408                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1409                        'Errored out when calling import_trx_line_with_taxes().');
1410         END IF;
1411         IF (g_level_procedure >= g_current_runtime_level ) THEN
1412           FND_LOG.STRING(g_level_procedure,
1413                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1414                  'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax(-)');
1415         END IF;
1416         RETURN;
1417       END IF;
1418 
1419     ELSIF zx_global_structures_pkg.trx_line_dist_tbl.line_level_action(l_index) = 'CREATE'
1420     THEN
1421      -- for create line level action
1422 
1423       calculate_tax_lte (
1424         p_event_class_rec => p_event_class_rec,
1425         p_id_dist_tbl => l_index,
1426         x_return_status => x_return_status
1427       );
1428 
1429       IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
1430         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1431           FND_LOG.STRING(g_level_unexpected,
1432                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1433                        'Incorrect return_status after calling ' ||
1434                        'ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte().');
1435         END IF;
1436         IF (g_level_procedure >= g_current_runtime_level ) THEN
1437           FND_LOG.STRING(g_level_procedure,
1438                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1439                  'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax(-)');
1440         END IF;
1441         RETURN;
1442       END IF;
1443 
1444     ELSE -- error out for other line level actions than CREATE and CREAT_WITH_TAX
1445 
1446       x_return_status := FND_API.G_RET_STS_ERROR;
1447       FND_MESSAGE.SET_NAME ('ZX','GENERIC_MESSAGE');
1448       FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','Transaction line level action is invalid.');
1449       ZX_API_PUB.add_msg(
1450           ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
1451 
1452       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1453         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1454           FND_LOG.STRING(g_level_unexpected,
1455                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1456                  'Transaction line level action can only be CREATE or CREATE_WITH_TAX.');
1457           FND_LOG.STRING(g_level_unexpected,
1458                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1459                  'Current transaction line level action is: ' ||
1460                  zx_global_structures_pkg.trx_line_dist_tbl.line_level_action(l_index) );
1461         END IF;
1462         IF (g_level_procedure >= g_current_runtime_level ) THEN
1463           FND_LOG.STRING(g_level_procedure,
1464                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1465                  'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax(-)');
1466         END IF;
1467         RETURN;
1468       END IF;
1469 
1470     END IF;
1471 
1472   END LOOP;
1473 
1474 /* TSRM already dumped after the calculation call
1475   -- dump remaining record into the detail_tax_lines_gt
1476   ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt (
1477     x_return_status => x_return_status
1478   );
1479 
1480   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1481     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1482       FND_LOG.STRING(g_level_unexpected,
1483                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1484                     'Incorrect return_status after calling ' ||
1485                     'dump_detail_tax_lines_into_gt()');
1486       FND_LOG.STRING(g_level_unexpected,
1487                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1488                     'RETURN_STATUS = ' || x_return_status);
1489       FND_LOG.STRING(g_level_unexpected,
1490                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1491                     'ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax(-)');
1492     END IF;
1493     RETURN;
1494   END IF;
1495 */
1496   -- delete the store data structure
1497   tax_rec_tbl.delete;
1498   tax_info_out_rec_tbl.delete;
1499 
1500   IF (g_level_procedure >= g_current_runtime_level ) THEN
1501     FND_LOG.STRING(g_level_procedure,
1502                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1503                  'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax (-)');
1504   END IF;
1505 
1506 EXCEPTION
1507   WHEN OTHERS THEN
1508     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1509     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1510       FND_LOG.STRING(g_level_unexpected,
1511                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax',
1512                    SQLCODE || ' ; ' || SQLERRM);
1513     END IF;
1514     IF (g_level_procedure >= g_current_runtime_level ) THEN
1515       FND_LOG.STRING(g_level_procedure,
1516                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_document_with_tax.END',
1517                    'ZX_PRODUCT_INTEGRATION_PKG: import_document_with_tax (-)');
1518     END IF;
1519 END import_document_with_tax;
1520 
1521 /*===========================================================================+
1522  | PROCEDURE                                                                 |
1523  |   import_trx_line_with_taxes                                              |
1524  |                                                                           |
1525  | DESCRIPTION                                                               |
1526  |   Assumption: All tax lines imported have allocation record in the        |
1527  |   Link table.                                                             |
1528  | MODIFICATION HISTORY                                                      |
1529  |                                                                           |
1530 +===========================================================================*/
1531 
1532 PROCEDURE import_trx_line_with_taxes (
1533  p_event_class_rec          IN          zx_api_pub.event_class_rec_type,
1534  p_id_dist_tbl              IN          NUMBER,
1535  x_return_status            OUT NOCOPY  VARCHAR2) IS
1536 
1537  CURSOR  get_alloc_detail_tax_lines_csr IS
1538   SELECT  taxgt.SUMMARY_TAX_LINE_NUMBER
1539           ,taxgt.INTERNAL_ORGANIZATION_ID
1540           ,taxgt.TAX_REGIME_CODE
1541           ,taxgt.TAX
1542           ,taxgt.TAX_STATUS_CODE
1543           ,taxgt.TAX_RATE_CODE
1544           ,taxgt.TAX_RATE
1545           ,taxgt.TAX_AMT
1546           ,taxgt.TAX_JURISDICTION_CODE
1547           ,taxgt.TAX_AMT_INCLUDED_FLAG
1548           ,taxgt.TAX_RATE_ID
1549           ,taxgt.TAX_PROVIDER_ID
1550           ,taxgt.TAX_EXCEPTION_ID
1551           ,taxgt.TAX_EXEMPTION_ID
1552           ,taxgt.EXEMPT_REASON_CODE
1553           ,taxgt.EXEMPT_CERTIFICATE_NUMBER
1554           ,allocgt.TRX_LEVEL_TYPE
1555           ,allocgt.TRX_LINE_ID
1556           ,allocgt.LINE_AMT
1557    FROM zx_import_tax_lines_gt taxgt,
1558          zx_trx_tax_link_gt allocgt
1559    WHERE taxgt.application_id = p_event_class_rec.application_id
1560      AND taxgt.entity_code = p_event_class_rec.entity_code
1561      AND taxgt.event_class_code = p_event_class_rec.event_class_code
1562      AND taxgt.trx_id = p_event_class_rec.trx_id
1563      AND taxgt.tax_line_allocation_flag = 'Y'
1564      AND allocgt.application_id = taxgt.application_id
1565      AND allocgt.event_class_code = taxgt.event_class_code
1566      AND allocgt.entity_code = taxgt.entity_code
1567      AND allocgt.trx_id = taxgt.trx_id
1568      AND allocgt.summary_tax_line_number = taxgt.summary_tax_line_number
1569      AND allocgt.trx_line_id = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_id_dist_tbl)
1570      AND allocgt.trx_level_type = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_id_dist_tbl);
1571 
1572  l_new_row_num			  NUMBER;
1573  l_begin_index			  BINARY_INTEGER;
1574  l_end_index			  BINARY_INTEGER;
1575  l_error_buffer			  VARCHAR2(240);
1576 BEGIN
1577 
1578   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1579 
1580   IF (g_level_procedure >= g_current_runtime_level ) THEN
1581     FND_LOG.STRING(g_level_procedure,
1582                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.BEGIN',
1583                   'ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes(+)');
1584   END IF;
1585 
1586   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
1587 
1588   l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST,0);
1589 
1590   FOR tax_line_rec IN get_alloc_detail_tax_lines_csr LOOP
1591 
1592     l_new_row_num := l_new_row_num + 1;
1593 
1594     IF l_begin_index IS NULL THEN
1595       l_begin_index := l_new_row_num;
1596     END IF;
1597 
1598     create_detail_tax_line (
1599                    p_event_class_rec     =>  p_event_class_rec,
1600                    p_tax_line_rec        =>  tax_line_rec,
1601                    p_id_dist_tbl         =>  p_id_dist_tbl,
1602                    p_new_row_num         =>  l_new_row_num,
1603                    x_return_status       =>  x_return_status);
1604 
1605     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1606       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1607         FND_LOG.STRING(g_level_unexpected,
1608                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1609                'Incorrect return_status after calling '||
1610                'create_detail_tax_line()');
1611         FND_LOG.STRING(g_level_unexpected,
1612                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1613                'RETURN_STATUS = ' || x_return_status);
1614         END IF;
1615         IF (g_level_procedure >= g_current_runtime_level ) THEN
1616         FND_LOG.STRING(g_level_procedure,
1617                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.END',
1618                'ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes(-)');
1619       END IF;
1620       RETURN;
1621     END IF;
1622     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1623                       l_new_row_num).tax_amt := tax_line_rec.tax_amt;
1624     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1625             l_new_row_num).unrounded_tax_amt := tax_line_rec.tax_amt;
1626 
1627     -- LTE don't support Tax only Line
1628     -- IF tax_line_rec.line_level_action = 'LINE_INFO_TAX_ONLY' THEN
1629 
1630     --
1631     --   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1632     --                                l_new_row_num).tax_only_line_flag := 'Y';
1633     -- END IF;     -- tax_line_rec.line_level_action = 'LINE_INFO_TAX_ONLY' or ELSE
1634 
1635   END LOOP;     -- tax_line_rec IN get_alloc_detail_tax_lines_csr
1636 
1637   IF l_begin_index IS NOT NULL THEN
1638     l_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
1639   END IF;
1640 
1641   --
1642   -- populate WHO columns and tax line id, also
1643   -- check if all mandatory columns have values
1644   --
1645   ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line(
1646                                                 l_begin_index,
1647                                                 l_end_index,
1648                                                 x_return_status,
1649                                                 l_error_buffer);
1650   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1651     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1652       FND_LOG.STRING(g_level_unexpected,
1653              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1654              'Incorrect return_status after calling ' ||
1655              'ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line()');
1656       FND_LOG.STRING(g_level_unexpected,
1657              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1658              'RETURN_STATUS = ' || x_return_status);
1659       FND_LOG.STRING(g_level_unexpected,
1660              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.END',
1661              'ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes(-)');
1662     END IF;
1663     RETURN;
1664   END IF;
1665 
1666   IF (g_level_event >= g_current_runtime_level ) THEN
1667     FND_LOG.STRING(g_level_event,
1668            'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1669            'Detail tax lines created from imported summary tax lines:');
1670     FND_LOG.STRING(g_level_event,
1671            'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1672            'l_begin_index = ' || l_begin_index);
1673     FND_LOG.STRING(g_level_event,
1674            'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1675            'l_end_index = ' || l_end_index);
1676     FND_LOG.STRING(g_level_event,
1677            'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1678            'RETURN_STATUS = ' || x_return_status);
1679     FND_LOG.STRING(g_level_event,
1680            'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.END',
1681            'ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes(-)');
1682   END IF;
1683 
1684 
1685   IF ( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST >= C_LINES_PER_INSERT) THEN
1686 
1687     ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt (x_return_status);
1688 
1689     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1690       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1691         FND_LOG.STRING(g_level_unexpected,
1692                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1693                       'Incorrect return_status after calling ' ||
1694                       'dump_detail_tax_lines_into_gt()');
1695         FND_LOG.STRING(g_level_unexpected,
1696                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1697                       'RETURN_STATUS = ' || x_return_status);
1698       END IF;
1699       IF (g_level_procedure >= g_current_runtime_level ) THEN
1700         FND_LOG.STRING(g_level_procedure,
1701                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.END',
1702                       'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1703       END IF;
1704       RETURN;
1705     END IF;
1706 
1707   END IF;
1708 
1709 EXCEPTION
1710   WHEN OTHERS THEN
1711     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1712     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1713       FND_LOG.STRING(g_level_unexpected,
1714                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes',
1715                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1716     END IF;
1717     IF (g_level_procedure >= g_current_runtime_level ) THEN
1718       FND_LOG.STRING(g_level_procedure,
1719                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes.END',
1720                  'ZX_PRODUCT_INTEGRATION_PKG.import_trx_line_with_taxes(-)');
1721     END IF;
1722 
1723 END import_trx_line_with_taxes;
1724 
1725 /*===========================================================================+
1726  | PROCEDURE                                                                 |
1727  |   calculate_tax_lte                                                       |
1728  |                                                                           |
1729  | DESCRIPTION                                                               |
1730  |                                                                           |
1731  | MODIFICATION HISTORY                                                      |
1732  |                                                                           |
1733 +===========================================================================*/
1734 
1735 PROCEDURE calculate_tax_lte (
1736   p_event_class_rec   IN         ZX_API_PUB.EVENT_CLASS_REC_TYPE,
1737   p_id_dist_tbl             IN         NUMBER,
1738   x_return_status    OUT NOCOPY  VARCHAR2
1739 )IS
1740 
1741   l_tax_value   NUMBER;
1742   l_tax_out_tbl  tax_info_rec_tbl_type;
1743   l_new_row_num  NUMBER;
1744 
1745   l_tax_amt_included_flag VARCHAR2(1);
1746   l_compounding_tax_flag  VARCHAR2(1);
1747   l_cust_trx_type_id   NUMBER;
1748 
1749   cursor c_inv_trx_lines(c_application_id NUMBER,
1750                          c_entity_code  VARCHAR2,
1751                          c_event_class_code  VARCHAR2,
1752                          c_trx_id  NUMBER,
1753                          c_trx_line_id  NUMBER)
1754   is
1755   select
1756    trx_business_category,
1757    product_fisc_classification,
1758    product_category
1759   from
1760    zx_lines_det_factors
1761   where application_id =  c_application_id
1762     and entity_code = c_entity_code
1763     and event_class_code = c_event_class_code
1764     and trx_id = c_trx_id
1765     and trx_line_id = c_trx_line_id;
1766 
1767 
1768   -- Bug#5439803- get tax currency conversion info
1769   cursor c_inv_tax_lines(c_application_id NUMBER,
1770                          c_entity_code  VARCHAR2,
1771                          c_event_class_code VARCHAR2,
1772                          c_trx_id IN NUMBER,
1773                          c_trx_level_type VARCHAR2,
1774                          c_trx_line_id in NUMBER)
1775   is
1776   select
1777     tax_line_id,
1778     trx_date,
1779     tax_regime_code,
1780     tax,
1781     tax_status_code,
1782     tax_rate_code,
1783     tax_rate_id,
1784     tax_rate,
1785     tax_exemption_id,
1786     tax_exception_id,
1787     tax_currency_conversion_date,
1788     tax_currency_conversion_rate,
1789     tax_currency_conversion_type
1790   from ZX_LINES
1791   where application_id =  c_application_id
1792     and entity_code = c_entity_code
1793     and event_class_code = c_event_class_code
1794     and trx_level_type = c_trx_level_type
1795     and trx_id = c_trx_id
1796     and trx_line_id = c_trx_line_id;
1797 
1798   CURSOR c_get_tax_categ_id (
1799              c_group_tax_id NUMBER,
1800              c_tax          VARCHAR2,
1801              c_org_id       NUMBER,
1802              c_trx_date     DATE) IS
1803     select TXC.tax_category_id
1804     from   JL_ZZ_AR_TX_GROUPS_ALL TGR ,
1805            JL_ZZ_AR_TX_CATEG TXC
1806     where  TGR.group_tax_id = c_group_tax_id
1807       and  TGR.tax_category_id = TXC.tax_category_id
1808       and  TXC.tax_category = c_tax
1809       and  TGR.org_id = c_org_id
1810       and  TGR.start_date_active <= c_trx_date
1811       and  TGR.end_date_active >= c_trx_date;
1812 
1813 
1814   /* BugFix 2057800: add this cursor to check the trx type.*/
1815    CURSOR c_chk_trx_type (c_trx_type_id IN NUMBER) IS
1816           select type
1817           from ra_cust_trx_types_all
1818           where cust_trx_type_id = c_trx_type_id
1819           and   org_id = sysinfo.sysparam.org_id;
1820 
1821   l_tax_info_rec  tax_info_rec_type;
1822   l_trx_type      ra_cust_trx_types.type%type;
1823 
1824 BEGIN
1825 
1826   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1827   IF (g_level_procedure >= g_current_runtime_level ) THEN
1828     FND_LOG.STRING(g_level_procedure,
1829                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte.BEGIN',
1830                   'ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte(+)');
1831   END IF;
1832   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
1833 
1834   INITIALIZE_TAX_INFO_REC;
1835 
1836   -- Bug#6936808: init exception code returned from LTE
1837   JL_ZZ_TAX_INTEGRATION_PKG.g_jl_exception_type := 'N';
1838 
1839 
1840   -- assign all columns can mapped to tax_info_rec from line_dist_tbl.
1841   prepare_tax_info_rec ( p_index => p_id_dist_tbl );
1842 
1843   tax_rec_tbl.delete;
1844   tax_info_out_rec_tbl.delete;
1845   sysinfo.insert_tax_lines := 'N';
1846   TAX_GBL_REC.ONE_ERR_MSG_FLAG := 'Y';
1847   SYSINFO.CALL_AUTO_ACCTNG := 'N';
1848   -- arp_process_tax.old_customer_trx_id := 0;
1849   pg_old_customer_trx_id := 0;
1850 
1851   --
1852   -- Bug#5439803- init tax determine date to trx date
1853   --
1854   tax_info_rec.tax_determine_date := tax_info_rec.trx_date;
1855 
1856   IF tax_info_rec.customer_trx_id <> pg_old_customer_trx_id THEN
1857 
1858 	pg_cm_type := NULL;
1859         l_cust_trx_type_id:= tax_info_rec.trx_type_id;
1860 
1861     IF l_cust_trx_type_id is not null THEN
1862      if trx_type_tbl.exists(l_cust_trx_type_id) then
1863 
1864          l_trx_type:= trx_type_tbl(l_cust_trx_type_id);
1865          IF (g_level_statement >= g_current_runtime_level) THEN
1866          	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','trx_type already cached; l_trx_type = ' || l_trx_type);
1867          END IF;
1868 
1869      else
1870 
1871           OPEN  c_chk_trx_type(l_cust_trx_type_id);
1872           FETCH c_chk_trx_type INTO l_trx_type;
1873           CLOSE c_chk_trx_type;
1874 
1875           trx_type_tbl(l_cust_trx_type_id):= l_trx_type;
1876 
1877           IF (g_level_statement >= g_current_runtime_level) THEN
1878           	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','New trx_type; l_trx_type = ' || l_trx_type);
1879 
1880           END IF;
1881      end if;
1882     END IF;
1883 
1884     IF (g_level_statement >= g_current_runtime_level) THEN
1885       FND_LOG.STRING(g_level_statement,
1886                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql',
1887                      'adjusted_doc_line_id : ' ||
1888                      TO_CHAR(tax_info_rec.adjusted_doc_line_id));
1889     END IF;
1890 
1891     IF tax_info_rec.adjusted_doc_line_id is NOT NULL THEN
1892       pg_cm_type := 'Applied';
1893       tax_info_rec.cm_type:=pg_cm_type;
1894     END IF;
1895   END IF;
1896 
1897   IF pg_cm_type IS NULL THEN
1898   	tax_info_rec.credit_memo_flag := FALSE;
1899     IF (g_level_statement >= g_current_runtime_level) THEN
1900     	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','NOT a credit memo transaction');
1901     END IF;
1902   ELSE
1903   	tax_info_rec.credit_memo_flag := TRUE;
1904     IF (g_level_statement >= g_current_runtime_level) THEN
1905     	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Credit memo transaction');
1906     END IF;
1907 
1908   END IF;
1909 
1910   IF pg_cm_type = 'Applied' then
1911 
1912       l_tax_info_rec := tax_info_rec;
1913 
1914       Open c_inv_trx_lines(
1915             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(p_id_dist_tbl),
1916             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(p_id_dist_tbl),
1917             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(p_id_dist_tbl),
1918             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(p_id_dist_tbl),
1919             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(p_id_dist_tbl)) ;
1920       fetch c_inv_trx_lines into
1921             l_tax_info_rec.trx_business_category,
1922    	    l_tax_info_rec.product_fisc_classification,
1923             l_tax_info_rec.product_category;
1924       close c_inv_trx_lines;
1925 
1926          -- populate numeric, char attributes of tax infor rec based on this
1927          -- populate tax_info_Rec.userf9 with invoice_line.GLOBAL_ATTRIBUTE3
1928          -- IF Condition added for bug#7257015
1929          IF l_tax_info_rec.trx_business_category IS NOT NULL THEN
1930            l_tax_info_rec.userf9 := l_tax_info_rec.trx_business_category;
1931          END IF;
1932          -- populate tax_info_rec.previous_trx_number
1933          -- populate tax_info_rec.previous_customer_trx_line_id,
1934          -- populate tax_info_rec.previous_customer_trx_id
1935          -- populate tax_info_rec.usern7 (with hardcoded value 2)
1936          -- populate tax_info_rec.usern3 eith V.global_attribute12
1937 
1938       -- loop over original invoice's tax lines and call LTE for each tax line
1939       -- For example, if the invoice has a tax group which resulted in 3 tax lines, then
1940       -- this cursor will retrieve three racords and call the LTE three times, passing
1941       -- individual tax categories (in this case the tax group expansion will not take
1942       -- place inside the latin tax engine)
1943 
1944       Open c_inv_tax_lines(
1945             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(p_id_dist_tbl),
1946             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(p_id_dist_tbl),
1947             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(p_id_dist_tbl),
1948             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(p_id_dist_tbl),
1949             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_level_type(p_id_dist_tbl),
1950 
1951             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(p_id_dist_tbl)) ;
1952       Loop
1953          tax_info_rec :=  l_tax_info_rec;
1954 
1955          Fetch c_inv_tax_lines into
1956            tax_info_rec.adjusted_doc_tax_line_id,
1957            tax_info_rec.trx_date,
1958            tax_info_rec.tax_regime_code,
1959            tax_info_rec.tax,
1960            tax_info_rec.tax_status_code,
1961            tax_info_rec.tax_rate_code,
1962            tax_info_rec.tax_rate_id,
1963            tax_info_rec.tax_rate,
1964            tax_info_rec.tax_exemption_id,
1965            tax_info_rec.item_exception_rate_id,
1966            tax_info_rec.tax_currency_conversion_date,
1967            tax_info_rec.tax_currency_conversion_rate,
1968            tax_info_rec.tax_currency_conversion_type
1969            ;
1970 
1971          tax_info_rec.tax_code   := tax_info_rec.tax_rate_code;
1972          tax_info_rec.vat_tax_id := tax_info_rec.tax_rate_id;
1973 
1974 
1975          --  get tax_category_id
1976          open c_get_tax_categ_id (
1977               tax_info_rec.usern2,
1978               tax_info_rec.tax,
1979               sysinfo.sysparam.org_id,
1980               tax_info_rec.trx_date );
1981          fetch c_get_tax_categ_id INTO tax_info_rec.usern1;
1982          close c_get_tax_categ_id;
1983 
1984          --
1985          -- tax type for credit memo is always 'VAT'
1986          -- as each tax line info from the original invoice
1987          -- is passed, not the tax type from transaction line
1988          --
1989          tax_info_rec.userf7 := 'VAT';
1990 
1991          exit when c_inv_tax_lines%notfound;
1992 
1993          -- main engine call - one per tax line for credit memo
1994           process_tax_rec_f_sql_lte(
1995             p_appl_short_name => pg_application_short_name
1996           );
1997 
1998       end loop;
1999       close c_inv_tax_lines;
2000 
2001   ELSE
2002       process_tax_rec_f_sql_lte(
2003         p_appl_short_name => pg_application_short_name
2004       );
2005   END IF;
2006 
2007   -- arp_etax_integration_pkg.process_tax_rec_f_sql_lte() would have
2008   -- populated tax_rec_tbl; read this table and assign values to out table.
2009 
2010   IF (g_level_procedure >= g_current_runtime_level ) THEN
2011     FND_LOG.STRING(g_level_procedure,
2012                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2013                  '#Rows Returned from '||
2014                  'ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql_lte(): '||
2015                  to_char(nvl(tax_info_out_rec_tbl.count, 0)));
2016   END IF;
2017 
2018   l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
2019 
2020   l_compounding_tax_flag := 'N';
2021   l_tax_amt_included_flag := 'N';
2022 
2023  IF (g_level_procedure >= g_current_runtime_level ) THEN
2024     FND_LOG.STRING(g_level_procedure,
2025                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2026                  'tax_info_out_rec_tbl.FIRST = '||NVL(tax_info_out_rec_tbl.FIRST,-1));
2027        FND_LOG.STRING(g_level_procedure,
2028                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2029                  'tax_info_out_rec_tbl.Last = '||NVL(tax_info_out_rec_tbl.Last,-1));
2030       FND_LOG.STRING(g_level_procedure,
2031                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2032                  'l_new_rownum = '||l_new_row_num);
2033  END IF;
2034 
2035   FOR l_out_ind IN NVL(tax_info_out_rec_tbl.FIRST, 1).. NVL(tax_info_out_rec_tbl.LAST, 0) LOOP
2036 
2037 --++  nipatel commented out because of dependencies with ARP_TAX. Uncomment out later
2038 --    IF l_tax_out_tbl(l_out_ind).compounding_tax_flag ='Y'
2039 --    THEN
2040 --      l_compounding_tax_flag := 'Y';
2041 --    END IF;
2042 
2043     IF tax_info_out_rec_tbl(l_out_ind).amount_includes_tax_flag ='Y'
2044     THEN
2045       l_tax_amt_included_flag := 'Y';
2046     END IF;
2047     l_new_row_num := l_new_row_num + 1;
2048 
2049     -- Bug#5402471- populate new column tax_amt_included_flag
2050 
2051     tax_info_out_rec_tbl(l_out_ind).tax_amt_included_flag :=
2052        tax_info_out_rec_tbl(l_out_ind).amount_includes_tax_flag;
2053 
2054     prepare_detail_tax_line(
2055       p_event_class_rec => p_event_class_rec,
2056       p_id_dist_tbl     => p_id_dist_tbl,
2057       p_new_row_num     => l_new_row_num,
2058       p_tax_out_rec     => tax_info_out_rec_tbl(l_out_ind)
2059     );
2060 
2061     IF ( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST >= C_LINES_PER_INSERT) THEN
2062 
2063       ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt (x_return_status);
2064 
2065       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2066         IF (g_level_unexpected >= g_current_runtime_level ) THEN
2067           FND_LOG.STRING(g_level_unexpected,
2068                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2069                         'Incorrect return_status after calling ' ||
2070                         'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt()');
2071           FND_LOG.STRING(g_level_unexpected,
2072                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2073                         'RETURN_STATUS = ' || x_return_status);
2074         END IF;
2075         IF (g_level_procedure >= g_current_runtime_level ) THEN
2076           FND_LOG.STRING(g_level_procedure,
2077                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte.END',
2078                         'ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte(-)');
2079         END IF;
2080         RETURN;
2081       END IF;
2082     END IF;
2083 
2084   END LOOP;
2085 
2086   IF nvl(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST,0) > 0 then
2087 
2088      ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt (x_return_status);
2089 
2090 
2091        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2092         IF (g_level_unexpected >= g_current_runtime_level ) THEN
2093           FND_LOG.STRING(g_level_unexpected,
2094                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2095                         'Incorrect return_status after calling ' ||
2096                         'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt()');
2097           FND_LOG.STRING(g_level_unexpected,
2098                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2099                         'RETURN_STATUS = ' || x_return_status);
2100         END IF;
2101         IF (g_level_procedure >= g_current_runtime_level ) THEN
2102           FND_LOG.STRING(g_level_procedure,
2103                         'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte.END',
2104                         'ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte(-)');
2105         END IF;
2106         RETURN;
2107       END IF;
2108   END IF;
2109 
2110   zx_global_structures_pkg.trx_line_dist_tbl.compounding_tax_flag(
2111     p_id_dist_tbl) := l_compounding_tax_flag;
2112 
2113   zx_global_structures_pkg.trx_line_dist_tbl.TAX_AMT_INCLUDED_FLAG(
2114     p_id_dist_tbl) := l_tax_amt_included_flag;
2115 
2116 -- column not added to dist tbl defination yet
2117 --  zx_global_structures_pkg.trx_line_dist_tbl.threshold_flag(
2118 --    p_id_dist_tbl) := 'N';
2119 
2120 EXCEPTION
2121   WHEN OTHERS THEN
2122     -- bug#6936808: check if this is expected error returned from
2123     -- LTE expand_group_tax_code
2124     IF JL_ZZ_TAX_INTEGRATION_PKG.g_jl_exception_type = 'E' THEN
2125       x_return_status := FND_API.G_RET_STS_ERROR;
2126     ELSE
2127       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2128     END IF;
2129 
2130     IF (g_level_unexpected >= g_current_runtime_level ) THEN
2131       FND_LOG.STRING(g_level_unexpected,
2132                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte',
2133                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2134     END IF;
2135     IF (g_level_procedure >= g_current_runtime_level ) THEN
2136       FND_LOG.STRING(g_level_procedure,
2137                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte.END',
2138                  'ZX_PRODUCT_INTEGRATION_PKG.calculate_tax_lte(-)');
2139     END IF;
2140 
2141 END calculate_tax_lte;
2142 
2143 -- nipatel added for LTE testing.
2144 
2145 /*===========================================================================+
2146  | PROCEDURE                                                                 |
2147  |   prepare_tax_info_rec                                                    |
2148  |                                                                           |
2149  | DESCRIPTION                                                               |
2150  |                                                                           |
2151  | MODIFICATION HISTORY                                                      |
2152  |                                                                           |
2153 +===========================================================================*/
2154 
2155 PROCEDURE process_tax_rec_f_sql_lte (
2156 		p_appl_short_name	 IN VARCHAR2)
2157   IS
2158 
2159       l_customer_trx_line_id       NUMBER;
2160       l_errorbuf                   varchar2(200);
2161       l_result                     number;
2162       l_ctl_tax_amt                NUMBER := 0;
2163       l_tax_amount      	   NUMBER := 0;
2164       l_tax_total		   NUMBER := 0;
2165       i             	       	   INTEGER;
2166       l_tax_vendor_return_code 	   VARCHAR2(30);
2167       l_new_extended_amount        NUMBER;
2168       l_new_unit_selling_price     NUMBER;
2169       l_tax_incl_amount_this_line  NUMBER;
2170       l_incl_amount_this_group     NUMBER;
2171       l_old_foreign_currency_code  fnd_currencies.currency_code%type;
2172       l_old_exchange_rate          NUMBER;
2173 
2174       /* BugFix 645089: Added following 4 lines */
2175       l_ct_id 			Number;
2176       prev_ctid 		Number;
2177       prev_ctlid 		Number;
2178 
2179       l_inv_trx_date            Date := Null;
2180       l_cm_trx_date             Date := Null;
2181 
2182       l_numOfRows		NUMBER := 0;
2183       l_tax_info_out_rec_tbl_count NUMBER := 0;
2184       l_complete_flag           VARCHAR2(1);
2185 
2186       l_trx_type               ra_cust_trx_types.type%type;
2187       l_cust_trx_type_id       ra_cust_trx_types.cust_trx_type_id%type;
2188       l_tax_calculation_flag   varchar2(1);
2189 
2190 
2191     /* BugFix 2057800: add this cursor to check the trx type.*/
2192        CURSOR c_chk_trx_type (c_trx_type_id IN NUMBER) IS
2193               select type
2194               from ra_cust_trx_types_all
2195               where cust_trx_type_id = c_trx_type_id
2196               and   org_id = sysinfo.sysparam.org_id;
2197 
2198 
2199         cursor calculation_flag_csr(c_cust_trx_type_id in number) is
2200 	       select tax_calculation_flag
2201 	       from ra_cust_trx_types_all ct
2202 	       where ct.cust_trx_type_id = c_cust_trx_type_id
2203 	       and org_id = sysinfo.sysparam.org_id;
2204 
2205 BEGIN
2206 
2207   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2208   IF (g_level_procedure >= g_current_runtime_level ) THEN
2209     FND_LOG.STRING(g_level_procedure,
2210                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql.BEGIN',
2211                'ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql(+)');
2212   END IF;
2213 
2214    -- arp_tax.set_error_mode('STANDARD',TRUE);
2215 
2216    BEGIN
2217 
2218 	tax_info_rec.entered_amount :=
2219                         tax_info_rec.extended_amount;
2220 
2221         /*--------------------------------------------------------------+
2222 	 | Initialize internal variables and flags			 |
2223          +--------------------------------------------------------------*/
2224 
2225       	tax_info_rec.tax_control :=
2226 			NVL(tax_info_rec.tax_control, 'S');
2227 
2228 
2229     -- POO is not required for LTE
2230 
2231 	  sysinfo.appl_short_name := p_appl_short_name;
2232 
2233 	IF (tax_info_rec.amount_includes_tax_flag IS NULL) then
2234 	  tax_info_rec.amount_includes_tax_flag := 'N';
2235 	END IF;
2236 
2237       /* ++ nipatel check usage of this flag  */
2238           tax_gbl_rec.get_adhoc := FALSE;
2239 
2240 	  IF ( tax_info_rec.tax_code in ( 'STATE', 'COUNTY', 'CITY')) THEN
2241             tax_info_rec.qualifier := tax_info_rec.tax_code;
2242 	  ELSE
2243             tax_info_rec.qualifier := 'ALL';
2244 	  END IF;
2245 
2246     -- The following check for credit memos should be done only if calling application is AR
2247 
2248        IF tax_info_rec.credit_memo_flag  and
2249           p_appl_short_name = 'AR'
2250        THEN
2251 
2252            arp_standard.find_previous_trx_line_id(
2253                              tax_info_rec.customer_trx_line_id,
2254                              tax_info_rec.tax_line_number,
2255                              tax_info_rec.vat_tax_id,
2256                              prev_ctid, prev_ctlid);
2257         END IF;
2258 
2259 
2260         --  Bug fix 650480:   If tax amount is specified by user for adhoc tax,
2261         --  then do not calculate tax amount using original line, and credit line
2262         --  amount.   Just skip following if statement.
2263 
2264      -- The following proration for credit memos should be done only if calling application is AR
2265         IF prev_ctid is not null and
2266            p_appl_short_name = 'AR' and
2267            pg_cm_type = 'Applied' and
2268            tax_info_rec.tax_rate is null and
2269            tax_info_rec.tax_amount is null THEN
2270 
2271           --  Bug fix 637110.   To get cm tax amount, use quantity if original
2272           --  line amount is zero.   If quantity is also, then copy negative
2273           --  amount of original tax amount.
2274 
2275           declare
2276             orig_line_amount number;
2277             cm_line_amount number;
2278             orig_tax_amount number;
2279 
2280             orig_line_qty   number;
2281             cm_line_qty     number;
2282             orig_cm_ratio   number;
2283           begin
2284 
2285             IF (g_level_statement >= g_current_runtime_level) THEN
2286             	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Calculate cm tax amount.');
2287             END IF;
2288             select  cm.extended_amount, cm.quantity_credited
2289             into    cm_line_amount, cm_line_qty
2290             from    ra_customer_trx_lines_all cm
2291             where   cm.customer_trx_line_id = tax_info_rec.customer_trx_line_id;
2292 
2293             select  line.extended_amount,
2294                     tax.extended_amount,
2295                     line.quantity_invoiced
2296             into    orig_line_amount,
2297                     orig_tax_amount,
2298                     orig_line_qty
2299             from    ra_customer_trx_lines_all line,
2300                     ra_customer_trx_lines_all tax
2301             where   tax.customer_trx_line_id = prev_ctlid
2302             and     tax.link_to_cust_trx_line_id = line.customer_trx_line_id;
2303 
2304 
2305             --   Check to see whether original line amount is zero.
2306             --   If it's so, then use quantity.   If quantity is also zero,
2307             --   then copy the original tax amount to Credit Memo with negative sign.
2308             --
2309             IF (nvl(orig_line_amount, 0) = 0) AND (nvl(orig_line_qty, 0) = 0) THEN
2310               IF (g_level_statement >= g_current_runtime_level) THEN
2311               	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Both line and quantity is zero. ');
2312               END IF;
2313               tax_info_rec.tax_amount := -1 * orig_tax_amount;
2314             ELSE
2315               IF nvl(orig_line_amount, 0) <> 0 THEN
2316                 IF (g_level_statement >= g_current_runtime_level) THEN
2317                 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Use line amount. ');
2318                 END IF;
2319                 orig_cm_ratio := cm_line_amount / orig_line_amount;
2320               ELSE
2321                 IF (g_level_statement >= g_current_runtime_level) THEN
2322                 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Use quantity. ');
2323                 END IF;
2324                 orig_cm_ratio := cm_line_qty / orig_line_qty;
2325               END IF;
2326 
2327               tax_info_rec.tax_amount :=
2328               tax_curr_round(
2329                                 orig_tax_amount * orig_cm_ratio,
2330                                 tax_info_rec.trx_currency_code,
2331                                 tax_info_rec.precision,
2332                                 tax_info_rec.minimum_accountable_unit,
2333                                 tax_info_rec.tax_rounding_rule,
2334                                 'Y');
2335             END IF;
2336           end;
2337         END IF; -- prev_ct_id is null
2338 
2339         -- Now make sure that the tax amount for the applied credit memo does
2340         -- not exceed the balance due
2341 
2342      /* Bug 4867678 commented out this check as the same chech is now being done
2343         in TDS tail end processing.
2344 
2345      -- The following check for credit memos should be done only if calling application is AR
2346         IF pg_cm_type = 'Applied' and
2347            p_appl_short_name = 'AR' and
2348            prev_ctid is not null and
2349            prev_ctlid is not null THEN
2350           DECLARE
2351             tax_balance Number;
2352             l_extended_amount NUMBER;
2353             --BugFix 2499050 Modified the expression in the following DECODE statement.
2354             cursor l_extended_amount_csr is
2355               select decode(nvl(prev_line.extended_amount,0), 0, 0,
2356                 (line.extended_amount *  nvl(prev_tax.taxable_amount,1))/ prev_line.extended_amount)
2357               from   ra_customer_trx_lines_all line,
2358                      ra_customer_trx_lines_all prev_line,
2359                      ra_customer_trx_lines_all prev_tax
2360               where  prev_tax.customer_trx_line_id = prev_ctlid and
2361                      nvl(prev_tax.tax_vendor_return_code,tax_no_vendor) =
2362                                                          tax_no_vendor
2363               and    prev_tax.link_to_cust_trx_line_id = prev_line.customer_trx_line_id
2364               and    line.customer_trx_line_id = tax_info_rec.customer_trx_line_id
2365               and    line.previous_customer_trx_line_id = prev_line.customer_trx_line_id;
2366 
2367               dummy varchar2(10);
2368 
2369           BEGIN
2370             select net_amount into tax_balance
2371             from ar_net_revenue_amount
2372             where customer_trx_line_id = prev_ctlid
2373             and   customer_trx_id = prev_ctid;
2374 
2375             -- 821505
2376             if l_complete_flag <> 'Y' then
2377               IF (abs(tax_info_rec.tax_amount) > abs(tax_balance)) THEN
2378                 tax_info_rec.tax_amount := tax_balance;
2379               END IF;
2380             end if;
2381 
2382             open l_extended_amount_csr;
2383             fetch l_extended_amount_csr into l_extended_amount;
2384             --
2385             if (l_extended_amount_csr%found) then
2386               tax_info_rec.extended_amount := l_extended_amount;
2387             end if;
2388             --
2389             close l_extended_amount_csr;
2390 
2391            --BugFix:1837433 commented out  the following IF condition
2392            -- if (tax_info_rec.amount_includes_tax_flag = 'Y') then
2393            --   tax_info_rec.amount_includes_tax_flag := 'P';
2394            -- end if;
2395            --
2396           END;
2397         END IF;
2398 
2399          End  Bug 4867678  */
2400 
2401         -- Bug821505: Check to see if this transaction is an applied credit memo
2402         -- If so, use Original Invoice's Transaction date for tax calculation
2403         --
2404 
2405      -- The following check for credit memos should be done only if calling application is AR
2406         IF (pg_cm_type = 'Applied') and
2407            p_appl_short_name = 'AR'
2408         THEN
2409 
2410           BEGIN
2411 
2412             IF tax_info_rec.customer_trx_line_id is null THEN
2413 
2414               select  inv_trx.trx_date
2415               into    l_inv_trx_date
2416               from    ra_customer_trx_all inv_trx,
2417                       ra_cust_trx_types_all trx_type,
2418                       ra_customer_trx_all trx
2419               where   trx.cust_trx_type_id = trx_type.cust_trx_type_id
2420               and     trx_type.type = 'CM'
2421               and     trx_type.org_id = trx.org_id
2422               and     trx.previous_customer_trx_id = inv_trx.customer_trx_id
2423               and     trx.customer_trx_id = tax_info_rec.customer_trx_id;
2424 
2425             ELSE
2426 
2427               select  inv_trx.trx_date
2428               into    l_inv_trx_date
2429               from    ra_customer_trx_all inv_trx,
2430                       ra_cust_trx_types_all trx_type,
2431                       ra_customer_trx_all trx,
2432                       ra_customer_trx_lines_all line
2433               where   trx.cust_trx_type_id = trx_type.cust_trx_type_id
2434               and     trx_type.type = 'CM'
2435               and     trx_type.org_id = trx.org_id
2436               and     trx.previous_customer_trx_id = inv_trx.customer_trx_id
2437               and     trx.customer_trx_id = line.customer_trx_id
2438               and     line.customer_trx_line_id = tax_info_rec.customer_trx_line_id;
2439 
2440             END IF;
2441 
2442             l_cm_trx_date := tax_info_rec.trx_date;
2443             tax_info_rec.trx_date := l_inv_trx_date;
2444             arp_util.debug('Changing date from '||to_char(l_cm_trx_date,'DD-MON-YYYY')||' to '||
2445                             to_char(l_inv_trx_date,'DD-MON-YYYY')||' for CM Tax Calculation.');
2446 
2447           EXCEPTION
2448             WHEN NO_DATA_FOUND THEN
2449               null;
2450           END;
2451 
2452         END IF; -- (pg_cm_type = 'Applied')
2453 
2454         /*********************************************************************
2455          | Calculate tax based on all data supplied through these views      |
2456          | If the views calculate a tax amount, and this is supported by     |
2457          | a vat tax id then use the amount returned from the views instead  |
2458          *********************************************************************/
2459         --
2460         -- Clear the table of record of type tax_info_rec_type
2461         --
2462 
2463         IF (g_level_statement >= g_current_runtime_level) THEN
2464              FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','deleting tx_rec_tbl, tax_info_rec_tbl......');
2465         END IF;
2466 
2467         tax_rec_tbl.delete;
2468         --
2469         -- Clear the table of record of type ra_customer_trx_lines%rowtype
2470         --
2471         tax_info_rec_tbl.delete;
2472 
2473         --
2474         -- create_tax_info_rec_tbl
2475         --
2476 
2477        BEGIN
2478        -- comment out the call to ARP_TAX_GROUP and copy the LTE specific logic
2479        -- in this procedure here
2480        -- ARP_TAX_GROUP.create_tax_info_rec_tbl;
2481 
2482                IF (g_level_statement >= g_current_runtime_level) THEN
2483                	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','create_tax_info_rec_tbl(+)');
2484                END IF;
2485                --
2486                --Tax Code is null. Go get it.
2487                --
2488                if (tax_info_rec.tax_code is null) then
2489                    IF (g_level_statement >= g_current_runtime_level) THEN
2490                    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' Tax Code is null. Go get it. ');
2491                    END IF;
2492                    ZX_AR_TAX_CLASSIFICATN_DEF_PKG.get_default_tax_classification(
2493                      p_ship_to_site_use_id   => tax_info_rec.ship_to_site_use_id,
2494                      p_bill_to_site_use_id   => tax_info_rec.bill_to_site_use_id,
2495                      p_inventory_item_id     => tax_info_rec.inventory_item_id,
2496                      p_organization_id       => profinfo.so_organization_id,
2497                   -- p_warehouse_id          => tax_info_rec.ship_from_warehouse_id,
2498                      p_set_of_books_id       => sysinfo.sysparam.set_of_books_id,
2499                      p_trx_date              => tax_info_rec.trx_date,
2500                      p_trx_type_id           => tax_info_rec.trx_type_id,
2501                   -- p_vat_tax_id            => l_vat_tax_id,
2502                      p_tax_classification_code => tax_info_rec.tax_code,
2503                   -- p_amt_incl_tax_flag     => tax_info_rec.amount_includes_tax_flag,
2504                   -- p_amt_incl_tax_override => l_amt_incl_tax_override,
2505                      p_cust_trx_id           => tax_info_rec.customer_trx_id,
2506                      p_cust_trx_line_id      => tax_info_rec.customer_trx_line_id,
2507                      p_customer_id           => nvl(tax_info_rec.ship_to_cust_id,
2508                                                     tax_info_rec.bill_to_cust_id),
2509                      p_memo_line_id          => tax_info_rec.memo_line_id,
2510                      appl_short_name         => sysinfo.appl_short_name,
2511                      func_short_name         => sysinfo.func_short_name,
2512                      p_party_flag            => 'N',
2513                      p_party_location_id     => NULL,
2514                      p_entity_code           => tax_info_rec.entity_code,
2515                      p_event_class_code      => tax_info_rec.event_class_code,
2516                      p_application_id        => 222,
2517                      p_internal_organization_id =>  sysinfo.sysparam.org_id);
2518 
2519                  --
2520                  -- bug#6824850- populate other tax info based on the
2521                  -- tax code returned
2522                  --
2523                  IF tax_info_rec.tax_code IS NOT NULL THEN
2524 
2525                    BEGIN
2526                      SELECT TAXABLE_BASIS,
2527                           TAX_CALCULATION_PLSQL_BLOCK,
2528                           TAX_TYPE,
2529                           decode(tax_type,'TAX_GROUP',vat_tax_id,null),
2530                           decode(tax_type,'TAX_GROUP',NULL,
2531                                  decode (length(translate(global_attribute1,
2532                                            '0123456789 ', '0123456789')),
2533                                   length(translate(global_attribute1, '0123456789
2534                                   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-,:.',
2535                           '0123456789')), global_attribute1, -99))
2536                     INTO   tax_info_rec.taxable_basis, --l_taxable_basis,
2537                            tax_info_rec.tax_calculation_plsql_block, --l_tax_calculation_plsql_block,
2538                            tax_info_rec.userf7, --l_tax_type,
2539                            tax_info_rec.usern2, --l_vat_tax_id,
2540                            tax_info_rec.usern1 --l_tax_category_id
2541                     FROM   ar_vat_tax_all_b
2542                     WHERE  set_of_books_id = sysinfo.sysparam.SET_OF_BOOKS_ID
2543                     AND    tax_code = tax_info_rec.tax_code
2544                     AND    tax_info_rec.trx_date BETWEEN start_date
2545                               AND NVL(end_date, TO_DATE( '31122199', 'DD
2546 MMYYYY'))
2547                     AND    NVL(enabled_flag,'Y') = 'Y'
2548                     AND    NVL(tax_class,'O') = 'O'
2549                     AND    ORG_ID = sysinfo.sysparam.org_id;
2550                   EXCEPTION
2551                     WHEN NO_DATA_FOUND THEN
2552                          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
2553                          fnd_message.set_token('GENERIC_TEXT',
2554                              'EXCEPTION(NO_DATA_FOUND) : Tax Code');
2555                          app_exception.raise_exception;
2556                     WHEN OTHERS THEN
2557                          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
2558                          fnd_message.set_token('GENERIC_TEXT',
2559                              'EXCEPTION(OTHERS) : Tax Code : ' || sqlerrm);
2560                          app_exception.raise_exception;
2561                   END;
2562 
2563   --tax_info_rec.amount_includes_tax_flag := 'N';
2564                  end if;
2565 
2566                end if;
2567 
2568                --
2569                if (sysinfo.sysparam.tax_method = MTHD_LATIN) then
2570 
2571                  BEGIN
2572                   IF (g_level_statement >= g_current_runtime_level) THEN
2573                        FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Calling JL_ZZ_TAX_INTEGRATION_PKG.expand_group_tax_code');
2574                   END IF;
2575                   JL_ZZ_TAX_INTEGRATION_PKG.expand_group_tax_code(sysinfo.sysparam.org_id);
2576                  Exception
2577                    when others then
2578                    IF (g_level_statement >= g_current_runtime_level) THEN
2579                    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Exception while expanding Latin Tax Group');
2580                    END IF;
2581                    app_exception.raise_exception;
2582                  End;
2583 
2584                end if;
2585 
2586        EXCEPTION
2587        WHEN OTHERS THEN
2588         IF (g_level_statement >= g_current_runtime_level) THEN
2589         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','IN WHEN OTHERS OF CREATE_TAX_INFO_REC_TBL');
2590         END IF;
2591           app_exception.raise_exception;
2592        END;
2593 
2594         --
2595         --
2596         -- tax_info_rec_tbl is populated. Iterate over tax_info_rec_tbl
2597         -- to process each line
2598         --
2599         l_numOfRows := nvl(tax_info_rec_tbl.last, 0);
2600         l_tax_info_out_rec_tbl_count := nvl(tax_info_out_rec_tbl.last,0);
2601         --
2602         IF (g_level_statement >= g_current_runtime_level) THEN
2603         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','before the loop for tax_info_rec_tbl. numOfRows: '||
2604                                                               to_char(l_numOfRows));
2605         END IF;
2606         for x in 1..l_numOfRows LOOP
2607 
2608           tax_info_rec := tax_info_rec_tbl(x);
2609 
2610           if tax_info_rec.amount_includes_tax_flag = 'P' then
2611             tax_info_rec.amount_includes_tax_flag := 'N';
2612           end if;
2613 
2614 
2615 	  --Get Payment Discount
2616           --This will update extended_amount if payment discount exists
2617           --
2618           --BugFix 2127646 added the following If condition inorder to restrict a call to the
2619           --get_payment_term_discount incase of credit memos.
2620 
2621          /* Execute this part only for AR because payment term id is specifice to Receivables
2622          --++ nipatel commented out for LTE testing
2623           if p_appl_short_name = 'AR' and
2624              (NOT tax_info_rec.credit_memo_flag ) then
2625                 ARP_PROCESS_TAX.get_payment_term_discount;
2626           end if;
2627          */
2628 
2629          /* Bugfix 2174086: If amount_includes_tax_flag is 'Y', then set tax_amount as NULL
2630          so that the procedure arp_tax_calculate() is called to calculate Tax. */
2631 
2632           IF (g_level_statement >= g_current_runtime_level) THEN
2633           	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','tax_amount='||to_char(tax_info_rec.tax_amount));
2634           END IF;
2635 
2636 
2637           IF tax_info_rec.tax_amount is NULL OR
2638 	     tax_info_rec.vat_tax_id is NULL OR
2639              tax_info_rec.amount_includes_tax_flag = 'Y' THEN -- BugFix 3242435
2640 
2641             arp_tax_calculate;
2642 
2643           ELSE
2644 	    -- If the database views have performed the tax calculation, then
2645 	    -- pass this tax amount along any installed tax vendor. This will
2646  	    -- normally happen during a delete of a tax line, since deleted
2647             -- tax records must be reversded from any audit.
2648 
2649             dump_tax_info_rec('I');
2650 
2651              -- The call to arp_tax_vendor.calculate is not required as this call is
2652              -- only for inserting audit entries in vendor tables.
2653 
2654             --
2655             -- Populate Taxable Amount in case only taxable amount is null.
2656             --
2657             IF ( tax_info_rec.taxable_amount IS NULL) and
2658                ( tax_info_rec.tax_amount IS NOT NULL) THEN
2659 
2660               IF (nvl(tax_info_rec.taxable_basis, 'BEFORE_EPD') = 'QUANTITY') then
2661 
2662                 tax_info_rec.taxable_amount :=
2663                                 tax_info_rec.extended_amount;
2664 
2665               ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'Y') = 'Y') THEN
2666 
2667                 tax_info_rec.taxable_amount :=
2668                           tax_info_rec.extended_amount - tax_info_rec.tax_amount;
2669 
2670               ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'N') in ('N','P') ) THEN
2671 
2672                 tax_info_rec.taxable_amount :=
2673                                tax_info_rec.extended_amount;
2674 
2675               END IF;
2676             END IF;
2677 
2678             if tax_info_rec.tax_vendor_return_code in (TAX_RC_OERR,TAX_RC_NO_RATE,
2679                                                                 TAX_RC_SYSERR) then
2680               dump_tax_info_rec('E');
2681               app_exception.raise_exception;
2682 
2683             end if;
2684             dump_tax_info_rec('O');
2685 
2686 	    -- get the effective tax rates
2687 	    if (tax_info_rec.extended_amount = 0) then
2688 	      tax_info_rec.effective_tax_rate := 0;
2689 	    else
2690 	      tax_info_rec.effective_tax_rate :=
2691 	      tax_info_rec.tax_amount/tax_info_rec.extended_amount;
2692 	    end if;
2693           END IF; -- tax_amount is null or vat_tax_id is null
2694 
2695           IF tax_info_rec.customer_trx_id <> pg_old_customer_trx_id THEN
2696 	    	pg_old_customer_trx_id := tax_info_rec.customer_trx_id;
2697 	  END IF;
2698 
2699           /* 821505
2700            * Put CM transaction date back to tax_info_rec.trx_date.
2701            */
2702           IF (l_cm_trx_date is not null) THEN
2703             tax_info_rec.trx_date := l_cm_trx_date;
2704           END IF;
2705 
2706        	  /*********************************************************************
2707            | VAT : Document structure and Rounding                             |
2708            |       Apply Tax rounding rules.                                   |
2709            *********************************************************************/
2710            -- Perform line level rounding
2711 
2712             IF (g_level_statement >= g_current_runtime_level) THEN
2713             	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- Rounding Tax per Line');
2714             END IF;
2715 
2716 	    -- For applied CMs, Do not re-derive the tax amount from the
2717 	    -- tax rate, as the Tax amount can change without a change in the
2718 	    -- tax rate.
2719 
2720             -- Bugfix 584866 - use tax amount passed
2721             -- Use of effective tax rate introduces obscure rounding errors.
2722             l_tax_amount := tax_info_rec.tax_amount;
2723 
2724    	    tax_info_rec.tax_amount :=
2725 		               tax_curr_round( l_tax_amount,
2726 		    	                           tax_info_rec.trx_currency_code,
2727 		    	                           tax_info_rec.precision,
2728 		    	                           tax_info_rec.minimum_accountable_unit,
2729 		    	                           tax_info_rec.tax_rounding_rule,
2730                                                    'Y');
2731           -- End Line Level Rounding
2732 
2733           /********************************************************************************
2734            | For each line calculated, store that line in the ra_customer_trx_lines table |
2735            ********************************************************************************/
2736 
2737           IF (g_level_statement >= g_current_runtime_level) THEN
2738           	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','store values into tax_rec_tbl( '||to_char(x)||' ) +');
2739           END IF;
2740 
2741           tax_info_rec.trx_line_type := 'TAX';
2742 
2743         /*
2744           -- tax_info_out_rec_tbl(x).set_of_books_id := sysinfo.sysparam.set_of_books_id;
2745           tax_info_out_rec_tbl(x).link_to_cust_trx_line_id := tax_info_rec.customer_trx_line_id;
2746           tax_info_out_rec_tbl(x).customer_trx_id := tax_info_rec.customer_trx_id;
2747           tax_info_out_rec_tbl(x).tax_line_number := tax_info_rec.tax_line_number;
2748           tax_info_out_rec_tbl(x).trx_line_type := 'TAX';
2749           tax_info_out_rec_tbl(x).sales_tax_id := tax_info_rec.sales_tax_id;
2750           tax_info_out_rec_tbl(x).location_segment_id := tax_info_rec.location_segment_id;
2751           tax_info_out_rec_tbl(x).vat_tax_id := tax_info_rec.vat_tax_id;
2752           tax_info_out_rec_tbl(x).tax_rate := tax_info_rec.tax_rate;
2753           tax_info_out_rec_tbl(x).item_exception_rate_id := tax_info_rec.item_exception_rate_id;
2754           tax_info_out_rec_tbl(x).tax_exemption_id := tax_info_rec.tax_exemption_id;
2755           tax_info_out_rec_tbl(x).tax_control := tax_info_rec.tax_control;
2756           tax_info_out_rec_tbl(x).default_ussgl_transaction_code := tax_info_rec.default_ussgl_transaction_code;
2757           tax_info_out_rec_tbl(x).default_ussgl_trx_code_context := tax_info_rec.default_ussgl_trx_code_context;
2758           if (tax_info_rec.tax_precedence = 0) then
2759             tax_info_out_rec_tbl(x).tax_precedence := NULL;
2760           else
2761             tax_info_out_rec_tbl(x).tax_precedence := tax_info_rec.tax_precedence;
2762           end if;
2763           tax_info_out_rec_tbl(x).taxed_quantity := tax_info_rec.taxed_quantity;
2764           tax_info_out_rec_tbl(x).xmpt_cert_no := tax_info_rec.xmpt_cert_no;
2765           tax_info_out_rec_tbl(x).xmpt_reason := tax_info_rec.xmpt_reason;
2766           tax_info_out_rec_tbl(x).tax_vendor_return_code := tax_info_rec.tax_vendor_return_code;
2767           tax_info_out_rec_tbl(x).previous_customer_trx_id := prev_ctid;
2768           tax_info_out_rec_tbl(x).previous_customer_trx_line_id := prev_ctlid;
2769 
2770           --
2771           --should take from tax_rec_tbl(x)
2772           --
2773           if tax_info_rec_tbl(x).amount_includes_tax_flag = 'P' then
2774               tax_info_out_rec_tbl(x).amount_includes_tax_flag := 'Y';
2775               tax_info_rec.amount_includes_tax_flag := 'Y';
2776               tax_info_rec_tbl(x).amount_includes_tax_flag := 'Y';
2777           else
2778               tax_info_out_rec_tbl(x).amount_includes_tax_flag := tax_info_rec.amount_includes_tax_flag;
2779           end if;
2780           --
2781           tax_info_out_rec_tbl(x).extended_amount := tax_info_rec.tax_amount;
2782     --    tax_info_out_rec_tbl(x).request_id := fnd_global.request_id; -- Bugfix 588262
2783 	  tax_info_out_rec_tbl(x).global_attribute1 := tax_info_rec.global_attribute1;
2784 	  tax_info_out_rec_tbl(x).global_attribute2 := tax_info_rec.global_attribute2;
2785 	  tax_info_out_rec_tbl(x).global_attribute3 := tax_info_rec.global_attribute3;
2786 	  tax_info_out_rec_tbl(x).global_attribute4 := tax_info_rec.global_attribute4;
2787 	  tax_info_out_rec_tbl(x).global_attribute5 := tax_info_rec.global_attribute5;
2788 	  tax_info_out_rec_tbl(x).global_attribute6 := tax_info_rec.global_attribute6;
2789 	  tax_info_out_rec_tbl(x).global_attribute7 := tax_info_rec.global_attribute7;
2790 	  tax_info_out_rec_tbl(x).global_attribute8 := tax_info_rec.global_attribute8;
2791 	  tax_info_out_rec_tbl(x).global_attribute9 := tax_info_rec.global_attribute9;
2792 	  tax_info_out_rec_tbl(x).global_attribute10 := tax_info_rec.global_attribute10;
2793 	  tax_info_out_rec_tbl(x).LEGAL_JUSTIFICATION_TEXT1 := tax_info_rec.global_attribute8;
2794 	  tax_info_out_rec_tbl(x).LEGAL_JUSTIFICATION_TEXT1 := tax_info_rec.global_attribute9;
2795 	  tax_info_out_rec_tbl(x).LEGAL_JUSTIFICATION_TEXT1 := tax_info_rec.global_attribute10;
2796 	  tax_info_out_rec_tbl(x).global_attribute11 := tax_info_rec.global_attribute11;
2797 	  tax_info_out_rec_tbl(x).global_attribute12 := tax_info_rec.global_attribute12;
2798 	  tax_info_out_rec_tbl(x).global_attribute13 := tax_info_rec.global_attribute13;
2799 	  tax_info_out_rec_tbl(x).global_attribute14 := tax_info_rec.global_attribute14;
2800 	  tax_info_out_rec_tbl(x).global_attribute15 := tax_info_rec.global_attribute15;
2801 	  tax_info_out_rec_tbl(x).global_attribute16 := tax_info_rec.global_attribute16;
2802 	  tax_info_out_rec_tbl(x).global_attribute17 := tax_info_rec.global_attribute17;
2803 	  tax_info_out_rec_tbl(x).global_attribute18 := tax_info_rec.global_attribute18;
2804 	  tax_info_out_rec_tbl(x).global_attribute19 := tax_info_rec.global_attribute19;
2805 	  tax_info_out_rec_tbl(x).global_attribute20 := tax_info_rec.global_attribute20;
2806 	  tax_info_out_rec_tbl(x).global_attribute_category := tax_info_rec.global_attribute_category;
2807           -- tax_info_out_rec_tbl(x).autotax := 'Y'; -- AUTOTAX is always Y when created from the engine
2808           tax_info_out_rec_tbl(x).taxable_amount := tax_info_rec.taxable_amount;
2809 
2810          */
2811 
2812           --
2813 	  -- For tax lines of credit memos, populate the foreign keys :
2814           -- previous_customer_trx_line_id and previous_customer_trx_id so that the autoaccounting
2815           -- function can duplicate the accounting distributions of the original invoice line
2816           --
2817          /* For credit memo, tax line should be linked to original invoice's tax line. */
2818 
2819           IF tax_info_rec.credit_memo_flag  and
2820              p_appl_short_name = 'AR'
2821           THEN
2822                  arp_standard.find_previous_trx_line_id(
2823                                     tax_info_rec.customer_trx_line_id,
2824                                     tax_info_rec.tax_line_number,
2825 	                            tax_info_rec.vat_tax_id,
2826 				    tax_info_rec.previous_customer_trx_id,
2827 				    tax_info_rec.previous_customer_trx_line_id );
2828           END IF;
2829 
2830           tax_info_out_rec_tbl(x + l_tax_info_out_rec_tbl_count) := tax_info_rec;
2831 
2832 	  if (nvl(tax_info_rec.amount_includes_tax_flag, 'N')='Y') then
2833           --BugFix 2180174 Added nvl command in the following statement.
2834 	    l_tax_incl_amount_this_line := tax_info_rec.extended_amount +
2835                                            nvl(l_tax_incl_amount_this_line,0);
2836 	  end if;
2837 
2838         end Loop;
2839         --
2840         IF (g_level_statement >= g_current_runtime_level) THEN
2841         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','after the loop for tax_info_rec_tbl');
2842         END IF;
2843         --
2844         -- tax_rec_tbl is populated by now
2845         -- call ARP_TAX_GROUP.adjust_compounding_inclusive only
2846         -- if TRX has group tax. That is tax_rec_tbl.last > 1
2847         --
2848         if (nvl(tax_rec_tbl.last, 0) > 1) then
2849           --
2850           l_tax_incl_amount_this_line := adjust_compound_inclusive;
2851           --
2852         end if;
2853         --
2854         -- Go over tax_rec_tbl to create tax lines and
2855         -- tax distribution lines
2856         --
2857         l_numOfRows := nvl(tax_rec_tbl.last, 0);
2858         --
2859    /*
2860         IF (g_level_statement >= g_current_runtime_level) THEN
2861         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','before the loop for tax_rec_tbl. numOfRows: '||to_char(l_numOfRows));
2862         END IF;
2863         --
2864         for x in 1..l_numOfRows LOOP
2865 
2866           -- bugfix 2160224: update inclusive adjusted amounts in tax_info_out_rec_tbl
2867 	  IF  sysinfo.appl_short_name <> 'AR' then
2868                tax_info_out_rec_tbl(x).taxable_amount := tax_info_out_rec_tbl(x).taxable_amount;
2869                tax_info_out_rec_tbl(x).tax_amount := tax_info_out_rec_tbl(x).extended_amount;
2870           END IF;
2871         end loop;
2872 
2873         --
2874         IF (g_level_statement >= g_current_runtime_level) THEN
2875         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','after the loop for tax_rec_tbl');
2876         END IF;
2877         --
2878    */
2879      IF (g_level_procedure >= g_current_runtime_level ) THEN
2880      FND_LOG.STRING(g_level_procedure,
2881                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql.END',
2882                   'ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql(-)');
2883      END IF;
2884 
2885 
2886  EXCEPTION
2887 	WHEN OTHERS THEN
2888 	  IF (g_level_statement >= g_current_runtime_level) THEN
2889 	  	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','EXCEPTION(process_tax_rec_f_sql in loop)');
2890           	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','SQLCODE '||SQLCODE||'Error Message '||SQLERRM);
2891           END IF;
2892 
2893 	  IF (tax_gbl_rec.one_err_msg_flag = 'N') THEN
2894 
2895 	    pg_bad_lines := pg_bad_lines + 1;
2896 
2897 	    IF (g_level_statement >= g_current_runtime_level) THEN
2898 	    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Stack error');
2899 	    END IF;
2900 	    -- arp_tax.insert_error(nvl(tax_info_rec.customer_trx_line_id, 0));
2901 	  ELSE
2902 	    IF (g_level_statement >= g_current_runtime_level) THEN
2903 	    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Raise error');
2904 	    END IF;
2905 	    RAISE;
2906 	  END IF;
2907       END;
2908 
2909     -- p_new_tax_amount := l_ctl_tax_amt;
2910 
2911 
2912   IF (g_level_procedure >= g_current_runtime_level ) THEN
2913      FND_LOG.STRING(g_level_procedure,
2914                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql.END',
2915                   'ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql(-)');
2916   END IF;
2917 
2918 EXCEPTION
2919   WHEN OTHERS THEN
2920     IF (g_level_unexpected >= g_current_runtime_level ) THEN
2921       FND_LOG.STRING(g_level_unexpected,
2922                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.process_tax_rec_f_sql',
2923                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2924     END IF;
2925     RAISE;
2926 
2927 END process_tax_rec_f_sql_lte;
2928 
2929 
2930 /*----------------------------------------------------------------------------*
2931  | PUBLIC PROCEDURE                                                           |
2932  |    arp_tax_calculate                                                               |
2933  |                                                                            |
2934  | DESCRIPTION                                                                |
2935  |    This routine, is called to calculate a tax rate and amount for the      |
2936  |    transaction line that is recorded in the global data structure:         |
2937  |    arp_tax.tax_info_rec. The logic here is copied from arp_tax.calculate   |
2938  |    procedure for Latin Tax Engine                                          |
2939  |									      |
2940  | PARAMETERS                                                                 |
2941  |    tax_info_rec                                                            |
2942  |                                                                            |
2943  | RETURNS                                                                    |
2944  |    tax_info_rec updated with tax rate, amount, vendor and other info.      |
2945  |    exceptions                                                              |
2946  |      app_exception.raise_exception when an exception is found along with   |
2947  |                                         the error message.                 |
2948  |                                                                            |
2949  | CALLED FROM                                                                |
2950  |    process_tax_rec_f_sql_lte                                               |
2951  |                                                                            |
2952  | HISTORY                                                                    |
2953  |    28-DEC-2004 Nilesh Patel    Created.                                    |
2954  |                                                                            |
2955  *----------------------------------------------------------------------------*/
2956 PROCEDURE arp_tax_calculate IS
2957   l_tax_vendor_return_code	ra_customer_trx_lines.tax_vendor_return_code%TYPE;
2958   l_use_tax_rate_passed         BOOLEAN := FALSE;       -- Bugfix 370068, 370265
2959   l_use_tax_vendor              BOOLEAN;
2960   l_batch_tax_rate_rule         ra_batch_sources.invalid_tax_rate_rule%type;
2961   l_tax_amount                  ra_customer_trx_lines.extended_amount%TYPE;
2962   l_precision                   fnd_currencies.precision%TYPE;
2963   l_min_acct_unit               fnd_currencies.minimum_accountable_unit%TYPE;
2964 
2965   CURSOR get_vat_tax_id(c_sob_id  NUMBER,
2966 		   	c_tax_code VARCHAR2,
2967 			c_trx_date DATE,
2968                         c_trx_end_date DATE,
2969                         c_org_id number ) IS
2970 	 SELECT vat_tax_id,
2971                 decode(tax_type,
2972                           'LOCATION', TAX_TYPE_LOCATION,
2973                           'SALES_TAX', TAX_TYPE_SALES,
2974                           TAX_TYPE_VAT ) tax_type
2975 	   FROM ar_vat_tax_all_b
2976 	  WHERE set_of_books_id = c_sob_id
2977 	    AND tax_code = c_tax_code
2978 	    AND c_trx_date between start_date and nvl(end_date, c_trx_end_date)
2979             AND nvl(enabled_flag,'Y') = 'Y'
2980             AND nvl(TAX_CLASS,'O') = 'O'
2981             AND org_id = c_org_id;
2982 
2983 BEGIN
2984   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2985 
2986   IF (g_level_procedure >= g_current_runtime_level ) THEN
2987     FND_LOG.STRING(g_level_procedure,
2988                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate.BEGIN',
2989                   'ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate(+)');
2990   END IF;
2991 
2992  IF ( tax_info_rec.tax_code IS NOT NULL ) THEN
2993 
2994 
2995 
2996         BEGIN
2997 
2998           -- Bugfix 358523: Vat_tax_id is now passed for applied CMs, use the
2999           -- vat_tax_id passed, this avoids the error in creating applied CMs
3000           -- for Invoices with an inactive tax code.
3001           -- For On-Account Credit Memos we need to get the vat_tax_id, Just
3002           -- like in an Invoice.
3003           IF ( NOT (tax_info_rec.credit_memo_flag AND
3004                     tax_info_rec.previous_customer_trx_id IS NOT NULL) ) THEN
3005              get_vat_tax_rate;
3006           ELSE
3007             OPEN get_vat_tax_id(sysinfo.sysparam.set_of_books_id,
3008                                 tax_info_rec.tax_code,
3009                                 tax_info_rec.trx_date,
3010                                 tax_info_rec.trx_date,
3011                                 sysinfo.sysparam.org_id);
3012             FETCH get_vat_tax_id INTO tax_info_rec.vat_tax_id, tax_info_rec.tax_type;
3013             CLOSE get_vat_tax_id;
3014           END IF;
3015 
3016          /*
3017            IF (g_level_procedure >= g_current_runtime_level ) THEN
3018               FND_LOG.STRING(g_level_procedure,
3019                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3020                   'Populating Vat_tax_id:');
3021               FND_LOG.STRING(g_level_procedure,
3022                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3023                   'set_if_books_id: '||sysinfo.sysparam.set_of_books_id);
3024               FND_LOG.STRING(g_level_procedure,
3025                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3026                   'org_id: '||sysinfo.sysparam.org_id);
3027               FND_LOG.STRING(g_level_procedure,
3028                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3029                   'tax_info_rec.tax_code: '||tax_info_rec.tax_code);
3030               FND_LOG.STRING(g_level_procedure,
3031                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3032                   'tax_info_rec.Vat_tax_id: '||tax_info_rec.vat_tax_id);
3033               FND_LOG.STRING(g_level_procedure,
3034                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3035                   'tax_info_rec.Tax_info_rec.tax_type: '||tax_info_rec.tax_type);
3036            END IF;
3037         */
3038 
3039         EXCEPTION
3040           when others then
3041             IF (g_level_procedure >= g_current_runtime_level ) THEN
3042                 FND_LOG.STRING(g_level_procedure,
3043                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3044                   'Exception in ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate'||SQLCODE||':'||SQLERRM);
3045             END IF;
3046 
3047 
3048         END;
3049  END IF;
3050 
3051 
3052 
3053 
3054   --
3055   -- Dump tax info when run in debug.
3056   --
3057   dump_tax_info_rec('I');
3058 
3059   --
3060   -- Check that the amount field has a value for lines other than Adjustments
3061   --
3062   IF ( tax_info_rec.extended_amount IS NULL AND
3063 	nvl(tax_info_rec.trx_line_type, 'LINE') <> 'ADJ' ) THEN
3064 		fnd_message.set_name('AR', 'AR_TAX_NO_AMOUNT');
3065 		app_exception.raise_exception;
3066   END IF;
3067 
3068   --
3069   -- Check that the precision field has a value
3070   --
3071   IF ( tax_info_rec.precision IS NULL ) THEN
3072 	fnd_message.set_name('AR', 'AR_TAX_NO_PRECISION');
3073 	app_exception.raise_exception;
3074   END IF;
3075 
3076   -- Copy the tax rate passed
3077   pg_tax_rate_passed := tax_info_rec.tax_rate;
3078 
3079 
3080   /*--------------------------------------------------------------------------*
3081    | If a tax code is not passed go find the default tax code. Apply item     |
3082    | exceptions defined for item and apply any exemptions that might exist.   |
3083    *--------------------------------------------------------------------------*/
3084 
3085   IF ( tax_info_rec.tax_code IS NULL ) THEN
3086 
3087 	--
3088 	-- Get default tax code
3089 	--
3090 	DECLARE
3091   		l_ship_to_site_use_id 	NUMBER;
3092   		l_bill_to_site_use_id 	NUMBER;
3093   		l_inventory_item_id   	NUMBER;
3094   		l_organization_id     	NUMBER;
3095   		l_memo_line_id     	NUMBER;
3096   		l_customer_id     	NUMBER;
3097   		l_warehouse_id	  	NUMBER;
3098   		l_set_of_books_id     	NUMBER;
3099   		l_trx_date		DATE;
3100   		l_trx_type_id		NUMBER;
3101   		l_cust_trx_id		NUMBER;
3102   		l_cust_trx_line_id	NUMBER;
3103   		l_appl_short_name	VARCHAR2(10);
3104   		l_func_short_name	VARCHAR2(30);
3105   		l_vat_tax_id		NUMBER;
3106   		l_amt_incl_tax_flag	  VARCHAR2(1);
3107   		l_amt_incl_tax_override	  VARCHAR2(1);
3108                 l_party_flag              VARCHAR2(1);
3109                 l_party_location_id       VARCHAR2(30);
3110 	BEGIN
3111 		--
3112 		-- Initialize
3113 		--
3114 		l_ship_to_site_use_id 	:= tax_info_rec.ship_to_site_use_id;
3115 		l_bill_to_site_use_id 	:= tax_info_rec.bill_to_site_use_id;
3116 		l_inventory_item_id 	:= tax_info_rec.inventory_item_id;
3117 		l_organization_id 	:= profinfo.so_organization_id;
3118 		l_memo_line_id 		:= tax_info_rec.memo_line_id;
3119 		l_customer_id 		:= nvl(tax_info_rec.ship_to_cust_id,
3120 					        tax_info_rec.bill_to_cust_id);
3121 		l_warehouse_id 		:= NULL;
3122 		l_set_of_books_id 	:= sysinfo.sysparam.set_of_books_id;
3123 		l_trx_date 		:= tax_info_rec.trx_date;
3124 		l_trx_type_id 		:= tax_info_rec.trx_type_id;
3125 		l_cust_trx_id 		:= tax_info_rec.customer_trx_id;
3126 		l_cust_trx_line_id 	:= tax_info_rec.customer_trx_line_id;
3127 		l_appl_short_name 	:= sysinfo.appl_short_name;
3128 		l_func_short_name 	:= sysinfo.func_short_name;
3129 
3130         	ZX_AR_TAX_CLASSIFICATN_DEF_PKG.get_default_tax_classification(
3131         	 p_ship_to_site_use_id   => l_ship_to_site_use_id,
3132                  p_bill_to_site_use_id   => l_bill_to_site_use_id,
3133                  p_inventory_item_id     => l_inventory_item_id,
3134                  p_organization_id       => l_organization_id,
3135             --   p_warehouse_id          => l_warehouse_id,
3136                  p_set_of_books_id       => l_set_of_books_id,
3137                  p_trx_date              => l_trx_date,
3138                  p_trx_type_id           => l_trx_type_id,
3139                  p_tax_classification_code => tax_info_rec.tax_code,
3140             --   p_amt_incl_tax_flag     => l_amt_incl_tax_flag,
3141             --   p_amt_incl_tax_override => l_amt_incl_tax_override,
3142                  p_cust_trx_id           => l_cust_trx_id,
3143                  p_cust_trx_line_id      => l_cust_trx_line_id,
3144                  p_customer_id           => l_customer_id,
3145                  p_memo_line_id          => l_memo_line_id,
3146                  appl_short_name         => l_appl_short_name,
3147                  func_short_name         => l_func_short_name ,
3148                  p_party_flag            => l_party_flag,
3149                  p_party_location_id     => l_party_location_id,
3150                  p_entity_code           => tax_info_rec.entity_code,
3151                  p_event_class_code      => tax_info_rec.event_class_code,
3152                  p_application_id        => 222,
3153                  p_internal_organization_id  => sysinfo.sysparam.org_id);
3154 
3155 
3156 
3157 
3158 	EXCEPTION
3159 	  WHEN NO_DATA_FOUND THEN NULL;
3160 	END;
3161 
3162   END IF;		-- Tax code passed?
3163 
3164   --
3165   -- If tax method is VAT and if tax code or rate not found then display mesg
3166   -- and raise exception.
3167   --
3168   IF  tax_info_rec.tax_code IS NULL THEN
3169 	fnd_message.set_name('AR', 'AR_TAX_NO_CODE');
3170 	app_exception.raise_exception;
3171 
3172   END IF;
3173 
3174   /*------------------------------------------------------------------------*
3175    | Bugfix : 370265, 370068.                                               |
3176    | If a tax rate or amount is passed then validate if the tax rate can be |
3177    | used and use that tax rate.                                            |
3178    *------------------------------------------------------------------------*/
3179   IF ( pg_tax_rate_passed IS NOT NULL ) THEN
3180     -- Tax rate was passed, Validate the tax rate passed
3181 
3182 
3183              --check_tax_rate_passed(l_use_tax_rate_passed);
3184               DECLARE
3185 
3186                     CURSOR sel_batch_src_tax_rule(c_trx_id IN NUMBER ) IS
3187               			SELECT invalid_tax_rate_rule
3188               			FROM   ra_batch_sources_all bsrc, ra_customer_trx_all trx
3189               			WHERE  trx.batch_source_id = bsrc.batch_source_id
3190               			AND    trx.org_id = bsrc.org_id
3191               			AND    trx.customer_trx_id = c_trx_id;
3192 
3193               BEGIN
3194 
3195                 IF (g_level_statement >= g_current_runtime_level) THEN
3196                 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'check_tax_rate_passed...' );
3197 
3198               	        If tax_info_rec.credit_memo_flag then
3199                         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- credit_memo_flag = Y');
3200                         else
3201                        		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- credit_memo_flag = N');
3202                        	end if;
3203                 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- pg_adhoc_tax_code = '||pg_adhoc_tax_code);
3204                 END IF;
3205 
3206 
3207               /* Bug Number 1795536 .Incase Of order Management ,it should set p_use_tax_rate_passed to true */
3208 
3209                 IF (g_level_statement >= g_current_runtime_level) THEN
3210                 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','--Calling Application is = ' || sysinfo.appl_short_name);
3211                 END IF;
3212 
3213                 IF ( tax_info_rec.credit_memo_flag OR sysinfo.appl_short_name='OE') THEN
3214                             if tax_info_rec.cm_type='On-Account' THEN /*Bugfix 2435438 */
3215                               L_USE_TAX_RATE_PASSED:=FALSE;
3216                              else
3217 
3218                   -- For Credit Memos, always use the tax rate passed.
3219                              l_use_tax_rate_passed := TRUE;
3220                             end if;
3221                             if sysinfo.appl_short_name='OE' then
3222                              l_use_tax_rate_passed := TRUE;
3223                             end if;
3224 
3225 
3226                 ELSE		-- Other Transactions like INV, DM and Sales Orders
3227 
3228                   IF ( nvl(pg_adhoc_tax_code,'N') = 'N' ) THEN
3229 
3230               		OPEN sel_batch_src_tax_rule(tax_info_rec.customer_trx_id);
3231               		FETCH sel_batch_src_tax_rule INTO l_batch_tax_rate_rule;
3232               		CLOSE sel_batch_src_tax_rule;
3233 
3234                       -- Batch tax rate rule is NULL(Correct) for Invoice sources
3235                       -- other than AutoInvoice
3236               	IF ( nvl(l_batch_tax_rate_rule, 'Correct') = 'Correct' ) THEN
3237 
3238               	  -- Don't use the tax rate passed, use the tax rate for the tax code.
3239               	  l_use_tax_rate_passed := FALSE;
3240               	ELSE
3241               	  -- Raise error
3242               	  fnd_message.set_name('AR','AR_TAX_RATE_INVALID');
3243               	  fnd_message.set_token('TAX_CODE', tax_info_rec.tax_code);
3244               	  fnd_message.set_token('TRX_DATE', tax_info_rec.trx_date );
3245               	  app_exception.raise_exception;
3246               	END IF;
3247 
3248                   ELSE 	-- Adhoc Tax Code
3249               	  l_use_tax_rate_passed := TRUE;	-- Use the tax rate passed.
3250                   END IF;
3251 
3252                 END IF;
3253 
3254                   IF (g_level_statement >= g_current_runtime_level) THEN
3255               	        If l_use_tax_rate_passed then
3256                         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- Use tax rate passed = Y');
3257                         else
3258                        		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '-- Use tax rate passed = N');
3259                        	end if;
3260                   END IF;
3261 
3262               EXCEPTION
3263                 WHEN OTHERS THEN
3264                 	IF (g_level_statement >= g_current_runtime_level) THEN
3265                 		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'EXCEPTION(OTHERS) : check_tax_rate_passed...' );
3266                 	END IF;
3267 
3268               	IF ( sel_batch_src_tax_rule%ISOPEN ) THEN
3269               		CLOSE sel_batch_src_tax_rule;
3270               	END IF;
3271               	RAISE ;
3272               END;
3273   END IF;
3274 
3275   IF ( l_use_tax_rate_passed
3276 	OR  tax_info_rec.tax_amount IS NOT NULL ) THEN
3277 
3278   	IF (g_level_statement >= g_current_runtime_level) THEN
3279   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Tax rate or amount passed');
3280   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Tax Rate = '||to_char(pg_tax_rate_passed));
3281   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Tax Amount = '||to_char(tax_info_rec.tax_amount));
3282   	END IF;
3283 
3284 	/*-----------------------------------------------------------------+
3285 	 | If a tax amount was passed, we need to preserve the tax amount. |
3286 	 | The tax rate will be derived from the tax amount and if a NULL  |
3287 	 | Tax rate was passed, We leave that unchanged.		   |
3288 	 +-----------------------------------------------------------------*/
3289 	IF ( tax_info_rec.tax_amount IS NULL ) THEN
3290 
3291 	  tax_info_rec.tax_rate := pg_tax_rate_passed;
3292 
3293 	  /* bug 636254: allow vendors to calculate the tax amount if this is not passed */
3294 	  /*get_tax_amount;*/
3295 
3296 	ELSE
3297 	  -- Tax amount was passed, preserve the tax amount and calculate
3298 	  -- the tax rate.
3299   	  IF (g_level_statement >= g_current_runtime_level) THEN
3300   	  	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','-- Deriving tax rate from tax amount');
3301   	  END IF;
3302           -- BugFix 2218609 Commented the following IF condition so that the
3303           -- tax_info_rec.tax_rate will be populated when ever the
3304           -- tax_info_rec.tax_amount is NOT NULL.
3305 
3306 	 -- IF ( tax_info_rec.tax_rate IS NOT NULL ) THEN
3307 
3308 	    -- Get tax rate from tax amount
3309 	    -- Note: The tax rate can be NULL, but not incorrect
3310 	    if (nvl(tax_info_rec.amount_includes_tax_flag, 'N') in('N','P')) then
3311 	      tax_info_rec.tax_rate := ((tax_info_rec.tax_amount * 100) /
3312 						tax_info_rec.extended_amount);
3313             else
3314 	      -- NOTE: the following equation does not work for side-by-side inclusive taxes..
3315 	      tax_info_rec.tax_rate := ((tax_info_rec.tax_amount * 100) /
3316  					(tax_info_rec.extended_amount - tax_info_rec.tax_amount));
3317             end if;
3318 	 -- END IF;
3319 
3320 	END IF;			-- Tax amount NULL?
3321 
3322 	/* Bugfix 550589: Divide by zero error */
3323 	IF ( tax_info_rec.extended_amount = 0 ) THEN
3324            tax_info_rec.effective_tax_rate := 0;
3325 	ELSE
3326 	   tax_info_rec.effective_tax_rate :=
3327                                            tax_info_rec.tax_amount / tax_info_rec.extended_amount;
3328 	END IF;
3329 
3330 
3331         /*-------------------------------------------------------------------+
3332          | Synchronize the Tax vendor with the passed Tax rate and Amount.   |
3333          | Here, we ignore the tax rate and amount passed by the tax vendor  |
3334          | as we need to use the tax rate or amount passed.                  |
3335          +-------------------------------------------------------------------*/
3336 
3337                -- Replace the call to arp_tax_vendor.calculate with direct call to LTE
3338                IF sysinfo.sysparam.tax_method = MTHD_LATIN  THEN
3339 
3340                   BEGIN
3341 
3342                    IF (g_level_statement >= g_current_runtime_level) THEN
3343                    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'Tax method: '
3344                                      ||sysinfo.sysparam.tax_method);
3345                    END IF;
3346 
3347                    tax_info_rec.tax_vendor_return_code :=
3348                                jl_zz_tax.calculate(p_org_id => sysinfo.sysparam.org_id);
3349 
3350                    IF (g_level_statement >= g_current_runtime_level) THEN
3351                    	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'JL_ZZ_TAX.calculate()- : tax_vendor_return_code '
3352                    	                    ||tax_info_rec.tax_vendor_return_code);
3353                    END IF;
3354 
3355                  EXCEPTION
3356                	WHEN OTHERS THEN
3357                  	    fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3358                  	    fnd_message.set_token('GENERIC_TEXT', 'Latin Tax Engine raised error.'||
3359                  	                 SQLCODE||';'||SQLERRM);
3360                  	    IF (g_level_unexpected >= g_current_runtime_level) THEN
3361                  	        FND_LOG.STRING(g_level_unexpected,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Latin Tax Engine raised error: '||SQLCODE||';'||SQLERRM);
3362                  	    END IF;
3363                  	    app_exception.raise_exception;
3364                  END;
3365               END IF;
3366 
3367 
3368  	IF l_tax_vendor_return_code in ( TAX_RC_OERR, TAX_RC_SYSERR,TAX_RC_NO_RATE ) THEN
3369         	/* There should be a message on the message stack already */
3370         	/* Raise a hard error */
3371         	app_exception.raise_exception;
3372      	END IF;
3373 
3374         /* Bug 636254: Once the vendor has had a chance to calculate the
3375            tax amount, if the tax amount is still NULL, then go and
3376            calculate the amount */
3377         if ( tax_info_rec.tax_amount IS NULL ) THEN
3378 
3379               -- get_tax_amount;
3380               IF ( tax_info_rec.tax_rate IS NOT NULL ) THEN
3381                   IF (nvl(tax_info_rec.taxable_basis, 'BEFORE_EPD') = 'QUANTITY') then
3382               	      l_tax_amount := tax_info_rec.taxed_quantity * tax_info_rec.tax_rate;
3383                       --
3384                       l_tax_amount := tax_curr_round(
3385               		    l_tax_amount,
3386               		    tax_info_rec.trx_currency_code,
3387               		    tax_info_rec.precision,
3388               		    tax_info_rec.minimum_accountable_unit,
3389               		    tax_info_rec.tax_rounding_rule,
3390                             'Y');
3391                       --
3392                       -- Set taxable_amount
3393                       --
3394                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount;
3395                       --
3396                       -- Set tax_rate
3397                       --
3398                       IF tax_info_rec.taxable_amount = 0 then
3399                          NULL;
3400                       ELSE
3401 
3402                           tax_info_rec.tax_rate := l_tax_amount / tax_info_rec.taxable_amount * 100;
3403                       END IF;
3404 
3405                   ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'Y') = 'Y') THEN
3406                 	l_tax_amount := tax_info_rec.extended_amount *
3407                                                           tax_info_rec.tax_rate / (100+tax_info_rec.tax_rate);
3408                       --
3409                       l_tax_amount := tax_curr_round(
3410               		    l_tax_amount,
3411               		    tax_info_rec.trx_currency_code,
3412               		    tax_info_rec.precision,
3413               		    tax_info_rec.minimum_accountable_unit,
3414               		    tax_info_rec.tax_rounding_rule,
3415                             'Y');
3416                       --
3417                       -- Set taxable_amount
3418                       --
3419                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount - l_tax_amount;
3420 
3421                   ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'N') in ('N','P') ) THEN
3422                 	l_tax_amount := tax_info_rec.extended_amount *
3423                                                           tax_info_rec.tax_rate / 100 ;
3424                       --
3425                       l_tax_amount := tax_curr_round(
3426               		    l_tax_amount,
3427               		    tax_info_rec.trx_currency_code,
3428               		    tax_info_rec.precision,
3429               		    tax_info_rec.minimum_accountable_unit,
3430               		    tax_info_rec.tax_rounding_rule,
3431                             'Y');
3432                       --
3433                       -- Set taxable_amount
3434                       --
3435                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount;
3436                   END IF;
3437 
3438                 END IF;
3439 
3440                 --
3441                 -- Round to correct currency precision
3442                 --
3443                 l_precision     := tax_info_rec.precision;
3444                 l_min_acct_unit := tax_info_rec.minimum_accountable_unit;
3445 
3446                 tax_info_rec.tax_amount := tax_curr_round( l_tax_amount,
3447                                                       tax_info_rec.trx_currency_code,
3448                                                       tax_info_rec.precision,
3449                                                       tax_info_rec.minimum_accountable_unit,
3450                                                       tax_info_rec.tax_rounding_rule,
3451                                                       'Y');
3452 
3453         end if;
3454   	--
3455   	-- Dump tax info.
3456   	--
3457   	dump_tax_info_rec('O');
3458 
3459   	IF (g_level_statement >= g_current_runtime_level) THEN
3460   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','arp_tax_calculate()-');
3461   	END IF;
3462 	RETURN;
3463 
3464   END IF;		-- End of Bugfix 370068, 370265
3465 
3466   --
3467   -- At this point we've found a tax code for VAT.
3468   --
3469 
3470   --
3471   -- If exemption is not passed, then look for exemptions
3472   --
3473   IF ( tax_info_rec.tax_exemption_id IS NULL ) THEN
3474 
3475 	BEGIN
3476 
3477 --crm
3478           IF (nvl(tax_info_rec.party_flag, 'N') = 'N') THEN
3479             --++ Nilesh: Need to check if exemptions are supported in LTE
3480 	    -- get_exempt;
3481 	     NULL;
3482           END IF;
3483 
3484 	EXCEPTION
3485 	  WHEN TAX_NO_RATE THEN
3486 		--
3487 		-- If Tax control is Exempt(and Exemption not found) then
3488 		-- display message and raise exception.
3489 		--
3490 		IF ( tax_info_rec.tax_control = 'E' ) THEN
3491 
3492 			fnd_message.set_name('AR','AR_TAX_NO_RATE');
3493 			app_exception.raise_exception;
3494 
3495 		END IF;		-- Tax control is Exempt?
3496 	END;
3497 
3498   END IF;			-- Exemption info found?
3499 
3500 
3501        -- Replace the call to arp_tax_vendor.calculate with direct call to LTE
3502        IF sysinfo.sysparam.tax_method = MTHD_LATIN  THEN
3503 
3504           BEGIN
3505 
3506            IF (g_level_statement >= g_current_runtime_level) THEN
3507            	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'Tax method: '
3508                              ||sysinfo.sysparam.tax_method);
3509            END IF;
3510 
3511            l_tax_vendor_return_code :=  jl_zz_tax.calculate(p_org_id => sysinfo.sysparam.org_id);
3512 
3513            IF (g_level_statement >= g_current_runtime_level) THEN
3514            	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'JL_ZZ_TAX.calculate()- : tax_vendor_return_code '
3515            	                    ||l_tax_vendor_return_code);
3516            END IF;
3517 
3518          EXCEPTION
3519        	WHEN OTHERS THEN
3520          	    fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3521          	    fnd_message.set_token('GENERIC_TEXT', 'Latin Tax Engine raised error.'||
3522          	                 SQLCODE||';'||SQLERRM);
3523          	    IF (g_level_unexpected >= g_current_runtime_level) THEN
3524          	       FND_LOG.STRING(g_level_unexpected,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Latin Tax Engine raised error: '||SQLCODE||';'||SQLERRM);
3525                     END IF;
3526          	    app_exception.raise_exception;
3527          END;
3528       END IF;
3529 
3530   --
3531   -- If Tax Vendor is not installed then we need to get the Sales Tax Rate
3532   -- and apply exemptions if any. If a Tax vendor is installed then we use
3533   -- the tax rate and amount calculated by the tax vendor.
3534   --
3535   IF ( l_tax_vendor_return_code = TAX_NO_VENDOR ) THEN
3536 
3537 	tax_info_rec.tax_vendor_return_code := l_tax_vendor_return_code;
3538 
3539 	--
3540 	-- If the Exemption is 100%, then we don't need to get sales tax rate,
3541 	-- tax rate and tax amount is 0.
3542 	IF ( NVL(tax_info_rec.xmpt_percent,0) = 100 ) THEN
3543 
3544 		tax_info_rec.tax_rate := 0;
3545 		tax_info_rec.tax_amount := 0;
3546 
3547 	END IF;			-- 100% Exemption?
3548 
3549 
3550 	--
3551 	-- If exemption exists, calculate exempted tax rate
3552 	--
3553 	IF ( tax_info_rec.xmpt_percent IS NOT NULL ) THEN
3554 
3555 		--++ Nilesh: Need to check if exemptions are supported in LTE
3556 		-- calculate_exempt;
3557 		NULL;
3558 
3559 	END IF;			-- Exemption exists?
3560 
3561 	--
3562 	-- Calculate tax amount rounded to correct precision.
3563 	--
3564 
3565               -- get_tax_amount;
3566               IF ( tax_info_rec.tax_rate IS NOT NULL ) THEN
3567                   IF (nvl(tax_info_rec.taxable_basis, 'BEFORE_EPD') = 'QUANTITY') then
3568               	      l_tax_amount := tax_info_rec.taxed_quantity * tax_info_rec.tax_rate;
3569                       --
3570                       l_tax_amount := tax_curr_round(
3571               		    l_tax_amount,
3572               		    tax_info_rec.trx_currency_code,
3573               		    tax_info_rec.precision,
3574               		    tax_info_rec.minimum_accountable_unit,
3575               		    tax_info_rec.tax_rounding_rule,
3576                             'Y');
3577                       --
3578                       -- Set taxable_amount
3579                       --
3580                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount;
3581                       --
3582                       -- Set tax_rate
3583                       --
3584                       IF tax_info_rec.taxable_amount = 0 then
3585                          NULL;
3586                       ELSE
3587 
3588                           tax_info_rec.tax_rate := l_tax_amount / tax_info_rec.taxable_amount * 100;
3589                       END IF;
3590 
3591                   ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'Y') = 'Y') THEN
3592                 	l_tax_amount := tax_info_rec.extended_amount *
3593                                                           tax_info_rec.tax_rate / (100+tax_info_rec.tax_rate);
3594                       --
3595                       l_tax_amount := tax_curr_round(
3596               		    l_tax_amount,
3597               		    tax_info_rec.trx_currency_code,
3598               		    tax_info_rec.precision,
3599               		    tax_info_rec.minimum_accountable_unit,
3600               		    tax_info_rec.tax_rounding_rule,
3601                             'Y');
3602                       --
3603                       -- Set taxable_amount
3604                       --
3605                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount - l_tax_amount;
3606 
3607                   ELSIF ( nvl(tax_info_rec.amount_includes_tax_flag, 'N') in ('N','P') ) THEN
3608                 	l_tax_amount := tax_info_rec.extended_amount *
3609                                                           tax_info_rec.tax_rate / 100 ;
3610                       --
3611                       l_tax_amount := tax_curr_round(
3612               		    l_tax_amount,
3613               		    tax_info_rec.trx_currency_code,
3614               		    tax_info_rec.precision,
3615               		    tax_info_rec.minimum_accountable_unit,
3616               		    tax_info_rec.tax_rounding_rule,
3617                             'Y');
3618                       --
3619                       -- Set taxable_amount
3620                       --
3621                       tax_info_rec.taxable_amount := tax_info_rec.extended_amount;
3622                   END IF;
3623 
3624                 END IF;
3625 
3626                 --
3627                 -- Round to correct currency precision
3628                 --
3629                 l_precision     := tax_info_rec.precision;
3630                 l_min_acct_unit := tax_info_rec.minimum_accountable_unit;
3631 
3632                 tax_info_rec.tax_amount := tax_curr_round( l_tax_amount,
3633                                                       tax_info_rec.trx_currency_code,
3634                                                       tax_info_rec.precision,
3635                                                       tax_info_rec.minimum_accountable_unit,
3636                                                       tax_info_rec.tax_rounding_rule,
3637                                                       'Y');
3638 
3639 
3640   ELSE /* Tax Vendor is installed */
3641 
3642 
3643      tax_info_rec.tax_vendor_return_code := l_tax_vendor_return_code;
3644 
3645 
3646      IF l_tax_vendor_return_code in ( TAX_RC_OERR, TAX_RC_SYSERR, TAX_RC_NO_RATE ) THEN
3647 	/* There should be a message on the message stack already */
3648 	/* Raise a hard error */
3649 	app_exception.raise_exception;
3650      END IF;
3651 
3652 
3653   END IF;		-- Vendor not installed?
3654 
3655   /* Bugfix 550589: Divide by zero error */
3656   IF ( tax_info_rec.extended_amount = 0 ) THEN
3657      tax_info_rec.effective_tax_rate := 0;
3658   ELSE
3659      tax_info_rec.effective_tax_rate := tax_info_rec.tax_amount / tax_info_rec.extended_amount;
3660   END IF;
3661 
3662   --
3663   -- Dump tax info.
3664   --
3665   dump_tax_info_rec('O');
3666 
3667   IF (g_level_procedure >= g_current_runtime_level ) THEN
3668     FND_LOG.STRING(g_level_procedure,
3669                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate.END',
3670                   'ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate(-)');
3671   END IF;
3672 
3673 EXCEPTION
3674   WHEN OTHERS THEN
3675     IF (g_level_unexpected >= g_current_runtime_level ) THEN
3676       FND_LOG.STRING(g_level_unexpected,
3677                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.arp_tax_calculate',
3678                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3679     END IF;
3680 
3681        /*---------------------------------------------+
3682         |  Display parameters and raise the exception |
3683         +---------------------------------------------*/
3684         IF (g_level_statement >= g_current_runtime_level) THEN
3685         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','****************************************');
3686         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','*    EXCEPTION:  arp_tax_calculate()   *');
3687         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','----------------------------------------');
3688         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','*       Dumping Tax Info Record        *');
3689         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','****************************************');
3690         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','--');
3691         END IF;
3692 
3693 	--
3694 	-- Dump tax info.
3695 	--
3696 	dump_tax_info_rec('E');
3697 
3698         RAISE;
3699 
3700 END arp_tax_calculate;
3701 
3702 
3703 /*===========================================================================+
3704  | PROCEDURE                                                                 |
3705  |   prepare_tax_info_rec                                                    |
3706  |                                                                           |
3707  | DESCRIPTION                                                               |
3708  |                                                                           |
3709  | MODIFICATION HISTORY                                                      |
3710  |                                                                           |
3711 +===========================================================================*/
3712 
3713 PROCEDURE prepare_tax_info_rec(
3714   p_index   IN NUMBER
3715 )IS
3716 
3717   l_cust_trx_type_id      ra_cust_trx_types.cust_trx_type_id%type;
3718   l_location_structure_id ar_system_parameters.location_structure_id%type;
3719   l_location_segment_num  number;
3720   l_set_of_books_id       ar_system_parameters.set_of_books_id%type;
3721   l_tax_rounding_allow_override
3722                           ar_system_parameters.tax_rounding_allow_override%type;
3723   l_tax_header_level_flag ar_system_parameters.tax_header_level_flag%type;
3724   l_tax_rounding_rule     ar_system_parameters.tax_rounding_rule%type;
3725   l_tax_rule_set          ar_system_parameters.global_attribute13%type;
3726   l_location_id           hr_locations_all.location_id%type;
3727   l_org_class             hr_locations_all.global_attribute1%type;
3728   l_taxable_basis         ar_vat_tax.taxable_basis%type;
3729   l_tax_calculation_plsql_block
3730                            ar_vat_tax.tax_calculation_plsql_block%type;
3731   l_tax_calculation_flag  ra_cust_trx_types.tax_calculation_flag%type;
3732   l_tax_type              ar_vat_tax.tax_type%type;
3733   l_vat_tax_id            ar_vat_tax.vat_tax_id%type;
3734   l_tax_category_id       ar_vat_tax.global_attribute1%type;
3735   l_global_attribute5     mtl_system_items.global_attribute1%type;
3736   l_global_attribute6     mtl_system_items.global_attribute2%type;
3737   l_tax_classification_code   ar_vat_tax_all_b.tax_code%type;
3738 
3739 
3740 BEGIN
3741 
3742   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3743 
3744   IF (g_level_procedure >= g_current_runtime_level ) THEN
3745     FND_LOG.STRING(g_level_procedure,
3746                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec.BEGIN',
3747                   'ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec(+)');
3748   END IF;
3749 
3750 /*
3751  column not found in the dist_tbl
3752 shipping_trading_partner_number(p_index);
3753 shipping_trading_partner_name(p_index);
3754 --  tax_info_rec.ship_to_customer_number      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_trading_partner_number(p_index);
3755 --  tax_info_rec.ship_to_customer_name        :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_trading_partner_name(p_index);
3756 */
3757 
3758   -- ? check the following four columns
3759   tax_info_rec.ship_to_cust_id      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_third_pty_acct_id(p_index);
3760   tax_info_rec.bill_to_cust_id      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.bill_third_pty_acct_id(p_index);
3761   tax_info_rec.ship_to_site_use_id  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.SHIP_TO_CUST_ACCT_SITE_USE_ID(p_index);
3762   tax_info_rec.bill_to_site_use_id  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.BILL_TO_CUST_ACCT_SITE_USE_ID(p_index);
3763 
3764   tax_info_rec.customer_trx_line_id :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Trx_line_id(p_index);
3765   tax_info_rec.customer_trx_id      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Trx_id(p_index);
3766   tax_info_rec.trx_date             :=   NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_date(p_index),
3767                                                      ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_index));
3768   tax_info_rec.gl_date              :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_gl_date(p_index);
3769   tax_info_rec.tax_code             :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index);
3770 
3771   IF (g_level_statement >= g_current_runtime_level) then
3772     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Product_id = ('||to_char(p_index)||' )'||
3773                 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_id(p_index));
3774    FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Product_org_id = '||
3775                 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_org_id(p_index));
3776   END IF;
3777 
3778   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_id(p_index) is NOT NULL and
3779      ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_org_id(p_index) is NULL
3780   then
3781   -- this indicates that the line is a memo line
3782       tax_info_rec.memo_line_id         :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_id(p_index);  -- not need for latin tax
3783   ELSE
3784       tax_info_rec.inventory_item_id    :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_id(p_index);
3785   END IF;
3786   tax_info_rec.tax_control          :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.char1(p_index);   --exempt_flag
3787   tax_info_rec.xmpt_cert_no         :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.exempt_certificate_number(p_index);
3788   tax_info_rec.xmpt_reason          :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.exempt_reason(p_index);
3789   tax_info_rec.ship_to_location_id  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ship_to_location_id(p_index);
3790   tax_info_rec.bill_to_location_id  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.bill_to_location_id(p_index);
3791   tax_info_rec.extended_amount      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_index);
3792   -- in process_tax_rec_f_sql, entered_amount := extended_amount
3793   tax_info_rec.entered_amount      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_index);
3794 
3795   tax_info_rec.trx_exchange_rate    :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.currency_conversion_rate(p_index);
3796   tax_info_rec.trx_currency_code    :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_currency_code(p_index);
3797   tax_info_rec.minimum_accountable_unit       :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.minimum_accountable_unit(p_index);
3798   tax_info_rec.precision                      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.precision(p_index);
3799   tax_info_rec.fob_point                      :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.FOB_POINT(p_index);
3800   tax_info_rec.taxed_quantity                 :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_quantity(p_index);
3801   tax_info_rec.trx_number                     :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_number(p_index);
3802 --  tax_info_rec.bill_to_customer_number        :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.billing_trading_partner_number(p_index);
3803 --  tax_info_rec.bill_to_customer_name          :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.billing_trading_partner_name(p_index);
3804   tax_info_rec.previous_customer_trx_line_id  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID(p_index);
3805   tax_info_rec.previous_customer_trx_id       :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(p_index);
3806   tax_info_rec.previous_trx_number            :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Adjusted_doc_number(p_index);
3807   tax_info_rec.trx_line_type                  :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_type(p_index);
3808 
3809 -- Bug#5338305
3810  tax_info_rec.adjusted_doc_application_id     := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(p_index);
3811  tax_info_rec.adjusted_doc_entity_code        := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(p_index);
3812  tax_info_rec.adjusted_doc_event_class_code   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(p_index);
3813  tax_info_rec.adjusted_doc_trx_id             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(p_index);
3814  tax_info_rec.adjusted_doc_line_id            := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(p_index);
3815  tax_info_rec.adjusted_doc_number             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_number(p_index);
3816  tax_info_rec.adjusted_doc_date               := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_date(p_index);
3817 
3818   tax_info_rec.adjusted_doc_trx_level_type    := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_level_type(p_index);
3819 
3820   -- bug#5350983- added related doc columns
3821   tax_info_rec.related_doc_application_id     := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_application_id(p_index);
3822   tax_info_rec.related_doc_entity_code        := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_entity_code(p_index);
3823   tax_info_rec.related_doc_event_class_code   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_event_class_code(p_index);
3824   tax_info_rec.related_doc_trx_id             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_trx_id(p_index);
3825   --tax_info_rec.related_doc_trx_level_type     := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_trx_level_type(p_index);
3826   /* bug 5639478
3827   tax_info_rec.rel_doc_hdr_trx_user_key1      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key1(p_index);
3828   tax_info_rec.rel_doc_hdr_trx_user_key2      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key2(p_index);
3829   tax_info_rec.rel_doc_hdr_trx_user_key3      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key3(p_index);
3830   tax_info_rec.rel_doc_hdr_trx_user_key4      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key4(p_index);
3831   tax_info_rec.rel_doc_hdr_trx_user_key5      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key5(p_index);
3832   tax_info_rec.rel_doc_hdr_trx_user_key6      := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.rel_doc_hdr_trx_user_key6(p_index);
3833   */
3834   tax_info_rec.related_doc_number             := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_number(p_index);
3835   tax_info_rec.related_doc_date               := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_date(p_index);
3836 
3837   tax_info_rec.trx_type_id                    :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.receivables_trx_type_id(p_index);
3838   tax_info_rec.ship_from_warehouse_id         :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.Product_org_id(p_index);
3839   --tax_info_rec.poo_id                         :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.POO_PARTY_ID(p_index);
3840   --tax_info_rec.poa_id                         :=   ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.POA_PARTY_ID(p_index);
3841 
3842   tax_info_rec.amount_includes_tax_flag       := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(p_index);
3843 
3844   -- the following column assignment used to get char/numeric attributes
3845   -- retrieved from tax views, used in LTE. some can be defaulted through
3846   -- LTE validate and default program.
3847 
3848 
3849   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.receivables_trx_type_id(p_index) IS NULL THEN
3850      fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3851      fnd_message.set_token('GENERIC_TEXT',
3852 	       'Required Parameter Missing: Transaction Type Id');
3853      app_exception.raise_exception;
3854   END IF;
3855 
3856  -- Fetch Customer Trx_Type_Id and Tax Calculation Flag
3857   -- If Tax Calculation Flag is unchecked then return.
3858   l_cust_trx_type_id := NULL;
3859   BEGIN
3860       IF (g_level_statement >= g_current_runtime_level) THEN
3861           FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Receivables trx type id: '||
3862           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.receivables_trx_type_id(p_index));
3863       END IF;
3864     SELECT INV_TYPE.CUST_TRX_TYPE_ID,
3865            INV_TYPE.TAX_CALCULATION_FLAG
3866     INTO   l_cust_trx_type_id,
3867            l_tax_calculation_flag
3868     FROM   RA_CUST_TRX_TYPES_ALL INV_TYPE
3869     WHERE  INV_TYPE.CUST_TRX_TYPE_ID = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.receivables_trx_type_id(p_index)
3870       AND  ORG_ID = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_index);
3871 
3872   EXCEPTION
3873     WHEN NO_DATA_FOUND THEN
3874          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3875          fnd_message.set_token('GENERIC_TEXT',
3876 	         'EXCEPTION(NO_DATA_FOUND) : Customer Trx Type Id');
3877          app_exception.raise_exception;
3878 
3879     WHEN OTHERS THEN
3880          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3881          fnd_message.set_token('GENERIC_TEXT',
3882 	         'EXCEPTION(OTHERS) : Customer Trx Type Id : ' || sqlerrm);
3883          app_exception.raise_exception;
3884   END;
3885 
3886   IF (NVL(l_tax_calculation_flag,'N') <> 'Y') THEN
3887      IF (g_level_statement >= g_current_runtime_level) THEN
3888      	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','populate_tax_struct_lte: ' || 'Tax Calculation Flag is not checked');
3889      END IF;
3890 
3891      IF (NVL(tax_info_rec.tax_control,'S') <> 'R') THEN
3892         IF (g_level_statement >= g_current_runtime_level) THEN
3893         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','populate_tax_struct_lte: ' || 'Tax Exempt Flag is ' || tax_info_rec.tax_control);
3894         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','populate_tax_struct_lte: ' || 'VALUES ARE NOT POPULATED');
3895         	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','populate_tax_struct_lte ()-');
3896         END IF;
3897         return;
3898      END IF;
3899   END IF;
3900   tax_info_rec.trx_type_id := l_cust_trx_type_id;
3901 
3902   -- Fetch System Parameters
3903   l_location_structure_id       := sysinfo.sysparam.LOCATION_STRUCTURE_ID;
3904   l_location_segment_num        := TO_NUMBER(sysinfo.sysparam.GLOBAL_ATTRIBUTE10);
3905   l_set_of_books_id             := sysinfo.sysparam.SET_OF_BOOKS_ID;
3906   l_tax_rounding_allow_override := sysinfo.sysparam.TAX_ROUNDING_ALLOW_OVERRIDE;
3907   l_tax_header_level_flag       := sysinfo.sysparam.TAX_HEADER_LEVEL_FLAG;
3908   l_tax_rounding_rule           := sysinfo.sysparam.TAX_ROUNDING_RULE;
3909   l_tax_rule_set                := sysinfo.sysparam.GLOBAL_ATTRIBUTE13;
3910 
3911   tax_info_rec.usern9 := l_location_structure_id;
3912   tax_info_rec.usern10 := l_location_segment_num;
3913   tax_info_rec.userf1 := l_tax_rule_set;
3914 
3915   -- Fetch Location Id and Organization Class
3916   l_location_id := NULL;
3917   l_org_class := NULL;
3918 
3919   IF (g_level_statement >= g_current_runtime_level) THEN
3920     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Getting global_Attribute1 from HR Locations for ORG: '||
3921             NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_index),0));
3922   END IF;                              --      OE_PROFILE.VALUE('SO_ORGANIZATION_ID')));
3923 
3924   BEGIN
3925     SELECT HRL.LOCATION_ID,
3926            NVL(HRL.GLOBAL_ATTRIBUTE1, 'DEFAULT')
3927     INTO   l_location_id,
3928            l_org_class
3929     FROM   HR_LOCATIONS_ALL HRL ,
3930            HR_ORGANIZATION_UNITS ORG
3931     WHERE  ORG.LOCATION_ID = HRL.LOCATION_ID
3932     --++ nipatel verify this join condition
3933     --++ Condition changed for Bug#7438620
3934     AND    ORG.ORGANIZATION_ID = NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.product_org_id(p_index),
3935                                      ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_index));
3936   EXCEPTION
3937     WHEN NO_DATA_FOUND THEN
3938          IF (g_level_unexpected >= g_current_runtime_level) THEN
3939            FND_LOG.STRING(g_level_unexpected,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Could not derive global_attribute1 from hr_locations for org_id: '||
3940                               ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_index));
3941          END IF;
3942          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3943          fnd_message.set_token('GENERIC_TEXT',
3944 	         'EXCEPTION(NO_DATA_FOUND) : Organization Class');
3945          app_exception.raise_exception;
3946     WHEN OTHERS THEN
3947          fnd_message.set_name('AR', 'GENERIC_MESSAGE');
3948          fnd_message.set_token('GENERIC_TEXT',
3949 	         'EXCEPTION(OTHERS) : Organization Class : ' || sqlcode||' , '||sqlerrm);
3950          app_exception.raise_exception;
3951   END;
3952   tax_info_rec.usern4 := l_location_id;
3953   tax_info_rec.userf10 := l_org_class;
3954 
3955 
3956   tax_info_rec.tax_code := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index);
3957 
3958   IF (g_level_statement >= g_current_runtime_level) THEN
3959       FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','Getting attributes from AR_VAT_TAX_ALL for tax_code: '||
3960                        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index));
3961   END IF;
3962 
3963   -- Fetch AR_VAT_TAX details when tax_code is not NULL
3964   l_taxable_basis := NULL;
3965   l_tax_calculation_plsql_block := NULL;
3966   l_tax_type := NULL;
3967   l_vat_tax_id := NULL;
3968   l_tax_category_id := NULL;  -- bug 6824850
3969 
3970   IF (g_level_statement >= g_current_runtime_level) THEN
3971     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','l_set_of_books_id: '||l_set_of_books_id);
3972     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','tax_code: '||ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index));
3973     FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','trx_Date: '||tax_info_rec.trx_date);
3974   END IF;
3975 
3976   -- bug 6824850: select only if tax code is available
3977   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index) IS NOT NULL THEN
3978 
3979       BEGIN
3980         SELECT TAXABLE_BASIS,
3981                TAX_CALCULATION_PLSQL_BLOCK,
3982                TAX_TYPE,
3983                decode(tax_type,'TAX_GROUP',vat_tax_id,null),
3984                decode(tax_type,'TAX_GROUP',NULL,
3985                   decode (length(translate(global_attribute1,
3986                    '0123456789 ', '0123456789')),
3987                    length(translate(global_attribute1, '0123456789
3988                    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-,:.',
3989                    '0123456789')), global_attribute1, -99))
3990         INTO   l_taxable_basis,
3991                l_tax_calculation_plsql_block,
3992                l_tax_type,
3993                l_vat_tax_id,
3994                l_tax_category_id
3995         FROM   ar_vat_tax_all_b
3996         WHERE  set_of_books_id = l_set_of_books_id
3997         AND    tax_code = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_index)
3998         AND    tax_info_rec.trx_date BETWEEN start_date
3999                               AND NVL(end_date, TO_DATE( '31122199', 'DDMMYYYY'))
4000         AND    NVL(enabled_flag,'Y') = 'Y'
4001         AND    NVL(tax_class,'O') = 'O'
4002         AND    ORG_ID = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.internal_organization_id(p_index) ;
4003       EXCEPTION
4004         WHEN NO_DATA_FOUND THEN
4005              fnd_message.set_name('AR', 'GENERIC_MESSAGE');
4006              fnd_message.set_token('GENERIC_TEXT',
4007     	         'EXCEPTION(NO_DATA_FOUND) : Tax Code');
4008              app_exception.raise_exception;
4009         WHEN OTHERS THEN
4010              fnd_message.set_name('AR', 'GENERIC_MESSAGE');
4011              fnd_message.set_token('GENERIC_TEXT',
4012     	         'EXCEPTION(OTHERS) : Tax Code : ' || sqlerrm);
4013              app_exception.raise_exception;
4014       END;
4015   -- Bug 4028732 comment out  END IF;
4016 
4017   END IF;    -- bug 6824850
4018 
4019   tax_info_rec.taxable_basis := l_taxable_basis;
4020   tax_info_rec.tax_calculation_plsql_block :=
4021                                                 l_tax_calculation_plsql_block;
4022   tax_info_rec.amount_includes_tax_flag := 'N';
4023   tax_info_rec.userf7 := l_tax_type;
4024   tax_info_rec.usern1 := l_tax_category_id;
4025   tax_info_rec.usern2 := l_vat_tax_id;
4026   tax_info_rec.usern5 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.RELATED_DOC_TRX_ID(p_index);
4027 
4028   -- Columns with Values from Parameters
4029   tax_info_rec.trx_exchange_rate := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(p_index);
4030 
4031 
4032   --++ verify that invoicing_rule_id, payment_term_id are not used in LTE
4033   -- tax_info_rec.invoicing_rule_id := p_invoicing_rule_id;
4034   -- tax_info_rec.payment_term_id := p_payment_term_id;
4035 
4036   l_global_attribute5 := nvl(
4037              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_FISC_CLASSIFICATION(p_index),
4038              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.PRODUCT_CATEGORY(p_index));
4039   l_global_attribute6 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.TRX_BUSINESS_CATEGORY(p_index);
4040 
4041   tax_info_rec.userf2 := l_global_attribute5;
4042   tax_info_rec.userf9 := l_global_attribute6;
4043 
4044 
4045   -- Columns with Default or NULL values
4046   /*
4047   tax_info_rec.customer_trx_charge_line_id := to_number(NULL);
4048   tax_info_rec.link_to_cust_trx_line_id := to_number(NULL);
4049   tax_info_rec.gl_date := NULL;
4050   tax_info_rec.tax_rate := to_number(NULL);
4051   tax_info_rec.tax_amount :=to_number(NULL);
4052   tax_info_rec.memo_line_id := NULL;
4053   tax_info_rec.default_ussgl_transaction_code := NULL;
4054   tax_info_rec.default_ussgl_trx_code_context := NULL;
4055   tax_info_rec.poo_code := NULL;
4056   tax_info_rec.poa_code := NULL;
4057   tax_info_rec.ship_from_code := NULL;
4058   tax_info_rec.ship_to_code := NULL;
4059   tax_info_rec.part_no := NULL;
4060   tax_info_rec.tax_line_number := to_number(null);
4061   tax_info_rec.tax_precedence := NULL;
4062   tax_info_rec.tax_exemption_id := NULL;
4063   tax_info_rec.item_exception_rate_id := NULL;
4064   tax_info_rec.vdrctrl_exempt := NULL;
4065   tax_info_rec.userf3 := NULL;
4066   tax_info_rec.userf4 := NULL; --userf4 can be derived from site_use id, for OM it is 'OE';
4067   tax_info_rec.userf5 := NULL;
4068   tax_info_rec.usern3 := NULL;
4069   tax_info_rec.usern5 := NULL;
4070   tax_info_rec.trx_number := to_number(NULL);
4071   tax_info_rec.previous_customer_trx_line_id := to_number(NULL);
4072   tax_info_rec.previous_customer_trx_id := to_number(NULL);
4073   tax_info_rec.previous_trx_number := to_number(NULL);
4074   tax_info_rec.trx_line_type := NULL;
4075   tax_info_rec.division_code := NULL;
4076   tax_info_rec.company_code := NULL;
4077   tax_info_rec.vat_tax_id := to_number(NULL);
4078   tax_info_rec.poo_id := to_number(NULL);
4079   tax_info_rec.poa_id := to_number(NULL);
4080   tax_info_rec.payment_terms_discount_percent := NULL;
4081   tax_info_rec.userf8 := NULL;
4082  */
4083 
4084   tax_info_rec.qualifier := 'ALL';
4085   tax_info_rec.calculate_tax := 'Y';
4086   tax_info_rec.audit_flag := 'N';
4087   tax_info_rec.usern6 := to_number(to_char(tax_info_rec.trx_date, 'YYYYMMDD'));
4088   tax_info_rec.usern7 := 2;
4089 
4090   -- bug 6824850
4091   IF (g_level_statement >= g_current_runtime_level) THEN
4092     FND_LOG.STRING(g_level_statement,
4093                    'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec',
4094                    'userf9 : '|| tax_info_rec.userf9);
4095   END IF;
4096 
4097 
4098   IF (g_level_procedure >= g_current_runtime_level ) THEN
4099     FND_LOG.STRING(g_level_procedure,
4100                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec.END',
4101                   'ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec(-)');
4102   END IF;
4103 EXCEPTION
4104   WHEN OTHERS THEN
4105     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4106       FND_LOG.STRING(g_level_unexpected,
4107                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_tax_info_rec',
4108                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4109     END IF;
4110 
4111 END prepare_tax_info_rec;
4112 
4113 /*===========================================================================+
4114  | PROCEDURE                                                                 |
4115  |    prepare_detail_tax_line                                                |
4116  |                                                                           |
4117  | DESCRIPTION                                                               |
4118  |    Bulk insert of the tax_info_rec output lines into detail_tax_lines_gt. |
4119  | SCOPE - PUBLIC                                                            |
4120  |                                                                           |
4121  | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED                                   |
4122  |                                                                           |
4123  | CALLED FROM                                                               |
4124  |                                                                           |
4125  | NOTES                                                                     |
4126  |                                                                           |
4127  | MODIFICATION HISTORY                                                      |
4128  |                                                                           |
4129 +===========================================================================*/
4130 
4131 PROCEDURE  prepare_detail_tax_line(
4132   p_event_class_rec  IN zx_api_pub.event_class_rec_type,
4133   p_id_dist_tbl      IN NUMBER,
4134   p_new_row_num      IN NUMBER,
4135   p_tax_out_rec      IN tax_info_rec_TYPE
4136 ) IS
4137 
4138 l_user_id   	NUMBER;
4139 l_date      	DATE;
4140 l_return_status VARCHAR2(30);
4141 l_error_buffer  VARCHAR2(240);
4142 l_tax_regime_rec	ZX_GLOBAL_STRUCTURES_PKG.tax_regime_rec_type;
4143 l_tax_rec  	        zx_tds_utilities_pkg.zx_tax_info_cache_rec;
4144 l_tax_status_rec	ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
4145 l_tax_jurisdiction_rec  zx_tds_utilities_pkg.zx_jur_info_cache_rec_type;
4146 l_tax_rate_id           zx_rates_b.tax_rate_id%type;
4147 
4148 
4149 
4150 BEGIN
4151 
4152   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4153   IF (g_level_procedure >= g_current_runtime_level ) THEN
4154     FND_LOG.STRING(g_level_procedure,
4155                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line.BEGIN',
4156                  'ZX_PRODUCT_INTEGRATION_PKG: prepare_detail_tax_line (+)');
4157   END IF;
4158 
4159   l_user_id := fnd_global.user_id;
4160   l_date := sysdate;
4161 
4162   SELECT zx_lines_s.NEXTVAL
4163     INTO ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_line_id
4164     FROM dual;
4165 
4166   -- standard who columns
4167   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CREATED_BY       :=     l_user_id ;
4168   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CREATION_DATE    :=     l_date ; -- creation_date
4169   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LAST_UPDATED_BY  :=     l_user_id ;
4170   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LAST_UPDATE_DATE :=     l_date ; -- update_date
4171 
4172   -- below are read from tax_info_rec
4173 
4174 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).adjusted_doc_tax_line_id := p_tax_out_rec.adjusted_doc_tax_line_id;
4175 
4176 
4177   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).trx_line_date        :=  p_tax_out_rec.trx_date;
4178   --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).FOB_POINT            :=  p_tax_out_rec.fob_point;
4179   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ROUNDING_LEVEL_CODE  :=  p_tax_out_rec.ROUNDING_LEVEL_CODE; --tax_header_level_flag;  --++?where to set this value
4180   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ROUNDING_RULE_CODE   :=  p_tax_out_rec.ROUNDING_RULE_CODE;  --tax_rounding_rule;
4181   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_line_number      :=  p_tax_out_rec.tax_line_number ;
4182   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_AMT                := p_tax_out_rec.TAX_AMOUNT;
4183   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAXABLE_AMT            := p_tax_out_rec.TAXABLE_AMOUNT;  -- ? check if LTE set it or not.
4184 
4185   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).UNROUNDED_TAXABLE_AMT  := p_tax_out_rec.UNROUNDED_TAXABLE_AMT;
4186   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).UNROUNDED_TAX_AMT      := p_tax_out_rec.UNROUNDED_TAX_AMT;
4187   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CAL_TAX_AMT            := p_tax_out_rec.TAX_AMOUNT;
4188 
4189   -- columns added to tax_info_rec
4190   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_DATE             :=  p_tax_out_rec.tax_date ;
4191   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_DETERMINE_DATE   :=  p_tax_out_rec.tax_determine_date;
4192   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_POINT_DATE       :=  p_tax_out_rec.tax_point_date;
4193 
4194   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_REGIME_CODE   := p_tax_out_rec.TAX_REGIME_CODE  ;
4195   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_REGIME_ID     := p_tax_out_rec.TAX_REGIME_ID    ;
4196   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_STATUS_CODE   := p_tax_out_rec.TAX_STATUS_CODE  ;
4197   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_STATUS_ID     := p_tax_out_rec.TAX_STATUS_ID    ;
4198   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX               := p_tax_out_rec.TAX         ;
4199   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_ID            := p_tax_out_rec.TAX_ID       ;
4200   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_RATE_CODE     := p_tax_out_rec.TAX_RATE_CODE    ;
4201   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_RATE_ID       := p_tax_out_rec.TAX_RATE_ID      ;
4202   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_RATE          := p_tax_out_rec.TAX_RATE ;
4203   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_type_code     := p_tax_out_rec.tax_type_code ;
4204 
4205 
4206   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CURRENCY_CODE             := p_tax_out_rec.TAX_CURRENCY_CODE;
4207   --
4208   -- Bug#5439803- use tax determine date for tax currency conversion date
4209   -- if it is not credit memo
4210   --
4211   IF pg_cm_type = 'Applied'   THEN
4212     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CURRENCY_CONVERSION_DATE  := p_tax_out_rec.TAX_CURRENCY_CONVERSION_DATE;
4213   ELSE
4214     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CURRENCY_CONVERSION_DATE  := p_tax_out_rec.tax_determine_date;
4215   END IF;
4216 
4217   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CURRENCY_CONVERSION_TYPE  := p_tax_out_rec.TAX_CURRENCY_CONVERSION_TYPE;
4218   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CURRENCY_CONVERSION_RATE  := p_tax_out_rec.TAX_CURRENCY_CONVERSION_RATE;
4219 
4220   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_BASE_MODIFIER_RATE	    := p_tax_out_rec.TAX_BASE_MODIFIER_RATE; --global_attribute12;
4221   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LEGAL_JUSTIFICATION_TEXT1	    := p_tax_out_rec.LEGAL_JUSTIFICATION_TEXT1; --Global_attribute8;
4222   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LEGAL_JUSTIFICATION_TEXT2	    := p_tax_out_rec.LEGAL_JUSTIFICATION_TEXT2; --Global_attribute9;
4223   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LEGAL_JUSTIFICATION_TEXT3	    := p_tax_out_rec.LEGAL_JUSTIFICATION_TEXT3; --Global_attribute10;
4224 
4225 
4226   -- Populate the global_attribute columns in detailed tax lines based on output tax record returned by LTE
4227   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute1 := p_tax_out_rec.global_attribute1;
4228   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute2 := p_tax_out_rec.global_attribute2;
4229   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute3 := p_tax_out_rec.global_attribute3;
4230   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute4 := p_tax_out_rec.global_attribute4;
4231   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute5 := p_tax_out_rec.global_attribute5;
4232   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute6 := p_tax_out_rec.global_attribute6;
4233   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute7 := p_tax_out_rec.global_attribute7;
4234   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute8 := p_tax_out_rec.global_attribute8;
4235   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute9 := p_tax_out_rec.global_attribute9;
4236   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute10 := p_tax_out_rec.global_attribute10;
4237   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute11 := p_tax_out_rec.global_attribute11;
4238   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute12 := p_tax_out_rec.global_attribute12;
4239   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute13 := p_tax_out_rec.global_attribute13;
4240   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute14 := p_tax_out_rec.global_attribute14;
4241   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute15 := p_tax_out_rec.global_attribute15;
4242   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute16 := p_tax_out_rec.global_attribute16;
4243   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute17 := p_tax_out_rec.global_attribute17;
4244   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute18 := p_tax_out_rec.global_attribute18;
4245   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute19 := p_tax_out_rec.global_attribute19;
4246   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute20 := p_tax_out_rec.global_attribute20;
4247   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).global_attribute_category := p_tax_out_rec.global_attribute_category;
4248 
4249 
4250   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ROUNDING_LVL_PARTY_TAX_PROF_ID := p_tax_out_rec.ROUNDING_LVL_PARTY_TAX_PROF_ID;
4251   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ROUNDING_LVL_PARTY_TYPE	    := p_tax_out_rec.ROUNDING_LVL_PARTY_TYPE;
4252 
4253   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).MRC_TAX_LINE_FLAG                :=  NVL(p_tax_out_rec.MRC_TAX_LINE_FLAG              ,'N');
4254   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).OFFSET_FLAG                      :=  NVL(p_tax_out_rec.OFFSET_FLAG                    ,'N');
4255   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).PROCESS_FOR_RECOVERY_FLAG        :=  NVL(p_tax_out_rec.PROCESS_FOR_RECOVERY_FLAG      ,'N');
4256   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).COMPOUNDING_TAX_FLAG             :=  NVL(p_tax_out_rec.COMPOUNDING_TAX_FLAG           ,'N');
4257   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_APPORTIONMENT_FLAG           :=  NVL(p_tax_out_rec.TAX_APPORTIONMENT_FLAG         ,'N');
4258   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).HISTORICAL_FLAG                  :=  NVL(p_tax_out_rec.HISTORICAL_FLAG                ,'N');
4259   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CANCEL_FLAG                      :=  NVL(p_tax_out_rec.CANCEL_FLAG                    ,'N');
4260   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).PURGE_FLAG                       :=  NVL(p_tax_out_rec.PURGE_FLAG                     ,'N');
4261   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).DELETE_FLAG                      :=  NVL(p_tax_out_rec.DELETE_FLAG                    ,'N');
4262   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).SELF_ASSESSED_FLAG               :=  NVL(p_tax_out_rec.SELF_ASSESSED_FLAG             ,'N');
4263   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).OVERRIDDEN_FLAG                  :=  NVL(p_tax_out_rec.OVERRIDDEN_FLAG                ,'N');
4264   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).MANUALLY_ENTERED_FLAG            :=  NVL(p_tax_out_rec.MANUALLY_ENTERED_FLAG          ,'N');
4265   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REPORTING_ONLY_FLAG              :=  NVL(p_tax_out_rec.REPORTING_ONLY_FLAG            ,'Y');
4266   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).FREEZE_UNTIL_OVERRIDDEN_FLAG     :=  NVL(p_tax_out_rec.FREEZE_UNTIL_OVERRIDDEN_FLAG   ,'N');
4267   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).COPIED_FROM_OTHER_DOC_FLAG       :=  NVL(p_tax_out_rec.COPIED_FROM_OTHER_DOC_FLAG     ,'N');
4268   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RECALC_REQUIRED_FLAG             :=  NVL(p_tax_out_rec.RECALC_REQUIRED_FLAG           ,'N');
4269   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).SETTLEMENT_FLAG                  :=  NVL(p_tax_out_rec.SETTLEMENT_FLAG                ,'N');
4270   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ITEM_DIST_CHANGED_FLAG           :=  NVL(p_tax_out_rec.ITEM_DIST_CHANGED_FLAG         ,'N');
4271   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ASSOCIATED_CHILD_FROZEN_FLAG     :=  NVL(p_tax_out_rec.ASSOCIATED_CHILD_FROZEN_FLAG   ,'N');
4272   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_ONLY_LINE_FLAG               :=  NVL(p_tax_out_rec.TAX_ONLY_LINE_FLAG             ,'N');
4273   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ENFORCE_FROM_NATURAL_ACCT_FLAG   :=  NVL(p_tax_out_rec.ENFORCE_FROM_NATURAL_ACCT_FLAG ,'N');
4274   --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_AMT_INCLUDED_FLAG            :=  NVL(p_tax_out_rec.amount_includes_tax_flag, 'N');
4275   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_AMT_INCLUDED_FLAG            :=  NVL(p_tax_out_rec.TAX_AMT_INCLUDED_FLAG, 'N');
4276   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).compounding_dep_tax_flag         :=  NVL(p_tax_out_rec.compounding_dep_tax_flag, 'N');
4277 
4278   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_APPORTIONMENT_LINE_NUMBER    :=  NVL(p_tax_out_rec.TAX_APPORTIONMENT_LINE_NUMBER  , 1 );
4279   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RECORD_TYPE_CODE                 :=  'ETAX_CREATED';
4280 
4281   -- exempt columns N/A for LTE
4282   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).exempt_certificate_number := zx_global_structures_pkg.trx_line_dist_tbl.exempt_certificate_number(p_id_dist_tbl);
4283   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).exempt_reason             := zx_global_structures_pkg.trx_line_dist_tbl.exempt_reason(p_id_dist_tbl);
4284   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_EXEMPTION_ID          := p_tax_out_rec.tax_exemption_id           ;
4285 
4286   -- columns read from zx_global_structures_pkg.trx_line_dist_tbl
4287   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_CODE          := zx_global_structures_pkg.trx_line_dist_tbl.output_tax_classification_code(p_id_dist_tbl);
4288   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_LINE_ID :=  zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID(p_id_dist_tbl);
4289   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).adjusted_doc_trx_id  :=  zx_global_structures_pkg.trx_line_dist_tbl.adjusted_doc_trx_id(p_id_dist_tbl);
4290   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).Adjusted_doc_number  :=  zx_global_structures_pkg.trx_line_dist_tbl.Adjusted_doc_number(p_id_dist_tbl);
4291 
4292   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID             := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID(p_id_dist_tbl);
4293   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LINE_ID        := zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_ID(p_id_dist_tbl);
4294   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LEVEL_TYPE     := zx_global_structures_pkg.trx_line_dist_tbl.TRX_LEVEL_TYPE(p_id_dist_tbl);
4295   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_DATE           := zx_global_structures_pkg.trx_line_dist_tbl.TRX_DATE(p_id_dist_tbl);
4296   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CONTENT_OWNER_ID         := zx_global_structures_pkg.trx_line_dist_tbl.FIRST_PTY_ORG_ID(p_id_dist_tbl)  ;
4297   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLICATION_ID           := zx_global_structures_pkg.trx_line_dist_tbl.APPLICATION_ID(p_id_dist_tbl);
4298   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).INTERNAL_ORGANIZATION_ID := zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(p_id_dist_tbl);
4299   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).INTERNAL_ORG_LOCATION_ID := zx_global_structures_pkg.trx_line_dist_tbl.INTERNAL_ORG_LOCATION_ID(p_id_dist_tbl);
4300   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ENTITY_CODE              := zx_global_structures_pkg.trx_line_dist_tbl.ENTITY_CODE(p_id_dist_tbl);
4301   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).EVENT_CLASS_CODE         := zx_global_structures_pkg.trx_line_dist_tbl.EVENT_CLASS_CODE(p_id_dist_tbl);
4302   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).EVENT_TYPE_CODE          := zx_global_structures_pkg.trx_line_dist_tbl.EVENT_TYPE_CODE(p_id_dist_tbl);
4303   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).DOC_EVENT_STATUS         := zx_global_structures_pkg.trx_line_dist_tbl.DOC_EVENT_STATUS(p_id_dist_tbl);
4304   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LEGAL_ENTITY_ID          := zx_global_structures_pkg.trx_line_dist_tbl.LEGAL_ENTITY_ID(p_id_dist_tbl);
4305   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ESTABLISHMENT_ID         := zx_global_structures_pkg.trx_line_dist_tbl.ESTABLISHMENT_ID(p_id_dist_tbl);
4306   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LEVEL_TYPE           := zx_global_structures_pkg.trx_line_dist_tbl.TRX_LEVEL_TYPE(p_id_dist_tbl);
4307   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).UNIT_PRICE               := zx_global_structures_pkg.trx_line_dist_tbl.UNIT_PRICE(p_id_dist_tbl);
4308   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).line_amt                 := zx_global_structures_pkg.trx_line_dist_tbl.line_amt(p_id_dist_tbl);
4309   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).trx_line_quantity        := zx_global_structures_pkg.trx_line_dist_tbl.trx_line_quantity(p_id_dist_tbl);
4310   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_EVENT_CLASS_CODE     := zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_CLASS_CODE(p_id_dist_tbl);
4311   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_EVENT_TYPE_CODE      := zx_global_structures_pkg.trx_line_dist_tbl.TAX_EVENT_TYPE_CODE(p_id_dist_tbl);
4312   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LINE_NUMBER          := zx_global_structures_pkg.trx_line_dist_tbl.trx_line_number(p_id_dist_tbl);
4313   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LINE_ASSESSABLE_VALUE    := zx_global_structures_pkg.trx_line_dist_tbl.ASSESSABLE_VALUE(p_id_dist_tbl);
4314   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID_LEVEL2            := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL2(p_id_dist_tbl)      ;
4315   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID_LEVEL3            := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL3(p_id_dist_tbl)      ;
4316   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID_LEVEL4            := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL4(p_id_dist_tbl)      ;
4317   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID_LEVEL5            := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL5(p_id_dist_tbl)      ;
4318   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_ID_LEVEL6            := zx_global_structures_pkg.trx_line_dist_tbl.TRX_ID_LEVEL6(p_id_dist_tbl)      ;
4319 
4320   /** not found in trx_line_dist_tbl
4321   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL1      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL1(p_id_dist_tbl);
4322   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL2      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL2(p_id_dist_tbl);
4323   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL3      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL3(p_id_dist_tbl);
4324   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL4      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL4(p_id_dist_tbl);
4325   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL5      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL5(p_id_dist_tbl);
4326   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_USER_KEY_LEVEL6      := zx_global_structures_pkg.trx_line_dist_tbl.TRX_USER_KEY_LEVEL6(p_id_dist_tbl);
4327   */
4328 
4329   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_CURRENCY_CODE             := zx_global_structures_pkg.trx_line_dist_tbl.TRX_CURRENCY_CODE(p_id_dist_tbl);
4330   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CURRENCY_CONVERSION_DATE      := zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_DATE(p_id_dist_tbl);
4331   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CURRENCY_CONVERSION_TYPE      := zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_TYPE(p_id_dist_tbl);
4332   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).CURRENCY_CONVERSION_RATE      := zx_global_structures_pkg.trx_line_dist_tbl.CURRENCY_CONVERSION_RATE(p_id_dist_tbl);
4333 
4334   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).LEDGER_ID                 := zx_global_structures_pkg.trx_line_dist_tbl.LEDGER_ID(p_id_dist_tbl) ;
4335   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).minimum_accountable_unit  := zx_global_structures_pkg.trx_line_dist_tbl.MINIMUM_ACCOUNTABLE_UNIT(p_id_dist_tbl);
4336   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).precision                 := zx_global_structures_pkg.trx_line_dist_tbl.PRECISION(p_id_dist_tbl) ;
4337 
4338   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).trx_number                := zx_global_structures_pkg.trx_line_dist_tbl.TRX_NUMBER(p_id_dist_tbl) ;
4339   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).HQ_ESTB_PARTY_TAX_PROF_ID := zx_global_structures_pkg.trx_line_dist_tbl.HQ_ESTB_PARTY_TAX_PROF_ID(p_id_dist_tbl) ;
4340 
4341   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_APPLICATION_ID     := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_APPLICATION_ID(p_id_dist_tbl);
4342   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_ENTITY_CODE        := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_ENTITY_CODE(p_id_dist_tbl);
4343   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_EVENT_CLASS_CODE   := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_EVENT_CLASS_CODE(p_id_dist_tbl);
4344   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_TRX_ID	        := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_ID(p_id_dist_tbl);
4345   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_LINE_ID	        := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_ID(p_id_dist_tbl);
4346   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_TRX_LEVEL_TYPE     := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_TRX_LEVEL_TYPE(p_id_dist_tbl);
4347   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).REF_DOC_LINE_QUANTITY      := zx_global_structures_pkg.trx_line_dist_tbl.REF_DOC_LINE_QUANTITY(p_id_dist_tbl);
4348 
4349   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_APPLICATION_ID      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_APPLICATION_ID(p_id_dist_tbl);
4350   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_EVENT_CLASS_CODE    := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_EVENT_CLASS_CODE(p_id_dist_tbl);
4351   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_ENTITY_CODE         := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_ENTITY_CODE(p_id_dist_tbl);
4352   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_TRX_ID	      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_ID(p_id_dist_tbl);
4353   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_LINE_ID	      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_LINE_ID(p_id_dist_tbl);
4354   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_TRX_LEVEL_TYPE      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_LEVEL_TYPE(p_id_dist_tbl);
4355 
4356   /** not found in trx_line_dist_tbl ? check with TSRM team
4357   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_FROM_TRX_NUMBER          := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_FROM_TRX_NUMBER(p_id_dist_tbl);
4358   */
4359 
4360   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_APPLICATION_ID      := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_APPLICATION_ID(p_id_dist_tbl);
4361   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_ENTITY_CODE	      := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_ENTITY_CODE	(p_id_dist_tbl);
4362   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_EVENT_CLASS_CODE    := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_EVENT_CLASS_CODE(p_id_dist_tbl);
4363   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_TRX_ID	      := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_ID(p_id_dist_tbl);
4364   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_LINE_ID	      := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_LINE_ID(p_id_dist_tbl);
4365   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_TRX_LEVEL_TYPE        := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_TRX_LEVEL_TYPE(p_id_dist_tbl);
4366   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_NUMBER	      := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_NUMBER(p_id_dist_tbl);
4367   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).ADJUSTED_DOC_DATE	              := zx_global_structures_pkg.trx_line_dist_tbl.ADJUSTED_DOC_DATE(p_id_dist_tbl);
4368   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_APPLICATION_ID	      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_APPLICATION_ID(p_id_dist_tbl);
4369   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_EVENT_CLASS_CODE      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_EVENT_CLASS_CODE(p_id_dist_tbl);
4370   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_ENTITY_CODE	      := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_ENTITY_CODE(p_id_dist_tbl);
4371   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_TRX_ID	              := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_ID(p_id_dist_tbl);
4372   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_LINE_ID	              := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LINE_ID(p_id_dist_tbl);
4373   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLIED_TO_TRX_LEVEL_TYPE        := zx_global_structures_pkg.trx_line_dist_tbl.APPLIED_TO_TRX_LEVEL_TYPE(p_id_dist_tbl);
4374   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LINE_DATE	              := zx_global_structures_pkg.trx_line_dist_tbl.TRX_LINE_DATE(p_id_dist_tbl);
4375   -- LTE view should populate the following columns
4376   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_APPLICATION_ID       := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_APPLICATION_ID(p_id_dist_tbl);
4377   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_ENTITY_CODE          := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_ENTITY_CODE(p_id_dist_tbl);
4378   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_EVENT_CLASS_CODE     := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_EVENT_CLASS_CODE(p_id_dist_tbl);
4379   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_TRX_ID               := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_TRX_ID(p_id_dist_tbl);
4380   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_NUMBER               := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_NUMBER(p_id_dist_tbl);
4381   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).RELATED_DOC_DATE                 := zx_global_structures_pkg.trx_line_dist_tbl.RELATED_DOC_DATE(p_id_dist_tbl);
4382 
4383 
4384   IF (g_level_statement >= g_current_runtime_level ) THEN
4385     FND_LOG.STRING(g_level_statement,
4386                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4387                  'Calling ZX_TDS_UTILITIES_PKG.get_tax_cache_info to populate tax_cache...');
4388   END IF;
4389 
4390     /******
4391          ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(
4392                                        p_id_dist_tbl,
4393                                        l_tax_date,
4394                                        l_tax_determine_date,
4395                                        l_tax_point_date,
4396                                        x_return_status);
4397 
4398          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4399            IF (g_level_unexpected >= g_current_runtime_level ) THEN
4400              FND_LOG.STRING(g_level_unexpected,
4401                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4402                     'Incorrect return_status after calling ' ||
4403                     'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
4404              FND_LOG.STRING(g_level_unexpected,
4405                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4406                     'RETURN_STATUS = ' || x_return_status);
4407              FND_LOG.STRING(g_level_unexpected,
4408                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4409                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line(-)');
4410            END IF;
4411            RETURN;
4412          END IF;
4413      ******/
4414 
4415   -- populate tax_regime_cache_info
4416   --
4417   -- Bug#5395227- get tax_regime_id if it is null
4418   --
4419   IF p_tax_out_rec.tax_regime_id IS NULL THEN
4420     ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
4421                         p_tax_out_rec.tax_regime_code,
4422 			p_tax_out_rec.TRX_DATE,
4423 			l_tax_regime_rec,
4424 			l_return_status,
4425 			l_error_buffer);
4426 
4427     IF l_return_status =  FND_API.G_RET_STS_SUCCESS THEN
4428       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4429                 p_new_row_num).tax_regime_id := l_tax_regime_rec.tax_regime_id;
4430 
4431     ELSE
4432       IF (g_level_unexpected >= g_current_runtime_level ) THEN
4433         FND_LOG.STRING(g_level_unexpected,
4434                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4435                       'Incorrect return_status after calling ' ||
4436                       'ZX_TDS_UTILITIES_PKG.get_regime_cache_info()');
4437         FND_LOG.STRING(g_level_unexpected,
4438                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4439                       'RETURN_STATUS = ' || l_return_status);
4440         FND_LOG.STRING(g_level_unexpected,
4441                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4442                       'ZX_PRODUCT_INTEGRATION_PKG.' ||
4443                       'create_detail_tax_line(-)');
4444       END IF;
4445       RETURN;
4446     END IF;
4447   ELSE
4448     -- Bug#5395227
4449     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4450                 p_new_row_num).tax_regime_id := p_tax_out_rec.tax_regime_id;
4451   END IF;
4452 
4453   -- populate tax_cache in Tax Determination Services for tail end processing
4454   -- Bug#5395227- call cache structure to get place of supply
4455   -- type code
4456   --
4457   ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
4458   	p_tax_regime_code     =>  p_tax_out_rec.TAX_REGIME_CODE,
4459   	p_tax                 =>  p_tax_out_rec.TAX,
4460   	p_tax_determine_date  =>  p_tax_out_rec.TRX_DATE,
4461   	x_tax_rec             =>  l_tax_rec,
4462   	p_return_status       =>  l_return_status,
4463   	p_error_buffer        =>  l_error_buffer);
4464 
4465   IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
4466     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_id := l_tax_Rec.TAX_id;
4467 
4468     IF l_tax_rec.Def_Place_Of_Supply_Type_Code = 'SHIP_TO_BILL_TO' then
4469       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).PLACE_OF_SUPPLY_TYPE_CODE  := 'SHIP_TO';
4470     ELSE
4471       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).PLACE_OF_SUPPLY_TYPE_CODE  := l_tax_rec.Def_Place_Of_Supply_Type_Code;
4472     END IF;
4473     --
4474     -- Bug#5439803- not Credit memo, tax currency conversion type is
4475     -- from exchange rate type of tax record
4476     --
4477     IF (pg_cm_type <> 'Applied' OR pg_cm_type IS NULL)  THEN
4478       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_currency_conversion_type := l_tax_rec.exchange_rate_type;
4479     END IF;
4480 
4481   ELSE
4482     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4483       FND_LOG.STRING(g_level_unexpected,
4484                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4485                     'Incorrect return_status after calling ' ||
4486                     'ZX_TDS_UTILITIES_PKG.get_tax_cache_info()')
4487 ;
4488       FND_LOG.STRING(g_level_unexpected,
4489                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4490                     'RETURN_STATUS = ' || l_return_status);
4491       FND_LOG.STRING(g_level_unexpected,
4492                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4493                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4494                     'create_detail_tax_line(-)');
4495     END IF;
4496     RETURN;
4497   END IF;
4498 
4499   IF p_tax_out_rec.TAX_JURISDICTION_CODE IS NOT NULL THEN
4500 
4501        ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
4502   	p_tax_regime_code     =>  p_tax_out_rec.TAX_REGIME_CODE,
4503   	p_tax                 =>  p_tax_out_rec.TAX,
4504         p_tax_jurisdiction_code => p_tax_out_rec.TAX_JURISDICTION_CODE,
4505   	p_tax_determine_date  =>  p_tax_out_rec.TRX_DATE,
4506   	x_jurisdiction_rec    =>  l_tax_jurisdiction_rec,
4507   	p_return_status       =>  l_return_status,
4508   	p_error_buffer        =>  l_error_buffer);
4509 
4510       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_jurisdiction_id
4511         := l_tax_jurisdiction_rec.tax_jurisdiction_id;
4512 
4513       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4514           IF (g_level_unexpected >= g_current_runtime_level ) THEN
4515             FND_LOG.STRING(g_level_unexpected,
4516                           'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4517                           'Incorrect return_status after calling ' ||
4518                           'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info()');
4519             FND_LOG.STRING(g_level_unexpected,
4520                           'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4521                           'RETURN_STATUS = ' || l_return_status);
4522             FND_LOG.STRING(g_level_unexpected,
4523                           'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4524                           'ZX_PRODUCT_INTEGRATION_PKG.' ||
4525                           'create_detail_tax_line(-)');
4526           END IF;
4527           RETURN;
4528       END IF;
4529 
4530     END IF;  --p_tax_out_rec.TAX_JURISDICTION_CODE IS NOT NULL
4531 
4532   -- populate tax_status_cahce_info
4533   --
4534   -- Bug#5395227- get tax_status_id only if it is null
4535   --
4536   IF p_tax_out_rec.tax_status_id IS NULL THEN
4537     ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
4538 			p_tax_out_rec.tax,
4539 			p_tax_out_rec.tax_regime_code,
4540 			p_tax_out_rec.tax_status_code,
4541 			p_tax_out_rec.TRX_DATE,
4542 			l_tax_status_rec,
4543 			l_return_status,
4544 			l_error_buffer);
4545 
4546     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
4547       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4548                 p_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
4549     ELSE
4550       IF (g_level_unexpected >= g_current_runtime_level ) THEN
4551         FND_LOG.STRING(g_level_unexpected,
4552                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4553                       'Incorrect return_status after calling ' ||
4554                       'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info()');
4555         FND_LOG.STRING(g_level_unexpected,
4556                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4557                        'RETURN_STATUS = ' || l_return_status);
4558         FND_LOG.STRING(g_level_unexpected,
4559                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4560                        'ZX_PRODUCT_INTEGRATION_PKG.' ||
4561                        'create_detail_tax_line(-)');
4562        END IF;
4563        RETURN;
4564      END IF;
4565    ELSE
4566      -- bug#5395227
4567      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_status_id := p_tax_out_rec.tax_status_id;
4568    END IF;
4569 
4570   -- ? if LTE's default and validate procedure populate the rate id
4571   -- ? then the following call need to be removed
4572   -- populate tax_rate_id
4573   --
4574   /* bug#5395227- tax_rate_id is available already from
4575      LTE function calculate, do not need to get again
4576 
4577   get_tax_rate_id(
4578       p_tax_out_rec.tax_regime_code,
4579       p_tax_out_rec.tax,
4580       p_tax_out_rec.tax_status_code,
4581       p_tax_out_rec.tax_rate_code,
4582       p_tax_out_rec.TRX_DATE,
4583       p_tax_out_rec.tax_jurisdiction_code,   -- bug#5395227
4584       l_tax_rate_id,
4585       l_return_status,
4586       l_error_buffer );
4587 
4588   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4589     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4590       FND_LOG.STRING(g_level_unexpected,
4591                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4592                     'After calling ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_rate_id()');
4593       FND_LOG.STRING(g_level_unexpected,
4594                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4595                     'RETURN_STATUS = ' || l_return_status);
4596       FND_LOG.STRING(g_level_unexpected,
4597                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4598                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4599                     'create_detail_tax_line(-)');
4600     END IF;
4601     RETURN;
4602   END IF;
4603 */
4604 
4605   -- bug#5395227
4606   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_rate_id := p_tax_out_rec.tax_rate_id;
4607 
4608   IF (g_level_statement >= g_current_runtime_level ) THEN
4609     FND_LOG.STRING(g_level_statement,
4610                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4611                   'Populating tax_regime_id, tax_id, tax_status_id and tax_rate_id...');
4612     FND_LOG.STRING(g_level_statement,
4613                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4614                   'tax_regime_id := ' ||
4615                   TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_regime_id));
4616     FND_LOG.STRING(g_level_statement,
4617                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4618                   'tax_id := ' ||
4619                   TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_id));
4620     FND_LOG.STRING(g_level_statement,
4621                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4622                   'tax_jurisdiction_id := ' ||
4623                   TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_jurisdiction_id));
4624     FND_LOG.STRING(g_level_statement,
4625                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4626                   'tax_status_id := ' ||
4627                   TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_status_id));
4628     FND_LOG.STRING(g_level_statement,
4629                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4630                   'tax_rate_id := ' ||
4631                   TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_rate_id));
4632   END IF;
4633 
4634 
4635   /* Bug#5395227- don't need here
4636   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4637                 p_new_row_num).tax_regime_id := l_tax_regime_rec.tax_regime_id;
4638   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4639                                      p_new_row_num).tax_id := l_tax_rec.tax_id;
4640   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4641                                      p_new_row_num).tax_jurisdiction_id := l_tax_jurisdiction_rec.tax_jurisdiction_id;
4642   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4643                 p_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
4644   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4645                 p_new_row_num).tax_rate_id := l_tax_rate_id;
4646 
4647   */
4648 
4649 -- nipatel;
4650 IF (g_level_procedure >= g_current_runtime_level ) THEN
4651   FND_LOG.STRING(g_level_procedure,
4652                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4653                  'Tax_line_id: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_line_id);
4654   FND_LOG.STRING(g_level_procedure,
4655                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4656                  'Application_id: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).APPLICATION_ID);
4657   FND_LOG.STRING(g_level_procedure,
4658                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4659                  'Entity_code: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).Entity_code);
4660   FND_LOG.STRING(g_level_procedure,
4661                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4662                  'Event Class Code: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).EVENT_CLASS_CODE);
4663   FND_LOG.STRING(g_level_procedure,
4664                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4665                  'Trx_id: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).Trx_ID);
4666   FND_LOG.STRING(g_level_procedure,
4667                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4668                  'Trx_level_type: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LEVEL_TYPE);
4669   FND_LOG.STRING(g_level_procedure,
4670                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4671                  'Trx_line_id: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TRX_LINE_ID);
4672   FND_LOG.STRING(g_level_procedure,
4673                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4674                  'Tax Regime Code: '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX_REGIME_CODE);
4675   FND_LOG.STRING(g_level_procedure,
4676                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4677                  'Tax : '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).TAX);
4678 End if;
4679 
4680 /* -- followin columns need to be added in
4681 REPORTING_PERIOD_ID	NUMBER 	Y
4682 TAX_EXCEPTION_ID	N.A. for LTE
4683 TAX_RATE_BEFORE_EXCEPTION	N.A. for LTE
4684 TAX_RATE_NAME _BEFORE_EXCEPTION	N.A. for LTE
4685 TAX_EXEMPTION_ID	N.A. for LTE
4686 TAX_RATE_BEFORE_EXEMPTION	N.A. for LTE
4687 TAX_RATE_NAME_BEFORE_EXEMPTION	N.A. for LTE
4688 EXEMPT_RATE_MODIFIER	N.A. for LTE
4689 EXEMPT_CERTIFICATE_NUMBER	N/A For LTE	Copied from tsrm global structure
4690 EXEMPT_REASON	N/A For LTE	Copied from tsrm global structure
4691 EXEMPT_REASON_CODE	N/A For LTE	Copied from tsrm global structure
4692 EXCEPTION_RATE	N.A. for LTE
4693 
4694 CAL_TAX_AMT	N.A. (used for thresholds)	LTE
4695 CAL_TAX_AMT_TAX_CURR	 rounding package will populate this.
4696 CAL_TAX_AMT_FUNCL_CURR	 rounding package will populate this.
4697 
4698 SUMMARY_TAX_LINE_ID	TRR	TRR
4699 TAX_AMT_TAX_CURR	NULL	TRR (Tail end service)
4700 TAX_AMT_FUNCL_CURR	NULL	TRR (Tail end service)
4701 TAXABLE_AMT_TAX_CURR	Output	TRR (Tail end service)
4702 TAXABLE_AMT_FUNCL_CURR	Output	TRR (Tail end service)
4703 REPORTING_CURRENCY_CODE	Tail End service	TRR
4704 MRC_TAX_LINE_FLAG	Tail End service	TRR
4705 TRX_LINE_INDEX  TRR
4706 
4707 ============================
4708 TAX_CODE	Input (tax classification code)	Copied from tsrm global structure
4709 
4710 ROUNDING_LVL_PARTY_TAX_PROF_ID		LTE
4711 ROUNDING_LVL_PARTY_TYPE	        Hard Coded	LTE
4712 ROUNDING_LEVEL_CODE	LINE	LTE
4713 ROUNDING_RULE_CODE	Output	LTE
4714 
4715 CTRL_TOTAL_LINE_TX_AMT	 N.A  LTE
4716 COMPOUNDING_MISS_FLAG    N.A LTE  LTE raise error in this case
4717 ==============================
4718 
4719 */
4720 
4721   IF (g_level_procedure >= g_current_runtime_level ) THEN
4722     FND_LOG.STRING(g_level_procedure,
4723                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line.END',
4724                  'ZX_PRODUCT_INTEGRATION_PKG: prepare_detail_tax_lines (-)');
4725   END IF;
4726 EXCEPTION
4727   WHEN OTHERS THEN
4728     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4729       FND_LOG.STRING(g_level_unexpected,
4730                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.prepare_detail_tax_line',
4731                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4732     END IF;
4733     RAISE;
4734 END prepare_detail_tax_line;
4735 
4736 /*===========================================================================+
4737  | PROCEDURE                                                                 |
4738  |   create_detail_tax_line                                                  |
4739  |                                                                           |
4740  | DESCRIPTION                                                               |
4741  |                                                                           |
4742  | MODIFICATION HISTORY                                                      |
4743  |                                                                           |
4744 +===========================================================================*/
4745  PROCEDURE create_detail_tax_line (
4746   p_event_class_rec         IN 	           zx_api_pub.event_class_rec_type,
4747   p_tax_line_rec	    IN	    	   tax_line_rec_type,
4748   p_id_dist_tbl         IN NUMBER,
4749   p_new_row_num		    IN		   NUMBER,
4750   x_return_status              OUT NOCOPY  VARCHAR2) IS
4751 
4752  l_tax_regime_rec	ZX_GLOBAL_STRUCTURES_PKG.tax_regime_rec_type;
4753  l_tax_rec		ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
4754  l_tax_status_rec	ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
4755  l_tax_jurisdiction_rec  zx_tds_utilities_pkg.zx_jur_info_cache_rec_type;
4756 
4757  l_tax_date             DATE;
4758  l_tax_determine_date   DATE;
4759  l_tax_point_date       DATE;
4760  l_error_buffer		VARCHAR2(240);
4761  l_return_status        VARCHAR2(240);
4762 BEGIN
4763 
4764   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4765 
4766   IF (g_level_event >= g_current_runtime_level ) THEN
4767     FND_LOG.STRING(g_level_event,
4768                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.BEGIN',
4769                'ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line(+)');
4770 
4771     FND_LOG.STRING(g_level_event,
4772                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4773                'new tax line created (tax := '|| p_tax_line_rec.tax || ')');
4774     FND_LOG.STRING(g_level_event,
4775                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4776                'tax_regime_code := '|| p_tax_line_rec.tax_regime_code);
4777   END IF;
4778 
4779   x_return_status := FND_API.G_RET_STS_SUCCESS;
4780 
4781   --  get tax date
4782   --
4783 
4784   ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(
4785                                 p_id_dist_tbl,
4786                                 l_tax_date,
4787                                 l_tax_determine_date,
4788                                 l_tax_point_date,
4789                                 x_return_status);
4790 
4791   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4792     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4793       FND_LOG.STRING(g_level_unexpected,
4794              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4795              'Incorrect return_status after calling ' ||
4796              'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
4797       FND_LOG.STRING(g_level_unexpected,
4798              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4799              'RETURN_STATUS = ' || x_return_status);
4800       FND_LOG.STRING(g_level_unexpected,
4801              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4802              'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line(-)');
4803     END IF;
4804     RETURN;
4805   END IF;
4806 
4807   -- populate tax_regime_cache_info
4808   --
4809   ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
4810 			p_tax_line_rec.tax_regime_code,
4811 			l_tax_determine_date,
4812 			l_tax_regime_rec,
4813 			x_return_status,
4814 			l_error_buffer);
4815 
4816   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4817     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4818       FND_LOG.STRING(g_level_unexpected,
4819                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4820                     'Incorrect return_status after calling ' ||
4821                     'ZX_TDS_UTILITIES_PKG.get_regime_cache_info()');
4822       FND_LOG.STRING(g_level_unexpected,
4823                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4824                     'RETURN_STATUS = ' || x_return_status);
4825       FND_LOG.STRING(g_level_unexpected,
4826                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4827                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4828                     'create_detail_tax_line(-)');
4829     END IF;
4830     RETURN;
4831   END IF;
4832 
4833   -- populate tax cache, if it does not exist there.
4834   --
4835   ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
4836                         p_tax_line_rec.tax_regime_code,
4837 			p_tax_line_rec.tax,
4838 			l_tax_determine_date,
4839 			l_tax_rec,
4840 			x_return_status,
4841                         l_error_buffer);
4842 
4843   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4844     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4845       FND_LOG.STRING(g_level_unexpected,
4846                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4847                     'Incorrect return_status after calling ' ||
4848                     'ZX_TDS_UTILITIES_PKG.get_tax_cache_info()');
4849       FND_LOG.STRING(g_level_unexpected,
4850                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4851                     'RETURN_STATUS = ' || x_return_status);
4852       FND_LOG.STRING(g_level_unexpected,
4853                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4854                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4855                     'create_detail_tax_line(-)');
4856     END IF;
4857     RETURN;
4858   END IF;
4859 
4860   IF p_tax_line_rec.TAX_JURISDICTION_CODE IS NOT NULL THEN
4861     ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
4862   	p_tax_regime_code     =>  p_tax_line_rec.TAX_REGIME_CODE,
4863   	p_tax                 =>  p_tax_line_rec.TAX,
4864         p_tax_jurisdiction_code => p_tax_line_rec.TAX_JURISDICTION_CODE,
4865   	p_tax_determine_date  =>  l_tax_determine_date,
4866   	x_jurisdiction_rec    =>  l_tax_jurisdiction_rec,
4867   	p_return_status       =>  l_return_status,
4868   	p_error_buffer        =>  l_error_buffer);
4869 
4870     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4871       IF (g_level_unexpected >= g_current_runtime_level ) THEN
4872         FND_LOG.STRING(g_level_unexpected,
4873                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4874                       'Incorrect return_status after calling ' ||
4875                       'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info()');
4876         FND_LOG.STRING(g_level_unexpected,
4877                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4878                       'RETURN_STATUS = ' || x_return_status);
4879         FND_LOG.STRING(g_level_unexpected,
4880                       'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4881                       'ZX_PRODUCT_INTEGRATION_PKG.' ||
4882                       'create_detail_tax_line(-)');
4883       END IF;
4884       RETURN;
4885     END IF;
4886   END IF;
4887   -- populate tax_status_cahce_info
4888   --
4889   ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
4890 			p_tax_line_rec.tax,
4891 			p_tax_line_rec.tax_regime_code,
4892 			p_tax_line_rec.tax_status_code,
4893 			l_tax_determine_date,
4894 			l_tax_status_rec,
4895 			x_return_status,
4896 			l_error_buffer);
4897 
4898   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4899     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4900       FND_LOG.STRING(g_level_unexpected,
4901                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4902                     'Incorrect return_status after calling ' ||
4903                     'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info()');
4904       FND_LOG.STRING(g_level_unexpected,
4905                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4906                     'RETURN_STATUS = ' || x_return_status);
4907       FND_LOG.STRING(g_level_unexpected,
4908                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4909                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4910                     'create_detail_tax_line(-)');
4911     END IF;
4912     RETURN;
4913   END IF;
4914 
4915   -- ? if LTE's default and validate procedure populate the rate id
4916   -- ? then the following call need to be removed
4917   -- populate tax_rate_id
4918   --
4919   get_tax_rate_id(
4920       p_tax_line_rec.tax_regime_code,
4921       p_tax_line_rec.tax,
4922       p_tax_line_rec.tax_status_code,
4923       p_tax_line_rec.tax_rate_code,
4924       l_tax_determine_date,
4925       p_tax_line_rec.tax_jurisdiction_code,   -- bug#5395227
4926       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_rate_id,
4927       x_return_status,
4928       l_error_buffer );
4929 
4930   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4931     IF (g_level_unexpected >= g_current_runtime_level ) THEN
4932       FND_LOG.STRING(g_level_unexpected,
4933                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4934                     'After calling ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_rate_id()');
4935       FND_LOG.STRING(g_level_unexpected,
4936                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4937                     'RETURN_STATUS = ' || x_return_status);
4938       FND_LOG.STRING(g_level_unexpected,
4939                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
4940                     'ZX_PRODUCT_INTEGRATION_PKG.' ||
4941                     'create_detail_tax_line(-)');
4942     END IF;
4943     RETURN;
4944   END IF;
4945 
4946   -- populate tax_line_id from Sequence
4947   --
4948   /*
4949    * populate in ZX_TDS_TAX_LINES_POPU_PKG
4950    *
4951    * SELECT zx_lines_s.NEXTVAL INTO
4952    *        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4953    *                                 p_new_row_num).tax_line_id from dual;
4954    */
4955 
4956   -- populate tax_regime_id, tax_id, tax_status_id, tax_rate_id
4957   --
4958 
4959   IF (g_level_statement >= g_current_runtime_level ) THEN
4960     FND_LOG.STRING(g_level_statement,
4961                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4962                   'Populating tax_regime_id, tax_id, tax_status_id and tax_rate_id...');
4963     FND_LOG.STRING(g_level_statement,
4964                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
4965                   'tax_regime_id := ' || l_tax_regime_rec.tax_regime_id||
4966                   ' tax_id := '||l_tax_rec.tax_id||
4967                   ' tax_status_id := '||l_tax_status_rec.tax_status_id||
4968                   ' tax_rate_id := '||
4969                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_rate_id);
4970 
4971   END IF;
4972 
4973 
4974   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4975                 p_new_row_num).tax_regime_id := l_tax_regime_rec.tax_regime_id;
4976   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4977                                      p_new_row_num).tax_id := l_tax_rec.tax_id;
4978   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4979                                      p_new_row_num).tax_jurisdiction_id := l_tax_jurisdiction_rec.tax_jurisdiction_id;
4980   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4981                 p_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
4982 
4983   -- populate data from summary tax line
4984   --
4985   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4986           p_new_row_num).tax_regime_code := p_tax_line_rec.tax_regime_code;
4987   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4988                                   p_new_row_num).tax := p_tax_line_rec.tax;
4989   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4990           p_new_row_num).tax_status_code := p_tax_line_rec.tax_status_code;
4991   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4992               p_new_row_num).tax_rate_code := p_tax_line_rec.tax_rate_code;
4993   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4994                         p_new_row_num).tax_rate := p_tax_line_rec.tax_rate;
4995 
4996   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4997                         p_new_row_num).tax_jurisdiction_code :=
4998                                        p_tax_line_rec.tax_jurisdiction_code;
4999   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5000                         p_new_row_num).tax_amt_included_flag :=
5001                                        p_tax_line_rec.tax_amt_included_flag;
5002   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5003             p_new_row_num).tax_exception_id := p_tax_line_rec.tax_exception_id;
5004   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5005                         p_new_row_num).tax_exemption_id := p_tax_line_rec.tax_exemption_id;
5006   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5007           p_new_row_num).exempt_reason_code := p_tax_line_rec.exempt_reason_code;
5008   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5009      p_new_row_num).exempt_certificate_number := p_tax_line_rec.exempt_certificate_number;
5010 
5011   -- populate rounding_lvl_party_tax_prof_id and rounding_level_code
5012   --
5013   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5014                            p_new_row_num).rounding_lvl_party_tax_prof_id :=
5015                       ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id;
5016   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5017                                   p_new_row_num).rounding_lvl_party_type :=
5018                         ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type;
5019   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5020                                           p_new_row_num).rounding_level_code :=
5021                                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level;
5022 
5023   -- populate tax dates
5024   --
5025   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5026                                          p_new_row_num).tax_date := l_tax_date;
5027   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5028                      p_new_row_num).tax_determine_date := l_tax_determine_date;
5029   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5030                              p_new_row_num).tax_point_date := l_tax_point_date;
5031 
5032   -- bug 3282018: set manually_entered_flag='Y', last_manual_entry='TAX_AMOUNT'
5033   --
5034   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5035                                     p_new_row_num).manually_entered_flag := 'Y';
5036   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5037                                p_new_row_num).last_manual_entry := 'TAX_AMOUNT';
5038 
5039   -- set self_assesses_flag = 'N' for all detail tax lines created from summary
5040   -- tax lines
5041   --
5042   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5043                                        p_new_row_num).self_assessed_flag := 'N';
5044 
5045   -- set proration_code
5046   --
5047   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5048                               p_new_row_num).proration_code := 'REGULAR_IMPORT';
5049 
5050   -- populate mandatory columns
5051   --
5052   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5053                        p_new_row_num).internal_organization_id :=
5054                                         p_tax_line_rec.internal_organization_id;
5055   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5056               p_new_row_num).application_id := p_event_class_rec.application_id;
5057   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5058                     p_new_row_num).entity_code := p_event_class_rec.entity_code;
5059   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5060           p_new_row_num).event_class_code := p_event_class_rec.event_class_code;
5061   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5062             p_new_row_num).event_type_code := p_event_class_rec.event_type_code;
5063   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5064                               p_new_row_num).trx_id := p_event_class_rec.trx_id;
5065   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5066                        p_new_row_num).trx_line_id := p_tax_line_rec.trx_line_id;
5067   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5068                  p_new_row_num).trx_level_type := p_tax_line_rec.trx_level_type;
5069   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5070                  p_new_row_num).trx_level_type := p_tax_line_rec.trx_level_type;
5071 
5072   IF (g_level_event >= g_current_runtime_level ) THEN
5073     FND_LOG.STRING(g_level_event,
5074                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
5075                   'RETURN_STATUS = ' || x_return_status);
5076     FND_LOG.STRING(g_level_event,
5077                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
5078                   'ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line(-)');
5079   END IF;
5080 
5081 EXCEPTION
5082   WHEN OTHERS THEN
5083     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5084 
5085     IF (g_level_unexpected >= g_current_runtime_level ) THEN
5086       FND_LOG.STRING(g_level_unexpected,
5087                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line',
5088                      sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5089     END IF;
5090     IF (g_level_procedure >= g_current_runtime_level ) THEN
5091       FND_LOG.STRING(g_level_procedure,
5092                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line.END',
5093                     'ZX_PRODUCT_INTEGRATION_PKG.create_detail_tax_line(-)');
5094     END IF;
5095 
5096 END create_detail_tax_line;
5097 
5098 /*===========================================================================+
5099  | PROCEDURE                                                                 |
5100  |   get_tax_rate_id                                                         |
5101  |                                                                           |
5102  | DESCRIPTION                                                               |
5103  |                                                                           |
5104  | MODIFICATION HISTORY                                                      |
5105  |                                                                           |
5106 +===========================================================================*/
5107 
5108 PROCEDURE  get_tax_rate_id (
5109   p_tax_regime_code	    IN		 VARCHAR2,
5110   p_tax                     IN	         VARCHAR2,
5111   p_tax_status_code         IN           VARCHAR2,
5112   p_tax_rate_code           IN           VARCHAR2,
5113   p_tax_determine_date      IN		 DATE,
5114   p_tax_jurisdiction_code   IN           VARCHAR2,
5115   x_tax_rate_id 	    OUT NOCOPY	 NUMBER,
5116   x_return_status           OUT NOCOPY   VARCHAR2,
5117   x_error_buffer            OUT NOCOPY   VARCHAR2) IS
5118 
5119 /* Bug#5395227 -- use cache structure
5120 
5121   CURSOR fetch_tax_rate_id IS
5122   SELECT tax_rate_id
5123     FROM ZX_SCO_RATES
5124    WHERE tax_regime_code = p_tax_regime_code
5125      AND tax = p_tax
5126      AND tax_status_code = p_tax_status_code
5127      AND tax_rate_code = p_tax_rate_code
5128      AND active_flag   = 'Y'
5129      AND ( p_tax_determine_date >= effective_from AND
5130           (p_tax_determine_date <= effective_to OR effective_to IS NULL));
5131 
5132 */
5133   -- Bug#5395227
5134   l_tax_rate_rec       ZX_TDS_UTILITIES_PKG.ZX_RATE_INFO_REC_TYPE;
5135 
5136 BEGIN
5137   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5138 
5139   IF (g_level_statement >= g_current_runtime_level ) THEN
5140     FND_LOG.STRING(g_level_statement,
5141                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id.BEGIN',
5142                   'ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id(+)');
5143     FND_LOG.STRING(g_level_statement,
5144                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5145                   'tax_regime_code = ' || p_tax_regime_code);
5146     FND_LOG.STRING(g_level_statement,
5147                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5148                   'tax_ = ' || p_tax);
5149     FND_LOG.STRING(g_level_statement,
5150                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5151                   'tax_status_code = ' || p_tax_status_code);
5152     FND_LOG.STRING(g_level_statement,
5153                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5154                   'tax_rate_code = ' || p_tax_rate_code);
5155     FND_LOG.STRING(g_level_statement,
5156                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5157                   'p_tax_determine_date = ' || p_tax_determine_date);
5158     FND_LOG.STRING(g_level_statement,
5159                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5160                   'p_tax_jurisdiction_code = ' || p_tax_jurisdiction_code);
5161 
5162   END IF;
5163   x_return_status := FND_API.G_RET_STS_SUCCESS;
5164 
5165   /* Bug#5395227- use cache structure
5166   OPEN  fetch_tax_rate_id;
5167   FETCH fetch_tax_rate_id INTO  x_tax_rate_id;
5168   CLOSE fetch_tax_rate_id;
5169   */
5170 
5171   /* 5395227- this procedure get_tax_rate_id is
5172      currently not used
5173   ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
5174                  p_tax_regime_code,
5175                  p_tax,
5176                  p_tax_jurisdiction_code,
5177                  p_tax_status_code,
5178                  p_tax_rate_code,
5179                  p_tax_determine_date,
5180                  l_tax_rate_rec,
5181                  x_return_status,
5182                  x_error_buffer);
5183 
5184   */
5185 
5186   IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
5187     x_tax_rate_id := l_tax_rate_rec.tax_rate_id;
5188   END IF;
5189 
5190   IF (g_level_statement >= g_current_runtime_level ) THEN
5191     FND_LOG.STRING(g_level_statement,
5192                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5193                   'tax_rate_id = ' || x_tax_rate_id);
5194     FND_LOG.STRING(g_level_statement,
5195                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5196                   'RETURN_STATUS = ' || x_return_status);
5197     FND_LOG.STRING(g_level_statement,
5198                   'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id.END',
5199                   'ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id(-)');
5200   END IF;
5201 
5202 EXCEPTION
5203   WHEN OTHERS THEN
5204     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5205     IF (g_level_unexpected >= g_current_runtime_level ) THEN
5206       FND_LOG.STRING(g_level_unexpected,
5207                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id',
5208                      sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5209     END IF;
5210     IF (g_level_procedure >= g_current_runtime_level ) THEN
5211       FND_LOG.STRING(g_level_procedure,
5212                     'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id.END',
5213                     'ZX_PRODUCT_INTEGRATION_PKG.get_tax_rate_id(-)');
5214     END IF;
5215 
5216 END get_tax_rate_id;
5217 
5218 /*----------------------------------------------------------------------------*
5219  |Public Procedure                                                            |
5220  |  initialize_tax_info_rec                                                   |
5221  |                                                                            |
5222  |Description                                                                 |
5223  |  This procedure initialize all the attributes of tax_info_rec to NULL      |
5224  |                                                                            |
5225  |Called From                                                                 |
5226  |  ARP_PROCESS_TAX.calculate_tax_f_sql                                       |
5227  |                                                                            |
5228  |History                                                                     |
5229  |  01-SEP-98      TKOSHIO    CREATED                                         |
5230  *----------------------------------------------------------------------------*/
5231 PROCEDURE INITIALIZE_TAX_INFO_REC is
5232 BEGIN
5233   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5234   IF (g_level_procedure >= g_current_runtime_level ) THEN
5235     FND_LOG.STRING(g_level_procedure,
5236                'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize_tax_info_rec.BEGIN',
5237                'ZX_PRODUCT_INTEGRATION_PKG.initialize_tax_info_rec(+)');
5238   END IF;
5239 
5240   tax_info_rec.bill_to_cust_id:=NULL;
5241   tax_info_rec.ship_to_cust_id:=NULL;
5242   tax_info_rec.customer_trx_id:=NULL;
5243   tax_info_rec.trx_number:=NULL;
5244   tax_info_rec.bill_to_customer_number:=NULL;
5245   tax_info_rec.ship_to_customer_number:=NULL;
5246   tax_info_rec.bill_to_customer_name:=NULL;
5247   tax_info_rec.ship_to_customer_name:=NULL;
5248   tax_info_rec.previous_customer_trx_id:=NULL;
5249   tax_info_rec.previous_trx_number:=NULL;
5250   tax_info_rec.trx_date:=NULL;
5251   tax_info_rec.gl_date:=NULL;
5252   tax_info_rec.ship_to_site_use_id:=NULL;
5253   tax_info_rec.bill_to_site_use_id:=NULL;
5254   tax_info_rec.ship_to_postal_code:=NULL;
5255   tax_info_rec.bill_to_postal_code:=NULL;
5256   tax_info_rec.ship_to_location_id:=NULL;
5257   tax_info_rec.bill_to_location_id:=NULL;
5258   tax_info_rec.invoicing_rule_id:=NULL;
5259   tax_info_rec.fob_point:=NULL;
5260   tax_info_rec.trx_currency_code:=NULL;
5261   tax_info_rec.trx_exchange_rate:=NULL;
5262   tax_info_rec.minimum_accountable_unit:=NULL;
5263   tax_info_rec.precision:=NULL;
5264   tax_info_rec.tax_header_level_flag:=NULL;
5265   tax_info_rec.tax_rounding_rule:=NULL;
5266   /*-----------------------------------------------------------------------*/
5267   /*       Release 11 Transaction header data                              */
5268   /*-----------------------------------------------------------------------*/
5269   tax_info_rec.trx_type_id:=NULL;
5270   tax_info_rec.ship_from_warehouse_id:=NULL;
5271   tax_info_rec.payment_term_id:=NULL;
5272   /*-----------------------------------------------------------------------*/
5273   /*       Transaction Line Data                                           */
5274   /*-----------------------------------------------------------------------*/
5275   tax_info_rec.customer_trx_line_id:=NULL;
5276   tax_info_rec.previous_customer_trx_line_id:=NULL;
5277   tax_info_rec.link_to_cust_trx_line_id:=NULL;
5278   tax_info_rec.memo_line_id:=NULL;
5279   tax_info_rec.taxed_quantity:=NULL;
5280   tax_info_rec.inventory_item_id:=NULL;
5281   tax_info_rec.extended_amount:=NULL;
5282   tax_info_rec.entered_amount:=NULL;
5283   tax_info_rec.tax_code:=NULL;
5284   tax_info_rec.vat_tax_id:=NULL;
5285   tax_info_rec.tax_exemption_id:=NULL;
5286   tax_info_rec.item_exception_rate_id:=NULL;
5287   tax_info_rec.tax_rate:=NULL;
5288   tax_info_rec.default_ussgl_transaction_code:=NULL;
5289   tax_info_rec.default_ussgl_trx_code_context:=NULL;
5290   /*-----------------------------------------------------------------------*/
5291   /*       Release 11 Transaction Line data                                */
5292   /*-----------------------------------------------------------------------*/
5293   tax_info_rec.amount_includes_tax_flag:=NULL;
5294   tax_info_rec.taxable_basis:=NULL;
5295   tax_info_rec.tax_calculation_plsql_block:=NULL;
5296   tax_info_rec.payment_terms_discount_percent:=NULL;
5297   /*-----------------------------------------------------------------------*/
5298   /*       Tax Extension Parameters, these are defined specifically to     */
5299   /*                       support AVP(tm) and Vertex(tm)                  */
5300   /*-----------------------------------------------------------------------*/
5301   tax_info_rec.audit_flag:=NULL;
5302   tax_info_rec.qualifier:=NULL;
5303   tax_info_rec.ship_from_code:=NULL;
5304   tax_info_rec.ship_to_code:=NULL;
5305   tax_info_rec.poo_code:=NULL;
5306   tax_info_rec.poa_code:=NULL;
5307   tax_info_rec.vdrctrl_exempt:=NULL;
5308   tax_info_rec.tax_control:=NULL;
5309   tax_info_rec.xmpt_cert_no:=NULL;
5310   tax_info_rec.xmpt_reason:=NULL;
5311   tax_info_rec.xmpt_percent:=NULL;
5312   tax_info_rec.trx_line_type:=NULL;
5313   tax_info_rec.part_no:=NULL;
5314   tax_info_rec.division_code:=NULL;
5315   tax_info_rec.company_code:=NULL;
5316   /*-----------------------------------------------------------------------*/
5317   /*       Release 11 has 5 more character and numeric attributes.         */
5318   /*-----------------------------------------------------------------------*/
5319   tax_info_rec.userf1:=NULL;
5320   tax_info_rec.userf2:=NULL;
5321   tax_info_rec.userf3:=NULL;
5322   tax_info_rec.userf4:=NULL;
5323   tax_info_rec.userf5:=NULL;
5324   tax_info_rec.userf6:=NULL;
5325   tax_info_rec.userf7:=NULL;
5326   tax_info_rec.userf8:=NULL;
5327   tax_info_rec.userf9:=NULL;
5328   tax_info_rec.userf10:=NULL;
5329   tax_info_rec.usern1:=NULL;
5330   tax_info_rec.usern2:=NULL;
5331   tax_info_rec.usern3:=NULL;
5332   tax_info_rec.usern4:=NULL;
5333   tax_info_rec.usern5:=NULL;
5334   tax_info_rec.usern6:=NULL;
5335   tax_info_rec.usern7:=NULL;
5336   tax_info_rec.usern8:=NULL;
5337   tax_info_rec.usern9:=NULL;
5338   tax_info_rec.usern10:=NULL;
5339   tax_info_rec.calculate_tax:=NULL;
5340   /*-----------------------------------------------------------------------*/
5341   /*       Tax Line Data                                                   */
5342   /*-----------------------------------------------------------------------*/
5343   tax_info_rec.status:=NULL;
5344   tax_info_rec.credit_memo_flag:=NULL;
5345   tax_info_rec.tax_type:=NULL;
5346   tax_info_rec.sales_tax_id:=NULL;
5347   tax_info_rec.location_segment_id:=NULL;
5348   tax_info_rec.tax_line_number:=NULL;
5349   tax_info_rec.tax_amount:=NULL;
5350   tax_info_rec.tax_vendor_return_code:=NULL;
5351   tax_info_rec.tax_precedence:=NULL;
5352   tax_info_rec.compound_amount:=NULL;
5353   tax_info_rec.effective_tax_rate:=NULL;
5354   /*-----------------------------------------------------------------------*/
5355   /*       Global Descriptive Flexfields                                   */
5356   /*-----------------------------------------------------------------------*/
5357   tax_info_rec.global_attribute1:=NULL;
5358   tax_info_rec.global_attribute2:=NULL;
5359   tax_info_rec.global_attribute3:=NULL;
5360   tax_info_rec.global_attribute4:=NULL;
5361   tax_info_rec.global_attribute5:=NULL;
5362   tax_info_rec.global_attribute6:=NULL;
5363   tax_info_rec.global_attribute7:=NULL;
5364   tax_info_rec.global_attribute8:=NULL;
5365   tax_info_rec.global_attribute9:=NULL;
5366   tax_info_rec.global_attribute10:=NULL;
5367   tax_info_rec.global_attribute11:=NULL;
5368   tax_info_rec.global_attribute12:=NULL;
5369   tax_info_rec.global_attribute13:=NULL;
5370   tax_info_rec.global_attribute14:=NULL;
5371   tax_info_rec.global_attribute15:=NULL;
5372   tax_info_rec.global_attribute16:=NULL;
5373   tax_info_rec.global_attribute17:=NULL;
5374   tax_info_rec.global_attribute18:=NULL;
5375   tax_info_rec.global_attribute10:=NULL;
5376   tax_info_rec.global_attribute20:=NULL;
5377   tax_info_rec.global_attribute_category:=NULL;
5378   tax_info_rec.poo_id := NULL;
5379   tax_info_rec.poa_id := NULL;
5380   tax_info_rec.customer_trx_charge_line_id := NULL;
5381   tax_info_rec.taxable_amount := NULL;
5382   tax_info_rec.override_tax_rate := NULL;
5383 --crm
5384   tax_info_rec.party_flag := NULL;
5385 
5386 
5387   IF (g_level_statement >= g_current_runtime_level) THEN
5388   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','initialize_tax_info_rec(-)');
5389   END IF;
5390 EXCEPTION
5391   WHEN OTHERS THEN
5392     IF (g_level_unexpected >= g_current_runtime_level ) THEN
5393       FND_LOG.STRING(g_level_unexpected,
5394                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize_tax_info_rec',
5395                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5396     END IF;
5397     IF (g_level_procedure >= g_current_runtime_level ) THEN
5398       FND_LOG.STRING(g_level_procedure,
5399                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.initialize_tax_info_rec.END',
5400                  'ZX_PRODUCT_INTEGRATION_PKG.initialize_tax_info_rec(-)');
5401     END IF;
5402     RAISE;
5403 END INITIALIZE_TAX_INFO_REC;
5404 
5405 
5406 /*----------------------------------------------------------------------------*
5407  | PUBLIC  PROCEDURE                                                          |
5408  |    dump_tax_info_rec ( p_IO_flag IN VARCHAR2 default 'O' )		      |
5409  |                                                                            |
5410  | DESCRIPTION                                                                |
5411  |    This procedure will dump members of tax_info_rec when debug is enabled. |
5412  |    The parameter p_IO_flag can have values 'I', 'O' or 'E'. The parameter  |
5413  |    p_IO_flag will be prefixed to the member names on output and is for     |
5414  |    informational purposes only. The default value for p_IO_flag is 'O'.    |
5415  |									      |
5416  | PARAMETERS                                                                 |
5417  |   THRU GLOBALS:                                                            |
5418  |      tax_info_rec               in tax_info_rec_type     		      |
5419  |                                                                            |
5420  | CALLED FROM                                                                |
5421  |    Calculate()                                                             |
5422  |                                                                            |
5423  |                                                                            |
5424  | HISTORY                                                                    |
5425  |    14-NOV-95  Mahesh Sabapathy  Created.                                   |
5426  |    16-NOV-95  Mahesh Sabapathy  Added: parameter p_IO_flag and procedure   |
5427  |                                        made public.     		      |
5428  *----------------------------------------------------------------------------*/
5429 
5430 PROCEDURE  dump_tax_info_rec(p_IO_flag  IN  VARCHAR2 ) IS
5431   l_IO_flag		CHAR(1);
5432 BEGIN
5433   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5434 
5435   IF (g_level_procedure >= g_current_runtime_level ) THEN
5436     FND_LOG.STRING(g_level_procedure,
5437                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.dump_tax_info_rec.BEGIN',
5438                  'ZX_PRODUCT_INTEGRATION_PKG.dump_tax_info_rec(+)');
5439   END IF;
5440 
5441   IF ( p_IO_flag NOT IN ( 'I', 'E', 'O' ) ) THEN
5442 	l_IO_flag := 'O';
5443   ELSE
5444    	l_IO_flag := p_IO_flag;
5445   END IF;
5446 
5447   --
5448   -- Dump tax_info_rec
5449   --
5450   IF (g_level_statement >= g_current_runtime_level) THEN
5451   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '************************' );
5452   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '**  Tax Info Record   **' );
5453   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '************************' );
5454   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Bill_to_cust_id = '
5455 			||tax_info_rec.Bill_to_cust_id );
5456   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_to_cust_id = '
5457 			||tax_info_rec.Ship_to_cust_id );
5458   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Customer_trx_id = '
5459 			||tax_info_rec.Customer_trx_id );
5460   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Trx_date = '||tax_info_rec.Trx_date );
5461   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': GL_date = '||tax_info_rec.gl_date );
5462   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_to_site_use_id = '
5463 			||tax_info_rec.Ship_to_site_use_id );
5464   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Bill_to_site_use_id = '
5465 			||tax_info_rec.Bill_to_site_use_id );
5466   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_to_postal_code = '
5467 			||tax_info_rec.Ship_to_postal_code );
5468   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Bill_to_postal_code = '
5469 			||tax_info_rec.Bill_to_postal_code );
5470   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_to_location_id = '
5471 			||tax_info_rec.Ship_to_location_id );
5472   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Bill_to_location_id = '
5473 			||tax_info_rec.Bill_to_location_id );
5474   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Invoicing_rule_id = '
5475 			||tax_info_rec.Invoicing_rule_id );
5476   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': FOB_point = '||tax_info_rec.FOB_point );
5477   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Trx_currency_code = '
5478 			||tax_info_rec.Trx_currency_code );
5479   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Trx_exchange_rate = '
5480 			||tax_info_rec.Trx_exchange_rate );
5481   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Minimum_accountable_unit = '
5482 			||tax_info_rec.Minimum_accountable_unit );
5483   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Precision = '||tax_info_rec.Precision );
5484   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Customer_trx_line_id = '
5485 			||tax_info_rec.Customer_trx_line_id );
5486   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': link_to_cust_trx_line_id = '
5487 			||tax_info_rec.link_to_cust_trx_line_id );
5488   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Memo_line_id = '||tax_info_rec.Memo_line_id );
5489   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Taxed_quantity = '||tax_info_rec.Taxed_quantity );
5490   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Inventory_item_id = '||tax_info_rec.Inventory_item_id );
5491   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Extended_amount = '||tax_info_rec.Extended_amount );
5492   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_code = '||tax_info_rec.Tax_code );
5493   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Vat_tax_id = '||tax_info_rec.Vat_tax_id );
5494   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_exemption_id = '||tax_info_rec.Tax_exemption_id );
5495   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Item_exception_rate_id = '
5496 			||tax_info_rec.Item_exception_rate_id );
5497   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_rate = '||tax_info_rec.Tax_rate );
5498   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Default_ussgl_transaction_code = '
5499 			||tax_info_rec.Default_ussgl_transaction_code );
5500   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Default_ussgl_trx_code_context = '
5501 			||tax_info_rec.Default_ussgl_trx_code_context );
5502   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_control = '||tax_info_rec.Tax_control );
5503   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Qualifier = '||tax_info_rec.Qualifier );
5504   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_from_code = '||tax_info_rec.Ship_from_code );
5505   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_to_code = '||tax_info_rec.Ship_to_code );
5506   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Poo_code = '||tax_info_rec.Poo_code );
5507   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Poa_code = '||tax_info_rec.Poa_code );
5508   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Vdrctrl_exempt = '||tax_info_rec.Vdrctrl_exempt );
5509   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Xmpt_cert_no = '||tax_info_rec.Xmpt_cert_no );
5510   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Xmpt_reason = '||tax_info_rec.Xmpt_reason );
5511   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Xmpt_percent = '||tax_info_rec.Xmpt_percent );
5512   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Part_no = '||tax_info_rec.Part_no );
5513   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf1 = '||tax_info_rec.Userf1 );
5514   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf2 = '||tax_info_rec.Userf2 );
5515   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf3 = '||tax_info_rec.Userf3 );
5516   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf4 = '||tax_info_rec.Userf4 );
5517   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf5 = '||tax_info_rec.Userf5 );
5518   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf6 = '||tax_info_rec.Userf6 );
5519   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf7 = '||tax_info_rec.Userf7 );
5520   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf8 = '||tax_info_rec.Userf8 );
5521   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf9 = '||tax_info_rec.Userf9 );
5522   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Userf10 = '||tax_info_rec.Userf10 );
5523   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern1 = '||tax_info_rec.Usern1 );
5524   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern2 = '||tax_info_rec.Usern2 );
5525   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern3 = '||tax_info_rec.Usern3 );
5526   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern4 = '||tax_info_rec.Usern4 );
5527   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern5 = '||tax_info_rec.Usern5 );
5528   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern6 = '||tax_info_rec.Usern6 );
5529   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern7 = '||tax_info_rec.Usern7 );
5530   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern8 = '||tax_info_rec.Usern8 );
5531   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern9 = '||tax_info_rec.Usern9 );
5532   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Usern10 = '||tax_info_rec.Usern10 );
5533   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': trx_number = '||tax_info_rec.trx_number );
5534   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': previous_customer_trx_line_id = '||tax_info_rec.previous_customer_trx_line_id );
5535   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': previous_customer_trx_id = '||tax_info_rec.previous_customer_trx_id );
5536   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': previous_trx_number = '||tax_info_rec.previous_trx_number );
5537   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': bill_to_customer_number = '||tax_info_rec.bill_to_customer_number);
5538   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': ship_to_customer_number = '||tax_info_rec.ship_to_customer_number);
5539   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': bill_to_customer_name = '||tax_info_rec.bill_to_customer_name);
5540   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': ship_to_customer_name = '||tax_info_rec.ship_to_customer_name);
5541   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Audit_Flag = ' || tax_info_rec.audit_flag );
5542   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Trx_Line_Type = ' || tax_info_rec.trx_line_type );
5543   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Division Code = ' || tax_info_rec.division_code );
5544   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Company Code = '|| tax_info_rec.company_code );
5545   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Calculate_tax = '||tax_info_rec.Calculate_tax );
5546   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Status = '||tax_info_rec.Status );
5547   END IF;
5548   IF ( tax_info_rec.tax_type = 0 ) THEN
5549 	dummy := 'TAX_TYPE_INACTIVE';
5550   ELSIF ( tax_info_rec.tax_type = 1 ) THEN
5551 	dummy := 'TAX_TYPE_LOCATION';
5552   ELSIF ( tax_info_rec.tax_type = 2 ) THEN
5553 	dummy := 'TAX_TYPE_SALES';
5554   ELSIF ( tax_info_rec.tax_type = 3 ) THEN
5555 	dummy := 'TAX_TYPE_VAT';
5556   ELSE
5557 	dummy := null;
5558   END IF;
5559   IF (g_level_statement >= g_current_runtime_level) THEN
5560   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_type = '||dummy );
5561   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Sales_tax_id = '||tax_info_rec.Sales_tax_id );
5562   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Location_segment_id = '
5563 			||tax_info_rec.Location_segment_id );
5564   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_line_number = '
5565 			||tax_info_rec.Tax_line_number );
5566   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_amount = '||tax_info_rec.Tax_amount );
5567   END IF;
5568   IF ( tax_info_rec.tax_vendor_return_code = TAX_NO_VENDOR ) THEN
5569 	dummy := 'TAX_NO_VENDOR';
5570   ELSE
5571 	dummy := null;
5572   END IF;
5573   IF (g_level_statement >= g_current_runtime_level) THEN
5574   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_vendor_return_code = '||dummy );
5575   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_precedence = '
5576 			||tax_info_rec.Tax_precedence );
5577   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Compound_amount = '
5578 			||tax_info_rec.Compound_amount );
5579   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_header_level_flag = '
5580 			||tax_info_rec.Tax_header_level_flag );
5581   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Tax_rounding_rule = '
5582 			||tax_info_rec.Tax_rounding_rule );
5583   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Trx_type_id = '
5584 			||tax_info_rec.Trx_type_id );
5585   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Ship_From_Warehouse_id = '
5586 			||tax_info_rec.Ship_From_Warehouse_id );
5587   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Amount_includes_tax_flag = '
5588 			||tax_info_rec.Amount_includes_tax_flag );
5589   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Customer_trx_charge_line_id = '
5590 			||tax_info_rec.customer_trx_charge_line_id );
5591   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Poo_id = '
5592 			||tax_info_rec.poo_id );
5593   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Poa_id = '
5594 			||tax_info_rec.poa_id );
5595   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Taxable_amount = '
5596 			||tax_info_rec.taxable_amount );
5597   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Taxable_basis = '
5598 			||tax_info_rec.taxable_basis );
5599   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Override Tax Rate = '
5600 			||tax_info_rec.override_tax_rate );
5601   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', '... '||l_IO_flag||': Party Flag = '
5602                         ||tax_info_rec.party_flag );
5603   END IF;
5604 
5605 
5606   --
5607   -- Finished dumping
5608   --
5609   IF (g_level_procedure >= g_current_runtime_level ) THEN
5610     FND_LOG.STRING(g_level_procedure,
5611                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.dump_tax_info_rec.END',
5612                  'ZX_PRODUCT_INTEGRATION_PKG.dump_tax_info_rec(-)');
5613   END IF;
5614 
5615 END dump_tax_info_rec;
5616 
5617 
5618 /*----------------------------------------------------------------------------*
5619  | PUBLIC FUNCTION                                                            |
5620  |    Tax_Curr_Round ( p_amount           in                         	      |
5621  |                     p_trx_currency     in,                                 |
5622  |		       p_precision        in,                		      |
5623  |		       p_min_acct_unit    in,              		      |
5624  |                     p_rounding_rule    in                                  |
5625  |                                                                            |
5626  | DESCRIPTION                                                                |
5627  |    Given the parameters listed above, the function will return the amount  |
5628  |    rounded to the correct precision.                                       |
5629  |									      |
5630  | RETURNS                                                                    |
5631  |    Rounded amount.                                                         |
5632  |                                                                            |
5633  | HISTORY                                                                    |
5634  |    12/27/04  Nilesh Patel       Copied from arp_tax_compound               |
5635  |                                                                            |
5636  *----------------------------------------------------------------------------*/
5637 
5638 FUNCTION tax_curr_round( p_amount  	     IN NUMBER,
5639 			 p_trx_currency_code IN VARCHAR2,
5640 			 p_precision 	     IN NUMBER,
5641 			 p_min_acct_unit     IN NUMBER,
5642 			 p_rounding_rule     IN VARCHAR2,
5643 			 p_autotax_flag      IN VARCHAR2 )
5644 
5645 /* p_autotax_flag is ignored in bugfix 378224 as all tax transactions must be rounded */
5646 /* this includes manually imported tax amounts                                        */
5647                  RETURN NUMBER IS
5648 
5649   l_rounded_amount	NUMBER;
5650   l_precision           NUMBER;
5651   l_rounding_rule       VARCHAR2(30);
5652   l_min_acct_unit       NUMBER;
5653   l_round_adj		NUMBER;
5654   l_autotax_flag        VARCHAR2(1);
5655 
5656    PG_DEBUG varchar2(1);
5657 
5658 BEGIN
5659 
5660   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5661 
5662   IF (g_level_procedure >= g_current_runtime_level ) THEN
5663     FND_LOG.STRING(g_level_procedure,
5664                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round.BEGIN',
5665                  'ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round(+)');
5666   END IF;
5667 
5668   PG_DEBUG := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
5669 
5670   IF (g_level_statement >= g_current_runtime_level) THEN
5671   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round( ' || p_amount || ' )+' );
5672   END IF;
5673 
5674   if p_rounding_rule not in ('UP','DOWN','NEAREST') then
5675      l_rounding_rule := 'NEAREST';
5676   else
5677      l_rounding_rule := p_rounding_rule;
5678   end if;
5679 
5680   if p_autotax_flag not in ('Y','N','U') then
5681      l_autotax_flag := 'Y';
5682   else
5683      l_autotax_flag := p_autotax_flag;
5684   end if;
5685 
5686 
5687   if p_trx_currency_code = ZX_PRODUCT_INTEGRATION_PKG.sysinfo.sysparam.tax_currency_code and l_autotax_flag in ( 'Y','U')
5688   THEN
5689 
5690      l_precision := least( p_precision, nvl(ZX_PRODUCT_INTEGRATION_PKG.sysinfo.sysparam.tax_precision, p_precision) );
5691      l_min_acct_unit := greatest( nvl(p_min_acct_unit, ZX_PRODUCT_INTEGRATION_PKG.sysinfo.sysparam.tax_minimum_accountable_unit),
5692 				  nvl(ZX_PRODUCT_INTEGRATION_PKG.sysinfo.sysparam.tax_minimum_accountable_unit, p_min_acct_unit));
5693 
5694   ELSE
5695 
5696      l_precision := p_precision;
5697      l_min_acct_unit := p_min_acct_unit;
5698 
5699   END IF;
5700 
5701 IF (g_level_statement >= g_current_runtime_level) THEN
5702 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' trx currency  = :'||p_trx_currency_code||':');
5703 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' sys currency  = :'||ZX_PRODUCT_INTEGRATION_PKG.sysinfo.sysparam.tax_currency_code||':');
5704 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' autotax       = :'||p_autotax_flag||':');
5705 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' rounding rule = :'||l_rounding_rule||':');
5706 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' precision     = :'||to_char(l_precision)||':');
5707 	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',' mau           = :'||to_char(l_min_acct_unit)||':');
5708 END IF;
5709 
5710   IF ( nvl(l_min_acct_unit,0) <> 0 )
5711   THEN
5712 
5713      IF nvl(l_rounding_rule, 'NEAREST' ) = 'UP'
5714      THEN
5715 	 --
5716 	 -- Round the amount Up to next Min Accountable Unit
5717 	 --
5718          l_rounded_amount := sign(p_amount)* (CEIL(abs(p_amount) / l_min_acct_unit) * l_min_acct_unit);
5719 
5720      ELSIF nvl(l_rounding_rule, 'NEAREST' ) = 'DOWN'
5721      THEN
5722 
5723 	 --
5724 	 -- Round the amount Down to the prior Min Accountable Unit
5725 	 --
5726          l_rounded_amount := TRUNC(p_amount/l_min_acct_unit) * l_min_acct_unit;
5727 
5728      ELSE /* ROUND NEAREST BY DEFAULT */
5729 
5730 	 --
5731 	 -- Round the amount to the nearest Min Accountable Unit
5732 	 --
5733          l_rounded_amount := ROUND(p_amount / l_min_acct_unit) * l_min_acct_unit;
5734 
5735      END IF;
5736 
5737 
5738   ELSE
5739 
5740      --
5741      -- Minimum Accountable Unit is not specified, use
5742      -- the precision to control the rounding
5743      --
5744      IF nvl(l_rounding_rule, 'NEAREST' ) = 'UP'
5745      THEN
5746 	 --
5747 	 -- Round the amount Up at the given precision
5748 	 -- Amounts that are already at this precision
5749 	 -- are not changed.
5750 	 --
5751 	 IF p_amount <> trunc(p_amount, l_precision)
5752 	 THEN
5753              l_rounded_amount := ROUND( p_amount + (sign( p_amount)*(power( 10, (l_precision*-1))/2)), l_precision );
5754 	 ELSE
5755 	     l_rounded_amount := p_amount;
5756 	 END IF;
5757      ELSIF nvl(l_rounding_rule, 'NEAREST' ) = 'DOWN'
5758 	 THEN
5759 	 --
5760 	 -- Round the amount Down to the prior precision
5761 	 --
5762          l_rounded_amount:= TRUNC( p_amount, l_precision );
5763 
5764      ELSE /* Default Nearest */
5765 	 --
5766 	 -- Round the amount to the nearest precision
5767 	 --
5768          l_rounded_amount := ROUND( p_amount, l_precision );
5769 
5770      END IF;
5771 
5772   END IF;
5773 
5774   IF (g_level_procedure >= g_current_runtime_level ) THEN
5775     FND_LOG.STRING(g_level_procedure,
5776                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round',
5777                  'rounded_amount: '||to_char( l_rounded_amount) );
5778     FND_LOG.STRING(g_level_procedure,
5779                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round.END',
5780                  'ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round(-)');
5781   END IF;
5782 
5783   RETURN (l_rounded_amount);
5784 
5785 EXCEPTION
5786   WHEN OTHERS THEN
5787     IF (g_level_unexpected >= g_current_runtime_level ) THEN
5788       FND_LOG.STRING(g_level_unexpected,
5789                  'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.tax_curr_round',
5790                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5791     END IF;
5792     RAISE;
5793 END tax_curr_round;
5794 
5795 
5796 /*----------------------------------------------------------------------------*
5797  | PRIVATE PROCEDURE                                                          |
5798  |    get_vat_tax_rate                   			              |
5799  |                                                                            |
5800  | DESCRIPTION                                                                |
5801  |    This procedure will get the vat_tax_id, tax type and the tax rate for   |
5802  |    the given tax code using tax code, set of books and trx date. If a      |
5803  |    tax code is not found then the exception TAX_NO_CODE is raised, If the  |
5804  |    tax code is found, but inactive, the exception TAX_CODE_INACTIVE is     |
5805  |    raised. Moreover, if an inactive tax code is found the tax type for the |
5806  |    global record will be set to TYPE_INACTIVE. If a tax code is not passed |
5807  |    exception TAX_NO_RATE is raised.                                        |
5808  |									      |
5809  | PARAMETERS                                                                 |
5810  |   THRU GLOBALS:                                                            |
5811  |      tax_info_rec.tax_code                        in varchar2              |
5812  |      sysinfo.sysparam.set_of_books_id  	     in number                |
5813  |      tax_info_rec.trx_date             	     in number                |
5814  |									      |
5815  |                                                                            |
5816  | RETURNS                                                                    |
5817  |   THRU GLOBALS:                                                            |
5818  |      if an active tax code exits                                           |
5819  |         tax_info_rec.vat_tax_id                                            |
5820  |         tax_info_rec.tax_rate                                              |
5821  |         tax_info_rec.tax_type                                              |
5822  |      exception TAX_NO_CODE when tax code not found                         |
5823  |      exception TAX_NO_RATE when tax code is not passed                     |
5824  |      exception TAX_CODE_INACTIVE when tax code inactive.                   |
5825  |                                                                            |
5826  | CALLED FROM                                                                |
5827  |    Calculate()                                                             |
5828  |                                                                            |
5829  |                                                                            |
5830  | HISTORY                                                                    |
5831  |                                                                            |
5832  *----------------------------------------------------------------------------*/
5833 
5834 PROCEDURE  get_vat_tax_rate IS
5835   l_tax_code_count	NUMBER;
5836 
5837   -- If the Tax code passed is ADHOC and a tax rate is passed, use the tax rate
5838   -- else assign standard tax rate for tax code.
5839   --
5840   CURSOR sel_vat_tax_rate IS
5841 	SELECT vat_tax_id, tax_rate,
5842 		TAX_TYPE_VAT,
5843 		nvl(validate_flag, 'N')
5844 	  FROM ar_vat_tax
5845 	 WHERE tax_code = tax_info_rec.tax_code
5846 	   AND set_of_books_id = sysinfo.sysparam.set_of_books_id
5847 	   AND trunc(tax_info_rec.trx_date) between start_date and
5848 				nvl(end_date, trunc(tax_info_rec.trx_date))
5849 	   AND nvl(enabled_flag, 'Y') = 'Y'
5850            AND nvl(tax_class, 'O') = 'O';
5851 
5852 
5853   CURSOR sel_vat_tax_code_count IS
5854 	SELECT 1
5855 	  FROM DUAL
5856 	 WHERE EXISTS ( SELECT tax_code
5857 	    	  		  FROM ar_vat_tax
5858 	     	 		 WHERE tax_code = tax_info_rec.tax_code
5859 	     	   		   AND set_of_books_id = sysinfo.sysparam.set_of_books_id
5860                            	   AND nvl(enabled_flag, 'Y') = 'Y'
5861                                    AND nvl(tax_class, 'O') = 'O');
5862 
5863 BEGIN
5864 
5865   IF (g_level_statement >= g_current_runtime_level) THEN
5866   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'zx_product_integration_pkg.get_vat_tax_rate()+' );
5867   END IF;
5868 
5869   --
5870   -- If tax code passed, get tax rate info
5871   --
5872   IF ( tax_info_rec.tax_code IS NOT NULL ) THEN
5873 
5874 	--
5875 	-- Fetch vat tax rate
5876 	--
5877 	OPEN sel_vat_tax_rate;
5878 	FETCH sel_vat_tax_rate INTO
5879 	    	tax_info_rec.vat_tax_id, tax_info_rec.tax_rate,
5880 		tax_info_rec.tax_type, pg_adhoc_tax_code;
5881 
5882 	--
5883   	-- Verify if an active tax code is found!
5884 	--
5885 	IF ( sel_vat_tax_rate%NOTFOUND ) THEN
5886 	  --
5887 	  -- Verify if tax code exists, if it exists, then its inactive
5888 	  --
5889 	  OPEN sel_vat_tax_code_count;
5890 	  FETCH sel_vat_tax_code_count INTO l_tax_code_count;
5891 
5892 	  IF ( sel_vat_tax_code_count%NOTFOUND ) THEN
5893 		--
5894 		-- Undefined tax code
5895 		--
5896 		raise TAX_NO_CODE;
5897 	  ELSE
5898 		--
5899 		-- Tax code passed is inactive for the trx date
5900 		--
5901 		tax_info_rec.tax_type := TAX_TYPE_INACTIVE;
5902 		raise TAX_CODE_INACTIVE;
5903 	  END IF;
5904 
5905 	  CLOSE sel_vat_tax_code_count;
5906 
5907         ELSE
5908           if pg_adhoc_tax_code = 'Y' then
5909             -- retrieve_adhoc;
5910             -- LTE tax codes are not adhoc
5911                NULL;
5912           end if;
5913 	END IF;		-- Active tax code exists?
5914 
5915 	CLOSE sel_vat_tax_rate;
5916 
5917   ELSE			-- Tax code not passed
5918 
5919 	raise TAX_NO_RATE;
5920 
5921   END IF;		-- Tax code passed?
5922 
5923   --
5924   tax_info_rec.tax_rate := nvl(tax_info_rec.override_tax_rate,
5925                                tax_info_rec.tax_rate);
5926 
5927   --
5928   -- Debug Info
5929   --
5930   IF (g_level_statement >= g_current_runtime_level) THEN
5931   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','>>> O : Vat_tax_id = '||tax_info_rec.Vat_tax_id);
5932   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','>>> O : Tax_rate = '||tax_info_rec.tax_rate);
5933   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG','>>> O : Tax_type = '||tax_info_rec.tax_type);
5934   	FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'arp_tax.get_vat_tax_rate()-' );
5935   END IF;
5936 
5937 EXCEPTION
5938   WHEN TAX_NO_RATE THEN
5939   	IF (g_level_statement >= g_current_runtime_level) THEN
5940   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'EXCEPTION(TAX_NO_RATE) : arp_tax.get_vat_tax_rate()-');
5941   	END IF;
5942   	IF ( sel_vat_tax_rate%ISOPEN ) THEN
5943   		CLOSE sel_vat_tax_rate;
5944 	END IF;
5945   	IF ( sel_vat_tax_code_count%ISOPEN ) THEN
5946   		CLOSE sel_vat_tax_code_count;
5947 	END IF;
5948 	RAISE ;
5949 
5950   WHEN TAX_NO_CODE THEN
5951   	IF (g_level_statement >= g_current_runtime_level) THEN
5952   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'EXCEPTION(TAX_NO_CODE) : arp_tax.get_vat_tax_rate()-');
5953   	END IF;
5954   	IF ( sel_vat_tax_rate%ISOPEN ) THEN
5955   		CLOSE sel_vat_tax_rate;
5956 	END IF;
5957   	IF ( sel_vat_tax_code_count%ISOPEN ) THEN
5958   		CLOSE sel_vat_tax_code_count;
5959 	END IF;
5960 	RAISE ;
5961 
5962   WHEN TAX_CODE_INACTIVE THEN
5963   	IF (g_level_statement >= g_current_runtime_level) THEN
5964   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'EXCEPTION(TAX_CODE_INACTIVE) : arp_tax.get_vat_tax_rate()-');
5965   	END IF;
5966   	IF ( sel_vat_tax_rate%ISOPEN ) THEN
5967   		CLOSE sel_vat_tax_rate;
5968 	END IF;
5969   	IF ( sel_vat_tax_code_count%ISOPEN ) THEN
5970   		CLOSE sel_vat_tax_code_count;
5971 	END IF;
5972 	RAISE ;
5973 
5974   WHEN OTHERS THEN
5975   	IF (g_level_statement >= g_current_runtime_level) THEN
5976   		FND_LOG.STRING(g_level_statement,'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG', 'EXCEPTION(OTHERS) : arp_tax.get_vat_tax_rate()-');
5977   	END IF;
5978   	IF ( sel_vat_tax_rate%ISOPEN ) THEN
5979   		CLOSE sel_vat_tax_rate;
5980 	END IF;
5981   	IF ( sel_vat_tax_code_count%ISOPEN ) THEN
5982   		CLOSE sel_vat_tax_code_count;
5983 	END IF;
5984 	RAISE ;
5985 
5986 END get_vat_tax_rate;
5987 
5988 
5989 
5990 
5991 /*===========================================================================+
5992  | PROCEDURE                                                                 |
5993  |   copy_lte_gdfs                                                           |
5994  |                                                                           |
5995  | DESCRIPTION                                                               |
5996  |   This procedure copies the global attribute columns from                 |
5997  |   ra_customer_Trx_lines into named columns trx_busoness_category,         |
5998  |   product_category and product_fiscal_class for Latin Tax Engine          |
5999  |                                                                           |
6000  |   This procedure should be called by Receivables at the time of           |
6001  |   populating eBTax Global Temporary tables zx_trx_headers_gt and          |
6002  |   zx_transaction_lines_gt during autoinvoice                              |
6003  |                                                                           |
6004  | MODIFICATION HISTORY                                                      |
6005  |   19-Jan-2005  Nilesh Patel         Created                               |
6006  |                                                                           |
6007 +===========================================================================*/
6008 procedure copy_lte_gdfs(
6009   x_return_status       OUT NOCOPY VARCHAR2)
6010 is
6011   l_delimiter zx_fc_types_b.delimiter%type;
6012 
6013   CURSOR c_delimiter IS
6014   SELECT delimiter
6015   FROM   zx_fc_types_b
6016   WHERE  classification_type_code ='TRX_BUSINESS_CATEGORY';
6017 
6018 Begin
6019 
6020    OPEN c_delimiter;
6021    FETCH c_delimiter INTO l_delimiter;
6022    CLOSE c_delimiter;
6023 
6024    -- bug#6834705 - use tax_event_class_code from
6025    -- zx_evnt_cls_mappings, not from zx_trx_headers_gt
6026    --
6027 
6028    MERGE INTO  ZX_TRANSACTION_LINES_GT     lines_gt
6029    USING (SELECT
6030              ratrxlines.global_attribute2  product_category,
6031              ratrxlines.global_attribute3  trx_business_category,
6032              Event.tax_event_class_code    tax_event_class_code,
6033              Lines.trx_line_id             trx_line_id
6034         FROM
6035              zx_transaction_lines_gt Lines,
6036              --zx_trx_headers_gt Headers,
6037              zx_evnt_cls_mappings    event,
6038              ra_customer_trx_lines_all ratrxlines
6039         WHERE
6040              lines.application_id   = 222
6041         AND  lines.application_id   = event.application_id
6042         AND  lines.entity_code      = event.entity_code
6043         AND  lines.event_class_code = event.event_class_code
6044         AND  Lines.trx_id           = ratrxlines.customer_Trx_id
6045         AND  Lines.trx_line_id      = ratrxlines.customer_Trx_line_id
6046         AND  ratrxlines.line_type   = 'LINE'
6047         AND  ratrxlines.memo_line_id  is NOT NULL
6048           ) Temp
6049    ON        ( Lines_gt.trx_line_id = Temp.trx_line_id)
6050    WHEN MATCHED THEN
6051          UPDATE SET
6052          trx_business_category = nvl(Lines_gt.trx_business_category,
6053                                            Temp.tax_event_class_code||l_delimiter||Temp.trx_business_category),
6054          product_category = nvl(Lines_gt.product_category, Temp.product_category)
6055    WHEN NOT MATCHED THEN
6056                       INSERT  (LINE_AMT) VALUES(NULL);
6057 
6058 
6059    MERGE INTO  ZX_TRANSACTION_LINES_GT lines_gt
6060    USING (SELECT
6061              ratrxlines.global_attribute2  product_fiscal_class,
6062              ratrxlines.global_attribute3  trx_business_category,
6063              Event.tax_event_class_code    tax_event_class_code,
6064              Lines.trx_line_id             trx_line_id
6065         FROM
6066              zx_transaction_lines_gt Lines,
6067              --zx_trx_headers_gt Headers,
6068              zx_evnt_cls_mappings    event,
6069              ra_customer_trx_lines_all ratrxlines
6070         WHERE
6071              lines.application_id   = 222
6072         AND  lines.application_id   = event.application_id
6073         AND  lines.entity_code      = event.entity_code
6074         AND  lines.event_class_code = event.event_class_code
6075         --AND  lines.trx_id = headers.trx_id
6076         AND  Lines.trx_id           = ratrxlines.customer_Trx_id
6077         AND  Lines.trx_line_id      = ratrxlines.customer_Trx_line_id
6078         AND  ratrxlines.line_type    = 'LINE'
6079         AND  ratrxlines.inventory_item_id  is NOT NULL
6080           ) Temp
6081    ON        ( Lines_gt.trx_line_id = Temp.trx_line_id)
6082    WHEN MATCHED THEN
6083          UPDATE SET
6084          trx_business_category = nvl(Lines_gt.trx_business_category,
6085                                            Temp.tax_event_class_code||l_delimiter||Temp.trx_business_category),
6086          product_fisc_classification = nvl(Lines_gt.product_fisc_classification, Temp.product_fiscal_class)
6087    WHEN NOT MATCHED THEN
6088                       INSERT  (LINE_AMT) VALUES(NULL);
6089 
6090 
6091 Exception
6092    when others then
6093      NULL;
6094 
6095 End copy_lte_gdfs;
6096 
6097 
6098 /*===========================================================================+
6099  | FUNCTION                                                                  |
6100  |   adjust_compound_inclusive                                               |
6101  |                                                                           |
6102  | DESCRIPTION                                                               |
6103  |   go through tax_rec_tbl to adjust for Compounding and Inclusive          |
6104  |   for group tax.                                                          |
6105  |                                                                           |
6106  | SCOPE - Public                                                            |
6107  |                                                                           |
6108  | NOTES                                                                     |
6109  |                                                                           |
6110  | MODIFICATION HISTORY                                                      |
6111  |   20-Sep-05 Nilesh Patel Created                                          |
6112  |                                                                           |
6113  +===========================================================================*/
6114 function adjust_compound_inclusive return number is
6115 
6116   l_inclusive_amount NUMBER := 0;
6117   l_sum_of_incl_tax	        NUMBER       := 0;
6118   l_max_counter                 NUMBER       := 0;
6119 
6120 begin
6121 
6122   IF (g_level_procedure >= g_current_runtime_level ) THEN
6123     FND_LOG.STRING(g_level_procedure,
6124                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',
6125                      'ZX_PRODUCT_INTEGRATION_PKG.adjust_compound_inclusive(+)');
6126   END IF;
6127 
6128   --
6129   -- Check the group tax contains inclusive tax or not.
6130   --
6131 
6132   if (sysinfo.sysparam.tax_method = MTHD_LATIN) then
6133 
6134      begin
6135 
6136          l_max_counter := 0;
6137          l_sum_of_incl_tax := 0;
6138 
6139          l_max_counter := nvl(tax_rec_tbl.last,0);
6140          --
6141          IF (g_level_procedure >= g_current_runtime_level ) THEN
6142                       FND_LOG.STRING(g_level_procedure,
6143                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',
6144          	     '-- Number of tax lines for this transaction line '||
6145                      to_char(l_max_counter));
6146          END IF;
6147 
6148          --
6149          for i in 1..l_max_counter
6150          LOOP
6151            --
6152            IF NVL(tax_rec_tbl(i).amount_includes_tax_flag,'N') = 'Y' THEN
6153               l_sum_of_incl_tax := l_sum_of_incl_tax +
6154                                     tax_rec_tbl(i).extended_amount;
6155            END IF;
6156            --
6157          end loop;
6158 
6159         IF (g_level_procedure >= g_current_runtime_level ) THEN
6160                       FND_LOG.STRING(g_level_procedure,
6161                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',
6162          	     '-- Total inclusive tax amount for this transaction line '
6163                      || to_char(l_sum_of_incl_tax));
6164         END IF;
6165 
6166         l_inclusive_amount := l_sum_of_incl_tax;
6167 
6168        --
6169        IF (g_level_procedure >= g_current_runtime_level ) THEN
6170          FND_LOG.STRING(g_level_procedure,
6171                        'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG',
6172                        'ZX_PRODUCT_INTEGRATION_PKG.adjust_compound_inclusive(-)');
6173        END IF;
6174 
6175        return l_inclusive_amount;
6176     end;
6177    end if; -- MTHD_LATIN
6178 
6179   return l_inclusive_amount;
6180 
6181 end;
6182 
6183 /*===========================================================================+
6184  | PROCEDURE                                                                 |
6185  |   package constructor                                                     |
6186  |                                                                           |
6187  | DESCRIPTION                                                               |
6188  |                                                                           |
6189  | MODIFICATION HISTORY                                                      |
6190  |                                                                           |
6191 +===========================================================================*/
6192 
6193 -- package constructor
6194 BEGIN
6195   --Initialize the debug variable pg_debug
6196   pg_debug := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
6197   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
6198   IF (g_level_procedure >= g_current_runtime_level ) THEN
6199     FND_LOG.STRING(g_level_procedure,
6200                      'ZX.PLSQL.ZX_PRODUCT_INTEGRATION_PKG.constructor',
6201                      'ZX_PRODUCT_INTEGRATION_PKG: constructor');
6202   END IF;
6203 END ZX_PRODUCT_INTEGRATION_PKG;
6204