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