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