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