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