[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;