DBA Data[Home] [Help]

PACKAGE BODY: APPS.ZX_TDS_IMPORT_DOCUMENT_PKG

Source


1 PACKAGE BODY ZX_TDS_IMPORT_DOCUMENT_PKG AS
2  /* $Header: zxdiimpdocmtpkgb.pls 120.61.12010000.2 2008/11/12 12:22:25 spasala ship $ */
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_event              CONSTANT  NUMBER   := FND_LOG.LEVEL_EVENT;
8  g_level_unexpected         CONSTANT  NUMBER   := FND_LOG.LEVEL_UNEXPECTED;
9 
10  NUMBER_DUMMY               CONSTANT  NUMBER   := -999999999999;
11 
12  TYPE tax_line_rec_type is RECORD (
13   summary_tax_line_number   zx_import_tax_lines_gt.summary_tax_line_number%TYPE,
14   internal_organization_id  zx_import_tax_lines_gt.internal_organization_id%TYPE,
15   tax_regime_code           zx_import_tax_lines_gt.tax_regime_code%TYPE,
16   tax                       zx_import_tax_lines_gt.tax%TYPE,
17   tax_status_code           zx_import_tax_lines_gt.tax_status_code%TYPE,
18   tax_rate_code             zx_import_tax_lines_gt.tax_rate_code%TYPE,
19   tax_rate                  zx_import_tax_lines_gt.tax_rate%TYPE,
20   summary_tax_amt           zx_import_tax_lines_gt.tax_amt%TYPE,
21   tax_jurisdiction_code     zx_import_tax_lines_gt.tax_jurisdiction_code%TYPE,
22   tax_amt_included_flag     zx_import_tax_lines_gt.tax_amt_included_flag%TYPE,
23   tax_exception_id          zx_import_tax_lines_gt.tax_exception_id%TYPE,
24   tax_exemption_id          zx_import_tax_lines_gt.tax_exemption_id%TYPE,
25   exempt_reason_code        zx_import_tax_lines_gt.exempt_reason_code%TYPE,
26   exempt_certificate_number zx_import_tax_lines_gt.exempt_certificate_number%TYPE,
27   trx_line_id               zx_trx_tax_link_gt.trx_line_id%TYPE,
28   line_amt                  zx_trx_tax_link_gt.line_amt%TYPE,
29   trx_date                  zx_trx_headers_gt.trx_date%TYPE,
30   minimum_accountable_unit  zx_trx_headers_gt.minimum_accountable_unit%TYPE,
31   precision                 zx_trx_headers_gt.precision%TYPE,
32   trx_level_type            zx_transaction_lines_gt.trx_level_type%TYPE,
33   trx_line_date             zx_transaction_lines_gt.trx_line_date%TYPE,
34   adjusted_doc_date         zx_transaction_lines_gt.adjusted_doc_date%TYPE,
35   line_level_action         zx_transaction_lines_gt.line_level_action%TYPE,
36   interface_entity_code     zx_import_tax_lines_gt.interface_entity_code%TYPE,
37   interface_tax_line_id     zx_import_tax_lines_gt.interface_tax_line_id%TYPE,
38   related_doc_date          zx_trx_headers_gt.related_doc_date%TYPE,
39   provnl_tax_determination_date zx_trx_headers_gt.provnl_tax_determination_date%TYPE,
40 -- added for bug 5018766
41   tax_date 		    zx_transaction_lines_gt.tax_date%type,
42   tax_determine_date 	    zx_transaction_lines_gt.tax_determine_date%type,
43   tax_point_date 	    zx_transaction_lines_gt.tax_point_date%type
44   );
45 
46  PROCEDURE create_detail_tax_line (
47   p_event_class_rec         IN 	           zx_api_pub.event_class_rec_type,
48   p_tax_line_rec	    IN	    	   tax_line_rec_type,
49   p_new_row_num		    IN		   NUMBER,
50   p_tax_class               IN             zx_rates_b.tax_class%TYPE,
51   x_return_status              OUT NOCOPY  VARCHAR2);
52 
53 PROCEDURE get_taxes_from_applied_from(
54   p_event_class_rec	    IN                 zx_api_pub.event_class_rec_type,
55   p_trx_line_index	    IN                 BINARY_INTEGER,
56   p_tax_date		    IN                 DATE,
57   p_tax_determine_date      IN                 DATE,
58   p_tax_point_date          IN                 DATE,
59   x_begin_index 	    IN OUT NOCOPY      BINARY_INTEGER,
60   x_end_index		    IN OUT NOCOPY      BINARY_INTEGER,
61   x_return_status	       OUT NOCOPY      VARCHAR2);
62 
63 PROCEDURE get_taxes_from_adjusted_to(
64   p_event_class_rec	   IN 		        zx_api_pub.event_class_rec_type,
65   p_trx_line_index	   IN	       	  	BINARY_INTEGER,
66   p_tax_date		   IN   	 	DATE,
67   p_tax_determine_date     IN   	 	DATE,
68   p_tax_point_date         IN   	 	DATE,
69   x_begin_index 	   IN OUT NOCOPY	BINARY_INTEGER,
70   x_end_index		   IN OUT NOCOPY	BINARY_INTEGER,
71   x_return_status	   OUT NOCOPY 	        VARCHAR2);
72 
73 /*=========================================================================*
74  | Public procedure prorate_imported_sum_tax_lines is used to prorate      |
75  | imported summary tax lines to create detail tax lines.                  |
76  *=========================================================================*/
77 PROCEDURE prorate_imported_sum_tax_lines (
78  p_event_class_rec          IN          zx_api_pub.event_class_rec_type,
79  x_return_status            OUT NOCOPY  VARCHAR2) IS
80 
81  CURSOR  get_alloc_detail_tax_lines_csr IS
82   SELECT /*+ ORDERED
83              INDEX(headergt ZX_TRX_HEADERS_GT_U1)
84              INDEX(sumgt ZX_IMPORT_TAX_LINES_GT_U1)
85              INDEX(allocgt ZX_TRX_TAX_LINK_GT_U1)
86              INDEX(linegt ZX_TRANSACTION_LINES_GT_U1 )*/
87          sumgt.summary_tax_line_number,
88          sumgt.internal_organization_id,
89          sumgt.tax_regime_code,
90          sumgt.tax,
91          sumgt.tax_status_code,
92          sumgt.tax_rate_code,
93          sumgt.tax_rate,
94          sumgt.tax_amt summary_tax_amt,
95          sumgt.tax_jurisdiction_code,
96          sumgt.tax_amt_included_flag,
97          sumgt.tax_exception_id,
98          sumgt.tax_exemption_id,
99          sumgt.exempt_reason_code,
100          sumgt.exempt_certificate_number,
101          allocgt.trx_line_id,
102          allocgt.line_amt,
103          headergt.trx_date,
104          headergt.minimum_accountable_unit,
105          headergt.precision,
106          linegt.trx_level_type,
107          linegt.trx_line_date,
108          linegt.adjusted_doc_date,
109          linegt.line_level_action,
110          sumgt.interface_entity_code,
111          sumgt.interface_tax_line_id,
112          headergt.related_doc_date,
113          headergt.provnl_tax_determination_date,
114 -- added for bug 5018766
115 	 linegt.tax_date ,
116 	 linegt.tax_determine_date ,
117 	 linegt.tax_point_date
118     FROM zx_trx_headers_gt headergt,
119          zx_import_tax_lines_gt sumgt,
120          zx_trx_tax_link_gt allocgt,
121          zx_transaction_lines_gt linegt
122    WHERE headergt.application_id = p_event_class_rec.application_id
123      AND headergt.event_class_code = p_event_class_rec.event_class_code
124      AND headergt.entity_code = p_event_class_rec.entity_code
125      AND headergt.trx_id = p_event_class_rec.trx_id
126      AND sumgt.application_id = headergt.application_id
127      AND sumgt.entity_code = headergt.entity_code
128      AND sumgt.event_class_code = headergt.event_class_code
129      AND sumgt.trx_id = headergt.trx_id
130      AND sumgt.tax_line_allocation_flag = 'Y'
131      AND allocgt.application_id = sumgt.application_id
132      AND allocgt.event_class_code = sumgt.event_class_code
133      AND allocgt.entity_code = sumgt.entity_code
134      AND allocgt.trx_id = sumgt.trx_id
135      AND allocgt.summary_tax_line_number = sumgt.summary_tax_line_number
136      AND linegt.application_id = allocgt.application_id
137      AND linegt.entity_code = allocgt.entity_code
138      AND linegt.event_class_code = allocgt.event_class_code
139      AND linegt.trx_id = allocgt.trx_id
140      AND linegt.trx_line_id = allocgt.trx_line_id
141      AND linegt.trx_level_type = allocgt.trx_level_type
142      ORDER BY sumgt.summary_tax_line_number;
143 
144  CURSOR  get_one_alloc_det_tax_lines_cr IS
145   SELECT /*+ ORDERED
146              INDEX(headergt ZX_TRX_HEADERS_GT_U1)
147              INDEX(sumgt ZX_IMPORT_TAX_LINES_GT_U1)
148              INDEX(linegt ZX_TRANSACTION_LINES_GT_U1)*/
149          sumgt.summary_tax_line_number,
150          sumgt.internal_organization_id,
151          sumgt.tax_regime_code,
152          sumgt.tax,
153          sumgt.tax_status_code,
154          sumgt.tax_rate_code,
155          sumgt.tax_rate,
156          sumgt.tax_amt summary_tax_amt,
157          sumgt.tax_jurisdiction_code,
158          sumgt.tax_amt_included_flag,
159          sumgt.tax_exception_id,
160          sumgt.tax_exemption_id,
161          sumgt.exempt_reason_code,
162          sumgt.exempt_certificate_number,
163          linegt.trx_line_id,
164          linegt.line_amt,
165          headergt.trx_date,
166          headergt.minimum_accountable_unit,
167          headergt.precision,
168          linegt.trx_level_type,
169          linegt.trx_line_date,
170          linegt.adjusted_doc_date,
171          linegt.line_level_action,
172          sumgt.interface_entity_code,
173          sumgt.interface_tax_line_id,
174          headergt.related_doc_date,
175          headergt.provnl_tax_determination_date,
176 -- added for bug 5018766
177 	 linegt.tax_date ,
178 	 linegt.tax_determine_date ,
179 	 linegt.tax_point_date
180     FROM zx_trx_headers_gt headergt,
181          zx_import_tax_lines_gt sumgt,
182          zx_transaction_lines_gt linegt
183    WHERE headergt.application_id = p_event_class_rec.application_id
184      AND headergt.event_class_code = p_event_class_rec.event_class_code
185      AND headergt.entity_code = p_event_class_rec.entity_code
186      AND headergt.trx_id = p_event_class_rec.trx_id
187      AND sumgt.application_id = headergt.application_id
188      AND sumgt.entity_code = headergt.entity_code
189      AND sumgt.event_class_code = headergt.event_class_code
190      AND sumgt.trx_id = headergt.trx_id
191      AND sumgt.tax_line_allocation_flag = 'N'
192      AND linegt.application_id = sumgt.application_id
193      AND linegt.entity_code = sumgt.entity_code
194      AND linegt.event_class_code = sumgt.event_class_code
195      AND linegt.trx_id = sumgt.trx_id
196      AND linegt.trx_line_id = sumgt.trx_line_id
197 --     AND linegt.trx_level_type = sumgt.trx_level_type
198      ORDER BY sumgt.summary_tax_line_number;
199 
200  CURSOR  get_all_detail_tax_lines_csr IS
201   SELECT /*+ ORDERED
202              INDEX(headergt ZX_TRX_HEADERS_GT_U1)
203              INDEX(sumgt ZX_IMPORT_TAX_LINES_GT_U1)
204              INDEX(linegt ZX_TRANSACTION_LINES_GT_U1) */
205          sumgt.summary_tax_line_number,
206          sumgt.internal_organization_id,
207          sumgt.tax_regime_code,
208          sumgt.tax,
209          sumgt.tax_status_code,
210          sumgt.tax_rate_code,
211          sumgt.tax_rate,
212          sumgt.tax_amt summary_tax_amt,
213          sumgt.tax_jurisdiction_code,
214          sumgt.tax_amt_included_flag,
215          sumgt.tax_exception_id,
216          sumgt.tax_exemption_id,
217          sumgt.exempt_reason_code,
218          sumgt.exempt_certificate_number,
219          linegt.trx_line_id,
220          linegt.line_amt,
221          headergt.trx_date,
222          headergt.minimum_accountable_unit,
223          headergt.precision,
224          linegt.trx_level_type,
225          linegt.trx_line_date,
226          linegt.adjusted_doc_date,
227          linegt.line_level_action,
228          sumgt.interface_entity_code,
229          sumgt.interface_tax_line_id,
230          headergt.related_doc_date,
231          headergt.provnl_tax_determination_date,
232 -- added for bug 5018766
233 	 linegt.tax_date ,
234 	 linegt.tax_determine_date ,
235 	 linegt.tax_point_date
236     FROM zx_trx_headers_gt headergt,
237          zx_import_tax_lines_gt sumgt,
238          zx_transaction_lines_gt linegt
239    WHERE headergt.application_id = p_event_class_rec.application_id
240      AND headergt.event_class_code = p_event_class_rec.event_class_code
241      AND headergt.entity_code = p_event_class_rec.entity_code
242      AND headergt.trx_id = p_event_class_rec.trx_id
243 --     AND NVL(headergt.hdr_trx_user_key1, 'X') = NVL(p_event_class_rec.hdr_trx_user_key1, 'X')
244 --     AND NVL(headergt.hdr_trx_user_key2, 'X') = NVL(p_event_class_rec.hdr_trx_user_key2, 'X')
245 --     AND NVL(headergt.hdr_trx_user_key3, 'X') = NVL(p_event_class_rec.hdr_trx_user_key3, 'X')
246 --     AND NVL(headergt.hdr_trx_user_key4, 'X') = NVL(p_event_class_rec.hdr_trx_user_key4, 'X')
247 --     AND NVL(headergt.hdr_trx_user_key5, 'X') = NVL(p_event_class_rec.hdr_trx_user_key5, 'X')
248 --     AND NVL(headergt.hdr_trx_user_key6, 'X') = NVL(p_event_class_rec.hdr_trx_user_key6, 'X')
249      AND sumgt.application_id = headergt.application_id
250      AND sumgt.entity_code = headergt.entity_code
251      AND sumgt.event_class_code = headergt.event_class_code
252      AND sumgt.trx_id = headergt.trx_id
253      AND sumgt.tax_line_allocation_flag = 'N'
254      AND sumgt.trx_line_id IS NULL
255 --     AND NVL(sumgt.hdr_trx_user_key1, 'X') = NVL(headergt.hdr_trx_user_key1, 'X')
256 --     AND NVL(sumgt.hdr_trx_user_key2, 'X') = NVL(headergt.hdr_trx_user_key2, 'X')
257 --     AND NVL(sumgt.hdr_trx_user_key3, 'X') = NVL(headergt.hdr_trx_user_key3, 'X')
258 --     AND NVL(sumgt.hdr_trx_user_key4, 'X') = NVL(headergt.hdr_trx_user_key4, 'X')
259 --     AND NVL(sumgt.hdr_trx_user_key5, 'X') = NVL(headergt.hdr_trx_user_key5, 'X')
260 --     AND NVL(sumgt.hdr_trx_user_key6, 'X') = NVL(headergt.hdr_trx_user_key6, 'X')
261      AND linegt.application_id = sumgt.application_id
262      AND linegt.entity_code = sumgt.entity_code
263      AND linegt.event_class_code = sumgt.event_class_code
264      AND linegt.trx_id = sumgt.trx_id
265 --     AND NVL(linegt.hdr_trx_user_key1, 'X') = NVL(sumgt.hdr_trx_user_key1, 'X')
266 --     AND NVL(linegt.hdr_trx_user_key2, 'X') = NVL(sumgt.hdr_trx_user_key2, 'X')
267 --     AND NVL(linegt.hdr_trx_user_key3, 'X') = NVL(sumgt.hdr_trx_user_key3, 'X')
268 --     AND NVL(linegt.hdr_trx_user_key4, 'X') = NVL(sumgt.hdr_trx_user_key4, 'X')
269 --     AND NVL(linegt.hdr_trx_user_key5, 'X') = NVL(sumgt.hdr_trx_user_key5, 'X')
270 --     AND NVL(linegt.hdr_trx_user_key6, 'X') = NVL(sumgt.hdr_trx_user_key6, 'X')
271      AND linegt.line_level_action = 'CREATE_WITH_TAX'
272      AND linegt.applied_from_application_id IS NULL
273      AND linegt.adjusted_doc_application_id IS NULL
274      -- AND linegt.applied_to_application_id IS NULL  --bug#6773534
275      ORDER BY sumgt.summary_tax_line_number;
276 
277  CURSOR  get_total_trx_lines_amt_csr IS
278   SELECT /*+ INDEX(ZX_TRANSACTION_LINES_GT ZX_TRANSACTION_LINES_GT_U1) */
279          SUM(line_amt)
280     FROM zx_transaction_lines_gt
281    WHERE application_id = p_event_class_rec.application_id
282      AND event_class_code = p_event_class_rec.event_class_code
283      AND entity_code = p_event_class_rec.entity_code
284      AND trx_id = p_event_class_rec.trx_id
285      AND line_level_action = 'CREATE_WITH_TAX'
286      AND applied_from_application_id IS NULL
287      AND adjusted_doc_application_id IS NULL;
288      -- AND applied_to_application_id IS NULL;  --bug#6773534
289 
290  CURSOR  get_total_alloc_lines_amt_csr(p_summary_tax_line_number   NUMBER) IS
291   SELECT /*+ INDEX(ZX_TRX_TAX_LINK_GT ZX_TRX_TAX_LINK_GT_U1) */
292          SUM(line_amt)
293     FROM zx_trx_tax_link_gt
294    WHERE application_id = p_event_class_rec.application_id
295      AND event_class_code = p_event_class_rec.event_class_code
296      AND entity_code = p_event_class_rec.entity_code
297      AND trx_id = p_event_class_rec.trx_id
298      AND summary_tax_line_number = p_summary_tax_line_number;
299 
300  l_previous_sum_tax_line_number	  NUMBER;
301  l_previous_summary_tax_amt	  NUMBER;
302  l_total_trx_lines_amt		  NUMBER;
303  l_total_alloc_lines_amt	  NUMBER;
304  l_total_rnd_tax_amt		  NUMBER;
305  l_rounding_diff		  NUMBER;
306  l_max_line_amt			  NUMBER;
307  l_max_line_amt_tax_index	  NUMBER;
308  l_new_row_num			  NUMBER;
309  l_tax_id			  NUMBER;
310  l_begin_index			  BINARY_INTEGER;
311  l_end_index			  BINARY_INTEGER;
312  l_error_buffer			  VARCHAR2(240);
313  l_line_level_action              zx_transaction_lines_gt.line_level_action%TYPE;
314  l_tax_class                      zx_rates_b.tax_class%TYPE;
315 
316 BEGIN
317 
318   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
319 
320   IF (g_level_event >= g_current_runtime_level ) THEN
321     FND_LOG.STRING(g_level_event,
322                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.BEGIN',
323                   'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(+)');
324   END IF;
325 
326   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
327 
328   -- initialize local variables
329   --
330   l_new_row_num :=
331             NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST,0);
332 
333   l_previous_sum_tax_line_number := NUMBER_DUMMY;
334 
335   --
336   -- Bug#5417753- determine tax_class based on product family
337   --
338   IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
339     l_tax_class := 'OUTPUT';
340   ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
341     l_tax_class := 'INPUT';
342   END IF;
343 
344   -- Create detail tax lines from imported summary tax lines with allocations
345   --
346   FOR tax_line_rec IN get_alloc_detail_tax_lines_csr LOOP
347 
348     l_new_row_num := l_new_row_num + 1;
349     l_line_level_action := tax_line_rec.line_level_action;
350     -- set l_begin_index
351     --
352     IF l_begin_index IS NULL THEN
353       l_begin_index := l_new_row_num;
354     END IF;
355 
356     -- create a detail tax line and populate tax info
357     --
358     create_detail_tax_line (
359                    p_event_class_rec     =>  p_event_class_rec,
360                    p_tax_line_rec        =>  tax_line_rec,
361                    p_new_row_num         =>  l_new_row_num,
362                    p_tax_class           =>  l_tax_class,
363                    x_return_status       =>  x_return_status);
364 
365     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
366       IF (g_level_unexpected >= g_current_runtime_level ) THEN
367         FND_LOG.STRING(g_level_unexpected,
368                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
369                'Incorrect return_status after calling '||
370                'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line()');
371         FND_LOG.STRING(g_level_unexpected,
372                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
373                'RETURN_STATUS = ' || x_return_status);
374         FND_LOG.STRING(g_level_unexpected,
375                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
376                'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
377       END IF;
378       RETURN;
379     END IF;
380 
381     -- For new summary tax line, adjust rounding difference for previous summary
382     -- tax line for 'Line' Level rounding (For 'Header' level rounding, rounding
383     -- differences are adjusted in Tail End Service as normal detail tax lines).
384     --
385     IF tax_line_rec.summary_tax_line_number <> l_previous_sum_tax_line_number
386     THEN
387 
388       IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE'  THEN
389 
390         IF l_previous_sum_tax_line_number <> NUMBER_DUMMY THEN
391 
392           -- calculate rounding difference and adjust rounding difference
393           -- (if it exists) to the  tax line with largest line amt.
394           --
395           l_rounding_diff := l_previous_summary_tax_amt - l_total_rnd_tax_amt;
396 
397           IF l_rounding_diff <> 0 THEN
398             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
399                l_max_line_amt_tax_index).tax_amt := l_rounding_diff +
400                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
401                                                 l_max_line_amt_tax_index).tax_amt;
402           END IF;
403         END IF;     -- l_previous_sum_tax_line_number <> NUMBER_DUMMY
404 
405         -- Reset local variables for new summary tax line
406         --
407         l_total_rnd_tax_amt := 0;
408         l_max_line_amt := tax_line_rec.line_amt;
409         l_max_line_amt_tax_index := l_new_row_num;
410         l_rounding_diff := 0;
411         l_previous_summary_tax_amt := tax_line_rec.summary_tax_amt;
412 
413       END IF;   -- g_rounding_level = 'LINE'
414 
415       -- set l_previous_sum_tax_line_number
416       --
417       l_previous_sum_tax_line_number := tax_line_rec.summary_tax_line_number;
418 
419       -- get total line amount of the allocated lines of this summary tax line
420       --
421       IF tax_line_rec.line_level_action = 'CREATE_WITH_TAX' THEN
422         OPEN  get_total_alloc_lines_amt_csr(
423                                    tax_line_rec.summary_tax_line_number);
424         FETCH get_total_alloc_lines_amt_csr INTO l_total_alloc_lines_amt;
425         CLOSE get_total_alloc_lines_amt_csr;
426       END IF;
427     END IF;   -- summary_tax_line_number <> l_previous_tax_sum_line_number
428 
429     -- If line_level_action = 'LINE_INFO_TAX_ONLY', pseudo lines have trx line
430     -- amount as null, so when import service allocate summary tax only tax line,
431     -- simply copy tax amount from summary tax line to detail tax line.
432     --
433     IF tax_line_rec.line_level_action = 'LINE_INFO_TAX_ONLY' THEN
434 
435       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
436                       l_new_row_num).tax_amt := tax_line_rec.summary_tax_amt;
437       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
438             l_new_row_num).unrounded_tax_amt := tax_line_rec.summary_tax_amt;
439       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
440                                    l_new_row_num).tax_only_line_flag := 'Y';
441 
442       -- set total rounded tax amount
443       --
444       l_total_rnd_tax_amt :=
445        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_amt;
446 
447     ELSE
448 
449       -- prorate tax_amt with line_amt
450       --
451       IF l_total_alloc_lines_amt <> 0 THEN
452 
453         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
454            l_new_row_num).unrounded_tax_amt := tax_line_rec.summary_tax_amt *
455                                     tax_line_rec.line_amt/l_total_alloc_lines_amt;
456 
457       ELSE    -- l_total_alloc_lines_amt = 0
458 
459         -- raise error only if tax_line_rec.summary_tax_amt <> 0
460         -- If tax_line_rec.summary_tax_amt = 0, set tax_amt to 0
461         --
462         IF tax_line_rec.summary_tax_amt  <> 0 THEN
463 
464           x_return_status := FND_API.G_RET_STS_ERROR;
465 
466           IF (g_level_event >= g_current_runtime_level ) THEN
467             FND_LOG.STRING(g_level_event,
468                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
469                    'tax_amt from summary tax line is not 0, ' ||
470                    'but the total line amount for the allocated trx lines is 0.'
471                     || 'Cannot do proration.');
472             FND_LOG.STRING(g_level_event,
473                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
474                    'Summary_tax_line_number = ' ||
475                     tax_line_rec.summary_tax_line_number);
476             FND_LOG.STRING(g_level_event,
477                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
478                    'RETURN_STATUS = ' || x_return_status);
479             FND_LOG.STRING(g_level_event,
480                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
481                    'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
482                    'prorate_imported_sum_tax_lines(-)');
483           END IF;
484           RETURN;
485         ELSE
486           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
487                                          l_new_row_num).unrounded_tax_amt :=  0;
488         END IF;   -- sum_tax_line_rec.tax_amt <> 0 or ELSE
489       END IF;     --  l_total_alloc_lines_amt <> 0 or ELSE
490 
491       -- Round tax amt for 'LINE' Level rounding. 'HEADER' level rounding
492       -- will be done in tail end service as regular detail tax lines.
493       --
494       IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE' THEN
495 
496         -- round tax_amt
497         --
498         l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_id;
499 
500         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_amt :=
501            ZX_TDS_TAX_ROUNDING_PKG.round_tax(
502               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt,
503               NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule,
504                   ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).rounding_rule_code),
505               tax_line_rec.minimum_accountable_unit,
506               tax_line_rec.precision,
507               x_return_status,
508               l_error_buffer);
509 
510         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
511           IF (g_level_unexpected >= g_current_runtime_level ) THEN
512             FND_LOG.STRING(g_level_unexpected,
513                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
514                    'Incorrect return_status after calling ' ||
515                    'ZX_TDS_TAX_ROUNDING_PKG.round_tax()');
516             FND_LOG.STRING(g_level_unexpected,
517                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
518                    'RETURN_STATUS = ' || x_return_status);
519             FND_LOG.STRING(g_level_unexpected,
520                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
521                    'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
522           END IF;
523           RETURN;
524         END IF;
525 
526         -- accumulate rounded tax amount
527         --
528         l_total_rnd_tax_amt := l_total_rnd_tax_amt +
529                     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
530                                                           l_new_row_num).tax_amt;
531 
532         -- record l_max_line_amt and l_max_line_amt_tax_index
533         --
534         IF  ABS(l_max_line_amt) < ABS(tax_line_rec.line_amt) THEN
535           l_max_line_amt := tax_line_rec.line_amt;
536           l_max_line_amt_tax_index := l_new_row_num;
537         END IF;
538       END IF;   -- g_rounding_level = 'Line'
539     END IF;     -- tax_line_rec.line_level_action = 'LINE_INFO_TAX_ONLY' or ELSE
540   END LOOP;     -- tax_line_rec IN get_alloc_detail_tax_lines_csr
541 
542   -- IF l_line_level_action <> 'LINE_INFO_TAX_ONLY', adjust rounding
543   -- difference('Line' Level) for the last summary tax line
544   --
545   IF l_line_level_action = 'CREATE_WITH_TAX' THEN
546 
547     IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE' AND
548        l_total_alloc_lines_amt IS NOT NULL
549     THEN
550 
551       -- calculate rounding difference and adjust rounding difference
552       -- (if it exists) to the  tax line with largest line amt.
553       --
554       l_rounding_diff := l_previous_summary_tax_amt - l_total_rnd_tax_amt;
555 
556       IF l_rounding_diff <> 0 THEN
557         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
558                l_max_line_amt_tax_index).tax_amt := l_rounding_diff +
559                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
560                                               l_max_line_amt_tax_index).tax_amt;
561       END IF;
562     END IF;     -- g_rounding_level = 'Line'
563   END IF;       -- line_level_action = 'CREATE_WITH_TAX'
564 
565   -- reset l_previous_sum_tax_line_number
566   --
567   l_previous_sum_tax_line_number := NUMBER_DUMMY;
568 
569   -- Create detail tax lines from imported summary tax lines with no allocation
570   --
571   FOR tax_line_rec IN get_all_detail_tax_lines_csr LOOP
572 
573     l_new_row_num := l_new_row_num + 1;
574 
575     -- set l_begin_index if it is NULL
576     --
577     IF l_begin_index IS NULL THEN
578       l_begin_index := l_new_row_num;
579     END IF;
580 
581     -- create a detail tax line and populate tax info
582     --
583     create_detail_tax_line (
584                    p_event_class_rec     =>  p_event_class_rec,
585                    p_tax_line_rec        =>  tax_line_rec,
586                    p_new_row_num         =>  l_new_row_num,
587                    p_tax_class           =>  l_tax_class,
588                    x_return_status       =>  x_return_status);
589 
590     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
591       IF (g_level_unexpected >= g_current_runtime_level ) THEN
592         FND_LOG.STRING(g_level_unexpected,
593                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
594                'Incorrect return_status after calling '||
595                'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line()');
596         FND_LOG.STRING(g_level_unexpected,
597                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
598                'RETURN_STATUS = ' || x_return_status);
599         FND_LOG.STRING(g_level_unexpected,
600                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
601                'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
602       END IF;
603       RETURN;
604     END IF;
605 
606     -- Do proration and adjust rounding difference
607     --
608     IF tax_line_rec.summary_tax_line_number <> l_previous_sum_tax_line_number
609     THEN
610 
611       IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE' THEN
612 
613         -- New summary tax line number
614         --
615         -- Adjust rounding difference for previous summary tax line for 'Line'
616         -- Level rounding (For 'Header' level rounding, rounding differences
617         -- are adjusted in Tail End Service as regular detail tax lines).
618         --
619         IF l_previous_sum_tax_line_number <> NUMBER_DUMMY THEN
620 
621           -- calculate rounding difference and adjust rounding difference
622           -- (if it exists) to the  tax line with largest line amt.
623           --
624           l_rounding_diff := l_previous_summary_tax_amt - l_total_rnd_tax_amt;
625 
626           IF l_rounding_diff <> 0 THEN
627             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
628                l_max_line_amt_tax_index).tax_amt := l_rounding_diff +
629                      ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
630                                               l_max_line_amt_tax_index).tax_amt;
631           END IF;
632         END IF;     -- l_previous_sum_tax_line_number <> NUMBER_DUMMY
633 
634         -- Reset local variables for new summary tax line
635         --
636         l_total_rnd_tax_amt := 0;
637         l_max_line_amt := tax_line_rec.line_amt;
638         l_max_line_amt_tax_index := l_new_row_num;
639         l_rounding_diff := 0;
640         l_previous_summary_tax_amt := tax_line_rec.summary_tax_amt;
641 
642       END IF;       -- g_rounding_level = 'LINE'
643 
644       -- get total line amount of the allocated lines of this summary tax line
645       --
646       IF l_total_trx_lines_amt IS NULL THEN
647         OPEN  get_total_trx_lines_amt_csr;
648         FETCH get_total_trx_lines_amt_csr INTO l_total_trx_lines_amt;
649         CLOSE get_total_trx_lines_amt_csr;
650       END IF;
651 
652       -- set l_previous_sum_tax_line_number
653       --
654       l_previous_sum_tax_line_number := tax_line_rec.summary_tax_line_number;
655 
656     END IF;    -- summary_tax_line_number <> l_previous_tax_sum_line_number
657 
658     -- prorate tax_amt with line_amt
659     --
660     IF l_total_trx_lines_amt <> 0 THEN
661       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
662          l_new_row_num).unrounded_tax_amt := tax_line_rec.summary_tax_amt *
663                                     tax_line_rec.line_amt/l_total_trx_lines_amt;
664     ELSE         -- l_total_trx_lines_amt = 0
665 
666       -- raise error only if tax_line_rec.summary_tax_amt <> 0
667       -- If tax_line_rec.summary_tax_amt = 0, set tax_amt to 0
668       --
669       IF tax_line_rec.summary_tax_amt  <> 0 THEN
670 
671         x_return_status := FND_API.G_RET_STS_ERROR;
672 
673         IF (g_level_event >= g_current_runtime_level ) THEN
674           FND_LOG.STRING(g_level_event,
675                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
676                  'tax_amt from summary tax line is not 0, ' ||
677                  'but the total line amount for the allocated trx lines is 0.'
678                   || 'Cannot do proration.');
679           FND_LOG.STRING(g_level_event,
680                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
681                  'Summary_tax_line_number = ' ||
682                   tax_line_rec.summary_tax_line_number);
683           FND_LOG.STRING(g_level_event,
684                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
685                  'RETURN_STATUS = ' || x_return_status);
686           FND_LOG.STRING(g_level_event,
687                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
688                  'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
689                  'prorate_imported_sum_tax_lines(-)');
690         END IF;
691         RETURN;
692       ELSE
693         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
694                                        l_new_row_num).unrounded_tax_amt :=  0;
695       END IF;   -- sum_tax_line_rec.tax_amt <> 0 or ELSE
696     END IF;     --  l_total_alloc_lines_amt <> 0 or ELSE
697 
698     -- Round tax amt for 'LINE' Level rounding. 'HEADER' level rounding
699     -- will be done in tail end service as regular detail tax lines.
700     --
701     IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE'
702     THEN
703 
704       -- round tax_amt
705       --
706       l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_id;
707 
708       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_amt :=
709          ZX_TDS_TAX_ROUNDING_PKG.round_tax(
710             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt,
711             NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule,
712                 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).rounding_rule_code),
713             tax_line_rec.minimum_accountable_unit,
714             tax_line_rec.precision,
715             x_return_status,
716             l_error_buffer);
717 
718       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
719         IF (g_level_unexpected >= g_current_runtime_level ) THEN
720           FND_LOG.STRING(g_level_unexpected,
721                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
722                  'Incorrect return_status after calling ' ||
723                  'ZX_TDS_TAX_ROUNDING_PKG.round_tax()');
724           FND_LOG.STRING(g_level_unexpected,
725                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
726                  'RETURN_STATUS = ' || x_return_status);
727           FND_LOG.STRING(g_level_unexpected,
728                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
729                  'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
730         END IF;
731         RETURN;
732       END IF;
733 
734       -- accumulate rounded tax amount
735       --
736       l_total_rnd_tax_amt := l_total_rnd_tax_amt +
737                   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
738                                                         l_new_row_num).tax_amt;
739 
740       -- record l_max_line_amt and l_max_line_amt_tax_index
741       --
742       IF  ABS(l_max_line_amt) < ABS(tax_line_rec.line_amt) THEN
743         l_max_line_amt := tax_line_rec.line_amt;
744         l_max_line_amt_tax_index := l_new_row_num;
745       END IF;
746     END IF;   -- g_rounding_level = 'LINE'
747   END LOOP;     -- tax_line_rec IN get_all_detail_tax_lines_csr
748 
749   -- Adjust rounding difference('Line' Level) for the last summary tax line
750   --
751   IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'LINE'  AND
752        l_total_trx_lines_amt IS NOT NULL
753   THEN
754 
755     -- calculate rounding difference and adjust rounding difference
756     -- (if it exists) to the  tax line with largest line amt.
757     --
758     l_rounding_diff := l_previous_summary_tax_amt - l_total_rnd_tax_amt;
759 
760     IF l_rounding_diff <> 0 THEN
761       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
762              l_max_line_amt_tax_index).tax_amt := l_rounding_diff +
763                    ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
764                                             l_max_line_amt_tax_index).tax_amt;
765     END IF;
766   END IF;    -- g_rounding_level = 'Line'
767 
768   -- Bug 4262870:
769   -- Create detail tax lines for imported summary tax lines that carry
770   -- allocation information( allocated to one transaction line )
771   --
772   FOR tax_line_rec IN get_one_alloc_det_tax_lines_cr LOOP
773 
774     l_new_row_num := l_new_row_num + 1;
775     l_line_level_action := tax_line_rec.line_level_action;
776     -- set l_begin_index
777     --
778     IF l_begin_index IS NULL THEN
779       l_begin_index := l_new_row_num;
780     END IF;
781 
782     -- create a detail tax line and populate tax info
783     --
784     create_detail_tax_line (
785                    p_event_class_rec     =>  p_event_class_rec,
786                    p_tax_line_rec        =>  tax_line_rec,
787                    p_new_row_num         =>  l_new_row_num,
788                    p_tax_class           =>  l_tax_class,
789                    x_return_status       =>  x_return_status);
790 
791     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
792       IF (g_level_unexpected >= g_current_runtime_level ) THEN
793         FND_LOG.STRING(g_level_unexpected,
794                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
795                'Incorrect return_status after calling '||
796                'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line()');
797         FND_LOG.STRING(g_level_unexpected,
798                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
799                'RETURN_STATUS = ' || x_return_status);
800         FND_LOG.STRING(g_level_unexpected,
801                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
802                'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
803       END IF;
804       RETURN;
805     END IF;
806 
807     -- Copy tax_amt and unrounded_tax_amt from summary tax line
808     --
809     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
810                       l_new_row_num).tax_amt := tax_line_rec.summary_tax_amt;
811     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
812             l_new_row_num).unrounded_tax_amt := tax_line_rec.summary_tax_amt;
813 
814     -- Set tax_only_line_flag = 'Y' when line_level_action = 'LINE_INFO_TAX_ONLY'
815     --
816     IF tax_line_rec.line_level_action = 'LINE_INFO_TAX_ONLY' THEN
817       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
818                                    l_new_row_num).tax_only_line_flag := 'Y';
819     END IF;
820   END LOOP;  -- tax_line_rec IN get_alloc_detail_tax_lines_csr. Bug4262870 End
821 
822   -- set l_end_index
823   --
824   IF l_begin_index IS NOT NULL THEN
825     l_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
826   END IF;
827 
828   --
829   -- populate Process_For_Recovery_Flag
830   --
831   ZX_TDS_TAX_LINES_POPU_PKG.populate_recovery_flg(
832                                                 l_begin_index,
833                                                 l_end_index,
834                                                 p_event_class_rec,
835                                                 x_return_status,
836                                                 l_error_buffer);
837   IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
838     RETURN;
839   END IF;
840 
841   --
842   -- populate WHO columns and tax line id, also
843   -- check if all mandatory columns have values
844   --
845   ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line(
846                                                 l_begin_index,
847                                                 l_end_index,
848                                                 x_return_status,
849                                                 l_error_buffer);
850 
851   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
852     IF (g_level_unexpected >= g_current_runtime_level ) THEN
853       FND_LOG.STRING(g_level_unexpected,
854              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
855              'Incorrect return_status after calling ' ||
856              'ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line()');
857       FND_LOG.STRING(g_level_unexpected,
858              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
859              'RETURN_STATUS = ' || x_return_status);
860       FND_LOG.STRING(g_level_unexpected,
861              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
862              'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
863     END IF;
864     RETURN;
865   END IF;
866 
867   IF (g_level_event >= g_current_runtime_level ) THEN
868     FND_LOG.STRING(g_level_event,
869            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
870            'Detail tax lines created from imported summary tax lines:');
871     FND_LOG.STRING(g_level_event,
872            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
873            'l_begin_index = ' || l_begin_index);
874     FND_LOG.STRING(g_level_event,
875            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
876            'l_end_index = ' || l_end_index);
877     FND_LOG.STRING(g_level_event,
878            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
879            'RETURN_STATUS = ' || x_return_status);
880     FND_LOG.STRING(g_level_event,
881            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
882            'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
883   END IF;
884 
885 EXCEPTION
886   WHEN OTHERS THEN
887     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
888 
889     IF (g_level_unexpected >= g_current_runtime_level ) THEN
890       FND_LOG.STRING(g_level_unexpected,
891                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
892                   sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
893       FND_LOG.STRING(g_level_unexpected,
894                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines.END',
895                  'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(-)');
896     END IF;
897 
898 END prorate_imported_sum_tax_lines;
899 
900 /* ======================================================================*
901  |  Public PROCEDURE calculate_tax_for_import: This procedure is used    |
902  |  to perform additional tax applicability and call internal services   |
903  |  to do tax calculation. All the additional tax lines will be marked   |
904  |  self_assessed.                                                       |
905  * ======================================================================*/
906 PROCEDURE  calculate_tax_for_import (
907  p_trx_line_index         IN             BINARY_INTEGER,
908  p_event_class_rec        IN             zx_api_pub.event_class_rec_type,
909  p_tax_date               IN             DATE,
910  p_tax_determine_date     IN             DATE,
911  p_tax_point_date         IN             DATE,
912  x_return_status             OUT NOCOPY  VARCHAR2) IS
913 
914  CURSOR  get_imported_det_tax_lines_csr  IS
915  SELECT  /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
916          *
917    FROM  zx_detail_tax_lines_gt
918   WHERE  application_id =p_event_class_rec.application_id
919     AND  entity_code =p_event_class_rec.entity_code
920     AND  event_class_code =p_event_class_rec.event_class_code
921     AND  trx_id = p_event_class_rec.trx_id
922 --    AND  NVL(hdr_trx_user_key1, 'X') = NVL(p_event_class_rec.hdr_trx_user_key1, 'X')
923 --    AND  NVL(hdr_trx_user_key2, 'X') = NVL(p_event_class_rec.hdr_trx_user_key2, 'X')
924 --    AND  NVL(hdr_trx_user_key3, 'X') = NVL(p_event_class_rec.hdr_trx_user_key3, 'X')
925 --    AND  NVL(hdr_trx_user_key4, 'X') = NVL(p_event_class_rec.hdr_trx_user_key4, 'X')
926 --    AND  NVL(hdr_trx_user_key5, 'X') = NVL(p_event_class_rec.hdr_trx_user_key5, 'X')
927 --    AND  NVL(hdr_trx_user_key6, 'X') = NVL(p_event_class_rec.hdr_trx_user_key6, 'X')
928     AND  trx_line_id =
929          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
930     AND  trx_level_type =
931          ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
932 
933  l_begin_index             BINARY_INTEGER;
934  l_end_index               BINARY_INTEGER;
935  l_provider_id	           NUMBER;
936  l_error_buffer            VARCHAR2(240);
937  l_begin_index_additional  BINARY_INTEGER;
938  l_end_index_additional	   BINARY_INTEGER;
939  l_new_row_num             BINARY_INTEGER;
940  l_tax_regime_id           ZX_REGIMES_B.tax_regime_id%TYPE;
941  l_tax_id                  ZX_TAXES_B.tax_id%TYPE;
942  l_def_reg_type            ZX_TAXES_B.def_registr_party_type_code%TYPE;
943  l_reg_rule_flg            ZX_TAXES_B.registration_type_rule_flag%TYPE;
944  l_tax_rate                zx_lines.tax_rate%TYPE;
945  l_tax_amt_included_flag   zx_import_tax_lines_gt.tax_amt_included_flag%TYPE;
946 
947 BEGIN
948 
949   g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
950 
951   IF (g_level_event >= g_current_runtime_level ) THEN
952     FND_LOG.STRING(g_level_event,
953                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.BEGIN',
954                   'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(+)');
955   END IF;
956 
957   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
958 
959   -- pull in detail tax lines created from summary tax lines and perform
960   -- tax registration number determination
961   --
962   l_new_row_num :=
963             NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
964 
965   FOR imported_tax_line_rec IN get_imported_det_tax_lines_csr LOOP
966 
967     -- create a new tax line in g_detail_tax_lines_tbl
968     --
969     l_new_row_num := l_new_row_num + 1;
970     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num) :=
971                                                        imported_tax_line_rec;
972     -- set l_begin_index
973     --
974     IF l_begin_index IS NULL THEN
975       l_begin_index := l_new_row_num;
976     END IF;
977 
978     -- get l_def_reg_type and l_reg_rule_flg from tax chche
979     --
980     l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
981                                                          l_new_row_num).tax_id;
982     l_def_reg_type := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
983                                           l_tax_id).def_registr_party_type_code;
984     l_reg_rule_flg := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
985                                           l_tax_id).registration_type_rule_flag;
986 
987     ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration(
988                  p_event_class_rec,
989                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
990                                                  l_new_row_num).tax_regime_code,
991                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
992                                                           l_new_row_num).tax_id,
993                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
994                                                              l_new_row_num).tax,
995                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
996                                               l_new_row_num).tax_determine_date,
997                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
998                                            l_new_row_num).tax_jurisdiction_code,
999                  l_def_reg_type,
1000                  l_reg_rule_flg,
1001                  p_trx_line_index,
1002                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1003                                          l_new_row_num).tax_registration_number,
1004                  l_tax_amt_included_flag,
1005                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1006                                               l_new_row_num).self_assessed_flag,
1007                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1008                                        l_new_row_num).tax_reg_num_det_result_id,
1009                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1010                                               l_new_row_num).rounding_rule_code,
1011                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1012                                          l_new_row_num).registration_party_type,
1013                  x_return_status);
1014 
1015     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1016       IF (g_level_statement >= g_current_runtime_level ) THEN
1017         FND_LOG.STRING(g_level_statement,
1018                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1019                'Incorrect return_status after calling ' ||
1020                'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration');
1021         FND_LOG.STRING(g_level_statement,
1022                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1023                'RETURN_STATUS = ' || x_return_status);
1024         FND_LOG.STRING(g_level_statement,
1025                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1026                'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1027       END IF;
1028       RETURN;
1029     END IF;
1030 
1031     -- get registration number for legal entity
1032     --
1033     ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration(
1034                                   p_event_class_rec => p_event_class_rec,
1035                                   p_trx_line_index  => p_trx_line_index,
1036                                   p_tax_line_index  => l_new_row_num,
1037                                   x_return_status   => x_return_status,
1038                                   x_error_buffer    => l_error_buffer);
1039 
1040     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1041       IF (g_level_statement >= g_current_runtime_level ) THEN
1042         FND_LOG.STRING(g_level_statement,
1043                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1044                'Incorrect return_status after calling ' ||
1045                'ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration');
1046         FND_LOG.STRING(g_level_statement,
1047                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1048                'RETURN_STATUS = ' || x_return_status);
1049         FND_LOG.STRING(g_level_statement,
1050                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1051                'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1052       END IF;
1053       RETURN;
1054     END IF;
1055 
1056     -- If tax_amt_included_flag from summary tax line is null, get
1057     -- l_tax_amt_included_flag with tax registration and populate it onto
1058     -- detail tax line
1059     --
1060     IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1061                                l_new_row_num).tax_amt_included_flag IS NULL THEN
1062        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1063               l_new_row_num).tax_amt_included_flag := l_tax_amt_included_flag;
1064 
1065     END IF;
1066 
1067     -- calculate taxable basis for imported tax lines
1068     --
1069     l_tax_rate := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1070                                                     l_new_row_num).tax_rate;
1071     IF l_tax_rate <> 0 THEN
1072 
1073       -- Bug 3518261: Calculate taxable_amt for imported tax lines
1074       --
1075 
1076       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1077                                  l_new_row_num).unrounded_taxable_amt:=
1078                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1079                                l_new_row_num).unrounded_tax_amt/l_tax_rate*100;
1080 
1081     ELSE   -- l_tax_rate = 0
1082 
1083       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1084                                   l_new_row_num).unrounded_tax_amt = 0  THEN
1085         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1086                                      l_new_row_num).unrounded_taxable_amt :=
1087            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index);
1088 
1089       ELSE
1090         x_return_status := FND_API.G_RET_STS_ERROR;
1091         IF (g_level_unexpected >= g_current_runtime_level ) THEN
1092           FND_LOG.STRING(g_level_unexpected,
1093                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1094                  'Tax_rate = 0, tax_amt <> 0. ' ||
1095                  'Cannot calculate taxable basis amount.');
1096           FND_LOG.STRING(g_level_unexpected,
1097                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1098                  'x_return_status = ' || x_return_status);
1099           FND_LOG.STRING(g_level_unexpected,
1100                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1101                  'ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis (-)');
1102         END IF;
1103 
1104         FND_MESSAGE.SET_NAME('ZX','ZX_IMP_TAX_RATE_AMT_MISMATCH');
1105 
1106         -- FND_MSG_PUB.Add;
1107         ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
1108            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
1109         ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
1110            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
1111 
1112         ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
1113 
1114         RETURN;
1115       END IF;
1116     END IF;    -- l_tax_rate <> 0 OR ELSE
1117 
1118   END LOOP;    -- imported_tax_line_rec IN get_imported_det_tax_lines_csr
1119 
1120   -- set l_end_index
1121   --
1122   IF l_begin_index IS NOT NULL THEN
1123 
1124     l_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
1125 
1126     -- delete the pulled-in tax lines from zx_detail_tax_lines_gt
1127     --
1128     DELETE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
1129       FROM  zx_detail_tax_lines_gt
1130      WHERE application_id =p_event_class_rec.application_id
1131        AND entity_code =p_event_class_rec.entity_code
1132        AND event_class_code =p_event_class_rec.event_class_code
1133        AND trx_id = p_event_class_rec.trx_id
1134        AND trx_line_id =
1135            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1136        AND trx_level_type =
1137            ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
1138 
1139     IF (g_level_procedure >= g_current_runtime_level ) THEN
1140       FND_LOG.STRING(g_level_procedure,
1141                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1142                     'Begin_index and end_index for detail tax lines created ' ||
1143                     'from summary tax_line');
1144       FND_LOG.STRING(g_level_procedure,
1145                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1146                     'l_begin_index :=' || l_begin_index);
1147       FND_LOG.STRING(g_level_procedure,
1148                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1149                     'l_end_index :=' || l_end_index);
1150     END IF;
1151 
1152     -- copy transaction information
1153     --
1154     ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
1155       		 p_trx_line_index,
1156       		 l_begin_index,
1157       		 l_end_index,
1158       		 x_return_status,
1159       		 l_error_buffer );
1160 
1161     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1162       IF (g_level_statement >= g_current_runtime_level ) THEN
1163         FND_LOG.STRING(g_level_statement,
1164                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1165                'Incorrect return_status after calling '||
1166                'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
1167         FND_LOG.STRING(g_level_statement,
1168                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1169                'RETURN_STATUS = ' || x_return_status);
1170         FND_LOG.STRING(g_level_statement,
1171                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1172                'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1173       END IF;
1174       RETURN;
1175     END IF;
1176 
1177     -- bug 6634198: set orig_tax_amt
1178     --
1179     FOR i IN NVL(l_begin_index, 0) .. NVL(l_end_index, -1) LOOP
1180       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_amt_included_flag = 'Y' THEN
1181 
1182         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_tax_amt :=
1183             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).line_amt * l_tax_rate/(100+l_tax_rate);
1184 
1185       ELSE
1186         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).orig_tax_amt :=
1187            ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).line_amt * l_tax_rate/100;
1188       END IF;
1189      END LOOP;
1190   END IF;
1191 
1192   -- set l_begin_index_additional
1193   --
1194   l_begin_index_additional :=
1195         NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0) + 1;
1196 
1197 /* Bug 5688340: Rearranged the order of conditions in IF statement (ie. pulled
1198   adjusted_doc is NOT NULL condition before applied_from).
1199   The receipt application in AR causes a tax adjustment to be created in eBTax,
1200   if an earned discount is recognized. In this case, AR passes invoice info
1201   in adjusted doc columns and cash receipt info in applied from columns.
1202   In this case, tax calculation must be done using invoice (ie. adjusted doc info).
1203 */
1204 
1205   IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
1206                                               p_trx_line_index) IS NOT NULL
1207   THEN
1208 
1209     get_taxes_from_adjusted_to(
1210                 p_event_class_rec,
1211                 p_trx_line_index,
1212                 p_tax_date,
1213                 p_tax_determine_date,
1214                 p_tax_point_date,
1215                 l_begin_index,
1216                 l_end_index,
1217                 x_return_status);
1218 
1219     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1220       IF g_level_unexpected >= g_current_runtime_level THEN
1221         FND_LOG.STRING(g_level_unexpected,
1222                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1223                'Incorrect return_status after calling ' ||
1224                'ZX_TDS_TAX_ROUNDING_PKG.get_taxes_from_adjusted_to()');
1225         FND_LOG.STRING(g_level_unexpected,
1226                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1227                'RETURN_STATUS = ' || x_return_status);
1228         FND_LOG.STRING(g_level_unexpected,
1229                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1230                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1231       END IF;
1232       RETURN;
1233     END IF;
1234   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(
1235                                               p_trx_line_index) IS NOT NULL
1236   THEN
1237 
1238     get_taxes_from_applied_from(
1239                 p_event_class_rec,
1240                 p_trx_line_index,
1241                 p_tax_date,
1242                 p_tax_determine_date,
1243                 p_tax_point_date,
1244                 l_begin_index,
1245                 l_end_index,
1246                 x_return_status);
1247 
1248     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1249       IF g_level_unexpected >= g_current_runtime_level THEN
1250         FND_LOG.STRING(g_level_unexpected,
1251                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1252                'Incorrect return_status after calling ' ||
1253                'ZX_TDS_TAX_ROUNDING_PKG.get_taxes_from_applied_from()');
1254         FND_LOG.STRING(g_level_unexpected,
1255                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1256                'RETURN_STATUS = ' || x_return_status);
1257         FND_LOG.STRING(g_level_unexpected,
1258                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1259                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1260       END IF;
1261       RETURN;
1262     END IF;
1263 
1264   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1265                                   p_trx_line_index) ='LINE_INFO_TAX_ONLY' THEN
1266 
1267     -- Bug 3010729: skip performing additional applicability for trx lines with
1268     -- line level  action 'LINE_INFO_TAX_ONLY'
1269     --
1270     IF (g_level_statement >= g_current_runtime_level ) THEN
1271       FND_LOG.STRING(g_level_statement,
1272              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1273              'line_ level_action on trx line is LINE_INFO_TAX_ONLY, ' ||
1274              'skip performing additional applicability ');
1275       FND_LOG.STRING(g_level_statement,
1276              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1277              'RETURN_STATUS = ' || x_return_status);
1278       FND_LOG.STRING(g_level_statement,
1279              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1280              'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1281     END IF;
1282     RETURN;
1283 
1284   ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1285                                    p_trx_line_index) ='CREATE'
1286      OR (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1287                                    p_trx_line_index) ='CREATE_WITH_TAX'
1288          AND p_event_class_rec.perf_addnl_appl_for_imprt_flag = 'Y')
1289   THEN
1290 
1291     IF p_event_class_rec.process_for_applicability_flag = 'Y' AND
1292        NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg, 'Y') = 'Y' AND
1293          -- for TM, check source_process_for_appl_flag to determine
1294          -- whether tax needs to be calcualted or not.
1295          NVL(p_event_class_rec.source_process_for_appl_flag, 'Y') = 'Y'
1296     THEN
1297 
1298       IF (g_level_procedure >= g_current_runtime_level ) THEN
1299         FND_LOG.STRING(g_level_procedure,
1300                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1301                'Start performing additional applicability process. ');
1302       END IF;
1303 
1304       /* Start: Added for Bug 4959835 */
1305       -- Based on the Regime Usage code, either direct rate determination
1306       -- processing has to be performed or it should goto the loop part below.
1307       -- If the Regime determination template is 'STCC' (non-location based)
1308       -- then, call get process results directly
1309       -- Else (for location based) call tax applicability.
1310 
1311       IF (g_level_statement >= g_current_runtime_level ) THEN
1312         FND_LOG.STRING(g_level_statement,
1313                'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1314                'template_usage_code = '||p_event_class_rec.template_usage_code);
1315       END IF;
1316 
1317       IF p_event_class_rec.template_usage_code = 'TAX_RULES'
1318       THEN
1319 
1320         -- The direct rate determination is coded in the applicability pkg
1321         -- in order to reuse some of the existing logic there.
1322         --
1323         ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(p_trx_line_index,
1324                                                           p_tax_date,
1325                                                           p_tax_determine_date,
1326                                                           p_tax_point_date,
1327                                                           p_event_class_rec,
1328                                                           l_begin_index,
1329                                                           l_end_index,
1330                                                           x_return_status);
1331 
1332          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1333            IF (g_level_unexpected >= g_current_runtime_level ) THEN
1334              FND_LOG.STRING(g_level_unexpected,
1335                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1336                     'Incorrect return_status after calling ' ||
1337                     'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results()');
1338     	       FND_LOG.STRING(g_level_unexpected,
1339                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1340                     'RETURN_STATUS = ' || x_return_status);
1341   	       FND_LOG.STRING(g_level_unexpected,
1342                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1343                     'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1344            END IF;
1345   	     RETURN;
1346   	   END IF;
1347 
1348 
1349       ELSE
1350 
1351         FOR regime_index IN
1352             NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.FIRST, 0)..
1353             NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.LAST, -1)
1354         LOOP
1355 
1356           IF  ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
1357                             regime_index).trx_line_index = p_trx_line_index  THEN
1358             -- Get tax_provider_id
1359             --
1360             l_tax_regime_id := ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
1361                                                       regime_index).tax_regime_id;
1362             l_provider_id := ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(
1363                                                  l_tax_regime_id).tax_provider_id;
1364             IF (l_provider_id IS NULL) THEN
1365 
1366               -- If the provider id is null, OTE needs to calculate tax
1367               --
1368               ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes (
1369                                    l_tax_regime_id,
1370                                    ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(
1371                                                 l_tax_regime_id).tax_regime_code,
1372                                    p_trx_line_index,
1373                                    p_event_class_rec,
1374                                    p_tax_date,
1375                                    p_tax_determine_date,
1376                                    p_tax_point_date,
1377                                    l_begin_index,
1378                                    l_end_index,
1379                                    x_return_status );
1380 
1381               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1382                 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1383                   FND_LOG.STRING(g_level_unexpected,
1384                          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1385                          'Incorrect return_status after calling ' ||
1386                          'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes()');
1387                   FND_LOG.STRING(g_level_unexpected,
1388                          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1389                          'RETURN_STATUS = ' || x_return_status);
1390                   FND_LOG.STRING(g_level_unexpected,
1391                          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1392                          'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1393                 END IF;
1394     	      RETURN;
1395     	    END IF;
1396             END IF;  -- For provider ID
1397           END IF;    -- For detail_regime for this transaction line
1398         END LOOP;    -- Loop For regime_index
1399       END IF;        -- template_usage_code = 'TAX_RULES
1400     END IF;          -- NVL(g_process_for_appl_flg, 'Y') = 'Y'
1401   END IF;            -- Get tax from other doc, or get additional applicable taxes
1402 
1403   -- set l_end_index_additional if l_end_index is not null
1404   --
1405   IF l_end_index IS NOT NULL AND l_end_index >= l_begin_index_additional THEN
1406     l_end_index_additional := l_end_index;
1407   END IF;
1408 
1409   -- bug fix 3438498
1410   -- When self_assess_tax_lines_flag is 'Y', set self_assessed_flag = 'Y'
1411   -- for all the newly founded detail tax lines.to keep the lines as self
1412   -- assessed for the second time calculation, set overriden_flag
1413   -- and orig_self_assessed_flag
1414   --
1415   IF p_event_class_rec.self_assess_tax_lines_flag ='Y' AND
1416      ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1417                                         p_trx_line_index) ='CREATE_WITH_TAX'
1418   THEN
1419     FOR i IN NVL(l_begin_index_additional, 0) .. NVL(l_end_index_additional, -1)
1420     LOOP
1421       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1422                                                i).self_assessed_flag := 'Y';
1423       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1424                                                  i).overridden_flag  := 'Y';
1425       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1426                                           i).orig_self_assessed_flag := 'X';
1427     END LOOP;
1428   END IF;
1429 
1430   -- call the internal processes only if tax created
1431   --
1432   IF l_begin_index_additional IS NOT NULL AND l_end_index_additional IS NOT NULL
1433   THEN
1434 
1435      -- get tax status
1436      --
1437      ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status (
1438 					l_begin_index_additional,
1439 					l_end_index_additional,
1440 					'TRX_LINE_DIST_TBL',
1441 					p_trx_line_index,
1442 					p_event_class_rec,
1443 					x_return_status,
1444 					l_error_buffer);
1445 
1446     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1447       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1448         FND_LOG.STRING(g_level_unexpected,
1449                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1450                       'Incorrect return_status after calling ' ||
1451                       'ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status()');
1452         FND_LOG.STRING(g_level_unexpected,
1453                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1454                       'RETURN_STATUS = ' || x_return_status);
1455         FND_LOG.STRING(g_level_unexpected,
1456                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1457                       'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1458       END IF;
1459       RETURN;
1460     END IF;
1461 
1462     -- get tax rate
1463     --
1464     ZX_TDS_RATE_DETM_PKG.get_tax_rate(
1465 				l_begin_index_additional,
1466 				l_end_index_additional,
1467 				p_event_class_rec,
1468 				'TRX_LINE_DIST_TBL',
1469 				p_trx_line_index,
1470 				x_return_status,
1471 				l_error_buffer );
1472 
1473     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1474       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1475         FND_LOG.STRING(g_level_unexpected,
1476                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1477                       'Incorrect return_status after calling ' ||
1478                       'ZX_TDS_RATE_DETM_PKG.get_tax_rate()');
1479         FND_LOG.STRING(g_level_unexpected,
1480                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1481                       'RETURN_STATUS = ' || x_return_status);
1482         FND_LOG.STRING(g_level_unexpected,
1483                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1484                       'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1485       END IF;
1486       RETURN;
1487     END IF;
1488 
1489     -- Get taxable basis
1490     --
1491     ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis(
1492 					l_begin_index_additional,
1493 					l_end_index_additional,
1494 					p_event_class_rec,
1495 					'TRX_LINE_DIST_TBL',
1496 					p_trx_line_index,
1497 					x_return_status,
1498 					l_error_buffer );
1499 
1500     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1501       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1502         FND_LOG.STRING(g_level_unexpected,
1503                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1504                       'Incorrect return_status after calling ' || '
1505                        ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis()');
1506         FND_LOG.STRING(g_level_unexpected,
1507                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1508                       'RETURN_STATUS = ' || x_return_status);
1509         FND_LOG.STRING(g_level_unexpected,
1510                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1511                       'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1512       END IF;
1513       RETURN;
1514     END IF;
1515 
1516     -- Calculate tax amount
1517     --
1518     ZX_TDS_CALC_PKG.get_tax_amount(
1519 				l_begin_index_additional,
1520 				l_end_index_additional,
1521 				p_event_class_rec,
1522 				'TRX_LINE_DIST_TBL',
1523 				p_trx_line_index,
1524 				x_return_status,
1525 				l_error_buffer );
1526 
1527     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1528       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1529         FND_LOG.STRING(g_level_unexpected,
1530                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1531                       'Incorrect return_status after calling ' ||
1532                       'ZX_TDS_CALC_PKG.Get_tax_amount()');
1533         FND_LOG.STRING(g_level_unexpected,
1534                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1535                       'RETURN_STATUS = ' || x_return_status);
1536         FND_LOG.STRING(g_level_unexpected,
1537                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1538                       'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1539       END IF;
1540       RETURN;
1541     END IF;
1542 
1543     --
1544     -- populate Process_For_Recovery_Flag
1545     --
1546     ZX_TDS_TAX_LINES_POPU_PKG.populate_recovery_flg(
1547                                                 l_begin_index,
1548                                                 l_end_index,
1549                                                 p_event_class_rec,
1550                                                 x_return_status,
1551                                                 l_error_buffer);
1552 
1553     IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
1554       RETURN;
1555     END IF;
1556 
1557     -- Call Internal_Flag Service to check mandatory columns, like WHO columns,
1558     -- line ids, etc, and populate values if they are missing.
1559     --
1560     ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line(
1561 						l_begin_index,
1562 						l_end_index,
1563 						x_return_status,
1564 						l_error_buffer);
1565 
1566     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1567       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1568         FND_LOG.STRING(g_level_unexpected,
1569                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1570                       'Incorrect return_status after calling ' ||
1571                       'ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line()');
1572         FND_LOG.STRING(g_level_unexpected,
1573                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1574                       'RETURN_STATUS = ' || x_return_status);
1575         FND_LOG.STRING(g_level_unexpected,
1576                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1577                       'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1578       END IF;
1579       RETURN;
1580     END IF;
1581   END IF;   -- l_begin_index_additional and l_end_index_additional not null
1582 
1583   IF (g_level_event >= g_current_runtime_level ) THEN
1584     FND_LOG.STRING(g_level_event,
1585                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1586                   'RETURN_STATUS = ' || x_return_status);
1587     FND_LOG.STRING(g_level_event,
1588                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1589                   'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1590   END IF;
1591 
1592 EXCEPTION
1593   WHEN OTHERS THEN
1594     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1595 
1596     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1597       FND_LOG.STRING(g_level_unexpected,
1598                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import',
1599                      sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1600       FND_LOG.STRING(g_level_unexpected,
1601                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import.END',
1602                     'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(-)');
1603     END IF;
1604 END calculate_tax_for_import;
1605 
1606 /* ======================================================================*
1607  | Private procedure  create_detail_tax_line                            |
1608  * ======================================================================*/
1609  PROCEDURE create_detail_tax_line (
1610   p_event_class_rec         IN 	           zx_api_pub.event_class_rec_type,
1611   p_tax_line_rec	    IN	    	   tax_line_rec_type,
1612   p_new_row_num		    IN		   NUMBER,
1613   p_tax_class               IN             zx_rates_b.tax_class%TYPE,
1614   x_return_status              OUT NOCOPY  VARCHAR2) IS
1615 
1616  l_tax_regime_rec	ZX_GLOBAL_STRUCTURES_PKG.tax_regime_rec_type;
1617  l_tax_rec		ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
1618  l_tax_status_rec	ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
1619  l_tax_jur_rec	        ZX_TDS_UTILITIES_PKG.zx_jur_info_cache_rec_type;
1620  l_tax_rate_rec         ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
1621 
1622  l_tax_date             DATE;
1623  l_tax_determine_date   DATE;
1624  l_tax_point_date       DATE;
1625  l_error_buffer		VARCHAR2(240);
1626 
1627 BEGIN
1628 
1629   x_return_status := FND_API.G_RET_STS_SUCCESS;
1630 
1631   IF (g_level_event >= g_current_runtime_level ) THEN
1632     FND_LOG.STRING(g_level_event,
1633                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.BEGIN',
1634                'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line(+)');
1635 
1636     FND_LOG.STRING(g_level_event,
1637                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1638                'new tax line created (tax := '|| p_tax_line_rec.tax || ')');
1639     FND_LOG.STRING(g_level_event,
1640                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1641                'tax_regime_code := '|| p_tax_line_rec.tax_regime_code);
1642   END IF;
1643 
1644   -- get tax dates
1645   --
1646   -- added for bug 5018766
1647   IF ( p_tax_line_rec.tax_date IS NULL )  THEN
1648 	  l_tax_date :=
1649 	    NVL(p_tax_line_rec.related_doc_date,
1650 	      NVL(p_tax_line_rec.provnl_tax_determination_date,
1651 	       NVL(p_tax_line_rec.adjusted_doc_date,
1652 		 NVL(p_tax_line_rec.trx_line_date, p_tax_line_rec.trx_date))));
1653   ELSE
1654          l_tax_date := p_tax_line_rec.tax_date ;
1655   END IF ;
1656 
1657   -- added for bug 5018766
1658   IF ( p_tax_line_rec.tax_determine_date IS NULL )  THEN
1659 	  l_tax_determine_date :=
1660 	    NVL(p_tax_line_rec.related_doc_date,
1661 	      NVL(p_tax_line_rec.provnl_tax_determination_date,
1662 	       NVL(p_tax_line_rec.adjusted_doc_date,
1663 		 NVL(p_tax_line_rec.trx_line_date, p_tax_line_rec.trx_date))));
1664   ELSE
1665       l_tax_determine_date := p_tax_line_rec.tax_determine_date;
1666   END IF ;
1667 
1668   -- added for bug 5018766
1669   IF ( p_tax_line_rec.tax_point_date IS NULL )  THEN
1670 	  l_tax_point_date :=
1671 	    NVL(p_tax_line_rec.related_doc_date,
1672 	      NVL(p_tax_line_rec.provnl_tax_determination_date,
1673 	       NVL(p_tax_line_rec.adjusted_doc_date,
1674 		 NVL(p_tax_line_rec.trx_line_date, p_tax_line_rec.trx_date))));
1675  ELSE
1676     l_tax_point_date := p_tax_line_rec.tax_point_date;
1677  END IF ;
1678 
1679   -- populate tax_regime_cache_info
1680   --
1681   ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
1682 			p_tax_line_rec.tax_regime_code,
1683 			l_tax_determine_date,
1684 			l_tax_regime_rec,
1685 			x_return_status,
1686 			l_error_buffer);
1687 
1688   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1689     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1690       FND_LOG.STRING(g_level_unexpected,
1691                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1692                     'Incorrect return_status after calling ' ||
1693                     'ZX_TDS_UTILITIES_PKG.get_regime_cache_info()');
1694       FND_LOG.STRING(g_level_unexpected,
1695                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1696                     'RETURN_STATUS = ' || x_return_status);
1697       FND_LOG.STRING(g_level_unexpected,
1698                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
1699                     'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
1700                     'create_detail_tax_line(-)');
1701     END IF;
1702     RETURN;
1703   END IF;
1704 
1705   -- populate tax cache, if it does not exist there.
1706   --
1707   ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
1708                         p_tax_line_rec.tax_regime_code,
1709 			p_tax_line_rec.tax,
1710 			l_tax_determine_date,
1711 			l_tax_rec,
1712 			x_return_status,
1713                         l_error_buffer);
1714 
1715   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1716     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1717       FND_LOG.STRING(g_level_unexpected,
1718                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1719                     'Incorrect return_status after calling ' ||
1720                     'ZX_TDS_UTILITIES_PKG.get_tax_cache_info()');
1721       FND_LOG.STRING(g_level_unexpected,
1722                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1723                     'RETURN_STATUS = ' || x_return_status);
1724       FND_LOG.STRING(g_level_unexpected,
1725                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
1726                     'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
1727                     'create_detail_tax_line(-)');
1728     END IF;
1729     RETURN;
1730   END IF;
1731 --jurcode
1732   -- populate jurisdiction cache, if it does not exist there.
1733   --
1734   IF p_tax_line_rec.tax_jurisdiction_code IS NOT NULL THEN
1735 
1736     ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
1737                         p_tax_line_rec.tax_regime_code,
1738 			p_tax_line_rec.tax,
1739 			p_tax_line_rec.tax_jurisdiction_code,
1740 			l_tax_determine_date,
1741 			l_tax_jur_rec,
1742 			x_return_status,
1743                         l_error_buffer);
1744 
1745     IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1746       IF (g_level_unexpected >= g_current_runtime_level ) THEN
1747         FND_LOG.STRING(g_level_unexpected,
1748                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1749                       'Incorrect return_status after calling ' ||
1750                       'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info()');
1751         FND_LOG.STRING(g_level_unexpected,
1752                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1753                       'RETURN_STATUS = ' || x_return_status);
1754         FND_LOG.STRING(g_level_unexpected,
1755                       'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
1756                       'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
1757                       'create_detail_tax_line(-)');
1758       END IF;
1759       RETURN;
1760     END IF;
1761   END IF;
1762 --endjurcode
1763   -- populate tax_status_cahce_info
1764   --
1765   ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
1766 			p_tax_line_rec.tax,
1767 			p_tax_line_rec.tax_regime_code,
1768 			p_tax_line_rec.tax_status_code,
1769 			l_tax_determine_date,
1770 			l_tax_status_rec,
1771 			x_return_status,
1772 			l_error_buffer);
1773 
1774   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1775     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1776       FND_LOG.STRING(g_level_unexpected,
1777                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1778                     'Incorrect return_status after calling ' ||
1779                     'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info()');
1780       FND_LOG.STRING(g_level_unexpected,
1781                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1782                     'RETURN_STATUS = ' || x_return_status);
1783       FND_LOG.STRING(g_level_unexpected,
1784                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
1785                     'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
1786                     'create_detail_tax_line(-)');
1787     END IF;
1788     RETURN;
1789   END IF;
1790 
1791   -- populate tax_rate_id
1792   --
1793   -- validate and populate tax_rate_id
1794   --
1795   ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
1796   		p_tax_line_rec.tax_regime_code,
1797                 p_tax_line_rec.tax,
1798                 p_tax_line_rec.tax_jurisdiction_code,
1799                 p_tax_line_rec.tax_status_code,
1800                 p_tax_line_rec.tax_rate_code,
1801   		l_tax_determine_date,
1802                 p_tax_class,
1803   		l_tax_rate_rec,
1804   		x_return_status,
1805     		l_error_buffer);
1806   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_new_row_num).tax_rate_id
1807       :=   l_tax_rate_rec.tax_rate_id;
1808 
1809   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1810     IF (g_level_unexpected >= g_current_runtime_level ) THEN
1811       FND_LOG.STRING(g_level_unexpected,
1812                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1813                     'After calling ZX_TDS_UTILITIES_PKG.get_tax_rate_info()');
1814       FND_LOG.STRING(g_level_unexpected,
1815                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
1816                     'RETURN_STATUS = ' || x_return_status);
1817       FND_LOG.STRING(g_level_unexpected,
1818                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
1819                     'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
1820                     'create_detail_tax_line(-)');
1821     END IF;
1822     RETURN;
1823   END IF;
1824 
1825   IF (g_level_event >= g_current_runtime_level ) THEN
1826     FND_LOG.STRING(g_level_event,
1827                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
1828                   'summary_tax_line_number := '||
1829                    p_tax_line_rec.summary_tax_line_number);
1830     FND_LOG.STRING(g_level_event,
1831                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
1832                   'tax_regime_code := ' || p_tax_line_rec.tax_regime_code);
1833     FND_LOG.STRING(g_level_event,
1834                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines',
1835                   'tax := ' || p_tax_line_rec.tax);
1836   END IF;
1837 
1838   -- populate tax_line_id from Sequence
1839   --
1840   /*
1841    * populate in ZX_TDS_TAX_LINES_POPU_PKG
1842    *
1843    * SELECT zx_lines_s.NEXTVAL INTO
1844    *        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1845    *                                 p_new_row_num).tax_line_id from dual;
1846    */
1847 
1848   -- populate tax_regime_id, tax_id, tax_status_id, tax_rate_id
1849   --
1850   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1851                 p_new_row_num).tax_regime_id := l_tax_regime_rec.tax_regime_id;
1852   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1853                                      p_new_row_num).tax_id := l_tax_rec.tax_id;
1854 
1855   -- bug 5077691: populate legal_reporting_status
1856   IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
1857     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1858                 p_new_row_num).legal_reporting_status :=
1859                                      l_tax_rec.legal_reporting_status_def_val;
1860   END IF;
1861 
1862   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1863                                      p_new_row_num).tax_jurisdiction_id :=
1864                                              l_tax_jur_rec.tax_jurisdiction_id;
1865   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1866                 p_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
1867 
1868   -- populate data from summary tax line
1869   --
1870   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1871           p_new_row_num).tax_regime_code := p_tax_line_rec.tax_regime_code;
1872   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1873                                   p_new_row_num).tax := p_tax_line_rec.tax;
1874   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1875           p_new_row_num).tax_status_code := p_tax_line_rec.tax_status_code;
1876   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1877               p_new_row_num).tax_rate_code := p_tax_line_rec.tax_rate_code;
1878   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1879                         p_new_row_num).tax_rate := p_tax_line_rec.tax_rate;
1880 
1881   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1882                         p_new_row_num).tax_jurisdiction_code :=
1883                                        p_tax_line_rec.tax_jurisdiction_code;
1884   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1885                         p_new_row_num).tax_amt_included_flag :=
1886                                        p_tax_line_rec.tax_amt_included_flag;
1887   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1888          p_new_row_num).tax_exception_id := p_tax_line_rec.tax_exception_id;
1889   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1890          p_new_row_num).tax_exemption_id := p_tax_line_rec.tax_exemption_id;
1891   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1892      p_new_row_num).exempt_reason_code := p_tax_line_rec.exempt_reason_code;
1893   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1894      p_new_row_num).exempt_certificate_number :=
1895                                    p_tax_line_rec.exempt_certificate_number;
1896 
1897   -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
1898   -- populate process_for_recovery_flag to 'N'. If it is 'Y', check
1899   -- reporting_only_flag to set tax_recovery_flag
1900   --
1901   /*
1902    * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
1903    *
1904    * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
1905    *   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1906    *                             p_new_row_num).process_for_recovery_flag := 'N';
1907    *  ELSE
1908    *  IF NVL(l_tax_rec.reporting_only_flag, 'N') <> 'Y' THEN
1909    *                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1910    *                              p_new_row_num).process_for_recovery_flag := 'Y';
1911    *  ELSE
1912    *     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1913    *                             p_new_row_num).process_for_recovery_flag := 'N';
1914    *   END IF;
1915    *  END IF;
1916    */
1917 
1918   -- populate rounding_lvl_party_tax_prof_id and rounding_level_code
1919   --
1920   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1921                            p_new_row_num).rounding_lvl_party_tax_prof_id :=
1922                       ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id;
1923   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1924                                   p_new_row_num).rounding_lvl_party_type :=
1925                         ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type;
1926   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1927                                           p_new_row_num).rounding_level_code :=
1928                                  ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level;
1929 
1930   -- populate tax dates
1931   --
1932   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1933                                          p_new_row_num).tax_date := l_tax_date;
1934   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1935                      p_new_row_num).tax_determine_date := l_tax_determine_date;
1936   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1937                              p_new_row_num).tax_point_date := l_tax_point_date;
1938 
1939   -- bug 3282018: set manually_entered_flag='Y', last_manual_entry='TAX_AMOUNT'
1940   --
1941   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1942                                     p_new_row_num).manually_entered_flag := 'Y';
1943   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1944                                p_new_row_num).last_manual_entry := 'TAX_AMOUNT';
1945 
1946   -- set self_assesses_flag = 'N' for all detail tax lines created from summary
1947   -- tax lines
1948   --
1949   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1950                                        p_new_row_num).self_assessed_flag := 'N';
1951 
1952   -- set proration_code
1953   --
1954   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1955                               p_new_row_num).proration_code := 'REGULAR_IMPORT';
1956 
1957   -- populate mandatory columns
1958   --
1959   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1960                        p_new_row_num).internal_organization_id :=
1961                                         p_tax_line_rec.internal_organization_id;
1962   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1963               p_new_row_num).application_id := p_event_class_rec.application_id;
1964   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1965                     p_new_row_num).entity_code := p_event_class_rec.entity_code;
1966   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1967           p_new_row_num).event_class_code := p_event_class_rec.event_class_code;
1968   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1969             p_new_row_num).event_type_code := p_event_class_rec.event_type_code;
1970   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1971                               p_new_row_num).trx_id := p_event_class_rec.trx_id;
1972   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1973                        p_new_row_num).trx_line_id := p_tax_line_rec.trx_line_id;
1974   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1975                  p_new_row_num).trx_level_type := p_tax_line_rec.trx_level_type;
1976 
1977   -- Bug#457200-  populate content_owner_id
1978   --
1979   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1980                 p_new_row_num).content_owner_id := p_event_class_rec.first_pty_org_id;
1981 
1982   -- populate interface_tax_line_id, interface_entity_code for AR import service
1983   --
1984   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1985    p_new_row_num).interface_tax_line_id := p_tax_line_rec.interface_tax_line_id;
1986   ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1987    p_new_row_num).interface_entity_code := p_tax_line_rec.interface_entity_code;
1988 
1989   /*
1990    * populate WHO columns in ZX_TDS_TAX_LINES_POPU_PKG
1991    *
1992    * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1993    *                                p_new_row_num).created_by := fnd_global.user_id;
1994    * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1995    *                                    p_new_row_num).creation_date :=  sysdate;
1996    * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1997    *                         p_new_row_num).last_updated_by := fnd_global.user_id;
1998    * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1999    *                                  p_new_row_num).last_update_date :=  sysdate;
2000    * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2001    *                     p_new_row_num).last_update_login := fnd_global.login_id;
2002    */
2003 
2004   IF (g_level_event >= g_current_runtime_level ) THEN
2005     FND_LOG.STRING(g_level_event,
2006                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
2007                   'RETURN_STATUS = ' || x_return_status);
2008     FND_LOG.STRING(g_level_event,
2009                   'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
2010                   'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line(-)');
2011   END IF;
2012 
2013 EXCEPTION
2014   WHEN OTHERS THEN
2015     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2016 
2017     IF (g_level_unexpected >= g_current_runtime_level ) THEN
2018       FND_LOG.STRING(g_level_unexpected,
2019                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line',
2020                      sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2021       FND_LOG.STRING(g_level_unexpected,
2022                     'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line.END',
2023                     'ZX_TDS_IMPORT_DOCUMENT_PKG.create_detail_tax_line(-)');
2024     END IF;
2025 
2026 END create_detail_tax_line;
2027 
2028 ----------------------------------------------------------------------
2029 --  PROCEDURE
2030 --   get_taxes_from_applied_from
2031 --
2032 --  DESCRIPTION
2033 --
2034 --  This procedure get detail tax lines from applied from document
2035 --
2036 --  IN      p_trx_line_index
2037 --
2038 --  IN OUT NOCOPY
2039 --          x_begin_index
2040 --          x_end_index
2041 --  OUT NOCOPY     x_return_status
2042 
2043 PROCEDURE get_taxes_from_applied_from(
2044   p_event_class_rec	   IN 		        zx_api_pub.event_class_rec_type,
2045   p_trx_line_index	   IN	       	  	BINARY_INTEGER,
2046   p_tax_date		   IN   	 	DATE,
2047   p_tax_determine_date     IN   	 	DATE,
2048   p_tax_point_date         IN   	 	DATE,
2049   x_begin_index 	   IN OUT NOCOPY	BINARY_INTEGER,
2050   x_end_index		   IN OUT NOCOPY	BINARY_INTEGER,
2051   x_return_status	   OUT NOCOPY 	        VARCHAR2) IS
2052 
2053  CURSOR get_tax_lines_csr IS
2054    SELECT * FROM zx_lines
2055     WHERE application_id =
2056           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(p_trx_line_index)
2057       AND entity_code =
2058           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(p_trx_line_index)
2059       AND event_class_code  =
2060           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(p_trx_line_index)
2061       AND trx_id =
2062           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(p_trx_line_index)
2063       AND trx_line_id =
2064           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(p_trx_line_index)
2065       AND trx_level_type =
2066           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(p_trx_line_index)
2067       AND tax_provider_id IS NULL
2068       AND cancel_flag<> 'Y'
2069       AND offset_link_to_tax_line_id IS NULL
2070       AND mrc_tax_line_flag = 'N';
2071 
2072  l_new_row_num			NUMBER;
2073  l_error_buffer			VARCHAR2(200);
2074  l_line_amt_current		NUMBER;
2075  l_orig_begin_index 		BINARY_INTEGER;
2076  l_orig_end_index 		BINARY_INTEGER;
2077  l_tax_tbl_index		NUMBER;
2078 
2079  l_tax_regime_rec   	        zx_global_structures_pkg.tax_regime_rec_type;
2080  l_tax_rec                      ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
2081  l_tax_jur_rec	                ZX_TDS_UTILITIES_PKG.zx_jur_info_cache_rec_type;
2082  l_tax_status_rec               ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
2083 
2084 BEGIN
2085 
2086   IF (g_level_procedure >= g_current_runtime_level ) THEN
2087     FND_LOG.STRING(g_level_procedure,
2088        'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.BEGIN',
2089        'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from(+)');
2090     FND_LOG.STRING(g_level_procedure,
2091        'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2092        'p_trx_line_index = ' || to_char(p_trx_line_index));
2093   END IF;
2094 
2095   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
2096 
2097   -- initialize local variables
2098   --
2099   -- bug fix 4867933 begin
2100   -- l_new_row_num := NVL(x_end_index, 0);
2101   l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
2102   l_orig_begin_index := x_begin_index;
2103   l_orig_end_index := x_end_index;
2104 
2105   FOR tax_line_rec in get_tax_lines_csr LOOP
2106 
2107     l_tax_tbl_index := ZX_TDS_UTILITIES_PKG.get_tax_index (
2108        tax_line_rec.tax_regime_code,
2109        tax_line_rec.tax,
2110        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index),
2111        ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index),
2112        l_orig_begin_index,
2113        l_orig_end_index,
2114        x_return_status);
2115 
2116     IF l_tax_tbl_index IS NULL THEN
2117 
2118       -- This is a missing tax line, create a new detail tax line in
2119       -- g_detail_tax_lines_tbl
2120       --
2121       l_new_row_num := l_new_row_num +1;
2122 
2123       -- populate tax related information from tax_line_rec
2124       --
2125       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2126                      l_new_row_num).tax_regime_code:=tax_line_rec.tax_regime_code;
2127       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2128                                           l_new_row_num).tax := tax_line_rec.tax;
2129       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2130                      l_new_row_num).tax_status_code:=tax_line_rec.tax_status_code;
2131 
2132       -- validate and populate tax_regime_id
2133       --
2134       ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
2135     			tax_line_rec.tax_regime_code,
2136     			p_tax_determine_date,
2137     			l_tax_regime_rec,
2138     			x_return_status,
2139     			l_error_buffer);
2140 
2141       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
2142         IF (g_level_statement >= g_current_runtime_level ) THEN
2143           FND_LOG.STRING(g_level_statement,
2144                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2145                  'Incorrect return_status after calling ' ||
2146                  'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
2147           FND_LOG.STRING(g_level_statement,
2148                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2149                  'RETURN_STATUS = ' || x_return_status);
2150           FND_LOG.STRING(g_level_statement,
2151                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2152                  'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_from_applied_from(-)');
2153         END IF;
2154         RETURN;
2155       END IF;
2156 
2157       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2158                       l_new_row_num).tax_regime_id :=
2159                                       l_tax_regime_rec.tax_regime_id;
2160 
2161       -- validate and populate tax_id
2162       --
2163       ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
2164     			tax_line_rec.tax_regime_code,
2165                         tax_line_rec.tax,
2166     			p_tax_determine_date,
2167     			l_tax_rec,
2168     			x_return_status,
2169     			l_error_buffer);
2170 
2171       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
2172         IF (g_level_statement >= g_current_runtime_level ) THEN
2173           FND_LOG.STRING(g_level_statement,
2174                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2175                  'Incorrect return_status after calling ' ||
2176                  'ZX_TDS_UTILITIES_PKG.get_tax_cache_info');
2177           FND_LOG.STRING(g_level_statement,
2178                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2179                  'RETURN_STATUS = ' || x_return_status);
2180           FND_LOG.STRING(g_level_statement,
2181                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2182                  'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_from_applied_from(-)');
2183         END IF;
2184         RETURN;
2185       END IF;
2186 
2187       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2188                                       l_new_row_num).tax_id := l_tax_rec.tax_id;
2189 
2190       -- bug 5077691: populate legal_reporting_status
2191       IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
2192         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2193                     l_new_row_num).legal_reporting_status :=
2194                                        l_tax_rec.legal_reporting_status_def_val;
2195       END IF;
2196 
2197       --jurcode
2198       -- populate jurisdiction cache, if it does not exist there.
2199       --
2200       IF tax_line_rec.tax_jurisdiction_code IS NOT NULL THEN
2201 
2202         ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
2203                             tax_line_rec.tax_regime_code,
2204     			    tax_line_rec.tax,
2205     			    tax_line_rec.tax_jurisdiction_code,
2206     			    p_tax_determine_date,
2207     			    l_tax_jur_rec,
2208     			    x_return_status,
2209                             l_error_buffer);
2210 
2211 
2212         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2213           IF (g_level_unexpected >= g_current_runtime_level ) THEN
2214             FND_LOG.STRING(g_level_unexpected,
2215                           'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2216                           'Incorrect return_status after calling ' ||
2217                           'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info()');
2218             FND_LOG.STRING(g_level_unexpected,
2219                           'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2220                           'RETURN_STATUS = ' || x_return_status);
2221             FND_LOG.STRING(g_level_unexpected,
2222                           'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2223                           'ZX_TDS_IMPORT_DOCUMENT_PKG.' ||
2224                           'create_detail_tax_line(-)');
2225           END IF;
2226           RETURN;
2227         END IF;
2228 
2229         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2230                              l_new_row_num).tax_jurisdiction_id :=
2231                                               l_tax_jur_rec.tax_jurisdiction_id;
2232       END IF;
2233 
2234       -- validate and populate tax_status_id
2235       --
2236       ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
2237                         tax_line_rec.tax,
2238     			tax_line_rec.tax_regime_code,
2239                         tax_line_rec.tax_status_code,
2240     			p_tax_determine_date,
2241     			l_tax_status_rec,
2242     			x_return_status,
2243     			l_error_buffer);
2244 
2245       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
2246         IF (g_level_statement >= g_current_runtime_level ) THEN
2247           FND_LOG.STRING(g_level_statement,
2248                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2249                  'Incorrect return_status after calling ' ||
2250                  'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
2251           FND_LOG.STRING(g_level_statement,
2252                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2253                  'RETURN_STATUS = ' || x_return_status);
2254           FND_LOG.STRING(g_level_statement,
2255                  'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2256                  'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_from_applied_from(-)');
2257         END IF;
2258         RETURN;
2259       END IF;
2260 
2261       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2262                  l_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
2263 
2264       -- populate taxable_basis_formula and tax_calculation_formula
2265       --
2266       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2267                                    l_new_row_num).taxable_basis_formula :=
2268                                                tax_line_rec.taxable_basis_formula;
2269       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2270                                    l_new_row_num).tax_calculation_formula :=
2271                                              tax_line_rec.tax_calculation_formula;
2272 
2273       -- 1. If applied_amt_handling_flag ='P', populate tax rate percentage from
2274       --    applied from document. Tax is proarted based the amount applied.
2275       -- 2. If applied_amt_handling_flag ='R', populate tax rate Code from
2276       --    applied document. Tax rate is determined in the current document.
2277       --    Tax is recalculated based one the tax rate in the current document.
2278 
2279       IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2280            tax_line_rec.tax_id).applied_amt_handling_flag = 'P' THEN
2281 
2282         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2283                      l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
2284         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2285                          l_new_row_num).tax_rate_id := tax_line_rec.tax_rate_id;
2286         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2287                               l_new_row_num).tax_rate :=  tax_line_rec.tax_rate;
2288 
2289       ELSIF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2290            tax_line_rec.tax_id).applied_amt_handling_flag = 'R' THEN
2291 
2292         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2293                      l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
2294 
2295         IF tax_line_rec.line_amt <> 0 THEN
2296 
2297           -- prorate prd_total_tax_amt, prd_total_tax_amt_tax_curr and
2298           -- prd_total_tax_amt_funcl_curr
2299           --
2300           l_line_amt_current :=
2301             ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index);
2302 
2303           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2304              l_new_row_num).prd_total_tax_amt := tax_line_rec.tax_amt *
2305                                        (l_line_amt_current/tax_line_rec.line_amt);
2306           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2307                             l_new_row_num).prd_total_tax_amt_tax_curr :=
2308                                  tax_line_rec.tax_amt_tax_curr *
2309                                          l_line_amt_current/tax_line_rec.line_amt;
2310 
2311           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2312                           l_new_row_num).prd_total_tax_amt_funcl_curr :=
2313                                  tax_line_rec.tax_amt_funcl_curr *
2314                                          l_line_amt_current/tax_line_rec.line_amt;
2315 
2316           -- do rounding. May be moved to rounding package later
2317           --
2318           IF tax_line_rec.ledger_id IS NOT NULL THEN
2319             ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2320                         l_new_row_num).prd_total_tax_amt_funcl_curr :=
2321                    ZX_TRD_SERVICES_PUB_PKG.round_amt_to_mau (
2322                         tax_line_rec.ledger_id,
2323                         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2324                                   l_new_row_num).prd_total_tax_amt_funcl_curr);
2325 
2326             IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2327               IF (g_level_statement >= g_current_runtime_level ) THEN
2328                 FND_LOG.STRING(g_level_statement,
2329                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2330                    'Incorrect return_status after calling ' ||
2331                    'ZX_TRD_SERVICES_PUB_PKG.round_amt_to_mau');
2332                 FND_LOG.STRING(g_level_statement,
2333                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2334                    'RETURN_STATUS = ' || x_return_status);
2335                 FND_LOG.STRING(g_level_statement,
2336                    'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2337                    'ZX_APPLICABILITY_DETM_PKG.get_taxes_from_applied_from(-)');
2338               END IF;
2339               RETURN;
2340             END IF;
2341           END IF;     -- tax_line_rec.line_amt <> 0
2342         END IF;       -- tax_line_rec.ledger_id IS NOT NULL
2343       END IF;         -- applied_amt_handling_flag = 'P' or 'R'
2344 
2345       -- Populate other doc line amt, taxable amt and tax amt
2346       --
2347       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2348                       l_new_row_num).other_doc_line_amt := tax_line_rec.line_amt;
2349 
2350       -- bug 7024219
2351       --
2352       IF NVL(tax_line_rec.historical_flag, 'N') = 'Y' THEN
2353 
2354         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2355            l_new_row_num).other_doc_line_taxable_amt :=
2356                NVL(tax_line_rec.unrounded_taxable_amt, tax_line_rec.taxable_amt);
2357 
2358         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2359            l_new_row_num).other_doc_line_tax_amt :=
2360                       NVL(tax_line_rec.unrounded_tax_amt, tax_line_rec.tax_amt);
2361 
2362       ELSE
2363 
2364         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2365                            l_new_row_num).other_doc_line_taxable_amt :=
2366                                               tax_line_rec.unrounded_taxable_amt;
2367         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2368                            l_new_row_num).other_doc_line_tax_amt :=
2369                                                   tax_line_rec.unrounded_tax_amt;
2370       END IF;
2371 
2372       -- Set copied_from_other_doc_flag to 'Y'
2373       --
2374       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2375                                 l_new_row_num).copied_from_other_doc_flag := 'Y';
2376 
2377       -- set other_doc_source
2378       --
2379       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2380                                 l_new_row_num).other_doc_source := 'APPLIED_FROM';
2381 
2382       -- populate manually_entered_flag, overridden_flag and last_manual_entry
2383       --
2384       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2385                                     l_new_row_num).manually_entered_flag := 'Y';
2386       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2387                                            l_new_row_num).overridden_flag := 'Y';
2388       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2389                                 l_new_row_num).last_manual_entry := 'TAX_AMOUNT';
2390 
2391       -- populate other columns
2392       --
2393       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2394            l_new_row_num).rounding_level_code := tax_line_rec.rounding_level_code;
2395       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2396              l_new_row_num).rounding_rule_code := tax_line_rec.rounding_rule_code;
2397       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2398                                             l_new_row_num).tax_date := p_tax_date;
2399       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2400                         l_new_row_num).tax_determine_date := p_tax_determine_date;
2401       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2402                                 l_new_row_num).tax_point_date := p_tax_point_date;
2403       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2404                            l_new_row_num).offset_flag := tax_line_rec.offset_flag;
2405 
2406       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2407                   l_new_row_num).place_of_supply := tax_line_rec.place_of_supply;
2408       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2409          l_new_row_num).place_of_supply_type_code :=
2410                                            tax_line_rec.place_of_supply_type_code;
2411       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2412                            l_new_row_num).place_of_supply_result_id :=
2413                                           tax_line_rec.place_of_supply_result_id;
2414       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2415               l_new_row_num).tax_currency_code := tax_line_rec.tax_currency_code;
2416       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2417                       l_new_row_num).tax_type_code := tax_line_rec.tax_type_code;
2418       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2419            l_new_row_num).reporting_only_flag := tax_line_rec.reporting_only_flag;
2420       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2421                            l_new_row_num).tax_jurisdiction_code :=
2422                                               tax_line_rec.tax_jurisdiction_code;
2423       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2424           l_new_row_num).tax_jurisdiction_id := tax_line_rec.tax_jurisdiction_id;
2425       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2426                l_new_row_num).tax_registration_number :=
2427                                            tax_line_rec.tax_registration_number;
2428       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2429                     l_new_row_num).registration_party_type :=
2430                                            tax_line_rec.registration_party_type;
2431       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2432                            l_new_row_num).tax_applicability_result_id :=
2433                                         tax_line_rec.tax_applicability_result_id;
2434       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2435                            l_new_row_num).direct_rate_result_id :=
2436                                              tax_line_rec.direct_rate_result_id;
2437       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2438                   l_new_row_num).rounding_lvl_party_tax_prof_id :=
2439                                      tax_line_rec.rounding_lvl_party_tax_prof_id;
2440       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2441                          l_new_row_num).rounding_lvl_party_type :=
2442                                             tax_line_rec.rounding_lvl_party_type;
2443       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2444             l_new_row_num).self_assessed_flag := tax_line_rec.self_assessed_flag;
2445       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2446                             l_new_row_num).tax_reg_num_det_result_id :=
2447                                          tax_line_rec.tax_reg_num_det_result_id;
2448       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2449        l_new_row_num).tax_amt_included_flag := tax_line_rec.tax_amt_included_flag;
2450       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2451             l_new_row_num).tax_only_line_flag := tax_line_rec.tax_only_line_flag;
2452       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2453                   l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
2454 
2455       IF (x_begin_index IS NULL) THEN
2456         x_begin_index := l_new_row_num;
2457       END IF;
2458     END IF;   -- l_tax_tbl_index IS NOT NULL
2459   END LOOP;   -- FOR tax_line_rec in get_tax_lines_csr
2460 
2461   IF (x_begin_index IS NOT NULL) THEN
2462     x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
2463   END IF;
2464 
2465   -- copy transaction info to new tax lines for new tax_lines created here
2466   --
2467   ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
2468 				p_trx_line_index ,
2469 --  				l_orig_end_index+1,
2470   				x_begin_index,
2471   				x_end_index,
2472   				x_return_status,
2473   				l_error_buffer);
2474 
2475   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2476     IF (g_level_statement >= g_current_runtime_level ) THEN
2477       FND_LOG.STRING(g_level_statement,
2478          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2479          'Incorrect return_status after calling ' ||
2480          'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
2481       FND_LOG.STRING(g_level_statement,
2482          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2483          'RETURN_STATUS = ' || x_return_status);
2484       FND_LOG.STRING(g_level_statement,
2485          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2486          'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from(-)');
2487     END IF;
2488     RETURN;
2489   END IF;
2490 
2491   IF (g_level_procedure >= g_current_runtime_level ) THEN
2492     FND_LOG.STRING(g_level_procedure,
2493            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2494            'x_begin_index = ' || to_char(x_begin_index));
2495     FND_LOG.STRING(g_level_procedure,
2496            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2497            'x_end_index = ' || to_char(x_end_index));
2498     FND_LOG.STRING(g_level_procedure,
2499            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2500            'RETURN_STATUS = ' || x_return_status);
2501     FND_LOG.STRING(g_level_procedure,
2502            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2503            'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from(-)');
2504   END IF;
2505 
2506 EXCEPTION
2507   WHEN OTHERS THEN
2508     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2509 
2510     IF (g_level_unexpected >= g_current_runtime_level ) THEN
2511       FND_LOG.STRING(g_level_unexpected,
2512          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from',
2513           sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2514       FND_LOG.STRING(g_level_unexpected,
2515          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from.END',
2516          'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_applied_from(-)');
2517     END IF;
2518 
2519 END  get_taxes_from_applied_from;
2520 
2521 ----------------------------------------------------------------------
2522 --  PROCEDURE
2523 --   get_taxes_from_adjusted_to
2524 --
2525 --  DESCRIPTION
2526 --
2527 --  This procedure get detail tax lines from adjusted_to document
2528 --
2529 --  IN      p_trx_line_index
2530 --
2531 --  IN OUT NOCOPY
2532 --          x_begin_index
2533 --          x_end_index
2534 --  OUT NOCOPY     x_return_status
2535 
2536 PROCEDURE get_taxes_from_adjusted_to(
2537   p_event_class_rec	   IN 		        zx_api_pub.event_class_rec_type,
2538   p_trx_line_index	   IN	       	  	BINARY_INTEGER,
2539   p_tax_date		   IN   	 	DATE,
2540   p_tax_determine_date     IN   	 	DATE,
2541   p_tax_point_date         IN   	 	DATE,
2542   x_begin_index 	   IN OUT NOCOPY	BINARY_INTEGER,
2543   x_end_index		   IN OUT NOCOPY	BINARY_INTEGER,
2544   x_return_status	   OUT NOCOPY 	        VARCHAR2) IS
2545 
2546  CURSOR get_tax_lines_csr IS
2547    SELECT * FROM zx_lines
2548     WHERE application_id =
2549           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
2550           p_trx_line_index)
2551       AND entity_code =
2552           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(
2553           p_trx_line_index)
2554       AND event_class_code  =
2555           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(
2556           p_trx_line_index)
2557       AND trx_id =
2558           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(
2559           p_trx_line_index)
2560       AND trx_line_id =
2561           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(
2562           p_trx_line_index)
2563       AND trx_level_type =
2564           ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_level_type(
2565           p_trx_line_index)
2566 /* Bug 5131206:
2567    For partner integration, when the line_level_action is 'ALLOCATE_TAX_ONLY_ADJUSTMENT',
2568    eBTax needs to create prorated tax lines.
2569    In other cases, partner tax lines should be excluded.
2570 */
2571 --      AND tax_provider_id IS  NULL
2572       AND (tax_provider_id IS NULL
2573            OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT')
2574       AND cancel_flag<> 'Y'
2575       AND offset_link_to_tax_line_id IS NULL
2576       AND mrc_tax_line_flag = 'N';
2577 
2578  l_new_row_num			NUMBER;
2579  l_error_buffer			VARCHAR2(200);
2580  l_line_amt_current		NUMBER;
2581  l_orig_begin_index 		BINARY_INTEGER;
2582  l_orig_end_index 		BINARY_INTEGER;
2583  l_tax_tbl_index		NUMBER;
2584 
2585  l_tax_regime_rec   	        zx_global_structures_pkg.tax_regime_rec_type;
2586  l_tax_rec                      ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
2587  l_tax_status_rec               ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
2588  l_tax_rate_rec                 ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
2589 
2590 BEGIN
2591 
2592   IF (g_level_procedure >= g_current_runtime_level ) THEN
2593     FND_LOG.STRING(g_level_procedure,
2594        'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to.BEGIN',
2595        'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to(+)');
2596     FND_LOG.STRING(g_level_procedure,
2597        'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2598        'p_trx_line_index = ' || to_char(p_trx_line_index));
2599   END IF;
2600 
2601   x_return_status :=  FND_API.G_RET_STS_SUCCESS;
2602 
2603   -- initialize local variables
2604   --
2605   -- bug fix 4867933 begin
2606   -- l_new_row_num := NVL(x_end_index, 0);
2607   l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
2608   l_orig_begin_index := x_begin_index;
2609   l_orig_end_index := x_end_index;
2610 
2611   FOR tax_line_rec in get_tax_lines_csr LOOP
2612 
2613     IF l_orig_begin_index IS NOT NULL AND l_orig_end_index IS NOT NULL THEN
2614 
2615       l_tax_tbl_index := ZX_TDS_UTILITIES_PKG.get_tax_index (
2616         tax_line_rec.tax_regime_code,
2617         tax_line_rec.tax,
2618         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index),
2619         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index),
2620         l_orig_begin_index,
2621         l_orig_end_index,
2622         x_return_status);
2623     ELSE
2624       l_tax_tbl_index := NULL;
2625     END IF;
2626 
2627     IF l_tax_tbl_index IS NULL THEN
2628 
2629       -- populate tax cache ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl with this tax_id,
2630       -- if it does not exists there.
2631       --
2632       ZX_TDS_UTILITIES_PKG.populate_tax_cache (
2633     		p_tax_id   	 => tax_line_rec.tax_id,
2634     		p_return_status  => x_return_status,
2635     		p_error_buffer   => l_error_buffer);
2636 
2637       IF x_return_status <> FND_API.G_RET_STS_SUCCESS  THEN
2638         IF (g_level_statement >= g_current_runtime_level ) THEN
2639           FND_LOG.STRING(g_level_statement,
2640              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2641              'Incorrect return_status after calling ' ||
2642              'ZX_TDS_UTILITIES_PKG.populate_tax_cache()');
2643           FND_LOG.STRING(g_level_statement,
2644              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2645              'RETURN_STATUS = ' || x_return_status);
2646           FND_LOG.STRING(g_level_statement,
2647              'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to.END',
2648              'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to(-)');
2649         END IF;
2650 
2651         RETURN;
2652       END IF;
2653 
2654       -- This is a missing tax line, create a new detail tax line in
2655       -- g_detail_tax_lines_tbl
2656       --
2657       l_new_row_num := l_new_row_num +1;
2658 
2659       -- populate tax related information from tax_line_rec
2660       --
2661       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2662                   l_new_row_num).tax_regime_code:=tax_line_rec.tax_regime_code;
2663       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2664                                        l_new_row_num).tax := tax_line_rec.tax;
2665       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2666                   l_new_row_num).tax_status_code:=tax_line_rec.tax_status_code;
2667 
2668       -- bug 5077691: populate legal_reporting_status
2669       IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
2670         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2671                 l_new_row_num).legal_reporting_status :=
2672                       ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2673                             tax_line_rec.tax_id).legal_reporting_status_def_val;
2674       END IF;
2675 
2676       -- for adjusted doc, tax regime id, tax id, tax status id, tax rate id
2677       -- should be the same as the original document since the
2678       -- tax_determination_date is the same as original
2679 
2680       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2681                      l_new_row_num).tax_regime_id:= tax_line_rec.tax_regime_id;
2682       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2683                                   l_new_row_num).tax_id := tax_line_rec.tax_id;
2684       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2685                      l_new_row_num).tax_status_id:= tax_line_rec.tax_status_id;
2686 
2687 
2688       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2689                      l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
2690       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2691                          l_new_row_num).tax_rate_id := tax_line_rec.tax_rate_id;
2692       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2693                               l_new_row_num).tax_rate :=  tax_line_rec.tax_rate;
2694       -- bug 5508356
2695       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2696                     l_new_row_num).account_source_tax_rate_id :=
2697                                         tax_line_rec.account_source_tax_rate_id;
2698 
2699       -- populate taxable_basis_formula and tax_calculation_formula
2700       --
2701       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2702                                    l_new_row_num).taxable_basis_formula :=
2703                                              tax_line_rec.taxable_basis_formula;
2704       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2705                                    l_new_row_num).tax_calculation_formula :=
2706                                            tax_line_rec.tax_calculation_formula;
2707 
2708 
2709    -- Bug#6729097 --
2710       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2711               l_new_row_num).tax_apportionment_line_number := tax_line_rec.tax_apportionment_line_number;
2712 
2713       IF (g_level_statement >= g_current_runtime_level ) THEN
2714          FND_LOG.STRING(g_level_statement,
2715            'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
2716            'Tax Apportionment Line Number: Bug6729097 ' ||
2717            to_char(tax_line_rec.tax_apportionment_line_number));
2718       END IF;
2719 
2720 
2721 
2722       -- If line_amt_include_tax_flag on trx line is A, then set to 'Y'
2723       -- for other cases, set to the one from adjusted doc.
2724       IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
2725            p_trx_line_index) = 'A'
2726       THEN
2727         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2728            l_new_row_num).tax_amt_included_flag := 'Y';
2729 
2730       ELSE
2731         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2732            l_new_row_num).tax_amt_included_flag
2733               := tax_line_rec.tax_amt_included_flag;
2734       END IF;
2735 
2736       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2737         l_new_row_num).manually_entered_flag := tax_line_rec.manually_entered_flag;
2738 
2739       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2740                                  l_new_row_num).manually_entered_flag = 'Y' THEN
2741 
2742         -- don't recalculate the manually entered tax lines on the original
2743         -- trx line, butstill keep them so that user can update these
2744         -- manual tax lines.
2745 
2746         -- Populate other doc line amt, taxable amt and tax amt
2747         --
2748         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2749                                                     l_new_row_num).tax_amt := 0;
2750         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2751                                                 l_new_row_num).taxable_amt := 0;
2752         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2753                                           l_new_row_num).unrounded_tax_amt := 0;
2754         ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2755                                       l_new_row_num).unrounded_taxable_amt := 0;
2756 
2757       ELSE
2758         -- For system generated tax lines on the original trx line
2759         -- populate the unrounded taxable basis and tax amount
2760 
2761         IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2762              p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT'
2763         THEN
2764           IF (g_level_statement >= g_current_runtime_level ) THEN
2765             FND_LOG.STRING(g_level_statement,
2766                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2767                'Current trx is a tax only adjustment. ');
2768           END IF;
2769 
2770           -- for tax only adjustment set the unrounded tax amount to the
2771           -- unrounded tax amount of the original doc.
2772           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2773              l_new_row_num).unrounded_taxable_amt := tax_line_rec.unrounded_taxable_amt;
2774           ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2775              l_new_row_num).unrounded_tax_amt := tax_line_rec.unrounded_tax_amt;
2776 
2777         ELSE
2778           -- current trx is a regular adjustment or CM
2779           -- prorate the line amt to get the unrounded taxable/tax amount
2780           IF (g_level_statement >= g_current_runtime_level ) THEN
2781             FND_LOG.STRING(g_level_statement,
2782                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2783                'tax_amt_included_flag on Current tax line: '||
2784                ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2785                  l_new_row_num).tax_amt_included_flag);
2786             FND_LOG.STRING(g_level_statement,
2787                'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
2788                'tax_amt_included_flag on original tax line: '||
2789                tax_line_rec.tax_amt_included_flag);
2790           END IF;
2791 
2792           IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2793                l_new_row_num).tax_amt_included_flag ='Y'
2794              AND tax_line_rec.tax_amt_included_flag = 'N'
2795           THEN
2796             -- If current trx is a tax inclusive trx, while the original trx is
2797             -- tax exclusive trx.
2798             IF ( tax_line_rec.line_amt + tax_line_rec.tax_amt) <> 0 THEN
2799               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2800                 l_new_row_num).unrounded_taxable_amt
2801                   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
2802                     ( tax_line_rec.unrounded_taxable_amt /
2803                       ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
2804 
2805               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2806                 l_new_row_num).unrounded_tax_amt
2807                   := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
2808                     ( tax_line_rec.unrounded_tax_amt /
2809                       ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
2810             ELSE
2811               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2812                 l_new_row_num).unrounded_taxable_amt
2813                   := tax_line_rec.unrounded_taxable_amt;
2814               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2815                 l_new_row_num).unrounded_tax_amt
2816                   := tax_line_rec.unrounded_tax_amt;
2817             END IF;
2818           ELSE -- both current tax line and original tax line are inclusive and exclusive
2819             IF tax_line_rec.line_amt <> 0 THEN
2820               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
2821                 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
2822                   ( tax_line_rec.unrounded_taxable_amt / tax_line_rec.line_amt);
2823 
2824               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
2825                 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
2826                   ( tax_line_rec.unrounded_tax_amt / tax_line_rec.line_amt );
2827             ELSE -- equal to that the original trx is a tax only trx
2828               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
2829                 := tax_line_rec.unrounded_taxable_amt;
2830               ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
2831                 := tax_line_rec.unrounded_tax_amt;
2832             END IF;
2833           END IF; -- tax_line_rec.tax_amt_included_flag = 'N'
2834 
2835         END IF; -- 'ALLOCATE_TAX_ONLY_ADJUSTMENT' trx and else
2836 
2837       END IF;         -- manually_entered_flag = 'Y'
2838 
2839       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).basis_result_id
2840         := tax_line_rec.basis_result_id;
2841       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).calc_result_id
2842         := tax_line_rec.calc_result_id;
2843       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_base_modifier_rate
2844         := tax_line_rec.tax_base_modifier_rate;
2845 
2846       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).compounding_dep_tax_flag
2847         := tax_line_rec.compounding_dep_tax_flag;
2848       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).compounding_tax_miss_flag
2849         := tax_line_rec.compounding_tax_miss_flag;
2850       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).Compounding_Tax_Flag
2851         := tax_line_rec.compounding_tax_flag;
2852 
2853       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2854            l_new_row_num).tax_amt_included_flag = 'Y' THEN
2855 
2856         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
2857           p_trx_line_index) := 'Y';
2858       END IF;
2859 
2860       IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2861            l_new_row_num).compounding_dep_tax_flag = 'Y' THEN
2862 
2863         ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
2864           p_trx_line_index) := 'Y';
2865       END IF;
2866 
2867       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_exemption_id
2868         := tax_line_rec.tax_exemption_id;
2869       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_before_exemption
2870         := tax_line_rec.tax_rate_before_exemption;
2871       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_name_before_exemption
2872         := tax_line_rec.tax_rate_name_before_exemption;
2873 
2874       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_rate_modifier
2875         := tax_line_rec.exempt_rate_modifier;
2876       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_certificate_number
2877         := tax_line_rec.exempt_certificate_number;
2878       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_reason
2879         := tax_line_rec.exempt_reason;
2880       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_reason_code
2881         := tax_line_rec.exempt_reason_code;
2882 
2883       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_exception_id
2884         := tax_line_rec.tax_exception_id;
2885       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_before_exception
2886         := tax_line_rec.tax_rate_before_exception;
2887       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_name_before_exception
2888         := tax_line_rec.tax_rate_name_before_exception;
2889       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exception_rate
2890         := tax_line_rec.exception_rate;
2891 
2892       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2893                   l_new_row_num).adjusted_doc_tax_line_id := tax_line_rec.tax_line_id;
2894 
2895       -- populate overridden_flag and last_manual_entry for manual tax line
2896       --
2897       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2898                                           l_new_row_num).overridden_flag := 'Y';
2899       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2900                                l_new_row_num).last_manual_entry := 'TAX_AMOUNT';
2901 
2902       -- Populate other doc line amt, taxable amt and tax amt
2903       --
2904       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2905                       l_new_row_num).other_doc_line_amt := tax_line_rec.line_amt;
2906       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2907                            l_new_row_num).other_doc_line_taxable_amt :=
2908                                               tax_line_rec.unrounded_taxable_amt;
2909       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2910                            l_new_row_num).other_doc_line_tax_amt :=
2911                                                   tax_line_rec.unrounded_tax_amt;
2912 
2913       -- Set copied_from_other_doc_flag to 'Y'
2914       --
2915       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2916                                 l_new_row_num).copied_from_other_doc_flag := 'Y';
2917 
2918       -- set other_doc_source
2919       --
2920       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2921                                 l_new_row_num).other_doc_source := 'ADJUSTED';
2922 
2923       -- populate other columns
2924       --
2925       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2926            l_new_row_num).rounding_level_code := tax_line_rec.rounding_level_code;
2927       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2928              l_new_row_num).rounding_rule_code := tax_line_rec.rounding_rule_code;
2929       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2930                                             l_new_row_num).tax_date := p_tax_date;
2931       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2932                         l_new_row_num).tax_determine_date := p_tax_determine_date;
2933       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2934                                 l_new_row_num).tax_point_date := p_tax_point_date;
2935       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2936                            l_new_row_num).offset_flag := tax_line_rec.offset_flag;
2937 
2938       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2939                   l_new_row_num).place_of_supply := tax_line_rec.place_of_supply;
2940       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2941          l_new_row_num).place_of_supply_type_code :=
2942                                            tax_line_rec.place_of_supply_type_code;
2943       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2944                            l_new_row_num).place_of_supply_result_id :=
2945                                           tax_line_rec.place_of_supply_result_id;
2946       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2947               l_new_row_num).tax_currency_code := tax_line_rec.tax_currency_code;
2948 
2949 /* Bug 5149379: When the trx currency is different from the tax currency,
2950                 it is necessary to pick the tax_currency_conversion_date,
2951                 tax_currency_conversion_type, tax_currency_conversion_rate
2952                 information from the invoice tax lines.
2953 */
2954       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2955             l_new_row_num).tax_currency_conversion_date := tax_line_rec.tax_currency_conversion_date;
2956       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2957             l_new_row_num).tax_currency_conversion_type := tax_line_rec.tax_currency_conversion_type;
2958       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2959             l_new_row_num).tax_currency_conversion_rate := tax_line_rec.tax_currency_conversion_rate;
2960 
2961 /* Bug 5131206: For partner integration, when the line_level_action is
2962                 'ALLOCATE_TAX_ONLY_ADJUSTMENT', eBTax needs to create
2963                 prorated tax lines and stamp the tax_provider_id on
2964                 the tax line(s).
2965 */
2966 
2967     ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2968             l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
2969 
2970     if(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT' and
2971        tax_line_rec.tax_provider_id is not null ) THEN
2972        ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).SYNC_WITH_PRVDR_FLAG := 'Y';
2973     end if;
2974 
2975 
2976       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2977                       l_new_row_num).tax_type_code := tax_line_rec.tax_type_code;
2978       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2979            l_new_row_num).reporting_only_flag := tax_line_rec.reporting_only_flag;
2980       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2981                            l_new_row_num).tax_jurisdiction_code :=
2982                                               tax_line_rec.tax_jurisdiction_code;
2983       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2984           l_new_row_num).tax_jurisdiction_id := tax_line_rec.tax_jurisdiction_id;
2985       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2986                l_new_row_num).tax_registration_number :=
2987                                            tax_line_rec.tax_registration_number;
2988       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2989                     l_new_row_num).registration_party_type :=
2990                                            tax_line_rec.registration_party_type;
2991       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2992                            l_new_row_num).tax_applicability_result_id :=
2993                                         tax_line_rec.tax_applicability_result_id;
2994       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2995                            l_new_row_num).direct_rate_result_id :=
2996                                              tax_line_rec.direct_rate_result_id;
2997       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2998                   l_new_row_num).rounding_lvl_party_tax_prof_id :=
2999                                      tax_line_rec.rounding_lvl_party_tax_prof_id;
3000       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3001                          l_new_row_num).rounding_lvl_party_type :=
3002                                             tax_line_rec.rounding_lvl_party_type;
3003       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3004             l_new_row_num).self_assessed_flag := tax_line_rec.self_assessed_flag;
3005       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3006                             l_new_row_num).tax_reg_num_det_result_id :=
3007                                          tax_line_rec.tax_reg_num_det_result_id;
3008 
3009       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3010             l_new_row_num).tax_only_line_flag := tax_line_rec.tax_only_line_flag;
3011       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3012                   l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
3013       -- Added for Bug#7185529
3014       ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3015                   l_new_row_num).hq_estb_reg_number := tax_line_rec.hq_estb_reg_number;
3016 
3017       IF (x_begin_index IS NULL) THEN
3018         x_begin_index := l_new_row_num;
3019       END IF;
3020     END IF;   -- l_tax_tbl_index IS NOT NULL
3021   END LOOP;   -- FOR tax_line_rec in get_tax_lines_csr
3022 
3023   IF (x_begin_index IS NOT NULL) THEN
3024     x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
3025   END IF;
3026 
3027   -- copy transaction info to new tax lines for new tax_lines created here
3028   --
3029   ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
3030 				p_trx_line_index ,
3031 --  				NVL(l_orig_end_index, 0)+1,
3032   				x_begin_index,
3033   				x_end_index,
3034   				x_return_status,
3035   				l_error_buffer);
3036 
3037   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3038     IF (g_level_statement >= g_current_runtime_level ) THEN
3039       FND_LOG.STRING(g_level_statement,
3040          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3041          'Incorrect return_status after calling ' ||
3042          'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
3043       FND_LOG.STRING(g_level_statement,
3044          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3045          'RETURN_STATUS = ' || x_return_status);
3046       FND_LOG.STRING(g_level_statement,
3047          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to.END',
3048          'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to(-)');
3049     END IF;
3050     RETURN;
3051   END IF;
3052 
3053   IF (g_level_procedure >= g_current_runtime_level ) THEN
3054     FND_LOG.STRING(g_level_procedure,
3055            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3056            'x_begin_index = ' || to_char(x_begin_index));
3057     FND_LOG.STRING(g_level_procedure,
3058            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3059            'x_end_index = ' || to_char(x_end_index));
3060     FND_LOG.STRING(g_level_procedure,
3061            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3062            'RETURN_STATUS = ' || x_return_status);
3063     FND_LOG.STRING(g_level_procedure,
3064            'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to.END',
3065            'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to(-)');
3066   END IF;
3067 
3068 EXCEPTION
3069   WHEN OTHERS THEN
3070     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3071 
3072     IF (g_level_unexpected >= g_current_runtime_level ) THEN
3073       FND_LOG.STRING(g_level_unexpected,
3074          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to',
3075           sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3076       FND_LOG.STRING(g_level_unexpected,
3077          'ZX.PLSQL.ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to.END',
3078          'ZX_TDS_IMPORT_DOCUMENT_PKG.get_taxes_from_adjusted_to(-)');
3079     END IF;
3080 
3081 END  get_taxes_from_adjusted_to;
3082 
3083 END ZX_TDS_IMPORT_DOCUMENT_PKG;