DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_TDS_TAXABLE_BASIS_DETM_PKG

Source


1 PACKAGE BODY ZX_TDS_TAXABLE_BASIS_DETM_PKG AS
2 /* $Header: zxditxbsisdtpkgb.pls 120.109.12020000.2 2012/07/23 12:54:49 srajapar noship $ */
3 
4 g_current_runtime_level      NUMBER;
5 g_level_statement            CONSTANT  NUMBER   := FND_LOG.LEVEL_STATEMENT;
6 g_level_procedure            CONSTANT  NUMBER   := FND_LOG.LEVEL_PROCEDURE;
7 g_level_unexpected           CONSTANT  NUMBER   := FND_LOG.LEVEL_UNEXPECTED;
8 g_level_error                CONSTANT  NUMBER   := FND_LOG.LEVEL_ERROR;
9 
10 PROCEDURE populate_inclusive_tax_flag (
11     p_tax_line_index    IN         NUMBER,
12     p_event_class_rec   IN         ZX_API_PUB.event_class_rec_type,
13     p_structure_name    IN         VARCHAR2,
14     p_structure_index   IN         BINARY_INTEGER,
15     p_return_status     OUT NOCOPY VARCHAR2,
16     p_error_buffer      OUT NOCOPY VARCHAR2);
17 
18 ------------------------------------------------------------------------------
19 --  PUBLIC PROCEDURE
20 --   get_taxable_basis
21 --
22 --  DESCRIPTION
23 --   This is the main procedure in this package.
24 --   This procedure is used to calculate taxable basis for for all tax lines
25 --   belonging to a transaction line (indicated by p_begin_index and p_end_index)
26 ------------------------------------------------------------------------------
27 
28 PROCEDURE Get_taxable_basis (
29             p_begin_index          IN    NUMBER,
30             p_end_index            IN    NUMBER,
31             p_event_class_rec      IN    ZX_API_PUB.event_class_rec_type,
32             p_structure_name       IN    VARCHAR2,
33             p_structure_index      IN    BINARY_INTEGER,
34             p_return_status        OUT   NOCOPY VARCHAR2,
35             p_error_buffer         OUT   NOCOPY VARCHAR2)
36 IS
37   l_taxable_basis_rule_flag    ZX_TAXES_B.TAXABLE_BASIS_RULE_FLAG%TYPE;
38   l_def_formula                VARCHAR(30);
39   l_formula_from_rate          VARCHAR(30);
40   l_formula_code               VARCHAR2(30);
41   l_formula_id                 NUMBER;
42   l_line_amt                   NUMBER;
43   l_discount_amt               NUMBER;
44   l_source                     NUMBER;
45   l_sum_basiscoef              NUMBER;
46   l_sum_basiscoef_qua          NUMBER;
47   l_sum_constcoef              NUMBER;
48   l_tax_id                     NUMBER;
49   l_tax_rate_id                ZX_RATES_B.TAX_RATE_ID%TYPE;
50   l_compounding_tax_id         NUMBER;
51   l_zx_result_rec              ZX_PROCESS_RESULTS%ROWTYPE;
52   l_perc_discount              NUMBER;
53   l_common_comp_base           NUMBER;
54   l_compounding_tax            VARCHAR2(30);
55   l_cpdg_tax_regime_code       VARCHAR2(30);
56   l_compounding_type_code      VARCHAR2(30);
57   l_compounding_factor         NUMBER;
58   l_tax_date                   DATE;
59   l_formula_type_code          ZX_FORMULA_B.FORMULA_TYPE_CODE%TYPE;
60   l_taxable_basis_type_code    ZX_FORMULA_B.TAXABLE_BASIS_TYPE_CODE%TYPE;
61   l_base_rate_modifier         ZX_FORMULA_B.BASE_RATE_MODIFIER%TYPE;
62   l_cash_discount_appl_flag    ZX_FORMULA_B.CASH_DISCOUNT_APPL_FLAG%TYPE;
63   l_volume_discount_appl_flag  ZX_FORMULA_B.VOLUME_DISCOUNT_APPL_FLAG%TYPE;
64   l_trading_discount_appl_flag ZX_FORMULA_B.TRADING_DISCOUNT_APPL_FLAG%TYPE;
65   l_transfer_charge_appl_flag  ZX_FORMULA_B.TRANSFER_CHARGE_APPL_FLAG%TYPE;
66   l_trans_chrg_appl_flg        ZX_FORMULA_B.TRANSPORT_CHARGE_APPL_FLAG%TYPE;
67   l_insurance_charge_appl_flag ZX_FORMULA_B.INSURANCE_CHARGE_APPL_FLAG%TYPE;
68   l_other_charge_appl_flag     ZX_FORMULA_B.OTHER_CHARGE_APPL_FLAG%TYPE;
69   l_enforce_compounding_flag   ZX_FORMULA_DETAILS.ENFORCE_COMPOUNDING_FLAG%TYPE;
70   l_allow_adhoc_tax_rate_flag  VARCHAR2(1);
71   l_adj_for_adhoc_amt_code     ZX_RATES_B.ADJ_FOR_ADHOC_AMT_CODE%TYPE;
72   l_tax_determine_date         DATE;
73   l_tax_rec                    ZX_TDS_UTILITIES_PKG.ZX_TAX_INFO_CACHE_REC;
74   l_tax_rate_rec               ZX_TDS_UTILITIES_PKG.ZX_RATE_INFO_REC_TYPE;
75 
76   TYPE parameter_rec IS RECORD (
77     tax_id                    NUMBER,
78     formula_code              VARCHAR(30),
79     incl_indicator            NUMBER,
80     weird_indicator           NUMBER,
81     composite_incl_indicator  NUMBER,
82     base_rate_modifier        NUMBER,
83     discount                  NUMBER,
84     tax_rate                  NUMBER,
85     tax_amt                   NUMBER,
86     taxable_amt               NUMBER,
87     compounding_flg           VARCHAR(1),
88     compounding_dep_flg       VARCHAR(1),
89     basiscoef                 NUMBER,
90     constcoef                 NUMBER,
91     taxable_basis_type_code   ZX_FORMULA_B.TAXABLE_BASIS_TYPE_CODE%TYPE,
92     overrideconst             NUMBER );
93 
94   TYPE parameter_tbl_type IS TABLE OF parameter_rec INDEX BY BINARY_INTEGER;
95   parameter_tbl parameter_tbl_type;
96 
97   CURSOR getFormulaInfoH(c_formula_code IN VARCHAR2,
98                          c_tax_date     IN DATE) IS
99     SELECT formula_id,
100            formula_type_code,
101            taxable_basis_type_code,
102            base_rate_modifier,
103            cash_discount_appl_flag,
104            volume_discount_appl_flag,
105            trading_discount_appl_flag,
106            transfer_charge_appl_flag,
107            transport_charge_appl_flag,
108            insurance_charge_appl_flag,
109            other_charge_appl_flag
110       FROM zx_sco_formula
111      WHERE formula_code = c_formula_code
112        AND effective_from <= c_tax_date
113        AND (effective_to >= c_tax_date OR
114             effective_to IS NULL )
115        AND enabled_flag = 'Y';
116 
117   CURSOR getFormulaInfoD(c_formula_id IN NUMBER) IS
118     SELECT compounding_tax,
119            compounding_tax_regime_code,
120            compounding_type_code,
121            enforce_compounding_flag
122       FROM zx_formula_details
123      WHERE formula_id = c_formula_id;
124 
125   /* Bug#5395227 -- use cache structure
126   CURSOR getTaxId(c_tax VARCHAR2,
127                   c_tax_regime_code VARCHAR2) IS
128     SELECT tax_id FROM ZX_SCO_TAXES
129      WHERE tax = c_tax
130        AND tax_regime_code = c_tax_regime_code;
131   */
132 
133   CURSOR getAdhocInfo (c_tax_rate_id IN NUMBER) IS
134     SELECT NVL(ADJ_FOR_ADHOC_AMT_CODE,'TAXABLE_BASIS'),
135            NVL(ALLOW_ADHOC_TAX_RATE_FLAG, 'N')
136       FROM ZX_RATES_B
137      WHERE TAX_RATE_ID = c_tax_rate_id;
138 
139   CURSOR get_formula_code_from_rate_csr(
140            c_tax_rate_id  ZX_RATES_B.TAX_RATE_ID%TYPE) IS
141     SELECT taxable_basis_formula_code
142       FROM zx_rates_b
143      WHERE tax_rate_id = c_tax_rate_id;
144 
145 BEGIN
146   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
147 
148   IF (g_level_procedure >= g_current_runtime_level ) THEN
149     FND_LOG.STRING(g_level_procedure,
150                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.BEGIN',
151                    'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (+)');
152   END IF;
153 
154   p_return_status:= FND_API.G_RET_STS_SUCCESS;
155 
156   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
157             p_structure_index) IS NOT NULL  THEN
158     IF (g_level_procedure >= g_current_runtime_level ) THEN
159       FND_LOG.STRING(g_level_procedure,
160                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
161                      'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)'||
162                      ' Skip processing for credit memo');
163     END IF;
164     RETURN;
165   END IF;
166 
167   l_sum_basiscoef      := 1;
168   l_sum_basiscoef_qua  := 0;
169   l_sum_constcoef      := 0;
170 
171   -- Bug#5520167- get line amt from trx line
172   --l_line_amt:= ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_begin_index).line_amt;
173    l_line_amt:= ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_structure_index);
174 
175   IF p_begin_index IS NULL OR p_end_index IS NULL THEN
176     p_return_status:= FND_API.G_RET_STS_UNEXP_ERROR;
177     IF (g_level_procedure >= g_current_runtime_level) THEN
178       FND_LOG.STRING(g_level_procedure,
179                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
180                      'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)'||
181                      ' Error: begin index or end index is null');
182     END IF;
183     RETURN;
184   END IF;
185 
186   IF (g_level_statement >= g_current_runtime_level) THEN
187      FND_LOG.STRING(g_level_statement,
188                     'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
189                     'Starting Loop for Building multipliers ...');
190   END IF;
191 
192   FOR i IN p_begin_index..p_end_index LOOP
193 
194     IF (g_level_statement >= g_current_runtime_level) THEN
195       FND_LOG.STRING(g_level_statement,
196                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
197                      'Processing Tax Line '||TO_CHAR(i));
198     END IF;
199     -- Added Condition for Bug#12884787 to skip processing for cancel tax lines
200     IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).cancel_flag,'N') = 'Y'
201     THEN
202       IF (g_level_statement >= g_current_runtime_level) THEN
203         FND_LOG.STRING(g_level_statement,
204                        'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
205                        'Canceled Tax Line ... Do Nothing.');
206       END IF;
207       NULL;
208 
209     ELSIF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'REFERENCE' AND
210        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt = 0 AND
211        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt = 0 AND
212        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag = 'Y' AND
213        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).freeze_until_overridden_flag ='Y'
214     THEN
215       IF (g_level_statement >= g_current_runtime_level) THEN
216         FND_LOG.STRING(g_level_statement,
217                        'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
218                        'Zero Amount Reference Tax Line ... Do Nothing.');
219       END IF;
220       NULL;
221 
222     ELSE
223       l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_id;
224       l_tax_rate_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_id;
225       l_tax_date := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_date;
226       l_tax_determine_date := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date;
227       l_taxable_basis_rule_flag := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).Taxable_Basis_Rule_Flag;
228       l_def_formula := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).def_taxable_basis_formula;
229 
230       -- Do not re-determine tax_amt_included_flag if
231       -- bug 5391331: tax_amt_included_flag is overridden
232       -- bug 5391084: manual tax line
233       --
234       -- changed the following condition out for bug 5525890 and bug 5525816
235       -- Commented the code for Bug 7438875 to populate inclusive flag even if last_manual_entry is set to TAX_AMOUNT
236       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
237                                      i).orig_tax_amt_included_flag IS NULL AND
238          NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
239                                      i).manually_entered_flag, 'N') ='N'
240          -- (
241          -- NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
242          --                            i).last_manual_entry, 'X') <> 'TAX_AMOUNT'
243          -- OR
244          -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_hdr_tx_amt(p_structure_index) is not null
245          -- OR
246          -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_line_tx_amt(p_structure_index) is not null
247          -- )
248       THEN
249         -- populate inclusive_tax_flag by calling populate_inclusive_tax_flag
250         --
251         populate_inclusive_tax_flag (
252                          p_tax_line_index    => i,
253                          p_event_class_rec   => p_event_class_rec,
254                          p_structure_name    => p_structure_name,
255                          p_structure_index   => p_structure_index,
256                          p_return_status     => p_return_status,
257                          p_error_buffer      => p_error_buffer);
258 
259         IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
260           IF (g_level_statement>= g_current_runtime_level ) THEN
261             FND_LOG.STRING(g_level_statement,
262                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
263                    'Incorrect return_status after calling ' ||
264                    'ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag');
265             FND_LOG.STRING(g_level_statement,
266                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
267                    'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
268           END IF;
269           RETURN;
270         END IF;
271       END IF;
272 
273       -- Do not calculate taxes for those lines where tax_provider_id is not null
274       -- Provider services will calculate taxes for these lines
275 
276       -- Do not calculate tax for those lines which are copied from reference
277       -- document and which also have Freeze_Until_Overridden_Flag = Y. These are
278       -- the manual tax lines on reference document not found applicable on the
279       -- current document. Hiwever, if Freeze_Until_Overridden_Flag is 'Y' and the
280       -- tax event type is OVERRIDE, then taxable amount should be calculated.
281 
282       -- In case of override, only process those tax lines which need
283       -- to be recalculated. i.e.in case of inclusive or compounded taxes only,
284       -- we should recalculate all taxes, otherwise only recalculate taxes which
285       -- have recalculate_tax_flg ='Y'
286 
287       CASE
288         -- 1
289         WHEN (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).recalc_required_flag <> 'Y' AND
290               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX')
291              OR
292              (NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry, 'X') = 'TAX_AMOUNT')
293              OR
294              (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'APPLIED_FROM' AND
295               ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).applied_amt_handling_flag = 'P')
296         THEN
297 
298           IF (g_level_statement >= g_current_runtime_level ) THEN
299             FND_LOG.STRING(g_level_statement,
300                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
301                            'Case 1 ... Building multipliers');
302           END IF;
303 
304           --  RECALC_REQUIRED_FLAG will be populated by tax lines Determination
305           --  table handler when the user overrides one or more tax lines. (When the
306           --  line being overridden is inclusive or used to compound other taxes,
307           --  then this flag will be set to 'Y' for all the tax lines belonging to
308           --  the current transaction line)  If the value of RACALC_REQUIRED_FLAG = 'N'
309           --  then skip the process and only perform population of relevant Tax Rate
310           --  Determination columns into detail tax lines structure.
311 
312           -- NULL;
313 
314           -- Bug 3560223: populate parameter_tbl for compounding tax and
315           -- inclusive tax
316           --
317           parameter_tbl(l_tax_id).tax_id := l_tax_id;
318           parameter_tbl(l_tax_id).tax_rate :=
319                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate;
320           parameter_tbl(l_tax_id).formula_code :=
321                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula;
322 
323           IF (g_level_statement >= g_current_runtime_level) THEN
324             FND_LOG.STRING(g_level_statement,
325                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
326                            'parameter_tbl('||TO_CHAR(l_tax_id)||').formula_code : '||
327                            parameter_tbl(l_tax_id).formula_code);
328           END IF;
329 
330           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_amt_included_flag = 'S'
331           THEN
332             parameter_tbl(l_tax_id).weird_indicator:= 1;
333             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
334                                                     i).tax_amt_included_flag := 'Y';
335           ELSE
336             parameter_tbl(l_tax_id).weird_indicator:= 0;
337           END IF;
338 
339           IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
340                                                   p_structure_index) = 'I' OR
341              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
342                                                   i).tax_amt_included_flag = 'Y'
343           THEN
344             parameter_tbl(l_tax_id).incl_indicator:= 1;
345           ELSE
346             parameter_tbl(l_tax_id).incl_indicator:= 0;
347           END IF;
348 
349           IF (g_level_statement >= g_current_runtime_level ) THEN
350             FND_LOG.STRING(g_level_statement,
351                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
352                            'parameter_tbl('||TO_CHAR(l_tax_id)||').incl_indicator:= ' ||
353                             parameter_tbl(l_tax_id).incl_indicator||
354                            ', weird_indicator:= ' ||
355                             parameter_tbl(l_tax_id).weird_indicator);
356           END IF;
357 
358           parameter_tbl(l_tax_id).composite_incl_indicator :=
359                    parameter_tbl(l_tax_id).incl_indicator -
360                             parameter_tbl(l_tax_id).weird_indicator;
361 
362           parameter_tbl(l_tax_id).basiscoef:= 0;
363           parameter_tbl(l_tax_id).constcoef:= 0;
364           parameter_tbl(l_tax_id).overrideconst:=
365           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt;
366 
367           -- l_sum_basiscoef:= l_sum_basiscoef + parameter_tbl(l_tax_id).composite_incl_indicator *
368           --                  parameter_tbl(l_tax_id).basiscoef * parameter_tbl(l_tax_id).tax_rate / 100;
369 
370           l_sum_constcoef:= l_sum_constcoef + parameter_tbl(l_tax_id).composite_incl_indicator *
371                             parameter_tbl(l_tax_id).constcoef * parameter_tbl(l_tax_id).tax_rate /100
372                           + parameter_tbl(l_tax_id).composite_incl_indicator *
373                             parameter_tbl(l_tax_id).overrideconst;
374 
375           IF (g_level_statement >= g_current_runtime_level ) THEN
376             FND_LOG.STRING(g_level_statement,
377                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
378                            ' sum_basiscoef: ' || l_sum_basiscoef||
379                            ' sum_constcoef: ' || l_sum_constcoef);
380           END IF;
381 
382         -- 2
383         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_provider_id is NOT NULL OR
384              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Delete_Flag = 'Y'
385         THEN
386 
387           IF (g_level_statement >= g_current_runtime_level ) THEN
388             FND_LOG.STRING(g_level_statement,
389                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
390                            'Case 2 ... Do Nothing');
391           END IF;
392 
393           -- Do not perform taxable basis determination for provider calculated lines. Taxes
394           -- calculated by providers cannot be compounded by taxes calculated by eTax and
395           -- vice versa. Also, do not process tax lines which are marked for deletion.
396           NULL;
397 
398         -- 3
399         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).OTHER_DOC_SOURCE ='ADJUSTED' AND
400              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code <> 'OVERRIDE_TAX' AND
401              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(p_structure_index) <> 'INTERCOMPANY_TRX' --Bug 10162888
402         THEN
403 
404           IF (g_level_statement >= g_current_runtime_level ) THEN
405             FND_LOG.STRING(g_level_statement,
406                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
407                            'Case 3 ... Do Nothing');
408           END IF;
409 
410           -- In case when the tax line is copied from 'Applied From' or 'Adjusted' Document,
411           -- Applicability process will copy Tax Regime, Tax, Status, Rate, Place of Supply,
412           -- Reg. Number, Offset tax columns  from original document. in this case,
413           -- taxable amount will be a proration and no need to calculate multipliers for
414           -- this tax line.
415           NULL;
416 
417         --WHEN
418         --  (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' AND
419         --   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry = 'TAX_AMOUNT')
420         --THEN
421         --  In case of an override event on tax line, where the user has overridden tax amount,
422         --  we need not calculate multiplier for that tax line, the taxable amount will be
423         --  computed as tax amount / tax rate in the next loop.
424         --NULL;
425 
426         -- 4
427         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).COPIED_FROM_OTHER_DOC_FLAG = 'Y' AND
428              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Manually_Entered_Flag = 'Y' AND
429              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).OTHER_DOC_SOURCE = 'REFERENCE'
430         THEN
431 
432           IF (g_level_statement >= g_current_runtime_level ) THEN
433             FND_LOG.STRING(g_level_statement,
434                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
435                            'Case 4 ... Do Nothing');
436           END IF;
437 
438           -- When a manual tax line is copied from reference document, the Tax Regime, Tax, Status, Rate,
439           -- and other columns are copied from manual tax line in reference document as well. in this
440           -- case, the taxable amount will be computed as a percentage of taxable amount on reference
441           -- document. So no need to calculate multiplier for that tax line.
442 
443           -- Condition Other_Doc_Source = 'REFERENCE' added as a fix of bug#6891479
444           NULL;
445 
446         -- Comment out for bug fix 3391186
447         --WHEN
448         --   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag = 'Y' AND
449         --     ( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Overridden_Flag <> 'Y'
450         --       OR
451         --       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).COPIED_FROM_OTHER_DOC_FLAG = 'Y' )
452         --THEN
453 
454         -- 5
455         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag = 'Y' AND
456              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Overridden_Flag <> 'Y'
457         THEN
458 
459           IF (g_level_statement >= g_current_runtime_level ) THEN
460             FND_LOG.STRING(g_level_statement,
461                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
462                            'Case 5 ... Do Nothing');
463           END IF;
464 
465           -- When the transaction is matched to a reference document, and if a tax
466           -- that was applicable on the reference document is not found applicable
467           -- during applicability process, the tax line from the reference document
468           -- is copied, but the tax rate, status, amounts are populated as zero,
469           -- until the user views that tax line and overrides it. So skip taxable basis determination
470           -- in this case.
471           NULL;
472 
473         -- 6
474         WHEN (NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag,'N') <> 'Y' OR
475               NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).COPIED_FROM_OTHER_DOC_FLAG,'N') <> 'Y')
476              OR
477              (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'APPLIED_FROM' AND
478               ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).applied_amt_handling_flag = 'R')
479              OR
480              (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' AND
481               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Recalc_Required_Flag = 'Y' AND
482               -- Bug fix 5525890
483               NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry,'X') <> 'TAX_AMOUNT')
484         THEN
485 
486           IF (g_level_statement >= g_current_runtime_level ) THEN
487             FND_LOG.STRING(g_level_statement,
488                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
489                            'Case 6 ... Building multipliers');
490           END IF;
491 
492           -- Initialize compounding_dep_tax_flag and compounding_tax_miss_flag
493           --
494           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).compounding_dep_tax_flag := 'N';
495           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).compounding_tax_miss_flag := 'N';
496 
497           --   In case of manual tax lines or override with last manual entry
498           --   of tax_amount, calculate the taxable amount based on tax amount
499           --   and line amount and not using the evaluation loop.
500 
501           --   In case of copied from reference document, prorate the taxable
502           --   amount based on the other_doc_tax_amt and other_doc_line_amt
503 
504           --   hence the above cases are excluded from this loop
505 
506           IF nvl(l_Taxable_Basis_Rule_Flag,'N') = 'Y'  THEN
507             ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process(
508                'DET_TAXABLE_BASIS',
509                p_structure_name,
510                p_structure_index,
511                p_event_class_rec,
512                l_tax_id,
513                NULL,
514                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date,
515                NULL,
516                NULL,
517                l_zx_result_rec,
518                p_return_status,
519                p_error_buffer);
520 
521             IF l_zx_result_rec.alphanumeric_result IS NOT NULL THEN
522               l_formula_code:= l_zx_result_rec.alphanumeric_result;
523               IF (g_level_statement >= g_current_runtime_level ) THEN
524                 FND_LOG.STRING(g_level_statement,
525                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
526                                'Get Formula code from rule_base_process : '|| l_formula_code);
527               END IF;
528             ELSE
529               --use cache
530               --OPEN get_formula_code_from_rate_csr(l_tax_rate_id);
531               --FETCH get_formula_code_from_rate_csr INTO l_formula_from_rate;
532               --CLOSE get_formula_code_from_rate_csr;
533 
534               ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
535                          p_tax_rate_id   => l_tax_rate_id,
536                          p_tax_rate_rec  => l_tax_rate_rec,
537                          p_return_status => p_return_status,
538                          p_error_buffer  => p_error_buffer);
539 
540               l_formula_from_rate := l_tax_rate_rec.taxable_basis_formula_code;
541 
542               IF l_formula_from_rate IS NOT NULL THEN
543                 l_formula_code:= l_formula_from_rate;
544                 IF (g_level_statement >= g_current_runtime_level ) THEN
545                   FND_LOG.STRING(g_level_statement,
546                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
547                                  'Get Formula code from tax rate : '||l_formula_code);
548                 END IF;
549               ELSE
550                 l_formula_code:= l_def_formula;
551                 IF (g_level_statement >= g_current_runtime_level ) THEN
552                   FND_LOG.STRING(g_level_statement,
553                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
554                                  'Get Default Formula code from tax : '||l_formula_code);
555                 END IF;
556               END IF;
557             END IF;
558 
559             l_formula_id:= l_zx_result_rec.numeric_result;
560 
561             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).basis_result_id:= l_zx_result_rec.result_id;
562             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).legal_message_basis:=
563                           ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_zx_result_rec.result_id,
564                                                                        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_date);
565 
566           ELSE
567             --use cache
568             --OPEN get_formula_code_from_rate_csr(l_tax_rate_id);
569             --FETCH get_formula_code_from_rate_csr INTO l_formula_from_rate;
570             --CLOSE get_formula_code_from_rate_csr;
571 
572             ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
573                          p_tax_rate_id   => l_tax_rate_id,
574                          p_tax_rate_rec  => l_tax_rate_rec,
575                          p_return_status => p_return_status,
576                          p_error_buffer  => p_error_buffer);
577 
578             l_formula_from_rate := l_tax_rate_rec.taxable_basis_formula_code;
579 
580             IF l_formula_from_rate IS NOT NULL THEN
581               l_formula_code := l_formula_from_rate;
582               IF (g_level_statement >= g_current_runtime_level ) THEN
583                 FND_LOG.STRING(g_level_statement,
584                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
585                                'Get Formula code from tax rate : '|| l_formula_code);
586               END IF;
587             ELSE
588               l_formula_code:= l_def_formula;
589               IF (g_level_statement >= g_current_runtime_level ) THEN
590                 FND_LOG.STRING(g_level_statement,
591                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
592                                'Get Default Formula code from tax : '|| l_formula_code);
593               END IF;
594             END IF;
595           END IF;
596 
597           --Bug 8517610
598           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'APPLIED_FROM' AND
599              l_formula_code IS NULL
600           THEN
601             l_formula_code := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula;
602           END IF;
603 
604           IF l_formula_code IS NULL THEN
605             p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
606             IF (g_level_error >= g_current_runtime_level ) THEN
607               FND_LOG.STRING(g_level_error ,
608                              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
609                              'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)'||
610                              ' Error: can not determine formula code');
611             END IF;
612             RETURN;
613           END IF;
614 
615           parameter_tbl(l_tax_id).tax_id:= l_tax_id;
616           parameter_tbl(l_tax_id).tax_rate:= ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate;
617           parameter_tbl(l_tax_id).formula_code:= l_formula_code;
618 
619           IF (g_level_statement >= g_current_runtime_level) THEN
620             FND_LOG.STRING(g_level_statement,
621                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
622                            'parameter_tbl('||TO_CHAR(l_tax_id)||').formula_code : '||
623                            parameter_tbl(l_tax_id).formula_code);
624           END IF;
625 
626           -- This is the end of getting formula code
627 
628           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Tax_Amt_Included_Flag = 'S' THEN
629             parameter_tbl(l_tax_id).weird_indicator:= 1;
630             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
631                                                   i).tax_amt_included_flag := 'Y';
632           ELSE
633             parameter_tbl(l_tax_id).weird_indicator:= 0;
634           END IF;
635 
636           IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
637                                                 p_structure_index) = 'I' OR
638              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
639                                                 i).tax_amt_included_flag = 'Y'
640           THEN
641             parameter_tbl(l_tax_id).incl_indicator:= 1;
642           ELSE
643             parameter_tbl(l_tax_id).incl_indicator:= 0;
644           END IF;
645 
646           IF (g_level_statement >= g_current_runtime_level ) THEN
647             FND_LOG.STRING(g_level_statement,
648                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
649                            'parameter_tbl('||TO_CHAR(l_tax_id)||').incl_indicator:= ' ||
650                             parameter_tbl(l_tax_id).incl_indicator||
651                            ', weird_indicator:= ' ||
652                             parameter_tbl(l_tax_id).weird_indicator);
653           END IF;
654 
655           parameter_tbl(l_tax_id).composite_incl_indicator:=
656                    parameter_tbl(l_tax_id).incl_indicator -
657                             parameter_tbl(l_tax_id).weird_indicator;
658 
659 
660           parameter_tbl(l_tax_id).basiscoef:= 1;
661           parameter_tbl(l_tax_id).constcoef:= 0;
662           parameter_tbl(l_tax_id).overrideconst:= 0;
663 
664           IF l_formula_code IN ('STANDARD_TB', 'STANDARD_QUANTITY') THEN
665             -- When formula code is STANDARD_TB, the rate type should be PERCENT.
666             -- When formula code is STANDARD_QUANTITY, the rate type should be QUANTITY. Otherwise
667             -- multiplying taxable basis by tax rate will give incorrect result.
668             IF (l_formula_code = 'STANDARD_TB' AND
669                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type <> 'PERCENTAGE')
670                -- Added following condition for bug fix 5481559
671                OR
672                (l_formula_code = 'STANDARD_QUANTITY' AND
673                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type <> 'QUANTITY')
674             THEN
675               p_return_status:= FND_API.G_RET_STS_ERROR;
676               FND_MESSAGE.SET_NAME('ZX','ZX_RATE_FORMULA_MISMATCH');
677               FND_MESSAGE.SET_TOKEN('RATE_TYPE',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type);
678               FND_MESSAGE.SET_TOKEN('TAX',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax );
679               FND_MESSAGE.SET_TOKEN('TAXABLE_BASIS_TYPE', NVL(l_Taxable_Basis_Type_Code, 'PERCENTAGE') );
680               FND_MESSAGE.SET_TOKEN('FORMULA_CODE', l_formula_code );
681 
682               ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
683                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_id;
684               ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
685                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_level_type;
686 
687               ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
688 
689               IF (g_level_error >= g_current_runtime_level ) THEN
690                 FND_LOG.STRING(g_level_error ,
691                       'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
692                       'Taxable basis type and tax Rate Type do not match ');
693                 FND_LOG.STRING(g_level_error,
694                       'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
695                       'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
696               END IF;
697               RETURN;
698             END IF;
699 
700             -- When formula code is STANDARD_TB then no discounts or charges are
701             -- applicable. Base rate modifier is set to 1
702             parameter_tbl(l_tax_id).discount:= 0;
703             parameter_tbl(l_tax_id).base_rate_modifier:= 1;
704 
705             -- IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry = 'TAX_AMOUNT'
706             --    AND ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' THEN
707             --
708             -- This is a case where user has overridden tax amt on the tax engine
709             -- calculated tax. Hence do not apply taxable basis formula again, but
710             -- only set the overrideconst to overriddne tax amt.
711             --
712             --   parameter_tbl(l_tax_id).basiscoef:= 0;
713             --   parameter_tbl(l_tax_id).constcoef:= 0;
714             --   parameter_tbl(l_tax_id).overrideconst:=
715             --             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt;
716             --
717             -- ELSE
718             --   parameter_tbl(l_tax_id).basiscoef:= 1;
719             --   parameter_tbl(l_tax_id).constcoef:= 0;
720             --   parameter_tbl(l_tax_id).overrideconst:= 0;
721             -- END IF;
722 
723           ELSIF l_formula_code <> 'STANDARD_QUANTITY' THEN
724 
725             OPEN getFormulaInfoH(l_formula_code,l_tax_date);
726             FETCH getFormulaInfoH
727              INTO l_formula_id,
728                   l_formula_type_code,
729                   l_taxable_basis_type_code,
730                   l_base_rate_modifier,
731                   l_cash_discount_appl_flag,
732                   l_volume_discount_appl_flag,
733                   l_trading_discount_appl_flag,
734                   l_transfer_charge_appl_flag,
735                   l_trans_chrg_appl_flg,
736                   l_insurance_charge_appl_flag,
737                   l_other_charge_appl_flag;
738 
739             IF getFormulaInfoH%NOTFOUND THEN
740               p_return_status:= FND_API.G_RET_STS_UNEXP_ERROR;  -- 8568734
741               IF (g_level_error >= g_current_runtime_level ) THEN
742                 FND_LOG.STRING(g_level_error,
743                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
744                                'Formula Info not found for formula code : ' || l_formula_code );
745                 FND_LOG.STRING(g_level_error,
746                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
747                                'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
748               END IF;
749             END IF;
750 
751             CLOSE getFormulaInfoH;
752 
753             IF (g_level_statement >= g_current_runtime_level ) THEN
754               FND_LOG.STRING(g_level_statement,
755                              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
756                              'Taxable Basis Type: '|| l_taxable_basis_type_code||
757                              ' Base Rate Modifier: '||l_base_rate_modifier||
758                              ' Cash_Discount_Appl_Flag: '||l_cash_discount_appl_flag||
759                              ' Volume_Discount_Appl_Flag: '||l_volume_discount_appl_flag||
760                              ' Trading_Discount_Appl_Flag: '||l_trading_discount_appl_flag||
761                              ' Transfer_Charge_Appl_Flag: '||l_transfer_charge_appl_flag||
762                              ' Trans_Chrg_Appl_Flag: '||l_trans_chrg_appl_flg||
763                              ' Insurance_Charge_Appl_Flag: '||l_insurance_charge_appl_flag||
764                              ' Other_Charge_Appl_Flag: '||l_other_charge_appl_flag);
765             END IF;
766 
767             parameter_tbl(l_tax_id).base_rate_modifier := 1 + nvl(l_base_rate_modifier,0)/100;
768             parameter_tbl(l_tax_id).Taxable_Basis_Type_Code := UPPER(l_taxable_basis_type_code);
769 
770             IF parameter_tbl(l_tax_id).Taxable_Basis_Type_Code <> 'ASSESSABLE_VALUE' THEN
771               -- When Taxable Basis Type is not QUANTITY but the rate type is QUANTITY
772               -- then error should be raised, otherwise the tax calculation result will be incorrect.
773               IF (parameter_tbl(l_tax_id).Taxable_Basis_Type_Code <> 'QUANTITY' AND
774                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type = 'QUANTITY')
775                  OR
776                  (parameter_tbl(l_tax_id).Taxable_Basis_Type_Code = 'QUANTITY' AND
777                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type <> 'QUANTITY')
778               THEN
779                 p_return_status:= FND_API.G_RET_STS_ERROR;
780                 FND_MESSAGE.SET_NAME('ZX','ZX_RATE_FORMULA_MISMATCH');
781                 FND_MESSAGE.SET_TOKEN('RATE_TYPE',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_type);
782                 FND_MESSAGE.SET_TOKEN('TAX',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax );
783                 FND_MESSAGE.SET_TOKEN('TAXABLE_BASIS_TYPE', parameter_tbl(l_tax_id).Taxable_Basis_Type_Code);
784                 FND_MESSAGE.SET_TOKEN('FORMULA_CODE', l_formula_code );
785 
786                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
787                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_id;
788                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
789                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_level_type;
790 
791                 ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
792 
793                 IF (g_level_error >= g_current_runtime_level ) THEN
794                   FND_LOG.STRING(g_level_error ,
795                         'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
796                         'Taxable basis type for Formula Code '||l_formula_code||
797                         ' and tax Rate Type QUANTITY do not match ');
798                   FND_LOG.STRING(g_level_error ,
799                       'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
800                       'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
801                 END IF;
802                 RETURN;
803               END IF;
804 
805               IF parameter_tbl(l_tax_id).Taxable_Basis_Type_Code = 'PRIOR_TAX' THEN
806                 parameter_tbl(l_tax_id).base_rate_modifier := 0;
807               END IF;
808 
809               l_discount_amt:= 0;
810 
811               IF l_cash_discount_appl_flag  = 'Y' THEN
812                 l_discount_amt:= l_discount_amt -
813                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.cash_discount(p_structure_index));
814               END IF;
815 
816               IF l_volume_discount_appl_flag  = 'Y' THEN
817                 l_discount_amt:= l_discount_amt -
818                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.volume_discount(p_structure_index));
819               END IF;
820 
821               IF l_trading_discount_appl_flag  = 'Y' THEN
822                 l_discount_amt:= l_discount_amt -
823                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trading_discount(p_structure_index));
824               END IF;
825 
826               IF l_transfer_charge_appl_flag  = 'Y' THEN
827                 l_discount_amt:= l_discount_amt +
828                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.transfer_charge(p_structure_index));
829               END IF;
830 
831               IF l_trans_chrg_appl_flg  = 'Y' THEN
832                 l_discount_amt:= l_discount_amt +
833                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.transportation_charge(p_structure_index));
834               END IF;
835 
836               IF l_insurance_charge_appl_flag  = 'Y' THEN
837                 l_discount_amt:= l_discount_amt +
838                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.insurance_charge(p_structure_index));
839               END IF;
840 
841               IF l_other_charge_appl_flag  = 'Y' THEN
842                 l_discount_amt:= l_discount_amt +
843                                      ABS(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.other_charge(p_structure_index));
844               END IF;
845 
846               IF (g_level_statement >= g_current_runtime_level ) THEN
847                 FND_LOG.STRING(g_level_statement,
848                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
849                                'Total discount or charge : '||NVL(l_discount_amt,0));
850               END IF;
851 
852               parameter_tbl(l_tax_id).discount:= nvl(l_discount_amt,0);
853               -- end of discount / charge
854 
855               --IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry = 'TAX_AMOUNT'
856               --   AND ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' THEN
857 
858               -- This is a case where user has overridden tax amt on the tax engine
859               -- calculated tax. Hence do not apply taxable basis formula again, but
860               -- only set the overrideconst to overridden tax amt.
861               --  parameter_tbl(l_tax_id).basiscoef:= 0;
862               --  parameter_tbl(l_tax_id).constcoef:= 0;
863               --  parameter_tbl(l_tax_id).overrideconst:=
864               --                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt;
865               --ELSE
866 
867               parameter_tbl(l_tax_id).basiscoef := parameter_tbl(l_tax_id).base_rate_modifier;
868               parameter_tbl(l_tax_id).constcoef := parameter_tbl(l_tax_id).discount;
869               parameter_tbl(l_tax_id).overrideconst := 0;
870 
871               IF (g_level_statement >= g_current_runtime_level ) THEN
872                 FND_LOG.STRING(g_level_statement,
873                                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
874                                'Basiscoef: ' ||parameter_tbl(l_tax_id).basiscoef ||
875                                ', Constcoef: ' ||parameter_tbl(l_tax_id).constcoef);
876               END IF;
877 
878               IF l_formula_id IS NULL THEN
879                 p_return_status:= FND_API.G_RET_STS_UNEXP_ERROR;
880                 IF (g_level_error >= g_current_runtime_level ) THEN
881                   FND_LOG.STRING(g_level_error ,
882                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
883                                  'Error : l_formula_id IS NULL ');
884                   FND_LOG.STRING(g_level_error ,
885                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
886                                  'p_return_status : ' || p_return_status);
887                   FND_LOG.STRING(g_level_error ,
888                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
889                                  'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
890                 END IF;
891                 RETURN;
892               END IF;
893 
894               OPEN getFormulaInfoD(l_formula_id);
895               FETCH getFormulaInfoD INTO l_compounding_tax,l_cpdg_tax_regime_code,
896                                          l_compounding_type_code, l_enforce_compounding_flag;
897 
898               WHILE getFormulaInfoD%found LOOP
899                 IF (g_level_statement >= g_current_runtime_level ) THEN
900                   FND_LOG.STRING(g_level_statement,
901                                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
902                                  ' Compounding tax: ' || l_compounding_tax||
903                                  ' Compounding tax regime code: ' || l_cpdg_tax_regime_code||
904                                  ' Compounding tax type: ' || l_Compounding_Type_Code);
905                 END IF;
906 
907                 -- set the compounding_dep_tax_flag here
908                 parameter_tbl(l_tax_id).compounding_dep_flg:= 'Y';
909 
910                 -- Bug#5395227- use cache structure
911                 -- OPEN getTaxId(l_compounding_tax, l_cpdg_tax_regime_code);
912                 -- FETCH getTaxId INTO l_compounding_tax_id;
913 
914                 -- Bug#5395227- replace getTaxId by the code below
915                 --
916                 -- init tax record for each new tax regime and tax
917                 --
918                 l_tax_rec            := NULL;
919                 l_compounding_tax_id := NULL;
920 
921                 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
922                         l_cpdg_tax_regime_code,
923                         l_compounding_tax,
924                         l_tax_determine_date,
925                         l_tax_rec,
926                         p_return_status,
927                         p_error_buffer);
928 
929                 IF p_return_status = FND_API.G_RET_STS_SUCCESS THEN
930                   l_compounding_tax_id := l_tax_rec.tax_id;
931                 END IF;
932 
933                 -- if getTaxID%notfound then
934                 IF l_compounding_tax_id IS NULL THEN
935                   p_return_status:= FND_API.G_RET_STS_ERROR;
936                   FND_MESSAGE.SET_NAME('ZX','ZX_COMPND_TAX_NOT_FOUND');
937                   FND_MESSAGE.SET_TOKEN('TAX',l_compounding_tax);
938                   FND_MESSAGE.SET_TOKEN('FORMULA_CODE',l_formula_code);
939                   FND_MESSAGE.SET_TOKEN('TRANSACTION_DATE',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date);
940 
941                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
942                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_id;
943                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
944                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_level_type;
945 
946                   ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
947 
948                   IF (g_level_error >= g_current_runtime_level ) THEN
949                     FND_LOG.STRING(g_level_error ,
950                                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
951                                    'Compounding_Tax_Id does not exist');
952                     FND_LOG.STRING(g_level_error ,
953                                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
954                                    'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
955                   END IF;
956                   RETURN;
957                 END IF;
958 
959                 IF (g_level_statement >= g_current_runtime_level ) THEN
960                   FND_LOG.STRING(g_level_statement,
961                              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
962                              ' Compounding_Tax_Id : ' || l_compounding_tax_id);
963                 END IF;
964                 -- CLOSE getTaxId;
965 
966                 IF parameter_tbl.EXISTS(l_compounding_tax_id) THEN
967 
968                   IF l_Compounding_Type_Code = 'ADD' THEN
969                     l_compounding_factor:= 1;
970                   ELSE
971                     l_compounding_factor:= -1;
972                   END IF;
973 
974                   -- Bug 8512848 - Adding the following condition for Quantity Based Taxes
975                   IF parameter_tbl(l_compounding_tax_id).formula_code = 'STANDARD_QUANTITY'
976                      AND l_line_amt <> 0 THEN -- Bug8840197
977                     FOR j IN p_begin_index..p_end_index LOOP
978                        IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(j).tax_id = to_char(l_compounding_tax_id) THEN
979 				                 l_source := j;
980                          EXIT;
981                        END IF;
982                     END LOOP;
983 
984                     parameter_tbl(l_tax_id).basiscoef :=
985                       parameter_tbl(l_tax_id).basiscoef +
986                         parameter_tbl(l_compounding_tax_id).basiscoef *
987                           (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_source).trx_line_quantity *
988                              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_source).tax_rate / l_line_amt) * l_compounding_factor;
989 
990                     parameter_tbl(l_tax_id).constcoef :=
991                       parameter_tbl(l_tax_id).constcoef +
992 			                  parameter_tbl(l_compounding_tax_id).constcoef *
993                           (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_source).trx_line_quantity *
994                              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_source).tax_rate / l_line_amt) * l_compounding_factor +
995                                parameter_tbl(l_compounding_tax_id).overrideconst * l_compounding_factor;
996                   ELSE
997                     parameter_tbl(l_tax_id).basiscoef :=
998                       parameter_tbl(l_tax_id).basiscoef +
999                         parameter_tbl(l_compounding_tax_id).basiscoef *
1000                           (parameter_tbl(l_compounding_tax_id).tax_rate /100) * l_compounding_factor;
1001 
1002                     parameter_tbl(l_tax_id).constcoef :=
1003                        parameter_tbl(l_tax_id).constcoef +
1004 			                   parameter_tbl(l_compounding_tax_id).constcoef *
1005 			                     (parameter_tbl(l_compounding_tax_id).tax_rate/100) * l_compounding_factor +
1006 			                        parameter_tbl(l_compounding_tax_id).overrideconst * l_compounding_factor;
1007                   END IF;
1008                   -- Bug 8512848 - End of Modification
1009 
1010                   -- Original Code Commented out bug 8512848
1011                   --parameter_tbl(l_tax_id).basiscoef:= parameter_tbl(l_tax_id).basiscoef +
1012                   --  parameter_tbl(l_compounding_tax_id).basiscoef *
1013                   --  (parameter_tbl(l_compounding_tax_id).tax_rate /100) * l_compounding_factor;
1014 
1015                   --parameter_tbl(l_tax_id).constcoef:= parameter_tbl(l_tax_id).constcoef +
1016                   -- parameter_tbl(l_compounding_tax_id).constcoef *
1017                   --  (parameter_tbl(l_compounding_tax_id).tax_rate/100) * l_compounding_factor +
1018                   --   parameter_tbl(l_compounding_tax_id).overrideconst * l_compounding_factor;
1019 
1020                   parameter_tbl(l_compounding_tax_id).compounding_flg:= 'Y';
1021 
1022                 ELSE  --l_compounding_tax_id not exists
1023                   -- bug fix 3282007: add the following IF condition handling.
1024                   IF l_enforce_compounding_flag = 'Y' THEN
1025                     p_return_status:= FND_API.G_RET_STS_ERROR;
1026                     FND_MESSAGE.SET_NAME('ZX','ZX_COMPND_TAX_NOT_FOUND');
1027                     FND_MESSAGE.SET_TOKEN('TAX',l_compounding_tax);
1028                     FND_MESSAGE.SET_TOKEN('FORMULA_CODE',l_formula_code);
1029                     FND_MESSAGE.SET_TOKEN('TRANSACTION_DATE',ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date);
1030 
1031                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
1032                        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_id;
1033                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
1034                        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_level_type;
1035 
1036                     ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
1037 
1038                     IF (g_level_error >= g_current_runtime_level ) THEN
1039                       FND_LOG.STRING(g_level_error,
1040                                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1041                                      'Either Tax ' || l_compounding_tax_id ||
1042                                      ' is not applicable or compounding precedence is wrong');
1043                       FND_LOG.STRING(g_level_error,
1044                                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis.END',
1045                                      'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
1046                     END IF;
1047                     RETURN;
1048                   ELSE
1049                     -- bug 3644541: set compounding_tax_miss_flag
1050                     --
1051                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1052                                             i).compounding_tax_miss_flag := 'Y';
1053                   END IF;
1054                 END IF; -- parameter_tbl.exists
1055 
1056                 FETCH getFormulaInfoD INTO l_compounding_tax,l_cpdg_tax_regime_code,
1057                                           l_compounding_type_code, l_enforce_compounding_flag;
1058               END LOOP;
1059 
1060               CLOSE getFormulaInfoD;
1061               --END IF;   -- last manual entry
1062             END IF;	-- taxable basis type code
1063           END IF; -- l_formula_code
1064 
1065           IF (g_level_statement >= g_current_runtime_level ) THEN
1066             FND_LOG.STRING(g_level_statement,
1067                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1068                            'Composite Indicator: '|| parameter_tbl(l_tax_id).composite_incl_indicator||
1069                            ', sum_basiscoef: ' || l_sum_basiscoef ||
1070                            ', sum_basiscoef_qua: ' || l_sum_basiscoef_qua);
1071           END IF;
1072 
1073           IF parameter_tbl(l_tax_id).formula_code = 'STANDARD_QUANTITY'
1074              AND l_line_amt <> 0 THEN
1075             l_sum_basiscoef_qua:= l_sum_basiscoef_qua +
1076                                   (parameter_tbl(l_tax_id).composite_incl_indicator
1077                                        * parameter_tbl(l_tax_id).basiscoef
1078                                        * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_quantity
1079                                        * parameter_tbl(l_tax_id).tax_rate
1080                                    );
1081             l_sum_constcoef:= l_sum_constcoef + parameter_tbl(l_tax_id).composite_incl_indicator *
1082                          parameter_tbl(l_tax_id).constcoef *
1083                          (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_quantity
1084                               * parameter_tbl(l_tax_id).tax_rate / l_line_amt)
1085                        + parameter_tbl(l_tax_id).composite_incl_indicator *
1086                          parameter_tbl(l_tax_id).overrideconst;
1087           ELSE
1088             l_sum_basiscoef:= l_sum_basiscoef + parameter_tbl(l_tax_id).composite_incl_indicator *
1089                          parameter_tbl(l_tax_id).basiscoef * parameter_tbl(l_tax_id).tax_rate / 100;
1090 
1091             l_sum_constcoef:= l_sum_constcoef + parameter_tbl(l_tax_id).composite_incl_indicator *
1092                          parameter_tbl(l_tax_id).constcoef * parameter_tbl(l_tax_id).tax_rate /100
1093                        + parameter_tbl(l_tax_id).composite_incl_indicator *
1094                          parameter_tbl(l_tax_id).overrideconst;
1095           END IF;
1096 
1097           IF (g_level_statement >= g_current_runtime_level ) THEN
1098             FND_LOG.STRING(g_level_statement,
1099                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1100                            'sum_basiscoef : ' || l_sum_basiscoef||
1101                            ' sum_constcoef : ' || l_sum_constcoef);
1102           END IF;
1103 
1104         ELSE  -- default case
1105           IF (g_level_statement >= g_current_runtime_level ) THEN
1106             FND_LOG.STRING(g_level_statement,
1107                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1108                            'Default Case ... Do Nothing');
1109           END IF;
1110           NULL;
1111 
1112       END CASE;
1113 
1114       IF p_return_status IN ( FND_API.G_RET_STS_ERROR, FND_API.G_RET_STS_UNEXP_ERROR) THEN
1115         EXIT;
1116       END IF;
1117 
1118     END IF;
1119   END LOOP;
1120 
1121   IF nvl(p_return_status, 'SUCCESS') <> FND_API.G_RET_STS_ERROR THEN
1122     IF l_line_amt - l_sum_basiscoef_qua <> 0 THEN
1123       l_common_comp_base := round((l_line_amt - l_sum_constcoef)
1124                                    / (l_sum_basiscoef *
1125                                        (1 + l_sum_basiscoef_qua
1126                                         / (l_line_amt - l_sum_basiscoef_qua)
1127                                        )
1128                                      ),20);
1129     ELSE
1130       l_common_comp_base := 0;
1131     END IF;
1132 
1133     IF (g_level_statement >= g_current_runtime_level ) THEN
1134       FND_LOG.STRING(g_level_statement,
1135                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1136                      'l_sum_basiscoef : ' || l_sum_basiscoef ||
1137                      ', l_sum_basiscoef_qua : '|| l_sum_basiscoef_qua);
1138       FND_LOG.STRING(g_level_statement,
1139                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1140                      'l_sum_constcoef : ' || l_sum_constcoef);
1141       FND_LOG.STRING(g_level_statement,
1142                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1143                      'l_common_comp_base : ' || l_common_comp_base);
1144       -- This complete the building of multipliers. Now update columns
1145       FND_LOG.STRING(g_level_statement,
1146                   'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1147                   'Building multipliers Completed.');
1148       FND_LOG.STRING(g_level_statement,
1149                   'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1150                   'Starting Loop for Updating columns ...');
1151     END IF;
1152 
1153     FOR i IN p_begin_index..p_end_index LOOP
1154       l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_id;
1155 
1156       -- Update the columns only for those lines which were not marked for
1157       -- deletion and which were not marked for claculation by providers
1158       -- and which are not manual tax lines copied from reference document.
1159 
1160       -- Even if Freeze_Until_Overridden_Flag is 'Y', if the tax event type is
1161       -- OVERRIDE, then taxable amount should be calculated.
1162 
1163       IF (g_level_statement >= g_current_runtime_level ) THEN
1164         FND_LOG.STRING(g_level_statement,
1165                        'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1166                        'Updating columns for Tax Line '||TO_CHAR(i));
1167       END IF;
1168 
1169       CASE
1170         -- 1
1171         -- Added Condition for Bug#12884787 to skip processing for cancel tax lines
1172         WHEN NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).cancel_flag,'N') = 'Y'
1173         THEN
1174           IF (g_level_statement >= g_current_runtime_level ) THEN
1175             FND_LOG.STRING(g_level_statement,
1176                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1177                            'Case 1 : Canceled Tax Line ... Do Nothing');
1178           END IF;
1179           NULL;
1180 
1181         -- 2
1182         -- Added Condition for Bug#10184087 to skip processing for zero amount ref tax lines
1183         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'REFERENCE' AND
1184              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt = 0 AND
1185              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt = 0 AND
1186              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag = 'Y' AND
1187              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).freeze_until_overridden_flag ='Y'
1188         THEN
1189           IF (g_level_statement >= g_current_runtime_level) THEN
1190             FND_LOG.STRING(g_level_statement,
1191                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1192                            'Case 2 : Zero Amount Reference Tax Line ... Do Nothing');
1193           END IF;
1194           NULL;
1195 
1196         -- 3
1197         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_provider_id IS NOT NULL OR
1198              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Delete_Flag = 'Y'
1199         THEN
1200           IF (g_level_statement >= g_current_runtime_level ) THEN
1201             FND_LOG.STRING(g_level_statement,
1202                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1203                            'Case 3 : Partner Tax Line ... Do Nothing');
1204           END IF;
1205           NULL;
1206 
1207         -- Following 2 CASE conditions were present in the upper loop but were missing here
1208         -- added code to do nothing in case of these 2 conditions for Bug#13579802
1209         -- 4
1210         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).OTHER_DOC_SOURCE ='ADJUSTED' AND
1211              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code <> 'OVERRIDE_TAX' AND
1212              ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(p_structure_index) <> 'INTERCOMPANY_TRX'
1213         THEN
1214           IF (g_level_statement >= g_current_runtime_level ) THEN
1215             FND_LOG.STRING(g_level_statement,
1216                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1217                            'Case 4 ... Do Nothing');
1218           END IF;
1219           NULL;
1220 
1221         -- 5
1222         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).COPIED_FROM_OTHER_DOC_FLAG = 'Y' AND
1223              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Manually_Entered_Flag = 'Y' AND
1224              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).OTHER_DOC_SOURCE = 'REFERENCE'
1225         THEN
1226           IF (g_level_statement >= g_current_runtime_level ) THEN
1227             FND_LOG.STRING(g_level_statement,
1228                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1229                            'Case 5 ... Do Nothing');
1230           END IF;
1231           NULL;
1232 
1233         -- 6
1234         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).OTHER_DOC_SOURCE = 'APPLIED_FROM' AND
1235              ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).applied_amt_handling_flag = 'P' AND
1236              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code <> 'OVERRIDE_TAX'
1237         THEN
1238           --  Proration Scenarios:
1239           --  In the following cases, taxable basis is not calculated using taxable
1240           --  basis formula, but proration is done based on reference / applied from
1241           --  adjusted to docs.
1242 
1243           --  1. XML Invoices with control total (for all taxes within the document):
1244           --     taxable basis determination prorates the taxable amount.
1245           --     This case is open and not yet finalized
1246           --
1247           --  2. Transaction line with Adjusted to/Applied from information:
1248           --     Taxable basis Determination proartes the taxable amount
1249           --     eg. payables credit memo, adjusted to a payables invoice
1250           --         payables invoice, applied from a prepayment
1251           --
1252           --  3. Imported summary tax lines with allocation link structure
1253           --     Taxable basis determination prorates the taxable amount
1254           --     (should we have tax event type called IMPORT to identify this ?
1255           --
1256           --  4. Tax amount overridden in the summary tax line through the User Interface
1257           --     Taxable basis determination calcuates the taxable amount as
1258           --         tax amount / tax rate
1259 
1260           IF (g_level_statement >= g_current_runtime_level ) THEN
1261             FND_LOG.STRING(g_level_statement,
1262                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1263                            'Case 6 ... Updating columns');
1264           END IF;
1265 
1266           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_line_amt <> 0 THEN
1267             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt:=
1268                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_line_taxable_amt *
1269                   (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).line_amt /
1270                       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_line_amt );
1271 
1272           ELSE   -- other_doc_line_amt = 0 OR IS NULL
1273             -- copy unrounded_taxable_amt from reference document
1274             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt :=
1275                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_line_taxable_amt;
1276           END IF;
1277 
1278         -- 7
1279         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag = 'Y' AND
1280              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Overridden_Flag <> 'Y'
1281         THEN
1282           -- Taxable amounts should have been set to zero in applicability process.
1283           -- hence no processing required here.
1284           IF (g_level_statement >= g_current_runtime_level ) THEN
1285             FND_LOG.STRING(g_level_statement,
1286                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1287                            'Case 7 ... Do Nothing');
1288           END IF;
1289           NULL;
1290 
1291         -- 8
1292         WHEN NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Delete_Flag,'N') <> 'Y' AND
1293              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_provider_id IS NULL AND
1294              (NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag,'N') <> 'Y' OR
1295               NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).COPIED_FROM_OTHER_DOC_FLAG,'N') <> 'Y')
1296              OR
1297              (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' AND
1298               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Recalc_Required_Flag = 'Y')
1299         THEN
1300           IF (g_level_statement >= g_current_runtime_level ) THEN
1301             FND_LOG.STRING(g_level_statement,
1302                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1303                            'Case 8 ... Updating columns');
1304           END IF;
1305 
1306           -- A migrated invoice can have 2 tax lines with same Regime and Tax
1307           -- 1 non-manual tax line with taxable_basis_formula STANDARD_TB and
1308           -- 1 manual tax line with taxable_basis_formula PRORATED_TB.
1309           -- Migrated Tax lines with same Regime and Tax will have same Tax_id
1310           -- so parameter_tbl(l_tax_id).formula_code can be populated with value
1311           -- PRORATED_TB by the upper loop.
1312           -- If the value of parameter_tbl(l_tax_id).formula_code (PRORATED_TB)
1313           -- is assigned to the taxable_basis_formula column of the migrated
1314           -- non-manual tax line, it will result in Unique Summary Constraint
1315           -- violation.
1316           --
1317           -- Added following IF condition for Bug#13536798 to make sure that
1318           -- (1) the value of parameter_tbl(l_tax_id).formula_code should be
1319           --     assigned to taxable_basis_formula only for the non-migrated
1320           --     tax lines because there cannot be more than one LIVE non-
1321           --     migratded tax lines for a particular Regime and Tax
1322           -- (2) the taxable_basis_formula of migrated tax lines should be
1323           --     retained
1324           IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).historical_flag,'N') <> 'Y'
1325           THEN
1326             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula
1327                                                              := parameter_tbl(l_tax_id).formula_code;
1328           END IF;
1329 
1330           IF (g_level_statement >= g_current_runtime_level ) THEN
1331             FND_LOG.STRING(g_level_statement,
1332                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1333                            'Taxable_Basis_formula : '||
1334                            ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula);
1335           END IF;
1336 
1337           IF parameter_tbl(l_tax_id).formula_code = 'STANDARD_QUANTITY'  THEN
1338             -- For quantity based taxes, the calculation is not performed using
1339             -- the regular calculation cycle. Hence calculate the taxable amt
1340             -- and tax amt for quantity based taxes.
1341             -- For quantity based taxes, taxable amt is set equal to quantity
1342             -- although the field name indicates it is amt.
1343 
1344             parameter_tbl(l_tax_id).taxable_amt:=
1345                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).trx_line_quantity;
1346 
1347             parameter_tbl(l_tax_id).tax_amt:=  parameter_tbl(l_tax_id).taxable_amt *
1348                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate; --Bug 5185614
1349 
1350           ELSIF parameter_tbl(l_tax_id).Taxable_Basis_Type_Code = 'ASSESSABLE_VALUE' then
1351             -- For ASSESSABLE_VALUE formula, the taxable amt is the line assessable value.
1352             parameter_tbl(l_tax_id).taxable_amt:=
1353                nvl(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).line_assessable_value,
1354                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).line_amt);
1355 
1356             parameter_tbl(l_tax_id).tax_amt:=  parameter_tbl(l_tax_id).taxable_amt *
1357                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate / 100;
1358 
1359           ELSE
1360             parameter_tbl(l_tax_id).taxable_amt:= l_common_comp_base *
1361                parameter_tbl(l_tax_id).basiscoef
1362                   +  parameter_tbl(l_tax_id).constcoef;
1363 
1364             parameter_tbl(l_tax_id).tax_amt:=  parameter_tbl(l_tax_id).taxable_amt *
1365                parameter_tbl(l_tax_id).tax_rate/100
1366                   +  parameter_tbl(l_tax_id).overrideconst;
1367 
1368           END IF;
1369 
1370           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry IS NULL OR
1371              ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry <> 'TAX_AMOUNT' THEN
1372 
1373             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt:= parameter_tbl(l_tax_id).taxable_amt;
1374             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt:= parameter_tbl(l_tax_id).tax_amt;
1375 
1376           ELSIF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry = 'TAX_AMOUNT' THEN
1377             -- bug 5237144:
1378             --  AND ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_event_type_code = 'OVERRIDE_TAX' THEN
1379 
1380             --OPEN getAdhocInfo(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_id);
1381             --FETCH getAdhocInfo into l_adj_for_adhoc_amt_code, l_allow_adhoc_tax_rate_flag;
1382             --IF getAdhocInfo%NOTFOUND THEN
1383             --  close getAdhocInfo;
1384             --  p_return_status := FND_API.G_RET_STS_ERROR;
1385             --  IF (g_level_error >= g_current_runtime_level ) THEN
1386             --    FND_LOG.STRING(g_level_error,
1387             --           'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1388             --           'No Data Found for tax_rate_code: '||
1389             --           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_code ||
1390             --           ' tax_rate_id: ' ||
1391             --           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_id  );
1392             --    FND_LOG.STRING(g_level_error,
1393             --           'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis.END',
1394             --           'ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis (-)');
1395             --  END IF;
1396             --  RETURN;
1397             --END IF;
1398             --CLOSE getAdhocInfo;
1399 
1400             ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
1401                          p_tax_rate_id   => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_id,
1402                          p_tax_rate_rec  => l_tax_rate_rec,
1403                          p_return_status => p_return_status,
1404                          p_error_buffer  => p_error_buffer);
1405 
1406             -- bug#7344499- return error to user when rate is not found
1407             IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1408               -- no rate found for the specify tax_rate_id
1409               RETURN;
1410             END IF;
1411 
1412             l_adj_for_adhoc_amt_code := nvl(l_tax_rate_rec.adj_for_adhoc_amt_code,'TAXABLE_BASIS');
1413             l_allow_adhoc_tax_rate_flag := nvl(l_tax_rate_rec.Allow_Adhoc_Tax_Rate_Flag,'N');
1414 
1415             IF (g_level_statement >= g_current_runtime_level ) THEN
1416               FND_LOG.STRING(g_level_statement,
1417                              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis',
1418                              'Adj_for_adhoc_amt_code : ' ||l_adj_for_adhoc_amt_code);
1419               FND_LOG.STRING(g_level_statement,
1420                              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis',
1421                              'Allow_adhoc_tax_rate_flag : ' ||l_allow_adhoc_tax_rate_flag);
1422             END IF;
1423 
1424             IF l_allow_adhoc_tax_rate_flag = 'N' OR
1425                (l_allow_adhoc_tax_rate_flag = 'Y' AND l_adj_for_adhoc_amt_code = 'TAXABLE_BASIS') OR
1426                NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag, 'N') = 'Y'
1427             THEN
1428               IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate <> 0 THEN
1429                 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_taxable_amt IS NULL THEN
1430                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_taxable_amt :=
1431                       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_amt;
1432                 END IF;
1433                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt:=
1434                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt /
1435     		            --Start Bug 7310806
1436 		                    ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate * 100;
1437                         --parameter_tbl(l_tax_id).tax_rate * 100;
1438                     --End Bug 7310806
1439 
1440                 -- ensuring that PRORATED_TB is set for manual tax lines.
1441                 IF  NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag,'N') = 'Y' THEN
1442                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula:= 'PRORATED_TB';
1443 
1444                   IF (g_level_statement >= g_current_runtime_level ) THEN
1445                     FND_LOG.STRING(g_level_statement,
1446                                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1447                                    'Manual Tax Line. Set Taxable_Basis_formula to '||
1448                                    ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).taxable_basis_formula);
1449                   END IF;
1450                 END IF;
1451 
1452               ELSE
1453                 -- when tax_rate = 0, unrounded_tax_amt = 0, do nothing.
1454                 -- Condition added for Bug#9436262
1455                 -- skip validation for historical_flag = 'Y', manually_entered_flag = 'Y'
1456                 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt <> 0
1457                    AND NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).historical_flag,'N') = 'Y'
1458                    AND NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag,'N') = 'Y' THEN
1459                   IF (g_level_statement >= g_current_runtime_level ) THEN
1460                     FND_LOG.STRING(g_level_statement,
1461                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis',
1462                            'Tax_Rate = 0, Unrounded_tax_amt <> 0, Historical_Flag = Y, '||
1463                            'Manually_entered_flag = Y. Skip Validation.');
1464                   END IF;
1465 
1466                 -- Error out when Tax_rate = 0, unrounded_tax_amt <> 0.
1467                 ELSIF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt <> 0 THEN
1468                   p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;   -- 8568734
1469                   IF (g_level_error >= g_current_runtime_level ) THEN
1470                     FND_LOG.STRING(g_level_error,
1471                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis',
1472                            'Tax_rate = 0, unrounded_tax_amt <> 0. ' ||
1473                            'Cannot calculate taxable basis amount.');
1474                     FND_LOG.STRING(g_level_error,
1475                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1476                            'p_return_status = ' || p_return_status);
1477                     FND_LOG.STRING(g_level_error,
1478                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis.END',
1479                            'ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis (-)');
1480                   END IF;
1481                   RETURN;
1482                 END IF;
1483               END IF;  -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate
1484 
1485             ELSIF (l_allow_adhoc_tax_rate_flag = 'Y' AND l_adj_for_adhoc_amt_code = 'TAX_RATE')
1486             THEN
1487               IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt <> 0 THEN
1488                 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_tax_rate IS NULL THEN
1489                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_tax_rate :=
1490                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate;
1491                 END IF;
1492 
1493                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate :=
1494                   ROUND(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt/
1495                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt*100, 6);
1496 
1497               ELSE
1498                 -- when Taxable_amt = 0, unrounded_tax_amt = 0, do nothing.
1499                 -- Error out when Taxable_amt = 0, unrounded_tax_amt <> 0.
1500                 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt <> 0 THEN
1501                   p_return_status := FND_API.G_RET_STS_ERROR;
1502                   IF (g_level_error >= g_current_runtime_level ) THEN
1503                     FND_LOG.STRING(g_level_error,
1504                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis',
1505                            'Taxable_amt = 0, unrounded_tax_amt <> 0. ' ||
1506                            'Cannot calculate tax rate.');
1507                     FND_LOG.STRING(g_level_error,
1508                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1509                            'p_return_status = ' || p_return_status);
1510                     FND_LOG.STRING(g_level_error,
1511                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis.END',
1512                            'ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis (-)');
1513                   END IF;
1514                   RETURN;
1515                 END IF;
1516 
1517               END IF;  -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt
1518             END IF;
1519 
1520           END IF;    -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).last_manual_entry
1521 
1522           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_base_modifier_rate:=
1523                        parameter_tbl(l_tax_id).base_rate_modifier;
1524           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Compounding_Tax_Flag:=
1525                        parameter_tbl(l_tax_id).compounding_flg;
1526           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Compounding_Dep_Tax_Flag:=
1527                        parameter_tbl(l_tax_id).compounding_dep_flg;
1528 
1529         -- 9
1530         WHEN ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).Freeze_Until_Overridden_Flag = 'Y' THEN
1531           IF (g_level_statement >= g_current_runtime_level ) THEN
1532             FND_LOG.STRING(g_level_statement,
1533                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1534                            'Case 9 ... Do Nothing');
1535           END IF;
1536           NULL;
1537 
1538         ELSE  -- default case
1539           IF (g_level_statement >= g_current_runtime_level ) THEN
1540             FND_LOG.STRING(g_level_statement,
1541                            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.Get_taxable_basis',
1542                            'Default Case ... Do Nothing');
1543           END IF;
1544           NULL;
1545 
1546       END CASE;
1547 
1548       -- polpulate tax_amt_included_flag and compounding_tax_flag in
1549       -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl
1550       --
1551       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1552                                              i).tax_amt_included_flag = 'Y' THEN
1553         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
1554                                                       p_structure_index) := 'Y';
1555       END IF;
1556 
1557       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1558                                              i).compounding_dep_tax_flag = 'Y' THEN
1559         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
1560                                                       p_structure_index) := 'Y';
1561       END IF;
1562 
1563     END LOOP;
1564   END IF;
1565 
1566   IF (g_level_procedure >= g_current_runtime_level ) THEN
1567     FND_LOG.STRING(g_level_procedure,
1568                   'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis.END',
1569                   'ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS (-)');
1570   END IF;
1571 
1572 EXCEPTION
1573   WHEN OTHERS THEN
1574     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1575     p_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1576 
1577     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1578       FND_LOG.STRING(g_level_unexpected,
1579                      'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.GET_TAXABLE_BASIS',
1580                      p_error_buffer);
1581     END IF;
1582 
1583 END get_taxable_basis;
1584 
1585 PROCEDURE populate_inclusive_tax_flag (
1586     p_tax_line_index   IN          NUMBER,
1587     p_event_class_rec  IN          ZX_API_PUB.event_class_rec_type,
1588     p_structure_name   IN          VARCHAR2,
1589     p_structure_index  IN          BINARY_INTEGER,
1590     p_return_status    OUT NOCOPY  VARCHAR2,
1591     p_error_buffer     OUT NOCOPY  VARCHAR2) IS
1592 
1593   l_inclusive_tax_flag      VARCHAR2(1);
1594   l_reg_party_type          zx_lines.registration_party_type%TYPE;
1595   l_ptp_id                  zx_party_tax_profile.party_tax_profile_id%TYPE;
1596   l_site_ptp_id             zx_party_tax_profile.party_tax_profile_id%TYPE;
1597 
1598   CURSOR get_inclusive_flag_from_rate(
1599          c_tax_rate_id        zx_rates_b.tax_rate_id%TYPE) IS
1600   SELECT inclusive_tax_flag
1601     FROM zx_rates_b
1602    WHERE tax_rate_id = c_tax_rate_id;
1603 
1604   CURSOR get_inclusive_flag_from_ptp(
1605          c_ptp_id         zx_party_tax_profile.party_tax_profile_id%TYPE) IS
1606   SELECT inclusive_tax_flag
1607     FROM zx_party_tax_profile
1608    WHERE party_tax_profile_id = c_ptp_id;
1609 
1610   l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
1611 
1612 BEGIN
1613 
1614   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1615 
1616   IF (g_level_procedure >= g_current_runtime_level ) THEN
1617     FND_LOG.STRING(g_level_procedure,
1618       'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag.BEGIN',
1619       'ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag (+)');
1620   END IF;
1621 
1622   p_return_status:= FND_API.G_RET_STS_SUCCESS;
1623 
1624   -- IF line_amt_includes_tax_flag is 'A'/'N', tax_amt_included_flag
1625   -- is 'Y'/'N'. If line_amt_includes_tax_flag IN ('S', 'I'), need to
1626   -- determine tax_amt_included_flag from tax rate/tax registration/
1627   -- PTP/Tax.
1628   --
1629   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
1630                                                    p_structure_index) = 'A'
1631   THEN
1632     --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1633     --                        p_tax_line_index).tax_amt_included_flag := 'Y';
1634     IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_structure_index) = 200
1635     AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_structure_index) = 'EXPENSE REPORTS' THEN
1636       ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
1637                          p_tax_rate_id  => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1638                                                 p_tax_line_index).tax_rate_id,
1639                          p_tax_rate_rec  => l_tax_rate_rec,
1640                          p_return_status  => p_return_status,
1641                          p_error_buffer   => p_error_buffer);
1642 
1643       IF NVL(l_tax_rate_rec.inclusive_tax_flag, 'X') <> 'N' THEN
1644         l_inclusive_tax_flag := l_tax_rate_rec.inclusive_tax_flag;
1645       ELSE
1646         l_inclusive_tax_flag := 'Y';
1647       END IF;
1648 
1649       IF l_inclusive_tax_flag IS NOT NULL THEN
1650         -- populate inclusive_tax_flag onto detail tax line
1651         --
1652         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1653              p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1654 
1655         IF g_level_statement >= g_current_runtime_level THEN
1656           FND_LOG.STRING(g_level_statement,
1657            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1658            'Get Inclusive_tax_flag from Tax Rate: ' || l_inclusive_tax_flag);
1659         END IF;
1660       ELSE
1661         IF NVL(ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1662                               p_tax_line_index).tax_id).def_inclusive_tax_flag, 'X') <> 'N' THEN
1663           l_inclusive_tax_flag := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
1664                                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1665                                      p_tax_line_index).tax_id).def_inclusive_tax_flag;
1666         ELSE
1667           l_inclusive_tax_flag := 'Y';
1668         END IF;
1669         IF l_inclusive_tax_flag IS NOT NULL THEN
1670           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1671                  p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1672 
1673           IF g_level_statement >= g_current_runtime_level THEN
1674             FND_LOG.STRING(g_level_statement,
1675                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1676                'Get tax_amt_included_flag from tax: ' || l_inclusive_tax_flag);
1677           END IF;
1678         ELSE
1679           -- Bug 4778841: default l_inclusive_tax_flag to 'Y' when it is NULL
1680           --
1681           l_inclusive_tax_flag := 'Y';
1682           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1683                   p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1684 
1685           IF g_level_statement >= g_current_runtime_level THEN
1686             FND_LOG.STRING(g_level_statement,
1687                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1688                'Inclusive tax flag is defaulted to N. ');
1689           END IF;
1690         END IF;   -- tax_amt_included_flag is available from tax
1691       END IF;     -- tax_amt_included_flag is available from tax rate
1692     ELSE
1693       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1694                             p_tax_line_index).tax_amt_included_flag := 'Y';
1695     END IF;       -- check for special inclusive applicability for expense reports only
1696 
1697   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
1698                                                         p_structure_index) = 'N'
1699   THEN
1700     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1701                               p_tax_line_index).tax_amt_included_flag := 'N';
1702 
1703   ELSIF ZX_GLOBAL_STRUCTURES_PKG.TRX_LINE_DIST_TBL.line_amt_includes_tax_flag(
1704                                                p_structure_index) IN ('S', 'I')
1705   THEN
1706 
1707     -- Get tax_amt_included_flag from tax rate
1708     --
1709     -- use cache
1710     -- OPEN  get_inclusive_flag_from_rate(
1711     --      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_tax_line_index).tax_rate_id);
1712     -- FETCH get_inclusive_flag_from_rate INTO l_inclusive_tax_flag;
1713     -- CLOSE get_inclusive_flag_from_rate;
1714 
1715     ZX_TDS_UTILITIES_PKG.get_tax_rate_info (
1716                     p_tax_rate_id  => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1717                                               p_tax_line_index).tax_rate_id,
1718                     p_tax_rate_rec  => l_tax_rate_rec,
1719                     p_return_status  => p_return_status,
1720                     p_error_buffer   => p_error_buffer);
1721 
1722     l_inclusive_tax_flag := l_tax_rate_rec.inclusive_tax_flag;
1723 
1724     IF l_inclusive_tax_flag IS NOT NULL THEN
1725       -- populate inclusive_tax_flag onto detail tax line
1726       --
1727       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1728              p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1729 
1730       IF g_level_statement >= g_current_runtime_level THEN
1731         FND_LOG.STRING(g_level_statement,
1732            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1733            'Get Inclusive_tax_flag from Tax Rate: ' ||
1734             l_inclusive_tax_flag);
1735       END IF;
1736 
1737     ELSE
1738       -- Check inclusive_tax_flag returned from tax registration
1739       -- process(inclusive_tax_flag has already been stamped onto
1740       -- detail tax line). If it is not available, get
1741       -- inclusive_tax_flag from ptp table
1742       --
1743       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1744                          p_tax_line_index).tax_amt_included_flag IS NOT NULL THEN
1745         IF g_level_statement >= g_current_runtime_level THEN
1746           FND_LOG.STRING(g_level_statement,
1747              'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1748              'tax_amt_included_flag available from tax registration. ' ||
1749               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1750                                        p_tax_line_index).tax_amt_included_flag);
1751          END IF;
1752       ELSE
1753 
1754         -- Bug 5335580: Query inclusive_tax_flag from PTP table with registration
1755         --     party site level PTP id first. If it is not found, query
1756         --     inclusive_tax_flag using registration party PTP id.
1757         --
1758         -- Get tax inclusive flag with l_site_ptp_id
1759         --
1760         l_reg_party_type :=
1761           REPLACE(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1762                   p_tax_line_index).registration_party_type,
1763                   'PARTY', 'SITE') || '_' || 'TAX_PROF_ID';
1764         IF p_event_class_rec.application_id = 200 AND
1765            SUBSTRB(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_tax_line_index).registration_party_type, 1, 9)
1766                     IN ('SHIP_FROM', 'BILL_FROM') THEN
1767           l_inclusive_tax_flag := ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_inclusive_flg;
1768           IF g_level_statement >= g_current_runtime_level THEN
1769             FND_LOG.STRING(g_level_statement,
1770                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1771                'For payables the supplier site should be used to get the inclusive flag ' ||
1772                 l_inclusive_tax_flag);
1773           END IF;
1774         ELSE
1775 
1776           ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value(
1777                    p_structure_name,
1778                    p_structure_index,
1779                    l_reg_party_type,
1780                    l_site_ptp_id,
1781                    p_return_status );
1782 
1783           IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1784             IF (g_level_error >= g_current_runtime_level ) THEN
1785               FND_LOG.STRING(g_level_error ,
1786                 'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1787                 'Incorrect return_status after call ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value().');
1788 
1789               FND_LOG.STRING(g_level_error,
1790                 'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1791                 'return_status: '|| p_return_status);
1792             END IF;
1793           END IF;
1794 
1795           OPEN  get_inclusive_flag_from_ptp(l_site_ptp_id);
1796           FETCH get_inclusive_flag_from_ptp INTO l_inclusive_tax_flag;
1797           CLOSE get_inclusive_flag_from_ptp;
1798         END IF;
1799 
1800         IF l_inclusive_tax_flag IS NOT NULL THEN
1801 
1802           -- populate inclusive_tax_flag onto detail tax line
1803           --
1804           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1805                p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1806 
1807           IF g_level_statement >= g_current_runtime_level THEN
1808             FND_LOG.STRING(g_level_statement,
1809                'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1810                'Get tax_amt_included_flag from SITE PTP: ' ||
1811                 l_inclusive_tax_flag);
1812           END IF;
1813 
1814         ELSE  -- l_inclusive_tax_flag is not found from SITE PTP
1815 
1816           -- Get tax inclusive flag with l_ptp_id
1817           --
1818           l_reg_party_type:= ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1819                      p_tax_line_index).registration_party_type || '_TAX_PROF_ID';
1820 
1821           ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value(
1822                  p_structure_name,
1823                  p_structure_index,
1824                  l_reg_party_type,
1825                  l_ptp_id,
1826                  p_return_status );
1827 
1828           IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1829             IF (g_level_statement>= g_current_runtime_level ) THEN
1830               FND_LOG.STRING(g_level_statement,
1831                 'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1832                 'Incorrect return_status after call ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value().');
1833 
1834               FND_LOG.STRING(g_level_statement,
1835                 'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1836                 'return_status: '|| p_return_status);
1837             END IF;
1838           END IF;
1839 
1840           OPEN  get_inclusive_flag_from_ptp(l_ptp_id);
1841           FETCH get_inclusive_flag_from_ptp INTO l_inclusive_tax_flag;
1842           CLOSE get_inclusive_flag_from_ptp;
1843 
1844           IF l_inclusive_tax_flag IS NOT NULL THEN
1845 
1846             -- populate inclusive_tax_flag onto detail tax line
1847             --
1848             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1849                  p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1850 
1851             IF g_level_statement >= g_current_runtime_level THEN
1852               FND_LOG.STRING(g_level_statement,
1853                  'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1854                  'Get tax_amt_included_flag from PARTY PTP: ' ||
1855                   l_inclusive_tax_flag);
1856             END IF;
1857           ELSE
1858             -- Get Get tax inclusive flag from Tax
1859             --
1860             l_inclusive_tax_flag := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
1861                 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1862                                p_tax_line_index).tax_id).def_inclusive_tax_flag;
1863 
1864             IF l_inclusive_tax_flag IS NOT NULL THEN
1865 
1866               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1867                  p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1868 
1869               IF g_level_statement >= g_current_runtime_level THEN
1870                 FND_LOG.STRING(g_level_statement,
1871                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1872                    'Get tax_amt_included_flag from tax: ' ||
1873                     l_inclusive_tax_flag);
1874               END IF;
1875 
1876             ELSE
1877 
1878               -- Bug 4778841: default l_inclusive_tax_flag to 'N' when it is NULL
1879               --
1880               l_inclusive_tax_flag := 'N';
1881               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1882                   p_tax_line_index).tax_amt_included_flag := l_inclusive_tax_flag;
1883 
1884               IF g_level_statement >= g_current_runtime_level THEN
1885                 FND_LOG.STRING(g_level_statement,
1886                    'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1887                    'Inclusive tax flag is defaulted to N. ');
1888               END IF;
1889 
1890               ---- raise error because l_inclusive_tax_flag is not available
1891               ----
1892               --p_return_status := FND_API.G_RET_STS_ERROR;
1893               --p_error_buffer := 'Inclusive Tax Flag is not available.';
1894               --
1895               --FND_MESSAGE.SET_NAME('ZX','GENERIC_MESSAGE');
1896               --FND_MESSAGE.SET_TOKEN('GENERIC_TEXT',
1897               --              'populate_inclusive_tax_flag- '|| p_error_buffer);
1898               --FND_MSG_PUB.Add;
1899               --IF (g_level_unexpected >= g_current_runtime_level ) THEN
1900               --   FND_LOG.STRING(g_level_unexpected,
1901               --          'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1902               --           p_error_buffer);
1903               --   FND_LOG.STRING(g_level_unexpected,
1904               --          'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1905               --          'Exception :ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag (-)');
1906               --END IF;
1907               --RETURN;
1908 
1909             END IF;   -- tax_amt_included_flag is avialbale from tax
1910           END IF;     -- tax_amt_included_flag is avialbale from PARTY PTP
1911         END IF;       -- tax_amt_included_flag is avialbale from SITE PTP
1912       END IF;         -- tax_amt_included_flag is avialbale from tax registration
1913     END IF;           -- tax_amt_included_flag is avialbale from tax rate
1914   END IF;             -- line_amt_includes_tax_flag
1915 
1916   IF (g_level_procedure >= g_current_runtime_level ) THEN
1917     FND_LOG.STRING(g_level_procedure,
1918            'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag.END',
1919            'ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag (-)');
1920   END IF;
1921 
1922 EXCEPTION
1923   WHEN OTHERS THEN
1924     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1925     p_error_buffer  := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1926 
1927     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1928       FND_LOG.STRING(g_level_unexpected,
1929             'ZX.PLSQL.ZX_TDS_TAXABLE_BASIS_DETM_PKG.populate_inclusive_tax_flag',
1930              p_error_buffer);
1931     END IF;
1932 END populate_inclusive_tax_flag;
1933 
1934 END ZX_TDS_TAXABLE_BASIS_DETM_PKG;