[Home] [Help]
PACKAGE BODY: APPS.ZX_TDS_CALC_SERVICES_PUB_PKG
Source
1 PACKAGE BODY ZX_TDS_CALC_SERVICES_PUB_PKG AS
2 /* $Header: zxdwtxcalsrvpubb.pls 120.178.12020000.3 2012/09/25 08:58:10 snoothi ship $ */
3
4 /* Declare constants */
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'zx_tds_calc_services_pub_pkg';
7 G_MSG_UERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR;
8 G_MSG_ERROR CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_ERROR;
9 G_MSG_SUCCESS CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_SUCCESS;
10
11 G_MSG_HIGH CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH;
12 G_MSG_MEDIUM CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM;
13 G_MSG_LOW CONSTANT NUMBER := FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW;
14
15 NUMBER_DUMMY CONSTANT NUMBER(15) := -999999999999999;
16
17 G_LINES_PER_FETCH CONSTANT NUMBER := 1000;
18
19 l_error_buffer VARCHAR2(240);
20
21 TYPE l_tax_prof_id_rec_type IS RECORD(
22 tax_prof_id NUMBER,
23 process_for_appl_flg VARCHAR2(1)
24 );
25
26 TYPE l_tax_prof_id_tbl_type IS TABLE OF l_tax_prof_id_rec_type INDEX BY BINARY_INTEGER;
27 l_tax_prof_id_tbl l_tax_prof_id_tbl_type;
28
29 TYPE l_templ_usage_rec_type IS RECORD(
30 det_factor_templ_code VARCHAR2(30),
31 template_usage_code VARCHAR2(30)
32 );
33
34 TYPE l_templ_usage_tbl_type IS TABLE OF l_templ_usage_rec_type INDEX BY BINARY_INTEGER;
35 l_templ_usage_tbl l_templ_usage_tbl_type;
36
37 PROCEDURE fetch_detail_tax_lines (
38 x_return_status OUT NOCOPY VARCHAR2);
39
40 PROCEDURE process_taxes_for_xml_inv_line (
41 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
42 x_return_status OUT NOCOPY VARCHAR2);
43
44 PROCEDURE process_taxes_for_xml_inv_hdr (
45 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
46 x_return_status OUT NOCOPY VARCHAR2);
47
48 PROCEDURE adjust_tax_for_xml_inv_line (
49 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
50 x_return_status OUT NOCOPY VARCHAR2);
51
52 PROCEDURE adjust_tax_for_xml_inv_hdr (
53 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
54 x_return_status OUT NOCOPY VARCHAR2);
55
56 PROCEDURE match_tax_amt_to_summary_line (
57 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
58 x_return_status OUT NOCOPY VARCHAR2);
59
60 g_current_runtime_level NUMBER;
61 g_level_statement CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
62 g_level_procedure CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
63 g_level_event CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
64 g_level_error CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
65 g_level_unexpected CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
66
67 /* ======================================================================*
68 | PROCEDURE get_tax_regimes |
69 | This procedure returns applicable tax regimes for each transaction |
70 | line and also unique tax regimes for whole transaction |
71 * ======================================================================*/
72 PROCEDURE get_tax_regimes (
73 p_trx_line_index IN BINARY_INTEGER,
74 p_event_class_rec IN OUT NOCOPY ZX_API_PUB.event_class_rec_type,
75 x_return_status OUT NOCOPY VARCHAR2 ) IS
76
77 /* Bug 4959835*/
78 l_template_usage_code zx_det_factor_templ_b.template_usage_code%type;
79 l_templ_usage_indx BINARY_INTEGER;
80
81 CURSOR get_template_usage_csr IS
82 SELECT template_usage_code
83 FROM zx_det_factor_templ_b
84 WHERE DET_FACTOR_TEMPL_CODE = p_event_class_rec.DET_FACTOR_TEMPL_CODE;
85 /* End: Bug 4959835*/
86
87 BEGIN
88 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
89
90 IF (g_level_procedure >= g_current_runtime_level ) THEN
91 FND_LOG.STRING(g_level_procedure,
92 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes.BEGIN',
93 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes(+)');
94 END IF;
95 x_return_status := FND_API.G_RET_STS_SUCCESS;
96
97 -- Bug fix 3365220, 3426155, skip get_applicable_regimes for
98 -- the following cases
99 -- 1) applied_from_application_id is not null
100 -- 2) adjusted_doc_application_id is not null
101 -- 3) event type code is OVERRIDE_TAX
102 -- 4) historical trx lines
103 -- Bug 3010729: skip performing regime applicability for trx lines with
104 -- line level action 'LINE_INFO_TAX_ONLY'
105 -- Bug 3990418: Skip regime applicability determination process for line
106 -- level actions 'CANCEL', 'SYNCHRONIZE', 'DISCARD' and
107 -- 'RECORD_WITH_NO_TAX', 'NO_CHANGE'
108 -- Bug 3893366: Skip regime determination for line_level_action
109 -- 'ALLOCATE_LINE_ONLY_ADJUSTMENT'
110 -- Bug 5440023: Do not skip regime determination for line_level_action
111 -- 'LINE_INFO_TAX_ONLY' if it is partner integration
112 --
113 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(
114 p_trx_line_index) IS NULL
115 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
116 p_trx_line_index) IS NULL
117 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code (
118 p_trx_line_index ) <> 'OVERRIDE_TAX'
119 AND nvl(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag (
120 p_trx_line_index ), 'N') = 'N'
121 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (
122 p_trx_line_index ) NOT IN ('CANCEL', 'SYNCHRONIZE', 'DISCARD',
123 'RECORD_WITH_NO_TAX', 'NO_CHANGE',
124 'ALLOCATE_LINE_ONLY_ADJUSTMENT'))
125 THEN
126
127 --
128 -- Bug#5440023- do not process non partner and line level
129 -- action is 'LINE_INFO_TAX_ONLY'
130 --
131 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action ( p_trx_line_index ) = 'LINE_INFO_TAX_ONLY'
132 AND NVL(ZX_GLOBAL_STRUCTURES_PKG.g_ptnr_srvc_subscr_flag, 'N') = 'N' ) THEN
133
134 RETURN;
135
136 END IF;
137
138 -- Start: Added for Bug 4959835
139
140 -- added caching logic here
141 l_templ_usage_indx := dbms_utility.get_hash_value(p_event_class_rec.det_factor_templ_code, 1, 8192);
142
143 IF l_templ_usage_tbl.EXISTS(l_templ_usage_indx)
144 AND l_templ_usage_tbl(l_templ_usage_indx).det_factor_templ_code = p_event_class_rec.det_factor_templ_code THEN
145 l_template_usage_code := l_templ_usage_tbl(l_templ_usage_indx).template_usage_code;
146 ELSE
147 OPEN get_template_usage_csr;
148 FETCH get_template_usage_csr into l_template_usage_code;
149 CLOSE get_template_usage_csr;
150
151 l_templ_usage_tbl(l_templ_usage_indx).det_factor_templ_code := p_event_class_rec.det_factor_templ_code;
152 l_templ_usage_tbl(l_templ_usage_indx).template_usage_code := l_template_usage_code;
153 END IF;
154
155 IF (g_level_statement >= g_current_runtime_level ) THEN
156 FND_LOG.STRING(g_level_statement,
157 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes',
158 'l_template_usage_code := '||l_template_usage_code);
159 END IF;
160
161 -- Populate the event_class_rec with template_usage_code.This is to avoid
162 -- executing the above same SQL during tax_applicability.
163 p_event_class_rec.template_usage_code := l_template_usage_code;
164
165 -- Perform Tax Regime Determination only for location based taxes.
166 -- For non-location based scenario(i.e.P2P and O2C OUs where tax method=VAT),
167 -- use direct rate determination process to obtain the candidate taxes.
168
169 IF l_template_usage_code = 'TAX_REGIME_DETERMINATION'
170 THEN
171 ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes (
172 p_trx_line_index,
173 p_event_class_rec,
174 x_return_status );
175 END IF;
176 -- End: Bug 4959835
177
178 END IF;
179
180 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
181 IF (g_level_error >= g_current_runtime_level ) THEN
182 FND_LOG.STRING(g_level_error,
183 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes',
184 'Incorrect return_status after calling ' ||
185 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes()');
186 FND_LOG.STRING(g_level_error,
187 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes',
188 'RETURN_STATUS = ' || x_return_status);
189 FND_LOG.STRING(g_level_error,
190 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes.END',
191 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes(-)');
192 END IF;
193 RETURN;
194 END IF;
195
196 IF (g_level_procedure >= g_current_runtime_level ) THEN
197
198 FND_LOG.STRING(g_level_procedure,
199 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes.END',
200 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes(-)');
201 END IF;
202
203 EXCEPTION
204 WHEN OTHERS THEN
205 -- Start: Added for Bug 4959835
206 IF get_template_usage_csr%ISOPEN THEN
207 CLOSE get_template_usage_csr;
208 END IF;
209 -- End: Bug 4959835
210 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
211
212 IF (g_level_unexpected >= g_current_runtime_level ) THEN
213 FND_LOG.STRING(g_level_unexpected,
214 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes',
215 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
216 FND_LOG.STRING(g_level_unexpected,
217 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes.END',
218 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_tax_regimes(-)');
219 END IF;
220
221 END get_tax_regimes;
222
223 /* ======================================================================*
224 | PROCEDURE calculate_tax |
225 | This procedure is called for every transaction line |
226 * ======================================================================*/
227 PROCEDURE calculate_tax (
228 p_trx_line_index IN BINARY_INTEGER,
229 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
230 x_return_status OUT NOCOPY VARCHAR2) IS
231
232 l_begin_index BINARY_INTEGER;
233 l_end_index BINARY_INTEGER;
234 l_provider_id NUMBER;
235 l_tax_regime_id zx_regimes_b.tax_regime_id%TYPE;
236 l_tax_date DATE;
237 l_tax_determine_date DATE;
238 l_tax_point_date DATE;
239 l_error_buffer VARCHAR2(240);
240
241 l_upg_trx_info_rec zx_on_fly_trx_upgrade_pkg.zx_upg_trx_info_rec_type;
242 l_trx_migrated_b BOOLEAN;
243 l_tax_exists_flg VARCHAR2(1);
244 l_count NUMBER;
245
246
247 CURSOR get_source_doc_info(
248 c_application_id zx_evnt_cls_mappings.application_id%TYPE,
249 c_entity_code zx_evnt_cls_mappings.entity_code%TYPE,
250 c_event_class_code zx_evnt_cls_mappings.event_class_code%TYPE
251 )
252 IS
253 SELECT intrcmp_src_appln_id,
254 intrcmp_src_entity_code,
255 intrcmp_src_evnt_cls_code
256 FROM zx_evnt_cls_mappings
257 WHERE application_id = c_application_id
258 AND entity_code = c_entity_code
259 AND event_class_code = c_event_class_code;
260
261 BEGIN
262 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
263
264 IF (g_level_procedure >= g_current_runtime_level ) THEN
265 FND_LOG.STRING(g_level_procedure,
266 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.BEGIN',
267 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(+)');
268 END IF;
269
270 x_return_status := FND_API.G_RET_STS_SUCCESS;
271
272 -- Bug 3971016: Skip processing tax applicability for line_level_action
273 -- 'RECORD_WITH_NO_TAX'
274 -- Bug 3893366: Skip processing tax applicability for line_level_action
275 -- 'ALLOCATE_LINE_ONLY_ADJUSTMENT'
276 --
277 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
278 p_trx_line_index) IN ( 'RECORD_WITH_NO_TAX',
279 'ALLOCATE_LINE_ONLY_ADJUSTMENT')
280 THEN
281 IF (g_level_procedure >= g_current_runtime_level ) THEN
282
283 FND_LOG.STRING(g_level_procedure,
284 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
285 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)'||'Skip processing for RECORD_WITH_NO_TAX');
286 END IF;
287 RETURN;
288 END IF;
289
290 --comment out for bug fix 5532891, the assignment has been take cared whenever there is
291 --applicable tax
292 --l_begin_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST+1;
293
294 -- Bug 3971006
295 --
296 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
297 p_trx_line_index) = 'CREATE' AND
298 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
299 p_trx_line_index) ='COPY_AND_CREATE'
300 THEN
301
302 ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_copy_and_create_flg := 'Y';
303
304 END IF;
305
306
307 -- bug fix 5417887
308 -- following setting has been done in the srv type pkg for each trx
309 /*IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
310 p_trx_line_index) = 'UPDATE'
311 THEN
312 ZX_GLOBAL_STRUCTURES_PKG.g_update_event_process_flag := 'Y';
313 END IF;
314 */
315
316 -- bug 3770874: set global variables for line_level_action 'CANCEL'/DISCARD'
317 -- Remove tax_event_type 'DELETE' and 'CANCEL'
318 --
319 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
320 p_trx_line_index) = 'UPDATE' AND
321 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
322 p_trx_line_index) IN ('CANCEL', 'SYNCHRONIZE', 'DISCARD', 'NO_CHANGE',
323 'UNAPPLY_FROM')
324 THEN
325
326 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag(p_trx_line_index) = 'Y' AND
327 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) IN
328 ('CANCEL', 'DISCARD', 'NO_CHANGE', 'UNAPPLY_FROM')
329 THEN
330
331 l_upg_trx_info_rec.application_id
332 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index);
333 l_upg_trx_info_rec.event_class_code
334 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index);
335 l_upg_trx_info_rec.entity_code
336 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index);
337 l_upg_trx_info_rec.trx_id
338 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_trx_line_index);
339 l_upg_trx_info_rec.trx_line_id
340 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
341 l_upg_trx_info_rec.trx_level_type
342 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
343
344 ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
345 p_upg_trx_info_rec => l_upg_trx_info_rec,
346 x_trx_migrated_b => l_trx_migrated_b,
347 x_return_status => x_return_status );
348
349 IF NOT l_trx_migrated_b THEN
350
351 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
352 p_upg_trx_info_rec => l_upg_trx_info_rec,
353 x_return_status => x_return_status
354 );
355
356 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
357 IF (g_level_statement >= g_current_runtime_level ) THEN
358 FND_LOG.STRING(g_level_statement,
359 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
360 'Incorrect return_status after calling ' ||
361 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly' ||
362 ' contine processing ...');
363 FND_LOG.STRING(g_level_statement,
364 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
365 'RETURN_STATUS = ' || x_return_status);
366 FND_LOG.STRING(g_level_statement,
367 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
368 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
369 END IF;
370 END IF;
371 END IF; -- NOT l_trx_migrated_b
372 END IF; -- historical_flag = 'Y'
373
374 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
375 p_trx_line_index) ='CANCEL' THEN
376
377 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_cancel_exist_flg := 'Y';
378
379 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
380 p_trx_line_index) ='DISCARD' THEN
381
382 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_discard_exist_flg:= 'Y';
383
384 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
385 p_trx_line_index) = 'UNAPPLY_FROM' THEN
386
387 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_discard_exist_flg:= 'Y';
388
389 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
390 p_trx_line_index) ='NO_CHANGE' THEN
391
392 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_nochange_exist_flg := 'Y';
393
394 END IF;
395
396 IF (g_level_procedure >= g_current_runtime_level ) THEN
397
398 FND_LOG.STRING(g_level_procedure,
399 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
400 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)'||'Skip processing for cancel, synch, discard, no change');
401 END IF;
402 RETURN;
403 END IF;
404
405 -- Initialize global data structures
406 g_check_cond_grp_tbl.DELETE;
407 g_tsrm_num_value_tbl.DELETE;
408 g_tsrm_alphanum_value_tbl.DELETE;
409 g_trx_alphanum_value_tbl.DELETE;
410
411 -- get tax date for tax event type other than 'OVERRIDE_TAX'
412 --
413 IF( ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
414 p_trx_line_index) <> 'OVERRIDE_TAX') THEN
415
416 ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(
417 p_trx_line_index,
418 l_tax_date,
419 l_tax_determine_date,
420 l_tax_point_date,
421 x_return_status);
422
423 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
424 IF (g_level_error >= g_current_runtime_level ) THEN
425 FND_LOG.STRING(g_level_error,
426 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
427 'Incorrect return_status after calling ' ||
428 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
429 FND_LOG.STRING(g_level_error,
430 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
431 'RETURN_STATUS = ' || x_return_status);
432 FND_LOG.STRING(g_level_error,
433 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
434 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
435 END IF;
436 RETURN;
437 END IF;
438 END IF;
439
440 -- comment out for bug fix 5417887
441 -- Initialize g_detail_tax_lines_tbl when it is the first transaction line
442 --
443 --IF p_trx_line_index = ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id.FIRST
444 --THEN
445
446 -- g_detail_tax_lines_tbl.DELETE;
447 --END IF;
448
449 -- If ref_doc_application_id is not null and it is not an override tax case,
450 -- set the g_reference_doc_exist_flg, so that in the tail end service to
451 -- call process_reference_tax_lines().
452
453 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(
454 p_trx_line_index) IS NOT NULL AND
455 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
456 p_trx_line_index) <> 'OVERRIDE_TAX'
457 THEN
458 g_reference_doc_exist_flg := 'Y';
459 END IF;
460
461 IF( ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
462 p_trx_line_index) ='CREATE' OR
463 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
464 p_trx_line_index) ='UPDATE' OR
465 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
466 p_trx_line_index) = 'OVERRIDE_TAX') THEN
467
468 -- IF it is a migrated transaction,
469 -- fetch all tax lines from current document, skip applicability process
470 -- Only do tax amount calculation and taxable basis
471 -- OR IF tax_event_type_code = 'OVERRIDE_TAX',
472 -- fetch all tax lines from current document, skip applicability process
473 -- ELSIF applied_from_application_id IS NOT NULL,
474 -- call get_det_tax_lines_from_applied. Skip applicability process
475 -- ELSIF adjusted_doc_application_id IS NOT NULL,
476 -- call get_det_tax_lines_from_adjusted. Skip applicability process
477 -- ELSE perform applicability process.
478 --
479 -- Bug 5688340: Rearranged the order of conditions in IF statement
480 -- (ie. pulled adjusted_doc is NOT NULL condition before
481 -- applied_from).
482 -- The receipt application in AR causes a tax adjustment to be
483 -- created in eBTax, if an earned discount is recognized.
484 -- In this case, AR passes invoice info in adjusted doc columns
485 -- and cash receipt info in applied from columns.
486 -- In this case, tax calculation must be done using invoice
487 -- (ie. adjusted doc info).
488
489 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag(p_trx_line_index)
490 = 'Y' OR
491 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
492 p_trx_line_index) = 'OVERRIDE_TAX'
493 THEN
494
495 ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(
496 p_event_class_rec,
497 p_trx_line_index,
498 NULL,
499 NULL,
500 NULL,
501 l_begin_index,
502 l_end_index,
503 x_return_status);
504
505 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
506
507 IF (g_level_statement >= g_current_runtime_level ) THEN
508 FND_LOG.STRING(g_level_statement,
509 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
510 'Incorrect return_status after calling ' ||
511 'ZX_TDS_APPLICABILITY_DETM_PKG.');
512 FND_LOG.STRING(g_level_statement,
513 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
514 'RETURN_STATUS = ' || x_return_status);
515 FND_LOG.STRING(g_level_statement,
516 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
517 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
518 END IF;
519 RETURN;
520 END IF;
521
522 -- When no tax line found for the historical transaction, check if the trx line
523 -- exists in zx_lines_det_factors. If yes, it means the historical transaction
524 -- was migrated, but don't have tax. Otherwise, migrate the historical
525 -- transaction on-the-fly and call ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines
526 -- again to fetch the tax lines for the historical transaction.
527
528 IF ((l_begin_index IS NULL) OR (l_begin_index = l_end_index)) AND
529 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag(p_trx_line_index) = 'Y' THEN
530
531 l_upg_trx_info_rec.application_id
532 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index);
533 l_upg_trx_info_rec.event_class_code
534 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index);
535 l_upg_trx_info_rec.entity_code
536 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index);
537 l_upg_trx_info_rec.trx_id
538 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_trx_line_index);
539 l_upg_trx_info_rec.trx_line_id
540 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
541 l_upg_trx_info_rec.trx_level_type
542 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
543
544 ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
545 p_upg_trx_info_rec => l_upg_trx_info_rec,
546 x_trx_migrated_b => l_trx_migrated_b,
547 x_return_status => x_return_status );
548
549 IF NOT l_trx_migrated_b THEN
550 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
551 p_upg_trx_info_rec => l_upg_trx_info_rec,
552 x_return_status => x_return_status
553 );
554
555 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
556 IF (g_level_statement >= g_current_runtime_level ) THEN
557 FND_LOG.STRING(g_level_statement,
558 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
559 'Incorrect return_status after calling ' ||
560 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
561 FND_LOG.STRING(g_level_statement,
562 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
563 'RETURN_STATUS = ' || x_return_status);
564 FND_LOG.STRING(g_level_statement,
565 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
566 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
567 END IF;
568 RETURN;
569 END IF;
570
571 -- after migrate the trx on the fly, fetch tax lines for historical trx again.
572 ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(
573 p_event_class_rec,
574 p_trx_line_index,
575 NULL,
576 NULL,
577 NULL,
578 l_begin_index,
579 l_end_index,
580 x_return_status);
581
582 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
583
584 IF (g_level_statement >= g_current_runtime_level ) THEN
585 FND_LOG.STRING(g_level_statement,
586 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
587 'Incorrect return_status after calling ' ||
588 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines');
589 FND_LOG.STRING(g_level_statement,
590 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
591 'RETURN_STATUS = ' || x_return_status);
592 FND_LOG.STRING(g_level_statement,
593 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
594 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
595 END IF;
596 RETURN;
597 END IF;
598
599 END IF;
600 END IF;
601
602 ELSIF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
603 p_trx_line_index) IS NOT NULL ) THEN
604
605 ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(
606 p_event_class_rec,
607 p_trx_line_index,
608 l_tax_date,
609 l_tax_determine_date,
610 l_tax_point_date,
611 l_begin_index,
612 l_end_index,
613 x_return_status);
614
615 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
616 IF (g_level_statement >= g_current_runtime_level ) THEN
617 FND_LOG.STRING(g_level_statement,
618 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
619 'Incorrect return_status after calling ' ||
620 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust');
621 FND_LOG.STRING(g_level_statement,
622 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
623 'RETURN_STATUS = ' || x_return_status);
624 FND_LOG.STRING(g_level_statement,
625 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
626 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
627 END IF;
628 RETURN;
629 END IF;
630
631 -- bug fix 4642405 : handle on the fly migration
632 -- When no tax line found for the adjusted doc, check if the trx line
633 -- exists in zx_lines_det_factors. If yes, it means the adjusted doc was
634 -- migrated, but don't have tax. Otherwise, migrate the adjusted doc
635 -- on-the-fly and call ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust
636 -- again to fetch the tax lines for the adjusted doc.
637
638 IF (l_begin_index IS NULL) OR (l_begin_index = l_end_index) THEN
639
640 l_upg_trx_info_rec.application_id
641 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(
642 p_trx_line_index);
643 l_upg_trx_info_rec.event_class_code
644 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(
645 p_trx_line_index);
646 l_upg_trx_info_rec.entity_code
647 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(
648 p_trx_line_index);
649 l_upg_trx_info_rec.trx_id
650 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id(
651 p_trx_line_index);
652 l_upg_trx_info_rec.trx_line_id
653 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(
654 p_trx_line_index);
655 l_upg_trx_info_rec.trx_level_type
656 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_level_type(
657 p_trx_line_index);
658
659 ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
660 p_upg_trx_info_rec => l_upg_trx_info_rec,
661 x_trx_migrated_b => l_trx_migrated_b,
662 x_return_status => x_return_status );
663
664 IF NOT l_trx_migrated_b THEN
665 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
666 p_upg_trx_info_rec => l_upg_trx_info_rec,
667 x_return_status => x_return_status
668 );
669
670 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
671 IF (g_level_statement >= g_current_runtime_level ) THEN
672 FND_LOG.STRING(g_level_statement,
673 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
674 'Incorrect return_status after calling ' ||
675 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
676 FND_LOG.STRING(g_level_statement,
677 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
678 'RETURN_STATUS = ' || x_return_status);
679 FND_LOG.STRING(g_level_statement,
680 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
681 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
682 END IF;
683 RETURN;
684 END IF;
685
686 -- after migrate the trx on the fly, fetch tax lines for applied_from doc again.
687 ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(
688 p_event_class_rec,
689 p_trx_line_index,
690 l_tax_date,
691 l_tax_determine_date,
692 l_tax_point_date,
693 l_begin_index,
694 l_end_index,
695 x_return_status);
696
697 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
698
699 IF (g_level_statement >= g_current_runtime_level ) THEN
700 FND_LOG.STRING(g_level_statement,
701 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
702 'Incorrect return_status after calling ' ||
703 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust');
704 FND_LOG.STRING(g_level_statement,
705 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
706 'RETURN_STATUS = ' || x_return_status);
707 FND_LOG.STRING(g_level_statement,
708 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
709 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
710 END IF;
711 RETURN;
712 END IF;
713
714 END IF;
715 END IF;
716
717 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(
718 p_trx_line_index) IS NOT NULL
719 THEN
720
721 ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(
722 p_event_class_rec,
723 p_trx_line_index,
724 l_tax_date,
725 l_tax_determine_date,
726 l_tax_point_date,
727 l_begin_index,
728 l_end_index,
729 x_return_status);
730
731 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
732
733 IF (g_level_statement >= g_current_runtime_level ) THEN
734 FND_LOG.STRING(g_level_statement,
735 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
736 'Incorrect return_status after calling ' ||
737 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied');
738 FND_LOG.STRING(g_level_statement,
739 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
740 'RETURN_STATUS = ' || x_return_status);
741 FND_LOG.STRING(g_level_statement,
742 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
743 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
744 END IF;
745 RETURN;
746 END IF;
747
748 -- bug fix 4642405 : handle on the fly migration
749 -- When no tax line found for the applied_from doc, check if the trx line
750 -- exists in zx_lines_det_factors. If yes, it means the applied_from doc was
751 -- migrated, but don't have tax. Otherwise, migrate the applied_from doc
752 -- on-the-fly and call ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied
753 -- again to fetch the tax lines for the applied_from doc.
754
755 IF (l_begin_index IS NULL) OR (l_begin_index = l_end_index) THEN
756
757 l_upg_trx_info_rec.application_id
758 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(
759 p_trx_line_index);
760 l_upg_trx_info_rec.event_class_code
761 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(
762 p_trx_line_index);
763 l_upg_trx_info_rec.entity_code
764 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(
765 p_trx_line_index);
766 l_upg_trx_info_rec.trx_id
767 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(
768 p_trx_line_index);
769 l_upg_trx_info_rec.trx_line_id
770 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(
771 p_trx_line_index);
772 l_upg_trx_info_rec.trx_level_type
773 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(
774 p_trx_line_index);
775
776 ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
777 p_upg_trx_info_rec => l_upg_trx_info_rec,
778 x_trx_migrated_b => l_trx_migrated_b,
779 x_return_status => x_return_status );
780
781 IF NOT l_trx_migrated_b THEN
782 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
783 p_upg_trx_info_rec => l_upg_trx_info_rec,
784 x_return_status => x_return_status
785 );
786
787 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
788 IF (g_level_statement >= g_current_runtime_level ) THEN
789 FND_LOG.STRING(g_level_statement,
790 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
791 'Incorrect return_status after calling ' ||
792 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
793 FND_LOG.STRING(g_level_statement,
794 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
795 'RETURN_STATUS = ' || x_return_status);
796 FND_LOG.STRING(g_level_statement,
797 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
798 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
799 END IF;
800 RETURN;
801 END IF;
802
803 -- after migrate the trx on the fly, fetch tax lines for applied_from doc again.
804 ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(
805 p_event_class_rec,
806 p_trx_line_index,
807 l_tax_date,
808 l_tax_determine_date,
809 l_tax_point_date,
810 l_begin_index,
811 l_end_index,
812 x_return_status);
813
814 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
815
816 IF (g_level_statement >= g_current_runtime_level ) THEN
817 FND_LOG.STRING(g_level_statement,
818 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
819 'Incorrect return_status after calling ' ||
820 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied');
821 FND_LOG.STRING(g_level_statement,
822 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
823 'RETURN_STATUS = ' || x_return_status);
824 FND_LOG.STRING(g_level_statement,
825 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
826 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
827 END IF;
828 RETURN;
829 END IF;
830
831 END IF;
832
833 END IF;
834
835 ELSE -- loop through detail_tax_regime_tbl to get applicable taxes
836
837 -- For UPDATE case, fetch manual tax lines from zx_lines
838 --
839
840 IF (((ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
841 p_trx_line_index) = 'UPDATE')
842 OR
843 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
844 p_trx_line_index) ='UPDATE' AND
845 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
846 p_trx_line_index) = 'LINE_INFO_TAX_ONLY'
847 OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
848 p_trx_line_index) = 'CREATE_WITH_TAX') -- Bug 8205359
849 ))) AND --bug#8534499
850 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(
851 p_trx_line_index) <> 'INTERCOMPANY_TRX' OR
852 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(
853 p_trx_line_index) IS NULL) THEN -- Bug 5291394
854
855 ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(
856 p_event_class_rec,
857 p_trx_line_index,
858 l_tax_date,
859 l_tax_determine_date,
860 l_tax_point_date,
861 l_begin_index,
862 l_end_index,
863 x_return_status);
864
865 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
866 IF (g_level_statement >= g_current_runtime_level ) THEN
867 FND_LOG.STRING(g_level_statement,
868 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
869 'Incorrect return_status after calling ' ||
870 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines');
871 FND_LOG.STRING(g_level_statement,
872 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
873 'RETURN_STATUS = ' || x_return_status);
874 FND_LOG.STRING(g_level_statement,
875 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
876 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
877 END IF;
878 RETURN;
879 END IF;
880
881 -- bug fix 4642405 : handle on the fly migration
882 -- When no tax line found for docto be updated, check if the trx line
883 -- exists in zx_lines_det_factors. If yes, it means current doc was
884 -- migrated, but don't have tax. Otherwise, migrate current doc
885 -- on-the-fly and call ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines
886 -- again to fetch the tax lines for current doc.
887
888 IF (l_begin_index IS NULL) OR (l_begin_index = l_end_index) THEN
889
890 l_upg_trx_info_rec.application_id
891 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(
892 p_trx_line_index);
893 l_upg_trx_info_rec.event_class_code
894 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(
895 p_trx_line_index);
896 l_upg_trx_info_rec.entity_code
897 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(
898 p_trx_line_index);
899 l_upg_trx_info_rec.trx_id
900 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(
901 p_trx_line_index);
902 l_upg_trx_info_rec.trx_line_id
903 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(
904 p_trx_line_index);
905 l_upg_trx_info_rec.trx_level_type
906 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(
907 p_trx_line_index);
908
909 ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
910 p_upg_trx_info_rec => l_upg_trx_info_rec,
911 x_trx_migrated_b => l_trx_migrated_b,
912 x_return_status => x_return_status );
913
914 IF NOT l_trx_migrated_b THEN
915 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
916 p_upg_trx_info_rec => l_upg_trx_info_rec,
917 x_return_status => x_return_status
918 );
919
920 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
921 IF (g_level_statement >= g_current_runtime_level ) THEN
922 FND_LOG.STRING(g_level_statement,
923 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
924 'Incorrect return_status after calling ' ||
925 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
926 FND_LOG.STRING(g_level_statement,
927 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
928 'RETURN_STATUS = ' || x_return_status);
929 FND_LOG.STRING(g_level_statement,
930 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
931 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
932 END IF;
933 RETURN;
934 END IF;
935
936 -- after migrate the trx on the fly, fetch tax lines for applied_from doc again.
937 ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(
938 p_event_class_rec,
939 p_trx_line_index,
940 l_tax_date,
941 l_tax_determine_date,
942 l_tax_point_date,
943 l_begin_index,
944 l_end_index,
945 x_return_status);
946
947 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
948
949 IF (g_level_statement >= g_current_runtime_level ) THEN
950 FND_LOG.STRING(g_level_statement,
951 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
952 'Incorrect return_status after calling ' ||
953 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines');
954 FND_LOG.STRING(g_level_statement,
955 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
956 'RETURN_STATUS = ' || x_return_status);
957 FND_LOG.STRING(g_level_statement,
958 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
959 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
960 END IF;
961 RETURN;
962 END IF;
963
964 END IF;
965 END IF;
966 END IF; -- -- line_level_action = 'UPDATE'
967
968 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
969 p_trx_line_index) IN ('CREATE', 'UPDATE')
970 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(
971 p_trx_line_index) = 'INTERCOMPANY_TRX'
972 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(
973 p_trx_line_index) IS NOT NULL
974 THEN
975
976 ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(
977 p_event_class_rec,
978 p_trx_line_index,
979 l_tax_date,
980 l_tax_determine_date,
981 l_tax_point_date,
982 l_begin_index,
983 l_end_index,
984 x_return_status);
985
986 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
987 IF (g_level_statement >= g_current_runtime_level ) THEN
988 FND_LOG.STRING(g_level_statement,
989 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
990 'Incorrect return_status after calling ' ||
991 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx');
992 FND_LOG.STRING(g_level_statement,
993 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
994 'RETURN_STATUS = ' || x_return_status);
995 FND_LOG.STRING(g_level_statement,
996 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
997 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
998 END IF;
999 RETURN;
1000 END IF;
1001
1002 -- bug fix 4653504 : handle on the fly migration
1003 -- When no tax line found for doc to be updated, check if the trx line
1004 -- exists in zx_lines_det_factors. If yes, it means current doc was
1005 -- migrated, but don't have tax. Otherwise, migrate current doc
1006 -- on-the-fly and call ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines
1007 -- again to fetch the tax lines for current doc.
1008
1009 IF ((l_begin_index IS NULL) OR (l_begin_index = l_end_index) ) THEN
1010
1011 OPEN get_source_doc_info (
1012 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index),
1013 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index),
1014 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index)
1015 );
1016
1017 FETCH get_source_doc_info into
1018 l_upg_trx_info_rec.application_id,
1019 l_upg_trx_info_rec.entity_code,
1020 l_upg_trx_info_rec.event_class_code;
1021
1022 IF get_source_doc_info%NOTFOUND THEN
1023 -- need to define new error message code
1024 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1025 IF (g_level_statement >= g_current_runtime_level ) THEN
1026 FND_LOG.STRING(g_level_statement,
1027 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1028 'No record found in zx_evnt_mappings.' );
1029 FND_LOG.STRING(g_level_statement,
1030 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1031 'application_id: '||
1032 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index) );
1033 FND_LOG.STRING(g_level_statement,
1034 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1035 'entity_code: '||
1036 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index) );
1037 FND_LOG.STRING(g_level_statement,
1038 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1039 'event_class_code: '||
1040 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index) );
1041 FND_LOG.STRING(g_level_statement,
1042 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1043 'RETURN_STATUS = ' || x_return_status);
1044 FND_LOG.STRING(g_level_statement,
1045 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1046 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1047 END IF;
1048 RETURN;
1049 END IF;
1050
1051 --Bug 9587918
1052 /* IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_class(p_trx_line_index) = 'AP_CREDIT_MEMO' THEN
1053 l_upg_trx_info_rec.event_class_code := 'CREDIT_MEMO';
1054 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_class(p_trx_line_index) = 'AP_DEBIT_MEMO' THEN
1055 l_upg_trx_info_rec.event_class_code := 'DEBIT_MEMO';
1056 END IF; */
1057
1058 l_upg_trx_info_rec.trx_id
1059 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(
1060 p_trx_line_index);
1061 l_upg_trx_info_rec.trx_line_id
1062 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_line_id(
1063 p_trx_line_index);
1064 l_upg_trx_info_rec.trx_level_type
1065 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_level_type(
1066 p_trx_line_index);
1067
1068 --Bug 10631930 (continuation of bug 9587918, relaxing event class code check for intercompany invoices)
1069
1070 IF l_upg_trx_info_rec.trx_line_id IS NOT NULL THEN
1071 SELECT count(*) into l_count
1072 FROM zx_lines_det_factors
1073 WHERE application_id = l_upg_trx_info_rec.application_id
1074 AND entity_code = l_upg_trx_info_rec.entity_code
1075 AND trx_id = l_upg_trx_info_rec.trx_id
1076 AND trx_line_id = l_upg_trx_info_rec.trx_line_id
1077 AND trx_level_type = l_upg_trx_info_rec.trx_level_type;
1078 ELSE
1079 SELECT count(*) into l_count
1080 FROM zx_lines_det_factors
1081 WHERE application_id = l_upg_trx_info_rec.application_id
1082 AND entity_code = l_upg_trx_info_rec.entity_code
1083 AND trx_id = l_upg_trx_info_rec.trx_id;
1084 END IF;
1085
1086 IF l_count = 0 THEN
1087 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
1088 p_upg_trx_info_rec => l_upg_trx_info_rec,
1089 x_return_status => x_return_status
1090 );
1091
1092
1093 /* ZX_ON_FLY_TRX_UPGRADE_PKG.is_trx_migrated(
1094 p_upg_trx_info_rec => l_upg_trx_info_rec,
1095 x_trx_migrated_b => l_trx_migrated_b,
1096 x_return_status => x_return_status );
1097
1098 IF NOT l_trx_migrated_b THEN
1099 ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly(
1100 p_upg_trx_info_rec => l_upg_trx_info_rec,
1101 x_return_status => x_return_status
1102 ); */
1103
1104 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1105 IF (g_level_statement >= g_current_runtime_level ) THEN
1106 FND_LOG.STRING(g_level_statement,
1107 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1108 'Incorrect return_status after calling ' ||
1109 ' ZX_ON_FLY_TRX_UPGRADE_PKG.upgrade_trx_on_fly');
1110 FND_LOG.STRING(g_level_statement,
1111 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1112 'RETURN_STATUS = ' || x_return_status);
1113 FND_LOG.STRING(g_level_statement,
1114 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1115 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1116 END IF;
1117 RETURN;
1118 END IF;
1119
1120 -- after migrate the trx on the fly, fetch tax lines for applied_from doc again.
1121 ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(
1122 p_event_class_rec,
1123 p_trx_line_index,
1124 l_tax_date,
1125 l_tax_determine_date,
1126 l_tax_point_date,
1127 l_begin_index,
1128 l_end_index,
1129 x_return_status);
1130
1131 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1132 IF (g_level_statement >= g_current_runtime_level ) THEN
1133 FND_LOG.STRING(g_level_statement,
1134 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1135 'Incorrect return_status after calling ' ||
1136 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx');
1137 FND_LOG.STRING(g_level_statement,
1138 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1139 'RETURN_STATUS = ' || x_return_status);
1140 FND_LOG.STRING(g_level_statement,
1141 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1142 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1143 END IF;
1144 RETURN;
1145 END IF;
1146
1147 END IF; --l_count=0
1148 END IF; -- l_begin_index
1149
1150 END IF; -- 'INTERCOMPANY_TRX'
1151
1152 -- Bug 3648628: if line_level_action = 'LINE_INFO_TAX_ONLY', skip the
1153 -- process to create any detail tax line for this trx line (memo line).
1154 --
1155 -- Bug 11076922: Incase of receivables, line level action will be coming as
1156 -- 'CREATE_WITH_TAX', incase user updates any of the header level tax determining
1157 -- attributes for an imported transaction, which has manual tax line. Adding perform
1158 -- additional flag for future purposes.
1159
1160 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (
1161 p_trx_line_index ) <> 'LINE_INFO_TAX_ONLY' AND
1162 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (
1163 p_trx_line_index ) <> 'CREATE_WITH_TAX'
1164 OR NVL(p_event_class_rec.perf_addnl_appl_for_imprt_flag,'N') = 'Y') AND
1165 p_event_class_rec.process_for_applicability_flag = 'Y' AND
1166 NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg, 'Y') = 'Y' AND
1167 -- Bug 4765758: for TM, check source_process_for_appl_flag to determine
1168 -- whether tax needs to be calcualted or not.
1169 NVL(p_event_class_rec.source_process_for_appl_flag, 'Y') = 'Y'
1170 THEN
1171
1172 /* Start: Added for Bug 4959835 */
1173 -- Based on the Regime Usage code, either direct rate determination
1174 -- processing has to be performed or it should goto the loop part below.
1175 -- If the Regime determination template is 'STCC' (non-location based)
1176 -- then, call get process results directly
1177 -- Else (for location based) call tax applicability.
1178
1179 IF p_event_class_rec.template_usage_code = 'TAX_RULES'
1180 THEN
1181
1182 -- The direct rate determination is coded in the applicability pkg
1183 -- in order to reuse some of the existing logic there.
1184 --
1185 ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(p_trx_line_index,
1186 l_tax_date,
1187 l_tax_determine_date,
1188 l_tax_point_date,
1189 p_event_class_rec,
1190 l_begin_index,
1191 l_end_index,
1192 x_return_status);
1193
1194 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1195 IF (g_level_error >= g_current_runtime_level ) THEN
1196 FND_LOG.STRING(g_level_error,
1197 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1198 'Incorrect return_status after calling ' ||
1199 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results()');
1200 FND_LOG.STRING(g_level_error,
1201 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1202 'RETURN_STATUS = ' || x_return_status);
1203 FND_LOG.STRING(g_level_error,
1204 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1205 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1206 END IF;
1207 RETURN;
1208 END IF;
1209
1210
1211 ELSE
1212 FOR regime_index IN
1213 NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.FIRST, 0) ..
1214 NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.LAST, -1) LOOP
1215
1216 IF ( ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
1217 regime_index).trx_line_index = p_trx_line_index) THEN
1218
1219 -- tax_regime_id is detail_tax_regime_tbl(regime_index).tax_regime_id.
1220 -- Get the tax_provider_id:
1221 --
1222 l_tax_regime_id := ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
1223 regime_index).tax_regime_id;
1224 l_provider_id := ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(
1225 l_tax_regime_id).tax_provider_id;
1226
1227 IF (l_provider_id IS NULL) THEN
1228
1229 -- If l_provider_id is null, this tax needs to be processed
1230 --
1231 ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes (
1232 l_tax_regime_id,
1233 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(
1234 l_tax_regime_id).tax_regime_code,
1235 p_trx_line_index,
1236 p_event_class_rec,
1237 l_tax_date,
1238 l_tax_determine_date,
1239 l_tax_point_date,
1240 l_begin_index,
1241 l_end_index,
1242 x_return_status );
1243
1244 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1245 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1246 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
1247 FND_LOG.STRING(G_LEVEL_STATEMENT,
1248 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1249 'Incorrect return_status after calling ' ||
1250 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes()');
1251 FND_LOG.STRING(G_LEVEL_STATEMENT,
1252 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1253 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1254 END IF;
1255 RETURN;
1256 END IF;
1257 END IF;
1258
1259 END IF; -- provider ID
1260 END IF; -- detail_regime for this transaction line
1261 END LOOP; -- regime_index IN detail_tax_regime_tbl
1262 END IF; -- to be added for the STCC logic
1263 END IF; -- line_level_action <> 'LINE_INFO_TAX_ONLY'
1264 END IF; -- applied_from(adjusted_doc)_appl_id IS NOT NULL,OR ELSE
1265
1266 IF p_event_class_rec.enforce_tax_from_acct_flag = 'Y' AND
1267 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index) > 0
1268 THEN
1269
1270 ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(
1271 p_event_class_rec,
1272 p_trx_line_index,
1273 l_tax_date,
1274 l_tax_determine_date,
1275 l_tax_point_date,
1276 l_begin_index,
1277 l_end_index,
1278 x_return_status);
1279
1280 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1281 IF (g_level_statement >= g_current_runtime_level ) THEN
1282 FND_LOG.STRING(g_level_statement,
1283 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1284 'Incorrect return_status after calling ' ||
1285 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account');
1286 FND_LOG.STRING(g_level_statement,
1287 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1288 'RETURN_STATUS = ' || x_return_status);
1289 FND_LOG.STRING(g_level_statement,
1290 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1291 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1292 END IF;
1293 RETURN;
1294 END IF;
1295 END IF;
1296
1297 -- call the Internal Processes only if tax created
1298 --
1299 IF l_begin_index IS NOT NULL AND l_end_index IS NOT NULL THEN
1300
1301 -- For migrated transactions, skip tax status and rate determination
1302 --
1303 IF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag(
1304 p_trx_line_index), 'N') <> 'Y' THEN
1305
1306 -- get tax status
1307 --
1308 ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status(
1309 l_begin_index,
1310 l_end_index,
1311 'TRX_LINE_DIST_TBL',
1312 p_trx_line_index,
1313 p_event_class_rec,
1314 x_return_status,
1315 l_error_buffer);
1316
1317 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1318 IF (g_level_error >= g_current_runtime_level ) THEN
1319 FND_LOG.STRING(g_level_error,
1320 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1321 'Incorrect return_status after calling ' ||
1322 'ZX_TDS_TAX_STATUS_DETM_PKG.get_tax_status()');
1323 FND_LOG.STRING(g_level_error,
1324 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1325 'RETURN_STATUS = ' || x_return_status);
1326 FND_LOG.STRING(g_level_error,
1327 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1328 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1329 END IF;
1330 RETURN;
1331 END IF;
1332
1333 -- get tax rate
1334 --
1335 ZX_TDS_RATE_DETM_PKG.get_tax_rate(
1336 l_begin_index,
1337 l_end_index,
1338 p_event_class_rec,
1339 'TRX_LINE_DIST_TBL',
1340 p_trx_line_index,
1341 x_return_status,
1342 l_error_buffer );
1343
1344 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1345 IF (g_level_error >= g_current_runtime_level ) THEN
1346 FND_LOG.STRING(g_level_error,
1347 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1348 'Incorrect return_status after calling ' ||
1349 'ZX_TDS_RATE_DETM_PKG.get_tax_rate()');
1350 FND_LOG.STRING(g_level_error,
1351 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1352 'RETURN_STATUS = ' || x_return_status);
1353 FND_LOG.STRING(g_level_error,
1354 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1355 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1356 END IF;
1357 RETURN;
1358 END IF;
1359 END IF; -- historical_flag <> 'Y'
1360
1361 -- Get taxable basis
1362 --
1363 ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis(
1364 l_begin_index,
1365 l_end_index,
1366 p_event_class_rec,
1367 'TRX_LINE_DIST_TBL',
1368 p_trx_line_index,
1369 x_return_status,
1370 l_error_buffer );
1371
1372 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1373 IF (g_level_error >= g_current_runtime_level ) THEN
1374 FND_LOG.STRING(g_level_error,
1375 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1376 'Incorrect return_status after calling ' || '
1377 ZX_TDS_TAXABLE_BASIS_DETM_PKG.get_taxable_basis()');
1378 FND_LOG.STRING(g_level_error,
1379 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1380 'RETURN_STATUS = ' || x_return_status);
1381 FND_LOG.STRING(g_level_error,
1382 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1383 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1384 END IF;
1385 RETURN;
1386 END IF;
1387
1388 -- Calculate tax amount
1389 --
1390 ZX_TDS_CALC_PKG.Get_tax_amount(
1391 l_begin_index,
1392 l_end_index,
1393 p_event_class_rec,
1394 'TRX_LINE_DIST_TBL',
1395 p_trx_line_index,
1396 x_return_status,
1397 l_error_buffer );
1398
1399 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1400 IF (g_level_error >= g_current_runtime_level ) THEN
1401 FND_LOG.STRING(g_level_error,
1402 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1403 'Incorrect return_status after calling '||
1404 'ZX_TDS_CALC_PKG.Get_tax_amount()');
1405 FND_LOG.STRING(g_level_error,
1406 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1407 'RETURN_STATUS = ' || x_return_status);
1408 FND_LOG.STRING(g_level_error,
1409 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1410 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1411 END IF;
1412 RETURN;
1413 END IF;
1414
1415 --
1416 -- populate Process_For_Recovery_Flag
1417 --
1418 ZX_TDS_TAX_LINES_POPU_PKG.populate_recovery_flg(
1419 l_begin_index,
1420 l_end_index,
1421 p_event_class_rec,
1422 x_return_status,
1423 l_error_buffer);
1424
1425 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1426 RETURN;
1427 END IF;
1428
1429 -- Call Internal_Flag Service to check mandatory columns, like WHO columns,
1430 -- line ids, etc, and populate values if they are missing.
1431 --
1432 ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line(
1433 l_begin_index,
1434 l_end_index,
1435 x_return_status,
1436 l_error_buffer);
1437
1438 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1439 IF (g_level_error >= g_current_runtime_level ) THEN
1440 FND_LOG.STRING(g_level_error,
1441 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1442 'Incorrect return_status after calling '||
1443 'ZX_TDS_TAX_LINES_POPU_PKG.pop_tax_line_for_trx_line()');
1444 FND_LOG.STRING(g_level_error,
1445 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1446 'RETURN_STATUS = ' || x_return_status);
1447 FND_LOG.STRING(g_level_error,
1448 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1449 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1450 END IF;
1451 RETURN;
1452 END IF;
1453 END IF; -- begin_index and end_index NOT NULL, call internal services
1454 ELSE -- tax_event_type_code other than 'CREATE','UPDATE','OVERRIDE_TAX'
1455
1456 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
1457 IF (g_level_statement >= g_current_runtime_level ) THEN
1458
1459 FND_LOG.STRING(g_level_statement,
1460 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1461 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)'||'Tax Event Type Code: '||
1462 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1463 p_trx_line_index));
1464 END IF;
1465 RETURN;
1466 END IF; -- tax_event_type_code 'CREATE','UPDATE','OVERRIDE_TAX'
1467
1468 IF p_event_class_rec.ctrl_total_hdr_tx_amt IS NOT NULL THEN
1469
1470 -- If ctrl_hdr_tx_appl_flag is 'N', set the self_assessed_flag of detail
1471 -- tax lines to 'Y'
1472 --
1473 -- set overridden_flag = 'Y' and last_manual_entry = 'TAX_AMOUNT'
1474 --
1475
1476 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg := 'Y'; -- bug 5417887
1477
1478 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_hdr_tx_appl_flag(
1479 p_trx_line_index) = 'N' THEN
1480 FOR tax_line_index IN nvl(l_begin_index,0) .. nvl(l_end_index,-99) LOOP
1481 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1482 tax_line_index).self_assessed_flag := 'Y';
1483 END LOOP;
1484
1485 END IF; -- ctrl_hdr_tx_appl_flag is 'N'
1486 END IF; -- ctrl_total_hdr_tx_amt IS NOT NULL
1487
1488 -- Start : If Statement added for Bug#8540809
1489 -- If Ctrl_Total_Hdr_Tx_Amt is Not Null and Ctrl_Hdr_Tx_Appl_flag = Y then
1490 -- set the global variable g_ctrl_total_hdr_tx_amt_flg = Y
1491
1492 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_hdr_tx_amt(p_trx_line_index) IS NOT NULL AND
1493 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_hdr_tx_appl_flag(p_trx_line_index) = 'Y'
1494 THEN
1495 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg := 'Y';
1496 END IF;
1497 -- End : If Statement added for Bug#8540809
1498
1499 -- If ctrl_total_line_tx_amt is not null, process taxes for line level
1500 -- xml invoice
1501 --
1502 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_line_tx_amt (
1503 p_trx_line_index) IS NOT NULL
1504 THEN
1505 l_tax_exists_flg := 'N';
1506 FOR i IN NVL(l_begin_index, 0) .. NVL(l_end_index, -1) LOOP
1507 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1508 i).self_assessed_flag <> 'Y' AND
1509 ( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1510 i).offset_flag <> 'Y' OR
1511 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1512 i).offset_flag IS NULL) --Bug 5765221
1513 THEN
1514 l_tax_exists_flg := 'Y';
1515 EXIT;
1516 END IF;
1517 END LOOP;
1518
1519 IF l_tax_exists_flg = 'Y' THEN
1520
1521 -- populate p_event_class_rec.ctrl_total_line_tx_amt_flg because the value
1522 -- of ctrl_total_line_tx_amt of this transaction line is not null.
1523 --
1524 p_event_class_rec.ctrl_total_line_tx_amt_flg := 'Y';
1525 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_line_tx_amt_flg := 'Y'; -- bug 5417887
1526
1527 ELSE
1528 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_line_tx_amt(
1529 p_trx_line_index) <> 0
1530 THEN
1531 x_return_status := FND_API.G_RET_STS_ERROR;
1532 IF (g_level_error >= g_current_runtime_level ) THEN
1533 FND_LOG.STRING(g_level_error,
1534 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1535 'line level control tax amount is not 0, ' ||
1536 'but there is no tax lines created for the trx line.');
1537
1538 FND_LOG.STRING(g_level_error,
1539 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1540 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1541 END IF;
1542
1543 FND_MESSAGE.SET_NAME('ZX','ZX_LN_CTRL_TOTAL_TAX_NOT_EXIST');
1544
1545 -- FND_MSG_PUB.Add;
1546 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
1547 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
1548 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
1549 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
1550
1551 ZX_API_PUB.add_msg(ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
1552
1553 RETURN;
1554 END IF; -- ctrl_total_line_tx_amt <> 0
1555 END IF; -- l_tax_exists_flg = 'Y' or ELSE
1556 END IF; -- ctrl_total_line_tx_amt IS NOT NULL
1557
1558 -- If the number of tax lines in g_detail_tax_lines_tbl is greater than,
1559 -- or equals to 1000, dump the detail tax lines to the global temporary
1560 -- table zx_detail_tax_lines_gt
1561 --
1562 IF ( g_detail_tax_lines_tbl.LAST >= 1000) THEN
1563
1564 dump_detail_tax_lines_into_gt (x_return_status);
1565
1566 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1567 IF (g_level_error >= g_current_runtime_level ) THEN
1568 FND_LOG.STRING(g_level_error,
1569 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1570 'Incorrect return_status after calling ' ||
1571 'dump_detail_tax_lines_into_gt()');
1572 FND_LOG.STRING(g_level_error,
1573 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1574 'RETURN_STATUS = ' || x_return_status);
1575 FND_LOG.STRING(g_level_error,
1576 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1577 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1578 END IF;
1579 RETURN;
1580 END IF;
1581 END IF;
1582
1583 IF (g_level_procedure >= g_current_runtime_level ) THEN
1584
1585 FND_LOG.STRING(g_level_procedure,
1586 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1587 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)'||x_return_status);
1588 END IF;
1589
1590 EXCEPTION
1591 WHEN OTHERS THEN
1592 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1593
1594 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1595 FND_LOG.STRING(g_level_unexpected,
1596 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax',
1597 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1598 FND_LOG.STRING(g_level_unexpected,
1599 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax.END',
1600 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
1601 END IF;
1602
1603 END calculate_tax;
1604
1605 /* ======================================================================*
1606 | PROCEDURE override_detail_tax_lines |
1607 | This procedure is called for every transaction line |
1608 * ======================================================================*/
1609 PROCEDURE override_detail_tax_lines (
1610 p_trx_line_index IN BINARY_INTEGER,
1611 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
1612 x_return_status OUT NOCOPY VARCHAR2) IS
1613
1614
1615 BEGIN
1616 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1617
1618 IF (g_level_procedure >= g_current_runtime_level ) THEN
1619 FND_LOG.STRING(g_level_procedure,
1620 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines.BEGIN',
1621 'ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines(+)');
1622 END IF;
1623 x_return_status := FND_API.G_RET_STS_SUCCESS;
1624
1625 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1626 p_trx_line_index) = 'OVERRIDE_TAX') THEN
1627
1628 calculate_tax( p_trx_line_index,
1629 p_event_class_rec,
1630 x_return_status );
1631
1632 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1633 IF (g_level_error >= g_current_runtime_level ) THEN
1634 FND_LOG.STRING(g_level_error,
1635 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines',
1636 'Incorrect return_status after calling calculate_tax()');
1637 FND_LOG.STRING(g_level_error,
1638 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines',
1639 'RETURN_STATUS = ' || x_return_status);
1640 FND_LOG.STRING(g_level_error,
1641 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines.END',
1642 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines(-)');
1643 END IF;
1644 RETURN;
1645 END IF;
1646
1647 ELSE
1648 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
1649 IF (g_level_statement >= g_current_runtime_level ) THEN
1650 FND_LOG.STRING(g_level_statement,
1651 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines',
1652 'Tax Event Type Code: '||
1653 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1654 p_trx_line_index) ||' is not correct.');
1655 END IF;
1656 END IF;
1657
1658 IF (g_level_procedure >= g_current_runtime_level ) THEN
1659
1660 FND_LOG.STRING(g_level_procedure,
1661 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.overide_detail_tax_lines.END',
1662 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines(-)'||x_return_status);
1663 END IF;
1664
1665 EXCEPTION
1666 WHEN OTHERS THEN
1667 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1668 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1669 FND_LOG.STRING(g_level_unexpected,
1670 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines',
1671 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1672 FND_LOG.STRING(g_level_unexpected,
1673 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines.END',
1674 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_detail_tax_lines(-)');
1675 END IF;
1676
1677
1678 END override_detail_tax_lines;
1679
1680 /* ======================================================================*
1681 | PROCEDURE override_summary_lines |
1682 | |
1683 * ======================================================================*/
1684 PROCEDURE override_summary_tax_lines (
1685 p_trx_line_index IN BINARY_INTEGER,
1686 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
1687 x_return_status OUT NOCOPY VARCHAR2) IS
1688
1689 BEGIN
1690 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1691
1692 IF (g_level_procedure >= g_current_runtime_level ) THEN
1693 FND_LOG.STRING(g_level_procedure,
1694 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines.BEGIN',
1695 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines(+)');
1696 END IF;
1697 x_return_status := FND_API.G_RET_STS_SUCCESS;
1698
1699 IF ( ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1700 p_trx_line_index) = 'OVERRIDE_TAX') THEN
1701
1702 calculate_tax( p_trx_line_index,
1703 p_event_class_rec,
1704 x_return_status );
1705
1706 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1707 IF (g_level_error >= g_current_runtime_level ) THEN
1708 FND_LOG.STRING(g_level_error,
1709 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines',
1710 'Incorrect return_status after calling calculate_tax()');
1711 FND_LOG.STRING(g_level_error,
1712 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines',
1713 'RETURN_STATUS = ' || x_return_status);
1714 FND_LOG.STRING(g_level_error,
1715 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines.END',
1716 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines(-)');
1717 END IF;
1718 RETURN;
1719 END IF;
1720
1721 ELSE
1722 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
1723 IF (g_level_statement >= g_current_runtime_level ) THEN
1724 FND_LOG.STRING(g_level_statement,
1725 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines',
1726 'Tax Event Type Code: '||
1727 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1728 p_trx_line_index) ||' is not correct.');
1729 END IF;
1730 END IF;
1731 IF (g_level_procedure >= g_current_runtime_level ) THEN
1732
1733 FND_LOG.STRING(g_level_procedure,
1734 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines.END',
1735 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines(-)'||x_return_status);
1736 END IF;
1737
1738 EXCEPTION
1739 WHEN OTHERS THEN
1740 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1741 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1742 FND_LOG.STRING(g_level_unexpected,
1743 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines',
1744 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1745 FND_LOG.STRING(g_level_unexpected,
1746 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines.END',
1747 'ZX_TDS_CALC_SERVICES_PUB_PKG.override_summary_tax_lines(-)');
1748 END IF;
1749
1750 END override_summary_tax_lines;
1751
1752 /* ====================================================== ===============*
1753 | PROCEDURE tax_line_determination |
1754 | This procedure is called for the whole transaction |
1755 * ======================================================================*/
1756 PROCEDURE tax_line_determination (
1757 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
1758 x_return_status OUT NOCOPY VARCHAR2) IS
1759
1760 l_error_buffer VARCHAR2(240);
1761
1762 BEGIN
1763
1764 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1765
1766 IF (g_level_procedure >= g_current_runtime_level ) THEN
1767 FND_LOG.STRING(g_level_procedure,
1768 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.BEGIN',
1769 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(+)');
1770 END IF;
1771
1772 x_return_status := FND_API.G_RET_STS_SUCCESS;
1773
1774 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_line_tx_amt_flg = 'Y' THEN
1775
1776 -- Prorate tax across tax lines created for the transactrion line
1777 -- where the control_total_tax_line_amt is not null
1778 --
1779 -- Bug fix 5417887
1780 process_taxes_for_xml_inv_line (
1781 -- p_event_class_rec,
1782 x_return_status);
1783
1784 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1785 IF (g_level_error >= g_current_runtime_level ) THEN
1786 FND_LOG.STRING(g_level_error,
1787 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1788 'Incorrect return_status after calling '||
1789 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line');
1790 FND_LOG.STRING(g_level_error,
1791 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1792 'RETURN_STATUS = ' || x_return_status);
1793 FND_LOG.STRING(g_level_error,
1794 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1795 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1796 END IF;
1797 RETURN;
1798 END IF;
1799
1800 ELSIF ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg = 'Y' THEN
1801 -- If ctrl_total_hdr_tx_amt is not null, process taxes for header level
1802 -- xml invoice
1803 --
1804 -- process xml invoice with header level contrl amount
1805 --
1806 -- Bug fix 5417887
1807 process_taxes_for_xml_inv_hdr (
1808 -- p_event_class_rec,
1809 x_return_status);
1810
1811 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1812 IF (g_level_error >= g_current_runtime_level ) THEN
1813 FND_LOG.STRING(g_level_error,
1814 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1815 'Incorrect return_status after calling '||
1816 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr');
1817 FND_LOG.STRING(g_level_error,
1818 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1819 'RETURN_STATUS = ' || x_return_status);
1820 FND_LOG.STRING(g_level_error,
1821 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1822 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1823 END IF;
1824 RETURN;
1825 END IF;
1826
1827 END IF;
1828
1829 -- call Internal_Flag service ZX_TDS_TAX_LINES_DETM_PKG.determine_tax_lines
1830 --
1831 ZX_TDS_TAX_LINES_DETM_PKG.determine_tax_lines(
1832 p_event_class_rec,
1833 x_return_status,
1834 l_error_buffer);
1835
1836 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1837 IF (g_level_error >= g_current_runtime_level ) THEN
1838 FND_LOG.STRING(g_level_error,
1839 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1840 'Incorrect return_status after calling '||
1841 'ZX_TDS_TAX_LINES_DETM_PKG.determine_tax_lines()');
1842 FND_LOG.STRING(g_level_error,
1843 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1844 'RETURN_STATUS = ' || x_return_status);
1845 FND_LOG.STRING(g_level_error,
1846 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1847 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1848 END IF;
1849 RETURN;
1850 END IF;
1851
1852 -- adjust tax amount for xml invoices if the rounded total tax amount is
1853 -- different from the control amount
1854 --
1855 -- xml invoice with header level control amount
1856 --
1857 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg = 'Y' THEN
1858
1859 adjust_tax_for_xml_inv_hdr (
1860 -- p_event_class_rec,
1861 x_return_status);
1862
1863 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1864 IF (g_level_error >= g_current_runtime_level ) THEN
1865 FND_LOG.STRING(g_level_error,
1866 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1867 'Incorrect return_status after calling '||
1868 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr');
1869 FND_LOG.STRING(g_level_error,
1870 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1871 'RETURN_STATUS = ' || x_return_status);
1872 FND_LOG.STRING(g_level_error,
1873 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1874 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1875 END IF;
1876 RETURN;
1877 END IF;
1878
1879 ELSIF ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_line_tx_amt_flg = 'Y' THEN
1880
1881 -- xml invoice with header level control amount
1882 --
1883 -- if p_event_class_rec.ctrl_total_line_tx_amt_flg is 'Y'
1884 -- call adjust_tax_for_xml_inv_line for line level control total amount
1885 --
1886 adjust_tax_for_xml_inv_line (
1887 -- p_event_class_rec,
1888 x_return_status);
1889
1890 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1891 IF (g_level_error >= g_current_runtime_level ) THEN
1892 FND_LOG.STRING(g_level_error,
1893 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1894 'Incorrect return_status after calling '||
1895 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line');
1896 FND_LOG.STRING(g_level_error,
1897 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1898 'RETURN_STATUS = ' || x_return_status);
1899 FND_LOG.STRING(g_level_error,
1900 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1901 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1902 END IF;
1903 RETURN;
1904 END IF;
1905
1906 END IF;
1907
1908 --IF p_event_class_rec.tax_event_type_code = 'OVERRIDE_TAX' AND
1909 -- p_event_class_rec.override_level = 'SUMMARY_OVERRIDE' THEN
1910
1911 -- ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line (
1912 -- p_event_class_rec => p_event_class_rec,
1913 -- x_return_status => x_return_status );
1914
1915 -- IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1916 -- IF (g_level_error >= g_current_runtime_level ) THEN
1917 -- FND_LOG.STRING(g_level_error,
1918 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1919 -- 'Incorrect return_status after calling '||
1920 -- 'ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line');
1921 -- FND_LOG.STRING(g_level_error,
1922 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1923 -- 'RETURN_STATUS = ' || x_return_status);
1924 -- FND_LOG.STRING(g_level_error,
1925 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1926 -- 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1927 -- END IF;
1928 -- RETURN;
1929 -- END IF;
1930
1931 --END IF;
1932
1933 -- Start Bugfix: 5617541
1934 -- Process tolerance check if control total passed
1935 -- bug 5684123
1936 IF (p_event_class_rec.tax_tolerance IS NOT NULL OR
1937 p_event_class_rec.tax_tol_amt_range IS NOT NULL) AND
1938 ((ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg = 'Y' OR
1939 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_line_tx_amt_flg = 'Y'
1940 ) OR
1941 (p_event_class_rec.tax_event_type_code = 'UPDATE' AND
1942 ZX_TDS_CALC_SERVICES_PUB_PKG.g_overridden_tax_ln_exist_flg = 'Y'
1943 )
1944 )
1945 THEN
1946
1947 ZX_TDS_TAX_LINES_POPU_PKG.process_tax_tolerance(
1948 p_event_class_rec,
1949 x_return_status,
1950 l_error_buffer);
1951
1952 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1953 IF (g_level_error >= g_current_runtime_level ) THEN
1954 FND_LOG.STRING(g_level_error,
1955 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1956 'Incorrect return_status after calling '||
1957 'ZX_TDS_TAX_LINES_POPU_PKG.process_tax_tolerance');
1958 FND_LOG.STRING(g_level_error,
1959 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1960 'RETURN_STATUS = ' || x_return_status);
1961 FND_LOG.STRING(g_level_error,
1962 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END
1963 ',
1964 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1965 END IF;
1966 RETURN;
1967 END IF;
1968
1969
1970 END IF;
1971
1972 -- End Bugfix: 5617541
1973
1974 IF (g_level_procedure >= g_current_runtime_level ) THEN
1975
1976 FND_LOG.STRING(g_level_procedure,
1977 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1978 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)'||x_return_status);
1979 END IF;
1980
1981 EXCEPTION
1982 WHEN OTHERS THEN
1983 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1984 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1985 FND_LOG.STRING(g_level_unexpected,
1986 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination',
1987 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1988 FND_LOG.STRING(g_level_unexpected,
1989 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination.END',
1990 'ZX_TDS_CALC_SERVICES_PUB_PKG.tax_line_determination(-)');
1991 END IF;
1992
1993 END tax_line_determination;
1994
1995 /*=========================================================================*
1996 | Public procedure prorate_imported_sum_tax_lines is used to prorate |
1997 | imported summary tax lines to create detail tax lines. |
1998 *=========================================================================*/
1999 PROCEDURE prorate_imported_sum_tax_lines (
2000 p_event_class_rec IN zx_api_pub.event_class_rec_type,
2001 x_return_status OUT NOCOPY VARCHAR2) IS
2002
2003 BEGIN
2004
2005 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2006
2007 IF (g_level_procedure >= g_current_runtime_level ) THEN
2008 FND_LOG.STRING(g_level_procedure,
2009 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines.BEGIN',
2010 'ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines(+)');
2011 END IF;
2012
2013 x_return_status := FND_API.G_RET_STS_SUCCESS;
2014
2015 -- get detail tax lines from imported summary lines
2016 --
2017 ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines(
2018 p_event_class_rec => p_event_class_rec,
2019 x_return_status => x_return_status);
2020
2021 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2022 IF (g_level_statement >= g_current_runtime_level ) THEN
2023 FND_LOG.STRING(g_level_statement,
2024 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines',
2025 'Incorrect return_status after calling ' ||
2026 'ZX_TDS_IMPORT_DOCUMENT_PKG.prorate_imported_sum_tax_lines() ' || x_return_status);
2027 FND_LOG.STRING(g_level_statement,
2028 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines.END',
2029 'ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines(-)');
2030 END IF;
2031 RETURN;
2032 END IF;
2033
2034 -- dump detail tax lines created from summary tax lines into
2035 -- zx_detail_tax_lines_gt
2036 --
2037 dump_detail_tax_lines_into_gt (x_return_status);
2038
2039 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2040 IF (g_level_error >= g_current_runtime_level ) THEN
2041 FND_LOG.STRING(g_level_error,
2042 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines',
2043 'Incorrect return_status after calling ' ||
2044 'dump_detail_tax_lines_into_gt()');
2045 FND_LOG.STRING(g_level_error,
2046 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines',
2047 'RETURN_STATUS = ' || x_return_status);
2048 FND_LOG.STRING(g_level_error,
2049 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines.END',
2050 'ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines(-)');
2051 END IF;
2052 RETURN;
2053 END IF;
2054
2055 IF (g_level_procedure >= g_current_runtime_level ) THEN
2056
2057 FND_LOG.STRING(g_level_procedure,
2058 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines.END',
2059 'ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines(-)'||x_return_status);
2060 END IF;
2061
2062 EXCEPTION
2063 WHEN OTHERS THEN
2064 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2065 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2066 FND_LOG.STRING(g_level_unexpected,
2067 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines',
2068 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2069 FND_LOG.STRING(g_level_unexpected,
2070 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines.END',
2071 'ZX_TDS_CALC_SERVICES_PUB_PKG.prorate_imported_sum_tax_lines(-)');
2072 END IF;
2073 END prorate_imported_sum_tax_lines;
2074
2075 /* ======================================================================*
2076 | PROCEDURE calculate_tax_for_import |
2077 * ======================================================================*/
2078 PROCEDURE calculate_tax_for_import (
2079 p_trx_line_index IN BINARY_INTEGER,
2080 p_event_class_rec IN zx_api_pub.event_class_rec_type,
2081 x_return_status OUT NOCOPY VARCHAR2) IS
2082
2083 l_tax_date DATE;
2084 l_tax_determine_date DATE;
2085 l_tax_point_date DATE;
2086
2087 BEGIN
2088 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2089
2090 IF (g_level_procedure >= g_current_runtime_level ) THEN
2091 FND_LOG.STRING(g_level_procedure,
2092 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.BEGIN',
2093 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(+)');
2094 END IF;
2095
2096 x_return_status := FND_API.G_RET_STS_SUCCESS;
2097
2098 -- Bug 3971016: Skip processing tax lines for line_level_action
2099 -- 'RECORD_WITH_NO_TAX'
2100 --
2101 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2102 p_trx_line_index) = 'RECORD_WITH_NO_TAX'
2103 THEN
2104 IF (g_level_statement >= g_current_runtime_level ) THEN
2105 FND_LOG.STRING(g_level_statement,
2106 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2107 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)'||' Skip processing for record_with_no_tax');
2108 END IF;
2109 RETURN;
2110 END IF;
2111
2112 IF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
2113 p_trx_line_index) = 'CREATE') THEN
2114 -- get tax dates
2115 --
2116 ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date( p_trx_line_index,
2117 l_tax_date,
2118 l_tax_determine_date,
2119 l_tax_point_date,
2120 x_return_status );
2121
2122 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2123 IF (g_level_error >= g_current_runtime_level ) THEN
2124 FND_LOG.STRING(g_level_error,
2125 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import',
2126 'Incorrect return_status after calling ' ||
2127 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
2128 FND_LOG.STRING(g_level_error,
2129 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import',
2130 'RETURN_STATUS = ' || x_return_status);
2131 FND_LOG.STRING(g_level_error,
2132 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2133 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)');
2134 END IF;
2135 RETURN;
2136 END IF;
2137
2138 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(
2139 p_trx_line_index) IS NOT NULL
2140 THEN
2141 g_reference_doc_exist_flg := 'Y';
2142 END IF;
2143
2144 -- perform additional applicability process for import
2145 --
2146 ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import(
2147 p_trx_line_index,
2148 p_event_class_rec,
2149 l_tax_date,
2150 l_tax_determine_date,
2151 l_tax_point_date,
2152 x_return_status );
2153
2154 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2155 IF (g_level_error >= g_current_runtime_level ) THEN
2156 FND_LOG.STRING(g_level_error,
2157 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import',
2158 'Incorrect return_status after calling ' ||
2159 'ZX_TDS_IMPORT_DOCUMENT_PKG.calculate_tax_for_import()');
2160 FND_LOG.STRING(g_level_error,
2161 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import',
2162 'RETURN_STATUS = ' || x_return_status);
2163 FND_LOG.STRING(g_level_error,
2164 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2165 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)');
2166 END IF;
2167 RETURN;
2168 END IF;
2169
2170 ELSE
2171 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
2172 IF (g_level_error >= g_current_runtime_level ) THEN
2173 FND_LOG.STRING(g_level_error,
2174 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2175 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)'||' tax event type'||
2176 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
2177 p_trx_line_index));
2178 END IF;
2179 RETURN;
2180 END IF; -- tax_event_type_code
2181
2182 IF (g_level_procedure >= g_current_runtime_level ) THEN
2183
2184 FND_LOG.STRING(g_level_procedure,
2185 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2186 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)'||x_return_status);
2187 END IF;
2188
2189 EXCEPTION
2190 WHEN OTHERS THEN
2191 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2192 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2193 FND_LOG.STRING(g_level_unexpected,
2194 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import',
2195 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2196 FND_LOG.STRING(g_level_unexpected,
2197 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import.END',
2198 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax_for_import(-)');
2199 END IF;
2200
2201 END calculate_tax_for_import;
2202
2203 PROCEDURE update_exchange_rate (
2204 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
2205 p_ledger_id IN NUMBER,
2206 p_currency_conversion_rate IN NUMBER,
2207 p_currency_conversion_type IN VARCHAR2,
2208 p_currency_conversion_date IN DATE,
2209 x_return_status OUT NOCOPY VARCHAR2 ) IS
2210
2211 l_error_buffer VARCHAR2(240);
2212 l_currency_conversion_rate NUMBER;
2213
2214 BEGIN
2215 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2216
2217 IF (g_level_procedure >= g_current_runtime_level ) THEN
2218 FND_LOG.STRING(g_level_procedure,
2219 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.BEGIN',
2220 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(+)');
2221 END IF;
2222 x_return_status := FND_API.G_RET_STS_SUCCESS;
2223
2224 -- assign p_currency_conversion_rate to a local variable for a IN OUT
2225 -- parameter in the calling procedure. This may be changed later.
2226 --
2227 l_currency_conversion_rate := p_currency_conversion_rate;
2228
2229 -- perform conversion and rounding for tax lines in ZX_LINES
2230 --
2231 ZX_TDS_TAX_ROUNDING_PKG.convert_and_round_curr(
2232 p_conversion_rate => l_currency_conversion_rate,
2233 p_conversion_type => p_currency_conversion_type,
2234 p_conversion_date => p_currency_conversion_date,
2235 p_event_class_rec => p_event_class_rec,
2236 p_return_status => x_return_status,
2237 p_error_buffer => l_error_buffer);
2238
2239 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2240 IF (g_level_error >= g_current_runtime_level ) THEN
2241 FND_LOG.STRING(g_level_error,
2242 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2243 'Incorrect return_status after calling ' ||
2244 'ZX_TDS_TAX_ROUNDING_PKG.convert_and_round_curr()');
2245 FND_LOG.STRING(g_level_error,
2246 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2247 'RETURN_STATUS = ' || x_return_status);
2248 FND_LOG.STRING(g_level_error,
2249 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.END',
2250 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(-)');
2251 END IF;
2252 RETURN;
2253 END IF;
2254
2255 -- call ZX_TRD_SERVICES_PUB_PKG.update_exchange_rate only if the value
2256 -- of p_event_class_rec.tax_recovery_flag is 'Y',
2257 --
2258 IF p_event_class_rec.tax_recovery_flag = 'Y' THEN
2259
2260 -- perform conversion and rounding for tax distributions in
2261 -- ZX_REC_NREC_TAX_DIST
2262 --
2263 ZX_TRD_SERVICES_PUB_PKG.update_exchange_rate (
2264 p_event_class_rec => p_event_class_rec,
2265 p_ledger_id => p_ledger_id,
2266 p_currency_conversion_rate => p_currency_conversion_rate,
2267 p_currency_conversion_type => p_currency_conversion_type,
2268 p_currency_conversion_date => p_currency_conversion_date,
2269 x_return_status => x_return_status);
2270
2271 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2272 IF (g_level_error >= g_current_runtime_level ) THEN
2273 FND_LOG.STRING(g_level_error,
2274 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2275 'Incorrect return_status after calling ' ||
2276 'ZX_TRD_INTERNAL_SERVICES_PVT.update_exchange_rate()');
2277 FND_LOG.STRING(g_level_error,
2278 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2279 'RETURN_STATUS = ' || x_return_status);
2280 FND_LOG.STRING(g_level_error,
2281 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.END',
2282 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(-)');
2283 END IF;
2284 RETURN;
2285 END IF;
2286 END IF; -- p_event_class_rec.tax_recovery_flag = 'Y'
2287
2288 -- updating related columns in functional currency in ZX_LINES_SUMMARY and
2289 -- ZX_LINES
2290 --
2291 ZX_TRL_PUB_PKG.update_exchange_rate (
2292 p_event_class_rec => p_event_class_rec,
2293 x_return_status => x_return_status);
2294
2295 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2296 IF (g_level_error >= g_current_runtime_level ) THEN
2297 FND_LOG.STRING(g_level_error,
2298 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2299 'Incorrect return_status after calling ' ||
2300 'ZX_TRL_PUB_PKG.update_exchange_rate()');
2301 FND_LOG.STRING(g_level_error,
2302 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2303 'RETURN_STATUS = ' || x_return_status);
2304 FND_LOG.STRING(g_level_error,
2305 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.END',
2306 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(-)');
2307 END IF;
2308 RETURN;
2309 END IF;
2310
2311 IF (g_level_procedure >= g_current_runtime_level ) THEN
2312
2313 FND_LOG.STRING(g_level_procedure,
2314 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.END',
2315 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(-)'||x_return_status);
2316 END IF;
2317
2318 EXCEPTION
2319 WHEN OTHERS THEN
2320 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2321 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2322 FND_LOG.STRING(g_level_unexpected,
2323 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate',
2324 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2325 FND_LOG.STRING(g_level_unexpected,
2326 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate.END',
2327 'ZX_TDS_CALC_SERVICES_PUB_PKG.update_exchange_rate(-)');
2328 END IF;
2329
2330 END update_exchange_rate;
2331
2332 /* ======================================================================*
2333 | PROCEDURE validate_document_for_tax |
2334 | |
2335 * ======================================================================*/
2336 PROCEDURE validate_document_for_tax (
2337 x_return_status OUT NOCOPY VARCHAR2) IS
2338
2339 begin_index BINARY_INTEGER;
2340
2341 BEGIN
2342 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2343
2344 IF (g_level_procedure >= g_current_runtime_level ) THEN
2345 FND_LOG.STRING(g_level_procedure,
2346 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax.BEGIN',
2347 'ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax(+)');
2348 END IF;
2349
2350 begin_index := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id.FIRST;
2351
2352 IF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
2353 begin_index) = 'VALIDATE') THEN
2354 x_return_status := FND_API.G_RET_STS_SUCCESS;
2355 ELSE
2356 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
2357 IF (g_level_statement >= g_current_runtime_level ) THEN
2358 FND_LOG.STRING(g_level_statement,
2359 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax',
2360 'Tax Event Type Code: '||
2361 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
2362 begin_index) ||' is not correct.');
2363 END IF;
2364 END IF;
2365
2366 IF (g_level_procedure >= g_current_runtime_level ) THEN
2367 FND_LOG.STRING(g_level_procedure,
2368 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax',
2369 'RETURN_STATUS = ' || x_return_status);
2370 FND_LOG.STRING(g_level_procedure,
2371 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax.END',
2372 'ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax(-)');
2373 END IF;
2374
2375 EXCEPTION
2376 WHEN OTHERS THEN
2377 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2378 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2379 FND_LOG.STRING(g_level_unexpected,
2380 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax',
2381 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2382 FND_LOG.STRING(g_level_unexpected,
2383 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax.END',
2384 'ZX_TDS_CALC_SERVICES_PUB_PKG.validate_document_for_tax(-)');
2385 END IF;
2386
2387 END validate_document_for_tax;
2388
2389 /* ======================================================================*
2390 | PROCEDURE reverse_document |
2391 | |
2392 * ======================================================================*/
2393 PROCEDURE reverse_document (
2394 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
2395 x_return_status OUT NOCOPY VARCHAR2 ) IS
2396 BEGIN
2397 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2398
2399 IF (g_level_procedure >= g_current_runtime_level ) THEN
2400 FND_LOG.STRING(g_level_procedure,
2401 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document.BEGIN',
2402 'ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document(+)');
2403 END IF;
2404
2405 x_return_status := FND_API.G_RET_STS_SUCCESS;
2406
2407 --
2408 -- init msg record to be passed back to TSRM
2409 --
2410 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.application_id :=
2411 p_event_class_rec.application_id;
2412 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.entity_code :=
2413 p_event_class_rec.entity_code;
2414 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.event_class_code :=
2415 p_event_class_rec.event_class_code;
2416 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_id :=
2417 p_event_class_rec.trx_id;
2418 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id := NULL;
2419 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type := NULL;
2420 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.summary_tax_line_number :=
2421 NULL;
2422 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.tax_line_id := NULL;
2423 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_dist_id := NULL;
2424
2425 -- call procedure reverse_document in ZX_TDS_REVERSE_DOCUMENT_PKG
2426 --
2427 ZX_TDS_REVERSE_DOCUMENT_PKG.reverse_document ( p_event_class_rec,
2428 x_return_status );
2429
2430 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2431 IF (g_level_statement >= g_current_runtime_level ) THEN
2432 FND_LOG.STRING(g_level_statement,
2433 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document',
2434 'Incorrect return_status after calling ' ||
2435 'ZX_TDS_REVERSE_DOCUMENT_PKG.reverse_document() ' || x_return_status);
2436 FND_LOG.STRING(g_level_statement,
2437 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document.END',
2438 'ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document(-)');
2439 END IF;
2440 RETURN;
2441 END IF;
2442
2443 IF (g_level_procedure >= g_current_runtime_level ) THEN
2444
2445 FND_LOG.STRING(g_level_procedure,
2446 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document.END',
2447 'ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document(-)'||x_return_status);
2448 END IF;
2449
2450 EXCEPTION
2451 WHEN OTHERS THEN
2452 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2453
2454 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2455 FND_LOG.STRING(g_level_unexpected,
2456 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document',
2457 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2458 FND_LOG.STRING(g_level_unexpected,
2459 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document.END',
2460 'ZX_TDS_CALC_SERVICES_PUB_PKG.reverse_document(-)');
2461 END IF;
2462
2463 END reverse_document;
2464
2465 /* ======================================================================*
2466 | Procedure set_detail_tax_line_def_val is called to check the |
2467 | default values in the global structure |
2468 | ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl |
2469 | Bug fix 3423300 |
2470 * =====================================================================*/
2471
2472 PROCEDURE set_detail_tax_line_def_val (
2473 p_detail_tax_lines_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
2474 x_return_status OUT NOCOPY VARCHAR2
2475 ) IS
2476 BEGIN
2477 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2478
2479 IF (g_level_procedure >= g_current_runtime_level ) THEN
2480 FND_LOG.STRING(g_level_procedure,
2481 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.set_detail_tax_line_def_val.BEGIN',
2482 'ZX_TDS_CALC_SERVICES_PUB_PKG.set_detail_tax_line_def_val(+)');
2483 END IF;
2484 x_return_status := FND_API.G_RET_STS_SUCCESS;
2485
2486 p_detail_tax_lines_rec.tax_amt_included_flag := NVL( p_detail_tax_lines_rec.tax_amt_included_flag, 'N' );
2487 p_detail_tax_lines_rec.compounding_tax_flag := NVL( p_detail_tax_lines_rec.compounding_tax_flag, 'N' );
2488 p_detail_tax_lines_rec.self_assessed_flag := NVL( p_detail_tax_lines_rec.self_assessed_flag, 'N' );
2489 p_detail_tax_lines_rec.reporting_only_flag := NVL( p_detail_tax_lines_rec.reporting_only_flag, 'N' );
2490 p_detail_tax_lines_rec.associated_child_frozen_flag := NVL( p_detail_tax_lines_rec.associated_child_frozen_flag, 'N' );
2491 p_detail_tax_lines_rec.copied_from_other_doc_flag := NVL( p_detail_tax_lines_rec.copied_from_other_doc_flag, 'N' );
2492 p_detail_tax_lines_rec.historical_flag := NVL( p_detail_tax_lines_rec.historical_flag, 'N' );
2493 p_detail_tax_lines_rec.offset_flag := NVL( p_detail_tax_lines_rec.offset_flag, 'N' );
2494 p_detail_tax_lines_rec.process_for_recovery_flag := NVL( p_detail_tax_lines_rec.process_for_recovery_flag, 'N' );
2495 p_detail_tax_lines_rec.cancel_flag := NVL( p_detail_tax_lines_rec.cancel_flag, 'N' );
2496 p_detail_tax_lines_rec.purge_flag := NVL( p_detail_tax_lines_rec.purge_flag, 'N' );
2497 p_detail_tax_lines_rec.delete_flag := NVL( p_detail_tax_lines_rec.delete_flag, 'N' );
2498 p_detail_tax_lines_rec.overridden_flag := NVL( p_detail_tax_lines_rec.overridden_flag, 'N' );
2499 p_detail_tax_lines_rec.manually_entered_flag := NVL( p_detail_tax_lines_rec.manually_entered_flag, 'N' );
2500 p_detail_tax_lines_rec.item_dist_changed_flag := NVL( p_detail_tax_lines_rec.item_dist_changed_flag, 'N' );
2501 p_detail_tax_lines_rec.freeze_until_overridden_flag := NVL( p_detail_tax_lines_rec.freeze_until_overridden_flag, 'N' );
2502 p_detail_tax_lines_rec.tax_only_line_flag := NVL( p_detail_tax_lines_rec.tax_only_line_flag, 'N' );
2503 p_detail_tax_lines_rec.enforce_from_natural_acct_flag := NVL( p_detail_tax_lines_rec.enforce_from_natural_acct_flag, 'N' );
2504 -- p_detail_tax_lines_rec.line_amt_includes_tax_flag := NVL( p_detail_tax_lines_rec.line_amt_includes_tax_flag, 'N' );
2505 p_detail_tax_lines_rec.recalc_required_flag := 'N';
2506 p_detail_tax_lines_rec.compounding_dep_tax_flag := NVL( p_detail_tax_lines_rec.compounding_dep_tax_flag, 'N' );
2507 p_detail_tax_lines_rec.mrc_tax_line_flag := NVL(p_detail_tax_lines_rec.mrc_tax_line_flag, 'N');
2508 p_detail_tax_lines_rec.tax_apportionment_flag := NVL(p_detail_tax_lines_rec.tax_apportionment_flag, 'N');
2509
2510 p_detail_tax_lines_rec.tax_apportionment_line_number := NVL(p_detail_tax_lines_rec.tax_apportionment_line_number,1);
2511
2512 p_detail_tax_lines_rec.record_type_code := NVL(p_detail_tax_lines_rec.record_type_code, 'ETAX_CREATED');
2513
2514 -- bug 6656723
2515 IF p_detail_tax_lines_rec.tax_event_type_code = 'OVERRIDE_TAX' THEN
2516 p_detail_tax_lines_rec.tax_line_number := NVL(p_detail_tax_lines_rec.tax_line_number, NUMBER_DUMMY);
2517 ELSE
2518 p_detail_tax_lines_rec.tax_line_number := NUMBER_DUMMY;
2519 END IF;
2520
2521 p_detail_tax_lines_rec.object_version_number := NVL(p_detail_tax_lines_rec.object_version_number, 1);
2522
2523 p_detail_tax_lines_rec.multiple_jurisdictions_flag := NVL(p_detail_tax_lines_rec.multiple_jurisdictions_flag, 'N');
2524
2525 -- Added code to handle the Taxable_Basis_formula mismatch --
2526 IF p_detail_tax_lines_rec.manually_entered_flag = 'Y' THEN
2527 p_detail_tax_lines_rec.taxable_basis_formula := 'PRORATED_TB';
2528 END IF;
2529
2530 p_detail_tax_lines_rec.taxable_basis_formula := NVL(p_detail_tax_lines_rec.taxable_basis_formula,'STANDARD_TB');
2531 p_detail_tax_lines_rec.tax_calculation_formula := NVL(p_detail_tax_lines_rec.tax_calculation_formula,'STANDARD_TC');
2532
2533 -- Commented out: Bug 4438636
2534 --
2535 -- override the rounding rule from registration party type or tax
2536 -- with the rounding rule from TSRM rounding party hierarchy
2537 --
2538 --IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule IS NOT NULL THEN
2539 -- p_detail_tax_lines_rec.rounding_rule_code := ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule;
2540 --END IF;
2541
2542 IF (g_level_procedure >= g_current_runtime_level ) THEN
2543 FND_LOG.STRING(g_level_procedure,
2544 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.set_detail_tax_line_def_val.END',
2545 'ZX_TDS_CALC_SERVICES_PUB_PKG.set_detail_tax_line_def_val(-)');
2546 END IF;
2547
2548 END set_detail_tax_line_def_val;
2549
2550 /* ======================================================================*
2551 | Procedure dump_detail_tax_lines_into_gt is called to insert detail |
2552 | tax lines into the global temporary table zx_detail_tax_lines_gt |
2553 | when the number of tax lines in the g_detail_tax_line_tbl |
2554 | reaches 1000 |
2555 * =====================================================================*/
2556
2557 PROCEDURE dump_detail_tax_lines_into_gt (
2558 p_detail_tax_lines_tbl IN OUT NOCOPY detail_tax_lines_tbl_type,
2559 x_return_status OUT NOCOPY VARCHAR2) IS
2560
2561 BEGIN
2562 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2563
2564 IF (g_level_procedure >= g_current_runtime_level ) THEN
2565 FND_LOG.STRING(g_level_procedure,
2566 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.BEGIN',
2567 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(+)');
2568 END IF;
2569 x_return_status := FND_API.G_RET_STS_SUCCESS;
2570
2571 IF (p_detail_tax_lines_tbl.COUNT = 0) THEN
2572 IF (g_level_statement >= g_current_runtime_level ) THEN
2573 FND_LOG.STRING(g_level_statement,
2574 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt',
2575 'p_detail_tax_lines_tbl is empty. ');
2576 END IF;
2577
2578 ELSE
2579
2580 --
2581 -- populate default values in tax line before insert
2582 --
2583 FOR i IN p_detail_tax_lines_tbl.FIRST ..
2584 p_detail_tax_lines_tbl.LAST LOOP
2585 set_detail_tax_line_def_val (
2586 p_detail_tax_lines_tbl(i),
2587 x_return_status );
2588 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2589 RETURN;
2590 END IF;
2591 END LOOP;
2592
2593 FORALL tax_line_index IN p_detail_tax_lines_tbl.FIRST ..
2594 p_detail_tax_lines_tbl.LAST
2595
2596 INSERT INTO zx_detail_tax_lines_gt
2597 VALUES p_detail_tax_lines_tbl(tax_line_index);
2598
2599 -- Flush g_detail_tax_lines_tbl
2600 --p_detail_tax_lines_tbl.DELETE;
2601
2602 END IF;
2603
2604 IF (g_level_procedure >= g_current_runtime_level ) THEN
2605
2606 FND_LOG.STRING(g_level_procedure,
2607 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.END',
2608 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(-)'||x_return_status);
2609 END IF;
2610
2611 EXCEPTION
2612 WHEN OTHERS THEN
2613 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2614 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2615 FND_LOG.STRING(g_level_unexpected,
2616 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt',
2617 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2618 FND_LOG.STRING(g_level_unexpected,
2619 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.END',
2620 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(-)');
2621 END IF;
2622
2623 END dump_detail_tax_lines_into_gt;
2624
2625 /* ======================================================================*
2626 | Procedure dump_detail_tax_lines_into_gt is called to insert detail |
2627 | tax lines into the global temporary table zx_detail_tax_lines_gt |
2628 * =====================================================================*/
2629
2630 PROCEDURE dump_detail_tax_lines_into_gt (
2631 x_return_status OUT NOCOPY VARCHAR2) IS
2632
2633 BEGIN
2634 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2635
2636 IF (g_level_procedure >= g_current_runtime_level ) THEN
2637 FND_LOG.STRING(g_level_procedure,
2638 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.BEGIN',
2639 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(+)');
2640 END IF;
2641
2642 x_return_status := FND_API.G_RET_STS_SUCCESS;
2643
2644 /*
2645 * move to dump_detail_tax_lines_into_gt with 2 parameters
2646 *
2647 * FOR l_index IN
2648 * NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.FIRST, 1) ..
2649 * NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0)
2650 * LOOP
2651 * set_detail_tax_line_def_val (
2652 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_index),
2653 * x_return_status );
2654 * END LOOP;
2655 */
2656
2657 dump_detail_tax_lines_into_gt(
2658 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl,
2659 x_return_status );
2660
2661 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2662 IF (g_level_error >= g_current_runtime_level ) THEN
2663 FND_LOG.STRING(g_level_error,
2664 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt',
2665 'Incorrect return_status after calling '||
2666 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt');
2667 FND_LOG.STRING(g_level_error,
2668 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt',
2669 'RETURN_STATUS = ' || x_return_status);
2670 FND_LOG.STRING(g_level_error,
2671 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.END',
2672 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(-)');
2673 END IF;
2674 RETURN;
2675 END IF;
2676
2677 -- Flush g_detail_tax_lines_tbl
2678 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.DELETE;
2679
2680 IF (g_level_procedure >= g_current_runtime_level ) THEN
2681
2682 FND_LOG.STRING(g_level_procedure,
2683 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.END',
2684 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(-)'||x_return_status);
2685 END IF;
2686
2687 EXCEPTION
2688 WHEN OTHERS THEN
2689 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2690 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2691 FND_LOG.STRING(g_level_unexpected,
2692 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt',
2693 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2694 FND_LOG.STRING(g_level_unexpected,
2695 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt.END',
2696 'ZX_TDS_CALC_SERVICES_PUB_PKG.dump_detail_tax_lines_into_gt(-)');
2697 END IF;
2698
2699 END dump_detail_tax_lines_into_gt;
2700
2701 /* ======================================================================*
2702 | PROCEDURE initialize |
2703 * ======================================================================*/
2704 PROCEDURE initialize IS
2705
2706 BEGIN
2707 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2708
2709 IF (g_level_procedure >= g_current_runtime_level ) THEN
2710 FND_LOG.STRING(g_level_procedure,
2711 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.BEGIN',
2712 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(+)');
2713 END IF;
2714 g_detail_tax_lines_tbl.DELETE;
2715
2716 -- g_trx_lines_counter :=0;
2717
2718 -- g_check_template_tbl;
2719 -- ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl;
2720 -- g_tax_rate_info_tbl;
2721 -- g_max_tax_line_number;
2722
2723 -- g_check_cond_grp_tbl.DELETE;
2724 g_fsc_tbl.DELETE;
2725 ZX_TDS_UTILITIES_PKG.g_tax_status_info_tbl.DELETE;
2726 -- g_tsrm_num_value_tbl.DELETE;
2727 -- g_tsrm_alphanum_value_tbl.DELETE;
2728 -- g_trx_alphanum_value_tbl.DELETE;
2729
2730 IF (g_level_procedure >= g_current_runtime_level ) THEN
2731 FND_LOG.STRING(g_level_procedure,
2732 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
2733 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
2734 END IF;
2735
2736 EXCEPTION
2737 WHEN OTHERS THEN
2738 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2739 FND_LOG.STRING(g_level_unexpected,
2740 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
2741 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2742 FND_LOG.STRING(g_level_unexpected,
2743 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
2744 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
2745 END IF;
2746
2747 RAISE;
2748
2749 END initialize;
2750
2751 /* ======================================================================*
2752 | PROCEDURE fetch_detail_tax_lines |
2753 * ======================================================================*/
2754 PROCEDURE fetch_detail_tax_lines (
2755 x_return_status OUT NOCOPY VARCHAR2) IS
2756
2757 CURSOR fetch_detail_tax_lines(p_line_index NUMBER) IS
2758 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */ *
2759 FROM zx_detail_tax_lines_gt
2760 WHERE trx_id =
2761 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id(p_line_index)
2762 AND application_id =
2763 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_line_index)
2764 AND entity_code =
2765 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_line_index)
2766 AND event_class_code =
2767 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_line_index);
2768
2769 l_last_row NUMBER;
2770
2771 BEGIN
2772
2773 IF (g_level_procedure>= g_current_runtime_level ) THEN
2774 FND_LOG.STRING(g_level_procedure,
2775 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines.BEGIN',
2776 'ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines(+)');
2777 END IF;
2778 x_return_status := FND_API.G_RET_STS_SUCCESS;
2779 l_last_row := 1;
2780
2781 -- Initialize p_det_tax_line_tbl
2782 g_detail_tax_lines_tbl.delete;
2783
2784 FOR detail_tax_lines_rec IN fetch_detail_tax_lines(
2785 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_id.FIRST) LOOP
2786 g_detail_tax_lines_tbl(l_last_row) := detail_tax_lines_rec;
2787 l_last_row := l_last_row + 1;
2788 END LOOP;
2789
2790 IF (g_level_procedure >= g_current_runtime_level ) THEN
2791
2792 FND_LOG.STRING(g_level_procedure,
2793 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines.END',
2794 'ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines(-)'||x_return_status);
2795 END IF;
2796
2797 EXCEPTION
2798 WHEN OTHERS THEN
2799 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2800 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2801 FND_LOG.STRING(g_level_unexpected,
2802 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines',
2803 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2804 FND_LOG.STRING(g_level_unexpected,
2805 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines.END',
2806 'ZX_TDS_CALC_SERVICES_PUB_PKG.fetch_detail_tax_lines(-)');
2807 END IF;
2808
2809 END fetch_detail_tax_lines;
2810
2811 /*=========================================================================*
2812 | This procedure contains the code for processing tax lines for XML |
2813 | invoices with line level control amount. |
2814 | rewrite for bug fix 3420456 |
2815 *=========================================================================*/
2816
2817 PROCEDURE process_taxes_for_xml_inv_line (
2818 -- p_event_class_rec IN zx_api_pub.event_class_rec_type,
2819 x_return_status OUT NOCOPY VARCHAR2) IS
2820
2821 CURSOR get_total_line_tax_amt_csr IS
2822 SELECT /*+ INDEX(tax_line ZX_DETAIL_TAX_LINES_GT_U1) */
2823 tax_line.application_id,
2824 tax_line.event_class_code,
2825 tax_line.entity_code,
2826 tax_line.trx_id,
2827 tax_line.trx_line_id,
2828 tax_line.trx_level_type,
2829 tax_line.ctrl_total_line_tx_amt,
2830 ROUND(SUM(tax_line.unrounded_tax_amt), 20)
2831 FROM zx_detail_tax_lines_gt tax_line
2832 WHERE
2833 -- commented out for bug fix 5417887
2834 -- tax_line.application_id = p_event_class_rec.application_id
2835 -- AND tax_line.event_class_code = p_event_class_rec.event_class_code
2836 -- AND tax_line.entity_code = p_event_class_rec.entity_code
2837 -- AND tax_line.trx_id = p_event_class_rec.trx_id
2838 -- AND
2839 NVL(tax_line.ctrl_total_line_tx_amt,0) IS NOT NULL
2840 AND tax_line.self_assessed_flag <> 'Y'
2841 AND tax_line.offset_flag <> 'Y'
2842 AND tax_line.offset_link_to_tax_line_id IS NULL
2843 AND tax_line.offset_tax_rate_code IS NULL
2844 AND NVL(cancel_flag,'N') <> 'Y'
2845 GROUP BY tax_line.application_id,
2846 tax_line.event_class_code,
2847 tax_line.entity_code,
2848 tax_line.trx_id,
2849 tax_line.trx_line_id,
2850 tax_line.trx_level_type,
2851 tax_line.ctrl_total_line_tx_amt
2852 HAVING NVL(SUM(tax_line.unrounded_tax_amt),0) <> 0;
2853
2854 CURSOR get_mismatch_tax_lines_csr IS
2855 SELECT /*+ INDEX(tax_line ZX_DETAIL_TAX_LINES_GT_U1) */
2856 -- Added following columns for Bug#13093258 --
2857 tax_line.application_id,
2858 tax_line.event_class_code,
2859 tax_line.entity_code,
2860 tax_line.trx_id,
2861 tax_line.trx_line_id,
2862 ROUND(SUM(tax_line.unrounded_tax_amt), 20) total_line_tx_amt
2863 FROM zx_detail_tax_lines_gt tax_line
2864 WHERE tax_line.ctrl_total_line_tx_amt <> 0
2865 AND tax_line.self_assessed_flag <> 'Y'
2866 AND tax_line.offset_flag <> 'Y'
2867 AND tax_line.offset_link_to_tax_line_id IS NULL
2868 AND tax_line.offset_tax_rate_code IS NULL
2869 AND NVL(cancel_flag,'N') <> 'Y'
2870 GROUP BY tax_line.application_id,
2871 tax_line.event_class_code,
2872 tax_line.entity_code,
2873 tax_line.trx_id,
2874 tax_line.trx_line_id,
2875 tax_line.trx_level_type,
2876 tax_line.ctrl_total_line_tx_amt
2877 HAVING NVL(SUM(tax_line.unrounded_tax_amt),0) = 0;
2878
2879
2880 l_total_line_tx_amt NUMBER;
2881 l_temp_char VARCHAR2(1);
2882
2883 TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
2884 TYPE var_tbl_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
2885
2886 l_trx_line_id_tbl num_tbl_type;
2887 l_trx_level_type_tbl var_tbl_type;
2888 l_total_line_tx_amt_tbl num_tbl_type;
2889 l_ctrl_total_line_tx_amt_tbl num_tbl_type;
2890 l_application_id_tbl num_tbl_type;
2891 l_event_class_code_tbl var_tbl_type;
2892 l_entity_code_tbl var_tbl_type;
2893 l_trx_id_tbl num_tbl_type;
2894
2895 BEGIN
2896
2897 IF (g_level_procedure >= g_current_runtime_level ) THEN
2898 FND_LOG.STRING(g_level_procedure,
2899 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line.BEGIN',
2900 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line(+)');
2901 END IF;
2902
2903 x_return_status := FND_API.G_RET_STS_SUCCESS;
2904
2905 OPEN get_mismatch_tax_lines_csr;
2906 LOOP
2907 FETCH get_mismatch_tax_lines_csr BULK COLLECT INTO
2908 l_application_id_tbl,
2909 l_event_class_code_tbl,
2910 l_entity_code_tbl,
2911 l_trx_id_tbl,
2912 l_trx_line_id_tbl,
2913 l_total_line_tx_amt_tbl
2914 LIMIT G_LINES_PER_FETCH;
2915
2916 IF l_trx_id_tbl.COUNT > 0 THEN
2917 --x_return_status := FND_API.G_RET_STS_ERROR;
2918
2919 FOR i IN l_trx_id_tbl.FIRST .. l_trx_id_tbl.LAST LOOP
2920 IF (g_level_statement >= g_current_runtime_level ) THEN
2921 FND_LOG.STRING(g_level_statement,
2922 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line',
2923 'The line level control tax amount is not 0, ' ||
2924 'but total calculated tax amount is 0 for Trx_Id '||TO_CHAR(l_trx_id_tbl(i))||
2925 ', Trx_Line_Id '||TO_CHAR(l_trx_line_id_tbl(i)));
2926 END IF;
2927
2928 --Commented for Bug#13893772
2929 --FND_MESSAGE.SET_NAME('ZX','ZX_LN_CTRL_TOTAL_TAX_MISMATCH');
2930 --l_context_info_rec.APPLICATION_ID := l_application_id_tbl(i);
2931 --l_context_info_rec.ENTITY_CODE := l_entity_code_tbl(i);
2932 --l_context_info_rec.EVENT_CLASS_CODE := l_event_class_code_tbl(i);
2933 --l_context_info_rec.TRX_ID := l_trx_id_tbl(i);
2934 --ZX_API_PUB.add_msg( p_context_info_rec => l_context_info_rec );
2935
2936 --Added following update for Bug#13893772
2937 UPDATE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
2938 zx_detail_tax_lines_gt
2939 SET tax_hold_code = ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_variance_hold_val,
2940 tax_hold_released_code = BITAND(ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_variance_hold_val,
2941 NVL(tax_hold_released_code,0))
2942 WHERE application_id = l_application_id_tbl(i)
2943 AND entity_code = l_entity_code_tbl(i)
2944 AND event_class_code = l_event_class_code_tbl(i)
2945 AND trx_id = l_trx_id_tbl(i)
2946 AND trx_line_id = l_trx_line_id_tbl(i);
2947
2948 END LOOP;
2949 END IF;
2950
2951 EXIT WHEN get_mismatch_tax_lines_csr%NOTFOUND;
2952 END LOOP;
2953 CLOSE get_mismatch_tax_lines_csr;
2954
2955 --Commented for Bug#13893772
2956 -- If Return status is error then return
2957 --IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2958 -- IF (g_level_statement >= g_current_runtime_level ) THEN
2959 -- FND_LOG.STRING(g_level_statement,
2960 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line',
2961 -- 'RETURN_STATUS = ' || x_return_status);
2962 -- FND_LOG.STRING(g_level_statement,
2963 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line.END',
2964 -- 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line(-)');
2965 -- END IF;
2966 -- RETURN;
2967 --END IF;
2968
2969 l_application_id_tbl.DELETE;
2970 l_event_class_code_tbl.DELETE;
2971 l_entity_code_tbl.DELETE;
2972 l_trx_id_tbl.DELETE;
2973 l_trx_line_id_tbl.DELETE;
2974 l_total_line_tx_amt_tbl.DELETE;
2975
2976 -- open cursor get_total_line_tax_amt_csr
2977 --
2978 OPEN get_total_line_tax_amt_csr;
2979 LOOP
2980 FETCH get_total_line_tax_amt_csr BULK COLLECT INTO
2981 l_application_id_tbl,
2982 l_event_class_code_tbl,
2983 l_entity_code_tbl,
2984 l_trx_id_tbl,
2985 l_trx_line_id_tbl,
2986 l_trx_level_type_tbl,
2987 l_ctrl_total_line_tx_amt_tbl,
2988 l_total_line_tx_amt_tbl
2989 LIMIT G_LINES_PER_FETCH;
2990
2991 -- for each trx line prorate the tax amount according to the control total_tax amount
2992 FORALL i IN l_trx_line_id_tbl.FIRST .. l_trx_line_id_tbl.LAST
2993
2994 -- 1. Prorate tax amt to all tax lines of this transaction line,
2995 -- using l_ctrl_total_line_tx_amt
2996 -- 2. populate ctrl_total_line_tx_amt in g_detail_tax_lines_tbl
2997 -- 3. for now set the original tax_amt, taxable_amt to the unrounded tax_amt
2998 -- and taxable_amount since rounded amounts are not available yet. This
2999 -- logic may need to change based on later Reporting requirements.
3000
3001 UPDATE /*+ INDEX(line ZX_DETAIL_TAX_LINES_GT_U1) */
3002 zx_detail_tax_lines_gt line
3003 SET line.orig_tax_amt = line.unrounded_tax_amt,
3004 line.orig_taxable_amt = line.unrounded_taxable_amt,
3005 line.orig_tax_rate = line.tax_rate,
3006 line.tax_amt = NULL,
3007 line.unrounded_tax_amt = line.unrounded_tax_amt * (l_ctrl_total_line_tx_amt_tbl(i)/l_total_line_tx_amt_tbl(i)),
3008 line.ctrl_total_line_tx_amt = l_ctrl_total_line_tx_amt_tbl(i),
3009 --line.sync_with_prvdr_flag = DECODE(line.tax_provider_id, NULL, 'N', 'Y'), bug 14395492
3010 line.overridden_flag = 'Y',
3011 line.last_manual_entry = 'TAX_AMOUNT',
3012 line.taxable_amt = NULL,
3013 (line.unrounded_taxable_amt,
3014 line.tax_rate,
3015 line.taxable_basis_formula)
3016 = (select decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3017 'N', decode ( line.tax_rate, 0, line.unrounded_taxable_amt,
3018 ROUND((line.unrounded_tax_amt * (l_ctrl_total_line_tx_amt_tbl(i)/l_total_line_tx_amt_tbl(i)))/line.tax_rate*100 , 20)
3019 ),
3020 'Y', decode ( NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3021 'TAXABLE_BASIS', decode(line.tax_rate, 0, line.unrounded_taxable_amt,
3022 ROUND((line.unrounded_tax_amt * (l_ctrl_total_line_tx_amt_tbl(i)/l_total_line_tx_amt_tbl(i)))/line.tax_rate*100, 20)
3023 ),
3024 line.unrounded_taxable_amt),
3025 line.unrounded_taxable_amt ) unrounded_taxable_amt,
3026
3027 decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3028 'Y', decode ( NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3029 'TAX_RATE', decode(line.unrounded_taxable_amt, 0, line.tax_rate,
3030 ROUND((line.unrounded_tax_amt * (l_ctrl_total_line_tx_amt_tbl(i)/l_total_line_tx_amt_tbl(i)))/line.unrounded_taxable_amt*100 , 20)
3031 ),
3032 line.tax_rate),
3033 line.tax_rate ) tax_rate,
3034
3035 decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3036 'N', decode ( line.tax_rate, 0, line.taxable_basis_formula, 'PRORATED_TB' ),
3037 'Y', decode ( NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3038 'TAXABLE_BASIS', decode(line.tax_rate, 0, line.taxable_basis_formula, 'PRORATED_TB'),
3039 line.taxable_basis_formula),
3040 line.taxable_basis_formula ) taxable_basis_formula
3041
3042 from zx_rates_b rate
3043 where line.tax_rate_id = rate.tax_rate_id
3044 )
3045 WHERE line.application_id = l_application_id_tbl(i)
3046 AND line.event_class_code = l_event_class_code_tbl(i)
3047 AND line.entity_code = l_entity_code_tbl(i)
3048 AND line.trx_id = l_trx_id_tbl(i)
3049 AND line.trx_line_id = l_trx_line_id_tbl(i)
3050 AND line.trx_level_type = l_trx_level_type_tbl(i)
3051 AND nvl(line.ctrl_total_line_tx_amt,0) <> 0 -- change for this bug 7000903
3052 AND line.self_assessed_flag <> 'Y'
3053 AND line.offset_flag <> 'Y'
3054 AND line.offset_link_to_tax_line_id IS NULL
3055 AND line.offset_tax_rate_code IS NULL
3056 AND NVL(cancel_flag,'N') <> 'Y';
3057
3058 EXIT WHEN get_total_line_tax_amt_csr%NOTFOUND;
3059 END LOOP;
3060
3061 CLOSE get_total_line_tax_amt_csr;
3062
3063 IF (g_level_procedure >= g_current_runtime_level ) THEN
3064 FND_LOG.STRING(g_level_procedure,
3065 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line',
3066 'RETURN_STATUS = ' || x_return_status);
3067 FND_LOG.STRING(g_level_procedure,
3068 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line.END',
3069 'ZX_TDS_CALC_SERVICES_PUB_PKG.' ||
3070 'process_taxes_for_xml_inv_line(-)');
3071 END IF;
3072
3073 EXCEPTION
3074 WHEN OTHERS THEN
3075 IF get_total_line_tax_amt_csr%ISOPEN THEN
3076 CLOSE get_total_line_tax_amt_csr;
3077 END IF;
3078 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3079 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3080 FND_LOG.STRING(g_level_unexpected,
3081 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line',
3082 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3083 FND_LOG.STRING(g_level_unexpected,
3084 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line.END',
3085 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_line(-)');
3086 END IF;
3087
3088 END process_taxes_for_xml_inv_line;
3089
3090 /*=========================================================================*
3091 | This procedure contains the code for processing tax lines for XML |
3092 | invoices with header level control tax amount. |
3093 *=========================================================================*/
3094
3095 PROCEDURE process_taxes_for_xml_inv_hdr (
3096 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
3097 x_return_status OUT NOCOPY VARCHAR2) IS
3098
3099 CURSOR get_total_trx_tax_amt_csr IS
3100 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3101 tax_line.application_id,
3102 tax_line.event_class_code,
3103 tax_line.entity_code,
3104 tax_line.trx_id,
3105 trx_line.ctrl_total_hdr_tx_amt,
3106 ROUND(SUM(tax_line.unrounded_tax_amt), 20)
3107 FROM zx_detail_tax_lines_gt tax_line,
3108 zx_lines_det_factors trx_line
3109 WHERE tax_line.application_id = trx_line.application_id
3110 AND tax_line.event_class_code = trx_line.event_class_code
3111 AND tax_line.entity_code = trx_line.entity_code
3112 AND tax_line.trx_id = trx_line.trx_id
3113 -- bugfix 5599951
3114 AND tax_line.trx_line_id = trx_line.trx_line_id
3115 AND tax_line.trx_level_type = trx_line.trx_level_type
3116 AND trx_line.ctrl_total_hdr_tx_amt IS NOT NULL
3117 AND tax_line.self_assessed_flag <> 'Y'
3118 AND tax_line.offset_flag <> 'Y'
3119 AND tax_line.offset_link_to_tax_line_id IS NULL
3120 AND tax_line.offset_tax_rate_code IS NULL
3121 AND NVL(cancel_flag,'N') <> 'Y'
3122 GROUP BY tax_line.application_id,
3123 tax_line.event_class_code,
3124 tax_line.entity_code,
3125 tax_line.trx_id,
3126 trx_line.ctrl_total_hdr_tx_amt
3127 HAVING NVL(SUM(tax_line.unrounded_tax_amt), 0) <> 0;
3128
3129
3130 CURSOR get_mismatch_tax_lines_csr IS
3131 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3132 -- Added following columns for Bug#13093258 --
3133 tax_line.application_id,
3134 tax_line.event_class_code,
3135 tax_line.entity_code,
3136 tax_line.trx_id,
3137 ROUND(SUM(tax_line.unrounded_tax_amt), 20) total_trx_tax_amt
3138 FROM zx_detail_tax_lines_gt tax_line,
3139 zx_lines_det_factors trx_line
3140 WHERE tax_line.application_id = trx_line.application_id
3141 AND tax_line.event_class_code = trx_line.event_class_code
3142 AND tax_line.entity_code = trx_line.entity_code
3143 AND tax_line.trx_id = trx_line.trx_id
3144 -- bugfix 5599951
3145 AND tax_line.trx_line_id = trx_line.trx_line_id
3146 AND tax_line.trx_level_type = trx_line.trx_level_type
3147 AND trx_line.ctrl_total_hdr_tx_amt <> 0
3148 AND tax_line.self_assessed_flag <> 'Y'
3149 AND tax_line.offset_flag <> 'Y'
3150 AND tax_line.offset_link_to_tax_line_id IS NULL
3151 AND tax_line.offset_tax_rate_code IS NULL
3152 AND NVL(cancel_flag,'N') <> 'Y'
3153 GROUP BY tax_line.application_id,
3154 tax_line.event_class_code,
3155 tax_line.entity_code,
3156 tax_line.trx_id,
3157 trx_line.ctrl_total_hdr_tx_amt
3158 HAVING NVL(SUM(tax_line.unrounded_tax_amt), 0) = 0;
3159
3160
3161 TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3162 TYPE var_tbl_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
3163
3164 l_total_trx_tax_amt_tbl num_tbl_type;
3165 l_ctrl_total_hdr_tx_amt_tbl num_tbl_type;
3166 l_application_id_tbl num_tbl_type;
3167 l_event_class_code_tbl var_tbl_type;
3168 l_entity_code_tbl var_tbl_type;
3169 l_trx_id_tbl num_tbl_type;
3170
3171 BEGIN
3172 IF (g_level_procedure >= g_current_runtime_level ) THEN
3173 FND_LOG.STRING(g_level_procedure,
3174 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr.BEGIN',
3175 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr(+)');
3176 END IF;
3177
3178 x_return_status := FND_API.G_RET_STS_SUCCESS;
3179
3180 OPEN get_mismatch_tax_lines_csr;
3181 LOOP
3182 FETCH get_mismatch_tax_lines_csr BULK COLLECT INTO
3183 l_application_id_tbl,
3184 l_event_class_code_tbl,
3185 l_entity_code_tbl,
3186 l_trx_id_tbl,
3187 l_total_trx_tax_amt_tbl
3188 LIMIT G_LINES_PER_FETCH;
3189
3190 IF l_trx_id_tbl.COUNT > 0 THEN
3191 --x_return_status := FND_API.G_RET_STS_ERROR;
3192
3193 FOR i IN l_trx_id_tbl.FIRST .. l_trx_id_tbl.LAST LOOP
3194 IF (g_level_statement >= g_current_runtime_level ) THEN
3195 FND_LOG.STRING(g_level_statement,
3196 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr',
3197 'The header level control tax amount is not 0, ' ||
3198 'but total calculated tax amount is 0 for Trx_Id '||TO_CHAR(l_trx_id_tbl(i)));
3199 END IF;
3200
3201 --Commented for Bug#13893772
3202 --FND_MESSAGE.SET_NAME('ZX','ZX_HDR_CTRL_TOTAL_TAX_MISMATCH');
3203 --l_context_info_rec.APPLICATION_ID := l_application_id_tbl(i);
3204 --l_context_info_rec.ENTITY_CODE := l_entity_code_tbl(i);
3205 --l_context_info_rec.EVENT_CLASS_CODE := l_event_class_code_tbl(i);
3206 --l_context_info_rec.TRX_ID := l_trx_id_tbl(i);
3207 --ZX_API_PUB.add_msg( p_context_info_rec => l_context_info_rec );
3208
3209 --Added following update for Bug#13893772
3210 UPDATE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3211 zx_detail_tax_lines_gt
3212 SET tax_hold_code = ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_variance_hold_val,
3213 tax_hold_released_code = BITAND(ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_variance_hold_val,
3214 NVL(tax_hold_released_code,0))
3215 WHERE application_id = l_application_id_tbl(i)
3216 AND entity_code = l_entity_code_tbl(i)
3217 AND event_class_code = l_event_class_code_tbl(i)
3218 AND trx_id = l_trx_id_tbl(i);
3219
3220 END LOOP;
3221 END IF;
3222
3223 EXIT WHEN get_mismatch_tax_lines_csr%NOTFOUND;
3224 END LOOP;
3225 CLOSE get_mismatch_tax_lines_csr;
3226
3227 --Commented for Bug#13893772
3228 -- If Return status is error then return
3229 --IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3230 -- IF (g_level_statement >= g_current_runtime_level ) THEN
3231 -- FND_LOG.STRING(g_level_statement,
3232 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr',
3233 -- 'RETURN_STATUS = ' || x_return_status);
3234 -- FND_LOG.STRING(g_level_statement,
3235 -- 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr.END',
3236 -- 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr(-)');
3237 -- END IF;
3238 -- RETURN;
3239 --END IF;
3240
3241 l_application_id_tbl.DELETE;
3242 l_event_class_code_tbl.DELETE;
3243 l_entity_code_tbl.DELETE;
3244 l_trx_id_tbl.DELETE;
3245 l_total_trx_tax_amt_tbl.DELETE;
3246
3247 -- get l_total_trx_tax_amt for all tax lines of this transaction
3248 --
3249 OPEN get_total_trx_tax_amt_csr;
3250 LOOP
3251
3252 FETCH get_total_trx_tax_amt_csr BULK COLLECT INTO
3253 l_application_id_tbl,
3254 l_event_class_code_tbl,
3255 l_entity_code_tbl,
3256 l_trx_id_tbl,
3257 l_ctrl_total_hdr_tx_amt_tbl,
3258 l_total_trx_tax_amt_tbl
3259 LIMIT G_LINES_PER_FETCH;
3260
3261 FORALL i IN l_trx_id_tbl.FIRST .. l_trx_id_tbl.LAST
3262 -- 1. prorate tax amount to all tax lines of this transaction.
3263 -- 2. for now set the original tax_amt, taxable_amt to the unrounded tax_amt
3264 -- and taxable_amount since rounded amounts are not available yet. This
3265 -- logic may need to change based on later Reporting requirements.
3266 --
3267 UPDATE /*+ INDEX(line ZX_DETAIL_TAX_LINES_GT_U1) */
3268 zx_detail_tax_lines_gt line
3269 SET line.orig_tax_amt = line.unrounded_tax_amt,
3270 line.orig_taxable_amt = line.unrounded_taxable_amt,
3271 line.orig_tax_rate = line.tax_rate,
3272 line.tax_amt = NULL,
3273 line.unrounded_tax_amt = DECODE(l_total_trx_tax_amt_tbl(i),
3274 0, 0, (line.unrounded_tax_amt * (l_ctrl_total_hdr_tx_amt_tbl(i)/l_total_trx_tax_amt_tbl(i)))),
3275 --line.sync_with_prvdr_flag = DECODE(tax_provider_id, NULL, 'N', 'Y'), bug 14395492
3276 line.overridden_flag = 'Y',
3277 line.last_manual_entry = 'TAX_AMOUNT',
3278 line.taxable_amt = NULL,
3279 (line.unrounded_taxable_amt,
3280 line.tax_rate,
3281 line.taxable_basis_formula)
3282 = (select decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3283 'N', decode(line.tax_rate, 0, line.unrounded_taxable_amt,
3284 DECODE(l_total_trx_tax_amt_tbl(i), 0, line.unrounded_taxable_amt,
3285 ROUND((unrounded_tax_amt * (l_ctrl_total_hdr_tx_amt_tbl(i)/l_total_trx_tax_amt_tbl(i)))/line.tax_rate*100, 20))
3286 ),
3287 'Y', decode ( NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3288 'TAXABLE_BASIS', decode(line.tax_rate, 0, line.unrounded_taxable_amt,
3289 DECODE(l_total_trx_tax_amt_tbl(i), 0, line.unrounded_taxable_amt,
3290 ROUND((line.unrounded_tax_amt*(l_ctrl_total_hdr_tx_amt_tbl(i)/l_total_trx_tax_amt_tbl(i)))/line.tax_rate*100, 20))
3291 ),
3292 line.unrounded_taxable_amt),
3293 line.unrounded_taxable_amt ) unrounded_taxable_amt,
3294
3295 decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3296 'Y', decode(NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3297 'TAX_RATE',
3298 decode(line.unrounded_taxable_amt,
3299 0, line.tax_rate,
3300 decode(l_total_trx_tax_amt_tbl(i),
3301 0, line.tax_rate,
3302 Round((line.unrounded_tax_amt*(l_ctrl_total_hdr_tx_amt_tbl(i)/l_total_trx_tax_amt_tbl(i)))/line.unrounded_taxable_amt*100, 20)
3303 )
3304 ),
3305 line.tax_rate),
3306 line.tax_rate ) tax_rate,
3307
3308 decode ( NVL(rate.ALLOW_ADHOC_TAX_RATE_FLAG, 'N'),
3309 'N', decode ( line.tax_rate, 0, line.taxable_basis_formula, 'PRORATED_TB' ),
3310 'Y', decode ( NVL(rate.ADJ_FOR_ADHOC_AMT_CODE, 'TAXABLE_BASIS'),
3311 'TAXABLE_BASIS', decode(line.tax_rate, 0, line.taxable_basis_formula, 'PRORATED_TB'),
3312 line.taxable_basis_formula),
3313 line.taxable_basis_formula ) taxable_basis_formula
3314
3315 from zx_rates_b rate
3316 where line.tax_rate_id = rate.tax_rate_id
3317 )
3318
3319 WHERE line.application_id = l_application_id_tbl(i)
3320 AND line.event_class_code = l_event_class_code_tbl(i)
3321 AND line.entity_code = l_entity_code_tbl(i)
3322 AND line.trx_id = l_trx_id_tbl(i)
3323 AND line.self_assessed_flag <> 'Y'
3324 AND line.offset_link_to_tax_line_id IS NULL
3325 AND line.offset_tax_rate_code IS NULL
3326 AND line.offset_flag <> 'Y'
3327 AND line.mrc_tax_line_flag = 'N'
3328 AND NVL(cancel_flag,'N') <> 'Y';
3329
3330 EXIT WHEN get_total_trx_tax_amt_csr%NOTFOUND;
3331 END LOOP;
3332
3333 CLOSE get_total_trx_tax_amt_csr;
3334
3335 IF (g_level_procedure >= g_current_runtime_level ) THEN
3336 FND_LOG.STRING(g_level_procedure,
3337 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr',
3338 'RETURN_STATUS = ' || x_return_status);
3339 FND_LOG.STRING(g_level_procedure,
3340 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr.END',
3341 'ZX_TDS_CALC_SERVICES_PUB_PKG.' ||
3342 'process_taxes_for_xml_inv_hdr(-)');
3343 END IF;
3344
3345 EXCEPTION
3346 WHEN OTHERS THEN
3347 IF get_total_trx_tax_amt_csr%ISOPEN THEN
3348 CLOSE get_total_trx_tax_amt_csr;
3349 END IF;
3350 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3351 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3352 FND_LOG.STRING(g_level_unexpected,
3353 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr',
3354 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3355 FND_LOG.STRING(g_level_unexpected,
3356 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr.END',
3357 'ZX_TDS_CALC_SERVICES_PUB_PKG.process_taxes_for_xml_inv_hdr(-)');
3358 END IF;
3359
3360 END process_taxes_for_xml_inv_hdr;
3361
3362 /*=========================================================================*
3363 | This procedure is used to adjust tax lines for XML invoices |
3364 | with header level control tax amount. |
3365 *=========================================================================*/
3366 PROCEDURE adjust_tax_for_xml_inv_line (
3367 ---p_event_class_rec IN zx_api_pub.event_class_rec_type,
3368 x_return_status OUT NOCOPY VARCHAR2) IS
3369
3370 CURSOR get_total_line_tax_amt_csr IS
3371 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3372 SUM(tax_amt),
3373 MAX(tax_amt),
3374 SUM(tax_amt_funcl_curr),
3375 SUM(tax_amt_tax_curr),
3376 application_id,
3377 event_class_code,
3378 entity_code,
3379 trx_id,
3380 trx_line_id,
3381 trx_level_type,
3382 ctrl_total_line_tx_amt
3383 FROM zx_detail_tax_lines_gt
3384 WHERE
3385 -- commented out for bug fix 5417887
3386 -- trx_id = p_event_class_rec.trx_id
3387 -- AND application_id = p_event_class_rec.application_id
3388 -- AND event_class_code = p_event_class_rec.event_class_code
3389 -- AND entity_code = p_event_class_rec.entity_code
3390 -- AND
3391 ctrl_total_line_tx_amt IS NOT NULL
3392 AND self_assessed_flag <> 'Y'
3393 AND offset_flag <> 'Y'
3394 AND offset_link_to_tax_line_id IS NULL
3395 AND offset_tax_rate_code IS NULL
3396 AND mrc_tax_line_flag = 'N'
3397 AND NVL(cancel_flag,'N') <> 'Y'
3398 GROUP BY application_id,
3399 event_class_code,
3400 entity_code,
3401 trx_id,
3402 trx_line_id,
3403 trx_level_type,
3404 ctrl_total_line_tx_amt
3405 HAVING SUM(tax_amt) <> ctrl_total_line_tx_amt AND
3406 SUM(tax_amt) <> 0;
3407
3408
3409 TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3410 TYPE var_tbl_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
3411
3412 l_trx_line_id_tbl num_tbl_type;
3413 l_trx_level_type_tbl var_tbl_type;
3414 l_total_line_tx_amt_tbl num_tbl_type;
3415 l_max_tax_amt_tbl num_tbl_type;
3416 l_ctrl_total_line_tx_amt_tbl num_tbl_type;
3417 l_total_fun_tax_amt_tbl num_tbl_type;
3418 l_total_tax_cur_amt_tbl num_tbl_type;
3419
3420 l_trx_line_id_diff_tbl num_tbl_type;
3421 l_trx_level_type_diff_tbl var_tbl_type;
3422 l_max_tax_amt_diff_tbl num_tbl_type;
3423 l_rounding_diff_tbl num_tbl_type;
3424
3425 l_application_id_tbl num_tbl_type;
3426 l_event_class_code_tbl var_tbl_type;
3427 l_entity_code_tbl var_tbl_type;
3428 l_trx_id_tbl num_tbl_type;
3429
3430 l_index NUMBER;
3431
3432 BEGIN
3433
3434 IF (g_level_procedure >= g_current_runtime_level ) THEN
3435 FND_LOG.STRING(g_level_procedure,
3436 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line.BEGIN',
3437 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line(+)');
3438 END IF;
3439
3440 x_return_status := FND_API.G_RET_STS_SUCCESS;
3441 l_index := 0;
3442
3443 -- open cursor get_total_line_tax_amt_csr
3444 --
3445 OPEN get_total_line_tax_amt_csr;
3446 FETCH get_total_line_tax_amt_csr BULK COLLECT INTO
3447 l_total_line_tx_amt_tbl,
3448 l_max_tax_amt_tbl,
3449 l_total_fun_tax_amt_tbl,
3450 l_total_tax_cur_amt_tbl,
3451 l_application_id_tbl,
3452 l_event_class_code_tbl,
3453 l_entity_code_tbl,
3454 l_trx_id_tbl,
3455 l_trx_line_id_tbl,
3456 l_trx_level_type_tbl,
3457 l_ctrl_total_line_tx_amt_tbl;
3458 CLOSE get_total_line_tax_amt_csr;
3459
3460
3461 FORALL i IN l_trx_line_id_tbl.FIRST ..l_trx_line_id_tbl.LAST
3462
3463 -- adjust tax amount of the detail tax line with the maximum tax amount.
3464 --
3465 UPDATE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3466 zx_detail_tax_lines_gt
3467 SET tax_amt = tax_amt + l_ctrl_total_line_tx_amt_tbl(i) - l_total_line_tx_amt_tbl(i)
3468 ,tax_amt_funcl_curr = Decode(tax_amt_funcl_curr * currency_conversion_rate,
3469 NULL, NULL,
3470 (tax_amt_funcl_curr
3471 + round_tax_curr_xml_inv (
3472 l_ctrl_total_line_tx_amt_tbl(i) * currency_conversion_rate,
3473 ledger_id,
3474 tax_id,
3475 tax_currency_code,
3476 Rounding_Rule_Code,
3477 'FUNCL_CURR',
3478 precision,
3479 minimum_accountable_unit
3480 )
3481 - NVL(l_total_fun_tax_amt_tbl(i),
3482 round_tax_curr_xml_inv (
3483 l_total_line_tx_amt_tbl(i) * currency_conversion_rate,
3484 ledger_id,
3485 tax_id,
3486 tax_currency_code,
3487 Rounding_Rule_Code,
3488 'FUNCL_CURR',
3489 precision,
3490 minimum_accountable_unit
3491 )
3492 )
3493 )
3494 )
3495 ,tax_amt_tax_curr = Decode(tax_amt_tax_curr * tax_currency_conversion_rate,
3496 NULL, NULL,
3497 (tax_amt_tax_curr
3498 + round_tax_curr_xml_inv (
3499 l_ctrl_total_line_tx_amt_tbl(i) * tax_currency_conversion_rate,
3500 ledger_id,
3501 tax_id,
3502 tax_currency_code,
3503 Rounding_Rule_Code,
3504 'TAX_CURR',
3505 precision,
3506 minimum_accountable_unit
3507 )
3508 - NVL(l_total_tax_cur_amt_tbl(i),
3509 round_tax_curr_xml_inv (
3510 l_total_line_tx_amt_tbl(i) * tax_currency_conversion_rate,
3511 ledger_id,
3512 tax_id,
3513 tax_currency_code,
3514 Rounding_Rule_Code,
3515 'TAX_CURR',
3516 precision,
3517 minimum_accountable_unit
3518 )
3519 )
3520 )
3521 )
3522 --sync_with_prvdr_flag = DECODE(tax_provider_id, NULL, 'N', 'Y') -- this should have already been set during proration
3523 WHERE application_id = l_application_id_tbl(i)
3524 AND event_class_code = l_event_class_code_tbl(i)
3525 AND entity_code = l_entity_code_tbl(i)
3526 AND trx_id = l_trx_id_tbl(i)
3527 AND trx_line_id = l_trx_line_id_tbl(i)
3528 AND trx_level_type = l_trx_level_type_tbl(i)
3529 AND ctrl_total_line_tx_amt IS NOT NULL
3530 AND self_assessed_flag <> 'Y'
3531 AND offset_link_to_tax_line_id IS NULL
3532 AND offset_tax_rate_code IS NULL
3533 AND offset_flag <> 'Y'
3534 AND mrc_tax_line_flag = 'N'
3535 AND tax_amt = l_max_tax_amt_tbl(i)
3536 AND NVL(cancel_flag,'N') <> 'Y'
3537 AND rownum = 1;
3538
3539 IF (g_level_procedure >= g_current_runtime_level ) THEN
3540 FND_LOG.STRING(g_level_procedure,
3541 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line',
3542 'RETURN_STATUS = ' || x_return_status);
3543 FND_LOG.STRING(g_level_procedure,
3544 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line.END',
3545 'ZX_TDS_CALC_SERVICES_PUB_PKG.' ||
3546 'adjust_tax_for_xml_inv_line(-)');
3547 END IF;
3548
3549 EXCEPTION
3550 WHEN OTHERS THEN
3551 IF get_total_line_tax_amt_csr%ISOPEN THEN
3552 CLOSE get_total_line_tax_amt_csr;
3553 END IF;
3554 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3555 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3556 FND_LOG.STRING(g_level_unexpected,
3557 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line',
3558 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3559 FND_LOG.STRING(g_level_unexpected,
3560 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line.END',
3561 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_line(-)');
3562 END IF;
3563
3564 END adjust_tax_for_xml_inv_line;
3565
3566 /*=========================================================================*
3567 | This procedure contains the code for adjusting tax lines for XML |
3568 | invoices with header level control tax amount. |
3569 *=========================================================================*/
3570 PROCEDURE adjust_tax_for_xml_inv_hdr (
3571 --p_event_class_rec IN zx_api_pub.event_class_rec_type,
3572 x_return_status OUT NOCOPY VARCHAR2) IS
3573
3574 CURSOR get_total_trx_tax_amt_csr IS
3575 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3576 SUM(tax_line.tax_amt),
3577 MAX(tax_line.tax_amt),
3578 SUM(tax_line.tax_amt_funcl_curr),
3579 SUM(tax_line.tax_amt_tax_curr),
3580 tax_line.application_id,
3581 tax_line.event_class_code,
3582 tax_line.entity_code,
3583 tax_line.trx_id,
3584 trx_line.ctrl_total_hdr_tx_amt
3585 FROM zx_detail_tax_lines_gt tax_line,
3586 zx_lines_det_factors trx_line
3587 WHERE tax_line.application_id = trx_line.application_id
3588 AND tax_line.event_class_code = trx_line.event_class_code
3589 AND tax_line.entity_code = trx_line.entity_code
3590 AND tax_line.trx_id = trx_line.trx_id
3591 -- bugfix 5599951
3592 AND tax_line.trx_line_id = trx_line.trx_line_id
3593 AND tax_line.trx_level_type = trx_line.trx_level_type
3594 AND tax_line.self_assessed_flag <> 'Y'
3595 AND tax_line.offset_flag <> 'Y'
3596 AND tax_line.offset_link_to_tax_line_id IS NULL
3597 AND tax_line.offset_tax_rate_code IS NULL
3598 AND tax_line.mrc_tax_line_flag = 'N'
3599 AND trx_line.ctrl_total_hdr_tx_amt IS NOT NULL
3600 AND NVL(cancel_flag,'N') <> 'Y'
3601 GROUP BY tax_line.application_id,
3602 tax_line.event_class_code,
3603 tax_line.entity_code,
3604 tax_line.trx_id,
3605 trx_line.ctrl_total_hdr_tx_amt
3606 HAVING SUM(tax_line.tax_amt) <> trx_line.ctrl_total_hdr_tx_amt AND
3607 SUM(tax_line.tax_amt) <> 0;
3608
3609 TYPE num_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3610 TYPE var_tbl_type IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
3611
3612 l_total_trx_tax_amt_tbl num_tbl_type;
3613 l_total_fun_tax_amt_tbl num_tbl_type;
3614 l_total_tax_cur_amt_tbl num_tbl_type;
3615 l_max_tax_amt_tbl num_tbl_type;
3616 l_ctrl_total_hdr_tx_amt_tbl num_tbl_type;
3617 l_application_id_tbl num_tbl_type;
3618 l_event_class_code_tbl var_tbl_type;
3619 l_entity_code_tbl var_tbl_type;
3620 l_trx_id_tbl num_tbl_type;
3621
3622 BEGIN
3623 IF (g_level_procedure >= g_current_runtime_level ) THEN
3624 FND_LOG.STRING(g_level_procedure,
3625 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr.BEGIN',
3626 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr(+)');
3627 END IF;
3628 x_return_status := FND_API.G_RET_STS_SUCCESS;
3629
3630 -- get l_total_trx_tax_amt for all tax lines of this transaction
3631 --
3632 OPEN get_total_trx_tax_amt_csr ;
3633 FETCH get_total_trx_tax_amt_csr BULK COLLECT INTO
3634 l_total_trx_tax_amt_tbl,
3635 l_max_tax_amt_tbl,
3636 l_total_fun_tax_amt_tbl,
3637 l_total_tax_cur_amt_tbl,
3638 l_application_id_tbl,
3639 l_event_class_code_tbl,
3640 l_entity_code_tbl,
3641 l_trx_id_tbl,
3642 l_ctrl_total_hdr_tx_amt_tbl;
3643 CLOSE get_total_trx_tax_amt_csr;
3644
3645 -- adjust tax amount of the detail tax line with the maximum tax amount.
3646 --
3647 FORALL i IN l_trx_id_tbl.FIRST ..l_trx_id_tbl.LAST
3648 UPDATE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3649 zx_detail_tax_lines_gt
3650 SET tax_amt = tax_amt + l_ctrl_total_hdr_tx_amt_tbl(i) - l_total_trx_tax_amt_tbl(i)
3651 ,tax_amt_funcl_curr = Decode(tax_amt_funcl_curr * currency_conversion_rate,
3652 NULL, NULL,
3653 (tax_amt_funcl_curr
3654 + round_tax_curr_xml_inv (
3655 l_ctrl_total_hdr_tx_amt_tbl(i) * currency_conversion_rate,
3656 ledger_id,
3657 tax_id,
3658 tax_currency_code,
3659 Rounding_Rule_Code,
3660 'FUNCL_CURR',
3661 precision,
3662 minimum_accountable_unit
3663 )
3664 - NVL(l_total_fun_tax_amt_tbl(i),
3665 round_tax_curr_xml_inv (
3666 l_total_trx_tax_amt_tbl(i) * currency_conversion_rate,
3667 ledger_id,
3668 tax_id,
3669 tax_currency_code,
3670 Rounding_Rule_Code,
3671 'FUNCL_CURR',
3672 precision,
3673 minimum_accountable_unit
3674 )
3675 )
3676 )
3677 )
3678 ,tax_amt_tax_curr = Decode(tax_amt_tax_curr * tax_currency_conversion_rate,
3679 NULL, NULL,
3680 (tax_amt_tax_curr
3681 + round_tax_curr_xml_inv (
3682 l_ctrl_total_hdr_tx_amt_tbl(i) * tax_currency_conversion_rate,
3683 ledger_id,
3684 tax_id,
3685 tax_currency_code,
3686 Rounding_Rule_Code,
3687 'TAX_CURR',
3688 precision,
3689 minimum_accountable_unit
3690 )
3691 - NVL(l_total_tax_cur_amt_tbl(i),
3692 round_tax_curr_xml_inv (
3693 l_total_trx_tax_amt_tbl(i) * tax_currency_conversion_rate,
3694 ledger_id,
3695 tax_id,
3696 tax_currency_code,
3697 Rounding_Rule_Code,
3698 'TAX_CURR',
3699 precision,
3700 minimum_accountable_unit
3701 )
3702 )
3703 )
3704 )
3705 --sync_with_prvdr_flag = DECODE(tax_provider_id, NULL, 'N', 'Y') -- this should have already been set during process proration
3706 WHERE application_id = l_application_id_tbl(i)
3707 AND event_class_code = l_event_class_code_tbl(i)
3708 AND entity_code = l_entity_code_tbl(i)
3709 AND trx_id = l_trx_id_tbl(i)
3710 AND self_assessed_flag <> 'Y'
3711 AND offset_link_to_tax_line_id IS NULL
3712 AND offset_tax_rate_code IS NULL
3713 AND offset_flag <> 'Y'
3714 AND mrc_tax_line_flag = 'N'
3715 AND tax_amt = l_max_tax_amt_tbl(i)
3716 AND NVL(cancel_flag,'N') <> 'Y'
3717 AND rownum = 1;
3718
3719 IF (g_level_procedure >= g_current_runtime_level ) THEN
3720 FND_LOG.STRING(g_level_procedure,
3721 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr',
3722 'RETURN_STATUS = ' || x_return_status);
3723 FND_LOG.STRING(g_level_procedure,
3724 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr.END',
3725 'ZX_TDS_CALC_SERVICES_PUB_PKG.' ||
3726 'adjust_tax_for_xml_inv_hdr(-)');
3727 END IF;
3728
3729 EXCEPTION
3730 WHEN OTHERS THEN
3731 IF get_total_trx_tax_amt_csr%ISOPEN THEN
3732 CLOSE get_total_trx_tax_amt_csr;
3733 END IF;
3734 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3735 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3736 FND_LOG.STRING(g_level_unexpected,
3737 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr',
3738 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3739 FND_LOG.STRING(g_level_unexpected,
3740 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr.END',
3741 'ZX_TDS_CALC_SERVICES_PUB_PKG.adjust_tax_for_xml_inv_hdr(-)');
3742 END IF;
3743
3744 END adjust_tax_for_xml_inv_hdr;
3745
3746 /* ======================================================================*
3747 | PROCEDURE match_tax_amt_to_summary_line is used to adjust tax |
3748 | amounts to make sure that the total tax amount matches that of |
3749 | the summary line, including manual summary tax line or summary |
3750 | tax line with last_manual_entry = 'TAX_AMOUNT'. |
3751 | |
3752 * ======================================================================*/
3753 PROCEDURE match_tax_amt_to_summary_line (
3754 p_event_class_rec IN OUT NOCOPY zx_api_pub.event_class_rec_type,
3755 x_return_status OUT NOCOPY VARCHAR2) IS
3756
3757 CURSOR get_sum_tax_lines_for_adj_csr IS
3758 SELECT tax_amt, summary_tax_line_id
3759 FROM zx_lines_summary
3760 WHERE application_id = p_event_class_rec.application_id
3761 AND entity_code = p_event_class_rec.entity_code
3762 AND event_class_code = p_event_class_rec.event_class_code
3763 AND trx_id = p_event_class_rec.trx_id
3764 AND last_manual_entry = 'TAX_AMOUNT' -- manual or overridden sum tax line
3765 AND adjust_tax_amt_flag = 'Y'
3766 AND nvl(cancel_flag,'N') <> 'Y'
3767 AND nvl(self_assessed_flag,'N') <> 'Y'
3768 AND tax_provider_id IS NULL;
3769
3770 CURSOR get_det_tax_lines_sum_amt_csr(p_summary_tax_line_id NUMBER) IS
3771 SELECT /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3772 SUM(tax_amt), MAX(tax_amt)
3773 FROM zx_detail_tax_lines_gt
3774 WHERE application_id = p_event_class_rec.application_id
3775 AND entity_code = p_event_class_rec.entity_code
3776 AND event_class_code = p_event_class_rec.event_class_code
3777 AND trx_id = p_event_class_rec.trx_id
3778 AND summary_tax_line_id = p_summary_tax_line_id;
3779
3780 TYPE l_num_tbl_type IS TABLE OF NUMBER INDEX by BINARY_INTEGER;
3781 l_summary_tax_line_id_tbl l_num_tbl_type;
3782 l_max_tax_amt_tbl l_num_tbl_type;
3783 l_rounding_diff_tbl l_num_tbl_type;
3784
3785 l_sum_detail_tax_amt NUMBER;
3786 l_max_tax_amt NUMBER;
3787 l_rounding_diff NUMBER;
3788 l_tbl_index BINARY_INTEGER;
3789
3790 BEGIN
3791
3792 IF (g_level_procedure >= g_current_runtime_level ) THEN
3793 FND_LOG.STRING(g_level_procedure,
3794 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line.BEGIN',
3795 'ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line(+)');
3796 END IF;
3797
3798 x_return_status := FND_API.G_RET_STS_SUCCESS;
3799 l_tbl_index := 0;
3800
3801 FOR sum_tax_rec IN get_sum_tax_lines_for_adj_csr LOOP
3802
3803 OPEN get_det_tax_lines_sum_amt_csr(sum_tax_rec.summary_tax_line_id);
3804 FETCH get_det_tax_lines_sum_amt_csr INTO l_sum_detail_tax_amt, l_max_tax_amt;
3805 CLOSE get_det_tax_lines_sum_amt_csr;
3806
3807 IF l_sum_detail_tax_amt IS NOT NULL THEN
3808
3809 l_rounding_diff := sum_tax_rec.tax_amt - l_sum_detail_tax_amt;
3810
3811 IF l_rounding_diff <> 0 THEN
3812 l_tbl_index := l_tbl_index + 1;
3813 l_summary_tax_line_id_tbl(l_tbl_index) := sum_tax_rec.summary_tax_line_id;
3814 l_max_tax_amt_tbl(l_tbl_index) := l_max_tax_amt;
3815 l_rounding_diff_tbl(l_tbl_index) := l_rounding_diff;
3816 END IF;
3817 END IF;
3818 END LOOP;
3819
3820 IF l_summary_tax_line_id_tbl.COUNT > 0 THEN
3821
3822 -- adjust tax amount of the detail tax line with the maximum tax amount.
3823 --
3824 FORALL i IN l_summary_tax_line_id_tbl.FIRST .. l_summary_tax_line_id_tbl.LAST
3825
3826 UPDATE /*+ INDEX(ZX_DETAIL_TAX_LINES_GT ZX_DETAIL_TAX_LINES_GT_U1) */
3827 zx_detail_tax_lines_gt
3828 SET tax_amt = tax_amt + l_rounding_diff_tbl(i)
3829 WHERE trx_id = p_event_class_rec.trx_id
3830 AND application_id = p_event_class_rec.application_id
3831 AND event_class_code = p_event_class_rec.event_class_code
3832 AND entity_code = p_event_class_rec.entity_code
3833 AND summary_tax_line_id = l_summary_tax_line_id_tbl(i)
3834 AND tax_amt = l_max_tax_amt_tbl(i)
3835 AND rownum = 1;
3836
3837 END IF; -- l_summary_tax_line_id_tbl.COUNT > 0
3838
3839 IF (g_level_procedure >= g_current_runtime_level ) THEN
3840 FND_LOG.STRING(g_level_procedure,
3841 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line',
3842 'RETURN_STATUS = ' || x_return_status);
3843 FND_LOG.STRING(g_level_procedure,
3844 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line.END',
3845 'ZX_TDS_CALC_SERVICES_PUB_PKG.' ||
3846 'match_tax_amt_to_summary_line(-)');
3847 END IF;
3848
3849 EXCEPTION
3850 WHEN OTHERS THEN
3851 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3852 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3853 FND_LOG.STRING(g_level_unexpected,
3854 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line',
3855 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3856 FND_LOG.STRING(g_level_unexpected,
3857 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line.END',
3858 'ZX_TDS_CALC_SERVICES_PUB_PKG.match_tax_amt_to_summary_line(-)');
3859 END IF;
3860
3861 END match_tax_amt_to_summary_line;
3862
3863 /* ======================================================================*
3864 | PROCEDURE init_for_session is used to initialize the Global |
3865 | Structures / Global Temp Tables owned by TDM at session level. |
3866 * ======================================================================*/
3867 PROCEDURE init_for_session (
3868 x_return_status OUT NOCOPY VARCHAR2 ) IS
3869
3870 BEGIN
3871 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3872
3873 IF (g_level_procedure >= g_current_runtime_level ) THEN
3874 FND_LOG.STRING(g_level_procedure,
3875 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session.BEGIN',
3876 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session(+)');
3877 END IF;
3878
3879 x_return_status := FND_API.G_RET_STS_SUCCESS;
3880
3881 -- init gt tables
3882 DELETE FROM ZX_DETAIL_TAX_LINES_GT;
3883
3884 -- added the following initializations for bug fix 5417887
3885 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_line_tx_amt_flg := 'N';
3886 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ctrl_total_hdr_tx_amt_flg := 'N';
3887
3888 --bug 7537542
3889 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_cancel_exist_flg := 'N';
3890 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_discard_exist_flg := 'N';
3891 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_nochange_exist_flg := 'N';
3892 ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_copy_and_create_flg := 'N';
3893 ZX_TDS_CALC_SERVICES_PUB_PKG.g_reference_doc_exist_flg := 'N';
3894 --bug 7537542
3895
3896 --Bug 8736358
3897 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_update_exist_flg := 'N';
3898
3899 ZX_GLOBAL_STRUCTURES_PKG.g_credit_memo_exists_flg := 'N';
3900 ZX_GLOBAL_STRUCTURES_PKG.g_update_event_process_flag := 'N';
3901 ZX_GLOBAL_STRUCTURES_PKG.g_bulk_process_flag := 'N';
3902 ZX_GLOBAL_STRUCTURES_PKG.ptnr_tax_regime_tbl.DELETE;
3903 ZX_GLOBAL_STRUCTURES_PKG.lte_trx_tbl.DELETE;
3904
3905
3906 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.DELETE;
3907 ZX_TDS_CALC_SERVICES_PUB_PKG.g_check_cond_grp_tbl.DELETE;
3908 ZX_TDS_CALC_SERVICES_PUB_PKG.g_fsc_tbl.DELETE;
3909
3910 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_num_value_tbl.DELETE;
3911 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_alphanum_value_tbl.DELETE;
3912 ZX_TDS_CALC_SERVICES_PUB_PKG.g_trx_alphanum_value_tbl.DELETE;
3913
3914 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl.DELETE;
3915 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl.DELETE;
3916 ZX_TDS_UTILITIES_PKG.g_tax_status_info_tbl.DELETE;
3917 ZX_TDS_UTILITIES_PKG.g_currency_rec_tbl.DELETE;
3918 ZX_TRD_INTERNAL_SERVICES_PVT.g_tax_recovery_info_tbl.DELETE;
3919 ZX_TDS_TAX_ROUNDING_PKG.g_currency_tbl.DELETE;
3920 ZX_TDS_TAX_ROUNDING_PKG.g_tax_curr_conv_rate_tbl.DELETE;
3921
3922 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_class_tbl.DELETE;
3923 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_cq_tbl.DELETE;
3924 ZX_TDS_RULE_BASE_DETM_PVT.g_data_type_tbl.DELETE;
3925 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_code_tbl.DELETE;
3926 ZX_TDS_RULE_BASE_DETM_PVT.g_tax_parameter_code_tbl.DELETE;
3927 ZX_TDS_RULE_BASE_DETM_PVT.g_operator_tbl.DELETE;
3928 ZX_TDS_RULE_BASE_DETM_PVT.g_numeric_value_tbl.DELETE;
3929 ZX_TDS_RULE_BASE_DETM_PVT.g_date_value_tbl.DELETE;
3930 ZX_TDS_RULE_BASE_DETM_PVT.g_alphanum_value_tbl.DELETE;
3931 ZX_TDS_RULE_BASE_DETM_PVT.g_value_low_tbl.DELETE;
3932 ZX_TDS_RULE_BASE_DETM_PVT.g_value_high_tbl.DELETE;
3933 ZX_TDS_RULE_BASE_DETM_PVT.g_segment_array.DELETE;
3934 ZX_TPI_SERVICES_PKG.tax_regime_tmp_tbl.DELETE;
3935
3936 --bug8251315
3937 ZX_GLOBAL_STRUCTURES_PKG.g_hz_zone_tbl.DELETE;
3938 --bug#8551677
3939 --bug#9469868
3940 --ZX_GLOBAL_STRUCTURES_PKG.g_rule_info_tbl.DELETE;
3941 --bug#7519329
3942 ZX_GLOBAL_STRUCTURES_PKG.FC_COUNTRY_DEF_VAL_TBL.DELETE;
3943
3944 ZX_TDS_TAX_ROUNDING_PKG.g_euro_code := NULL;
3945 ZX_TDS_CALC_SERVICES_PUB_PKG.g_max_tax_line_number := NULL;
3946 ZX_TDS_CALC_SERVICES_PUB_PKG.g_trx_lines_counter := NULL;
3947 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level := NULL;
3948 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule := NULL;
3949 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id := NULL;
3950 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type := NULL;
3951
3952 -- added for bug 5684123
3953 ZX_TDS_CALC_SERVICES_PUB_PKG.g_overridden_tax_ln_exist_flg := 'N';
3954
3955 IF (g_level_procedure >= g_current_runtime_level ) THEN
3956 FND_LOG.STRING(g_level_procedure,
3957 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session',
3958 'RETURN_STATUS = ' || x_return_status);
3959 FND_LOG.STRING(g_level_procedure,
3960 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session.END',
3961 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session(-)');
3962 END IF;
3963
3964 EXCEPTION
3965 WHEN OTHERS THEN
3966 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3967 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3968 FND_LOG.STRING(g_level_unexpected,
3969 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session',
3970 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3971 FND_LOG.STRING(g_level_unexpected,
3972 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session.END',
3973 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session(-)');
3974 END IF;
3975
3976 END init_for_session;
3977
3978 /* ======================================================================*
3979 | PROCEDURE init_for_header is used to initialize the Global |
3980 | Structures / Global Temp Tables owned by TDM at header level. |
3981 * ======================================================================*/
3982 PROCEDURE init_for_header (
3983 p_event_class_rec IN ZX_API_PUB.event_class_rec_type,
3984 x_return_status OUT NOCOPY VARCHAR2 ) IS
3985
3986 BEGIN
3987 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
3988
3989 IF (g_level_procedure >= g_current_runtime_level ) THEN
3990 FND_LOG.STRING(g_level_procedure,
3991 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header.BEGIN',
3992 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header(+)');
3993 END IF;
3994
3995 x_return_status := FND_API.G_RET_STS_SUCCESS;
3996
3997 -- comment out the following init for bug fix 5417887
3998 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.DELETE;
3999 ZX_TDS_CALC_SERVICES_PUB_PKG.g_check_cond_grp_tbl.DELETE;
4000 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_num_value_tbl.DELETE;
4001 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_alphanum_value_tbl.DELETE;
4002 ZX_TDS_CALC_SERVICES_PUB_PKG.g_trx_alphanum_value_tbl.DELETE;
4003
4004 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_class_tbl.DELETE;
4005 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_cq_tbl.DELETE;
4006 ZX_TDS_RULE_BASE_DETM_PVT.g_data_type_tbl.DELETE;
4007 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_code_tbl.DELETE;
4008 ZX_TDS_RULE_BASE_DETM_PVT.g_tax_parameter_code_tbl.DELETE;
4009 ZX_TDS_RULE_BASE_DETM_PVT.g_operator_tbl.DELETE;
4010 ZX_TDS_RULE_BASE_DETM_PVT.g_numeric_value_tbl.DELETE;
4011 ZX_TDS_RULE_BASE_DETM_PVT.g_date_value_tbl.DELETE;
4012 ZX_TDS_RULE_BASE_DETM_PVT.g_alphanum_value_tbl.DELETE;
4013 ZX_TDS_RULE_BASE_DETM_PVT.g_value_low_tbl.DELETE;
4014 ZX_TDS_RULE_BASE_DETM_PVT.g_value_high_tbl.DELETE;
4015 ZX_TDS_RULE_BASE_DETM_PVT.g_segment_array.DELETE;
4016
4017 --bug 7444373
4018 ZX_GLOBAL_STRUCTURES_PKG.ptnr_exemption_tbl.DELETE;
4019
4020 ZX_TDS_CALC_SERVICES_PUB_PKG.g_max_tax_line_number := NULL;
4021 ZX_TDS_CALC_SERVICES_PUB_PKG.g_trx_lines_counter := NULL;
4022 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level := NULL;
4023 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule := NULL;
4024 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id := NULL;
4025 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type := NULL;
4026 -- bug7537542
4027 /*
4028 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_cancel_exist_flg := 'N';
4029 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_discard_exist_flg := 'N';
4030 ZX_TDS_CALC_SERVICES_PUB_PKG.g_ln_action_nochange_exist_flg := 'N';
4031 ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_copy_and_create_flg := 'N';
4032 ZX_TDS_CALC_SERVICES_PUB_PKG.g_reference_doc_exist_flg := 'N';
4033 */
4034 ZX_TRD_INTERNAL_SERVICES_PVT.g_tax_recovery_info_tbl.DELETE;
4035
4036 --Bug 7519403--
4037 ZX_SRVC_TYP_PKG.l_line_level_tbl.DELETE;
4038
4039 --
4040 -- init msg record to be passed back to TSRM
4041 --
4042 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.application_id :=
4043 p_event_class_rec.application_id;
4044 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.entity_code :=
4045 p_event_class_rec.entity_code;
4046 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.event_class_code :=
4047 p_event_class_rec.event_class_code;
4048 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_id :=
4049 p_event_class_rec.trx_id;
4050 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id := NULL;
4051 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type := NULL;
4052 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.summary_tax_line_number :=
4053 NULL;
4054 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.tax_line_id := NULL;
4055 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_dist_id := NULL;
4056
4057 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tax_inclusive_flg := 'N';
4058
4059 -- bugfix 5024740: initialize zx_jurisdictions_gt
4060
4061 delete from zx_jurisdictions_gt;
4062
4063 -- Bug#9233549
4064 ZX_R11I_TAX_PARTNER_PKG.FLUSH_TABLE_INFORMATION();
4065
4066 IF (g_level_procedure >= g_current_runtime_level ) THEN
4067 FND_LOG.STRING(g_level_procedure,
4068 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header',
4069 'RETURN_STATUS = ' || x_return_status);
4070 FND_LOG.STRING(g_level_procedure,
4071 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header.END',
4072 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header(-)');
4073 END IF;
4074
4075 EXCEPTION
4076 WHEN OTHERS THEN
4077 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4078 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4079 FND_LOG.STRING(g_level_unexpected,
4080 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header',
4081 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4082 FND_LOG.STRING(g_level_unexpected,
4083 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header.END',
4084 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header(-)');
4085 END IF;
4086
4087 END init_for_header;
4088
4089 /* ======================================================================*
4090 | PROCEDURE init_for_line is used to initialize the Global |
4091 | Structures / Global Temp Tables owned by TDM at line level. |
4092 * ======================================================================*/
4093 PROCEDURE init_for_line (
4094 p_event_class_rec IN ZX_API_PUB.event_class_rec_type,
4095 x_return_status OUT NOCOPY VARCHAR2 ) IS
4096
4097 BEGIN
4098 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4099
4100 IF (g_level_procedure >= g_current_runtime_level ) THEN
4101 FND_LOG.STRING(g_level_procedure,
4102 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line.BEGIN',
4103 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line(+)');
4104 END IF;
4105
4106 x_return_status := FND_API.G_RET_STS_SUCCESS;
4107
4108 ZX_TDS_CALC_SERVICES_PUB_PKG.g_check_cond_grp_tbl.DELETE;
4109 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_num_value_tbl.DELETE;
4110 ZX_TDS_CALC_SERVICES_PUB_PKG.g_tsrm_alphanum_value_tbl.DELETE;
4111 ZX_TDS_CALC_SERVICES_PUB_PKG.g_trx_alphanum_value_tbl.DELETE;
4112
4113 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_class_tbl.DELETE;
4114 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_cq_tbl.DELETE;
4115 ZX_TDS_RULE_BASE_DETM_PVT.g_data_type_tbl.DELETE;
4116 ZX_TDS_RULE_BASE_DETM_PVT.g_determining_factor_code_tbl.DELETE;
4117 ZX_TDS_RULE_BASE_DETM_PVT.g_tax_parameter_code_tbl.DELETE;
4118 ZX_TDS_RULE_BASE_DETM_PVT.g_operator_tbl.DELETE;
4119 ZX_TDS_RULE_BASE_DETM_PVT.g_numeric_value_tbl.DELETE;
4120 ZX_TDS_RULE_BASE_DETM_PVT.g_date_value_tbl.DELETE;
4121 ZX_TDS_RULE_BASE_DETM_PVT.g_alphanum_value_tbl.DELETE;
4122 ZX_TDS_RULE_BASE_DETM_PVT.g_value_low_tbl.DELETE;
4123 ZX_TDS_RULE_BASE_DETM_PVT.g_value_high_tbl.DELETE;
4124 ZX_TDS_RULE_BASE_DETM_PVT.g_segment_array.DELETE;
4125
4126 ZX_TDS_CALC_SERVICES_PUB_PKG.g_max_tax_line_number := NULL;
4127
4128 -- bugfix 5024740: initialize zx_jurisdictions_gt
4129
4130 delete from zx_jurisdictions_gt;
4131
4132 IF (g_level_procedure >= g_current_runtime_level ) THEN
4133 FND_LOG.STRING(g_level_procedure,
4134 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line',
4135 'RETURN_STATUS = ' || x_return_status);
4136 FND_LOG.STRING(g_level_procedure,
4137 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line.END',
4138 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line(-)');
4139 END IF;
4140
4141 EXCEPTION
4142 WHEN OTHERS THEN
4143 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4144 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4145 FND_LOG.STRING(g_level_unexpected,
4146 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line',
4147 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4148 FND_LOG.STRING(g_level_unexpected,
4149 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line.END',
4150 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line(-)');
4151 END IF;
4152
4153 END init_for_line;
4154
4155 /* ======================================================================*
4156 | PROCEDURE init_for_tax_line is used to initialize the Global |
4157 | Structures / Global Temp Tables owned by TDM at tax line level. |
4158 * ======================================================================*/
4159 PROCEDURE init_for_tax_line (
4160 p_event_class_rec IN ZX_API_PUB.event_class_rec_type,
4161 x_return_status OUT NOCOPY VARCHAR2 ) IS
4162
4163 BEGIN
4164 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4165
4166 IF (g_level_procedure >= g_current_runtime_level ) THEN
4167 FND_LOG.STRING(g_level_procedure,
4168 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line.BEGIN',
4169 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line(+)');
4170 END IF;
4171
4172 x_return_status := FND_API.G_RET_STS_SUCCESS;
4173
4174 ZX_TDS_RULE_BASE_DETM_PVT.g_segment_array.DELETE;
4175
4176 IF (g_level_procedure >= g_current_runtime_level ) THEN
4177 FND_LOG.STRING(g_level_procedure,
4178 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line',
4179 'RETURN_STATUS = ' || x_return_status);
4180 FND_LOG.STRING(g_level_procedure,
4181 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line.END',
4182 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line(-)');
4183 END IF;
4184
4185 EXCEPTION
4186 WHEN OTHERS THEN
4187 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4188 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4189 FND_LOG.STRING(g_level_unexpected,
4190 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line',
4191 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4192 FND_LOG.STRING(g_level_unexpected,
4193 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line.END',
4194 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line(-)');
4195 END IF;
4196
4197 END init_for_tax_line;
4198
4199 /* ======================================================================*
4200 | PROCEDURE init_for_tax_dist is used to initialize the Global |
4201 | Structures/Global Temp Tables owned by TDM at tax distribution level.|
4202 * ======================================================================*/
4203 PROCEDURE init_for_tax_dist (
4204 p_event_class_rec IN ZX_API_PUB.event_class_rec_type,
4205 x_return_status OUT NOCOPY VARCHAR2 ) IS
4206
4207 BEGIN
4208 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4209
4210 IF (g_level_procedure >= g_current_runtime_level ) THEN
4211 FND_LOG.STRING(g_level_procedure,
4212 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist.BEGIN',
4213 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist(+)');
4214 END IF;
4215
4216 x_return_status := FND_API.G_RET_STS_SUCCESS;
4217
4218 -- init gt tables
4219 DELETE FROM ZX_REC_NREC_DIST_GT;
4220
4221 IF (g_level_procedure >= g_current_runtime_level ) THEN
4222 FND_LOG.STRING(g_level_procedure,
4223 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist',
4224 'RETURN_STATUS = ' || x_return_status);
4225 FND_LOG.STRING(g_level_procedure,
4226 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist.END',
4227 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist(-)');
4228 END IF;
4229
4230 EXCEPTION
4231 WHEN OTHERS THEN
4232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4233 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4234 FND_LOG.STRING(g_level_unexpected,
4235 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist',
4236 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4237 FND_LOG.STRING(g_level_unexpected,
4238 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist.END',
4239 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist(-)');
4240 END IF;
4241
4242 END init_for_tax_dist;
4243
4244
4245 /* ======================================================================*
4246 | PROCEDURE initialize is used to initialize the Global |
4247 | Structures / Global Temp Tables owned by TDM |
4248 * ======================================================================*/
4249 PROCEDURE initialize (
4250 p_event_class_rec IN ZX_API_PUB.event_class_rec_type,
4251 p_init_level IN VARCHAR2,
4252 x_return_status OUT NOCOPY VARCHAR2 ) IS
4253
4254 BEGIN
4255
4256 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4257
4258 IF (g_level_procedure >= g_current_runtime_level ) THEN
4259 FND_LOG.STRING(g_level_procedure,
4260 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.BEGIN',
4261 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(+)');
4262 FND_LOG.STRING(g_level_procedure,
4263 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4264 'p_init_level = ' || p_init_level);
4265 END IF;
4266
4267 x_return_status := FND_API.G_RET_STS_SUCCESS;
4268
4269 IF p_init_level = 'SESSION' THEN
4270
4271 init_for_session( x_return_status );
4272
4273 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4274 IF (g_level_error >= g_current_runtime_level ) THEN
4275 FND_LOG.STRING(g_level_error,
4276 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4277 'Incorrect return_status after calling ' ||
4278 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_session()');
4279 FND_LOG.STRING(g_level_error,
4280 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4281 'RETURN_STATUS = ' || x_return_status);
4282 FND_LOG.STRING(g_level_error,
4283 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4284 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4285 END IF;
4286 RETURN;
4287 END IF;
4288
4289 ELSIF p_init_level = 'HEADER' THEN
4290
4291 init_for_header( p_event_class_rec,
4292 x_return_status );
4293
4294 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4295 IF (g_level_error >= g_current_runtime_level ) THEN
4296 FND_LOG.STRING(g_level_error,
4297 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4298 'Incorrect return_status after calling ' ||
4299 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_header()');
4300 FND_LOG.STRING(g_level_error,
4301 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4302 'RETURN_STATUS = ' || x_return_status);
4303 FND_LOG.STRING(g_level_error,
4304 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4305 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4306 END IF;
4307 RETURN;
4308 END IF;
4309 ELSIF p_init_level = 'LINE' THEN
4310
4311 init_for_line( p_event_class_rec,
4312 x_return_status );
4313
4314 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4315 IF (g_level_error >= g_current_runtime_level ) THEN
4316 FND_LOG.STRING(g_level_error,
4317 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4318 'Incorrect return_status after calling ' ||
4319 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_line()');
4320 FND_LOG.STRING(g_level_error,
4321 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4322 'RETURN_STATUS = ' || x_return_status);
4323 FND_LOG.STRING(g_level_error,
4324 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4325 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4326 END IF;
4327 RETURN;
4328 END IF;
4329
4330 ELSIF p_init_level = 'TAX_LINE' THEN
4331
4332 init_for_tax_line( p_event_class_rec,
4333 x_return_status );
4334
4335 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4336 IF (g_level_error >= g_current_runtime_level ) THEN
4337 FND_LOG.STRING(g_level_error,
4338 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4339 'Incorrect return_status after calling ' ||
4340 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_line()');
4341 FND_LOG.STRING(g_level_error,
4342 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4343 'RETURN_STATUS = ' || x_return_status);
4344 FND_LOG.STRING(g_level_error,
4345 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4346 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4347 END IF;
4348 RETURN;
4349 END IF;
4350
4351 ELSIF p_init_level = 'TAX_DISTRIBUTION' THEN
4352
4353 init_for_tax_dist ( p_event_class_rec,
4354 x_return_status );
4355
4356 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4357 IF (g_level_error >= g_current_runtime_level ) THEN
4358 FND_LOG.STRING(g_level_error,
4359 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4360 'Incorrect return_status after calling ' ||
4361 'ZX_TDS_CALC_SERVICES_PUB_PKG.init_for_tax_dist()');
4362 FND_LOG.STRING(g_level_error,
4363 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4364 'RETURN_STATUS = ' || x_return_status);
4365 FND_LOG.STRING(g_level_error,
4366 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4367 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4368 END IF;
4369 RETURN;
4370 END IF;
4371
4372 END IF;
4373
4374 IF (g_level_procedure >= g_current_runtime_level ) THEN
4375 FND_LOG.STRING(g_level_procedure,
4376 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4377 'RETURN_STATUS = ' || x_return_status);
4378 FND_LOG.STRING(g_level_procedure,
4379 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4380 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4381 END IF;
4382
4383 EXCEPTION
4384 WHEN OTHERS THEN
4385 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4386 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4387 FND_LOG.STRING(g_level_unexpected,
4388 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize',
4389 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4390 FND_LOG.STRING(g_level_unexpected,
4391 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.initialize.END',
4392 'ZX_TDS_CALC_SERVICES_PUB_PKG.initialize(-)');
4393 END IF;
4394
4395 END initialize;
4396
4397 PROCEDURE get_process_for_appl_flg (
4398 p_tax_prof_id IN NUMBER,
4399 x_return_status OUT NOCOPY VARCHAR2 )
4400 IS
4401 CURSOR get_process_for_appl_flg IS
4402 SELECT process_for_applicability_flag
4403 FROM zx_party_tax_profile
4404 WHERE party_tax_profile_id = p_tax_prof_id;
4405
4406 l_process_for_appl_flg zx_party_tax_profile.process_for_applicability_flag%TYPE;
4407
4408 BEGIN
4409 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
4410
4411 IF (g_level_procedure >= g_current_runtime_level ) THEN
4412 FND_LOG.STRING(g_level_procedure,
4413 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg.BEGIN',
4414 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg(+)');
4415 FND_LOG.STRING(g_level_procedure,
4416 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg',
4417 'p_tax_prof_id = ' || p_tax_prof_id);
4418 FND_LOG.STRING(g_level_procedure,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg',
4419 'ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg set for supplier site is ' ||ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg);
4420 END IF;
4421
4422
4423 x_return_status := FND_API.G_RET_STS_SUCCESS;
4424
4425 -- Check if the tax calculation level from the party site is 'None'
4426 -- If it is 'None', skip the processing taxes for this transaction
4427 -- line get_process_for_appl_flg
4428 -- If the variable ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg was set
4429 -- for the supplier site within the rounding package then do not get the
4430 -- process for applicability flag for the rounding party tax profile. Added
4431 -- the if ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg IS NULL condition
4432 -- for this. Bug 7005483
4433 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg IS NULL THEN
4434 IF p_tax_prof_id IS NOT NULL THEN
4435 --Introducing caching logic..
4436 IF l_tax_prof_id_tbl.EXISTS(p_tax_prof_id)
4437 AND l_tax_prof_id_tbl(p_tax_prof_id).tax_prof_id = p_tax_prof_id THEN
4438 l_process_for_appl_flg := l_tax_prof_id_tbl(p_tax_prof_id).process_for_appl_flg;
4439 ELSE
4440 OPEN get_process_for_appl_flg;
4441 FETCH get_process_for_appl_flg INTO l_process_for_appl_flg;
4442 CLOSE get_process_for_appl_flg;
4443
4444 l_tax_prof_id_tbl(p_tax_prof_id).tax_prof_id := p_tax_prof_id;
4445 l_tax_prof_id_tbl(p_tax_prof_id).process_for_appl_flg := l_process_for_appl_flg;
4446 END IF;
4447 ZX_TDS_CALC_SERVICES_PUB_PKG.g_process_for_appl_flg := l_process_for_appl_flg;
4448 END IF;
4449 END IF;
4450
4451 IF (g_level_procedure >= g_current_runtime_level ) THEN
4452
4453 FND_LOG.STRING(g_level_procedure,
4454 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg.END',
4455 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg(-)'||'process for appl flag' ||g_process_for_appl_flg);
4456 END IF;
4457
4458 EXCEPTION
4459 WHEN OTHERS THEN
4460 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4461 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4462 FND_LOG.STRING(g_level_unexpected,
4463 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg',
4464 'No data found: p_tax_prof_id: '||p_tax_prof_id);
4465 FND_LOG.STRING(g_level_unexpected,
4466 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg',
4467 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4468 FND_LOG.STRING(g_level_unexpected,
4469 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg.END',
4470 'ZX_TDS_CALC_SERVICES_PUB_PKG.get_process_for_appl_flg(-)');
4471 END IF;
4472
4473 END get_process_for_appl_flg;
4474
4475 -----------------------------------------------------------------------
4476 -- PUBLIC FUNCTION
4477 -- get_rep_code_id
4478 --
4479 -- DESCRIPTION
4480 -- To populate the Reporting Code id defined at Rule level
4481 -- for every result id.
4482 --
4483 -- CALLED BY
4484 -- calculate_tax
4485 -----------------------------------------------------------------------
4486 FUNCTION get_rep_code_id (
4487 p_result_id IN ZX_PROCESS_RESULTS.RESULT_ID%TYPE,
4488 p_date IN ZX_LINES.TRX_DATE%TYPE) RETURN ZX_REPORTING_CODES_B.REPORTING_CODE_ID%TYPE IS
4489 l_api_name CONSTANT VARCHAR2(30):= 'GET_REP_CODE_ID';
4490 l_reporting_code_id ZX_REPORTING_CODES_B.REPORTING_CODE_ID%type;
4491 l_date ZX_LINES.TRX_DATE%TYPE;
4492 BEGIN
4493
4494 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4495 FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id.BEGIN',
4496 'ZX_SRVC_TYP_PKG: GET_REP_CODE_ID()+');
4497 END IF;
4498
4499 IF p_result_id is NOT NULL THEN
4500 IF NOT ZX_TDS_CALC_SERVICES_PUB_PKG.g_zx_rep_code_tbl.EXISTS(p_result_id) THEN
4501 BEGIN
4502 l_date:= nvl(p_date,sysdate);
4503
4504 SELECT assoc.reporting_code_id
4505 INTO l_reporting_code_id
4506 FROM zx_reporting_types_b types,
4507 zx_report_codes_assoc assoc
4508 WHERE types.legal_message_flag = 'Y'
4509 AND assoc.entity_code = 'ZX_PROCESS_RESULTS'
4510 AND assoc.entity_id = p_result_id
4511 AND assoc.reporting_type_id = types.reporting_type_id
4512 AND l_date BETWEEN assoc.effective_from AND NVL(assoc.effective_to, l_date);
4513
4514 EXCEPTION
4515 WHEN OTHERS THEN
4516 l_reporting_code_id := NULL;
4517 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4518 FND_LOG.STRING(G_LEVEL_UNEXPECTED,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id',
4519 'No Reporting Code defined for Process result id for' || to_char(p_result_id) || ' : ' ||SQLERRM);
4520 END IF;
4521 END;
4522 zx_tds_calc_services_pub_pkg.g_zx_rep_code_tbl(p_result_id).result_id := p_result_id;
4523 zx_tds_calc_services_pub_pkg.g_zx_rep_code_tbl(p_result_id).reporting_code_id := l_reporting_code_id;
4524 END IF;
4525 l_reporting_code_id := zx_tds_calc_services_pub_pkg.g_zx_rep_code_tbl(p_result_id).reporting_code_id;
4526 ELSE
4527 l_reporting_code_id := NULL;
4528 END IF;
4529
4530 IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
4531 FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id',
4532 ' result_id: '||to_char(p_result_id) || ' : reporting_code_id : '||to_char(l_reporting_code_id));
4533 FND_LOG.STRING(G_LEVEL_STATEMENT,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id.END',
4534 'ZX_SRVC_TYP_PKG: GET_REP_CODE_ID()-');
4535 END IF;
4536 RETURN l_reporting_code_id;
4537 EXCEPTION
4538 WHEN OTHERS THEN
4539 IF ( G_LEVEL_UNEXPECTED >= G_CURRENT_RUNTIME_LEVEL) THEN
4540 FND_LOG.STRING(G_LEVEL_UNEXPECTED,'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id',
4541 'Error occurred in ' || l_api_name || ' : ' ||SQLERRM);
4542 END IF;
4543 l_reporting_code_id := NULL;
4544 RETURN l_reporting_code_id;
4545 END get_rep_code_id;
4546
4547 -----------------------------------------------------------------------
4548 -- PUBLIC FUNCTION
4549 -- round_tax_curr_xml_inv
4550 --
4551 -- DESCRIPTION
4552 -- To round the functional and tax currency amounts incase of any
4553 -- adjustments
4554 --
4555 -- CALLED BY
4556 -- adjust_tax_for_xml_inv_hdr and adjust_tax_for_xml_inv_line
4557 -----------------------------------------------------------------------
4558
4559 FUNCTION round_tax_curr_xml_inv (
4560 p_amt IN NUMBER,
4561 p_ledger_id IN NUMBER,
4562 p_tax_id IN ZX_TAXES_B.TAX_ID%TYPE,
4563 p_tax_curr_code IN ZX_TAXES_B.TAX_CURRENCY_CODE%TYPE,
4564 p_Rounding_Rule_Code IN ZX_TAXES_B.Rounding_Rule_Code%TYPE,
4565 p_conv_type IN VARCHAR2,
4566 p_precision IN ZX_TAXES_B.TAX_PRECISION%TYPE,
4567 p_mau IN ZX_TAXES_B.MINIMUM_ACCOUNTABLE_UNIT%TYPE
4568 ) RETURN NUMBER IS
4569
4570 l_precision ZX_TAXES_B.TAX_PRECISION%TYPE;
4571 l_mau ZX_TAXES_B.MINIMUM_ACCOUNTABLE_UNIT%TYPE;
4572 l_round_amt ZX_LINES.TAX_AMT%TYPE;
4573
4574 BEGIN
4575 IF (g_level_procedure >= g_current_runtime_level ) THEN
4576 FND_LOG.STRING(g_level_procedure,
4577 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.round_tax_curr_xml_inv.BEGIN',
4578 'ZX_TDS_CALC_SERVICES_PUB_PKG.round_tax_curr_xml_inv(+)');
4579
4580 END IF;
4581
4582 IF p_conv_type = 'FUNCL_CURR' THEN
4583 BEGIN
4584 SELECT NVL(cur.minimum_accountable_unit, power(10, (-1 * precision))),precision
4585 INTO l_mau,l_precision
4586 FROM fnd_currencies cur, gl_sets_of_books sob
4587 WHERE sob.set_of_books_id = p_ledger_id
4588 AND cur.currency_code = sob.currency_code;
4589 EXCEPTION
4590 WHEN OTHERS THEN
4591 l_mau := NULL;
4592 l_precision := NULL;
4593 END;
4594
4595 IF l_mau IS NULL and l_precision IS NULL THEN
4596 l_mau := NVL(p_mau, power(10, (-1 * p_precision)));
4597 END IF;
4598 l_round_amt := ROUND(p_amt/l_mau) * l_mau;
4599 ELSIF p_conv_type = 'TAX_CURR' THEN
4600 BEGIN
4601 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).tax_precision is NULL
4602 AND ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).minimum_accountable_unit is NULL THEN
4603 IF ZX_TDS_TAX_ROUNDING_PKG.g_currency_tbl(p_tax_curr_code).min_acct_unit IS NULL
4604 AND ZX_TDS_TAX_ROUNDING_PKG.g_currency_tbl(p_tax_curr_code).precision IS NULL THEN
4605 l_mau := p_mau;
4606 l_precision := p_precision;
4607 ELSE
4608 l_mau := ZX_TDS_TAX_ROUNDING_PKG.g_currency_tbl(p_tax_curr_code).min_acct_unit;
4609 l_precision := ZX_TDS_TAX_ROUNDING_PKG.g_currency_tbl(p_tax_curr_code).precision;
4610 END IF;
4611 ELSE
4612 l_precision := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).tax_precision;
4613 l_mau := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).minimum_accountable_unit;
4614 END IF;
4615 EXCEPTION WHEN OTHERS THEN
4616 l_precision := p_precision;
4617 l_mau := p_mau;
4618 END;
4619
4620 IF p_Rounding_Rule_Code = 'UP' THEN
4621 IF l_mau is NOT NULL THEN
4622 l_round_amt := SIGN(p_amt) * (CEIL(ABS(p_amt)/l_mau) * l_mau);
4623 ELSIF l_precision is NOT NULL THEN
4624 IF (p_amt = TRUNC(p_amt, l_precision)) THEN
4625 l_round_amt := p_amt;
4626 ELSE
4627 l_round_amt := ROUND(p_amt+(SIGN(p_amt) * (POWER(10,(l_precision * (-1)))/2)), l_precision);
4628 END IF;
4629 END IF;
4630 ELSIF p_Rounding_Rule_Code = 'DOWN' THEN
4631 IF l_mau is NOT NULL THEN
4632 l_round_amt := SIGN(p_amt)* (FLOOR(ABS(p_amt)/l_mau) * l_mau);
4633 ELSIF l_precision is NOT NULL THEN
4634 l_round_amt := TRUNC(p_amt, l_precision);
4635 END IF;
4636 ELSIF (p_Rounding_Rule_Code = 'NEAREST' OR p_Rounding_Rule_Code IS NULL) THEN
4637 IF l_mau is NOT NULL THEN
4638 l_round_amt := ROUND(p_amt/l_mau) * l_mau;
4639 ELSIF l_precision is NOT NULL THEN
4640 l_round_amt := ROUND(p_amt, l_precision);
4641 END IF;
4642 END IF;
4643 END IF;
4644
4645 IF (g_level_procedure >= g_current_runtime_level ) THEN
4646 FND_LOG.STRING(g_level_procedure,
4647 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.round_tax_curr_xml_inv.END',
4648 'ZX_TDS_CALC_SERVICES_PUB_PKG.round_tax_curr_xml_inv(-)');
4649
4650 END IF;
4651
4652 RETURN l_round_amt;
4653 END round_tax_curr_xml_inv;
4654
4655 /* ======================================================================*
4656 | CONSTRUCTOR |
4657 * ======================================================================*/
4658 BEGIN
4659 IF (g_level_procedure >= g_current_runtime_level ) THEN
4660 FND_LOG.STRING(g_level_procedure,
4661 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.constructor.BEGIN',
4662 'ZX_TDS_CALC_SERVICES_PUB_PKG.constructor(+)');
4663
4664 END IF;
4665
4666 initialize;
4667
4668 IF (g_level_procedure >= g_current_runtime_level ) THEN
4669 FND_LOG.STRING(g_level_procedure,
4670 'ZX.PLSQL.ZX_TDS_CALC_SERVICES_PUB_PKG.constructor.END',
4671 'ZX_TDS_CALC_SERVICES_PUB_PKG.constructor(-)');
4672 END IF;
4673
4674 END ZX_TDS_CALC_SERVICES_PUB_PKG ;