[Home] [Help]
PACKAGE BODY: APPS.ZX_TDS_APPLICABILITY_DETM_PKG
Source
1 PACKAGE BODY ZX_TDS_APPLICABILITY_DETM_PKG AS
2 /* $Header: zxditaxapplipkgb.pls 120.321.12020000.9 2013/03/21 17:51:50 smuthusa ship $ */
3
4 PROCEDURE rule_base_pos_detm(
5 p_tax_id IN zx_taxes_b.tax_id%TYPE,
6 p_tax_determine_date IN DATE,
7 p_tax_service_type_code IN zx_rules_b.service_type_code%TYPE,
8 p_event_class_rec IN zx_api_pub.event_class_rec_type,
9 p_trx_line_index IN BINARY_INTEGER,
10 x_alphanumeric_result OUT NOCOPY VARCHAR2,
11 x_result_id OUT NOCOPY NUMBER,
12 x_return_status OUT NOCOPY VARCHAR2);
13
14 PROCEDURE add_tax_regime(
15 p_tax_regime_precedence IN zx_regimes_b.regime_precedence%TYPE,
16 p_tax_regime_id IN zx_regimes_b.tax_regime_id%TYPE,
17 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
18 p_parent_regime_code IN zx_regimes_b.parent_regime_code%TYPE,
19 p_country_code IN zx_regimes_b.country_code%TYPE,
20 p_geography_type IN zx_regimes_b.geography_type%TYPE,
21 p_geography_id IN zx_regimes_b.geography_id%TYPE,
22 p_effective_from IN zx_regimes_b.effective_from%TYPE,
23 p_effective_to IN zx_regimes_b.effective_to%TYPE,
24 x_return_status OUT NOCOPY VARCHAR2);
25
26 FUNCTION is_tax_applicable(
27 p_tax_id IN zx_taxes_b.tax_id%TYPE,
28 p_tax_determine_date IN DATE,
29 p_applicability_rule_flag IN zx_taxes_b.applicability_rule_flag%TYPE,
30 p_event_class_rec IN zx_api_pub.event_class_rec_type,
31 p_trx_line_index IN BINARY_INTEGER,
32 p_applicable_by_default_flag IN zx_taxes_b.applicable_by_default_flag%TYPE,
33 x_applicability_result OUT NOCOPY VARCHAR2,
34 x_applicability_result_id OUT NOCOPY NUMBER,
35 x_return_status OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
36
37 FUNCTION is_direct_rate_applicable(
38 p_tax_id IN zx_taxes_b.tax_id%TYPE,
39 p_tax_determine_date IN DATE,
40 p_event_class_rec IN zx_api_pub.event_class_rec_type,
41 p_trx_line_index IN BINARY_INTEGER,
42 x_direct_rate_result_rec OUT NOCOPY zx_process_results%ROWTYPE,
43 x_direct_rate_result_id OUT NOCOPY NUMBER,
44 x_return_status OUT NOCOPY VARCHAR2) RETURN BOOLEAN;
45
46 PROCEDURE populate_registration_info(
47 p_event_class_rec IN zx_api_pub.event_class_rec_type,
48 p_trx_line_index IN NUMBER,
49 p_rownum IN NUMBER,
50 p_def_reg_type IN zx_taxes_b.def_registr_party_type_code%TYPE,
51 p_reg_rule_flg IN zx_taxes_b.registration_type_rule_flag%TYPE,
52 p_tax_determine_date IN DATE,
53 x_return_status OUT NOCOPY VARCHAR2);
54
55 -- Added for bug 4959835
56 PROCEDURE handle_update_scenarios(
57 p_trx_line_index IN BINARY_INTEGER,
58 p_event_class_rec IN zx_api_pub.event_class_rec_type,
59 p_row_num IN NUMBER,
60 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
61 p_tax IN zx_taxes_b.tax%TYPE,
62 p_tax_date IN DATE,
63 p_tax_determine_date IN DATE,
64 p_tax_point_date IN DATE,
65 x_self_assessed_flag OUT NOCOPY zx_lines.self_assessed_flag%TYPE,
66 x_tax_amt_included_flag OUT NOCOPY zx_lines.tax_amt_included_flag%TYPE,
67 x_tax_jurisdiction_id OUT NOCOPY zx_lines.tax_jurisdiction_id%TYPE,
68 x_tax_jurisdiction_code OUT NOCOPY zx_lines.tax_jurisdiction_code%TYPE,
69 x_return_status OUT NOCOPY VARCHAR2);
70
71 PROCEDURE enforce_tax_from_ref_doc(
72 p_begin_index IN BINARY_INTEGER,
73 p_end_index IN BINARY_INTEGER,
74 p_trx_line_index IN BINARY_INTEGER,
75 x_return_status OUT NOCOPY VARCHAR2);
76
77 -- End: Bug 4959835
78
79 g_current_runtime_level NUMBER;
80 g_level_statement CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
81 g_level_procedure CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
82 g_level_event CONSTANT NUMBER := FND_LOG.LEVEL_EVENT;
83 g_level_error CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
84 g_level_unexpected CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
85
86 -- cache the most inner and outer jurisdiction
87 g_inner_jurisdiction_code ZX_JURISDICTIONS_B.tax_jurisdiction_code%TYPE;
88 g_inner_jurisdiction_id ZX_JURISDICTIONS_B.tax_jurisdiction_id%TYPE;
89 g_outer_jurisdiction_code ZX_JURISDICTIONS_B.tax_jurisdiction_code%TYPE;
90 g_outer_jurisdiction_id ZX_JURISDICTIONS_B.tax_jurisdiction_id%TYPE;
91
92 g_trx_line_id ZX_LINES.trx_line_id%TYPE;
93
94 -------------------------------------------------------------------------------
95 -- PUBLIC PROCEDURE
96 -- get_tax_date
97 --
98 -- DESCRIPTION
99 -- This procedure is used to determine the tax determination date.
100 -- Tax determination date will be used to check the validity of all entities
101 -- used in tax determination which have start and end dates such as rates,
102 -- rules etc.
103
104 -- This procedure will support deriving the tax point date and tax exchange
105 -- rate date in later phases.
106 -------------------------------------------------------------------------------
107
108 PROCEDURE get_tax_date
109 (p_trx_line_index IN BINARY_INTEGER,
110 x_tax_date OUT NOCOPY DATE,
111 x_tax_determine_date OUT NOCOPY DATE,
112 x_tax_point_date OUT NOCOPY DATE,
113 x_return_status OUT NOCOPY VARCHAR2) IS
114
115 BEGIN
116
117 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
118
119 IF (g_level_statement >= g_current_runtime_level ) THEN
120 FND_LOG.STRING(g_level_statement,
121 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date.BEGIN',
122 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(+)');
123 END IF;
124
125 x_return_status := FND_API.G_RET_STS_SUCCESS;
126
127 x_tax_date :=
128 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_date(p_trx_line_index),
129 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.provnl_tax_determination_date(p_trx_line_index),
130 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_date(p_trx_line_index),
131 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_date(p_trx_line_index),
132 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index)))));
133
134 x_tax_determine_date :=
135 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_date(p_trx_line_index),
136 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.provnl_tax_determination_date(p_trx_line_index),
137 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_date(p_trx_line_index),
138 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_date(p_trx_line_index),
139 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index)))));
140 x_tax_point_date :=
141 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.related_doc_date(p_trx_line_index),
142 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.provnl_tax_determination_date(p_trx_line_index),
143 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_date(p_trx_line_index),
144 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_date(p_trx_line_index),
145 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index)))));
146
147 IF (g_level_procedure >= g_current_runtime_level ) THEN
148 FND_LOG.STRING(g_level_procedure,
149 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(-)',
150 'Tax date = ' || to_char(x_tax_date, 'DD-MON-YY')||'Tax determine date = ' || to_char(x_tax_determine_date, 'DD-MON-YY')||'Tax point date = ' || to_char(x_tax_point_date, 'DD-MON-YY'));
151 END IF;
152
153 EXCEPTION
154 WHEN OTHERS THEN
155 x_tax_date := NULL;
156 x_tax_determine_date := NULL;
157 x_tax_point_date := NULL;
158 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
159
160 IF (g_level_unexpected >= g_current_runtime_level ) THEN
161 FND_LOG.STRING(g_level_unexpected,
162 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date',
163 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
164 FND_LOG.STRING(g_level_unexpected,
165 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date.END',
166 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date(-)');
167 END IF;
168
169 END get_tax_date;
170
171 ----------------------------------------------------------------------
172 -- PUBLIC PROCEDURE
173 -- get_applicable_regimes
174 --
175 -- DESCRIPTION
176 --
177 -- This procedure returns applicable tax regimes for each transaction line
178 -- and also unique tax regimes for whole transaction
179 --
180 -- IN p_event_class_rec
181 -- p_event_rec
182 -- OUT NOCOPY x_return_status
183 --
184 ----------------------------------------------------------------------
185 PROCEDURE get_applicable_regimes (
186 p_trx_line_index IN BINARY_INTEGER,
187 p_event_class_rec IN zx_api_pub.event_class_rec_type,
188 x_return_status OUT NOCOPY VARCHAR2) IS
189
190 TYPE country_rec_type IS RECORD (
191 country_code zx_regimes_b.country_code%TYPE);
192 TYPE geography_rec_type IS RECORD (
193 geography_id hz_geographies.geography_id%TYPE);
194
195 TYPE country_tab_type IS TABLE OF country_rec_type INDEX BY VARCHAR2(2);
196 TYPE geography_tab_type IS TABLE OF geography_rec_type INDEX BY BINARY_INTEGER;
197
198 TYPE det_factor_code_tab_type IS TABLE OF
199 zx_determining_factors_b.determining_factor_code%TYPE INDEX BY BINARY_INTEGER;
200 TYPE det_factor_class_tab_type is TABLE of
201 zx_determining_factors_b.Determining_Factor_Class_Code%TYPE INDEX BY BINARY_INTEGER;
202 TYPE regime_det_level_tab_type IS TABLE OF
203 zx_det_factor_templ_dtl.tax_regime_det_level_code%TYPE INDEX BY BINARY_INTEGER;
204
205 l_location_id NUMBER;
206 l_country_code zx_regimes_b.country_code%TYPE;
207 l_country_idx zx_regimes_b.country_code%TYPE;
208 l_country_num zx_regimes_b.country_code%TYPE;
209 table_size NUMBER;
210 l_error_buffer VARCHAR2(256);
211 l_geography_id NUMBER;
212 l_msg_count NUMBER;
213 l_msg_data VARCHAR2(2000);
214
215 l_country_tab country_tab_type;
216 l_geography_tab geography_tab_type;
217 l_null_country_tab country_tab_type;
218 l_det_factor_code_tab det_factor_code_tab_type;
219 l_det_factor_class_tab det_factor_class_tab_type;
220 l_regime_det_level_tab regime_det_level_tab_type;
221
222 l_geo_num NUMBER;
223 l_index NUMBER;
224 l_new_row_num NUMBER;
225 l_structure_name VARCHAR2(30);
226 l_geography_name VARCHAR2(360);
227 l_location_type VARCHAR2(30);
228 l_null_country_loc_type VARCHAR2(30);
229 l_null_country_loc_id NUMBER;
230
231 b_location_found BOOLEAN;
232
233 l_location_list VARCHAR2(1000); -- maximum is 13*30
234
235 l_tax_date DATE;
236 l_tax_determine_date DATE;
237 l_tax_point_date DATE;
238
239 CURSOR get_det_factor_details_cur (
240 p_reg_template_code p_event_class_rec.det_factor_templ_code%TYPE) IS
241 SELECT zxdtd.determining_factor_code,
242 zxdtd.determining_factor_class_code,
243 zxdtd.tax_regime_det_level_code
244 FROM zx_det_factor_templ_b zxdt,
245 zx_det_factor_templ_dtl zxdtd
246 WHERE zxdtd.det_factor_templ_id = zxdt.det_factor_templ_id
247 AND zxdt.det_factor_templ_code = p_reg_template_code;
248
249 -- Assuming the fact that taxes can be defined only for child regimes, fetch
250 -- all regimes that have taxes defined for a given country p_country_code.
251 -- the following cursor is assuming that tax_regime_precedence is available
252 -- in zx_regimes_b
253 --
254 CURSOR get_tax_regime_info_cur(p_country_code varchar2,
255 p_tax_determine_date DATE) IS
256 SELECT tax_regime_id,
257 regime_precedence,
258 tax_regime_code,
259 parent_regime_code,
260 country_code,
261 geography_type,
262 geography_id,
263 effective_from,
264 effective_to
265 FROM ZX_REGIMES_B_V r
266 WHERE country_code = p_country_code
267 AND (p_tax_determine_date >= effective_from AND
268 (p_tax_determine_date <= effective_to OR effective_to IS NULL))
269 AND EXISTS (SELECT /*+ no_unnest */ 1
270 FROM ZX_SCO_TAXES_B_V t
271 WHERE t.tax_regime_code = r.tax_regime_code
272 AND t.live_for_processing_flag = 'Y'
273 AND t.live_for_applicability_flag = 'Y'
274 AND (p_tax_determine_date >= t.effective_from AND
275 (p_tax_determine_date <= t.effective_to OR t.effective_to IS NULL)))
276 ORDER BY regime_precedence;
277
278 CURSOR get_zone_level_regimes_cur(c_geography_id NUMBER, c_date Date) IS
279 SELECT tax_regime_id,
280 regime_precedence,
281 tax_regime_code,
282 parent_regime_code,
283 country_code,
284 geography_type,
285 geography_id,
286 effective_from,
287 effective_to
288 FROM ZX_REGIMES_B_V regime,
289 hz_relationships relation
290 WHERE relation.object_id = c_geography_id
291 AND relation.object_type = 'COUNTRY'
292 AND relation.subject_id = regime.geography_id
293 AND relation.subject_type = regime.geography_type
294 AND c_date >= relation.start_date
295 AND (c_date <= relation.end_date OR relation.end_date IS NULL)
296 AND (c_date >= regime.effective_from AND
297 (c_date <= regime.effective_to OR regime.effective_to IS NULL))
298 AND EXISTS (SELECT /*+ no_unnest */ 1
299 FROM ZX_SCO_TAXES_B_V tax
300 WHERE tax.tax_regime_code = regime.tax_regime_code
301 AND tax.live_for_processing_flag = 'Y'
302 AND tax.live_for_applicability_flag = 'Y'
303 AND (c_date >= tax.effective_from AND
304 (c_date <= tax.effective_to OR tax.effective_to IS NULL)))
305 ORDER BY regime.regime_precedence;
306
307 BEGIN
308
309 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
310
311 IF (g_level_procedure >= g_current_runtime_level ) THEN
312 FND_LOG.STRING(g_level_procedure,
313 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.BEGIN',
314 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(+)');
315 END IF;
316
317 x_return_status := FND_API.G_RET_STS_SUCCESS;
318
319 b_location_found := FALSE;
320 table_size := 2048;
321
322 -- Validations
323 IF p_event_class_rec.det_factor_templ_code IS NULL THEN
324
325 IF (g_level_error >= g_current_runtime_level ) THEN
326 FND_LOG.STRING(g_level_error,
327 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
328 'Event Class does not contain Regime Template');
329 END IF;
330
331 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
332 RETURN;
333 END IF;
334
335 -- Get information about all drivers correponding to the template code
336 -- EVENT_CLASS_REC_TYPE structure contains only one record at any give time.
337 --
338 OPEN get_det_factor_details_cur(p_event_class_rec.det_factor_templ_code);
339
340 FETCH get_det_factor_details_cur
341 BULK COLLECT INTO l_det_factor_code_tab,
342 l_det_factor_class_tab,
343 l_regime_det_level_tab;
344 CLOSE get_det_factor_details_cur;
345
346 -- Re-initialize the country table when beginning to process
347 -- a p_transaction_line_tbl line
348 --
349 l_country_tab := l_null_country_tab;
350
351 -- This loop will determine all the countries associated with a line and
352 -- add them to the l_country_tab table
353 --
354
355 FOR l_det_factor_tab_rownum IN NVL(l_det_factor_code_tab.FIRST, 0) ..
356 NVL(l_det_factor_code_tab.LAST, -1)
357 LOOP
358 -- fetch parameter value(location_id) for each parameter name of driver
359
360 l_structure_name := 'TRX_LINE_DIST_TBL';
361 ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value(
362 p_struct_name => l_structure_name,
363 p_struct_index => p_trx_line_index,
364 p_tax_param_code => l_det_factor_code_tab(l_det_factor_tab_rownum),
365 x_tax_param_value => l_location_id,
366 x_return_status => x_return_status );
367
368 IF NVL(x_return_status,FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
369 THEN
370
371 IF (g_level_statement >= g_current_runtime_level ) THEN
372 FND_LOG.STRING(g_level_statement,
373 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
374 'The value of return_status is not ''S'' after calling '||
375 'ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value');
376 FND_LOG.STRING(g_level_statement,
377 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
378 'RETURN_STATUS = ' || x_return_status);
379 FND_LOG.STRING(g_level_statement,
380 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
381 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
382 END IF;
383 RETURN;
384 END IF;
385
386 -- If the location_id returned is NOT NULL
387 --
388 IF l_location_id IS NOT NULL THEN
389
390 IF NOT b_location_found THEN
391 b_location_found := TRUE;
392 END IF;
393
394 -- Fetch Country code for each parameter value of driver(location_id)
395 --
396 l_location_type := substr(l_det_factor_code_tab(l_det_factor_tab_rownum),1,
397 length(l_det_factor_code_tab(l_det_factor_tab_rownum))-12);
398
399 ZX_TCM_GEO_JUR_PKG.get_master_geography (
400 p_location_id => l_location_id,
401 p_location_type => l_location_type,
402 p_geography_type => 'COUNTRY',
403 x_geography_id => l_geography_id,
404 x_geography_code => l_country_code,
405 x_geography_name => l_geography_name,
406 x_return_status => x_return_status);
407
408
409 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
410 THEN
411
412 IF (g_level_statement >= g_current_runtime_level ) THEN
413 FND_LOG.STRING(g_level_statement,
414 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
415 'Incorrect return_status after calling '||
416 'ZX_TCM_CONTROL_PKG.get_location_country');
417 FND_LOG.STRING(g_level_statement,
418 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
419 'RETURN_STATUS = ' || x_return_status);
420 FND_LOG.STRING(g_level_statement,
421 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
422 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
423 END IF;
424 --
425 -- add error message before return
426 --
427 FND_MESSAGE.SET_NAME ('ZX', 'ZX_GENERIC_TEXT');
428 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','Unable to determine the Country code for the Location id: '||
429 l_location_id||' and Location type: '||l_location_type);
430
431 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
432 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
433 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
434 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
435
436 ZX_API_PUB.add_msg(
437 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
438 RETURN;
439 END IF;
440
441 -- If status is normal and country code is associated to
442 -- determining factor(location)
443 --
444 IF (l_country_code IS NOT NULL) THEN
445
446 -- Populate plsql table index with country code
447 --
448 l_country_idx := l_country_code;
449
450 -- Check if country (country code) already exists.
451 --
452 IF NOT l_country_tab.EXISTS(l_country_idx) THEN
453 l_country_tab(l_country_idx).country_code := l_country_code;
454 END IF;
455
456 -- If regime_determination_level is 'ZONE', populate l_zone_tbl
457 --
458 IF l_regime_det_level_tab(l_det_factor_tab_rownum) = 'ZONE' THEN
459
460 IF NOT l_geography_tab.EXISTS(l_geography_id) THEN
461 l_geography_tab(l_geography_id).geography_id := l_geography_id;
462 END IF;
463 END IF;
464 ELSE
465 -- l_country_tab := l_null_country_tab;
466 l_null_country_loc_id := l_location_id;
467 l_null_country_loc_type := l_location_type;
468 --EXIT;
469 /*x_return_status := FND_API.G_RET_STS_ERROR;
470
471 FND_MESSAGE.SET_NAME ('ZX', 'ZX_NO_COUNTRY_CODE_FOUND');
472 FND_MESSAGE.SET_TOKEN('LOCATION_TYPE', l_location_type);
473
474 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
475 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
476 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
477 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
478
479 ZX_API_PUB.add_msg(
480 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
481
482 */
483 IF (g_level_statement >= g_current_runtime_level ) THEN
484 FND_LOG.STRING(g_level_statement,
485 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
486 'No Country Code defined for the location: '|| l_location_id);
487 END IF;
488
489 --RETURN;
490 END IF; -- l_country_code
491 END IF; -- l_location_id is not null
492
493 -- concatenate the location factor for the error msg.
494 IF l_det_factor_tab_rownum = l_det_factor_code_tab.FIRST THEN
495 l_location_list := l_det_factor_code_tab(l_det_factor_tab_rownum);
496 ELSE
497 l_location_list := l_location_list || ', ' || l_det_factor_code_tab(l_det_factor_tab_rownum);
498 END IF;
499
500 END LOOP; -- l_driver_id_tab
501
502 -- As a part of 6798559 fix
503 IF l_country_tab.count = 0 THEN
504
505 x_return_status := FND_API.G_RET_STS_ERROR;
506
507 FND_MESSAGE.SET_NAME ('ZX', 'ZX_NO_COUNTRY_CODE_FOUND');
508 FND_MESSAGE.SET_TOKEN('LOCATION_TYPE', l_null_country_loc_type);
509
510 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
511 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
512 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
513 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
514
515 ZX_API_PUB.add_msg(
516 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
517
518 RETURN;
519
520 END IF;
521 -- End of processing for all the drivers for a line in the
522 -- transaction line Memory Structure (IN parameter to this procedure)
523
524 IF NOT b_location_found THEN
525 --Bug 5065057
526 /* x_return_status := FND_API.G_RET_STS_ERROR;
527 FND_MESSAGE.SET_NAME ('ZX', 'ZX_NO_LOCATIONS_FOUND');
528 FND_MESSAGE.SET_TOKEN('TEMPLATE_NAME', p_event_class_rec.det_factor_templ_code);
529 FND_MESSAGE.SET_TOKEN('LOCATIONS_LIST', l_location_list);
530
531 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
532 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
533 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
534 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
535
536 ZX_API_PUB.add_msg(
537 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);*/
538
539 RETURN;
540 END IF;
541
542 -- If p_status is error then break form transaction line and return error.
543 -- IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
544 -- EXIT;
545 -- END IF;
546
547 -- This loop will determine the Regimes corresponding to the different
548 -- countries in the l_country_tab structure and insert into the
549 -- p_detail_tax_regime_tbl for each line and p_tax_regime_tbl for unique
550 -- regimes on whole document.
551 --
552 l_country_num := l_country_tab.FIRST;
553 l_geo_num := l_geography_tab.FIRST;
554
555 IF l_country_num IS NOT NULL OR l_geo_num IS NOT NULL THEN
556
557 get_tax_date( p_trx_line_index,
558 l_tax_date,
559 l_tax_determine_date,
560 l_tax_point_date,
561 x_return_status);
562
563 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
564 IF (g_level_error >= g_current_runtime_level ) THEN
565 FND_LOG.STRING(g_level_error,
566 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
567 'Incorrect return_status after calling ' ||
568 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_date()');
569 FND_LOG.STRING(g_level_error,
570 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
571 'RETURN_STATUS = ' || x_return_status);
572 FND_LOG.STRING(g_level_error,
573 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
574 'ZX_TDS_CALC_SERVICES_PUB_PKG.calculate_tax(-)');
575 END IF;
576 RETURN;
577 END IF;
578 END IF;
579
580 WHILE l_country_num IS NOT NULL LOOP
581
582 l_country_code := l_country_tab(l_country_num).country_code;
583
584 FOR l_regime_rec in get_tax_regime_info_cur(l_country_code, l_tax_determine_date) LOOP
585
586 --
587 -- Bug#5440023- do not poplate detail_tax_regime_tbl
588 -- for partner integration with 'LINE_INFO_TAX_ONLY' lines
589 --
590 IF NOT (NVL(ZX_GLOBAL_STRUCTURES_PKG.g_ptnr_srvc_subscr_flag, 'N') = 'Y' AND
591 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (p_trx_line_index ) = 'LINE_INFO_TAX_ONLY' ) THEN
592
593 l_new_row_num :=
594 NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.last, 0) + 1;
595
596 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(l_new_row_num).trx_line_index
597 := p_trx_line_index;
598 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(l_new_row_num).tax_regime_id
599 := l_regime_rec.tax_regime_id;
600 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
601 l_new_row_num).tax_regime_precedence := l_regime_rec.regime_precedence;
602 END IF;
603
604 IF NOT ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.EXISTS(l_regime_rec.tax_regime_id)
605 THEN
606 add_tax_regime (
607 l_regime_rec.regime_precedence,
608 l_regime_rec.tax_regime_id,
609 l_regime_rec.tax_regime_code,
610 l_regime_rec.parent_regime_code,
611 l_regime_rec.country_code,
612 l_regime_rec.geography_type,
613 l_regime_rec.geography_id,
614 l_regime_rec.effective_from,
615 l_regime_rec.effective_to,
616 x_return_status );
617
618 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
619 IF (g_level_error >= g_current_runtime_level ) THEN
620 FND_LOG.STRING(g_level_error,
621 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
622 'Incorrect return_status after calling ' ||
623 'ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime');
624 FND_LOG.STRING(g_level_error,
625 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
626 'RETURN_STATUS = ' || x_return_status);
627 FND_LOG.STRING(g_level_error,
628 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
629 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
630 END IF;
631
632 RETURN;
633 END IF;
634 END IF; -- NOT tax_regime_tbl.EXISTS(tax_regime_id)
635 END LOOP; -- added all the regimes for one country and one line
636
637 -- Process next country
638 --
639 l_country_num := l_country_tab.NEXT(l_country_num);
640
641 END LOOP; -- end of processing for all the countries for one line
642
643 -- Determine the Regimes corresponding to tax_zones
644 --
645 -- l_geo_num := l_geography_tab.FIRST; -- moved up
646
647 WHILE l_geo_num IS NOT NULL LOOP
648
649 FOR l_regime_rec IN get_zone_level_regimes_cur(
650 l_geography_tab(l_geo_num).geography_id, l_tax_determine_date) LOOP
651
652 --
653 -- Bug#5440023- do not poplate detail_tax_regime_tbl
654 -- for partner integration with 'LINE_INFO_TAX_ONLY' lines
655 --
656 IF NOT (NVL(ZX_GLOBAL_STRUCTURES_PKG.g_ptnr_srvc_subscr_flag, 'N') = 'Y' AND
657 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (p_trx_line_index ) = 'LINE_INFO_TAX_ONLY' ) THEN
658
659 l_new_row_num :=
660 NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.last, 0) + 1;
661
662 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(l_new_row_num).trx_line_index
663 := p_trx_line_index;
664 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(l_new_row_num).tax_regime_id
665 := l_regime_rec.tax_regime_id;
666 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
667 l_new_row_num).tax_regime_precedence := l_regime_rec.regime_precedence;
668 END IF;
669
670 IF NOT ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.EXISTS(l_regime_rec.tax_regime_id)
671 THEN
672 add_tax_regime (
673 l_regime_rec.regime_precedence,
674 l_regime_rec.tax_regime_id,
675 l_regime_rec.tax_regime_code,
676 l_regime_rec.parent_regime_code,
677 l_regime_rec.country_code,
678 l_regime_rec.geography_type,
679 l_regime_rec.geography_id,
680 l_regime_rec.effective_from,
681 l_regime_rec.effective_to,
682 x_return_status );
683
684 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
685 IF (g_level_error >= g_current_runtime_level ) THEN
686 FND_LOG.STRING(g_level_error,
687 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
688 'Incorrect return_status after calling ' ||
689 'ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime');
690 FND_LOG.STRING(g_level_error,
691 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
692 'RETURN_STATUS = ' || x_return_status);
693 FND_LOG.STRING(g_level_error,
694 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
695 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
696 END IF;
697
698 RETURN;
699 END IF;
700 END IF; -- NOT tax_regime_tbl.EXISTS(tax_regime_id)
701 END LOOP; -- added all the regimes for one zone and one line
702
703 -- Process next geography_id
704 --
705 l_geo_num := l_geography_tab.NEXT(l_geo_num);
706
707 END LOOP; -- end of processing for all the zones for one line
708
709 -- Return with ERROR status when there are no regimes.
710 -- This also handles the validation of atleast one driver parameter having
711 -- value for a transaction.
712 --
713 IF ((NVL(l_country_tab.COUNT, 0) > 0 OR NVL(l_geography_tab.count, 0) > 0) AND
714 NVL(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.COUNT, 0) = 0) THEN
715 -- x_return_status := FND_API.G_RET_STS_ERROR;
716 IF (g_level_statement >= g_current_runtime_level ) THEN
717 FND_LOG.STRING(g_level_statement,
718 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
719 'No Applicable Regimes');
720 FND_LOG.STRING(g_level_statement,
721 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
722 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
723 END IF;
724 RETURN;
725 END IF;
726
727 IF (g_level_statement >= g_current_runtime_level ) THEN
728 FND_LOG.STRING(g_level_statement,
729 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
730 'Count for distinct Countries is: '||
731 NVL( l_country_tab.COUNT,0));
732 END IF;
733
734 IF (g_level_procedure >= g_current_runtime_level ) THEN
735 FND_LOG.STRING(g_level_procedure,
736 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
737 'Count for applicable regimes is: '||
738 nvl(ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl.COUNT,0));
739 END IF;
740
741 IF (g_level_procedure >= g_current_runtime_level ) THEN
742 FND_LOG.STRING(g_level_procedure,
743 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
744 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
745 END IF;
746
747 EXCEPTION
748 WHEN OTHERS THEN
749 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
750
751 IF (g_level_unexpected >= g_current_runtime_level ) THEN
752 FND_LOG.STRING(g_level_unexpected,
753 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes',
754 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
755 FND_LOG.STRING(g_level_unexpected,
756 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes.END',
757 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_regimes(-)');
758 END IF;
759
760 END get_applicable_regimes;
761
762
763 ----------------------------------------------------------------------
764 -- PRIVATE PROCEDURE
765 -- add_tax_regime
766 --
767 -- DESCRIPTION
768 --
769 -- This procedure determines if the Regime already exists and adds the regime
770 -- to p_tax_regime_tbl only when the same regime doesn't exist
771 --
772 -- IN p_tax_regime_precedence
773 -- p_tax_regime_id
774 -- OUT x_return_status
775 ----------------------------------------------------------------------
776
777 PROCEDURE add_tax_regime (
778 p_tax_regime_precedence IN zx_regimes_b.regime_precedence%TYPE,
779 p_tax_regime_id IN zx_regimes_b.tax_regime_id%TYPE,
780 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
781 p_parent_regime_code IN zx_regimes_b.parent_regime_code%TYPE,
782 p_country_code IN zx_regimes_b.country_code%TYPE,
783 p_geography_type IN zx_regimes_b.geography_type%TYPE,
784 p_geography_id IN zx_regimes_b.geography_id%TYPE,
785 p_effective_from IN zx_regimes_b.effective_from%TYPE,
786 p_effective_to IN zx_regimes_b.effective_to%TYPE,
787 x_return_status OUT NOCOPY VARCHAR2) IS
788
789 l_next_regime_num number;
790
791 BEGIN
792
793 x_return_status := FND_API.G_RET_STS_SUCCESS;
794
795 -- insert the regime_id and the regime_precedence using the regime_id as the
796 -- subscript of the p_Tax_regime_tbl. Hence, when the same tax_regime_id is
797 -- passed multiple times, we overwrite the p_tax_regime_tbl(tax_regime_id) row
798
799 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).tax_regime_precedence :=
800 p_tax_regime_precedence;
801 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).tax_regime_id :=
802 p_tax_regime_id;
803 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).tax_regime_code :=
804 p_tax_regime_code;
805 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).parent_regime_code :=
806 p_parent_regime_code;
807 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).country_code :=
808 p_country_code;
809 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).geography_type :=
810 p_geography_type;
811 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).geography_id :=
812 p_geography_id;
813 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).effective_from :=
814 p_effective_from;
815 ZX_GLOBAL_STRUCTURES_PKG.tax_regime_tbl(p_tax_regime_id).effective_to :=
816 p_effective_to;
817
818 EXCEPTION
819 WHEN OTHERS THEN
820 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
821
822 IF (g_level_unexpected >= g_current_runtime_level ) THEN
823 FND_LOG.STRING(g_level_unexpected,
824 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime',
825 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
826 FND_LOG.STRING(g_level_unexpected,
827 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime.END',
828 'ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime(-)');
829 END IF;
830
831 END add_tax_regime;
832
833
834 ----------------------------------------------------------------------
835 -- PRIVATE PROCEDURE
836 -- is_tax_applicable
837 --
838 -- DESCRIPTION
839 --
840 -- This procedure returns if the tax is applicable or not for a given regime
841 -- TRUE - Applicable
842 -- FALSE - Not Applicable
843 --
844 -- IN p_event_class_rec
845 -- p_tax_id
846 -- p_tax_determine_date
847 -- p_applicability_rule_flag
848 -- p_trx_line_index
849 -- OUT x_applicability_result
850 -- x_applicability_result_id
851 -- x_return_status
852 ----------------------------------------------------------------------
853 FUNCTION is_tax_applicable (
854 p_tax_id IN zx_taxes_b.tax_id%TYPE,
855 p_tax_determine_date IN DATE,
856 p_applicability_rule_flag IN zx_taxes_b.applicability_rule_flag%TYPE,
857 p_event_class_rec IN zx_api_pub.event_class_rec_type,
858 p_trx_line_index IN BINARY_INTEGER,
859 p_applicable_by_default_flag IN zx_taxes_b.applicable_by_default_flag%TYPE,
860 x_applicability_result OUT NOCOPY VARCHAR2,
861 x_applicability_result_id OUT NOCOPY NUMBER,
862 x_return_status OUT NOCOPY VARCHAR2) RETURN BOOLEAN IS
863
864 l_tax_service_type_code zx_rules_b.service_type_code%TYPE;
865 l_result BOOLEAN;
866
867 BEGIN
868
869 IF (g_level_procedure >= g_current_runtime_level ) THEN
870 FND_LOG.STRING(g_level_procedure,
871 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable.BEGIN',
872 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable(+)');
873 END IF;
874
875 IF (g_level_statement >= g_current_runtime_level ) THEN
876 FND_LOG.STRING(g_level_statement,
877 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
878 'l_applicability_rule_flag: '|| p_applicability_rule_flag);
879 END IF;
880
881 x_return_status := FND_API.G_RET_STS_SUCCESS;
882
883 l_tax_service_type_code := 'DET_APPLICABLE_TAXES';
884 l_result := FALSE;
885
886 IF NVL(p_applicability_rule_flag, 'N') = 'N' THEN
887 -- Bug fix: 4874898
888 -- l_result := TRUE;
889 IF p_applicable_by_default_flag = 'Y' THEN
890 l_result :=TRUE;
891 END IF;
892 ELSIF p_applicability_rule_flag = 'Y' THEN
893
894 rule_base_pos_detm(
895 p_tax_id => p_tax_id,
896 p_tax_determine_date => p_tax_determine_date,
897 p_tax_service_type_code => l_tax_service_type_code,
898 p_event_class_rec => p_event_class_rec,
899 p_trx_line_index => p_trx_line_index,
900 x_alphanumeric_result => x_applicability_result,
901 x_result_id => x_applicability_result_id,
902 x_return_status => x_return_status);
903
904 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
905 IF (g_level_statement >= g_current_runtime_level ) THEN
906 FND_LOG.STRING(g_level_statement,
907 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
908 'Incorrect return_status after calling ' ||
909 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm');
910 FND_LOG.STRING(g_level_statement,
911 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
912 'RETURN_STATUS = ' || x_return_status);
913 FND_LOG.STRING(g_level_statement,
914 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable.END',
915 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable(-)');
916 END IF;
917 RETURN FALSE;
918 END IF;
919
920 IF ( x_applicability_result = 'APPLICABLE') THEN
921 l_result := TRUE;
922 ELSE
923 l_result := FALSE;
924 -- Bug fix: 4874898
925 IF x_applicability_result_id IS NULL
926 AND p_applicable_by_default_flag = 'Y'
927 THEN
928 l_result :=TRUE;
929 END IF;
930 END IF;
931
932 ELSE
933 l_result := FALSE;
934 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
935 IF (g_level_statement >= g_current_runtime_level ) THEN
936 FND_LOG.STRING(g_level_statement,
937 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
938 'applicability_rule_flag = ' || p_applicability_rule_flag );
939 FND_LOG.STRING(g_level_statement,
940 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
941 'Error: The valid value for applicability_rule_flag ' ||
942 'should be N or Y.');
943 END IF;
944 END IF;
945
946 IF (g_level_procedure >= g_current_runtime_level ) THEN
947 FND_LOG.STRING(g_level_procedure,
948 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable.END',
949 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable(-)'||'return_status '||x_return_status);
950 END IF;
951
952 RETURN l_result;
953
954 EXCEPTION
955 WHEN OTHERS THEN
956 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
957 IF (g_level_unexpected >= g_current_runtime_level ) THEN
958 FND_LOG.STRING(g_level_unexpected,
959 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable',
960 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
961 FND_LOG.STRING(g_level_unexpected,
962 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable.END',
963 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable(-)');
964 END IF;
965 RETURN FALSE;
966 END is_tax_applicable;
967
968 ----------------------------------------------------------------------
969 -- PRIVATE PROCEDURE
970 -- is_direct_rate_applicable
971 --
972 -- DESCRIPTION
973 --
974 -- This procedure returns if the direct_rate is applicable or not for a
975 -- given regime
976 -- TRUE - Applicable
977 -- FALSE - Not Applicable
978 --
979 -- IN p_tax_id
980 -- p_tax_determine_date
981 -- p_event_class_rec
982 -- p_trx_line_index
983 -- OUT x_direct_rate_result_rec
984 -- x_direct_rate_result_id
985 -- x_return_status
986 ----------------------------------------------------------------------
987
988 FUNCTION is_direct_rate_applicable (
989 p_tax_id IN zx_taxes_b.tax_id%TYPE,
990 p_tax_determine_date IN DATE,
991 p_event_class_rec IN zx_api_pub.event_class_rec_type,
992 p_trx_line_index IN BINARY_INTEGER,
993 x_direct_rate_result_rec OUT NOCOPY zx_process_results%ROWTYPE,
994 x_direct_rate_result_id OUT NOCOPY NUMBER,
995 x_return_status OUT NOCOPY VARCHAR2) RETURN BOOLEAN IS
996
997 l_tax_service_type_code zx_rules_b.service_type_code%TYPE;
998 l_result BOOLEAN;
999
1000 l_error_buffer VARCHAR2(2000);
1001
1002 BEGIN
1003
1004 IF (g_level_procedure >= g_current_runtime_level ) THEN
1005 FND_LOG.STRING(g_level_procedure,
1006 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable.BEGIN',
1007 'ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable(+)');
1008 END IF;
1009
1010 x_return_status := FND_API.G_RET_STS_SUCCESS;
1011
1012 l_tax_service_type_code := 'DET_DIRECT_RATE';
1013 l_result := FALSE;
1014
1015 ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process(
1016 l_tax_service_type_code,
1017 'TRX_LINE_DIST_TBL',
1018 p_trx_line_index,
1019 p_event_class_rec,
1020 p_tax_id,
1021 NULL,
1022 p_tax_determine_date,
1023 NULL,
1024 NULL,
1025 x_direct_rate_result_rec,
1026 x_return_status,
1027 l_error_buffer);
1028
1029 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1030 IF (g_level_statement >= g_current_runtime_level ) THEN
1031 FND_LOG.STRING(g_level_statement,
1032 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable',
1033 'Incorrect return_status after calling ' ||
1034 'ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process');
1035 END IF;
1036
1037 x_direct_rate_result_rec := NULL;
1038 x_direct_rate_result_id := NULL;
1039
1040 IF (g_level_statement >= g_current_runtime_level ) THEN
1041 FND_LOG.STRING(g_level_statement,
1042 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable',
1043 'RETURN_STATUS = ' || x_return_status);
1044 END IF;
1045 IF (g_level_procedure >= g_current_runtime_level ) THEN
1046 FND_LOG.STRING(g_level_procedure,
1047 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable.END',
1048 'ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable(-)');
1049 END IF;
1050 RETURN FALSE;
1051 END IF;
1052
1053 IF (x_direct_rate_result_rec.alphanumeric_result = 'APPLICABLE') THEN
1054 x_direct_rate_result_id := x_direct_rate_result_rec.result_id;
1055 l_result := TRUE;
1056 ELSE
1057 x_direct_rate_result_id := NULL;
1058 l_result := FALSE;
1059 END IF;
1060
1061 IF (g_level_statement >= g_current_runtime_level ) THEN
1062 FND_LOG.STRING(g_level_statement,
1063 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable',
1064 'RETURN_STATUS = ' || x_return_status);
1065 END IF;
1066
1067 IF (g_level_procedure >= g_current_runtime_level ) THEN
1068 FND_LOG.STRING(g_level_procedure,
1069 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable.END',
1070 'ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable(-)');
1071 END IF;
1072 RETURN l_result;
1073
1074 EXCEPTION
1075 WHEN OTHERS THEN
1076 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1077 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1078 FND_LOG.STRING(g_level_unexpected,
1079 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable',
1080 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
1081 FND_LOG.STRING(g_level_unexpected,
1082 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable.END',
1083 'ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable(-)');
1084 END IF;
1085 RETURN FALSE;
1086 END is_direct_rate_applicable;
1087
1088 ---------------------------------------------------------------------
1089 -- PUBLIC PROCEDURE
1090 -- fetch_tax_lines
1091 --
1092 -- DESCRIPTION
1093 --
1094 -- This procedure fetch detail tax lines from zx_lines
1095 --
1096 -- IN/OUT
1097 -- p_event_class_rec
1098 -- p_tax_line_tbl
1099 -- x_begin_index
1100 -- x_end_index
1101 -- IN p_trx_line_index
1102 -- OUT NOCOPY x_return_status
1103
1104 PROCEDURE fetch_tax_lines (
1105 p_event_class_rec IN zx_api_pub.event_class_rec_type,
1106 p_trx_line_index IN NUMBER,
1107 p_tax_date IN DATE,
1108 p_tax_determine_date IN DATE,
1109 p_tax_point_date IN DATE,
1110 x_begin_index IN OUT NOCOPY NUMBER,
1111 x_end_index IN OUT NOCOPY NUMBER,
1112 x_return_status OUT NOCOPY VARCHAR2) IS
1113
1114 -- fetch manual tax lines for UPDATE
1115 --
1116 CURSOR get_manual_tax_lines IS
1117 SELECT * FROM zx_lines
1118 WHERE trx_id = p_event_class_rec.trx_id
1119 AND application_id = p_event_class_rec.application_id
1120 AND event_class_code = p_event_class_rec.event_class_code
1121 AND entity_code = p_event_class_rec.entity_code
1122 AND trx_line_id =
1123 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1124 AND trx_level_type =
1125 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1126 AND manually_entered_flag = 'Y'
1127 AND cancel_flag <> 'Y'
1128 AND mrc_tax_line_flag = 'N'
1129 AND tax_provider_id IS NULL;
1130
1131 CURSOR get_tax_lines_override_r IS
1132 SELECT * FROM zx_lines
1133 WHERE trx_id = p_event_class_rec.trx_id
1134 AND application_id = p_event_class_rec.application_id
1135 AND event_class_code = p_event_class_rec.event_class_code
1136 AND entity_code = p_event_class_rec.entity_code
1137 AND trx_line_id =
1138 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1139 AND trx_level_type =
1140 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1141 AND tax_provider_id IS NULL
1142 AND cancel_flag <> 'Y'
1143 AND offset_link_to_tax_line_id IS NULL
1144 AND mrc_tax_line_flag = 'N'
1145 AND recalc_required_flag = 'Y'
1146 ORDER BY manually_entered_flag DESC;
1147
1148 CURSOR get_tax_lines_override_ri IS
1149 SELECT * FROM zx_lines
1150 WHERE trx_id = p_event_class_rec.trx_id
1151 AND application_id = p_event_class_rec.application_id
1152 AND event_class_code = p_event_class_rec.event_class_code
1153 AND entity_code = p_event_class_rec.entity_code
1154 AND trx_line_id =
1155 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1156 AND trx_level_type =
1157 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1158 AND tax_provider_id IS NULL
1159 AND cancel_flag <> 'Y'
1160 AND offset_link_to_tax_line_id IS NULL
1161 AND mrc_tax_line_flag = 'N'
1162 AND (recalc_required_flag = 'Y' OR tax_amt_included_flag = 'Y')
1163 ORDER BY manually_entered_flag DESC;
1164
1165 CURSOR get_tax_lines_override_rc IS
1166 SELECT * FROM zx_lines
1167 WHERE trx_id = p_event_class_rec.trx_id
1168 AND application_id = p_event_class_rec.application_id
1169 AND event_class_code = p_event_class_rec.event_class_code
1170 AND entity_code = p_event_class_rec.entity_code
1171 AND trx_line_id =
1172 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1173 AND trx_level_type =
1174 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1175 AND tax_provider_id IS NULL
1176 AND cancel_flag <> 'Y'
1177 AND offset_link_to_tax_line_id IS NULL
1178 AND mrc_tax_line_flag = 'N'
1179 AND (recalc_required_flag = 'Y' OR compounding_tax_flag = 'Y')
1180 ORDER BY manually_entered_flag DESC, compounding_tax_flag DESC,
1181 compounding_dep_tax_flag;
1182
1183 CURSOR get_tax_lines_override_a IS
1184 SELECT * FROM zx_lines
1185 WHERE trx_id = p_event_class_rec.trx_id
1186 AND application_id = p_event_class_rec.application_id
1187 AND event_class_code = p_event_class_rec.event_class_code
1188 AND entity_code = p_event_class_rec.entity_code
1189 AND trx_line_id =
1190 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1191 AND trx_level_type =
1192 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1193 AND tax_provider_id IS NULL
1194 AND cancel_flag <> 'Y'
1195 AND offset_link_to_tax_line_id IS NULL
1196 AND mrc_tax_line_flag = 'N'
1197 AND (recalc_required_flag = 'Y' OR compounding_tax_flag = 'Y'
1198 OR tax_amt_included_flag = 'Y')
1199 ORDER BY manually_entered_flag DESC, compounding_tax_flag DESC,
1200 compounding_dep_tax_flag;
1201
1202 -- fetch all tax lines for migrated transaction
1203 --
1204 CURSOR get_all_tax_lines_migrated IS
1205 SELECT * FROM zx_lines
1206 WHERE trx_id = p_event_class_rec.trx_id
1207 AND application_id = p_event_class_rec.application_id
1208 AND event_class_code = p_event_class_rec.event_class_code
1209 AND entity_code = p_event_class_rec.entity_code
1210 AND trx_line_id =
1211 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
1212 AND trx_level_type =
1213 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
1214 AND tax_provider_id IS NULL
1215 -- AND cancel_flag <> 'Y' -- commented for Bug#13946670
1216 AND offset_link_to_tax_line_id IS NULL
1217 AND mrc_tax_line_flag = 'N'
1218 ORDER BY tax_regime_code, tax, tax_apportionment_line_number;
1219
1220 l_tax_regime_rec zx_global_structures_pkg.tax_regime_rec_type;
1221 l_tax_rec ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
1222 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
1223 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
1224 l_tax_jurisdiction_rec ZX_TDS_UTILITIES_PKG.zx_jur_info_cache_rec_type;
1225
1226 l_current_line_amt zx_lines.line_amt%TYPE;
1227 l_rownum BINARY_INTEGER;
1228 l_error_buffer VARCHAR2(200);
1229
1230 l_tax_class ZX_RATES_B.tax_class%TYPE;
1231
1232 -- bug fix 5525890
1233 l_tax_amt_included_flag_usr zx_lines.tax_amt_included_flag%TYPE;
1234 l_self_assessed_flag_usr zx_lines.self_assessed_flag%TYPE;
1235
1236 BEGIN
1237
1238 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
1239 IF (g_level_procedure >= g_current_runtime_level ) THEN
1240 FND_LOG.STRING(g_level_procedure,
1241 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.BEGIN',
1242 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(+)');
1243 END IF;
1244
1245 x_return_status := FND_API.G_RET_STS_SUCCESS;
1246
1247 -- Bug#5417753- determine tax_class value
1248 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
1249 l_tax_class := 'OUTPUT';
1250 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
1251 l_tax_class := 'INPUT';
1252 END IF;
1253
1254 l_rownum := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
1255
1256 IF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.historical_flag(
1257 p_trx_line_index), 'N') = 'Y'
1258 THEN
1259
1260 -- For migrated transactions
1261 --
1262 -- Fetch all tax lines for migrated transactions.
1263
1264 FOR tax_line_rec IN get_all_tax_lines_migrated LOOP
1265
1266 l_rownum := l_rownum + 1;
1267
1268 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1269 --
1270 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1271
1272 -- populate tax cache : bug 5167406
1273 --
1274 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1275 p_tax_id => tax_line_rec.tax_id,
1276 p_return_status => x_return_status,
1277 p_error_buffer => l_error_buffer);
1278
1279 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1280 IF (g_level_statement >= g_current_runtime_level ) THEN
1281 FND_LOG.STRING(g_level_statement,
1282 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1283 'Incorrect return_status after calling ' ||
1284 'ZX_TDS_UTILITIES_PKG.populate_tax_cache');
1285 FND_LOG.STRING(g_level_statement,
1286 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1287 'RETURN_STATUS = ' || x_return_status);
1288 FND_LOG.STRING(g_level_statement,
1289 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1290 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1291 END IF;
1292 RETURN;
1293 END IF;
1294
1295 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1296 l_rownum).unrounded_tax_amt :=
1297 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt;
1298 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1299 l_rownum).unrounded_taxable_amt :=
1300 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).taxable_amt;
1301
1302 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).cancel_flag,'N') = 'Y' THEN
1303 IF (g_level_statement >= g_current_runtime_level ) THEN
1304 FND_LOG.STRING(g_level_statement,
1305 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1306 'Migrated Tax Line is canceled. Unrounded_Tax_Amt = '||
1307 TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).unrounded_tax_amt)||
1308 ', Unrounded_Taxable_Amt = '||
1309 TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).unrounded_taxable_amt));
1310 END IF;
1311
1312 ELSE
1313 -- 10029625
1314 IF p_tax_determine_date is NOT NULL AND p_tax_date is NOT NULL AND p_tax_point_date is NOT NULL THEN
1315 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1316 l_rownum).tax_determine_date := p_tax_determine_date;
1317 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1318 l_rownum).tax_date := p_tax_date;
1319 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1320 l_rownum).tax_point_date := p_tax_point_date;
1321 END IF;
1322
1323 -- Set tax_amt to null
1324 --
1325 -- bug 7009115
1326 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt IS NOT NULL
1327 THEN
1328
1329 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1330 l_rownum).unrounded_tax_amt :=
1331 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt;
1332
1333 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
1334 END IF;
1335
1336 IF (g_level_statement >= g_current_runtime_level ) THEN
1337 FND_LOG.STRING(g_level_statement,
1338 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1339 'Unrounded_Tax_Amt = '||
1340 TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).unrounded_tax_amt)||
1341 ', Unrounded_Taxable_Amt = '||
1342 TO_CHAR(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).unrounded_taxable_amt));
1343 END IF;
1344
1345 -- bug 6906427: Set summary and detail tax line id to null
1346 --
1347 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' THEN
1348
1349 --Retain the summary tax line for historical invoices always.
1350 --bug#7695189
1351 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1352 -- l_rownum).summary_tax_line_id := NULL;
1353
1354 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1355 p_trx_line_index) <> 'OVERRIDE_TAX' AND
1356 NVL(tax_line_rec.associated_child_frozen_flag, 'N') = 'Y'
1357 THEN
1358
1359 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1360 l_rownum).tax_line_id := NULL;
1361 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1362 l_rownum).associated_child_frozen_flag := NULL;
1363
1364 END IF;
1365 END IF;
1366 END IF;
1367
1368 -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
1369 -- populate process_for_recovery_flag to 'N'. If it is 'Y', check
1370 -- reporting_only_flag to set tax_recovery_flag
1371 --
1372
1373 /*
1374 * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
1375 *
1376 * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
1377 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1378 * l_rownum).process_for_recovery_flag := 'N';
1379 * ELSE
1380 * IF tax_line_rec.reporting_only_flag <> 'Y' THEN
1381 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1382 * l_rownum).process_for_recovery_flag := 'Y';
1383 * ELSE
1384 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1385 * l_rownum).process_for_recovery_flag := 'N';
1386 * END IF;
1387 * END IF;
1388 */
1389
1390 IF (x_begin_index IS NULL) THEN
1391 x_begin_index := l_rownum;
1392 END IF;
1393 END LOOP; -- tax_line_rec IN get_all_tax_lines_migrated
1394
1395 ELSIF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1396 p_trx_line_index) = 'OVERRIDE_TAX'
1397 THEN
1398
1399 -- For OVERRIDE_TAX
1400 --
1401
1402 IF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
1403 p_trx_line_index), 'N') = 'N' AND
1404 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'N' OR
1405 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'Y' AND
1406 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
1407 p_trx_line_index), 'N') = 'N'))
1408 THEN
1409
1410 -- For OVERRIDE_TAX, fetch all tax lines with recalc_required_flag = 'Y'.
1411 -- Do not need to check the tax lines with compounding_tax_flag = 'Y', or
1412 -- tax_amt_included_flag = 'Y'
1413 --
1414 FOR tax_line_rec IN get_tax_lines_override_r LOOP
1415
1416 l_rownum := l_rownum + 1;
1417
1418 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1419 --
1420 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1421
1422 -- populate tax cache : bug 5167406
1423 --
1424 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1425 p_tax_id => tax_line_rec.tax_id,
1426 p_return_status => x_return_status,
1427 p_error_buffer => l_error_buffer);
1428
1429 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1430 IF (g_level_statement >= g_current_runtime_level ) THEN
1431 FND_LOG.STRING(g_level_statement,
1432 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1433 'Incorrect return_status after calling ' ||
1434 'ZX_TDS_UTILITIES_PKG.populate_tax_cache');
1435 FND_LOG.STRING(g_level_statement,
1436 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1437 'RETURN_STATUS = ' || x_return_status);
1438 FND_LOG.STRING(g_level_statement,
1439 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1440 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1441 END IF;
1442 RETURN;
1443 END IF;
1444
1445 -- copy tax_amt to unrounded_tax_amt, set tax_amt to NULL
1446 -- comment out for bug 4569739
1447 -- uncommented out for bug 5525890
1448 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
1449
1450 -- Bug 3359512: set summary_tax_line_id to NULL
1451 --
1452 -- bug 4569739: set summary_tax_line_id to null except last_manual_entry
1453 -- is 'TAX_AMOUNT' or 'TAX_RATE'
1454 -- Bug 6402744 - Not able to change rate name in tax details UI
1455 -- as summary tax line id is not regenerated.
1456 -- IF tax_line_rec.last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE') THEN
1457
1458 -- bug 6906427: Set summary and detail tax line id to null
1459 --
1460 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' AND
1461 NVL(tax_line_rec.associated_child_frozen_flag, 'N') <> 'Y' THEN
1462 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1463 l_rownum).summary_tax_line_id := NULL;
1464 END IF;
1465
1466 -- END IF;
1467
1468 -- Set x_begin_index
1469 --
1470 IF (x_begin_index IS NULL) THEN
1471 x_begin_index := l_rownum;
1472 END IF;
1473
1474 /*
1475 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1476 l_rownum).last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1477 THEN
1478 */
1479 -- Bugfix 5347691: populate hq estb reg number for manually entered tax lines
1480
1481 IF (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1482 l_rownum).manually_entered_flag = 'Y' and
1483 (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1484 l_rownum).hq_estb_reg_number is null or
1485 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1486 l_rownum).tax_registration_number is null)) or
1487 (ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1488 l_rownum).last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE'))
1489 THEN
1490 -- bug fix 5525890
1491 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1492 l_rownum).manually_entered_flag = 'Y' THEN
1493
1494 -- if etax failed to rederive the registration information for
1495 -- the manually entered tax lines, the inclusive flag will be reset
1496 -- to NULL and the self_assessment_flag will be reset to N.
1497 -- For manual entered tax lines, user entered value for the
1498 -- inclusive flag and the self_assessment_flag should be honored.
1499
1500 l_tax_amt_included_flag_usr :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1501 l_rownum).tax_amt_included_flag;
1502 l_self_assessed_flag_usr :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1503 l_rownum).self_assessed_flag;
1504 END IF;
1505 -- bug fix 5525890 end
1506
1507 populate_registration_info(
1508 p_event_class_rec => p_event_class_rec,
1509 p_trx_line_index => p_trx_line_index,
1510 p_rownum => l_rownum,
1511 p_def_reg_type => NULL,
1512 p_reg_rule_flg => NULL,
1513 p_tax_determine_date =>
1514 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1515 l_rownum).tax_determine_date,
1516 x_return_status => x_return_status);
1517
1518 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1519 IF (g_level_statement >= g_current_runtime_level ) THEN
1520 FND_LOG.STRING(g_level_statement,
1521 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1522 'Incorrect return_status after calling ' ||
1523 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
1524 FND_LOG.STRING(g_level_statement,
1525 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1526 'RETURN_STATUS = ' || x_return_status);
1527 FND_LOG.STRING(g_level_statement,
1528 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1529 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1530 END IF;
1531 RETURN;
1532 END IF;
1533
1534 -- bug fix 5525890
1535 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1536 l_rownum).manually_entered_flag = 'Y' THEN
1537 -- if etax failed to rederive the registration information for
1538 -- the manually entered tax lines, the inclusive flag will be reset
1539 -- to NULL and the self_assessment_flag will be reset to N.
1540 -- For manual entered tax lines, user entered value for the
1541 -- inclusive flag and the self_assessment_flag should be honored.
1542
1543 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1544 l_rownum).tax_amt_included_flag := l_tax_amt_included_flag_usr;
1545 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1546 l_rownum).self_assessed_flag := l_self_assessed_flag_usr;
1547 END IF;
1548 -- bug fix 5525890 end
1549
1550 END IF; -- last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1551
1552 END LOOP;
1553
1554 ELSIF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
1555 p_trx_line_index), 'N') = 'N' AND
1556 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'Y' AND
1557 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
1558 p_trx_line_index), 'N') = 'Y')
1559 THEN
1560
1561 -- For OVERRIDE_TAX, Need to fetch all tax lines with
1562 -- recalc_required_flag = 'Y', or tax_amt_included_flag = 'Y'.
1563 -- Do not need to fetch the tax lines with compounding_tax_flag = 'Y'.
1564 --
1565 FOR tax_line_rec IN get_tax_lines_override_ri LOOP
1566
1567 l_rownum := l_rownum + 1;
1568
1569 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1570 --
1571 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1572
1573 -- populate tax cache : bug 5167406
1574 --
1575 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1576 p_tax_id => tax_line_rec.tax_id,
1577 p_return_status => x_return_status,
1578 p_error_buffer => l_error_buffer);
1579
1580 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1581 IF (g_level_statement >= g_current_runtime_level ) THEN
1582 FND_LOG.STRING(g_level_statement,
1583 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1584 'Incorrect return_status after calling ' ||
1585 'ZX_TDS_UTILITIES_PKG.populate_tax_cache');
1586 FND_LOG.STRING(g_level_statement,
1587 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1588 'RETURN_STATUS = ' || x_return_status);
1589 FND_LOG.STRING(g_level_statement,
1590 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1591 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1592 END IF;
1593 RETURN;
1594 END IF;
1595
1596 -- copy tax_amt to unrounded_tax_amt, set tax_amt to NULL
1597 -- comment out for bug 4569739
1598 -- uncommented out for bug 5525890
1599 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
1600
1601 -- Bug 3359512: set summary_tax_line_id to NULL
1602 --
1603 -- bug 4569739: set summary_tax_line_id to null except last_manual_entry
1604 -- is 'TAX_AMOUNT' or 'TAX_RATE'
1605 --
1606 --IF tax_line_rec.last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE') THEN
1607 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1608 -- l_rownum).summary_tax_line_id := NULL;
1609 --END IF;
1610
1611 -- bug 6906427: Set summary and detail tax line id to null
1612 --
1613 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' THEN
1614 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1615 l_rownum).summary_tax_line_id := NULL;
1616 END IF;
1617
1618 -- Set x_begin_index
1619 --
1620 IF (x_begin_index IS NULL) THEN
1621 x_begin_index := l_rownum;
1622 END IF;
1623
1624 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1625 l_rownum).last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1626 THEN
1627 populate_registration_info(
1628 p_event_class_rec => p_event_class_rec,
1629 p_trx_line_index => p_trx_line_index,
1630 p_rownum => l_rownum,
1631 p_def_reg_type => NULL,
1632 p_reg_rule_flg => NULL,
1633 p_tax_determine_date =>
1634 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1635 l_rownum).tax_determine_date,
1636 x_return_status => x_return_status);
1637
1638 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1639 IF (g_level_statement >= g_current_runtime_level ) THEN
1640 FND_LOG.STRING(g_level_statement,
1641 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1642 'Incorrect return_status after calling ' ||
1643 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
1644 FND_LOG.STRING(g_level_statement,
1645 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1646 'RETURN_STATUS = ' || x_return_status);
1647 FND_LOG.STRING(g_level_statement,
1648 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1649 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1650 END IF;
1651 RETURN;
1652 END IF;
1653 END IF; -- last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1654
1655 END LOOP;
1656 ELSIF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
1657 p_trx_line_index), 'N') = 'Y' AND
1658 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'N' OR
1659 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'Y' AND
1660 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
1661 p_trx_line_index), 'N') = 'N'))
1662 THEN
1663
1664 -- For OVERRIDE_TAX, Need to fetch all tax lines with
1665 -- recalc_required_flag = 'Y', or compounding_tax_flag = 'Y'.
1666 -- Do not need to fetch the tax lines with tax_amt_included_flag = 'Y'.
1667 --
1668 FOR tax_line_rec IN get_tax_lines_override_rc LOOP
1669
1670 l_rownum := l_rownum + 1;
1671
1672 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1673 --
1674 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1675
1676 -- populate tax cache : bug 5167406
1677 --
1678 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1679 p_tax_id => tax_line_rec.tax_id,
1680 p_return_status => x_return_status,
1681 p_error_buffer => l_error_buffer);
1682
1683 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1684 IF (g_level_statement >= g_current_runtime_level ) THEN
1685 FND_LOG.STRING(g_level_statement,
1686 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1687 'Incorrect return_status after calling ' ||
1688 'ZX_TDS_UTILITIES_PKG.populate_tax_cache');
1689 FND_LOG.STRING(g_level_statement,
1690 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1691 'RETURN_STATUS = ' || x_return_status);
1692 FND_LOG.STRING(g_level_statement,
1693 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1694 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1695 END IF;
1696 RETURN;
1697 END IF;
1698
1699 -- copy tax_amt to unrounded_tax_amt, set tax_amt to NULL
1700 -- comment out for bug 4569739
1701 -- uncommented out for bug 5525890
1702 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
1703
1704 -- Bug 3359512: set summary_tax_line_id to NULL
1705 --
1706 -- bug 4569739: set summary_tax_line_id to null except last_manual_entry
1707 -- is 'TAX_AMOUNT' or 'TAX_RATE'
1708 --
1709 --IF tax_line_rec.last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE') THEN
1710 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1711 -- l_rownum).summary_tax_line_id := NULL;
1712 --END IF;
1713
1714 -- bug 6906427: Set summary and detail tax line id to null
1715 --
1716 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' THEN
1717 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1718 l_rownum).summary_tax_line_id := NULL;
1719 END IF;
1720
1721 -- Set x_begin_index
1722 --
1723 IF (x_begin_index IS NULL) THEN
1724 x_begin_index := l_rownum;
1725 END IF;
1726
1727 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1728 l_rownum).last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1729 THEN
1730 populate_registration_info(
1731 p_event_class_rec => p_event_class_rec,
1732 p_trx_line_index => p_trx_line_index,
1733 p_rownum => l_rownum,
1734 p_def_reg_type => NULL,
1735 p_reg_rule_flg => NULL,
1736 p_tax_determine_date =>
1737 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1738 l_rownum).tax_determine_date,
1739 x_return_status => x_return_status);
1740
1741 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1742 IF (g_level_statement >= g_current_runtime_level ) THEN
1743 FND_LOG.STRING(g_level_statement,
1744 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1745 'Incorrect return_status after calling ' ||
1746 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
1747 FND_LOG.STRING(g_level_statement,
1748 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1749 'RETURN_STATUS = ' || x_return_status);
1750 FND_LOG.STRING(g_level_statement,
1751 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1752 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1753 END IF;
1754 RETURN;
1755 END IF;
1756 END IF; -- last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1757
1758 END LOOP;
1759
1760 ELSIF NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
1761 p_trx_line_index), 'N') = 'Y' AND
1762 (p_event_class_rec.ctrl_eff_ovrd_calc_lines_flag = 'Y' AND
1763 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
1764 p_trx_line_index), 'N') = 'Y')
1765 THEN
1766
1767 -- For OVERRIDE_TAX, Need to fetch all tax lines with
1768 -- recalc_required_flag = 'Y', or compounding_tax_flag = 'Y',
1769 -- or tax_amt_included_flag = 'Y'
1770 --
1771 FOR tax_line_rec IN get_tax_lines_override_a LOOP
1772
1773 l_rownum := l_rownum + 1;
1774
1775 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1776 --
1777 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1778
1779 -- populate tax cache : bug 5167406
1780 --
1781 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1782 p_tax_id => tax_line_rec.tax_id,
1783 p_return_status => x_return_status,
1784 p_error_buffer => l_error_buffer);
1785
1786 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1787 IF (g_level_statement >= g_current_runtime_level ) THEN
1788 FND_LOG.STRING(g_level_statement,
1789 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1790 'Incorrect return_status after calling ' ||
1791 'ZX_TDS_UTILITIES_PKG.populate_tax_cache');
1792 FND_LOG.STRING(g_level_statement,
1793 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1794 'RETURN_STATUS = ' || x_return_status);
1795 FND_LOG.STRING(g_level_statement,
1796 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1797 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1798 END IF;
1799 RETURN;
1800 END IF;
1801
1802 -- copy tax_amt to unrounded_tax_amt, set tax_amt to NULL
1803 -- comment out for bug 4569739
1804 -- uncommented out for bug 5525890
1805 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
1806
1807 -- Bug 3359512: set summary_tax_line_id to NULL
1808 --
1809 -- bug 4569739: set summary_tax_line_id to null except last_manual_entry
1810 -- is 'TAX_AMOUNT' or 'TAX_RATE'
1811 --
1812 -- IF tax_line_rec.last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE') THEN
1813 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1814 -- l_rownum).summary_tax_line_id := NULL;
1815 -- END IF;
1816
1817 -- bug 6906427: Set summary and detail tax line id to null
1818 --
1819 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' THEN
1820 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1821 l_rownum).summary_tax_line_id := NULL;
1822 END IF;
1823
1824 -- Set x_begin_index
1825 --
1826 IF (x_begin_index IS NULL) THEN
1827 x_begin_index := l_rownum;
1828 END IF;
1829
1830 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1831 l_rownum).last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1832 THEN
1833 populate_registration_info(
1834 p_event_class_rec => p_event_class_rec,
1835 p_trx_line_index => p_trx_line_index,
1836 p_rownum => l_rownum,
1837 p_def_reg_type => NULL,
1838 p_reg_rule_flg => NULL,
1839 p_tax_determine_date =>
1840 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1841 l_rownum).tax_determine_date,
1842 x_return_status => x_return_status);
1843
1844 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1845 IF (g_level_statement >= g_current_runtime_level ) THEN
1846 FND_LOG.STRING(g_level_statement,
1847 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1848 'Incorrect return_status after calling ' ||
1849 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
1850 FND_LOG.STRING(g_level_statement,
1851 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1852 'RETURN_STATUS = ' || x_return_status);
1853 FND_LOG.STRING(g_level_statement,
1854 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1855 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1856 END IF;
1857 RETURN;
1858 END IF;
1859 END IF; -- last_manual_entry NOT IN ('TAX_AMOUNT', 'TAX_RATE')
1860
1861 END LOOP;
1862 END IF;
1863 ELSIF ((ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1864 p_trx_line_index) = 'UPDATE')
1865 OR
1866 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_event_type_code(
1867 p_trx_line_index) ='UPDATE' AND
1868 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1869 p_trx_line_index) = 'LINE_INFO_TAX_ONLY'
1870 OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
1871 p_trx_line_index) = 'CREATE_WITH_TAX') -- Bug 8205359
1872 )) THEN -- Bug 5291394
1873
1874 -- For Update
1875 --
1876
1877 FOR tax_line_rec IN get_manual_tax_lines LOOP
1878
1879 l_rownum := l_rownum + 1;
1880
1881 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
1882 --
1883 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
1884
1885 -- 10029625
1886 IF p_tax_determine_date is NOT NULL AND p_tax_date is NOT NULL AND p_tax_point_date is NOT NULL THEN
1887 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1888 l_rownum).tax_determine_date := p_tax_determine_date;
1889 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1890 l_rownum).tax_date := p_tax_date;
1891 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1892 l_rownum).tax_point_date := p_tax_point_date;
1893 END IF;
1894
1895 -- bug 7008562: Per Harsh and Desh, do not do validation for PO taxes
1896 -- that are not applicable in current AP invoice
1897 --
1898 -- set x_begin_index
1899 --
1900 -- Bug 8220741
1901 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
1902 p_tax_id => tax_line_rec.tax_id,
1903 p_return_status => x_return_status,
1904 p_error_buffer => l_error_buffer);
1905 -- End Bug 8220741
1906
1907 IF (x_begin_index is NULL) THEN
1908 x_begin_index := l_rownum;
1909 END IF;
1910
1911 IF tax_line_rec.other_doc_source = 'REFERENCE' AND
1912 tax_line_rec.unrounded_tax_amt = 0 AND
1913 tax_line_rec.unrounded_taxable_amt = 0 AND
1914 tax_line_rec.manually_entered_flag = 'Y' AND
1915 tax_line_rec.freeze_until_overridden_flag ='Y'
1916 THEN
1917
1918 --Start of Bug 7383041
1919 --NULL;
1920 populate_registration_info(
1921 p_event_class_rec => p_event_class_rec,
1922 p_trx_line_index => p_trx_line_index,
1923 p_rownum => l_rownum,
1924 p_def_reg_type => NULL,
1925 p_reg_rule_flg => NULL,
1926 p_tax_determine_date => p_tax_determine_date,
1927 x_return_status => x_return_status);
1928
1929 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1930 IF (g_level_statement >= g_current_runtime_level ) THEN
1931 FND_LOG.STRING(g_level_statement,
1932 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1933 'Incorrect return_status after calling ' ||
1934 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
1935 FND_LOG.STRING(g_level_statement,
1936 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1937 'RETURN_STATUS = ' || x_return_status);
1938 FND_LOG.STRING(g_level_statement,
1939 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1940 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1941 END IF;
1942 RETURN;
1943 END IF;
1944 --End of Bug 7383041
1945 ELSE
1946 -- validate and populate tax_regime_id
1947 --
1948 ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
1949 tax_line_rec.tax_regime_code,
1950 p_tax_determine_date,
1951 l_tax_regime_rec,
1952 x_return_status,
1953 l_error_buffer);
1954
1955 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1956 IF (g_level_statement >= g_current_runtime_level ) THEN
1957 FND_LOG.STRING(g_level_statement,
1958 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1959 'Incorrect return_status after calling ' ||
1960 'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
1961 FND_LOG.STRING(g_level_statement,
1962 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1963 'RETURN_STATUS = ' || x_return_status);
1964 FND_LOG.STRING(g_level_statement,
1965 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1966 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1967 END IF;
1968 RETURN;
1969 END IF;
1970
1971 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
1972 l_rownum).tax_regime_id :=
1973 l_tax_regime_rec.tax_regime_id;
1974
1975 -- validate and populate tax_id
1976 --
1977 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
1978 tax_line_rec.tax_regime_code,
1979 tax_line_rec.tax,
1980 p_tax_determine_date,
1981 l_tax_rec,
1982 x_return_status,
1983 l_error_buffer);
1984
1985 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1986 IF (g_level_statement >= g_current_runtime_level ) THEN
1987 FND_LOG.STRING(g_level_statement,
1988 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1989 'Incorrect return_status after calling ' ||
1990 'ZX_TDS_UTILITIES_PKG.get_tax_cache_info');
1991 FND_LOG.STRING(g_level_statement,
1992 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
1993 'RETURN_STATUS = ' || x_return_status);
1994 FND_LOG.STRING(g_level_statement,
1995 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
1996 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
1997 END IF;
1998 RETURN;
1999 END IF;
2000
2001 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2002 l_rownum).tax_id := l_tax_rec.tax_id;
2003
2004 --
2005 -- validate and populate tax_jurisdiction_id
2006 --
2007 IF tax_line_rec.tax_jurisdiction_code is not NULL THEN
2008 ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
2009 tax_line_rec.tax_regime_code,
2010 tax_line_rec.tax,
2011 tax_line_rec.tax_jurisdiction_code,
2012 p_tax_determine_date,
2013 l_tax_jurisdiction_rec,
2014 x_return_status,
2015 l_error_buffer);
2016
2017 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2018 IF (g_level_statement >= g_current_runtime_level ) THEN
2019 FND_LOG.STRING(g_level_statement,
2020 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2021 'Incorrect return_status after calling ' ||
2022 'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info');
2023 FND_LOG.STRING(g_level_statement,
2024 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2025 'RETURN_STATUS = ' || x_return_status);
2026 FND_LOG.STRING(g_level_statement,
2027 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2028 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2029 END IF;
2030 RETURN;
2031 END IF;
2032
2033 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2034 l_rownum).tax_jurisdiction_id :=
2035 l_tax_jurisdiction_rec.tax_jurisdiction_id;
2036 END IF;
2037
2038
2039 -- validate and populate tax_status_id
2040 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
2041 tax_line_rec.tax,
2042 tax_line_rec.tax_regime_code,
2043 tax_line_rec.tax_status_code,
2044 p_tax_determine_date,
2045 l_tax_status_rec,
2046 x_return_status,
2047 l_error_buffer);
2048
2049 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2050 IF (g_level_statement >= g_current_runtime_level ) THEN
2051 FND_LOG.STRING(g_level_statement,
2052 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2053 'Incorrect return_status after calling ' ||
2054 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
2055 FND_LOG.STRING(g_level_statement,
2056 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2057 'RETURN_STATUS = ' || x_return_status);
2058 FND_LOG.STRING(g_level_statement,
2059 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2060 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2061 END IF;
2062 RETURN;
2063 END IF;
2064
2065 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2066 l_rownum).tax_status_id := l_tax_status_rec.tax_status_id;
2067
2068 -- validate and populate tax_rate_id
2069 --
2070 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
2071 tax_line_rec.tax_regime_code,
2072 tax_line_rec.tax,
2073 tax_line_rec.tax_jurisdiction_code,
2074 tax_line_rec.tax_status_code,
2075 tax_line_rec.tax_rate_code,
2076 p_tax_determine_date,
2077 l_tax_class,
2078 l_tax_rate_rec,
2079 x_return_status,
2080 l_error_buffer);
2081
2082 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2083 IF (g_level_statement >= g_current_runtime_level ) THEN
2084 FND_LOG.STRING(g_level_statement,
2085 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2086 'Incorrect return_status after calling ' ||
2087 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info');
2088 FND_LOG.STRING(g_level_statement,
2089 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2090 'RETURN_STATUS = ' || x_return_status);
2091 FND_LOG.STRING(g_level_statement,
2092 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2093 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2094 END IF;
2095 RETURN;
2096 END IF;
2097
2098 -- bug 6906427: Set summary and detail tax line id to null
2099 --
2100 IF NVL(tax_line_rec.tax_only_line_flag, 'N') <> 'Y' THEN
2101
2102 IF tax_line_rec.tax_rate_id <> l_tax_rate_rec.tax_rate_id THEN
2103
2104 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2105 l_rownum).summary_tax_line_id := NULL;
2106
2107 IF NVL(tax_line_rec.associated_child_frozen_flag, 'N') = 'Y' THEN
2108
2109 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2110 l_rownum).tax_line_id := NULL;
2111 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2112 l_rownum).associated_child_frozen_flag := NULL;
2113 END IF;
2114 END IF;
2115 END IF;
2116
2117 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2118 l_rownum).tax_rate_id := l_tax_rate_rec.tax_rate_id;
2119
2120
2121 -- when Recalculate Manual Tax Lines flag is 'Y',
2122 -- prorate tax amount and taxable amount
2123 --
2124 IF p_event_class_rec.allow_manual_lin_recalc_flag ='Y' THEN
2125
2126 l_current_line_amt :=
2127 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt( p_trx_line_index);
2128
2129 IF tax_line_rec.line_amt <> 0 THEN
2130 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2131 l_rownum).unrounded_tax_amt :=
2132 tax_line_rec.unrounded_tax_amt *
2133 l_current_line_amt/tax_line_rec.line_amt;
2134 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2135 l_rownum).unrounded_taxable_amt :=
2136 tax_line_rec.unrounded_taxable_amt *
2137 l_current_line_amt/tax_line_rec.line_amt;
2138 ELSIF l_current_line_amt <> 0 AND -- Bug 13821717
2139 tax_line_rec.tax_rate <> 0 AND
2140 tax_line_rec.unrounded_taxable_amt = 0 THEN
2141 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2142 l_rownum).unrounded_tax_amt := l_current_line_amt * tax_line_rec.tax_rate / 100;
2143 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2144 l_rownum).unrounded_taxable_amt := l_current_line_amt;
2145 END IF;
2146
2147 -- set tax_amt to NULL
2148 --
2149 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt := NULL;
2150
2151 END IF;
2152
2153 -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
2154 -- populate process_for_recovery_flag to 'N'. If it is 'Y', check
2155 -- reporting_only_flag to set tax_recovery_flag
2156 --
2157 /*
2158 * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
2159 *
2160 * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
2161 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2162 * l_rownum).process_for_recovery_flag := 'N';
2163 * ELSE
2164 * IF tax_rec.reporting_only_flag <> 'Y' THEN
2165 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2166 * l_rownum).process_for_recovery_flag := 'Y';
2167 * ELSE
2168 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2169 * l_rownum).process_for_recovery_flag := 'N';
2170 * END IF;
2171 * END IF;
2172 */
2173
2174 -- set x_begin_index
2175 --
2176 IF (x_begin_index is NULL) THEN
2177 x_begin_index := l_rownum;
2178 END IF;
2179
2180
2181 -- bug fix 5525890
2182 -- if etax failed to rederive the registration information for
2183 -- the manually entered tax lines, the inclusive flag will be reset
2184 -- to NULL and the self_assessment_flag will be reset to N.
2185 -- For manual entered tax lines, user entered value for the
2186 -- inclusive flag and the self_assessment_flag should be honored.
2187
2188 l_tax_amt_included_flag_usr :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2189 l_rownum).tax_amt_included_flag;
2190 l_self_assessed_flag_usr :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2191 l_rownum).self_assessed_flag;
2192 -- bug fix 5525890 end
2193 populate_registration_info(
2194 p_event_class_rec => p_event_class_rec,
2195 p_trx_line_index => p_trx_line_index,
2196 p_rownum => l_rownum,
2197 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
2198 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
2199 p_tax_determine_date => p_tax_determine_date,
2200 x_return_status => x_return_status);
2201
2202 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2203 IF (g_level_statement >= g_current_runtime_level ) THEN
2204 FND_LOG.STRING(g_level_statement,
2205 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2206 'Incorrect return_status after calling ' ||
2207 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
2208 FND_LOG.STRING(g_level_statement,
2209 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2210 'RETURN_STATUS = ' || x_return_status);
2211 FND_LOG.STRING(g_level_statement,
2212 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2213 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2214 END IF;
2215 RETURN;
2216 END IF;
2217
2218 -- bug fix 5525890
2219 -- if etax failed to rederive the registration information for
2220 -- the manually entered tax lines, the inclusive flag will be reset
2221 -- to NULL and the self_assessment_flag will be reset to N.
2222 -- For manual entered tax lines, user entered value for the
2223 -- inclusive flag and the self_assessment_flag should be honored.
2224
2225 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2226 l_rownum).tax_amt_included_flag := l_tax_amt_included_flag_usr;
2227 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2228 l_rownum).self_assessed_flag := l_self_assessed_flag_usr;
2229 -- bug fix 5525890 end
2230
2231 END IF; -- bug 7008562
2232 END LOOP; -- tax_rec IN get_manual_tax_lines
2233 END IF; -- line_level_action, tax_event_type_code
2234
2235 -- set x_end_index
2236 --
2237 IF (x_begin_index IS NOT NULL) THEN
2238 x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
2239 END IF;
2240
2241 --Besides update action, also need to populate the trx line info onto tax lines for
2242 --manually entered tax lines.
2243 --IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2244 -- p_trx_line_index) = 'UPDATE' THEN
2245 -- copy transaction info to manual tax lines
2246 --
2247 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines (p_trx_line_index,
2248 x_begin_index,
2249 x_end_index,
2250 x_return_status,
2251 l_error_buffer );
2252
2253 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2254 IF (g_level_statement >= g_current_runtime_level ) THEN
2255 FND_LOG.STRING(g_level_statement,
2256 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2257 'Incorrect RETURN_STATUS after calling '||
2258 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
2259 FND_LOG.STRING(g_level_statement,
2260 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2261 'RETURN_STATUS = ' || x_return_status);
2262 FND_LOG.STRING(g_level_statement,
2263 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2264 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2265 END IF;
2266 RETURN;
2267 END IF;
2268
2269 IF (g_level_procedure >= g_current_runtime_level ) THEN
2270 FND_LOG.STRING(g_level_procedure,
2271 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2272 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2273 END IF;
2274
2275 EXCEPTION
2276 WHEN OTHERS THEN
2277 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2278
2279 IF (g_level_unexpected >= g_current_runtime_level ) THEN
2280 FND_LOG.STRING(g_level_unexpected,
2281 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
2282 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
2283 FND_LOG.STRING(g_level_unexpected,
2284 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
2285 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
2286 END IF;
2287
2288 END fetch_tax_lines;
2289
2290 ----------------------------------------------------------------------
2291 -- PUBLIC PROCEDURE
2292 -- get_applicable_taxes
2293 --
2294 -- DESCRIPTION
2295 --
2296 -- This procedure returns applicable taxes
2297 --
2298 -- IN/OUT
2299 -- p_summmary_tax_line_tbl
2300 -- p_event_class_rec
2301 -- IN p_tax_regime_code
2302 -- p_trx_line_index
2303 -- p_tax_determine_date
2304 -- p_total_trx_amount
2305 -- p_summary_line_index
2306 -- OUT NOCOPY x_return_status
2307 -- x_begin_index
2308 -- x_end_index
2309
2310 PROCEDURE get_applicable_taxes (
2311 p_tax_regime_id IN zx_regimes_b.tax_regime_id%TYPE,
2312 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
2313 p_trx_line_index IN BINARY_INTEGER,
2314 p_event_class_rec IN zx_api_pub.event_class_rec_type,
2315 p_tax_date IN DATE,
2316 p_tax_determine_date IN DATE,
2317 p_tax_point_date IN DATE,
2318 x_begin_index IN OUT NOCOPY BINARY_INTEGER,
2319 x_end_index IN OUT NOCOPY BINARY_INTEGER,
2320 x_return_status OUT NOCOPY VARCHAR2) IS
2321
2322 -- local varaibles
2323 --
2324 l_new_row_num NUMBER;
2325 l_place_of_supply VARCHAR2(30);
2326 l_place_of_supply_type_code zx_taxes_b.def_place_of_supply_type_code%TYPE;
2327 l_place_of_supply_result_id NUMBER;
2328 l_applicability_result_id NUMBER;
2329
2330 l_applicability_result zx_process_results.alphanumeric_result%TYPE;
2331
2332 l_direct_rate_result_id NUMBER;
2333
2334 l_direct_rate_result_rec zx_process_results%ROWTYPE;
2335 l_tax_applicable BOOLEAN;
2336
2337 /* Commented out as part of restructuring for STCC (bug 4959835)
2338 l_last_manual_entry zx_lines.last_manual_entry%TYPE;
2339 l_tax_status_code zx_lines.tax_status_code%TYPE;
2340 l_orig_tax_status_id zx_lines.orig_tax_status_id%TYPE;
2341 l_orig_tax_status_code zx_lines.orig_tax_status_code%TYPE;
2342 l_tax_rate_code zx_lines.tax_rate_code%TYPE;
2343 l_tax_rate zx_lines.tax_rate%TYPE;
2344 l_orig_tax_rate_id zx_lines.orig_tax_rate_id%TYPE;
2345 l_orig_tax_rate_code zx_lines.orig_tax_rate_code%TYPE;
2346 l_orig_tax_rate zx_lines.orig_tax_rate%TYPE;
2347 l_tax_amt zx_lines.tax_amt%TYPE;
2348 l_orig_tax_amt zx_lines.orig_tax_amt%TYPE;
2349 l_taxable_amt zx_lines.taxable_amt%TYPE;
2350 l_orig_taxable_amt zx_lines.orig_taxable_amt%TYPE;
2351 l_line_amt zx_lines.line_amt%TYPE;
2352 l_current_line_amt zx_lines.line_amt%TYPE;
2353 */
2354
2355 l_self_assessed_flag zx_lines.self_assessed_flag%TYPE;
2356 l_tax_amt_included_flag zx_lines.tax_amt_included_flag%TYPE;
2357 l_tax_jurisdiction_id zx_lines.tax_jurisdiction_id%TYPE;
2358 l_tax_jurisdiction_code zx_lines.tax_jurisdiction_code%TYPE;
2359 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
2360 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
2361
2362 l_error_buffer VARCHAR2(200);
2363 l_tax_tbl_subscript NUMBER;
2364
2365 l_trx_line_id NUMBER;
2366 l_trx_level_type zx_lines.trx_level_type%TYPE;
2367 l_begin_index BINARY_INTEGER;
2368 l_end_index BINARY_INTEGER;
2369
2370 /* Bug4959835: Moved to handle_update_scenarios
2371 l_unrounded_taxable_amt zx_lines.unrounded_taxable_amt%TYPE;
2372 l_unrounded_tax_amt zx_lines.unrounded_tax_amt%TYPE;
2373 l_cal_tax_amt zx_lines.cal_tax_amt%TYPE;
2374 */
2375
2376 l_jur_index NUMBER;
2377
2378 l_jurisdictions_found VARCHAR2(1);
2379 l_jurisdiction_rec ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_type;
2380 l_jurisdiction_rec_tbl ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_tbl_type;
2381 l_tax_class zx_rates_b.tax_class%TYPE;
2382 l_temp_num NUMBER;
2383
2384 -- Added for bug 10184087 --
2385 l_ref_doc_tax_applicable BOOLEAN;
2386 l_tmp_tax_apportionmt_ln_num NUMBER;
2387
2388 l_cancel_tax_line BOOLEAN; -- Added for Bug#13110309
2389
2390 -- cursor to order the jurisdictions in the GT
2391 CURSOR c_get_jurisdiction_from_gt(
2392 c_tax_regime_code VARCHAR2,
2393 c_tax VARCHAR2)IS
2394 SELECT tax_jurisdiction_id,
2395 tax_jurisdiction_code,
2396 tax_regime_code,
2397 tax,
2398 precedence_level
2399 FROM zx_jurisdictions_gt
2400 WHERE tax_regime_code = c_tax_regime_code
2401 AND tax = c_tax
2402 ORDER BY precedence_level;
2403
2404 -- This cursor gets all the taxes for a regime
2405 --
2406 CURSOR get_all_taxes_for_regime_cur(c_tax_class zx_rates_b.tax_class%TYPE) IS
2407 SELECT tax_id,
2408 tax,
2409 tax_regime_code,
2410 tax_type_code,
2411 tax_precision,
2412 minimum_accountable_unit,
2413 Rounding_Rule_Code,
2414 Tax_Status_Rule_Flag,
2415 Tax_Rate_Rule_Flag,
2416 Place_Of_Supply_Rule_Flag,
2417 Applicability_Rule_Flag,
2418 Tax_Calc_Rule_Flag,
2419 Taxable_Basis_Rule_Flag,
2420 def_tax_calc_formula,
2421 def_taxable_basis_formula,
2422 Reporting_Only_Flag,
2423 tax_currency_code,
2424 Def_Place_Of_Supply_Type_Code,
2425 Def_Registr_Party_Type_Code,
2426 Registration_Type_Rule_Flag,
2427 Direct_Rate_Rule_Flag,
2428 Def_Inclusive_Tax_Flag,
2429 effective_from,
2430 effective_to,
2431 compounding_precedence,
2432 Has_Other_Jurisdictions_Flag,
2433 Live_For_Processing_Flag,
2434 Regn_Num_Same_As_Le_Flag,
2435 applied_amt_handling_flag,
2436 exchange_rate_type,
2437 applicable_by_default_flag,
2438 record_type_code,
2439 tax_exmpt_cr_method_code,
2440 tax_exmpt_source_tax,
2441 legal_reporting_status_def_val,
2442 def_rec_settlement_option_code,
2443 zone_geography_type,
2444 override_geography_type,
2445 allow_rounding_override_flag,
2446 tax_account_source_tax
2447 FROM ZX_SCO_TAXES zxt
2448 WHERE zxt.tax_regime_code = p_tax_regime_code
2449 AND live_for_processing_flag = 'Y'
2450 AND live_for_applicability_flag = 'Y'
2451 AND ( p_tax_determine_date >= effective_from AND
2452 (p_tax_determine_date <= effective_to OR effective_to IS NULL))
2453 AND zxt.offset_tax_flag = 'N'
2454 AND EXISTS (SELECT /*+ no_unnest */ 1
2455 FROM ZX_SCO_RATES_B_V rt
2456 WHERE rt.tax_regime_code = p_tax_regime_code
2457 AND rt.tax = zxt.tax
2458 AND (rt.tax_class = c_tax_class OR rt.tax_class IS NULL)
2459 AND rownum = 1)
2460 ORDER BY compounding_precedence;
2461
2462 /* Bug 4959835: Moved to procedure handle_update_scenarios
2463 CURSOR get_key_columns_cur(p_tax zx_lines.tax%TYPE) IS
2464 SELECT tax_line_id,
2465 last_manual_entry,
2466 tax_status_code,
2467 orig_tax_status_id,
2468 orig_tax_status_code,
2469 tax_rate_code,
2470 tax_rate,
2471 orig_tax_rate_id,
2472 orig_tax_rate_code,
2473 orig_tax_rate,
2474 tax_amt,
2475 orig_tax_amt,
2476 taxable_amt,
2477 orig_taxable_amt,
2478 line_amt,
2479 self_assessed_flag,
2480 tax_amt_included_flag,
2481 tax_jurisdiction_id,
2482 tax_jurisdiction_code,
2483 orig_self_assessed_flag,
2484 orig_tax_amt_included_flag,
2485 orig_tax_jurisdiction_id,
2486 orig_tax_jurisdiction_code,
2487 unrounded_taxable_amt,
2488 unrounded_tax_amt,
2489 cal_tax_amt,
2490 associated_child_frozen_flag
2491 FROM zx_lines
2492 WHERE application_id = p_event_class_rec.application_id
2493 AND entity_code = p_event_class_rec.entity_code
2494 AND event_class_code = p_event_class_rec.event_class_code
2495 AND trx_id = p_event_class_rec.trx_id
2496 AND trx_line_id =
2497 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
2498 AND trx_level_type =
2499 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
2500 AND tax_regime_code = p_tax_regime_code
2501 AND tax = p_tax
2502 AND mrc_tax_line_flag = 'N';
2503
2504 CURSOR enforce_rate_code_from_ref_doc(
2505 c_tax zx_lines.tax%TYPE,
2506 c_tax_regime_code zx_lines.tax_regime_code%TYPE) IS
2507 SELECT tax_status_code,
2508 tax_rate_code,
2509 line_amt,
2510 tax_amt,
2511 taxable_amt
2512 FROM zx_lines
2513 WHERE application_id =
2514 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(p_trx_line_index)
2515 AND event_class_code =
2516 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_event_class_code(p_trx_line_index)
2517 AND entity_code =
2518 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_entity_code(p_trx_line_index)
2519 AND trx_id =
2520 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_id(p_trx_line_index)
2521 AND trx_line_id =
2522 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_line_id(p_trx_line_index)
2523 AND trx_level_type =
2524 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_level_type(p_trx_line_index)
2525 AND tax_regime_code = c_tax_regime_code
2526 AND tax = c_tax
2527 AND cancel_flag <> 'Y'
2528 AND mrc_tax_line_flag = 'N';
2529
2530 Bug 4959835*/
2531
2532 -- bug 4728374
2533 CURSOR check_product_family_group_csr(
2534 c_tax_regime_code zx_rates_b.tax_regime_code%TYPE,
2535 c_tax zx_rates_b.tax%TYPE,
2536 c_tax_status_code zx_rates_b.tax_status_code%TYPE,
2537 c_tax_rate_code zx_rates_b.tax_rate_code%TYPE,
2538 c_tax_class zx_rates_b.tax_class%TYPE) IS
2539 SELECT 1
2540 FROM ZX_SCO_RATES_B_V
2541 WHERE effective_from <= p_tax_determine_date
2542 AND (effective_to >= p_tax_determine_date OR effective_to IS NULL )
2543 AND tax_rate_code = c_tax_rate_code
2544 AND tax_status_code = c_tax_status_code
2545 AND tax = c_tax
2546 AND tax_regime_code = c_tax_regime_code
2547 AND Active_Flag = 'Y'
2548 AND (tax_class = c_tax_class or tax_class IS NULL)
2549 AND ROWNUM=1;
2550
2551 BEGIN
2552
2553 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
2554
2555 IF (g_level_procedure >= g_current_runtime_level ) THEN
2556 FND_LOG.STRING(g_level_procedure,
2557 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.BEGIN',
2558 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(+)');
2559 END IF;
2560
2561 x_return_status := FND_API.G_RET_STS_SUCCESS;
2562
2563 l_tax_applicable := FALSE;
2564
2565 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
2566 l_tax_class := 'OUTPUT';
2567 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
2568 l_tax_class := 'INPUT';
2569 END IF;
2570
2571 l_trx_line_id :=
2572 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
2573 l_trx_level_type :=
2574 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
2575
2576 -- bugfix 5024740: move delete from jurisdictions gt to init_for_header and
2577 -- init_for_line in the wrapper
2578
2579 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2580 p_trx_line_index) = 'CREATE' OR
2581 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2582 p_trx_line_index) = 'CREATE_WITH_TAX' OR
2583 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2584 p_trx_line_index) = 'UPDATE' OR
2585 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2586 p_trx_line_index) = 'CREATE_TAX_ONLY' OR
2587 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2588 p_trx_line_index) = 'COPY_AND_CREATE'
2589 THEN
2590
2591 FOR l_tax_rec IN get_all_taxes_for_regime_cur(l_tax_class) LOOP
2592 -- init the local indicator of whether the tax is applicable.
2593 l_tax_applicable := FALSE;
2594 l_direct_rate_result_id := NULL;
2595 l_tax_tbl_subscript := NULL;
2596 l_ref_doc_tax_applicable := FALSE; -- Added for Bug 10184087 --
2597
2598 IF (g_level_statement >= g_current_runtime_level ) THEN
2599 FND_LOG.STRING(g_level_statement,
2600 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2601 'p_trx_line_index: '|| p_trx_line_index|| 'p_tax_regime_code: '||l_tax_rec.tax_regime_code|| 'l_tax: '|| l_tax_rec.tax);
2602 END IF;
2603
2604 -- populate g_tax_rec_tbl, if it does not exist
2605 --
2606 IF NOT ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl.EXISTS(l_tax_rec.tax_id) THEN
2607
2608 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_rec.tax_id) := l_tax_rec;
2609
2610 /* Following are commented out since the select column in the cursor
2611 get_all_taxes_for_regime_cur has the same set of column as the definition
2612 of ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl and in the same order. Changed to
2613 assignment as above. If later new columns added to get_all_taxes_for_regime_cur,
2614 but not need to cache, we need to uncomment this part and add the assignment
2615 individually.
2616
2617 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2618 l_tax_rec.tax_id).tax_id := l_tax_rec.tax_id;
2619 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2620 l_tax_rec.tax_id).tax := l_tax_rec.tax;
2621 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2622 l_tax_rec.tax_id).def_place_of_supply_type_code :=
2623 l_tax_rec.def_place_of_supply_type_code;
2624 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2625 l_tax_rec.tax_id).place_of_supply_rule_flag :=
2626 l_tax_rec.place_of_supply_rule_flag;
2627 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2628 l_tax_rec.tax_id).applicability_rule_flag :=
2629 l_tax_rec.applicability_rule_flag;
2630 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2631 l_tax_rec.tax_id).direct_rate_rule_flag :=
2632 l_tax_rec.direct_rate_rule_flag;
2633 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2634 l_tax_rec.tax_id).def_registr_party_type_code :=
2635 l_tax_rec.def_registr_party_type_code;
2636 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2637 l_tax_rec.tax_id).registration_type_rule_flag :=
2638 l_tax_rec.registration_type_rule_flag;
2639 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2640 l_tax_rec.tax_id).tax_regime_code := l_tax_rec.tax_regime_code;
2641 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2642 l_tax_rec.tax_id).tax_currency_code := l_tax_rec.tax_currency_code;
2643 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2644 l_tax_rec.tax_id).tax_precision := l_tax_rec.tax_precision;
2645 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2646 l_tax_rec.tax_id).minimum_accountable_unit :=
2647 l_tax_rec.minimum_accountable_unit;
2648 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2649 l_tax_rec.tax_id).rounding_rule_code :=l_tax_rec.rounding_rule_code;
2650 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2651 l_tax_rec.tax_id).tax_status_rule_flag :=
2652 l_tax_rec.tax_status_rule_flag;
2653 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2654 l_tax_rec.tax_id).tax_rate_rule_flag := l_tax_rec.tax_rate_rule_flag;
2655 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2656 l_tax_rec.tax_id).tax_calc_rule_flag := l_tax_rec.tax_calc_rule_flag;
2657 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2658 l_tax_rec.tax_id).taxable_basis_rule_flag :=
2659 l_tax_rec.taxable_basis_rule_flag;
2660 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2661 l_tax_rec.tax_id).def_tax_calc_formula :=
2662 l_tax_rec.def_tax_calc_formula;
2663 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2664 l_tax_rec.tax_id).def_taxable_basis_formula :=
2665 l_tax_rec.def_taxable_basis_formula;
2666 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2667 l_tax_rec.tax_id).tax_type_code := l_tax_rec.tax_type_code;
2668 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2669 l_tax_rec.tax_id).reporting_only_flag := l_tax_rec.reporting_only_flag;
2670 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2671 l_tax_rec.tax_id).def_inclusive_tax_flag :=
2672 l_tax_rec.def_inclusive_tax_flag;
2673 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2674 l_tax_rec.tax_id).applied_amt_handling_flag :=
2675 l_tax_rec.applied_amt_handling_flag;
2676 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2677 l_tax_rec.tax_id).exchange_rate_type :=
2678 l_tax_rec.exchange_rate_type;
2679 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2680 l_tax_rec.tax_id).has_other_jurisdictions_flag :=
2681 l_tax_rec.has_other_jurisdictions_flag;
2682 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
2683 l_tax_rec.tax_id).tax_exmpt_source_tax :=
2684 l_tax_rec.tax_exmpt_source_tax;
2685 */
2686
2687 END IF; -- g_tax_rec_tbl(l_tax_rec.tax_id) does not exist
2688
2689 -- For import service, tax lines may be created from summary lines
2690 --
2691 -- Bug 4277751: For intercompany transaction, need to pull in detail
2692 -- tax lines from source documnet.
2693 --
2694 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2695 p_trx_line_index) = 'CREATE_WITH_TAX' OR
2696 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2697 p_trx_line_index) = 'UPDATE' OR
2698 (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
2699 p_trx_line_index) IN ('CREATE', 'UPDATE')
2700 AND ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(
2701 p_trx_line_index) = 'INTERCOMPANY_TRX')
2702 THEN
2703 -- Check if this tax line exists in the new created applicable tax lines
2704 --
2705 l_tax_tbl_subscript := ZX_TDS_UTILITIES_PKG.get_tax_index(
2706 l_tax_rec.tax_regime_code,
2707 l_tax_rec.tax,
2708 l_trx_line_id,
2709 l_trx_level_type,
2710 x_begin_index,
2711 x_end_index,
2712 x_return_status);
2713
2714 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2715 IF (g_level_statement >= g_current_runtime_level ) THEN
2716 FND_LOG.STRING(g_level_statement,
2717 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2718 'Incorrect return_status after calling ' ||
2719 'ZX_TDS_UTILITIES_PKG.get_tax_index');
2720 FND_LOG.STRING(g_level_statement,
2721 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2722 'RETURN_STATUS = ' || x_return_status);
2723 FND_LOG.STRING(g_level_statement,
2724 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
2725 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
2726 END IF;
2727 RETURN;
2728 END IF;
2729 END IF;
2730
2731 -- If this tax does not exist in g_detail_tax_lines_tbl ,create a
2732 -- new detail tax line in it
2733 IF l_tax_tbl_subscript IS NULL OR
2734 (l_tax_tbl_subscript IS NOT NULL AND -- Added for bug 10184087 --
2735 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).other_doc_source ='REFERENCE' AND
2736 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_tax_amt = 0 AND
2737 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_taxable_amt = 0 AND
2738 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).manually_entered_flag ='Y' AND
2739 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).freeze_until_overridden_flag ='Y'
2740 ) THEN
2741
2742 -- Use direct_rate_rule_flag to check if tax is applicable first,
2743 -- if not, use applicability_rule_flag
2744 --
2745 IF l_tax_rec.direct_rate_rule_flag = 'Y' THEN
2746
2747 l_tax_applicable := is_direct_rate_applicable (
2748 p_tax_id => l_tax_rec.tax_id,
2749 p_tax_determine_date => p_tax_determine_date,
2750 p_event_class_rec => p_event_class_rec,
2751 p_trx_line_index => p_trx_line_index,
2752 x_direct_rate_result_rec => l_direct_rate_result_rec,
2753 x_direct_rate_result_id => l_direct_rate_result_id,
2754 x_return_status => x_return_status);
2755
2756 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2757 IF (g_level_statement >= g_current_runtime_level ) THEN
2758 FND_LOG.STRING(g_level_statement,
2759 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2760 'Incorrect return_status after calling ' ||
2761 'ZX_TDS_APPLICABILITY_DETM_PKG.is_direct_rate_applicable');
2762 FND_LOG.STRING(g_level_statement,
2763 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2764 'RETURN_STATUS = ' || x_return_status);
2765 FND_LOG.STRING(g_level_statement,
2766 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
2767 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
2768 END IF;
2769 RETURN;
2770 ELSE
2771
2772 IF l_tax_applicable THEN
2773
2774 IF (g_level_statement >= g_current_runtime_level ) THEN
2775 FND_LOG.STRING(g_level_statement,
2776 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2777 'l_direct_rate_result_rec.status_result = ' ||
2778 l_direct_rate_result_rec.status_result||'l_direct_rate_result_rec.rate_result = ' ||
2779 l_direct_rate_result_rec.rate_result);
2780 END IF;
2781
2782 -- Check if tax rate exists in the same product family group
2783 --
2784 OPEN check_product_family_group_csr(
2785 l_tax_rec.tax_regime_code,
2786 l_tax_rec.tax,
2787 l_direct_rate_result_rec.status_result,
2788 l_direct_rate_result_rec.rate_result,
2789 l_tax_class);
2790 FETCH check_product_family_group_csr INTO l_temp_num;
2791
2792 IF check_product_family_group_csr%NOTFOUND THEN
2793 -- tax not applicable, reset l_tax_applicable
2794 --
2795 l_tax_applicable := FALSE;
2796
2797 IF (g_level_statement >= g_current_runtime_level ) THEN
2798 FND_LOG.STRING(g_level_statement,
2799 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2800 'Tax Rate does not exist in this product family group. ');
2801 END IF;
2802 ELSE
2803 IF (g_level_statement >= g_current_runtime_level ) THEN
2804 FND_LOG.STRING(g_level_statement,
2805 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2806 'Tax Rate exists in this product family group. ');
2807 END IF;
2808 END IF;
2809 CLOSE check_product_family_group_csr;
2810 END IF;
2811 END IF;
2812
2813 IF (g_level_statement >= g_current_runtime_level ) THEN
2814 IF l_tax_applicable THEN
2815 FND_LOG.STRING(g_level_statement,
2816 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2817 'Direct Rate is Applicable. ');
2818 ELSE
2819 FND_LOG.STRING(g_level_statement,
2820 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2821 'Direct Rate is not Applicable. ');
2822 END IF;
2823 END IF;
2824 END IF; -- l_tax_rec.direct_rate_rule_flag = 'Y'
2825
2826 -- Initialize the TCM jurisdiction global tbl for each tax.
2827 g_inner_jurisdiction_code := NULL;
2828 g_outer_jurisdiction_code := NULL;
2829 g_inner_jurisdiction_id := NULL;
2830 g_outer_jurisdiction_id := NULL;
2831 l_jurisdictions_found := NULL;
2832
2833 IF l_direct_rate_result_id IS NOT NULL AND NOT l_tax_applicable THEN
2834 -- Direct rate rule returns results, but tax rate does not exist
2835 -- in this product family group
2836 --
2837 NULL;
2838 ELSIF NOT l_tax_applicable AND l_direct_rate_result_rec.alphanumeric_result = 'NOT_APPLICABLE' THEN
2839 NULL;
2840 ELSE
2841 -- Check if the location pointed by place of supply rules or default
2842 -- supply type maps to a jurisdiction.
2843 --
2844 get_place_of_supply (
2845 p_event_class_rec => p_event_class_rec,
2846 p_tax_regime_code => l_tax_rec.tax_regime_code,
2847 p_tax_id => l_tax_rec.tax_id,
2848 p_tax => l_tax_rec.tax,
2849 p_tax_determine_date => p_tax_determine_date,
2850 p_def_place_of_supply_type_cd => l_tax_rec.def_place_of_supply_type_code,
2851 p_place_of_supply_rule_flag => l_tax_rec.place_of_supply_rule_flag,
2852 p_applicability_rule_flag => l_tax_rec.applicability_rule_flag,
2853 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
2854 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
2855 p_trx_line_index => p_trx_line_index,
2856 p_direct_rate_result_id => l_direct_rate_result_id,
2857 x_jurisdiction_rec => l_jurisdiction_rec,
2858 x_jurisdictions_found => l_jurisdictions_found,
2859 x_place_of_supply_type_code => l_place_of_supply_type_code,
2860 x_place_of_supply_result_id => l_place_of_supply_result_id,
2861 x_return_status => x_return_status);
2862
2863 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2864 IF (g_level_statement >= g_current_runtime_level ) THEN
2865 FND_LOG.STRING(g_level_statement,
2866 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2867 'Incorrect return_status after calling ' ||
2868 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply');
2869 END IF;
2870
2871 -- For migrated taxes, if the has_other_jurisdictions_flag on the tax is 'N',
2872 -- no jurisdiction required, so ignore the errors raised from get_place_of_supply
2873 --
2874 IF NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'N' AND
2875 NVL(l_tax_rec.record_type_code, 'USER_DEFINED') = 'MIGRATED'
2876 THEN
2877
2878 x_return_status := FND_API.G_RET_STS_SUCCESS;
2879 IF (g_level_statement >= g_current_runtime_level ) THEN
2880 FND_LOG.STRING(g_level_statement,
2881 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2882 'For migrated taxes, if the has_other_jurisdictions_flag on ' ||
2883 'the tax is N, no jurisdiction required. Continue processing tax... ');
2884 END IF;
2885
2886 ELSE
2887 IF (g_level_statement >= g_current_runtime_level ) THEN
2888 FND_LOG.STRING(g_level_statement,
2889 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2890 'Unable to determine the Place of Supply for tax: '||l_tax_rec.tax||
2891 ' Place of Supply is mandatory when Direct Rate Determination is not used');
2892 FND_LOG.STRING(g_level_statement,
2893 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2894 'RETURN_STATUS = ' || x_return_status);
2895 FND_LOG.STRING(g_level_statement,
2896 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
2897 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
2898 END IF;
2899
2900 RETURN;
2901 END IF;
2902 END IF;
2903 END IF;
2904
2905 IF l_tax_applicable AND
2906 NVL(l_jurisdictions_found, 'N') <> 'Y' AND
2907 NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'Y'
2908 THEN
2909
2910 l_tax_applicable := FALSE;
2911
2912 END IF;
2913
2914 -- If Direct Rate Determination Process does not return
2915 -- successfully, check the mapping to a jurisdiction. If there is no
2916 -- mapping to a jurisdiction, tax is not applicable.
2917 --
2918 IF (l_jurisdictions_found = 'Y' OR
2919 NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'N' AND
2920 NVL(l_tax_rec.record_type_code, 'USER_DEFINED') = 'MIGRATED') THEN --Bug 5854385
2921
2922 IF l_jurisdictions_found = 'Y'
2923 AND l_jurisdiction_rec.tax_jurisdiction_code IS NULL
2924 THEN
2925
2926 -- for multiple jurisdictions case: cache the most inner
2927 -- and outer jurisdiction for future usage
2928
2929 IF (g_level_statement >= g_current_runtime_level ) THEN
2930 FND_LOG.STRING(g_level_statement,
2931 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2932 'It is a multiple jurisdiction case. ' );
2933 END IF;
2934
2935 -- Stamp multiple_jurisdiction_flag on the tax line to 'Y'
2936 /* Commented for the : Bug 5045030
2937 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
2938 l_new_row_num).multiple_jurisdictions_flag := 'Y';*/
2939
2940 OPEN c_get_jurisdiction_from_gt(p_tax_regime_code, l_tax_rec.tax);
2941 FETCH c_get_jurisdiction_from_gt
2942 BULK COLLECT INTO l_jurisdiction_rec_tbl;
2943 CLOSE c_get_jurisdiction_from_gt;
2944
2945 IF l_jurisdiction_rec_tbl.COUNT = 0 THEN
2946 RAISE NO_DATA_FOUND;
2947 IF (g_level_error >= g_current_runtime_level ) THEN
2948 FND_LOG.STRING(g_level_error,
2949 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2950 'No data found in ZX_JURISDICTIONS_GT when multiple jurisdictions found.');
2951 END IF;
2952
2953 END IF;
2954 -- cache the global most inner and outer jurisdiction code
2955 l_jur_index := l_jurisdiction_rec_tbl.FIRST;
2956 g_inner_jurisdiction_code
2957 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_code;
2958 g_inner_jurisdiction_id
2959 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_id;
2960
2961 l_jur_index := l_jurisdiction_rec_tbl.LAST;
2962 g_outer_jurisdiction_code
2963 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_code;
2964 g_outer_jurisdiction_id
2965 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_id;
2966
2967 IF (g_level_statement >= g_current_runtime_level ) THEN
2968 FND_LOG.STRING(g_level_statement,
2969 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2970 'inner_jurisdiction_code = '|| g_inner_jurisdiction_code ||'outer_jurisdiction_code = '|| g_outer_jurisdiction_code);
2971
2972 END IF;
2973
2974 ELSIF l_jurisdictions_found = 'Y'
2975 AND l_jurisdiction_rec.tax_jurisdiction_code IS NOT NULL
2976 THEN
2977 -- for single jurisdiction case: cache the most inner
2978 -- and outer jurisdiction same as the jurisdiction found
2979 -- for future usage
2980
2981 g_inner_jurisdiction_code
2982 := l_jurisdiction_rec.tax_jurisdiction_code;
2983 g_inner_jurisdiction_id
2984 := l_jurisdiction_rec.tax_jurisdiction_id;
2985 g_outer_jurisdiction_code
2986 := l_jurisdiction_rec.tax_jurisdiction_code;
2987 g_outer_jurisdiction_id
2988 := l_jurisdiction_rec.tax_jurisdiction_id;
2989
2990 IF (g_level_statement >= g_current_runtime_level ) THEN
2991 FND_LOG.STRING(g_level_statement,
2992 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
2993 'single jurisdiction code = '|| g_inner_jurisdiction_code);
2994 END IF;
2995 END IF;
2996
2997 -- call is_tax_applicable to determine tax applicability
2998 --
2999 IF (NOT l_tax_applicable) THEN
3000 l_tax_applicable := is_tax_applicable (
3001 p_tax_id => l_tax_rec.tax_id,
3002 p_tax_determine_date => p_tax_determine_date,
3003 p_applicability_rule_flag => l_tax_rec.applicability_rule_flag,
3004 p_event_class_rec => p_event_class_rec,
3005 p_trx_line_index => p_trx_line_index,
3006 p_applicable_by_default_flag => l_tax_rec.applicable_by_default_flag,
3007 x_applicability_result => l_applicability_result,
3008 x_applicability_result_id => l_applicability_result_id,
3009 x_return_status => x_return_status);
3010
3011 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3012 IF (g_level_statement >= g_current_runtime_level ) THEN
3013 FND_LOG.STRING(g_level_statement,
3014 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3015 'Incorrect return_status after calling ' ||
3016 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable');
3017 FND_LOG.STRING(g_level_statement,
3018 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3019 'RETURN_STATUS = ' || x_return_status);
3020 FND_LOG.STRING(g_level_statement,
3021 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3022 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3023 END IF;
3024 RETURN;
3025 END IF;
3026 END IF; -- NOT l_tax_applicable
3027 END IF; -- l_jurisdictions_found = 'Y'
3028
3029 IF l_tax_applicable THEN
3030 -- Added for bug 10184087
3031 IF l_tax_tbl_subscript IS NOT NULL AND
3032 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).other_doc_source ='REFERENCE' AND
3033 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_tax_amt = 0 AND
3034 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_taxable_amt = 0 AND
3035 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).manually_entered_flag ='Y' AND
3036 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).freeze_until_overridden_flag ='Y'
3037 THEN
3038
3039 IF (g_level_statement >= g_current_runtime_level ) THEN
3040 FND_LOG.STRING(g_level_statement,
3041 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3042 'Tax is Applicable and there exists a Zero Amount Reference Tax Line at index '||l_tax_tbl_subscript);
3043 FND_LOG.STRING(g_level_statement,
3044 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3045 'Resetting the tax line record at index '||l_tax_tbl_subscript);
3046 END IF;
3047
3048 l_new_row_num := l_tax_tbl_subscript;
3049 l_tmp_tax_apportionmt_ln_num :=
3050 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript
3051 ).tax_apportionment_line_number;
3052 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num) := NULL;
3053 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3054 l_new_row_num).tax_apportionment_line_number := l_tmp_tax_apportionmt_ln_num;
3055 l_ref_doc_tax_applicable := TRUE;
3056
3057 ELSE
3058 l_new_row_num :=
3059 NVL( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0)+1;
3060
3061 IF (x_begin_index is null) THEN
3062 x_begin_index := l_new_row_num;
3063 END IF;
3064 END IF;
3065
3066 IF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index)='UPDATE') AND
3067 NOT l_ref_doc_tax_applicable -- Bug 10184087
3068 -- Handle_update_scenario should not be called if zero amount
3069 -- refrence tax line is found and the PO tax becomes applicable
3070 THEN
3071 -- Bug 4959835. Moved the code to a private procedure.
3072 handle_update_scenarios( p_trx_line_index,
3073 p_event_class_rec,
3074 l_new_row_num,
3075 l_tax_rec.tax_regime_code,
3076 l_tax_rec.tax,
3077 p_tax_date,
3078 p_tax_determine_date,
3079 p_tax_point_date,
3080 l_self_assessed_flag,
3081 l_tax_amt_included_flag,
3082 l_tax_jurisdiction_id,
3083 l_tax_jurisdiction_code,
3084 x_return_status);
3085
3086 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3087 IF (g_level_statement >= g_current_runtime_level ) THEN
3088 FND_LOG.STRING(g_level_statement,
3089 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3090 'Incorrect return_status after calling ' ||
3091 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable');
3092 FND_LOG.STRING(g_level_statement,
3093 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3094 'RETURN_STATUS = ' || x_return_status);
3095 FND_LOG.STRING(g_level_statement,
3096 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3097 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3098 END IF;
3099 RETURN;
3100 END IF;
3101
3102 ELSE -- 'CREATE'
3103 /*
3104 * will be populated by pop_tax_line_for_trx_line
3105 * SELECT zx_lines_s.NEXTVAL
3106 * INTO ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3107 * l_new_row_num).tax_line_id
3108 * FROM dual;
3109 */
3110
3111 NULL;
3112 END IF;
3113
3114 -- Added for Bug#13110309
3115 -- In case of Update call, the procedure handle_update_scenario will populate
3116 -- the structure ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl with the
3117 -- tax line details at index l_new_row_num
3118 -- If tax line exists at index l_new_row_num and it is canceled then set the
3119 -- variable l_cancel_tax_line to TRUE
3120
3121 l_cancel_tax_line := FALSE;
3122
3123 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.EXISTS(l_new_row_num)
3124 THEN
3125 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3126 l_new_row_num).cancel_flag,'N') = 'Y'
3127 THEN
3128 l_cancel_tax_line := TRUE;
3129 END IF;
3130 END IF;
3131
3132 -- Set the values of columns in ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl
3133 -- if the value of variable l_cancel_tax_line is not TRUE
3134 IF NOT(l_cancel_tax_line) THEN
3135 -- Added for Bug 5045030 :
3136 IF l_jurisdictions_found = 'Y' AND
3137 l_jurisdiction_rec.tax_jurisdiction_code IS NULL
3138 THEN
3139 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3140 l_new_row_num).multiple_jurisdictions_flag := 'Y';
3141 END IF ;
3142
3143 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3144 l_new_row_num).application_id := p_event_class_rec.application_id;
3145 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3146 l_new_row_num).event_class_code := p_event_class_rec.event_class_code;
3147 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3148 l_new_row_num).event_type_code := p_event_class_rec.event_type_code;
3149 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3150 l_new_row_num).entity_code := p_event_class_rec.entity_code;
3151
3152 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3153 l_new_row_num).tax_date := p_tax_date;
3154
3155 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3156 l_new_row_num).tax_determine_date := p_tax_determine_date;
3157
3158 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3159 l_new_row_num).tax_point_date := p_tax_point_date;
3160
3161 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3162 l_new_row_num).place_of_supply_type_code :=
3163 l_place_of_supply_type_code;
3164
3165 -- if orig_tax_jurisdiction_code(id) is not NULL (for UPDATE),
3166 -- populate tax_jurisdiction_code and tax_jurisdiction_id fetched
3167 -- from zx_lines. Otherwise, populate new tax_jurisdiction_code
3168 -- and tax_jurisdiction_id from most inner jurisdiction info
3169 --
3170
3171 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3172 l_new_row_num).orig_tax_jurisdiction_code IS NOT NULL
3173 THEN
3174
3175 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3176 l_new_row_num).tax_jurisdiction_code := l_tax_jurisdiction_code;
3177
3178 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3179 l_new_row_num).tax_jurisdiction_id := l_tax_jurisdiction_id;
3180
3181 ELSE
3182 -- always stamp the most inner jurisdiction code on tax line
3183
3184 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3185 l_new_row_num).tax_jurisdiction_code
3186 := NVL(l_jurisdiction_rec.tax_jurisdiction_code,
3187 g_inner_jurisdiction_code);
3188
3189 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3190 l_new_row_num).tax_jurisdiction_id
3191 := NVL(l_jurisdiction_rec.tax_jurisdiction_id,
3192 g_inner_jurisdiction_id);
3193
3194 END IF;
3195
3196 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3197 l_new_row_num).tax_regime_id := p_tax_regime_id;
3198 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3199 l_new_row_num).tax_regime_code := l_tax_rec.tax_regime_code;
3200 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3201 l_new_row_num).tax := l_tax_rec.tax;
3202 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3203 l_new_row_num).tax_id := l_tax_rec.tax_id;
3204 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3205 l_new_row_num).tax_currency_code := l_tax_rec.tax_currency_code;
3206 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3207 l_new_row_num).tax_type_code := l_tax_rec.tax_type_code;
3208 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3209 l_new_row_num).tax_currency_conversion_date := p_tax_determine_date;
3210 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3211 l_new_row_num).tax_currency_conversion_type :=
3212 l_tax_rec.exchange_rate_type;
3213 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3214 l_new_row_num).reporting_only_flag := l_tax_rec.reporting_only_flag;
3215 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3216 l_new_row_num).place_of_supply_result_id :=
3217 l_place_of_supply_result_id;
3218 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3219 l_new_row_num).legal_message_pos:=
3220 ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_place_of_supply_result_id,
3221 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index));
3222
3223 -- bug 5077691: populate legal_reporting_status
3224 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
3225 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3226 l_new_row_num).cancel_flag, 'N') <> 'Y' THEN
3227 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3228 l_new_row_num).legal_reporting_status :=
3229 l_tax_rec.legal_reporting_status_def_val;
3230 END IF;
3231 END IF;
3232
3233 -- populate applicability_rule_flag
3234 --
3235 IF l_tax_rec.applicability_rule_flag = 'Y' THEN
3236 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3237 l_new_row_num).tax_applicability_result_id :=
3238 l_applicability_result_id;
3239 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3240 l_new_row_num).legal_message_appl_2 :=
3241 ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(
3242 l_applicability_result_id,
3243 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index));
3244 END IF;
3245
3246 IF l_tax_rec.direct_rate_rule_flag = 'Y' AND
3247 l_direct_rate_result_id IS NOT NULL AND -- Bug 6816250, add NVL
3248 NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3249 l_new_row_num).last_manual_entry,'X') NOT IN ('TAX_RATE','TAX_AMOUNT')
3250 THEN
3251 -- Populate direct_rate_rule_flag, as well as tax_status_code
3252 -- and tax_rate_code if direct_rate is applicable.
3253 --
3254 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3255 l_new_row_num).direct_rate_result_id := l_direct_rate_result_id;
3256 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3257 l_new_row_num).tax_status_code :=
3258 l_direct_rate_result_rec.status_result;
3259 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3260 l_new_row_num).tax_rate_code :=
3261 l_direct_rate_result_rec.rate_result;
3262 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3263 l_new_row_num).legal_message_rate:=
3264 ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_direct_rate_result_id,
3265 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index));
3266
3267
3268 -- populate tax_status_id
3269 --
3270 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
3271 l_tax_rec.tax,
3272 l_tax_rec.tax_regime_code,
3273 l_direct_rate_result_rec.status_result,
3274 p_tax_determine_date,
3275 l_tax_status_rec,
3276 x_return_status,
3277 l_error_buffer);
3278
3279 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3280 IF (g_level_error >= g_current_runtime_level ) THEN
3281 FND_LOG.STRING(g_level_error,
3282 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3283 'Incorrect return_status after calling '||
3284 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info.');
3285 FND_LOG.STRING(g_level_error,
3286 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3287 'RETURN_STATUS = ' || x_return_status);
3288 FND_LOG.STRING(g_level_error,
3289 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3290 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3291 END IF;
3292 -- Bug 4959835: Since this cursor is moved, commenting this out
3293 -- CLOSE get_key_columns_cur;
3294 RETURN;
3295 END IF;
3296
3297 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3298 l_new_row_num).tax_status_id :=
3299 l_tax_status_rec.tax_status_id;
3300 END IF;
3301
3302 -- populate rounding_lvl_party_tax_prof_id and rounding_level_code
3303 --
3304 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3305 l_new_row_num).rounding_lvl_party_tax_prof_id :=
3306 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id;
3307
3308 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3309 l_new_row_num).rounding_level_code :=
3310 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level;
3311
3312 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3313 l_new_row_num).rounding_lvl_party_type :=
3314 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type;
3315
3316 -- populate hq_estb_party_tax_prof_id
3317 --
3318 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3319 l_new_row_num).hq_estb_party_tax_prof_id :=
3320 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.hq_estb_party_tax_prof_id(
3321 p_trx_line_index);
3322
3323 -- populate tax registration info
3324 --
3325 populate_registration_info(
3326 p_event_class_rec => p_event_class_rec,
3327 p_trx_line_index => p_trx_line_index,
3328 p_rownum => l_new_row_num,
3329 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
3330 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
3331 p_tax_determine_date => p_tax_determine_date,
3332 x_return_status => x_return_status);
3333
3334 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3335 IF (g_level_statement >= g_current_runtime_level ) THEN
3336 FND_LOG.STRING(g_level_statement,
3337 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3338 'Incorrect return_status after calling ' ||
3339 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
3340 FND_LOG.STRING(g_level_statement,
3341 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3342 'RETURN_STATUS = ' || x_return_status);
3343 FND_LOG.STRING(g_level_statement,
3344 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3345 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3346 END IF;
3347 RETURN;
3348 END IF;
3349
3350 -- If orig_tax_amt_included_flag/orig_self_assessed_flag is not NULL
3351 -- (for UPDATE), populate tax_amt_included_flag/self_assessed_flag
3352 -- fetched from zx_lines. Otherwise, keep tax_amt_included_flag/
3353 -- self_assessed_flag returned from get_tax_registration
3354 --
3355 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3356 l_new_row_num).orig_tax_amt_included_flag IS NOT NULL THEN
3357 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3358 l_new_row_num).tax_amt_included_flag := l_tax_amt_included_flag;
3359 END IF;
3360
3361 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3362 l_new_row_num).orig_self_assessed_flag IS NOT NULL THEN
3363 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3364 l_new_row_num).self_assessed_flag := l_self_assessed_flag;
3365 END IF;
3366
3367 -- populate rounding_rule_code if it is null
3368 --
3369 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3370 l_new_row_num).rounding_rule_code IS NULL THEN
3371 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3372 l_new_row_num).rounding_rule_code := l_tax_rec.rounding_rule_code;
3373 END IF;
3374
3375 -- If the value of p_event_class_rec.self_assess_tax_lines_flag
3376 -- is 'N', populate self_assessed_flg to 'N'
3377 --
3378 IF NVL(p_event_class_rec.self_assess_tax_lines_flag, 'N') = 'N'
3379 THEN
3380 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3381 l_new_row_num).self_assessed_flag := 'N';
3382 END IF;
3383
3384 -- Bug 4277751: For intercompany transaction, detail tax lines from
3385 -- addintional applicability process should be marked as
3386 -- self assessed
3387 --
3388 -- Bug 5705976: Since, we stamp 'INTERCOMPANY_TRX' on both AR and AP
3389 -- transactions, the following code has become incorrect.
3390 --
3391 -- IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
3392 -- p_trx_line_index) IN ('CREATE', 'UPDATE') AND
3393 -- ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(
3394 -- p_trx_line_index) = 'INTERCOMPANY_TRX'
3395 -- THEN
3396 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3397 -- l_new_row_num).self_assessed_flag := 'Y';
3398 -- END IF;
3399
3400 -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
3401 -- populate process_for_recovery_flag to 'N'. If it is 'Y', check
3402 -- reporting_only_flag to set tax_recovery_flag
3403 --
3404 /*
3405 * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
3406 *
3407 * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
3408 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3409 * l_new_row_num).process_for_recovery_flag := 'N';
3410 * ELSE
3411 * IF NVL(l_tax_rec.reporting_only_flag, 'N') <> 'Y' THEN
3412 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3413 * l_new_row_num).process_for_recovery_flag := 'Y';
3414 * ELSE
3415 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3416 * l_new_row_num).process_for_recovery_flag := 'N';
3417 * END IF;
3418 * END IF;
3419 */
3420
3421 /* Move to ZX_TDS_TAXABLE_BASIS_DETM_PKG
3422 *
3423 * -- Populate tax_inclusion_flag and line_amt_includes_tax_flag
3424 * --
3425 * IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
3426 * p_trx_line_index) = 'A') THEN
3427 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3428 * l_new_row_num).tax_amt_included_flag := 'Y';
3429 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3430 * l_new_row_num).line_amt_includes_tax_flag := 'A';
3431 *
3432 * ELSIF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
3433 * p_trx_line_index) = 'N') THEN
3434 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3435 * l_new_row_num).tax_amt_included_flag := 'N';
3436 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3437 * l_new_row_num).line_amt_includes_tax_flag := 'N';
3438 *
3439 * ELSIF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
3440 * p_trx_line_index) IN ('S', 'I')) THEN
3441 * -- Remain the value of tax_inclusion_flag returned by
3442 * -- get_tax_regostration and set line_amt_includes_tax_flag to 'STANDARD'
3443 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3444 * l_new_row_num).line_amt_includes_tax_flag := 'S';
3445 * NULL;
3446 * END IF;
3447 */
3448
3449 -- populate Tax_Only_Line_Flag if line_level_action is 'CREATE_TAX_ONLY'
3450 --
3451 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
3452 p_trx_line_index) = 'CREATE_TAX_ONLY') THEN
3453 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3454 l_new_row_num).tax_only_line_flag := 'Y';
3455 END IF;
3456
3457 END IF; -- NOT(l_cancel_tax_line)
3458 END IF; -- l_tax_applicable
3459 END IF; -- l_tax_tbl_subscript IS NULL
3460 END LOOP; -- l_tax_rec IN get_all_taxes_for_regime_cur
3461
3462 IF (x_begin_index is NOT NULL) THEN
3463 x_end_index :=
3464 NVL( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
3465 END IF;
3466
3467 -- If p_event_class_rec.enforce_tax_from_ref_doc_flag = 'Y' AND
3468 -- trx_line_dist_tbl.ref_doc_application_id(p_trx_line_index) IS NOT NULL,
3469 -- get tax rate code from refefence document
3470 --
3471 IF p_event_class_rec.enforce_tax_from_ref_doc_flag = 'Y' AND
3472 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(
3473 p_trx_line_index) IS NOT NULL
3474 THEN
3475
3476 enforce_tax_from_ref_doc(
3477 x_begin_index,
3478 x_end_index,
3479 p_trx_line_index,
3480 x_return_status);
3481
3482 /* Bug 4959835: Moved the following as a private procedure for STCC req
3483 FOR i IN NVL(x_begin_index, -1) .. NVL(x_end_index, 0) LOOP
3484
3485 OPEN enforce_rate_code_from_ref_doc(
3486 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax,
3487 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_regime_code);
3488
3489 FETCH enforce_rate_code_from_ref_doc INTO
3490 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_code,
3491 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_code,
3492 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3493 i).other_doc_line_amt,
3494 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3495 i).other_doc_line_tax_amt,
3496 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3497 i).other_doc_line_taxable_amt;
3498
3499 IF enforce_rate_code_from_ref_doc%FOUND THEN
3500
3501 -- populate copied_from_other_doc_flag and other_doc_source
3502 --
3503 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3504 i).copied_from_other_doc_flag := 'Y';
3505 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3506 i).other_doc_source := 'REFERENCE';
3507
3508 IF g_level_statement >= g_current_runtime_level THEN
3509
3510 FND_LOG.STRING(g_level_statement,
3511 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3512 'p_event_class_rec.enforce_tax_from_ref_doc_flag = Y. '||
3513 'get tax rate code from reference document');
3514 FND_LOG.STRING(g_level_statement,
3515 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3516 'From reference document: tax_status_code = '||
3517 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3518 i).tax_status_code);
3519 FND_LOG.STRING(g_level_statement,
3520 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3521 'From reference document: tax_rate_code = '||
3522 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3523 i).tax_rate_code);
3524 FND_LOG.STRING(g_level_statement,
3525 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3526 'other_doc_line_amt = '||
3527 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3528 i).other_doc_line_amt);
3529 FND_LOG.STRING(g_level_statement,
3530 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3531 'other_doc_line_tax_amt = '||
3532 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3533 i).other_doc_line_tax_amt);
3534 FND_LOG.STRING(g_level_statement,
3535 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3536 'other_doc_line_taxable_amt = '||
3537 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3538 i).other_doc_line_taxable_amt);
3539 END IF;
3540 ELSE
3541 IF g_level_statement >= g_current_runtime_level THEN
3542 FND_LOG.STRING(g_level_statement,
3543 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3544 'enforce_tax_from_ref_doc_flag is turned on, but tax status'||
3545 'code and tax rate code are not available from reference doc.');
3546 END IF;
3547 END IF;
3548
3549 CLOSE enforce_rate_code_from_ref_doc;
3550
3551 END LOOP; -- i IN NVL(x_begin_index, -1) .. NVL(x_end_index, 0)
3552 End: enforce tax from doc - Bug 4959835 */
3553 END IF; -- p_event_class_rec.enforce_tax_from_ref_doc_flag = 'Y'
3554
3555 -- copy transaction info to new tax lines
3556 --
3557 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines (p_trx_line_index,
3558 x_begin_index,
3559 x_end_index,
3560 x_return_status,
3561 l_error_buffer );
3562
3563 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3564 IF (g_level_statement >= g_current_runtime_level ) THEN
3565 FND_LOG.STRING(g_level_statement,
3566 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3567 'Incorrect RETURN_STATUS after calling '||
3568 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
3569 FND_LOG.STRING(g_level_statement,
3570 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3571 'RETURN_STATUS = ' || x_return_status);
3572 FND_LOG.STRING(g_level_statement,
3573 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3574 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3575 END IF;
3576 RETURN;
3577 END IF;
3578 END IF; -- line_level_action = 'CREATE', 'UPDATE', 'CREATE_TAX_ONLY'
3579
3580 IF (g_level_procedure >= g_current_runtime_level ) THEN
3581 FND_LOG.STRING(g_level_procedure,
3582 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3583 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)'||'RETURN_STATUS = ' || x_return_status);
3584 END IF;
3585
3586 EXCEPTION
3587 WHEN OTHERS THEN
3588 x_begin_index := NULL;
3589 x_end_index := NULL;
3590 IF (get_all_taxes_for_regime_cur%ISOPEN) THEN
3591 CLOSE get_all_taxes_for_regime_cur;
3592 END IF;
3593
3594 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3595
3596 IF (g_level_unexpected >= g_current_runtime_level ) THEN
3597 FND_LOG.STRING(g_level_unexpected,
3598 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes',
3599 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
3600 FND_LOG.STRING(g_level_unexpected,
3601 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes.END',
3602 'ZX_TDS_APPLICABILITY_DETM_PKG.get_applicable_taxes(-)');
3603 END IF;
3604
3605 END get_applicable_taxes;
3606
3607 ----------------------------------------------------------------------
3608 -- PROCEDURE
3609 -- get_det_tax_lines_from_applied
3610 --
3611 -- DESCRIPTION
3612 --
3613 -- This procedure get detail tax lines from applied from document
3614 --
3615 -- IN p_trx_line_index
3616 --
3617 -- IN OUT NOCOPY
3618 -- x_begin_index
3619 -- x_end_index
3620 -- OUT NOCOPY x_return_status
3621
3622 PROCEDURE get_det_tax_lines_from_applied(
3623 p_event_class_rec IN zx_api_pub.event_class_rec_type,
3624 p_trx_line_index IN BINARY_INTEGER,
3625 p_tax_date IN DATE,
3626 p_tax_determine_date IN DATE,
3627 p_tax_point_date IN DATE,
3628 x_begin_index IN OUT NOCOPY BINARY_INTEGER,
3629 x_end_index IN OUT NOCOPY BINARY_INTEGER,
3630 x_return_status OUT NOCOPY VARCHAR2) IS
3631
3632 CURSOR get_tax_lines IS
3633 SELECT * FROM zx_lines
3634 WHERE application_id =
3635 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(p_trx_line_index)
3636 AND entity_code =
3637 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(p_trx_line_index)
3638 AND event_class_code =
3639 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(p_trx_line_index)
3640 AND trx_id =
3641 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(p_trx_line_index)
3642 AND trx_line_id =
3643 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(p_trx_line_index)
3644 AND trx_level_type =
3645 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(p_trx_line_index)
3646 AND tax_provider_id IS NULL
3647 AND Cancel_Flag<> 'Y'
3648 --AND offset_link_to_tax_line_id IS NULL Bug 8517610
3649 AND mrc_tax_line_flag = 'N'
3650 ORDER BY tax_line_id;
3651
3652 l_new_row_num NUMBER;
3653 l_begin_index BINARY_INTEGER;
3654 l_error_buffer VARCHAR2(200);
3655 l_line_amt_current NUMBER;
3656 l_status_rec ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC;
3657 l_applied_amt_handling_flag ZX_TAXES_B.APPLIED_AMT_HANDLING_FLAG%TYPE;
3658
3659 l_orig_amt NUMBER;
3660 l_appl_tax_amt NUMBER;
3661 l_appl_line_amt NUMBER;
3662 l_unrounded_tax_amt NUMBER;
3663
3664 BEGIN
3665
3666 IF (g_level_procedure >= g_current_runtime_level ) THEN
3667 FND_LOG.STRING(g_level_procedure,
3668 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.BEGIN',
3669 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(+)'|| 'p_trx_line_index = ' || to_char(p_trx_line_index));
3670 END IF;
3671
3672 x_return_status := FND_API.G_RET_STS_SUCCESS;
3673
3674 -- initialize l_new_row_num
3675 --
3676 l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
3677
3678 -- get the begin_index for tax lines created in this procedure
3679 --
3680 l_begin_index := l_new_row_num + 1;
3681
3682 FOR tax_line_rec in get_tax_lines LOOP
3683
3684 -- populate tax cache ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl with this tax_id,
3685 -- if it does not exists there.
3686 --
3687 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
3688 p_tax_id => tax_line_rec.tax_id,
3689 p_return_status => x_return_status,
3690 p_error_buffer => l_error_buffer);
3691
3692 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3693 IF (g_level_statement >= g_current_runtime_level ) THEN
3694 FND_LOG.STRING(g_level_statement,
3695 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3696 'Incorrect return_status after calling ' ||
3697 'ZX_TDS_UTILITIES_PKG.populate_tax_cache()');
3698 FND_LOG.STRING(g_level_statement,
3699 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3700 'RETURN_STATUS = ' || x_return_status);
3701 FND_LOG.STRING(g_level_statement,
3702 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
3703 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
3704 END IF;
3705
3706 RETURN;
3707 END IF;
3708
3709 -- increment l_new_row_num
3710 --
3711 l_new_row_num := l_new_row_num +1;
3712
3713 IF (g_level_procedure >= g_current_runtime_level ) THEN
3714 FND_LOG.STRING(g_level_procedure,
3715 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3716 'Processsing Tax Line Num = ' || to_char(l_new_row_num));
3717 END IF;
3718
3719
3720 -- Populate the tax_line_id with Sequence
3721 --
3722 /*
3723 * will be populated by pop_tax_line_for_trx_line
3724 *
3725 * SELECT zx_lines_s.NEXTVAL
3726 * INTO ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3727 * l_new_row_num).tax_line_id from dual;
3728 */
3729 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3730 l_new_row_num).tax_line_id := NULL;
3731
3732 -- populate tax related information from tax_line_rec
3733 --
3734 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3735 l_new_row_num).tax_regime_id := tax_line_rec.tax_regime_id;
3736 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3737 l_new_row_num).tax_regime_code:=tax_line_rec.tax_regime_code;
3738 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3739 l_new_row_num).tax_id := tax_line_rec.tax_id;
3740 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3741 l_new_row_num).tax := tax_line_rec.tax;
3742 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3743 l_new_row_num).tax_status_code:=tax_line_rec.tax_status_code;
3744 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3745 l_new_row_num).multiple_jurisdictions_flag :=
3746 tax_line_rec.multiple_jurisdictions_flag;
3747 BEGIN
3748 SELECT applied_amt_handling_flag INTO l_applied_amt_handling_flag
3749 FROM zx_taxes_b_tmp
3750 WHERE tax_id = tax_line_rec.tax_id;
3751
3752 IF (g_level_procedure >= g_current_runtime_level ) THEN
3753 FND_LOG.STRING(g_level_procedure,
3754 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3755 'Applied_Amt_Handling_Flag = ' || l_applied_amt_handling_flag);
3756 END IF;
3757
3758 IF l_applied_amt_handling_flag = 'P' --Bug 5650193
3759 THEN
3760 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3761 l_new_row_num).tax_rate_type :=
3762 tax_line_rec.tax_rate_type;
3763 END IF;
3764
3765 EXCEPTION WHEN OTHERS THEN
3766 IF (g_level_statement >= g_current_runtime_level ) THEN
3767 FND_LOG.STRING(g_level_statement,
3768 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3769 'Could Not Reterive a Row for the Tax Id'||tax_line_rec.tax_id);
3770 END IF;
3771 END;
3772
3773
3774 -- bug 5077691: populate legal_reporting_status
3775 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
3776 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3777 l_new_row_num).legal_reporting_status :=
3778 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
3779 tax_line_rec.tax_id).legal_reporting_status_def_val;
3780 END IF;
3781
3782 -- For prepayment trx, tax lines are fetched from the original document and status codes
3783 -- are copied to the new tax lines. However, since tax determiniation date most likely
3784 -- are different for the current document, the status id will need to be repopulated.
3785
3786 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
3787 tax_line_rec.tax,
3788 tax_line_rec.tax_regime_code,
3789 tax_line_rec.tax_status_code,
3790 p_tax_determine_date,
3791 l_status_rec,
3792 x_return_status,
3793 l_error_buffer);
3794
3795 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3796 IF (g_level_error >= g_current_runtime_level ) THEN
3797 FND_LOG.STRING(g_level_error,
3798 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3799 'Incorrect return_status after calling ' ||
3800 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info()');
3801 FND_LOG.STRING(g_level_error,
3802 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3803 'RETURN_STATUS = ' || x_return_status);
3804 FND_LOG.STRING(g_level_error,
3805 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
3806 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
3807 END IF;
3808
3809 --
3810 -- add error message before return
3811 --
3812 FND_MESSAGE.SET_NAME('ZX','ZX_STATUS_NOT_FOUND');
3813 FND_MESSAGE.SET_TOKEN('TAX',tax_line_rec.tax);
3814
3815 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
3816 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
3817 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
3818 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
3819
3820 ZX_API_PUB.add_msg(
3821 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
3822
3823 RETURN;
3824 END IF;
3825 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3826 l_new_row_num).tax_status_id := l_status_rec.tax_status_id;
3827
3828 -- 1. If applied_amt_handling_flag ='P', populate tax rate percentage from
3829 -- applied from document. Tax is proarted based the amount applied.
3830 -- 2. If applied_amt_handling_flag ='R', populate tax rate Code from
3831 -- applied document. Tax rate is determined in the current document.
3832 -- Tax is recalculated based one the tax rate in the current document.
3833
3834 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
3835 tax_line_rec.tax_id).applied_amt_handling_flag = 'P' THEN
3836
3837 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3838 l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
3839 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3840 l_new_row_num).tax_rate_id := tax_line_rec.tax_rate_id;
3841 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3842 l_new_row_num).tax_rate := tax_line_rec.tax_rate;
3843
3844 -- 5758785: copy tax_currency_conversion_date,tax_currency_conversion_type
3845 -- and tax_currency_conversion_rate from prepayment document
3846 --
3847 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3848 l_new_row_num).tax_currency_conversion_date :=
3849 tax_line_rec.tax_currency_conversion_date;
3850 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3851 l_new_row_num).tax_currency_conversion_type :=
3852 tax_line_rec.tax_currency_conversion_type;
3853 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3854 l_new_row_num).tax_currency_conversion_rate :=
3855 tax_line_rec.tax_currency_conversion_rate;
3856
3857 ELSIF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
3858 tax_line_rec.tax_id).applied_amt_handling_flag = 'R' THEN
3859
3860 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3861 l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
3862
3863 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3864 l_new_row_num).tax_currency_conversion_date := p_tax_determine_date;
3865 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3866 l_new_row_num).tax_currency_conversion_type :=
3867 tax_line_rec.tax_currency_conversion_type;
3868
3869 -- prorate prd_total_tax_amt, prd_total_tax_amt_tax_curr and
3870 -- prd_total_tax_amt_funcl_curr
3871 --
3872 l_line_amt_current :=
3873 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index);
3874
3875 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3876 l_new_row_num).prd_total_tax_amt := tax_line_rec.tax_amt *
3877 (l_line_amt_current/tax_line_rec.line_amt);
3878 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3879 l_new_row_num).prd_total_tax_amt_tax_curr :=
3880 tax_line_rec.tax_amt_tax_curr *
3881 l_line_amt_current/tax_line_rec.line_amt;
3882
3883 -- IF tax_line_rec.tax_amt_funcl_curr IS NOT NULL THEN
3884 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3885 l_new_row_num).prd_total_tax_amt_funcl_curr :=
3886 tax_line_rec.tax_amt_funcl_curr *
3887 l_line_amt_current/tax_line_rec.line_amt;
3888
3889 -- do rounding. May be moved to rounding package later
3890 --
3891 IF tax_line_rec.ledger_id IS NOT NULL THEN
3892 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3893 l_new_row_num).prd_total_tax_amt_funcl_curr :=
3894 ZX_TRD_SERVICES_PUB_PKG.round_amt_to_mau (
3895 tax_line_rec.ledger_id,
3896 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3897 l_new_row_num).prd_total_tax_amt_funcl_curr);
3898
3899 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3900 IF (g_level_statement >= g_current_runtime_level ) THEN
3901 FND_LOG.STRING(g_level_statement,
3902 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3903 'Incorrect return_status after calling ' ||
3904 'ZX_TRD_SERVICES_PUB_PKG.round_amt_to_mau');
3905 FND_LOG.STRING(g_level_statement,
3906 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
3907 'RETURN_STATUS = ' || x_return_status);
3908 FND_LOG.STRING(g_level_statement,
3909 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
3910 'ZX_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
3911 END IF;
3912 RETURN;
3913 END IF;
3914
3915 END IF; -- tax_line_rec.ledger_id IS NOT NULL
3916 -- END IF; -- tax_line_rec.tax_amt_funcl_curr IS NOT NULL
3917 END IF; -- applied_amt_handling_flag = 'P' or 'R'
3918
3919 -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
3920 -- populate process_for_recovery_flag to 'N'
3921 --
3922 /*
3923 * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
3924 *
3925 * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
3926 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3927 * l_new_row_num).process_for_recovery_flag := 'N';
3928 * ELSE
3929 * IF tax_line_rec.reporting_only_flag <> 'Y' THEN
3930 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3931 * l_new_row_num).process_for_recovery_flag := 'Y';
3932 * ELSE
3933 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3934 * l_new_row_num).process_for_recovery_flag := 'N';
3935 * END IF;
3936 * END IF;
3937 */
3938
3939 -- Populate other doc line amt, taxable amt and tax amt
3940 --
3941 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3942 l_new_row_num).other_doc_line_amt := tax_line_rec.line_amt;
3943
3944 -- bug 7024219
3945 IF NVL(tax_line_rec.historical_flag, 'N') = 'Y' THEN
3946 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3947 l_new_row_num).other_doc_line_taxable_amt :=
3948 NVL(tax_line_rec.unrounded_taxable_amt, tax_line_rec.taxable_amt);
3949 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3950 l_new_row_num).other_doc_line_tax_amt :=
3951 NVL(tax_line_rec.unrounded_tax_amt, tax_line_rec.tax_amt);
3952 ELSE
3953
3954 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3955 l_new_row_num).other_doc_line_taxable_amt :=
3956 tax_line_rec.unrounded_taxable_amt;
3957 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3958 l_new_row_num).other_doc_line_tax_amt :=
3959 tax_line_rec.unrounded_tax_amt;
3960 END IF;
3961
3962 -- Set copied_from_other_doc_flag to 'Y'
3963 --
3964 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3965 l_new_row_num).copied_from_other_doc_flag := 'Y';
3966
3967 -- set other_doc_source
3968 --
3969 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
3970 l_new_row_num).other_doc_source := 'APPLIED_FROM';
3971 --
3972 -- Bug#7302008 (Fusion Bug#7301957)- populate unrounded taxable amt and unrounded tax amt
3973 --
3974 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
3975 tax_line_rec.tax_id).applied_amt_handling_flag = 'P' THEN
3976
3977 -- set unrounded taxable amt and unrounded tax amt
3978 --
3979 -- bug#8203772
3980 -- check if the prepayment is being applied finally
3981 -- If yes, then get the tax amt remaning and set it to this
3982 -- do this check only for Payables.
3983
3984 l_unrounded_tax_amt := NULL;
3985
3986 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index) = 200 THEN
3987 SELECT line_amt
3988 INTO l_orig_amt
3989 FROM zx_lines_det_factors
3990 WHERE application_id =
3991 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(p_trx_line_index)
3992 AND entity_code =
3993 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(p_trx_line_index)
3994 AND event_class_code =
3995 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(p_trx_line_index)
3996 AND trx_id =
3997 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(p_trx_line_index)
3998 AND trx_line_id =
3999 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(p_trx_line_index)
4000 AND trx_level_type =
4001 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(p_trx_line_index);
4002
4003 SELECT sum(line_amt)
4004 INTO l_appl_line_amt
4005 FROM zx_lines_det_factors
4006 WHERE applied_from_application_id =
4007 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(p_trx_line_index)
4008 AND applied_from_entity_code =
4009 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(p_trx_line_index)
4010 AND applied_from_event_class_code =
4011 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(p_trx_line_index)
4012 AND applied_from_trx_id =
4013 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(p_trx_line_index)
4014 AND applied_from_line_id =
4015 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(p_trx_line_index)
4016 AND applied_from_trx_level_type =
4017 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(p_trx_line_index);
4018
4019 SELECT sum(tax_amt)
4020 INTO l_appl_tax_amt
4021 FROM zx_lines
4022 WHERE applied_from_application_id =
4023 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_application_id(p_trx_line_index)
4024 AND applied_from_entity_code =
4025 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_entity_code(p_trx_line_index)
4026 AND applied_from_event_class_code =
4027 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_event_class_code(p_trx_line_index)
4028 AND applied_from_trx_id =
4029 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_id(p_trx_line_index)
4030 AND applied_from_line_id =
4031 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_line_id(p_trx_line_index)
4032 AND applied_from_trx_level_type =
4033 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.applied_from_trx_level_type(p_trx_line_index)
4034 -- Added Tax Regime and Tax condition for Bug#13397403 --
4035 AND tax_regime_code = ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_regime_code
4036 AND tax = ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax
4037 AND tax_provider_id IS NULL
4038 AND Cancel_Flag <> 'Y'
4039 --AND offset_link_to_tax_line_id IS NULL
4040 AND mrc_tax_line_flag = 'N';
4041
4042 IF (g_level_procedure >= g_current_runtime_level ) THEN
4043 FND_LOG.STRING(g_level_procedure,
4044 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
4045 'Variable Values : l_orig_amt = '||TO_CHAR(l_orig_amt)||
4046 ', l_appl_line_amt = ' ||TO_CHAR(l_appl_line_amt)||
4047 ', l_appl_tax_amt = ' ||TO_CHAR(l_appl_tax_amt) ||
4048 ', line_amt = ' ||TO_CHAR(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index)) ||
4049 ', applied_doc_tax_line_tax_amt = ' ||TO_CHAR(tax_line_rec.tax_amt)
4050 );
4051 END IF;
4052
4053 --Bug 16400549, added nvl to l_appl_line_amt, l_appl_tax_amt
4054
4055 IF l_orig_amt + (NVL(l_appl_line_amt,0) + ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index)) <= 0 THEN
4056 -- Final Application
4057 IF (tax_line_rec.tax_amt + NVL(l_appl_tax_amt,0) >= 0)
4058 THEN
4059 l_unrounded_tax_amt := sign(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index)) *
4060 (tax_line_rec.tax_amt + NVL(l_appl_tax_amt,0));
4061 END IF;
4062 END IF;
4063 ELSE
4064 l_unrounded_tax_amt := NULL;
4065 END IF;
4066
4067 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_amt <> 0 THEN
4068
4069 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt:=
4070 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_taxable_amt *
4071 ( ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) /
4072 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_amt );
4073
4074 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt:=
4075 NVL(l_unrounded_tax_amt,
4076 Round(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_tax_amt *
4077 ( ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) /
4078 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_amt ), 20));
4079
4080
4081 ELSE -- other_doc_line_amt = 0 OR IS NULL
4082 -- copy unrounded_taxable_amt from reference document,
4083 --
4084 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt :=
4085 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_taxable_amt;
4086
4087 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt :=
4088 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_line_tax_amt;
4089
4090 END IF; -- other_doc_line_amt <> 0
4091
4092 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_amt:= NULL;
4093
4094 END IF;
4095 /* end changes for Bug#7302008 (Fusion Bug#7301957) */
4096
4097
4098 -- populate WHO columns
4099 --
4100 /*
4101 * WHO columns will be populated by pop_tax_line_for_trx_line in
4102 * ZX_TDS_TAX_LINES_POPU_PKG
4103 *
4104 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4105 * l_new_row_num).CREATED_BY := fnd_global.user_id;
4106 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4107 * l_new_row_num).CREATION_DATE := sysdate;
4108 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4109 * l_new_row_num).LAST_UPDATED_BY := fnd_global.user_id;
4110 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4111 * l_new_row_num).LAST_UPDATE_DATE := sysdate;
4112 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4113 * l_new_row_num).last_update_login := fnd_global.login_id;
4114 */
4115
4116 -- populate other columns
4117 --
4118 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4119 l_new_row_num).rounding_level_code := tax_line_rec.rounding_level_code;
4120 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4121 l_new_row_num).rounding_rule_code := tax_line_rec.rounding_rule_code;
4122 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4123 l_new_row_num).tax_date := p_tax_date;
4124 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4125 l_new_row_num).tax_determine_date := p_tax_determine_date;
4126 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4127 l_new_row_num).tax_point_date := p_tax_point_date;
4128 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4129 l_new_row_num).offset_flag := tax_line_rec.offset_flag;
4130
4131 --bug8517610
4132 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4133 l_new_row_num).offset_tax_rate_code := tax_line_rec.offset_tax_rate_code;
4134
4135 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4136 l_new_row_num).place_of_supply := tax_line_rec.place_of_supply;
4137 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4138 l_new_row_num).place_of_supply_type_code :=
4139 tax_line_rec.place_of_supply_type_code;
4140 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4141 l_new_row_num).place_of_supply_result_id :=
4142 tax_line_rec.place_of_supply_result_id;
4143 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4144 l_new_row_num).legal_message_pos:=
4145 tax_line_rec.legal_message_pos;
4146 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4147 l_new_row_num).tax_currency_code := tax_line_rec.tax_currency_code;
4148 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4149 l_new_row_num).tax_type_code := tax_line_rec.tax_type_code;
4150 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4151 l_new_row_num).reporting_only_flag := tax_line_rec.reporting_only_flag;
4152 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4153 l_new_row_num).tax_jurisdiction_code :=
4154 tax_line_rec.tax_jurisdiction_code;
4155 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4156 l_new_row_num).tax_jurisdiction_id := tax_line_rec.tax_jurisdiction_id;
4157 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4158 l_new_row_num).tax_registration_number :=
4159 tax_line_rec.tax_registration_number;
4160 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4161 l_new_row_num).registration_party_type :=
4162 tax_line_rec.registration_party_type;
4163 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4164 l_new_row_num).tax_applicability_result_id :=
4165 tax_line_rec.tax_applicability_result_id;
4166 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4167 l_new_row_num).legal_message_appl_2 :=
4168 tax_line_rec.legal_message_appl_2;
4169 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4170 l_new_row_num).direct_rate_result_id :=
4171 tax_line_rec.direct_rate_result_id;
4172 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4173 l_new_row_num).rounding_lvl_party_tax_prof_id :=
4174 tax_line_rec.rounding_lvl_party_tax_prof_id;
4175 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4176 l_new_row_num).rounding_lvl_party_type :=
4177 tax_line_rec.rounding_lvl_party_type;
4178 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4179 -- l_new_row_num).merchant_party_tax_reg_number :=
4180 -- tax_line_rec.merchant_party_tax_reg_number;
4181 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4182 l_new_row_num).self_assessed_flag := tax_line_rec.self_assessed_flag;
4183 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4184 l_new_row_num).tax_reg_num_det_result_id :=
4185 tax_line_rec.tax_reg_num_det_result_id;
4186 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4187 l_new_row_num).legal_message_trn :=
4188 tax_line_rec.legal_message_trn;
4189 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4190 l_new_row_num).tax_amt_included_flag := tax_line_rec.tax_amt_included_flag;
4191 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4192 -- l_new_row_num).line_amt_includes_tax_flag :=
4193 -- tax_line_rec.line_amt_includes_tax_flag;
4194
4195 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4196 l_new_row_num).manually_entered_flag := tax_line_rec.manually_entered_flag;
4197
4198 --
4199 -- populate taxable_basis_formula and tax_calculation_formula
4200 --
4201 -- Added IF condition to handle taxable_basis_formula mismatch --
4202 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4203 l_new_row_num).manually_entered_flag = 'Y' THEN
4204 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4205 l_new_row_num).taxable_basis_formula := 'PRORATED_TB';
4206 ELSE
4207 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4208 l_new_row_num).taxable_basis_formula := tax_line_rec.taxable_basis_formula;
4209 END IF;
4210
4211 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4212 l_new_row_num).tax_calculation_formula := tax_line_rec.tax_calculation_formula;
4213
4214 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4215 l_new_row_num).Tax_Only_Line_Flag := tax_line_rec.tax_only_line_flag;
4216 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4217 l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
4218
4219 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4220 l_new_row_num).hq_estb_reg_number :=
4221 tax_line_rec.hq_estb_reg_number;
4222 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4223 l_new_row_num).hq_estb_party_tax_prof_id :=
4224 tax_line_rec.hq_estb_party_tax_prof_id;
4225
4226 -- bug 6815566:
4227 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4228 l_new_row_num).tax_apportionment_line_number :=
4229 tax_line_rec.tax_apportionment_line_number;
4230
4231 -- Bug 8992240
4232
4233 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4234 l_new_row_num).orig_tax_amt_included_flag :=
4235 tax_line_rec.orig_tax_amt_included_flag;
4236 -- Bug 7117340 -- DFF ER
4237 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4238 l_new_row_num).attribute1 := tax_line_rec.attribute1;
4239 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4240 l_new_row_num).attribute2 := tax_line_rec.attribute2;
4241 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4242 l_new_row_num).attribute3 := tax_line_rec.attribute3;
4243 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4244 l_new_row_num).attribute4 := tax_line_rec.attribute4;
4245 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4246 l_new_row_num).attribute5 := tax_line_rec.attribute5;
4247 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4248 l_new_row_num).attribute6 := tax_line_rec.attribute6;
4249 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4250 l_new_row_num).attribute7 := tax_line_rec.attribute7;
4251 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4252 l_new_row_num).attribute8 := tax_line_rec.attribute8;
4253 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4254 l_new_row_num).attribute9 := tax_line_rec.attribute9;
4255 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4256 l_new_row_num).attribute10 := tax_line_rec.attribute10;
4257 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4258 l_new_row_num).attribute11 := tax_line_rec.attribute11;
4259 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4260 l_new_row_num).attribute12 := tax_line_rec.attribute12;
4261 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4262 l_new_row_num).attribute13 := tax_line_rec.attribute13;
4263 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4264 l_new_row_num).attribute14 := tax_line_rec.attribute14;
4265 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4266 l_new_row_num).attribute15 := tax_line_rec.attribute15;
4267 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4268 l_new_row_num).attribute_category:= tax_line_rec.attribute_category;
4269
4270 IF (x_begin_index IS NULL) THEN
4271 x_begin_index := l_new_row_num;
4272 END IF;
4273 END LOOP; -- FOR tax_line_rec in get_tax_lines
4274
4275 IF (x_begin_index IS NOT NULL) THEN
4276 x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
4277 END IF;
4278
4279 -- copy transaction info to new tax lines for new tax_lines created here
4280 --
4281 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
4282 p_trx_line_index ,
4283 l_begin_index,
4284 x_end_index,
4285 x_return_status,
4286 l_error_buffer);
4287
4288 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4289 IF (g_level_statement >= g_current_runtime_level ) THEN
4290 FND_LOG.STRING(g_level_statement,
4291 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
4292 'Incorrect return_status after calling ' ||
4293 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
4294 FND_LOG.STRING(g_level_statement,
4295 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
4296 'RETURN_STATUS = ' || x_return_status);
4297 FND_LOG.STRING(g_level_statement,
4298 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
4299 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
4300 END IF;
4301 RETURN;
4302 END IF;
4303
4304 IF (g_level_procedure >= g_current_runtime_level ) THEN
4305
4306 FND_LOG.STRING(g_level_procedure,
4307 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
4308 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
4309 END IF;
4310
4311 EXCEPTION
4312 WHEN OTHERS THEN
4313 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4314
4315 IF (g_level_unexpected >= g_current_runtime_level ) THEN
4316 FND_LOG.STRING(g_level_unexpected,
4317 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied',
4318 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
4319 FND_LOG.STRING(g_level_unexpected,
4320 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied.END',
4321 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_applied(-)');
4322 END IF;
4323
4324 END get_det_tax_lines_from_applied;
4325
4326 ----------------------------------------------------------------------
4327 -- PROCEDURE
4328 -- get_det_tax_lines_from_adjust
4329 --
4330 -- DESCRIPTION
4331 --
4332 -- This procedure get detail tax lines from adjusted to document
4333 -- AR won't call etax for adjustment to historical transactions.
4334 --
4335 -- IN p_transaction_line_tbl
4336 -- p_trx_line_index
4337 -- IN OUT NOCOPY p_detail_tax_lines_tbl
4338 -- x_begin_index
4339 -- x_end_index
4340 -- OUT NOCOPY x_return_status
4341
4342
4343 PROCEDURE get_det_tax_lines_from_adjust (
4344 p_event_class_rec IN zx_api_pub.event_class_rec_type,
4345 p_trx_line_index IN BINARY_INTEGER,
4346 p_tax_date IN DATE,
4347 p_tax_determine_date IN DATE,
4348 p_tax_point_date IN DATE,
4349 x_begin_index IN OUT NOCOPY BINARY_INTEGER,
4350 x_end_index IN OUT NOCOPY BINARY_INTEGER,
4351 x_return_status OUT NOCOPY VARCHAR2) IS
4352
4353 CURSOR get_tax_lines IS
4354 SELECT * FROM zx_lines
4355 WHERE application_id =
4356 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_application_id(p_trx_line_index)
4357 AND entity_code =
4358 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_entity_code(p_trx_line_index)
4359 AND event_class_code =
4360 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_event_class_code(p_trx_line_index)
4361 AND trx_id =
4362 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_id( p_trx_line_index)
4363 AND trx_line_id =
4364 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_line_id(
4365 p_trx_line_index), trx_line_id)
4366 AND trx_level_type =
4367 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.adjusted_doc_trx_level_type(
4368 p_trx_line_index), trx_level_type)
4369 /* Bug 5131206:
4370 For partner integration, when the line_level_action is 'ALLOCATE_TAX_ONLY_ADJUSTMENT',
4371 eBTax needs to create prorated tax lines.
4372 In other cases, partner tax lines should be excluded.
4373 */
4374 -- AND tax_provider_id IS NULL
4375 AND (tax_provider_id IS NULL
4376 OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT'
4377 OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index) = 'ADJUSTMENTS')
4378 AND Cancel_Flag <> 'Y'
4379 --Bug 8493615 AND offset_link_to_tax_line_id IS NULL
4380 AND mrc_tax_line_flag = 'N';
4381
4382 -- Bug 5675944 : Retain tax_line_id for UPDATE
4383 -- Bug 7597449 Added Tax apportionment line number to pick the correct tax line id for upgraded invoices which have same regime-tax information.
4384 CURSOR get_key_columns_cur
4385 (c_tax_regime_code zx_regimes_b.tax_regime_code%TYPE,
4386 c_tax zx_taxes_b.tax%TYPE,
4387 c_apportionment_line_number zx_lines.tax_apportionment_line_number%type) IS
4388 SELECT * FROM zx_lines
4389 WHERE application_id = p_event_class_rec.application_id
4390 AND entity_code = p_event_class_rec.entity_code
4391 AND event_class_code = p_event_class_rec.event_class_code
4392 AND trx_id = p_event_class_rec.trx_id
4393 AND trx_line_id =
4394 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
4395 AND trx_level_type =
4396 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
4397 AND tax_regime_code = c_tax_regime_code
4398 AND tax = c_tax
4399 AND tax_apportionment_line_number = c_apportionment_line_number
4400 AND mrc_tax_line_flag = 'N';
4401
4402 l_tax_line_rec zx_lines%ROWTYPE;
4403 l_new_row_num NUMBER;
4404 l_begin_index BINARY_INTEGER;
4405 l_error_buffer VARCHAR2(200);
4406
4407 l_cm_manual_flag VARCHAR2(1);
4408
4409 BEGIN
4410
4411 IF (g_level_procedure >= g_current_runtime_level ) THEN
4412 FND_LOG.STRING(g_level_procedure,
4413 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust.BEGIN',
4414 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(+)'|| 'trx_line_index = ' || to_char(p_trx_line_index));
4415 END IF;
4416
4417 x_return_status := FND_API.G_RET_STS_SUCCESS;
4418
4419 l_new_row_num := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
4420 l_begin_index := l_new_row_num + 1;
4421
4422 FOR tax_line_rec in get_tax_lines LOOP
4423
4424 -- populate tax cache ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl with this tax_id,
4425 -- if it does not exists there.
4426 --
4427 ZX_TDS_UTILITIES_PKG.populate_tax_cache (
4428 p_tax_id => tax_line_rec.tax_id,
4429 p_return_status => x_return_status,
4430 p_error_buffer => l_error_buffer);
4431
4432 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4433 IF (g_level_statement >= g_current_runtime_level ) THEN
4434 FND_LOG.STRING(g_level_statement,
4435 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
4436 'Incorrect return_status after calling ' ||
4437 'ZX_TDS_UTILITIES_PKG.populate_tax_cache()');
4438 FND_LOG.STRING(g_level_statement,
4439 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
4440 'RETURN_STATUS = ' || x_return_status);
4441 FND_LOG.STRING(g_level_statement,
4442 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust.END',
4443 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(-)');
4444 END IF;
4445
4446 RETURN;
4447 END IF;
4448
4449 --increment l_new_row_num
4450 --
4451 l_new_row_num := l_new_row_num +1;
4452
4453 IF (g_level_procedure >= g_current_runtime_level ) THEN
4454 FND_LOG.STRING(g_level_procedure,
4455 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
4456 'Processsing Tax Line Num = ' || to_char(l_new_row_num));
4457 END IF;
4458
4459 -- Populate the tax_line_id with Sequence
4460 --
4461 /*
4462 * will be populated by pop_tax_line_for_trx_line
4463 *
4464 * SELECT zx_lines_s.NEXTVAL
4465 * INTO ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4466 * l_new_row_num).tax_line_id from dual;
4467 */
4468
4469 -- bug 5675944: retain tax_line_id for UPDATE
4470 --
4471 IF p_event_class_rec.tax_event_type_code = 'UPDATE' AND
4472 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) IN ('UPDATE','CREATE_WITH_TAX')
4473 THEN
4474 OPEN get_key_columns_cur(tax_line_rec.tax_regime_code, tax_line_rec.tax,tax_line_rec.tax_apportionment_line_number); -- Bug7597449
4475
4476 FETCH get_key_columns_cur INTO l_tax_line_rec;
4477
4478 IF get_key_columns_cur%FOUND THEN
4479 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4480 l_new_row_num).tax_line_id := l_tax_line_rec.tax_line_id;
4481 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4482 l_new_row_num).associated_child_frozen_flag :=
4483 l_tax_line_rec.associated_child_frozen_flag;
4484 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).manually_entered_flag :=
4485 l_tax_line_rec.manually_entered_flag;
4486 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).summary_tax_line_id :=
4487 l_tax_line_rec.summary_tax_line_id;
4488
4489
4490 -- if CM has a manual tax line which was not copied from the invoice.
4491 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).manually_entered_flag = 'Y'
4492 AND l_tax_line_rec.copied_from_other_doc_flag = 'N'
4493 THEN
4494 l_cm_manual_flag := 'Y';
4495 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).copied_from_other_doc_flag :=
4496 l_tax_line_rec.copied_from_other_doc_flag;
4497 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).other_doc_source :=
4498 l_tax_line_rec.other_doc_source;
4499 IF p_event_class_rec.allow_manual_lin_recalc_flag ='Y' THEN
4500 IF l_tax_line_rec.line_amt <> 0 THEN
4501 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4502 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4503 (NVL(l_tax_line_rec.unrounded_taxable_amt,l_tax_line_rec.taxable_amt) / l_tax_line_rec.line_amt);
4504 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4505 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4506 (NVL(l_tax_line_rec.unrounded_tax_amt,l_tax_line_rec.tax_amt) / l_tax_line_rec.line_amt );
4507 ELSE
4508 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4509 := NVL(l_tax_line_rec.unrounded_taxable_amt,l_tax_line_rec.taxable_amt);
4510 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4511 := NVL(l_tax_line_rec.unrounded_tax_amt,l_tax_line_rec.tax_amt);
4512 END IF;
4513 ELSE
4514 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4515 := NVL(l_tax_line_rec.unrounded_taxable_amt,l_tax_line_rec.taxable_amt);
4516 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4517 := NVL(l_tax_line_rec.unrounded_tax_amt,l_tax_line_rec.tax_amt);
4518 END IF;
4519 END IF;
4520 ELSE
4521 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4522 l_new_row_num).tax_line_id := NULL;
4523 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4524 l_new_row_num).manually_entered_flag :=
4525 tax_line_rec.manually_entered_flag;
4526 END IF;
4527 close get_key_columns_cur; --Bug 5844597
4528 ELSE
4529 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4530 l_new_row_num).tax_line_id := NULL;
4531 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4532 l_new_row_num).manually_entered_flag :=
4533 tax_line_rec.manually_entered_flag;
4534 END IF;
4535
4536 -- populate tax related information from tax_line_rec
4537 --
4538 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4539 l_new_row_num).tax_regime_id := tax_line_rec.tax_regime_id;
4540 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4541 l_new_row_num).tax_regime_code:=tax_line_rec.tax_regime_code;
4542 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4543 l_new_row_num).tax_id := tax_line_rec.tax_id;
4544 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4545 l_new_row_num).tax := tax_line_rec.tax;
4546 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4547 l_new_row_num).tax_status_id := tax_line_rec.tax_status_id;
4548 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4549 l_new_row_num).tax_status_code:=tax_line_rec.tax_status_code;
4550
4551 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4552 l_new_row_num).tax_rate_code := tax_line_rec.tax_rate_code;
4553 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4554 l_new_row_num).tax_rate_id := tax_line_rec.tax_rate_id;
4555 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4556 l_new_row_num).tax_rate := tax_line_rec.tax_rate;
4557 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4558 l_new_row_num).tax_rate_type := tax_line_rec.tax_rate_type; --Bug 5650193
4559
4560
4561 -- Bug#6729097 --
4562 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4563 l_new_row_num).tax_apportionment_line_number := tax_line_rec.tax_apportionment_line_number;
4564
4565 IF (g_level_statement >= g_current_runtime_level ) THEN
4566 FND_LOG.STRING(g_level_statement,
4567 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
4568 'Tax Apportionment Line Number: ' ||
4569 to_char(tax_line_rec.tax_apportionment_line_number));
4570 END IF;
4571
4572 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4573 l_new_row_num).multiple_jurisdictions_flag :=
4574 tax_line_rec.multiple_jurisdictions_flag;
4575
4576 -- bug 5508356: populate account_source_tax_rate_id
4577 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4578 l_new_row_num).account_source_tax_rate_id :=
4579 tax_line_rec.account_source_tax_rate_id;
4580
4581 -- bug 5077691: populate legal_reporting_status
4582 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
4583 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4584 l_new_row_num).legal_reporting_status :=
4585 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
4586 tax_line_rec.tax_id).legal_reporting_status_def_val;
4587 END IF;
4588
4589 -- If the value of p_event_class_rec.tax_recovery_flag is 'N',
4590 -- populate process_for_recovery_flag to 'N'. If it is 'Y', check
4591 -- reporting_only_flag to set tax_recovery_flag
4592 --
4593 /*
4594 * call populate_recovery_flg in ZX_TDS_TAX_LINES_POPU_PKG instead
4595 *
4596 * IF NVL(p_event_class_rec.tax_recovery_flag, 'N') = 'N' THEN
4597 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4598 * l_new_row_num).process_for_recovery_flag := 'N';
4599 * ELSE
4600 * IF tax_line_rec.reporting_only_flag <> 'Y' THEN
4601 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4602 * l_new_row_num).process_for_recovery_flag := 'Y';
4603 * ELSE
4604 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4605 * l_new_row_num).process_for_recovery_flag := 'N';
4606 * END IF;
4607 * END IF;
4608 */
4609
4610 -- Populate other doc line amt, taxable amt and tax amt
4611 --
4612 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4613 l_new_row_num).other_doc_line_amt := tax_line_rec.line_amt;
4614 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4615 l_new_row_num).other_doc_line_taxable_amt :=
4616 tax_line_rec.unrounded_taxable_amt;
4617 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4618 l_new_row_num).other_doc_line_tax_amt :=
4619 tax_line_rec.unrounded_tax_amt;
4620
4621 --
4622 -- populate taxable_basis_formula and tax_calculation_formula
4623 --
4624 -- Added IF condition to handle taxable_basis_formula mismatch --
4625 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4626 l_new_row_num).manually_entered_flag = 'Y' THEN
4627 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4628 l_new_row_num).taxable_basis_formula := 'PRORATED_TB';
4629 ELSE
4630 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4631 l_new_row_num).taxable_basis_formula :=
4632 tax_line_rec.taxable_basis_formula;
4633 END IF;
4634
4635 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4636 l_new_row_num).tax_calculation_formula :=
4637 tax_line_rec.tax_calculation_formula;
4638
4639 -- Set copied_from_other_doc_flag to 'Y'
4640 --
4641 IF NVL(l_cm_manual_flag, 'N') = 'N' THEN
4642 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4643 l_new_row_num).copied_from_other_doc_flag := 'Y';
4644
4645 -- set other_doc_source
4646 --
4647 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4648 l_new_row_num).other_doc_source := 'ADJUSTED';
4649 END IF;
4650
4651 -- populate WHO columns
4652 --
4653 /*
4654 * WHO columns will be populated by pop_tax_line_for_trx_line
4655 * in ZX_TDS_TAX_LINES_POPU_PKG
4656 *
4657 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4658 * l_new_row_num).created_by := fnd_global.user_id;
4659 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4660 * l_new_row_num).creation_date := sysdate;
4661 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4662 * l_new_row_num).LAST_UPDATED_BY := fnd_global.user_id;
4663 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4664 * l_new_row_num).last_update_date := sysdate;
4665 * ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4666 * l_new_row_num).last_update_login := fnd_global.login_id;
4667 *
4668 */
4669
4670 -- populate other columns
4671 --
4672 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4673 l_new_row_num).rounding_level_code := tax_line_rec.rounding_level_code;
4674 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4675 l_new_row_num).rounding_rule_code := tax_line_rec.rounding_rule_code;
4676 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4677 l_new_row_num).tax_date := p_tax_date;
4678 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4679 l_new_row_num).tax_determine_date := p_tax_determine_date;
4680 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4681 l_new_row_num).tax_point_date := p_tax_point_date;
4682 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4683 l_new_row_num).offset_flag := tax_line_rec.offset_flag;
4684
4685 -- Bug 6776312
4686 /*IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).offset_flag,'Y') = 'Y' THEN
4687 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).offset_flag := 'N';
4688 ELSE
4689 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).offset_flag := 'Y';
4690 END IF;*/ --bug6929024
4691
4692 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4693 l_new_row_num).offset_tax_rate_code := tax_line_rec.offset_tax_rate_code;
4694 -- Bug 6776312
4695
4696 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4697 l_new_row_num).place_of_supply := tax_line_rec.place_of_supply;
4698 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4699 l_new_row_num).place_of_supply_type_code :=
4700 tax_line_rec.place_of_supply_type_code;
4701 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4702 l_new_row_num).place_of_supply_result_id :=
4703 tax_line_rec.place_of_supply_result_id;
4704 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4705 l_new_row_num).legal_message_pos :=
4706 tax_line_rec.legal_message_pos;
4707 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4708 l_new_row_num).tax_currency_code := tax_line_rec.tax_currency_code;
4709
4710 /* Bug 5149379: When the trx currency is different from the tax currency,
4711 it is necessary to pick the tax_currency_conversion_date,
4712 tax_currency_conversion_type, tax_currency_conversion_rate
4713 information from the invoice tax lines.
4714 */
4715 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4716 l_new_row_num).tax_currency_conversion_date := tax_line_rec.tax_currency_conversion_date;
4717 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4718 l_new_row_num).tax_currency_conversion_type := tax_line_rec.tax_currency_conversion_type;
4719 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4720 l_new_row_num).tax_currency_conversion_rate := tax_line_rec.tax_currency_conversion_rate;
4721
4722 /* Bug 5131206: For partner integration, when the line_level_action is
4723 'ALLOCATE_TAX_ONLY_ADJUSTMENT', eBTax needs to create
4724 prorated tax lines and stamp the tax_provider_id on
4725 the tax line(s).
4726 */
4727
4728 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4729 l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
4730
4731 if((ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT'
4732 OR ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index) = 'ADJUSTMENTS') and
4733 tax_line_rec.tax_provider_id is not null ) THEN
4734 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).SYNC_WITH_PRVDR_FLAG := 'Y';
4735 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4736 l_new_row_num).global_attribute_category := tax_line_rec.global_attribute_category;
4737 end if;
4738
4739 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4740 l_new_row_num).tax_type_code := tax_line_rec.tax_type_code;
4741 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4742 l_new_row_num).reporting_only_flag := tax_line_rec.reporting_only_flag;
4743 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4744 l_new_row_num).tax_jurisdiction_code :=
4745 tax_line_rec.tax_jurisdiction_code;
4746 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4747 l_new_row_num).tax_jurisdiction_id := tax_line_rec.tax_jurisdiction_id;
4748 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4749 l_new_row_num).tax_registration_number :=
4750 tax_line_rec.tax_registration_number;
4751 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4752 l_new_row_num).registration_party_type :=
4753 tax_line_rec.registration_party_type;
4754 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4755 l_new_row_num).tax_applicability_result_id :=
4756 tax_line_rec.tax_applicability_result_id;
4757 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4758 l_new_row_num).legal_message_appl_2 :=
4759 tax_line_rec.legal_message_appl_2;
4760 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4761 l_new_row_num).direct_rate_result_id :=
4762 tax_line_rec.direct_rate_result_id;
4763 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4764 l_new_row_num).legal_message_rate :=
4765 tax_line_rec.legal_message_rate;
4766 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4767 l_new_row_num).rounding_lvl_party_tax_prof_id :=
4768 tax_line_rec.rounding_lvl_party_tax_prof_id;
4769 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4770 l_new_row_num).rounding_lvl_party_type :=
4771 tax_line_rec.rounding_lvl_party_type;
4772 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4773 -- l_new_row_num).merchant_party_tax_reg_number :=
4774 -- tax_line_rec.merchant_party_tax_reg_number;
4775 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4776 l_new_row_num).Self_Assessed_Flag := tax_line_rec.self_assessed_flag;
4777 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4778 l_new_row_num).tax_reg_num_det_result_id :=
4779 tax_line_rec.tax_reg_num_det_result_id;
4780 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4781 l_new_row_num).legal_message_trn :=
4782 tax_line_rec.legal_message_trn;
4783 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4784 l_new_row_num).hq_estb_reg_number :=
4785 tax_line_rec.hq_estb_reg_number;
4786 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4787 l_new_row_num).hq_estb_party_tax_prof_id :=
4788 tax_line_rec.hq_estb_party_tax_prof_id;
4789
4790 -- If line_amt_include_tax_flag on trx line is A, then set to 'Y'
4791 -- for other cases, set to the one from adjusted doc.
4792 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt_includes_tax_flag(
4793 p_trx_line_index) = 'A'
4794 THEN
4795 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4796 l_new_row_num).tax_amt_included_flag := 'Y';
4797
4798 ELSE
4799 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4800 l_new_row_num).tax_amt_included_flag
4801 := tax_line_rec.tax_amt_included_flag;
4802 END IF;
4803
4804 --Bug 7133202 Added NVL for deriving unrounded taxable amt and unrounded tax amt. For migrated invoices unrounded taxable amt and unrounded tax amt can be NULL,so in this scenario taxable amt and tax amt values will be used for tax calculation.
4805
4806 IF NVL(l_cm_manual_flag, 'N') = 'N' THEN
4807 IF NVL(tax_line_rec.historical_flag, 'N') = 'Y' THEN
4808
4809 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
4810 p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT'
4811 THEN
4812
4813 -- for tax only adjustment set the unrounded tax amount to the
4814 -- unrounded tax amount of the original doc.
4815 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4816 l_new_row_num).unrounded_taxable_amt := NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt);
4817 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4818 l_new_row_num).unrounded_tax_amt := NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt);
4819
4820 ELSE
4821 -- current trx is a regular adjustment or CM
4822 -- prorate the line amt to get the unrounded taxable/tax amount
4823
4824 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4825 l_new_row_num).tax_amt_included_flag ='Y'
4826 AND tax_line_rec.tax_amt_included_flag = 'N'
4827 THEN
4828 -- If current trx is a tax inclusive trx, while the original trx is
4829 -- tax exclusive trx.
4830
4831 -- If-Else Condition added for Bug#8540809
4832 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_hdr_tx_amt(p_trx_line_index) IS NOT NULL AND
4833 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_hdr_tx_appl_flag(p_trx_line_index) = 'Y') OR
4834 -- Added condition for Bug#13593659
4835 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_line_tx_amt(p_trx_line_index) IS NOT NULL
4836 THEN
4837 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4838 l_new_row_num).unrounded_taxable_amt
4839 := tax_line_rec.unrounded_taxable_amt;
4840
4841 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4842 l_new_row_num).unrounded_tax_amt
4843 := tax_line_rec.unrounded_tax_amt;
4844 ELSE
4845 IF ( tax_line_rec.line_amt + tax_line_rec.tax_amt) <> 0 THEN
4846 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4847 l_new_row_num).unrounded_taxable_amt
4848 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4849 ( NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt) /
4850 ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
4851
4852 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4853 l_new_row_num).unrounded_tax_amt
4854 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4855 (NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt) /
4856 ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
4857 ELSE
4858 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4859 l_new_row_num).unrounded_taxable_amt
4860 := NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt);
4861 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4862 l_new_row_num).unrounded_tax_amt
4863 := NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt);
4864 END IF;
4865 END IF;
4866 ELSE -- both current tax line and original tax line are inclusive and exclusive
4867 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(tax_line_rec.tax_id).compounding_precedence IS NULL
4868 and tax_line_rec.tax_amt_included_flag = 'Y'
4869 and nvl(ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(tax_line_rec.tax_id).taxable_basis_rule_flag,'N') = 'N'
4870 and tax_line_rec.TRX_LINE_QUANTITY <> tax_line_rec.taxable_amt THEN
4871 tax_line_rec.unrounded_taxable_amt := tax_line_rec.line_amt * 100 / (100 + tax_line_rec.tax_rate);
4872 tax_line_rec.unrounded_tax_amt := tax_line_rec.line_amt * tax_line_rec.tax_rate / (100 + tax_line_rec.tax_rate);
4873 END IF;
4874 IF tax_line_rec.line_amt <> 0 THEN
4875 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4876 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4877 (NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt) / tax_line_rec.line_amt);
4878
4879 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4880 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4881 (NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt) / tax_line_rec.line_amt );
4882 ELSE -- equal to that the original trx is a tax only trx
4883 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index) = 'CREDIT_MEMO' THEN
4884 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4885 := -1 * NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt);
4886 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4887 := -1 * NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt);
4888 ELSE
4889 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4890 := NVL(tax_line_rec.unrounded_taxable_amt,tax_line_rec.taxable_amt);
4891 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4892 := NVL(tax_line_rec.unrounded_tax_amt,tax_line_rec.tax_amt);
4893 END IF;
4894 END IF;
4895 END IF; -- tax_line_rec.tax_amt_included_flag = 'N'
4896
4897 END IF; -- 'ALLOCATE_TAX_ONLY_ADJUSTMENT' trx and else
4898 ELSE -- Historical Flag is 'N'
4899 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
4900 p_trx_line_index) = 'ALLOCATE_TAX_ONLY_ADJUSTMENT'
4901 THEN
4902
4903 -- for tax only adjustment set the unrounded tax amount to the
4904 -- unrounded tax amount of the original doc.
4905 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4906 l_new_row_num).unrounded_taxable_amt := tax_line_rec.unrounded_taxable_amt;
4907 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4908 l_new_row_num).unrounded_tax_amt := tax_line_rec.unrounded_tax_amt;
4909
4910 ELSE
4911 -- current trx is a regular adjustment or CM
4912 -- prorate the line amt to get the unrounded taxable/tax amount
4913
4914 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4915 l_new_row_num).tax_amt_included_flag ='Y'
4916 AND tax_line_rec.tax_amt_included_flag = 'N'
4917 THEN
4918 -- If current trx is a tax inclusive trx, while the original trx is
4919 -- tax exclusive trx.
4920
4921 -- If-Else Condition added for Bug#8540809
4922 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_hdr_tx_amt(p_trx_line_index) IS NOT NULL AND
4923 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_hdr_tx_appl_flag(p_trx_line_index) = 'Y') OR
4924 -- Added condition for Bug#13593659
4925 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ctrl_total_line_tx_amt(p_trx_line_index) IS NOT NULL
4926 THEN
4927 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4928 l_new_row_num).unrounded_taxable_amt
4929 := tax_line_rec.unrounded_taxable_amt;
4930 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4931 l_new_row_num).unrounded_tax_amt
4932 := tax_line_rec.unrounded_tax_amt;
4933 ELSE
4934 IF ( tax_line_rec.line_amt + tax_line_rec.tax_amt) <> 0 THEN
4935 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4936 l_new_row_num).unrounded_taxable_amt
4937 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4938 ( tax_line_rec.unrounded_taxable_amt /
4939 ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
4940 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4941 l_new_row_num).unrounded_tax_amt
4942 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4943 ( tax_line_rec.unrounded_tax_amt /
4944 ( tax_line_rec.line_amt + tax_line_rec.tax_amt) );
4945 ELSE
4946 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4947 l_new_row_num).unrounded_taxable_amt
4948 := tax_line_rec.unrounded_taxable_amt;
4949 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
4950 l_new_row_num).unrounded_tax_amt
4951 := tax_line_rec.unrounded_tax_amt;
4952 END IF;
4953 END IF;
4954 ELSE -- both current tax line and original tax line are inclusive and exclusive
4955 IF tax_line_rec.line_amt <> 0 THEN
4956 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4957 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4958 ( tax_line_rec.unrounded_taxable_amt / tax_line_rec.line_amt);
4959
4960 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4961 := ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index) *
4962 ( tax_line_rec.unrounded_tax_amt / tax_line_rec.line_amt );
4963 ELSE -- equal to that the original trx is a tax only trx
4964 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index) = 'CREDIT_MEMO' THEN
4965 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4966 := -1 * tax_line_rec.unrounded_taxable_amt;
4967 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4968 := -1 * tax_line_rec.unrounded_tax_amt;
4969 ELSE
4970 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt
4971 := tax_line_rec.unrounded_taxable_amt;
4972 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt
4973 := tax_line_rec.unrounded_tax_amt;
4974 END IF;
4975 END IF;
4976 END IF; -- tax_line_rec.tax_amt_included_flag = 'N'
4977
4978 END IF; -- 'ALLOCATE_TAX_ONLY_ADJUSTMENT' trx and else
4979
4980 END IF; -- Historical Flag check
4981 END IF;
4982
4983 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).basis_result_id
4984 := tax_line_rec.basis_result_id;
4985 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).legal_message_basis
4986 := tax_line_rec.legal_message_basis;
4987 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).calc_result_id
4988 := tax_line_rec.calc_result_id;
4989 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).legal_message_calc
4990 := tax_line_rec.legal_message_calc;
4991 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_base_modifier_rate
4992 := tax_line_rec.tax_base_modifier_rate;
4993
4994 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).compounding_dep_tax_flag
4995 := tax_line_rec.compounding_dep_tax_flag;
4996 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).compounding_tax_miss_flag
4997 := tax_line_rec.compounding_tax_miss_flag;
4998 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).Compounding_Tax_Flag
4999 := tax_line_rec.compounding_tax_flag;
5000
5001 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5002 l_new_row_num).tax_amt_included_flag = 'Y' THEN
5003
5004 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.tax_amt_included_flag(
5005 p_trx_line_index) := 'Y';
5006 END IF;
5007
5008 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5009 l_new_row_num).compounding_dep_tax_flag = 'Y' THEN
5010
5011 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.compounding_tax_flag(
5012 p_trx_line_index) := 'Y';
5013 END IF;
5014
5015 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_exemption_id
5016 := tax_line_rec.tax_exemption_id;
5017 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_before_exemption
5018 := tax_line_rec.tax_rate_before_exemption;
5019 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_name_before_exemption
5020 := tax_line_rec.tax_rate_name_before_exemption;
5021
5022 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_rate_modifier
5023 := tax_line_rec.exempt_rate_modifier;
5024 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_certificate_number
5025 := tax_line_rec.exempt_certificate_number;
5026 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_reason
5027 := tax_line_rec.exempt_reason;
5028 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).exempt_reason_code
5029 := tax_line_rec.exempt_reason_code;
5030
5031 zx_tds_calc_services_pub_pkg.g_detail_tax_lines_tbl(l_new_row_num).tax_exception_id
5032 := tax_line_rec.tax_exception_id;
5033 zx_tds_calc_services_pub_pkg.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_before_exception
5034 := tax_line_rec.tax_rate_before_exception;
5035 zx_tds_calc_services_pub_pkg.g_detail_tax_lines_tbl(l_new_row_num).tax_rate_name_before_exception
5036 := tax_line_rec.tax_rate_name_before_exception;
5037 zx_tds_calc_services_pub_pkg.g_detail_tax_lines_tbl(l_new_row_num).exception_rate
5038 := tax_line_rec.exception_rate;
5039
5040 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5041 l_new_row_num).adjusted_doc_tax_line_id := tax_line_rec.tax_line_id;
5042
5043 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5044 l_new_row_num).Tax_Only_Line_Flag := tax_line_rec.tax_only_line_flag;
5045 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5046 l_new_row_num).tax_provider_id := tax_line_rec.tax_provider_id;
5047
5048 -- Bug 8992240
5049
5050 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5051 l_new_row_num).orig_tax_amt_included_flag :=
5052 tax_line_rec.orig_tax_amt_included_flag;
5053 -- Bug 7117340 -- DFF ER
5054 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5055 l_new_row_num).attribute1 := tax_line_rec.attribute1;
5056 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5057 l_new_row_num).attribute2 := tax_line_rec.attribute2;
5058 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5059 l_new_row_num).attribute3 := tax_line_rec.attribute3;
5060 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5061 l_new_row_num).attribute4 := tax_line_rec.attribute4;
5062 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5063 l_new_row_num).attribute5 := tax_line_rec.attribute5;
5064 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5065 l_new_row_num).attribute6 := tax_line_rec.attribute6;
5066 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5067 l_new_row_num).attribute7 := tax_line_rec.attribute7;
5068 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5069 l_new_row_num).attribute8 := tax_line_rec.attribute8;
5070 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5071 l_new_row_num).attribute9 := tax_line_rec.attribute9;
5072 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5073 l_new_row_num).attribute10 := tax_line_rec.attribute10;
5074 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5075 l_new_row_num).attribute11 := tax_line_rec.attribute11;
5076 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5077 l_new_row_num).attribute12 := tax_line_rec.attribute12;
5078 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5079 l_new_row_num).attribute13 := tax_line_rec.attribute13;
5080 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5081 l_new_row_num).attribute14 := tax_line_rec.attribute14;
5082 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5083 l_new_row_num).attribute15 := tax_line_rec.attribute15;
5084 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
5085 l_new_row_num).attribute_category:= tax_line_rec.attribute_category;
5086
5087 IF (x_begin_index IS NULL) THEN
5088 x_begin_index := l_new_row_num;
5089 END IF;
5090
5091 IF (g_level_statement >= g_current_runtime_level ) THEN
5092 FND_LOG.STRING(g_level_statement,
5093 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
5094 'Tax Line#' ||l_new_row_num ||
5095 ': Taxable Amount = '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_taxable_amt||
5096 ', Tax Amount = '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num).unrounded_tax_amt);
5097 END IF;
5098
5099 END LOOP; -- FOR tax_line_rec in get_tax_lines
5100
5101 IF (x_begin_index IS NOT NULL) THEN
5102 x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
5103 END IF;
5104
5105 -- copy transaction info to new tax lines for new tax_lines created here
5106 --
5107 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
5108 p_trx_line_index ,
5109 l_begin_index,
5110 x_end_index,
5111 x_return_status ,
5112 l_error_buffer );
5113
5114 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5115 IF (g_level_statement >= g_current_runtime_level ) THEN
5116 FND_LOG.STRING(g_level_statement,
5117 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
5118 'Incorrect return_status after calling ' ||
5119 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
5120 FND_LOG.STRING(g_level_statement,
5121 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
5122 'RETURN_STATUS = ' || x_return_status);
5123 FND_LOG.STRING(g_level_statement,
5124 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust.END',
5125 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(-)');
5126 END IF;
5127
5128 RETURN;
5129 END IF;
5130
5131 IF (g_level_procedure >= g_current_runtime_level ) THEN
5132
5133 FND_LOG.STRING(g_level_procedure,
5134 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust.END',
5135 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(-)');
5136 END IF;
5137
5138 EXCEPTION
5139 WHEN OTHERS THEN
5140 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5141
5142 IF (g_level_unexpected >= g_current_runtime_level ) THEN
5143 FND_LOG.STRING(g_level_unexpected,
5144 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust',
5145 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5146 FND_LOG.STRING(g_level_unexpected,
5147 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust.END',
5148 'ZX_TDS_APPLICABILITY_DETM_PKG.get_det_tax_lines_from_adjust(-)');
5149 END IF;
5150
5151 END get_det_tax_lines_from_adjust;
5152
5153 ----------------------------------------------------------------------
5154 -- PUBLIC PROCEDURE
5155 -- get_place_of_supply
5156 --
5157 -- DESCRIPTION
5158 --
5159 -- This procedure determines place of supply
5160 --
5161 -- IN/OUT
5162 -- p_event_class_rec
5163 -- IN p_tax_regime_code
5164 -- p_tax_id
5165 -- p_tax
5166 -- p_trx_line_index
5167 -- p_tax_determine_date
5168 -- p_Def_Place_Of_Supply_Type_Cd
5169 -- p_place_of_supply_rule_flag
5170 -- p_applicability_rule_flag
5171 -- p_def_reg_type
5172 -- p_reg_rule_flg
5173 -- OUT NOCOPY x_jurisdiction_rec
5174 -- x_place_of_supply_type_code
5175 -- x_place_of_supply_result_id
5176
5177 PROCEDURE get_place_of_supply (
5178 p_event_class_rec IN zx_api_pub.event_class_rec_type,
5179 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
5180 p_tax_id IN zx_taxes_b.tax_id%TYPE,
5181 p_tax IN zx_taxes_b.tax%TYPE,
5182 p_tax_determine_date IN DATE,
5183 p_def_place_of_supply_type_cd IN zx_taxes_b.def_place_of_supply_type_code%TYPE,
5184 p_place_of_supply_rule_flag IN zx_taxes_b.place_of_supply_rule_flag%TYPE,
5185 p_applicability_rule_flag IN zx_taxes_b.applicability_rule_flag%TYPE,
5186 p_def_reg_type IN zx_taxes_b.def_registr_party_type_code%TYPE,
5187 p_reg_rule_flg IN zx_taxes_b.registration_type_rule_flag%TYPE,
5188 p_trx_line_index IN BINARY_INTEGER,
5189 p_direct_rate_result_id IN NUMBER,
5190 x_jurisdiction_rec OUT NOCOPY ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_type,
5191 x_jurisdictions_found OUT NOCOPY VARCHAR2,
5192 x_place_of_supply_type_code OUT NOCOPY zx_taxes_b.def_place_of_supply_type_code%TYPE,
5193 x_place_of_supply_result_id OUT NOCOPY NUMBER,
5194 x_return_status OUT NOCOPY VARCHAR2) IS
5195
5196 l_location_id NUMBER;
5197 l_tax_service_type_code zx_rules_b.service_type_code%TYPE;
5198
5199 l_reg_party VARCHAR2(256);
5200 l_jurisdiction_id zx_jurisdictions_b.tax_jurisdiction_id%TYPE;
5201 l_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
5202 l_tax_param_code VARCHAR2(30);
5203 l_error_buffer VARCHAR2(256);
5204 l_structure_name varchar2(30);
5205 l_msg_count NUMBER;
5206 l_msg_data VARCHAR2(2000);
5207 l_pos_type zx_taxes_b.def_place_of_supply_type_code%TYPE;
5208
5209 BEGIN
5210 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5211
5212 IF (g_level_procedure >= g_current_runtime_level ) THEN
5213 FND_LOG.STRING(g_level_procedure,
5214 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.BEGIN',
5215 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(+)');
5216
5217 END IF;
5218
5219 x_return_status := FND_API.G_RET_STS_SUCCESS;
5220
5221 l_tax_service_type_code := 'DET_PLACE_OF_SUPPLY';
5222
5223 IF (g_level_statement >= g_current_runtime_level ) THEN
5224 FND_LOG.STRING(g_level_statement,
5225 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5226 'p_place_of_supply_rule_flag = ' || p_place_of_supply_rule_flag ||'p_Def_Place_Of_Supply_Type_Cd = ' || p_def_place_of_supply_type_Cd||'p_applicability_rule_flag = ' || p_applicability_rule_flag
5227 ||'p_def_reg_type = ' || p_def_reg_type);
5228 END IF;
5229
5230 IF (p_place_of_supply_rule_flag = 'Y') THEN
5231
5232 rule_base_pos_detm (
5233 p_tax_id => p_tax_id,
5234 p_tax_determine_date => p_tax_determine_date,
5235 p_tax_service_type_code => l_tax_service_type_code,
5236 p_event_class_rec => p_event_class_rec,
5237 p_trx_line_index => p_trx_line_index,
5238 x_alphanumeric_result => x_place_of_supply_type_code,
5239 x_result_id => x_place_of_supply_result_id,
5240 x_return_status => x_return_status);
5241
5242 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5243 IF (g_level_statement >= g_current_runtime_level ) THEN
5244 FND_LOG.STRING(g_level_statement,
5245 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5246 'Incorrect return_status after calling ' ||
5247 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm');
5248 END IF;
5249
5250 x_place_of_supply_type_code := NULL;
5251 x_place_of_supply_result_id := NULL;
5252
5253 IF (g_level_statement >= g_current_runtime_level ) THEN
5254 FND_LOG.STRING(g_level_statement,
5255 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5256 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5257 END IF;
5258 RETURN;
5259 END IF;
5260
5261 IF (x_place_of_supply_type_code IS NULL) THEN
5262 x_place_of_supply_type_code := p_def_place_of_supply_type_cd;
5263 x_place_of_supply_result_id := NULL;
5264 END IF;
5265
5266 ELSE
5267 x_place_of_supply_type_code := p_def_place_of_supply_type_cd;
5268 x_place_of_supply_result_id := NULL;
5269 x_return_status := FND_API.G_RET_STS_SUCCESS;
5270 END IF;
5271
5272 IF (x_place_of_supply_type_code IS NULL) THEN
5273
5274 x_return_status := FND_API.G_RET_STS_ERROR;
5275
5276 FND_MESSAGE.SET_NAME('ZX','ZX_POS_NOT_FOUND');
5277 FND_MESSAGE.SET_TOKEN('TAX',p_tax);
5278 --FND_MSG_PUB.Add;
5279
5280 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
5281 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
5282 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
5283 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
5284
5285 ZX_API_PUB.add_msg(
5286 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
5287
5288
5289 IF (g_level_statement >= g_current_runtime_level ) THEN
5290 FND_LOG.STRING(g_level_statement,
5291 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5292 'Unable to derive Place of Supply Type');
5293 END IF;
5294 RETURN;
5295 END IF;
5296
5297 IF x_place_of_supply_type_code = 'SHIP_TO_BILL_TO' then
5298 l_pos_type := 'SHIP_TO'; -- first try with ship_to
5299 ELSE
5300 l_pos_type := x_place_of_supply_type_code;
5301 end if;
5302
5303 l_structure_name := 'TRX_LINE_DIST_TBL';
5304
5305 l_tax_param_code := get_pos_parameter_name(
5306 l_pos_type,
5307 x_return_status);
5308
5309 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
5310 THEN
5311 -- TCM procedure called in get_pos_parameter_name will set the error msg
5312 -- here we just need to populate the context information.
5313
5314 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
5315 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
5316 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
5317 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
5318
5319 ZX_API_PUB.add_msg(
5320 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
5321
5322 IF (g_level_statement >= g_current_runtime_level ) THEN
5323 FND_LOG.STRING(g_level_statement,
5324 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5325 'Incorrect return_status after calling ' ||
5326 'ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name');
5327 FND_LOG.STRING(g_level_statement,
5328 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5329 'RETURN_STATUS = ' || x_return_status);
5330 FND_LOG.STRING(g_level_statement,
5331 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5332 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5333 END IF;
5334 RETURN;
5335 END IF;
5336
5337 ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value(
5338 p_struct_name => l_structure_name,
5339 p_struct_index => p_trx_line_index,
5340 p_tax_param_code => l_tax_param_code,
5341 x_tax_param_value => l_location_id,
5342 x_return_status => x_return_status );
5343
5344 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
5345 THEN
5346 IF (g_level_statement >= g_current_runtime_level ) THEN
5347 FND_LOG.STRING(g_level_statement,
5348 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5349 'Incorrect return_status after calling ' ||
5350 'ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value');
5351 FND_LOG.STRING(g_level_statement,
5352 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5353 'RETURN_STATUS = ' || x_return_status);
5354 FND_LOG.STRING(g_level_statement,
5355 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5356 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5357 END IF;
5358 RETURN;
5359 END IF;
5360
5361 IF l_location_id IS NULL
5362 and x_place_of_supply_type_code = 'SHIP_TO_BILL_TO' then
5363
5364 l_pos_type := 'BILL_TO';
5365
5366 -- try with bill to now
5367 l_tax_param_code := get_pos_parameter_name(
5368 l_pos_type,
5369 x_return_status);
5370
5371 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
5372 THEN
5373 -- TCM procedure called in get_pos_parameter_name will set the error msg
5374 -- here we just need to populate the context information.
5375
5376 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
5377 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
5378 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
5379 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
5380
5381 ZX_API_PUB.add_msg(
5382 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
5383
5384 IF (g_level_statement >= g_current_runtime_level ) THEN
5385 FND_LOG.STRING(g_level_statement,
5386 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5387 'Incorrect return_status after calling ' ||
5388 'ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name');
5389 FND_LOG.STRING(g_level_statement,
5390 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5391 'RETURN_STATUS = ' || x_return_status);
5392 FND_LOG.STRING(g_level_statement,
5393 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5394 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5395 END IF;
5396 RETURN;
5397 END IF;
5398
5399 ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value(
5400 p_struct_name => l_structure_name,
5401 p_struct_index => p_trx_line_index,
5402 p_tax_param_code => l_tax_param_code,
5403 x_tax_param_value => l_location_id,
5404 x_return_status => x_return_status );
5405
5406 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
5407 THEN
5408 IF (g_level_statement >= g_current_runtime_level ) THEN
5409 FND_LOG.STRING(g_level_statement,
5410 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5411 'Incorrect return_status after calling ' ||
5412 'ZX_GET_TAX_PARAM_DRIVER_PKG.get_driver_value');
5413 FND_LOG.STRING(g_level_statement,
5414 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5415 'RETURN_STATUS = ' || x_return_status);
5416 FND_LOG.STRING(g_level_statement,
5417 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5418 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5419 END IF;
5420 RETURN;
5421 END IF;
5422
5423 END IF; -- ship_to_bill_to
5424
5425
5426 IF l_location_id IS NOT NULL THEN
5427 -- get the jurisdiction
5428 --
5429 ZX_TCM_GEO_JUR_PKG.get_tax_jurisdictions (
5430 p_location_id => l_location_id,
5431 p_location_type => l_pos_type,
5432 p_tax => p_tax,
5433 p_tax_regime_code => p_tax_regime_code,
5434 p_trx_date => p_tax_determine_date,
5435 x_tax_jurisdiction_rec => x_jurisdiction_rec,
5436 x_jurisdictions_found => x_jurisdictions_found,
5437 x_return_status => x_return_status);
5438
5439 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
5440 THEN
5441 -- populate the trx line context info if jurisdiction API return error
5442 -- jurisdiction API should have populated the error message name and text.
5443
5444 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
5445 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
5446 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
5447 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
5448
5449 ZX_API_PUB.add_msg(
5450 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
5451
5452 IF (g_level_statement >= g_current_runtime_level ) THEN
5453 FND_LOG.STRING(g_level_statement,
5454 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5455 'Incorrect return_status after calling ' ||
5456 'ZX_TCM_GEO_JUR_PKG.get_tax_jurisdiction');
5457 FND_LOG.STRING(g_level_statement,
5458 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5459 'RETURN_STATUS = ' || x_return_status);
5460 FND_LOG.STRING(g_level_statement,
5461 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5462 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5463 END IF;
5464 RETURN;
5465 END IF;
5466 ELSE
5467 IF p_direct_rate_result_id IS NULL THEN
5468 --
5469 -- it is not a direct rate case, need to dump warning msg.
5470 --
5471 /*
5472 FND_MESSAGE.SET_NAME('ZX','ZX_POS_MISSING_ON_TRX');
5473 FND_MESSAGE.SET_TOKEN('TAX', p_tax);
5474 FND_MESSAGE.SET_TOKEN('POS_TYPE', l_pos_type);
5475 -- FND_MSG_PUB.Add;
5476
5477 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
5478 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
5479 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
5480 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
5481
5482 ZX_API_PUB.add_msg(
5483 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
5484 */
5485 IF (g_level_statement >= g_current_runtime_level ) THEN
5486 FND_LOG.STRING(g_level_statement,
5487 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5488 'Location id is NULL for location type ' || l_pos_type ||
5489 ', and direct rate not found for the tax '|| p_tax ||
5490 '. Hence the tax is not applicable.');
5491 END IF;
5492 END IF;
5493 END IF;
5494
5495 x_place_of_supply_type_code := l_pos_type;
5496
5497 IF (g_level_procedure >= g_current_runtime_level ) THEN
5498
5499 FND_LOG.STRING(g_level_procedure,
5500 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5501 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)'||'X_place_of_supply_type_code = '|| x_place_of_supply_type_code);
5502 END IF;
5503
5504 EXCEPTION
5505 WHEN OTHERS THEN
5506 x_place_of_supply_type_code := NULL;
5507 x_place_of_supply_result_id := NULL;
5508 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5509
5510 IF (g_level_unexpected >= g_current_runtime_level ) THEN
5511 FND_LOG.STRING(g_level_unexpected,
5512 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply',
5513 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5514 FND_LOG.STRING(g_level_unexpected,
5515 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply.END',
5516 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply(-)');
5517 END IF;
5518
5519 END get_place_of_supply;
5520
5521 ----------------------------------------------------------------------
5522 -- PUBLIC PROCEDURE
5523 -- get_pos_parameter_name
5524 --
5525 -- DESCRIPTION
5526 --
5527 -- This procedure returns parameter name for locations
5528 --
5529 -- IN p_pos_type
5530
5531 FUNCTION get_pos_parameter_name (
5532 p_pos_type IN zx_taxes_b.def_place_of_supply_type_code%TYPE,
5533 x_return_status OUT NOCOPY VARCHAR2
5534 ) RETURN VARCHAR2 IS
5535
5536 l_loc_tbl VARCHAR2(30);
5537 l_loc_site VARCHAR2(30);
5538 x_msg_count NUMBER;
5539 x_msg_data VARCHAR2(2000);
5540
5541 BEGIN
5542 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5543
5544 IF (g_level_statement >= g_current_runtime_level ) THEN
5545 FND_LOG.STRING(g_level_statement,
5546 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name.BEGIN',
5547 'ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name(+)'|| 'pos_type = ' || p_pos_type);
5548 END IF;
5549
5550 x_return_status := FND_API.G_RET_STS_SUCCESS;
5551
5552 -- x_return_status retured from TCM procedure will be handled in the
5553 -- calling procedure
5554 IF (p_pos_type = 'SHIP_TO') THEN
5555
5556 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5557 zx_valid_init_params_pkg.source_rec.ship_to_party_type,
5558 l_loc_tbl,
5559 l_loc_site,
5560 x_return_status);
5561
5562 RETURN 'SHIP_TO_'||l_loc_site;
5563
5564 ELSIF (p_pos_type = 'SHIP_FROM') THEN
5565
5566 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5567 zx_valid_init_params_pkg.source_rec.ship_from_party_type,
5568 l_loc_tbl,
5569 l_loc_site,
5570 x_return_status);
5571
5572 RETURN 'SHIP_FROM_'||l_loc_site;
5573
5574 ELSIF (p_pos_type = 'BILL_TO') THEN
5575
5576 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5577 zx_valid_init_params_pkg.source_rec.bill_to_party_type,
5578 l_loc_tbl,
5579 l_loc_site,
5580 x_return_status);
5581
5582 RETURN 'BILL_TO_'||l_loc_site;
5583
5584 ELSIF (p_pos_type = 'BILL_FROM') THEN
5585
5586 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5587 zx_valid_init_params_pkg.source_rec.bill_from_party_type,
5588 l_loc_tbl,
5589 l_loc_site,
5590 x_return_status);
5591
5592 RETURN 'BILL_FROM_'||l_loc_site;
5593
5594 ELSIF (p_pos_type = 'POINT_OF_ORIGIN') THEN
5595
5596 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5597 zx_valid_init_params_pkg.source_rec.poo_party_type,
5598 l_loc_tbl,
5599 l_loc_site,
5600 x_return_status);
5601
5602 RETURN 'POO_'||l_loc_site;
5603
5604 ELSIF (p_pos_type = 'POINT_OF_ACCEPTANCE') THEN
5605
5606 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5607 zx_valid_init_params_pkg.source_rec.poa_party_type,
5608 l_loc_tbl,
5609 l_loc_site,
5610 x_return_status);
5611
5612 RETURN 'POA_'||l_loc_site;
5613
5614 ELSIF (p_pos_type = 'TRADING_HQ') THEN
5615
5616 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5617 zx_valid_init_params_pkg.source_rec.trad_hq_party_type,
5618 l_loc_tbl,
5619 l_loc_site,
5620 x_return_status);
5621
5622 RETURN 'TRADING_HQ_'||l_loc_site;
5623
5624 ELSIF (p_pos_type = 'OWN_HQ') THEN
5625
5626 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5627 zx_valid_init_params_pkg.source_rec.own_hq_party_type,
5628 l_loc_tbl,
5629 l_loc_site,
5630 x_return_status);
5631
5632
5633 RETURN 'OWN_HQ_'||l_loc_site;
5634
5635 ELSIF (p_pos_type = 'TITLE_TRANSFER') THEN
5636
5637 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5638 zx_valid_init_params_pkg.source_rec.ttl_trns_party_type,
5639 l_loc_tbl,
5640 l_loc_site,
5641 x_return_status);
5642
5643 RETURN 'TITLE_TRANSFER_'||l_loc_site;
5644
5645 ELSIF (p_pos_type = 'PAYING') THEN
5646
5647 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5648 zx_valid_init_params_pkg.source_rec.paying_party_type,
5649 l_loc_tbl,
5650 l_loc_site,
5651 x_return_status);
5652
5653 RETURN 'PAYING_'||l_loc_site;
5654
5655 ELSIF (p_pos_type = 'CONTRACT') THEN
5656
5657 /* there is no party type for point of contract. so return hardcoded value
5658 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site
5659 (zx_valid_init_params_pkg.source_rec.poc_party_type,
5660 l_loc_tbl,
5661 l_loc_site,
5662 l_init_msg_list,
5663 x_return_status,
5664 x_msg_count,
5665 x_msg_data);
5666 */
5667
5668 RETURN 'POC_'||'LOCATION_ID';
5669
5670 ELSIF (p_pos_type = 'INVENTORY') THEN
5671
5672 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5673 zx_valid_init_params_pkg.source_rec.poi_party_type,
5674 l_loc_tbl,
5675 l_loc_site,
5676 x_return_status);
5677
5678 RETURN 'POI_'||l_loc_site;
5679
5680 ELSIF (p_pos_type = 'DESTINATION') THEN
5681
5682 ZX_TCM_GEO_JUR_PKG.get_pos_loc_or_site(
5683 zx_valid_init_params_pkg.source_rec.pod_party_type,
5684 l_loc_tbl,
5685 l_loc_site,
5686 x_return_status);
5687
5688 RETURN 'POD_'||l_loc_site;
5689
5690 ELSE
5691 IF (g_level_statement >= g_current_runtime_level ) THEN
5692 FND_LOG.STRING(g_level_statement,
5693 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name',
5694 'pos_parameter_name = NULL');
5695 END IF;
5696 RETURN Null;
5697 END IF;
5698
5699 IF (g_level_procedure >= g_current_runtime_level ) THEN
5700
5701 FND_LOG.STRING(g_level_procedure,
5702 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name.END',
5703 'ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name(-)');
5704 END IF;
5705
5706 EXCEPTION
5707 WHEN OTHERS THEN
5708 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5709 IF (g_level_unexpected >= g_current_runtime_level ) THEN
5710 FND_LOG.STRING(g_level_unexpected,
5711 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name',
5712 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
5713 FND_LOG.STRING(g_level_unexpected,
5714 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name.END',
5715 'ZX_TDS_APPLICABILITY_DETM_PKG.get_pos_parameter_name(-)');
5716 END IF;
5717
5718 END get_pos_parameter_name;
5719
5720 --------------------------------------------------------------------------
5721 -- PUBLIC PROCEDURE
5722 -- get_tax_registration_info
5723 --
5724 -- DESCRIPTION
5725 --
5726 -- This function calls TCM get_tax_registration API to return registration
5727 -- information.
5728 --
5729
5730 PROCEDURE get_tax_registration_info(
5731 p_structure_name IN VARCHAR2,
5732 p_structure_index IN BINARY_INTEGER,
5733 p_event_class_rec IN zx_api_pub.event_class_rec_type,
5734 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
5735 p_tax IN zx_taxes_b.tax%TYPE,
5736 p_tax_determine_date IN zx_lines.tax_determine_date%TYPE,
5737 p_jurisdiction_code IN zx_jurisdictions_b.tax_jurisdiction_code%TYPE,
5738 p_reg_party_type IN zx_taxes_b.def_registr_party_type_code%TYPE,
5739 x_registration_rec OUT NOCOPY zx_tcm_control_pkg.zx_registration_info_rec,
5740 x_return_status OUT NOCOPY VARCHAR2
5741 ) IS
5742
5743 l_reg_party_prof_id zx_party_tax_profile.party_tax_profile_id%TYPE;
5744
5745 l_registration_rec zx_tcm_control_pkg.zx_registration_info_rec;
5746 l_ret_record_level VARCHAR2(30);
5747 l_error_buffer VARCHAR2(200);
5748
5749 l_account_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE;
5750 l_site_use_id hz_cust_site_uses_all.site_use_id%TYPE;
5751 l_account_id hz_cust_accounts.cust_account_id%TYPE;
5752 l_parent_ptp_id zx_party_tax_profile.party_tax_profile_id%TYPE;
5753 l_site_ptp_id zx_party_tax_profile.party_tax_profile_id%TYPE;
5754 l_account_type_code VARCHAR2(30);
5755 l_first_party_flag BOOLEAN;
5756 l_hq_estb_ptp_id zx_lines.hq_estb_party_tax_prof_id%TYPE;
5757 l_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
5758
5759 -- Bug#5395227
5760 l_tax_rec ZX_TDS_UTILITIES_PKG.ZX_TAX_INFO_CACHE_REC;
5761 l_has_other_jurisdictions_flag VARCHAR2(1);
5762
5763 BEGIN
5764 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5765
5766 IF (g_level_procedure >= g_current_runtime_level ) THEN
5767 FND_LOG.STRING(g_level_procedure,
5768 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.BEGIN',
5769 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(+)');
5770 END IF;
5771
5772 x_return_status := FND_API.G_RET_STS_SUCCESS;
5773 -- get l_reg_party_prof_id
5774 --
5775 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5776 p_structure_name,
5777 p_structure_index,
5778 p_reg_party_type || '_' || 'TAX_PROF_ID',
5779 l_reg_party_prof_id,
5780 x_return_status,
5781 l_error_buffer);
5782
5783 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5784 IF (g_level_error >= g_current_runtime_level ) THEN
5785 FND_LOG.STRING(g_level_error,
5786 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5787 'Incorrect return_status after calling ' ||
5788 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5789 FND_LOG.STRING(g_level_error,
5790 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5791 'l_reg_party_prof_id = ' || l_reg_party_prof_id);
5792 FND_LOG.STRING(g_level_error,
5793 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5794 'RETURN_STATUS = ' || x_return_status);
5795 FND_LOG.STRING(g_level_error,
5796 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5797 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5798 END IF;
5799 RETURN;
5800 END IF;
5801
5802 -- Fix for Bug 4873457 - If registration status of first party is required, then registration of
5803 -- the establishment will be attempted to be derived. If not found, the registration of the HQ
5804 -- establishment will be used. If registration status of third party is required, then the
5805 -- registration at site level will be attemtped to be derived. Failing which, the party level
5806 -- registration will be obtained.
5807
5808 l_first_party_flag := ZX_TDS_RULE_BASE_DETM_PVT.evaluate_if_first_party(p_reg_party_type);
5809
5810 IF l_first_party_flag THEN
5811
5812 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5813 p_structure_name,
5814 p_structure_index,
5815 'HQ_ESTB_PARTY_TAX_PROF_ID',
5816 l_hq_estb_ptp_id,
5817 x_return_status,
5818 l_error_buffer);
5819
5820 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5821 IF (g_level_error >= g_current_runtime_level ) THEN
5822 FND_LOG.STRING(g_level_error,
5823 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5824 'Incorrect return_status after calling ' ||
5825 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5826 FND_LOG.STRING(g_level_error,
5827 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5828 'l_hq_estb_ptp_id = ' || l_hq_estb_ptp_id);
5829 FND_LOG.STRING(g_level_error,
5830 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5831 'RETURN_STATUS = ' || x_return_status);
5832 FND_LOG.STRING(g_level_error,
5833 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5834 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5835 END IF;
5836 x_return_status := FND_API.G_RET_STS_SUCCESS;
5837 RETURN;
5838 END IF;
5839
5840 l_parent_ptp_id := l_hq_estb_ptp_id;
5841 l_site_ptp_id := l_reg_party_prof_id;
5842 l_account_type_code := NULL;
5843 l_account_id := NULL;
5844 l_account_site_id := NULL;
5845 l_site_use_id := NULL;
5846 ELSE
5847 IF SUBSTR(p_reg_party_type, 1, 7) IN ('SHIP_TO','BILL_TO') OR
5848 SUBSTR(p_reg_party_type, 1, 9) IN ('SHIP_FROM','BILL_FROM')
5849 THEN
5850 -- get l_account_site_id
5851 --
5852 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5853 p_structure_name,
5854 p_structure_index,
5855 SUBSTR(p_reg_party_type,1,5) || 'THIRD_PTY_ACCT_SITE_ID',
5856 l_account_site_id,
5857 x_return_status,
5858 l_error_buffer);
5859
5860 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5861 IF (g_level_error >= g_current_runtime_level ) THEN
5862 FND_LOG.STRING(g_level_error,
5863 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5864 'Incorrect return_status after calling ' ||
5865 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5866 FND_LOG.STRING(g_level_error,
5867 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5868 'l_account_site_id = ' || l_account_site_id);
5869 FND_LOG.STRING(g_level_error,
5870 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5871 'RETURN_STATUS = ' || x_return_status);
5872 FND_LOG.STRING(g_level_error,
5873 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5874 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5875 END IF;
5876 RETURN;
5877 END IF;
5878
5879 -- get l_account_id
5880 --
5881 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5882 p_structure_name,
5883 p_structure_index,
5884 SUBSTR(p_reg_party_type,1,5) || 'THIRD_PTY_ACCT_ID',
5885 l_account_id,
5886 x_return_status,
5887 l_error_buffer);
5888
5889 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5890 IF (g_level_error >= g_current_runtime_level ) THEN
5891 FND_LOG.STRING(g_level_error,
5892 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5893 'Incorrect return_status after calling ' ||
5894 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5895 FND_LOG.STRING(g_level_error,
5896 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5897 'l_account_id = ' || l_account_id);
5898 FND_LOG.STRING(g_level_error,
5899 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5900 'RETURN_STATUS = ' || x_return_status);
5901 FND_LOG.STRING(g_level_error,
5902 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5903 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5904 END IF;
5905 RETURN;
5906 END IF;
5907 END IF; -- reg_party_type in ('SHIP_TO/FROM','BILL_TO/FROM')
5908
5909 -- get l_site_use_id
5910 --
5911 IF SUBSTR(p_reg_party_type, 1, 7) IN ('SHIP_TO', 'BILL_TO') THEN
5912
5913 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5914 p_structure_name,
5915 p_structure_index,
5916 SUBSTR(p_reg_party_type, 1,7) || '_' || 'CUST_ACCT_SITE_USE_ID',
5917 l_site_use_id,
5918 x_return_status,
5919 l_error_buffer);
5920
5921 END IF;
5922
5923 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5924 IF (g_level_error >= g_current_runtime_level ) THEN
5925 FND_LOG.STRING(g_level_error,
5926 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5927 'Incorrect return_status after calling ' ||
5928 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5929 FND_LOG.STRING(g_level_error,
5930 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5931 'l_site_use_id = ' || l_site_use_id);
5932 FND_LOG.STRING(g_level_error,
5933 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5934 'RETURN_STATUS = ' || x_return_status);
5935 FND_LOG.STRING(g_level_error,
5936 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5937 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5938 END IF;
5939 RETURN;
5940 END IF;
5941
5942 -- bug 4359775: TCM API changes parameter list
5943 -- get l_account_type_code, l_parent_ptp_id and l_site_ptp_id
5944
5945 l_account_type_code := p_event_class_rec.sup_cust_acct_type;
5946
5947 -- bug 4886911: Registration party type should be XXXX_PARTY only.
5948 -- Alway pass l_parent_ptp_id and l_site_ptp_id
5949 --
5950 l_parent_ptp_id := l_reg_party_prof_id;
5951
5952 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
5953 p_structure_name,
5954 p_structure_index,
5955 REPLACE(p_reg_party_type, 'PARTY', 'SITE') || '_' || 'TAX_PROF_ID',
5956 l_site_ptp_id,
5957 x_return_status,
5958 l_error_buffer);
5959
5960 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5961 IF (g_level_error >= g_current_runtime_level ) THEN
5962 FND_LOG.STRING(g_level_error,
5963 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5964 'Incorrect return_status after calling ' ||
5965 'ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value');
5966 FND_LOG.STRING(g_level_error,
5967 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5968 'l_site_ptp_id = ' || l_site_ptp_id);
5969 FND_LOG.STRING(g_level_error,
5970 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
5971 'RETURN_STATUS = ' || x_return_status);
5972 FND_LOG.STRING(g_level_error,
5973 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
5974 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)');
5975 END IF;
5976 RETURN;
5977 END IF;
5978 END IF;
5979
5980 -- Bug 5003413
5981 IF p_jurisdiction_code IS NULL THEN
5982 IF g_outer_jurisdiction_code IS NULL THEN
5983 l_jurisdiction_code := NULL;
5984 -- BEGIN
5985 -- Bug#5395227
5986 l_has_other_jurisdictions_flag := NULL;
5987
5988 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
5989 p_tax_regime_code,
5990 p_tax,
5991 p_tax_determine_date,
5992 l_tax_rec,
5993 x_return_status,
5994 l_error_buffer);
5995
5996 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
5997 l_has_other_jurisdictions_flag := l_tax_rec.has_other_jurisdictions_flag;
5998 END IF;
5999
6000 IF l_has_other_jurisdictions_flag = 'N' THEN
6001 BEGIN
6002 SELECT tax_jurisdiction_code
6003 INTO l_jurisdiction_code
6004 FROM zx_jurisdictions_b jur
6005 WHERE jur.tax_regime_code = p_tax_regime_code
6006 AND jur.tax = p_tax
6007 AND jur.default_jurisdiction_flag = 'Y'
6008 AND p_tax_determine_date between jur.default_flg_effective_from
6009 and nvl(jur.default_flg_effective_to, p_tax_determine_date);
6010 EXCEPTION WHEN OTHERS THEN
6011 l_jurisdiction_code := NULL;
6012 END;
6013 END IF;
6014 ELSE
6015 l_jurisdiction_code := g_outer_jurisdiction_code;
6016 END IF;
6017 ELSE
6018 l_jurisdiction_code := p_jurisdiction_code;
6019 END IF;
6020
6021 BEGIN
6022
6023 ZX_TCM_CONTROL_PKG.get_tax_registration (
6024 p_parent_ptp_id => l_parent_ptp_id,
6025 p_site_ptp_id => l_site_ptp_id,
6026 p_account_type_code => l_account_type_code,
6027 p_tax_determine_date => p_tax_determine_date,
6028 p_tax => p_tax,
6029 p_tax_regime_code => p_tax_regime_code,
6030 p_jurisdiction_code => l_jurisdiction_code,
6031 p_account_id => l_account_id,
6032 p_account_site_id => l_account_site_id,
6033 p_site_use_id => l_site_use_id,
6034 p_zx_registration_rec => l_registration_rec,
6035 p_ret_record_level => l_ret_record_level,
6036 p_return_status => x_return_status);
6037
6038 IF NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
6039 THEN
6040 IF (g_level_statement >= g_current_runtime_level ) THEN
6041 FND_LOG.STRING(g_level_statement,
6042 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
6043 'ZX_TCM_CONTROL_PKG.get_tax_registration_info returns with Error');
6044 END IF;
6045 -- Bug 4939819 - Skip registration processing if PTP setupis not found
6046 IF l_parent_ptp_id IS NULL THEN
6047 -- Parent PTP is NULL. Continuing...
6048 x_return_status := FND_API.G_RET_STS_SUCCESS;
6049 END IF;
6050
6051 ELSE
6052 x_registration_rec := l_registration_rec;
6053 END IF;
6054
6055 EXCEPTION
6056 WHEN OTHERS THEN
6057 IF (g_level_statement >= g_current_runtime_level ) THEN
6058 FND_LOG.STRING(g_level_statement,
6059 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info',
6060 'Unable to get tax registration number after calling TCM API.');
6061 END IF;
6062 END;
6063
6064 IF (g_level_procedure >= g_current_runtime_level ) THEN
6065
6066 FND_LOG.STRING(g_level_procedure,
6067 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info.END',
6068 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration_info(-)'||x_return_status);
6069 END IF;
6070
6071 EXCEPTION
6072 WHEN OTHERS THEN
6073 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6074
6075 IF (g_level_unexpected >= g_current_runtime_level ) THEN
6076 FND_LOG.STRING(g_level_unexpected,
6077 'ZX.PLSQL.ZX_TDS_RULE_BASE_DETM_PVT.get_tax_registration_info',
6078 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
6079 END IF;
6080
6081 END get_tax_registration_info;
6082
6083 ----------------------------------------------------------------------
6084 -- PUBLIC PROCEDURE
6085 -- get_tax_registration
6086 --
6087 -- DESCRIPTION
6088 --
6089 -- This function returns registration number for a given party, tax regime
6090 -- and tax defined in default tax or by evaluation of place of supply
6091 -- registration rules
6092 --
6093 -- IN/OUT p_transaction_line_tbl
6094 -- p_tax_inclusion_flag
6095 -- p_event_class_rec
6096 -- IN p_tax_regime_code
6097 -- p_tax_determine_date
6098 -- p_tax_id
6099 -- p_tax
6100 -- p_jurisdiction_code
6101 -- p_def_reg_type
6102 -- p_reg_rule_flg
6103 -- p_trx_line_index
6104 -- OUT NOCOPY x_party_id
6105 -- x_party_site_id
6106 -- x_registration_number
6107 -- x_tax_inclusion_flag
6108 -- x_self_assessment_flg
6109
6110 PROCEDURE get_tax_registration (
6111 p_event_class_rec IN zx_api_pub.event_class_rec_type,
6112 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
6113 p_tax_id IN zx_taxes_b.tax_id%TYPE,
6114 p_tax IN zx_taxes_b.tax%TYPE,
6115 p_tax_determine_date IN DATE,
6116 p_jurisdiction_code IN zx_jurisdictions_b.tax_jurisdiction_code%TYPE,
6117 p_def_reg_type IN zx_taxes_b.def_registr_party_type_code%TYPE,
6118 p_reg_rule_flg IN zx_taxes_b.registration_type_rule_flag%TYPE,
6119 p_trx_line_index IN BINARY_INTEGER,
6120 x_registration_number IN OUT NOCOPY zx_registrations.registration_number%TYPE,
6121 x_tax_inclusion_flag IN OUT NOCOPY zx_registrations.inclusive_tax_flag%TYPE,
6122 x_self_assessment_flg IN OUT NOCOPY zx_registrations.self_assess_flag%TYPE,
6123 x_tax_registration_result_id OUT NOCOPY NUMBER,
6124 x_rounding_rule_code OUT NOCOPY zx_registrations.rounding_rule_code%TYPE,
6125 x_registration_party_type OUT NOCOPY zx_taxes_b.def_registr_party_type_code%TYPE,
6126 x_return_status OUT NOCOPY VARCHAR2) IS
6127
6128 l_reg_party_type zx_taxes_b.def_registr_party_type_code%TYPE;
6129 l_reg_party_prof_id zx_party_tax_profile.party_tax_profile_id%TYPE;
6130
6131 l_registration_rec zx_tcm_control_pkg.zx_registration_info_rec;
6132 l_tax_service_type_code zx_rules_b.service_type_code%TYPE;
6133 l_error_buffer VARCHAR2(200);
6134 l_structure_name VARCHAR2(30);
6135 l_ret_record_level VARCHAR2(30);
6136
6137 l_account_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE;
6138 l_site_use_id hz_cust_site_uses_all.site_use_id%TYPE;
6139 l_account_id hz_cust_accounts.cust_account_id%TYPE;
6140 l_parent_ptp_id zx_party_tax_profile.party_tax_profile_id%TYPE;
6141 l_site_ptp_id zx_party_tax_profile.party_tax_profile_id%TYPE;
6142 l_account_type_code VARCHAR2(30);
6143
6144 BEGIN
6145 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
6146
6147 IF (g_level_procedure >= g_current_runtime_level ) THEN
6148 FND_LOG.STRING(g_level_procedure,
6149 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration.BEGIN',
6150 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration(+)'|| 'def_reg_type = ' || p_def_reg_type||'p_reg_rule_flg = ' || p_reg_rule_flg);
6151
6152 END IF;
6153
6154
6155 l_tax_service_type_code := 'DET_TAX_REGISTRATION';
6156 l_structure_name := 'TRX_LINE_DIST_TBL';
6157
6158 IF p_reg_rule_flg = 'Y' THEN
6159
6160 rule_base_pos_detm (
6161 p_tax_id => p_tax_id,
6162 p_tax_determine_date => p_tax_determine_date,
6163 p_tax_service_type_code => l_tax_service_type_code,
6164 p_event_class_rec => p_event_class_rec,
6165 p_trx_line_index => p_trx_line_index,
6166 x_alphanumeric_result => l_reg_party_type,
6167 x_result_id => x_tax_registration_result_id,
6168 x_return_status => x_return_status);
6169
6170 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6171 IF (g_level_statement >= g_current_runtime_level ) THEN
6172 FND_LOG.STRING(g_level_statement,
6173 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration',
6174 'Incorrect return_status after calling ' ||
6175 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm');
6176 END IF;
6177
6178 x_tax_registration_result_id := NULL;
6179 IF (g_level_statement >= g_current_runtime_level ) THEN
6180 FND_LOG.STRING(g_level_statement,
6181 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration',
6182 'RETURN_STATUS = ' || x_return_status);
6183 FND_LOG.STRING(g_level_statement,
6184 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration.END',
6185 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration(-)');
6186 END IF;
6187
6188 RETURN;
6189 END IF;
6190
6191 IF l_reg_party_type IS NULL THEN
6192 l_reg_party_type := p_def_reg_type;
6193 END IF;
6194
6195 ELSE
6196 l_reg_party_type := p_def_reg_type;
6197 END IF;
6198
6199 -- Fetch tax registration number associated with
6200 -- tax regime, tax and party
6201 --
6202 IF (l_reg_party_type IS NOT NULL) THEN
6203
6204 -- populate x_registration_party_type
6205 --
6206 if l_reg_party_type = 'SHIP_TO_BILL_TO' then
6207 x_registration_party_type := 'SHIP_TO_PARTY';
6208 else
6209 x_registration_party_type := l_reg_party_type;
6210 end if;
6211
6212 -- call get_tax_registration_info
6213 get_tax_registration_info(
6214 p_structure_name => l_structure_name,
6215 p_structure_index => p_trx_line_index,
6216 p_event_class_rec => p_event_class_rec,
6217 p_tax_regime_code => p_tax_regime_code,
6218 p_tax => p_tax,
6219 p_tax_determine_date => p_tax_determine_date,
6220 p_jurisdiction_code => p_jurisdiction_code,
6221 p_reg_party_type => x_registration_party_type,
6222 x_registration_rec => l_registration_rec,
6223 x_return_status => x_return_status
6224 );
6225
6226 IF(NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
6227 OR l_registration_rec.registration_id IS NULL)
6228 THEN
6229
6230 IF l_reg_party_type = 'SHIP_TO_BILL_TO'
6231 AND l_registration_rec.registration_id IS NULL
6232 THEN
6233 -- try with bill to now
6234 x_registration_party_type := 'BILL_TO_PARTY';
6235
6236 -- call get_tax_registration_info
6237 get_tax_registration_info(
6238 p_structure_name => l_structure_name,
6239 p_structure_index => p_trx_line_index,
6240 p_event_class_rec => p_event_class_rec,
6241 p_tax_regime_code => p_tax_regime_code,
6242 p_tax => p_tax,
6243 p_tax_determine_date => p_tax_determine_date,
6244 p_jurisdiction_code => p_jurisdiction_code,
6245 p_reg_party_type => x_registration_party_type,
6246 x_registration_rec => l_registration_rec,
6247 x_return_status => x_return_status
6248 );
6249
6250 IF(NVL(x_return_status, FND_API.G_RET_STS_ERROR) <> FND_API.G_RET_STS_SUCCESS
6251 OR l_registration_rec.registration_id IS NULL)
6252 THEN
6253
6254 IF (g_level_statement >= g_current_runtime_level ) THEN
6255 FND_LOG.STRING(g_level_statement,
6256 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration',
6257 'ZX_TCM_CONTROL_PKG.GET_TAX_REGISTRATION returns with ' ||
6258 ' Exception or no value ');
6259
6260 END IF;
6261
6262 x_registration_party_type := 'SHIP_TO_BILL_TO';
6263 x_registration_number := NULL;
6264 x_self_assessment_flg := 'N';
6265 x_tax_inclusion_flag := NULL;
6266 x_return_status := FND_API.G_RET_STS_SUCCESS;
6267
6268 ELSE -- Registration record found for BILL_TO registration party type
6269 x_registration_party_type := 'SHIP_TO_BILL_TO';
6270 x_registration_number := l_registration_rec.registration_number;
6271 x_tax_inclusion_flag := l_registration_rec.inclusive_tax_flag;
6272 x_self_assessment_flg := l_registration_rec.self_assess_flag;
6273 x_rounding_rule_code := l_registration_rec.rounding_rule_code;
6274 END IF;
6275
6276 ELSE
6277 x_registration_number := NULL;
6278 x_self_assessment_flg := 'N';
6279 x_tax_inclusion_flag := NULL;
6280 x_return_status := FND_API.G_RET_STS_SUCCESS;
6281 END IF;
6282
6283 ELSE -- Registration record found
6284 x_registration_number := l_registration_rec.registration_number;
6285 x_tax_inclusion_flag := l_registration_rec.inclusive_tax_flag;
6286 x_self_assessment_flg := l_registration_rec.self_assess_flag;
6287 x_rounding_rule_code := l_registration_rec.rounding_rule_code;
6288
6289 END IF;
6290
6291 ELSE -- l_reg_party_type is NULL
6292 x_registration_number := NULL;
6293 x_self_assessment_flg := 'N';
6294 x_tax_inclusion_flag := NULL;
6295
6296 END IF;
6297
6298 -- Reset x_rounding_rule_code
6299 --
6300 -- If roung level is 'HEADER', use g_rounding_rule returned with
6301 -- rounding level, if not available, use rounding rule from tax
6302 --
6303 IF UPPER(ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level) = 'HEADER' THEN
6304
6305 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule IS NOT NULL THEN
6306 x_rounding_rule_code := ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule;
6307 ELSE
6308 x_rounding_rule_code :=
6309 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).rounding_rule_code;
6310 END IF;
6311
6312 ELSE -- g_rounding_level = 'LINE'
6313
6314 -- bug#5638230- if allow_rounding_override_flag
6315 -- is 'N', that means, user can not override the
6316 -- rounding rule at other levels, rounding rule
6317 -- should come from tax level directly
6318 --
6319 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).allow_rounding_override_flag =
6320 'N' THEN
6321 x_rounding_rule_code :=
6322 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).rounding_rule_code;
6323 ELSE
6324 --
6325 -- the rounding rule defined at tax level
6326 -- was overridden at other levels
6327 --
6328
6329 IF x_rounding_rule_code IS NULL THEN
6330
6331 -- get rounding_rule
6332 --
6333 ZX_TDS_TAX_ROUNDING_PKG.get_rounding_rule(
6334 p_trx_line_index => p_trx_line_index,
6335 p_event_class_rec => p_event_class_rec,
6336 p_tax_regime_code => p_tax_regime_code,
6337 p_tax => p_tax,
6338 p_jurisdiction_code => p_jurisdiction_code,
6339 p_tax_determine_date => p_tax_determine_date,
6340 p_rounding_rule_code => ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule,
6341 p_return_status => x_return_status,
6342 p_error_buffer => l_error_buffer);
6343
6344 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6345
6346 x_return_status := FND_API.G_RET_STS_SUCCESS;
6347 END IF;
6348
6349 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule IS NOT NULL THEN
6350 x_rounding_rule_code := ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule;
6351 ELSE
6352 x_rounding_rule_code :=
6353 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).rounding_rule_code;
6354 END IF;
6355 END IF;
6356 END IF;
6357 END IF;
6358
6359 IF (g_level_procedure >= g_current_runtime_level ) THEN
6360
6361 FND_LOG.STRING(g_level_procedure,
6362 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration.END',
6363 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration(-)'||'x_registration_number = ' || x_registration_number||'x_tax_inclusion_flag = ' || x_tax_inclusion_flag
6364 ||'x_self_assessment_flg = ' || x_self_assessment_flg||'x_tax_registration_result_id = ' ||
6365 to_char(x_tax_registration_result_id)||'X_rounding_rule_code = ' || x_rounding_rule_code||'RETURN_STATUS = ' || x_return_status);
6366 END IF;
6367
6368 EXCEPTION
6369 WHEN OTHERS THEN
6370 x_registration_number := NULL;
6371 x_self_assessment_flg := 'N';
6372 x_tax_inclusion_flag := NULL;
6373 -- ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).def_inclusive_tax_flag;
6374
6375 -- x_rounding_rule_code
6376 --
6377 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule IS NOT NULL THEN
6378 x_rounding_rule_code := ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_rule;
6379 ELSE
6380 x_rounding_rule_code :=
6381 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_tax_id).rounding_rule_code;
6382 END IF;
6383
6384 IF (g_level_statement >= g_current_runtime_level ) THEN
6385 FND_LOG.STRING(g_level_statement,
6386 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration',
6387 'RETURN_STATUS = ' || x_return_status);
6388 END IF;
6389 x_tax_registration_result_id := NULL;
6390
6391 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6392
6393 IF (g_level_unexpected >= g_current_runtime_level ) THEN
6394 FND_LOG.STRING(g_level_unexpected,
6395 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration',
6396 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
6397 FND_LOG.STRING(g_level_unexpected,
6398 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration.END',
6399 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration(-)');
6400 END IF;
6401
6402 END get_tax_registration;
6403
6404 ----------------------------------------------------------------------
6405 -- PUBLIC PROCEDURE
6406 -- get_legal_entity_registration
6407 --
6408 -- DESCRIPTION
6409 --
6410 -- This procedure returns registration number for a given legal entity party,
6411 -- tax regime and tax
6412 --
6413 -- IN p_tax_line_index
6414 -- OUT NOCOPY
6415 -- x_return_status
6416 -- x_error_buffer
6417
6418 PROCEDURE get_legal_entity_registration(
6419 p_event_class_rec IN zx_api_pub.event_class_rec_type,
6420 p_trx_line_index IN BINARY_INTEGER,
6421 p_tax_line_index IN BINARY_INTEGER,
6422 x_return_status OUT NOCOPY VARCHAR2,
6423 x_error_buffer OUT NOCOPY VARCHAR2)
6424 IS
6425 l_hq_estb_ptp_id zx_lines.hq_estb_party_tax_prof_id%TYPE;
6426 i BINARY_INTEGER;
6427 l_tax_id BINARY_INTEGER;
6428 l_registration_rec zx_tcm_control_pkg.zx_registration_info_rec;
6429 l_ret_record_level VARCHAR2(30);
6430 l_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
6431 l_party_ptp_id zx_party_tax_profile.party_tax_profile_id%TYPE;
6432
6433 BEGIN
6434 IF (g_level_statement >= g_current_runtime_level ) THEN
6435 FND_LOG.STRING(g_level_statement,
6436 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration.BEGIN',
6437 'ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration(+)');
6438 END IF;
6439
6440 x_return_status := FND_API.G_RET_STS_SUCCESS;
6441 i := p_tax_line_index;
6442
6443 l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_id;
6444 l_hq_estb_ptp_id :=
6445 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).hq_estb_party_tax_prof_id;
6446
6447 IF (g_level_statement >= g_current_runtime_level ) THEN
6448 FND_LOG.STRING(g_level_statement,
6449 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration',
6450 'l_hq_estb_ptp_id = ' || TO_CHAR(l_hq_estb_ptp_id));
6451
6452 END IF;
6453
6454 IF l_hq_estb_ptp_id IS NULL THEN
6455 IF (g_level_statement >= g_current_runtime_level ) THEN
6456 FND_LOG.STRING(g_level_statement,
6457 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration',
6458 'HQ establishment party tax profile id is not available');
6459 END IF;
6460 RETURN;
6461 END IF;
6462
6463 IF g_outer_jurisdiction_code IS NOT NULL THEN
6464 -- set most outer level jurisdiction code to find the registration information.
6465 l_jurisdiction_code := g_outer_jurisdiction_code;
6466 ELSE
6467 l_jurisdiction_code
6468 :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_jurisdiction_code;
6469 END IF;
6470
6471 -- bug 4633146
6472 --
6473 IF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
6474
6475 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
6476 'TRX_LINE_DIST_TBL',
6477 p_trx_line_index,
6478 'SHIP_TO_PARTY_TAX_PROF_ID',
6479 l_party_ptp_id,
6480 x_return_status,
6481 x_error_buffer);
6482
6483 ELSIF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
6484
6485 ZX_TDS_RULE_BASE_DETM_PVT.get_tsrm_num_value(
6486 'TRX_LINE_DIST_TBL',
6487 p_trx_line_index,
6488 'SHIP_FROM_PARTY_TAX_PROF_ID',
6489 l_party_ptp_id,
6490 x_return_status,
6491 x_error_buffer);
6492
6493 END IF;
6494
6495 -- bug 4359775: TCM API changes parameter list
6496 --
6497 ZX_TCM_CONTROL_PKG.get_tax_registration (
6498 p_parent_ptp_id => l_hq_estb_ptp_id,
6499 p_site_ptp_id => l_party_ptp_id,
6500 p_account_type_code => NULL,
6501 p_tax_determine_date => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date,
6502 p_tax => ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).tax,
6503 p_tax_regime_code => ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).tax_regime_code,
6504 p_jurisdiction_code => l_jurisdiction_code,
6505 p_account_id => NULL,
6506 p_account_site_id => NULL,
6507 p_site_use_id => NULL,
6508 p_zx_registration_rec => l_registration_rec,
6509 p_ret_record_level => l_ret_record_level,
6510 p_return_status => x_return_status);
6511
6512 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
6513 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).hq_estb_reg_number :=
6514 l_registration_rec.registration_number;
6515 ELSE
6516
6517 -- Bug 3511428: In case the TCM API returns no value, or with exception, reset
6518 -- x_return_status to FND_API.G_RET_STS_SUCCESS and continue processing ...
6519 -- processing.
6520 --
6521 x_return_status := FND_API.G_RET_STS_SUCCESS;
6522
6523 IF (g_level_statement >= g_current_runtime_level ) THEN
6524 FND_LOG.STRING(g_level_statement,
6525 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration',
6526 'Warning: ZX_TCM_CONTROL_PKG.get_tax_registration returns ' ||
6527 'with Exception or no value. ');
6528 END IF;
6529 END IF;
6530
6531 IF (g_level_statement >= g_current_runtime_level ) THEN
6532
6533 FND_LOG.STRING(g_level_statement,
6534 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration.END',
6535 'ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration(-)'||'hq_estb_reg_number = ' || l_registration_rec.registration_number||'x_return_status = ' || x_return_status
6536 ||'x_error_buffer = ' || x_error_buffer);
6537 END IF;
6538
6539 EXCEPTION
6540 WHEN OTHERS THEN
6541 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6542
6543 IF (g_level_unexpected >= g_current_runtime_level ) THEN
6544 FND_LOG.STRING(g_level_unexpected,
6545 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration',
6546 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
6547 FND_LOG.STRING(g_level_unexpected,
6548 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration.END',
6549 'ZX_TDS_APPLICABILITY_DETM_PKG.get_legal_entity_registration(-)');
6550 END IF;
6551
6552 END get_legal_entity_registration;
6553
6554 ----------------------------------------------------------------------
6555 -- PUBLIC PROCEDURE
6556 -- rule_base_pos_detm
6557 --
6558 -- DESCRIPTION
6559 --
6560 -- This function determines generic result by evaluating rules.
6561 --
6562 -- IN/OUT
6563 -- p_event_class_rec
6564 -- IN p_tax
6565 -- p_tax_id
6566 -- p_tax_service_type_code
6567 -- p_trx_line_index
6568 -- p_tax_determine_date
6569
6570 PROCEDURE rule_base_pos_detm (
6571 p_tax_id IN zx_taxes_b.tax_id%type,
6572 p_tax_determine_date IN DATE,
6573 p_tax_service_type_code IN zx_rules_b.service_type_code%type,
6574 p_event_class_rec IN zx_api_pub.event_class_rec_type,
6575 p_trx_line_index IN BINARY_INTEGER,
6576 x_alphanumeric_result OUT NOCOPY VARCHAR2,
6577 x_result_id OUT NOCOPY NUMBER,
6578 x_return_status OUT NOCOPY VARCHAR2 ) IS
6579
6580 l_tax_result_rec zx_process_results%ROWTYPE;
6581 l_error_buffer VARCHAR2(2000);
6582 l_structure_name VARCHAR2(30);
6583
6584 BEGIN
6585
6586 IF (g_level_statement >= g_current_runtime_level ) THEN
6587 FND_LOG.STRING(g_level_statement,
6588 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm.BEGIN',
6589 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm(+)');
6590 END IF;
6591
6592 x_return_status := FND_API.G_RET_STS_SUCCESS;
6593
6594 ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process(
6595 p_tax_service_type_code,
6596 'TRX_LINE_DIST_TBL',
6597 p_trx_line_index,
6598 p_event_class_rec,
6599 p_tax_id,
6600 NULL,
6601 p_tax_determine_date,
6602 NULL,
6603 NULL,
6604 l_tax_result_rec,
6605 x_return_status,
6606 l_error_buffer);
6607
6608 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6609 IF (g_level_statement >= g_current_runtime_level ) THEN
6610 FND_LOG.STRING(g_level_statement,
6611 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm',
6612 'Incorrect return_status after calling ' ||
6613 'ZX_TDS_RULE_BASE_DETM_PVT.rule_base_process');
6614 END IF;
6615
6616 x_alphanumeric_result := NULL;
6617 x_result_id := NULL;
6618 IF (g_level_statement >= g_current_runtime_level ) THEN
6619
6620 FND_LOG.STRING(g_level_statement,
6621 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm.END',
6622 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm(-)'||x_return_status);
6623 END IF;
6624 RETURN;
6625 END IF;
6626
6627 IF (l_tax_result_rec.alphanumeric_result IS NOT NULL) THEN
6628 x_alphanumeric_result := l_tax_result_rec.alphanumeric_result;
6629 x_result_id := l_tax_result_rec.result_id;
6630
6631 ELSE
6632 x_alphanumeric_result := NULL;
6633 x_result_id := NULL;
6634 END IF;
6635
6636 IF (g_level_statement >= g_current_runtime_level ) THEN
6637
6638 FND_LOG.STRING(g_level_statement,
6639 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm.END',
6640 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm(-)'||x_return_status);
6641 END IF;
6642
6643 EXCEPTION
6644 WHEN OTHERS THEN
6645 x_alphanumeric_result := NULL;
6646 x_result_id := NULL;
6647 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6648
6649 IF (g_level_unexpected >= g_current_runtime_level ) THEN
6650 FND_LOG.STRING(g_level_unexpected,
6651 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm',
6652 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
6653 FND_LOG.STRING(g_level_unexpected,
6654 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm.END',
6655 'ZX_TDS_APPLICABILITY_DETM_PKG.rule_base_pos_detm(-)');
6656 END IF;
6657 END rule_base_pos_detm;
6658
6659
6660 PROCEDURE populate_registration_info(
6661 p_event_class_rec IN zx_api_pub.event_class_rec_type,
6662 p_trx_line_index IN NUMBER,
6663 p_rownum IN NUMBER,
6664 p_def_reg_type IN zx_taxes_b.def_registr_party_type_code%TYPE,
6665 p_reg_rule_flg IN zx_taxes_b.registration_type_rule_flag%TYPE,
6666 p_tax_determine_date IN DATE,
6667 x_return_status OUT NOCOPY VARCHAR2) IS
6668
6669 -- get def_registr_party_type_code and registration_type_rule_flag
6670 --
6671 CURSOR get_reg_type_and_rule_flg_cur(p_tax_id NUMBER) IS
6672 SELECT def_registr_party_type_code,
6673 registration_type_rule_flag
6674 FROM ZX_TAXES_B
6675 WHERE tax_id = p_tax_id;
6676
6677 l_def_reg_type zx_taxes_b.def_registr_party_type_code%TYPE;
6678 l_reg_rule_flg zx_taxes_b.registration_type_rule_flag%TYPE;
6679
6680 l_tax_id NUMBER;
6681 l_error_buffer VARCHAR2(200);
6682 l_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
6683 l_self_assessed_flag zx_lines.self_assessed_flag%TYPE;
6684 BEGIN
6685
6686 x_return_status := FND_API.G_RET_STS_SUCCESS;
6687
6688 IF (g_level_procedure >= g_current_runtime_level ) THEN
6689 FND_LOG.STRING(g_level_procedure,
6690 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info.BEGIN',
6691 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info(+)');
6692 END IF;
6693
6694 l_tax_id := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_rownum).tax_id;
6695
6696 IF p_def_reg_type IS NOT NULL THEN
6697
6698 l_def_reg_type := p_def_reg_type;
6699 l_reg_rule_flg := p_reg_rule_flg;
6700
6701 ELSE
6702 -- get def_registr_party_type_code and registration_type_rule_flag
6703 --
6704 OPEN get_reg_type_and_rule_flg_cur(l_tax_id);
6705 FETCH get_reg_type_and_rule_flg_cur INTO l_def_reg_type,l_reg_rule_flg;
6706 CLOSE get_reg_type_and_rule_flg_cur;
6707 END IF;
6708
6709 IF g_outer_jurisdiction_code IS NOT NULL THEN
6710 -- use most outer level jurisdiction code to find the registration information.
6711 l_jurisdiction_code := g_outer_jurisdiction_code;
6712
6713 ELSE
6714 l_jurisdiction_code
6715 :=ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6716 p_rownum).tax_jurisdiction_code;
6717 END IF;
6718
6719 get_tax_registration(
6720 p_event_class_rec => p_event_class_rec,
6721 p_tax_regime_code => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6722 p_rownum).tax_regime_code,
6723 p_tax_id => l_tax_id,
6724 p_tax => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6725 p_rownum).tax,
6726 p_tax_determine_date => p_tax_determine_date,
6727 p_jurisdiction_code => l_jurisdiction_code,
6728 p_def_reg_type => l_def_reg_type,
6729 p_reg_rule_flg => l_reg_rule_flg,
6730 p_trx_line_index => p_trx_line_index,
6731 x_registration_number => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6732 p_rownum).tax_registration_number,
6733 x_tax_inclusion_flag => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6734 p_rownum).tax_amt_included_flag,
6735 x_self_assessment_flg => l_self_assessed_flag,
6736 x_tax_registration_result_id
6737 => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6738 p_rownum).tax_reg_num_det_result_id,
6739 x_rounding_rule_code => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6740 p_rownum).rounding_rule_code,
6741 x_registration_party_type
6742 => ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6743 p_rownum).registration_party_type,
6744 x_return_status => x_return_status);
6745
6746
6747 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6748 IF (g_level_statement >= g_current_runtime_level ) THEN
6749 FND_LOG.STRING(g_level_statement,
6750 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info',
6751 'Incorrect return_status after calling ' ||
6752 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_registration');
6753 FND_LOG.STRING(g_level_statement,
6754 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info',
6755 'RETURN_STATUS = ' || x_return_status);
6756 FND_LOG.STRING(g_level_statement,
6757 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info.END',
6758 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info(-)');
6759 END IF;
6760 RETURN;
6761 END IF;
6762 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_rownum).legal_message_trn
6763 :=ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(
6764 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_rownum).tax_reg_num_det_result_id,
6765 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_rownum).trx_date);
6766 -- Do not change the value of self_assessed_flag if
6767 -- 1. self_assessed_flag is overridden (bug 5391331)
6768 -- 2. manual tax line (bug 5391084)
6769 --
6770 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6771 p_rownum).orig_self_assessed_flag IS NULL AND
6772 NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6773 p_rownum).manually_entered_flag, 'N') ='N'
6774 THEN
6775
6776 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
6777 p_rownum).self_assessed_flag := l_self_assessed_flag;
6778 END IF;
6779
6780 -- get registration number for legal entity
6781 --
6782 get_legal_entity_registration(
6783 p_event_class_rec => p_event_class_rec,
6784 p_trx_line_index => p_trx_line_index,
6785 p_tax_line_index => p_rownum,
6786 x_return_status => x_return_status,
6787 x_error_buffer => l_error_buffer);
6788 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6789 IF (g_level_statement >= g_current_runtime_level ) THEN
6790 FND_LOG.STRING(g_level_statement,
6791 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info.END',
6792 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info(-)');
6793 END IF;
6794 RETURN;
6795 END IF;
6796
6797
6798 EXCEPTION
6799 WHEN OTHERS THEN
6800
6801 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6802
6803 IF (g_level_unexpected >= g_current_runtime_level ) THEN
6804 FND_LOG.STRING(g_level_unexpected,
6805 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info',
6806 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
6807 FND_LOG.STRING(g_level_unexpected,
6808 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info.END',
6809 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info(-)');
6810 END IF;
6811 END populate_registration_info;
6812
6813 ----------------------------------------------------------------------
6814 -- PROCEDURE
6815 -- get_tax_from_account
6816 --
6817 -- DESCRIPTION
6818 --
6819 -- This procedure handle enforcement from natual account.
6820 --
6821 -- IN
6822 -- p_trx_line_index
6823 --
6824 -- IN OUT NOCOPY
6825 -- x_begin_index
6826 -- x_end_index
6827 -- OUT NOCOPY x_return_status
6828
6829 PROCEDURE get_tax_from_account(
6830 p_event_class_rec IN zx_api_pub.event_class_rec_type,
6831 p_trx_line_index IN BINARY_INTEGER,
6832 p_tax_date IN DATE,
6833 p_tax_determine_date IN DATE,
6834 p_tax_point_date IN DATE,
6835 x_begin_index IN OUT NOCOPY BINARY_INTEGER,
6836 x_end_index IN OUT NOCOPY BINARY_INTEGER,
6837 x_return_status OUT NOCOPY VARCHAR2) IS
6838
6839 CURSOR get_chart_of_accts_id_csr IS
6840 SELECT chart_of_accounts_id
6841 FROM gl_sets_of_books
6842 WHERE set_of_books_id =
6843 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ledger_id(p_trx_line_index);
6844
6845 CURSOR get_default_jurisdiction_csr(c_tax_regime_code VARCHAR2, c_tax VARCHAR2) IS
6846 SELECT tax_jurisdiction_id,
6847 tax_jurisdiction_code
6848 FROM zx_jurisdictions_b
6849 WHERE tax_regime_code = c_tax_regime_code
6850 AND tax = c_tax
6851 AND default_jurisdiction_flag = 'Y'
6852 AND (p_tax_determine_date >= default_flg_effective_from AND
6853 (p_tax_determine_date <= default_flg_effective_to OR default_flg_effective_to IS NULL));
6854
6855 CURSOR get_det_tax_lines_frm_acct_csr(c_account_seg_value VARCHAR2) IS
6856 SELECT zxtr.tax_regime_code,
6857 zxtr.tax,
6858 zxtr.tax_status_code,
6859 zxtr.tax_rate_code,
6860 zxtr.amt_incl_tax_flag,
6861 zxtr.allow_rate_override_flag,
6862 zxtr.tax_class,
6863 zxt.tax_id,
6864 zxt.tax_type_code,
6865 zxt.tax_precision,
6866 zxt.minimum_accountable_unit,
6867 zxt.rounding_rule_code,
6868 zxt.tax_status_rule_flag,
6869 zxt.tax_rate_rule_flag,
6870 zxt.place_of_supply_rule_flag,
6871 zxt.applicability_rule_flag,
6872 zxt.tax_calc_rule_flag,
6873 zxt.taxable_basis_rule_flag,
6874 zxt.def_tax_calc_formula,
6875 zxt.def_taxable_basis_formula,
6876 zxt.reporting_only_flag,
6877 zxt.tax_currency_code,
6878 zxt.def_place_of_supply_type_code,
6879 zxt.def_registr_party_type_code,
6880 zxt.registration_type_rule_flag,
6881 zxt.direct_rate_rule_flag,
6882 zxt.def_inclusive_tax_flag,
6883 zxt.effective_from,
6884 zxt.effective_to,
6885 zxt.compounding_precedence,
6886 zxt.has_other_jurisdictions_flag,
6887 zxt.live_for_processing_flag,
6888 zxt.regn_num_same_as_le_flag,
6889 zxt.applied_amt_handling_flag,
6890 zxt.exchange_rate_type,
6891 zxt.applicable_by_default_flag,
6892 zxt.record_type_code,
6893 zxt.tax_exmpt_cr_method_code,
6894 zxt.tax_exmpt_source_tax,
6895 zxt.legal_reporting_status_def_val,
6896 zxt.def_rec_settlement_option_code,
6897 zxt.zone_geography_type,
6898 zxt.override_geography_type,
6899 zxt.allow_rounding_override_flag,
6900 zxt.tax_account_source_tax
6901 FROM zx_sco_account_rates zxtr,
6902 zx_sco_taxes zxt,
6903 fnd_lookups lc
6904 WHERE zxtr.content_owner_id = p_event_class_rec.first_pty_org_id
6905 AND zxtr.ledger_id =
6906 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ledger_id(p_trx_line_index)
6907 AND zxtr.account_segment_value= c_account_seg_value
6908 AND zxt.tax_regime_code = zxtr.tax_regime_code
6909 AND zxt.tax = zxtr.tax
6910 AND zxt.tax_type_code = lc.lookup_code
6911 AND lc.lookup_type = 'ZX_TAX_TYPE_CATEGORY'
6912 AND NVL(zxt.tax_type_code, 'X') <> 'OFFSET'
6913 AND zxt.live_for_processing_flag = 'Y'
6914 AND (p_tax_determine_date >= zxt.effective_from AND
6915 (p_tax_determine_date <= zxt.effective_to OR zxt.effective_to IS NULL))
6916 ORDER BY zxt.compounding_precedence;
6917
6918 l_app_column_name fnd_id_flex_segments.application_column_name%TYPE;
6919 l_account_seg_value gl_code_combinations.segment1%TYPE;
6920 l_delimiter varchar2(5) := NULL;
6921 l_num_result NUMBER;
6922 l_boolean_result BOOLEAN;
6923 l_flexsegtab fnd_flex_ext.SegmentArray;
6924 l_account_seg_num NUMBER;
6925 l_chart_of_accounts_id NUMBER;
6926 l_sql_statement VARCHAR2(2000);
6927
6928 l_account_ccid NUMBER;
6929 l_account_string VARCHAR2(2000);
6930 l_trx_line_id NUMBER;
6931 l_trx_level_type VARCHAR2(30);
6932 l_tax_tbl_subscript NUMBER;
6933 l_new_row_num NUMBER;
6934 l_error_buffer VARCHAR2(200);
6935
6936 l_begin_index BINARY_INTEGER;
6937 l_end_index BINARY_INTEGER;
6938 l_begin_index_from_acct BINARY_INTEGER;
6939 l_end_index_from_acct BINARY_INTEGER;
6940
6941 l_tax_regime_rec zx_global_structures_pkg.tax_regime_rec_type;
6942 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
6943 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
6944
6945 l_jurisdiction_id NUMBER;
6946 l_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
6947
6948 l_tax_class zx_rates_b.tax_class%TYPE;
6949 l_tmp_tax_apportionmt_ln_num NUMBER; -- Added for Bug 10184087
6950
6951 BEGIN
6952
6953 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
6954
6955 IF (g_level_procedure >= g_current_runtime_level ) THEN
6956 FND_LOG.STRING(g_level_procedure,
6957 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.BEGIN',
6958 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(+)');
6959
6960 END IF;
6961
6962 x_return_status := FND_API.G_RET_STS_SUCCESS;
6963
6964 -- Bug#5417753- determine tax_class value
6965 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
6966 l_tax_class := 'OUTPUT';
6967 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
6968 l_tax_class := 'INPUT';
6969 END IF;
6970
6971 l_account_ccid :=
6972 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.account_ccid(p_trx_line_index);
6973 l_account_string :=
6974 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.account_string(p_trx_line_index);
6975
6976 -- get chart_of_account_id
6977 --
6978 OPEN get_chart_of_accts_id_csr;
6979 FETCH get_chart_of_accts_id_csr into l_chart_of_accounts_id;
6980 CLOSE get_chart_of_accts_id_csr;
6981
6982 IF (g_level_statement >= g_current_runtime_level ) THEN
6983 FND_LOG.STRING(g_level_statement,
6984 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
6985 'l_chart_of_accounts_id = ' || to_char(l_chart_of_accounts_id));
6986 END IF;
6987
6988 IF l_chart_of_accounts_id IS NULL THEN
6989 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR; -- bug 4893261
6990 IF g_level_statement >= g_current_runtime_level THEN
6991 FND_LOG.STRING(g_level_statement,
6992 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
6993 'chart_of_accounts_id is NULL.');
6994 FND_LOG.STRING(g_level_statement,
6995 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
6996 'RETURN_STATUS = ' || x_return_status);
6997 FND_LOG.STRING(g_level_statement,
6998 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
6999 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7000 END IF;
7001 RETURN;
7002 END IF;
7003
7004 IF l_account_ccid IS NOT NULL AND l_account_ccid <> -1 THEN
7005
7006 -- Get the column name of the account segment in GL_CODE_COMBINATIONS
7007 --
7008 IF (g_level_statement >= g_current_runtime_level ) THEN
7009 FND_LOG.STRING(g_level_statement,
7010 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7011 'Getting tax code using code combination ID.'|| to_char(l_account_ccid));
7012 END IF;
7013
7014 -- call fnd api to get the column name for natural account
7015 --
7016 l_boolean_result := fnd_flex_apis.get_segment_column (
7017 101,
7018 'GL#',
7019 l_chart_of_accounts_id,
7020 'GL_ACCOUNT',
7021 l_app_column_name);
7022
7023 -- bug#8226639- use bind variable for l_account_ccid
7024
7025 l_sql_statement := 'SELECT ' || l_app_column_name ||
7026 ' FROM gl_code_combinations cc ' ||
7027 ' WHERE cc.code_combination_id = :l_account_ccid ';
7028
7029 EXECUTE IMMEDIATE l_sql_statement INTO l_account_seg_value
7030 USING l_account_ccid;
7031
7032 IF (g_level_statement >= g_current_runtime_level ) THEN
7033 FND_LOG.STRING(g_level_statement,
7034 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7035 'l_account_seg_value ==' || l_account_seg_value);
7036 END IF;
7037
7038 ELSIF l_account_string IS NOT NULL THEN
7039
7040 IF (g_level_statement >= g_current_runtime_level ) THEN
7041 FND_LOG.STRING(g_level_statement,
7042 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7043 'account_string ==' || l_account_string);
7044 END IF;
7045
7046 -- Get account segment from the concatenated string
7047 --
7048 l_delimiter := fnd_flex_ext.get_delimiter(
7049 'SQLGL',
7050 'GL#',
7051 l_chart_of_accounts_id);
7052
7053 l_num_result := fnd_flex_ext.breakup_segments(
7054 l_account_string,
7055 l_delimiter,
7056 l_flexsegtab);
7057
7058 l_boolean_result := fnd_flex_apis.get_qualifier_segnum (
7059 101,
7060 'GL#',
7061 l_chart_of_accounts_id,
7062 'GL_ACCOUNT',
7063 l_account_seg_num);
7064
7065 l_account_seg_value := l_flexsegtab(l_account_seg_num);
7066
7067 IF (g_level_statement >= g_current_runtime_level ) THEN
7068 FND_LOG.STRING(g_level_statement,
7069 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7070 'l_account_seg_value == ' || l_account_seg_value|| 'l_delimiter == ' || l_delimiter);
7071 END IF;
7072 END IF;
7073
7074 IF l_account_seg_value IS NOT NULL THEN
7075
7076 l_begin_index := x_begin_index;
7077 l_end_index := x_end_index;
7078
7079 -- Get detail tax lines from account
7080 --
7081 l_trx_line_id :=
7082 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
7083 l_trx_level_type :=
7084 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
7085
7086 FOR l_tax_rec IN get_det_tax_lines_frm_acct_csr(l_account_seg_value) LOOP
7087
7088 l_tax_tbl_subscript := NULL;
7089
7090 -- Check if this tax line exists in the applicable tax lines
7091 --
7092 IF l_begin_index IS NOT NULL THEN
7093 l_tax_tbl_subscript := ZX_TDS_UTILITIES_PKG.get_tax_index(
7094 l_tax_rec.tax_regime_code,
7095 l_tax_rec.tax,
7096 l_trx_line_id,
7097 l_trx_level_type,
7098 l_begin_index,
7099 l_end_index,
7100 x_return_status);
7101
7102 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7103 IF (g_level_statement >= g_current_runtime_level ) THEN
7104 FND_LOG.STRING(g_level_statement,
7105 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7106 'Incorrect return_status after calling ' ||
7107 'ZX_TDS_UTILITIES_PKG.get_tax_index');
7108 FND_LOG.STRING(g_level_statement,
7109 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7110 'RETURN_STATUS = ' || x_return_status);
7111 FND_LOG.STRING(g_level_statement,
7112 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7113 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7114 END IF;
7115 RETURN;
7116 END IF;
7117 END IF; -- l_begin_index IS NOT NULL
7118
7119 IF l_tax_tbl_subscript IS NULL OR
7120 (l_tax_tbl_subscript IS NOT NULL AND -- Added for bug 10184087
7121 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).other_doc_source ='REFERENCE' AND
7122 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_tax_amt = 0 AND
7123 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_taxable_amt = 0 AND
7124 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).manually_entered_flag ='Y' AND
7125 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).freeze_until_overridden_flag ='Y'
7126 )
7127 THEN
7128
7129 -- This tax from account does not exist in the current applicable taxes
7130 -- Create a new tax line in p_detail_tax_lines_tbl
7131 --
7132 -- populate g_tax_rec_tbl, if it does not exist
7133 --
7134 IF NOT ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl.EXISTS(l_tax_rec.tax_id) THEN
7135
7136
7137 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7138 l_tax_rec.tax_id).tax_regime_code := l_tax_rec.tax_regime_code;
7139 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7140 l_tax_rec.tax_id).tax_id := l_tax_rec.tax_id;
7141 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_rec.tax_id).tax :=l_tax_rec.tax;
7142
7143 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7144 l_tax_rec.tax_id).def_place_of_supply_type_code :=
7145 l_tax_rec.def_place_of_supply_type_code;
7146 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7147 l_tax_rec.tax_id).place_of_supply_rule_flag :=
7148 l_tax_rec.place_of_supply_rule_flag;
7149 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7150 l_tax_rec.tax_id).applicability_rule_flag :=
7151 l_tax_rec.applicability_rule_flag;
7152 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7153 l_tax_rec.tax_id).direct_rate_rule_flag :=
7154 l_tax_rec.direct_rate_rule_flag;
7155 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7156 l_tax_rec.tax_id).def_registr_party_type_code :=
7157 l_tax_rec.def_registr_party_type_code;
7158 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7159 l_tax_rec.tax_id).registration_type_rule_flag :=
7160 l_tax_rec.registration_type_rule_flag;
7161
7162 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7163 l_tax_rec.tax_id).tax_currency_code := l_tax_rec.tax_currency_code;
7164 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7165 l_tax_rec.tax_id).tax_precision := l_tax_rec.tax_precision;
7166 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7167 l_tax_rec.tax_id).minimum_accountable_unit :=
7168 l_tax_rec.minimum_accountable_unit;
7169 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7170 l_tax_rec.tax_id).rounding_rule_code :=l_tax_rec.rounding_rule_code;
7171 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7172 l_tax_rec.tax_id).tax_status_rule_flag :=
7173 l_tax_rec.tax_status_rule_flag;
7174 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7175 l_tax_rec.tax_id).tax_rate_rule_flag := l_tax_rec.tax_rate_rule_flag;
7176 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7177 l_tax_rec.tax_id).tax_calc_rule_flag := l_tax_rec.tax_calc_rule_flag;
7178 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7179 l_tax_rec.tax_id).taxable_basis_rule_flag :=
7180 l_tax_rec.taxable_basis_rule_flag;
7181 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7182 l_tax_rec.tax_id).def_tax_calc_formula :=
7183 l_tax_rec.def_tax_calc_formula;
7184 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7185 l_tax_rec.tax_id).def_taxable_basis_formula :=
7186 l_tax_rec.def_taxable_basis_formula;
7187 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7188 l_tax_rec.tax_id).tax_type_code := l_tax_rec.tax_type_code;
7189 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7190 l_tax_rec.tax_id).reporting_only_flag := l_tax_rec.reporting_only_flag;
7191 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7192 l_tax_rec.tax_id).def_inclusive_tax_flag :=
7193 l_tax_rec.def_inclusive_tax_flag;
7194 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7195 l_tax_rec.tax_id).applied_amt_handling_flag :=
7196 l_tax_rec.applied_amt_handling_flag;
7197 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7198 l_tax_rec.tax_id).exchange_rate_type :=
7199 l_tax_rec.exchange_rate_type;
7200 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7201 l_tax_rec.tax_id).effective_from := l_tax_rec.effective_from;
7202 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7203 l_tax_rec.tax_id).effective_to := l_tax_rec.effective_to;
7204 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7205 l_tax_rec.tax_id).compounding_precedence :=
7206 l_tax_rec.compounding_precedence;
7207 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7208 l_tax_rec.tax_id).has_other_jurisdictions_flag :=
7209 l_tax_rec.has_other_jurisdictions_flag;
7210 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7211 l_tax_rec.tax_id).live_for_processing_flag :=
7212 l_tax_rec.live_for_processing_flag;
7213 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7214 l_tax_rec.tax_id).regn_num_same_as_le_flag:=
7215 l_tax_rec.regn_num_same_as_le_flag;
7216 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7217 l_tax_rec.tax_id).applicable_by_default_flag :=
7218 l_tax_rec.applicable_by_default_flag;
7219 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7220 l_tax_rec.tax_id).record_type_code :=
7221 l_tax_rec.record_type_code;
7222 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7223 l_tax_rec.tax_id).tax_exmpt_cr_method_code :=
7224 l_tax_rec.tax_exmpt_cr_method_code;
7225 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7226 l_tax_rec.tax_id).tax_exmpt_source_tax :=
7227 l_tax_rec.tax_exmpt_source_tax;
7228 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7229 l_tax_rec.tax_id).legal_reporting_status_def_val :=
7230 l_tax_rec.legal_reporting_status_def_val;
7231 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7232 l_tax_rec.tax_id).def_rec_settlement_option_code :=
7233 l_tax_rec.def_rec_settlement_option_code;
7234 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7235 l_tax_rec.tax_id).zone_geography_type :=
7236 l_tax_rec.zone_geography_type;
7237 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7238 l_tax_rec.tax_id).override_geography_type :=
7239 l_tax_rec.override_geography_type;
7240 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7241 l_tax_rec.tax_id).tax_account_source_tax :=
7242 l_tax_rec.tax_account_source_tax;
7243
7244
7245 END IF; -- g_tax_rec_tbl(l_tax_rec.tax_id) does not exist
7246
7247 IF (l_tax_tbl_subscript IS NOT NULL AND -- Added for bug 10184087
7248 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).other_doc_source ='REFERENCE' AND
7249 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_tax_amt = 0 AND
7250 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).unrounded_taxable_amt = 0 AND
7251 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).manually_entered_flag ='Y' AND
7252 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript).freeze_until_overridden_flag ='Y'
7253 )
7254 THEN
7255
7256 IF (g_level_statement >= g_current_runtime_level ) THEN
7257 FND_LOG.STRING(g_level_statement,
7258 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7259 'Tax is Applicable and there exists a Zero Amount Reference Tax Line at index '||l_tax_tbl_subscript);
7260 FND_LOG.STRING(g_level_statement,
7261 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7262 'Resetting the tax line record at index '||l_tax_tbl_subscript);
7263 END IF;
7264
7265 l_new_row_num := l_tax_tbl_subscript;
7266 l_tmp_tax_apportionmt_ln_num :=
7267 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_tbl_subscript
7268 ).tax_apportionment_line_number;
7269 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_new_row_num) := NULL;
7270 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7271 l_new_row_num).tax_apportionment_line_number := l_tmp_tax_apportionmt_ln_num;
7272
7273 ELSE
7274 -- Create a new record in p_detail_tax_lines_tbl
7275 --
7276 l_new_row_num :=
7277 NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0) + 1;
7278 END IF;
7279
7280 -- validate and populate tax_regime_id
7281 --
7282 ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
7283 l_tax_rec.tax_regime_code,
7284 p_tax_determine_date,
7285 l_tax_regime_rec,
7286 x_return_status,
7287 l_error_buffer);
7288
7289 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7290 IF (g_level_statement >= g_current_runtime_level ) THEN
7291 FND_LOG.STRING(g_level_statement,
7292 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7293 'Incorrect return_status after calling ' ||
7294 'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
7295 FND_LOG.STRING(g_level_statement,
7296 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7297 'RETURN_STATUS = ' || x_return_status);
7298 FND_LOG.STRING(g_level_statement,
7299 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7300 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7301 END IF;
7302 RETURN;
7303 END IF;
7304
7305 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7306 l_new_row_num).tax_regime_id := l_tax_regime_rec.tax_regime_id;
7307
7308 -- validate and populate tax_status_id
7309 --
7310 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
7311 l_tax_rec.tax,
7312 l_tax_rec.tax_regime_code,
7313 l_tax_rec.tax_status_code,
7314 p_tax_determine_date,
7315 l_tax_status_rec,
7316 x_return_status,
7317 l_error_buffer);
7318
7319 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7320 IF (g_level_statement >= g_current_runtime_level ) THEN
7321 FND_LOG.STRING(g_level_statement,
7322 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7323 'Incorrect return_status after calling ' ||
7324 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
7325 FND_LOG.STRING(g_level_statement,
7326 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7327 'RETURN_STATUS = ' || x_return_status);
7328 FND_LOG.STRING(g_level_statement,
7329 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7330 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7331 END IF;
7332 RETURN;
7333 END IF;
7334
7335 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7336 l_new_row_num).tax_status_id := l_tax_status_rec.tax_status_id;
7337
7338 -- validate and populate tax_rate_id
7339 --
7340 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
7341 l_tax_rec.tax_regime_code,
7342 l_tax_rec.tax,
7343 NULL, --++++
7344 l_tax_rec.tax_status_code,
7345 l_tax_rec.tax_rate_code,
7346 p_tax_determine_date,
7347 l_tax_class,
7348 l_tax_rate_rec,
7349 x_return_status,
7350 l_error_buffer);
7351
7352 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7353 IF (g_level_statement >= g_current_runtime_level ) THEN
7354 FND_LOG.STRING(g_level_statement,
7355 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7356 'Incorrect return_status after calling ' ||
7357 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info');
7358 FND_LOG.STRING(g_level_statement,
7359 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7360 'RETURN_STATUS = ' || x_return_status);
7361 FND_LOG.STRING(g_level_statement,
7362 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7363 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7364 END IF;
7365 RETURN;
7366 END IF;
7367
7368 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7369 l_new_row_num).tax_rate_id := l_tax_rate_rec.tax_rate_id;
7370 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7371 l_new_row_num).tax_rate := l_tax_rate_rec.percentage_rate;
7372
7373 -- Copy data from account to the detail_tax_lines_tbl
7374 --
7375 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7376 l_new_row_num).tax_regime_code := l_tax_rec.tax_regime_code;
7377 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7378 l_new_row_num).tax := l_tax_rec.tax;
7379 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7380 l_new_row_num).tax_id := l_tax_rec.tax_id;
7381 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7382 l_new_row_num).tax_status_code := l_tax_rec.tax_status_code;
7383 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7384 l_new_row_num).tax_rate_code := l_tax_rec.tax_rate_code;
7385
7386 -- populate default tax jurisdiction code and id - Note that the jurisdiction
7387 -- will always be NULL for the rates associated with GL account segment values.
7388 --
7389 OPEN get_default_jurisdiction_csr(l_tax_rec.tax_regime_code, l_tax_rec.tax);
7390 FETCH get_default_jurisdiction_csr into l_jurisdiction_id, l_jurisdiction_code;
7391 CLOSE get_default_jurisdiction_csr;
7392
7393 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7394 l_new_row_num).tax_jurisdiction_id := l_jurisdiction_id;
7395 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7396 l_new_row_num).tax_jurisdiction_code := l_jurisdiction_code;
7397
7398 -- populate other columns
7399 --
7400 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7401 l_new_row_num).tax_amt_included_flag := l_tax_rec.amt_incl_tax_flag;
7402
7403 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7404 l_new_row_num).tax_currency_code := l_tax_rec.tax_currency_code;
7405 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7406 l_new_row_num).tax_type_code := l_tax_rec.tax_type_code;
7407 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7408 l_new_row_num).tax_currency_conversion_date := p_tax_determine_date;
7409 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7410 l_new_row_num).tax_currency_conversion_type :=
7411 l_tax_rec.exchange_rate_type;
7412 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7413 l_new_row_num).reporting_only_flag := l_tax_rec.reporting_only_flag;
7414 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7415 l_new_row_num).rounding_rule_code := l_tax_rec.rounding_rule_code;
7416 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7417 l_new_row_num).tax_date := p_tax_date;
7418 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7419 l_new_row_num).tax_determine_date := p_tax_determine_date;
7420 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7421 l_new_row_num).tax_point_date := p_tax_point_date;
7422
7423 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7424 l_new_row_num).enforce_from_natural_acct_flag := 'Y';
7425
7426 -- populate rounding_lvl_party_tax_prof_id and rounding_level_code
7427 --
7428 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7429 l_new_row_num).rounding_lvl_party_tax_prof_id :=
7430 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id;
7431
7432 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7433 l_new_row_num).rounding_level_code :=
7434 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level;
7435
7436 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7437 l_new_row_num).rounding_lvl_party_type :=
7438 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type;
7439
7440 -- populate hq_estb_party_tax_prof_id
7441 --
7442 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7443 l_new_row_num).hq_estb_party_tax_prof_id :=
7444 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.hq_estb_party_tax_prof_id(
7445 p_trx_line_index);
7446
7447 -- bug 5077691: populate legal_reporting_status
7448 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
7449 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7450 l_new_row_num).legal_reporting_status :=
7451 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7452 l_tax_rec.tax_id).legal_reporting_status_def_val;
7453 END IF;
7454
7455 -- populate tax registration info
7456 --
7457 populate_registration_info(
7458 p_event_class_rec => p_event_class_rec,
7459 p_trx_line_index => p_trx_line_index,
7460 p_rownum => l_new_row_num,
7461 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
7462 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
7463 p_tax_determine_date => p_tax_determine_date,
7464 x_return_status => x_return_status);
7465
7466 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7467 IF (g_level_statement >= g_current_runtime_level ) THEN
7468 FND_LOG.STRING(g_level_statement,
7469 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7470 'Incorrect return_status after calling ' ||
7471 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
7472 FND_LOG.STRING(g_level_statement,
7473 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7474 'RETURN_STATUS = ' || x_return_status);
7475 FND_LOG.STRING(g_level_statement,
7476 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7477 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7478 END IF;
7479 RETURN;
7480 END IF;
7481
7482 -- Set x_begin_index if it has not been set
7483 --
7484 IF (x_begin_index IS NULL) THEN
7485 x_begin_index := l_new_row_num ;
7486 END IF;
7487
7488 -- Set l_begin_index_from_acct if it has not been set
7489 --
7490 IF (l_begin_index_from_acct IS NULL) THEN
7491 l_begin_index_from_acct := l_new_row_num ;
7492 END IF;
7493
7494 ELSE -- l_tax_tbl_subscript is not NULL
7495
7496 -- Set enforce_from_natural_acct_flag to 'Y'
7497 --
7498 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7499 l_tax_tbl_subscript).enforce_from_natural_acct_flag := 'Y';
7500
7501 END IF; -- l_tax_tbl_subscript
7502 END LOOP; -- get_tax_lines from accounts
7503
7504 -- set x_end_index and l_end_index_from_acct
7505 --
7506 IF (x_begin_index IS NOT NULL) THEN
7507 x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
7508 l_end_index_from_acct := x_end_index;
7509 END IF;
7510
7511 -- copy transaction info to new tax lines
7512 --
7513 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines(
7514 p_trx_line_index,
7515 l_begin_index_from_acct,
7516 l_end_index_from_acct,
7517 x_return_status,
7518 l_error_buffer );
7519
7520 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7521 IF (g_level_statement >= g_current_runtime_level ) THEN
7522 FND_LOG.STRING(g_level_statement,
7523 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7524 'Incorrect return_status after calling ' ||
7525 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
7526 FND_LOG.STRING(g_level_statement,
7527 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7528 'RETURN_STATUS = ' || x_return_status);
7529 FND_LOG.STRING(g_level_statement,
7530 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7531 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7532 END IF;
7533 RETURN;
7534 END IF;
7535 END IF; -- l_account_seg_value IS NOT NULL
7536 IF (g_level_procedure >= g_current_runtime_level ) THEN
7537
7538 FND_LOG.STRING(g_level_procedure,
7539 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7540 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)'||x_return_status);
7541 END IF;
7542
7543 EXCEPTION
7544 WHEN OTHERS THEN
7545 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7546 IF (g_level_unexpected >= g_current_runtime_level ) THEN
7547 FND_LOG.STRING(g_level_unexpected,
7548 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account',
7549 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
7550 FND_LOG.STRING(g_level_unexpected,
7551 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account.END',
7552 'ZX_TDS_APPLICABILITY_DETM_PKG.get_tax_from_account(-)');
7553 END IF;
7554
7555 END get_tax_from_account;
7556
7557 ---------------------------------------------------------------------
7558 -- PUBLIC PROCEDURE
7559 -- get_taxes_for_intercomp_trx
7560 --
7561 -- DESCRIPTION: This procedure fetch detail tax lines from source
7562 -- document for inter-company transaction.
7563 --
7564 -- April 25, 2005 Hongjun Liu Created
7565 --
7566
7567 PROCEDURE get_taxes_for_intercomp_trx(
7568 p_event_class_rec IN zx_api_pub.event_class_rec_type,
7569 p_trx_line_index IN NUMBER,
7570 p_tax_date IN DATE,
7571 p_tax_determine_date IN DATE,
7572 p_tax_point_date IN DATE,
7573 x_begin_index IN OUT NOCOPY NUMBER,
7574 x_end_index IN OUT NOCOPY NUMBER,
7575 x_return_status OUT NOCOPY VARCHAR2) IS
7576
7577 CURSOR get_taxes_f_intercomp_trx_csr IS
7578 SELECT zxl.*
7579 FROM zx_lines zxl, zx_evnt_cls_mappings map
7580 WHERE map.application_id =
7581 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.application_id(p_trx_line_index)
7582 AND map.entity_code =
7583 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.entity_code(p_trx_line_index)
7584 AND map.event_class_code =
7585 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.event_class_code(p_trx_line_index)
7586 AND zxl.application_id = map.intrcmp_src_appln_id
7587 AND zxl.entity_code = map.intrcmp_src_entity_code
7588 AND zxl.event_class_code = decode(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(p_trx_line_index),
7589 'INTERCOMPANY_TRX', zxl.event_class_code,
7590 /* decode(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_class(p_trx_line_index),
7591 'AP_CREDIT_MEMO', 'CREDIT_MEMO',
7592 'AP_DEBIT_MEMO', 'DEBIT_MEMO',
7593 map.intrcmp_src_evnt_cls_code), */ -- Bug9587918
7594 map.intrcmp_src_evnt_cls_code)
7595 AND zxl.trx_id =
7596 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_id(p_trx_line_index)
7597 AND zxl.trx_line_id =
7598 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_line_id(p_trx_line_index)
7599 AND zxl.trx_level_type =
7600 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_trx_level_type(p_trx_line_index)
7601 AND zxl.tax_provider_id IS NULL
7602 AND zxl.cancel_flag <> 'Y'
7603 AND zxl.mrc_tax_line_flag = 'N';
7604
7605 CURSOR is_tax_migrated_in_ar_csr(
7606 c_tax_rate_id zx_rates_b.tax_rate_id%TYPE) IS
7607 SELECT tax_regime_code,
7608 tax,
7609 tax_status_code,
7610 record_type_code,
7611 offset_tax_rate_code,
7612 tax_jurisdiction_code
7613 FROM zx_rates_b
7614 WHERE tax_rate_id = c_tax_rate_id
7615 AND active_flag = 'Y';
7616
7617 CURSOR get_tax_info_f_ap_input
7618 (c_tax_rate_code zx_rates_b.tax_rate_code%TYPE) IS
7619 SELECT tax_regime_code,
7620 tax,
7621 tax_status_code,
7622 tax_jurisdiction_code
7623 FROM zx_sco_rates_b_v
7624 WHERE tax_rate_code = c_tax_rate_code
7625 AND effective_from <= p_tax_determine_date
7626 AND (effective_to >= p_tax_determine_date OR effective_to IS NULL)
7627 AND tax_class = 'INPUT'
7628 AND active_flag = 'Y'
7629 ORDER BY subscription_level_code;
7630
7631 CURSOR get_tax_info_f_ap_null
7632 (c_tax_rate_code zx_rates_b.tax_rate_code%TYPE) IS
7633 SELECT tax_regime_code,
7634 tax,
7635 tax_status_code,
7636 tax_jurisdiction_code
7637 FROM zx_sco_rates_b_v
7638 WHERE tax_rate_code = c_tax_rate_code
7639 AND effective_from <= p_tax_determine_date
7640 AND (effective_to >= p_tax_determine_date OR effective_to IS NULL)
7641 AND tax_class IS NULL
7642 AND active_flag = 'Y'
7643 ORDER BY subscription_level_code;
7644
7645 CURSOR get_tax_info_f_not_ap
7646 (c_tax_rate_code zx_rates_b.tax_rate_code%TYPE) IS
7647 SELECT tax_regime_code,
7648 tax,
7649 tax_status_code,
7650 tax_jurisdiction_code
7651 FROM zx_sco_rates_b_v
7652 WHERE tax_rate_code = c_tax_rate_code
7653 AND effective_from <= p_tax_determine_date
7654 AND (effective_to >= p_tax_determine_date OR effective_to IS NULL)
7655 AND active_flag = 'Y'
7656 AND tax_class <> 'INPUT'
7657 ORDER BY subscription_level_code;
7658
7659 l_tax_regime_rec zx_global_structures_pkg.tax_regime_rec_type;
7660 l_tax_rec zx_tds_utilities_pkg.zx_tax_info_cache_rec;
7661 l_tax_status_rec zx_tds_utilities_pkg.zx_status_info_rec;
7662 l_tax_rate_rec zx_tds_utilities_pkg.zx_rate_info_rec_type;
7663 l_tax_jurisdiction_rec ZX_TDS_UTILITIES_PKG.zx_jur_info_cache_rec_type;
7664 l_rownum BINARY_INTEGER;
7665 l_error_buffer VARCHAR2(200);
7666 l_tax_regime_code zx_regimes_b.tax_regime_code%TYPE;
7667 l_tax_jurisdiction_code zx_jurisdictions_b.tax_jurisdiction_code%TYPE;
7668 l_tax zx_taxes_b.tax%TYPE;
7669 l_tax_status_code zx_status_b.tax_status_code%TYPE;
7670 l_record_type_code zx_rates_b.record_type_code%TYPE;
7671 l_offset_tax_rate_code zx_rates_b.offset_tax_rate_code%TYPE;
7672 l_tax_found_in_ap_flag VARCHAR2(1);
7673
7674 l_tax_class zx_rates_b.tax_class%TYPE;
7675 l_is_valid BOOLEAN;
7676 l_count NUMBER;
7677
7678 BEGIN
7679
7680 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
7681
7682 IF (g_level_procedure >= g_current_runtime_level ) THEN
7683 FND_LOG.STRING(g_level_procedure,
7684 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.BEGIN',
7685 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(+)');
7686 END IF;
7687
7688 x_return_status := FND_API.G_RET_STS_SUCCESS;
7689
7690 -- Bug#5417753- determine tax_class value
7691 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
7692 l_tax_class := 'OUTPUT';
7693 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
7694 l_tax_class := 'INPUT';
7695 END IF;
7696
7697 l_rownum := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
7698
7699 FOR tax_line_rec IN get_taxes_f_intercomp_trx_csr LOOP
7700
7701 l_is_valid := TRUE;
7702 l_rownum := l_rownum + 1;
7703
7704 -- populate tax info fetched from zx_lines to g_detail_tax_lines_tbl
7705 --
7706 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := tax_line_rec;
7707
7708 -- set tax_line_id to NULL. It will be reset in pop_tax_line_for_trx_line
7709 --
7710 -- set tax amount columns to null, they will be rounded later based on the
7711 -- unrounded tax and taxable amounts
7712 --
7713 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7714 l_rownum).tax_line_id := NULL;
7715 --Bug 9701132
7716 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7717 l_rownum).hq_estb_party_tax_prof_id :=
7718 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.hq_estb_party_tax_prof_id(p_trx_line_index);
7719 --End Bug 9701132
7720 OPEN is_tax_migrated_in_ar_csr(tax_line_rec.tax_rate_id);
7721
7722 FETCH is_tax_migrated_in_ar_csr INTO l_tax_regime_code, l_tax,
7723 l_tax_status_code,l_record_type_code, l_offset_tax_rate_code, l_tax_jurisdiction_code;
7724
7725 IF is_tax_migrated_in_ar_csr%NOTFOUND THEN
7726
7727 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7728 l_error_buffer := 'No Tax Rate Found in AR for the specified Tax Rate Id';
7729 IF (g_level_statement >= g_current_runtime_level ) THEN
7730 FND_LOG.STRING(g_level_statement,
7731 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7732 l_error_buffer);
7733 FND_LOG.STRING(g_level_statement,
7734 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7735 'RETURN_STATUS = ' || x_return_status);
7736 FND_LOG.STRING(g_level_statement,
7737 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7738 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7739 END IF;
7740 RETURN;
7741 END IF;
7742
7743 CLOSE is_tax_migrated_in_ar_csr;
7744
7745 IF l_record_type_code <> 'MIGRATED' THEN
7746
7747 -- Ths is not a migrated tax rate code
7748 -- Need to validate and populate tax_regime_id
7749 --
7750 -- Bug fix 5653907: If the tax_amount fetched from source document is 0 and
7751 -- the tax is not migrated from 11i, it is not madatory to define the same
7752 -- tax in AP as that in AR. In this case, we do not need to error out if
7753 -- the validations fail because we can ignore the tax lines fetched from AR
7754 --
7755 ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
7756 tax_line_rec.tax_regime_code,
7757 p_tax_determine_date,
7758 l_tax_regime_rec,
7759 x_return_status,
7760 l_error_buffer);
7761
7762 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7763 l_is_valid := FALSE;
7764 IF (g_level_statement >= g_current_runtime_level ) THEN
7765 FND_LOG.STRING(g_level_statement,
7766 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7767 'Incorrect return_status after calling ' ||
7768 'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
7769 FND_LOG.STRING(g_level_statement,
7770 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7771 'RETURN_STATUS = ' || x_return_status);
7772 FND_LOG.STRING(g_level_statement,
7773 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7774 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7775 END IF;
7776 /*IF tax_line_rec.tax_amt <> 0 THEN
7777 RETURN;
7778 END IF;*/
7779 END IF;
7780
7781 -- Populate tax_regime_id and validate tax_id
7782 --
7783 IF l_is_valid THEN
7784
7785 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7786 l_rownum).tax_regime_id := l_tax_regime_rec.tax_regime_id;
7787
7788 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
7789 tax_line_rec.tax_regime_code,
7790 tax_line_rec.tax,
7791 p_tax_determine_date,
7792 l_tax_rec,
7793 x_return_status,
7794 l_error_buffer);
7795
7796 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7797 l_is_valid := FALSE;
7798 IF (g_level_statement >= g_current_runtime_level ) THEN
7799 FND_LOG.STRING(g_level_statement,
7800 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7801 'Incorrect return_status after calling ' ||
7802 'ZX_TDS_UTILITIES_PKG.get_tax_cache_info');
7803 FND_LOG.STRING(g_level_statement,
7804 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7805 'RETURN_STATUS = ' || x_return_status);
7806 FND_LOG.STRING(g_level_statement,
7807 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7808 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7809 END IF;
7810 /*IF tax_line_rec.tax_amt <> 0 THEN
7811 RETURN;
7812 END IF;*/
7813
7814 ELSE -- x_return_status = FND_API.G_RET_STS_SUCCESS
7815
7816 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7817 l_rownum).tax_id := l_tax_rec.tax_id;
7818 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7819 l_rownum).reporting_only_flag := l_tax_rec.reporting_only_flag;
7820
7821 -- bug 5077691: populate legal_reporting_status
7822 --
7823 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
7824 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7825 l_rownum).legal_reporting_status :=
7826 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
7827 l_tax_rec.tax_id).legal_reporting_status_def_val;
7828 END IF;
7829 END IF;
7830 END IF; -- l_is_valid for tax validation
7831
7832 -- validate tax_jurisdiction_id
7833 --
7834 IF l_is_valid AND tax_line_rec.tax_jurisdiction_code is not NULL THEN
7835
7836 ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
7837 tax_line_rec.tax_regime_code,
7838 tax_line_rec.tax,
7839 tax_line_rec.tax_jurisdiction_code,
7840 p_tax_determine_date,
7841 l_tax_jurisdiction_rec,
7842 x_return_status,
7843 l_error_buffer);
7844
7845 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7846 l_is_valid := FALSE;
7847 IF (g_level_statement >= g_current_runtime_level ) THEN
7848 FND_LOG.STRING(g_level_statement,
7849 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
7850 'Incorrect return_status after calling ' ||
7851 'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info');
7852 FND_LOG.STRING(g_level_statement,
7853 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
7854 'RETURN_STATUS = ' || x_return_status);
7855 FND_LOG.STRING(g_level_statement,
7856 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
7857 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
7858 END IF;
7859 /*IF tax_line_rec.tax_amt <> 0 THEN
7860 RETURN;
7861 END IF;*/
7862 ELSE
7863
7864 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7865 l_rownum).tax_jurisdiction_id :=
7866 l_tax_jurisdiction_rec.tax_jurisdiction_id;
7867 END IF;
7868 END IF; -- l_is_valid for jurisdiction validation
7869
7870 -- validate tax_status_id
7871 --
7872 IF l_is_valid THEN
7873
7874 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
7875 tax_line_rec.tax,
7876 tax_line_rec.tax_regime_code,
7877 tax_line_rec.tax_status_code,
7878 p_tax_determine_date,
7879 l_tax_status_rec,
7880 x_return_status,
7881 l_error_buffer);
7882
7883 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7884 l_is_valid := FALSE;
7885 IF (g_level_statement >= g_current_runtime_level ) THEN
7886 FND_LOG.STRING(g_level_statement,
7887 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7888 'Incorrect return_status after calling ' ||
7889 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
7890 FND_LOG.STRING(g_level_statement,
7891 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7892 'RETURN_STATUS = ' || x_return_status);
7893 FND_LOG.STRING(g_level_statement,
7894 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7895 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7896 END IF;
7897 /*IF tax_line_rec.tax_amt <> 0 THEN
7898 RETURN;
7899 END IF;*/
7900 END IF;
7901 END IF; -- l_is_valid for status validation
7902
7903 -- populate tax_status_id and validate tax_rate_id
7904 --
7905 IF l_is_valid THEN
7906
7907 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7908 l_rownum).tax_status_id := l_tax_status_rec.tax_status_id;
7909
7910 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
7911 tax_line_rec.tax_regime_code,
7912 tax_line_rec.tax,
7913 tax_line_rec.tax_jurisdiction_code,
7914 tax_line_rec.tax_status_code,
7915 tax_line_rec.tax_rate_code,
7916 p_tax_determine_date,
7917 l_tax_class,
7918 l_tax_rate_rec,
7919 x_return_status,
7920 l_error_buffer);
7921
7922 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7923 l_is_valid := FALSE;
7924 IF (g_level_statement >= g_current_runtime_level ) THEN
7925 FND_LOG.STRING(g_level_statement,
7926 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7927 'Incorrect return_status after calling ' ||
7928 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info');
7929 FND_LOG.STRING(g_level_statement,
7930 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7931 'RETURN_STATUS = ' || x_return_status);
7932 FND_LOG.STRING(g_level_statement,
7933 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7934 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7935 END IF;
7936 /*IF tax_line_rec.tax_amt <> 0 THEN
7937 RETURN;
7938 END IF;*/
7939 END IF;
7940 END IF; -- l_is_valid for tax rate validation
7941
7942 IF l_is_valid THEN
7943
7944 IF l_tax_rate_rec.percentage_rate <> tax_line_rec.tax_rate AND --bug 5010575
7945 l_tax_rate_rec.allow_adhoc_tax_rate_flag = 'N'THEN
7946
7947 x_return_status := FND_API.G_RET_STS_ERROR;
7948 l_error_buffer := 'Tax Rate Code is not adhoc';
7949
7950 FND_MESSAGE.SET_NAME('ZX','ZX_INTER_COMP_RATE');
7951
7952 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
7953 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
7954 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
7955 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
7956 ZX_API_PUB.add_msg(
7957 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
7958
7959 IF (g_level_statement >= g_current_runtime_level ) THEN
7960 FND_LOG.STRING(g_level_statement,
7961 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7962 l_error_buffer);
7963 FND_LOG.STRING(g_level_statement,
7964 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7965 'RETURN_STATUS = ' || x_return_status);
7966 FND_LOG.STRING(g_level_statement,
7967 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7968 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7969 END IF;
7970 RETURN;
7971 END IF;
7972
7973 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
7974 l_rownum).tax_rate_id := l_tax_rate_rec.tax_rate_id;
7975
7976 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt = 0 AND
7977 l_tax_rate_rec.offset_tax_rate_code IS NOT NULL
7978 THEN
7979
7980 -- Check if offset tax is allowed, if not raise error
7981 --
7982 IF l_tax_rate_rec.percentage_rate <> 0 AND -- bug 5010575
7983 p_event_class_rec.allow_offset_tax_calc_flag = 'N'
7984 THEN
7985 x_return_status := FND_API.G_RET_STS_ERROR;
7986 l_error_buffer := 'Need to create Offset Tax. But offset tax is not allowed';
7987
7988 IF g_level_statement >= g_current_runtime_level THEN
7989 FND_LOG.STRING(g_level_statement,
7990 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7991 l_error_buffer);
7992 FND_LOG.STRING(g_level_statement,
7993 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
7994 'RETURN_STATUS = ' || x_return_status);
7995 FND_LOG.STRING(g_level_statement,
7996 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
7997 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
7998 END IF;
7999 RETURN;
8000 END IF;
8001
8002 -- set tax_rate column and amt related columns to NULL
8003 -- Tax Rate percentage will be determined in ZX_TDS_RATE_DETM_PKG
8004 --
8005 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8006 l_rownum).offset_flag := 'Y';
8007
8008 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).manually_entered_flag, 'N') = 'N' THEN
8009 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8010 l_rownum).tax_rate := NULL;
8011 END IF;
8012 --bug#8611251
8013 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8014 -- l_rownum).tax_amt := NULL;
8015 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8016 -- l_rownum).tax_amt_tax_curr := NULL;
8017 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8018 -- l_rownum).tax_amt_funcl_curr := NULL;
8019 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8020 -- l_rownum).taxable_amt := NULL;
8021 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8022 -- l_rownum).taxable_amt_tax_curr := NULL;
8023 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8024 -- l_rownum).taxable_amt_funcl_curr := NULL;
8025 END IF; -- tax_amt = 0 AND offset_tax_rate_code IS NOT NULL
8026
8027 ELSE -- NOT l_is_valid after rate validation
8028
8029 --IF tax_line_rec.tax_amt = 0 THEN
8030 -- Commented code to ensure that even if the receivables invoice has a non
8031 -- zero amount, there should be no error in the Payables invoice.
8032 -- if the same tax is not applicable in payables.
8033
8034 -- delete the entry from g_detail_tax_lines_tbl
8035 --
8036 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.delete(l_rownum);
8037 l_rownum := l_rownum - 1;
8038
8039
8040 -- Bug 12714708: remove the intercompany transaction details from errors table, entered using add_msg in get_regime_cache_info.
8041 -- We do not raise error if source tax regime is NOT subscribed to destination OU. The tax from AR is not carried forward to AP.
8042 -- The tax line is removed, hence we should remove the trx_id from errors table as well.
8043
8044 l_count := zx_api_pub.errors_tbl.application_id.count;
8045 zx_api_pub.errors_tbl.application_id.DELETE(l_count);
8046 zx_api_pub.errors_tbl.entity_code.DELETE(l_count);
8047 zx_api_pub.errors_tbl.event_class_code.DELETE(l_count);
8048 zx_api_pub.errors_tbl.trx_id.DELETE(l_count);
8049 zx_api_pub.errors_tbl.trx_level_type.DELETE(l_count);
8050 zx_api_pub.errors_tbl.trx_line_id.DELETE(l_count);
8051 zx_api_pub.errors_tbl.summary_tax_line_number.DELETE(l_count);
8052 zx_api_pub.errors_tbl.tax_line_id.DELETE(l_count);
8053 zx_api_pub.errors_tbl.trx_line_dist_id.DELETE(l_count);
8054 zx_api_pub.errors_tbl.message_text.DELETE(l_count);
8055
8056
8057 -- set the return status back to SUCCESS
8058 --
8059 x_return_status := FND_API.G_RET_STS_SUCCESS;
8060
8061 IF g_level_statement >= g_current_runtime_level THEN
8062 FND_LOG.STRING(g_level_statement,
8063 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8064 'RETURN_STATUS = ' || x_return_status);
8065 FND_LOG.STRING(g_level_statement,
8066 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8067 'Remove this tax line and reset return_status');
8068 END IF;
8069
8070 /*ELSE
8071 -- return with error
8072 --
8073 RETURN;
8074
8075 END IF;*/
8076 END IF; -- l_is_valid OR ELSE
8077
8078 ELSE -- For migrated tax rate code
8079
8080 l_tax_found_in_ap_flag := 'N';
8081 l_tax_regime_code := NULL;
8082 l_tax := NULL;
8083 l_tax_status_code := NULL;
8084 l_tax_jurisdiction_code := NULL;
8085
8086 OPEN get_tax_info_f_ap_input(tax_line_rec.tax_rate_code);
8087 FETCH get_tax_info_f_ap_input INTO
8088 l_tax_regime_code, l_tax, l_tax_status_code, l_tax_jurisdiction_code;
8089 CLOSE get_tax_info_f_ap_input;
8090
8091 IF l_tax IS NULL THEN
8092
8093 OPEN get_tax_info_f_ap_null(tax_line_rec.tax_rate_code);
8094 FETCH get_tax_info_f_ap_null INTO
8095 l_tax_regime_code, l_tax, l_tax_status_code, l_tax_jurisdiction_code;
8096 CLOSE get_tax_info_f_ap_null;
8097 END IF;
8098
8099 IF l_tax IS NOT NULL THEN
8100 l_tax_found_in_ap_flag := 'Y';
8101
8102 IF (g_level_statement >= g_current_runtime_level ) THEN
8103 FND_LOG.STRING(g_level_statement,
8104 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8105 'Tax rate code is defined in Payables.');
8106 END IF;
8107
8108 ELSE -- l_tax IS NULL
8109
8110 IF (g_level_statement >= g_current_runtime_level ) THEN
8111 FND_LOG.STRING(g_level_statement,
8112 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8113 'Tax rate code is not defined in Payables.');
8114 END IF;
8115
8116 -- Tax not defined in AP, try to find other tax rate code
8117 --
8118 OPEN get_tax_info_f_not_ap(tax_line_rec.tax_rate_code);
8119 FETCH get_tax_info_f_not_ap INTO l_tax_regime_code,l_tax,l_tax_status_code,l_tax_jurisdiction_code;
8120 CLOSE get_tax_info_f_not_ap;
8121
8122 IF l_tax IS NULL THEN
8123
8124 -- Matching tax rate code is not defined in AP or other product,
8125 -- raise error
8126 --
8127 x_return_status := FND_API.G_RET_STS_ERROR;
8128 l_error_buffer := 'tax_amt <> 0. Tax Rate Code is not adhoc';
8129 IF (g_level_statement >= g_current_runtime_level ) THEN
8130 FND_LOG.STRING(g_level_statement,
8131 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8132 'Tax rate code is not defined in AP and other product.');
8133 FND_LOG.STRING(g_level_statement,
8134 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8135 'RETURN_STATUS = ' || x_return_status);
8136 FND_LOG.STRING(g_level_statement,
8137 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8138 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8139 END IF;
8140 RETURN;
8141 END IF;
8142 END IF;
8143
8144 -- Tax Defined in AP or other product.
8145 -- Need to validate and populate tax_regime_id
8146 --
8147 ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
8148 l_tax_regime_code,
8149 p_tax_determine_date,
8150 l_tax_regime_rec,
8151 x_return_status,
8152 l_error_buffer);
8153
8154 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8155 IF (g_level_statement >= g_current_runtime_level ) THEN
8156 FND_LOG.STRING(g_level_statement,
8157 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8158 'Incorrect return_status after calling ' ||
8159 'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
8160 FND_LOG.STRING(g_level_statement,
8161 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8162 'RETURN_STATUS = ' || x_return_status);
8163 FND_LOG.STRING(g_level_statement,
8164 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8165 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8166 END IF;
8167 RETURN;
8168 END IF;
8169
8170 -- populate new id
8171 --
8172 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8173 l_rownum).tax_regime_id := l_tax_regime_rec.tax_regime_id;
8174 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8175 l_rownum).tax_regime_code := l_tax_regime_code;
8176
8177 -- validate and populate tax_id
8178 --
8179 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
8180 l_tax_regime_code,
8181 l_tax,
8182 p_tax_determine_date,
8183 l_tax_rec,
8184 x_return_status,
8185 l_error_buffer);
8186
8187 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8188 IF (g_level_statement >= g_current_runtime_level ) THEN
8189 FND_LOG.STRING(g_level_statement,
8190 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8191 'Incorrect return_status after calling ' ||
8192 'ZX_TDS_UTILITIES_PKG.get_tax_cache_info');
8193 FND_LOG.STRING(g_level_statement,
8194 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8195 'RETURN_STATUS = ' || x_return_status);
8196 FND_LOG.STRING(g_level_statement,
8197 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8198 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8199 END IF;
8200 RETURN;
8201 END IF;
8202
8203 -- populate new id
8204 --
8205 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8206 l_rownum).tax_id := l_tax_rec.tax_id;
8207 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8208 l_rownum).tax := l_tax;
8209 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8210 l_rownum).reporting_only_flag := l_tax_rec.reporting_only_flag;
8211
8212 -- bug 5077691: populate legal_reporting_status
8213 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
8214 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8215 l_rownum).legal_reporting_status :=
8216 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
8217 l_tax_rec.tax_id).legal_reporting_status_def_val;
8218 END IF;
8219 --
8220 -- validate and populate tax_jurisdiction_id
8221 --
8222 IF l_tax_jurisdiction_code is not NULL THEN
8223 ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info(
8224 l_tax_regime_code,
8225 l_tax,
8226 l_tax_jurisdiction_code,
8227 p_tax_determine_date,
8228 l_tax_jurisdiction_rec,
8229 x_return_status,
8230 l_error_buffer);
8231
8232 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8233 IF (g_level_statement >= g_current_runtime_level ) THEN
8234 FND_LOG.STRING(g_level_statement,
8235 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
8236 'Incorrect return_status after calling ' ||
8237 'ZX_TDS_UTILITIES_PKG.get_jurisdiction_cache_info');
8238 FND_LOG.STRING(g_level_statement,
8239 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines',
8240 'RETURN_STATUS = ' || x_return_status);
8241 FND_LOG.STRING(g_level_statement,
8242 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines.END',
8243 'ZX_TDS_APPLICABILITY_DETM_PKG.fetch_tax_lines(-)');
8244 END IF;
8245 RETURN;
8246 END IF;
8247
8248 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8249 l_rownum).tax_jurisdiction_id :=
8250 l_tax_jurisdiction_rec.tax_jurisdiction_id;
8251 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8252 l_rownum).tax_jurisdiction_code :=
8253 l_tax_jurisdiction_code;
8254 ELSE
8255 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8256 l_rownum).tax_jurisdiction_id := NULL;
8257 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8258 l_rownum).tax_jurisdiction_code := NULL;
8259 END IF;
8260
8261
8262 -- validate and populate tax_status_id
8263 --
8264 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
8265 l_tax,
8266 l_tax_regime_code,
8267 l_tax_status_code,
8268 p_tax_determine_date,
8269 l_tax_status_rec,
8270 x_return_status,
8271 l_error_buffer);
8272
8273 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8274 IF (g_level_statement >= g_current_runtime_level ) THEN
8275 FND_LOG.STRING(g_level_statement,
8276 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8277 'Incorrect return_status after calling ' ||
8278 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
8279 FND_LOG.STRING(g_level_statement,
8280 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8281 'RETURN_STATUS = ' || x_return_status);
8282 FND_LOG.STRING(g_level_statement,
8283 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8284 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8285 END IF;
8286 RETURN;
8287 END IF;
8288
8289 -- populate new id
8290 --
8291 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8292 l_rownum).tax_status_id := l_tax_status_rec.tax_status_id;
8293 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8294 l_rownum).tax_status_code := l_tax_status_code;
8295
8296 -- validate and populate tax_rate_id and retain rate % and tax amount
8297 --
8298 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
8299 l_tax_regime_code,
8300 l_tax,
8301 l_tax_jurisdiction_code,
8302 l_tax_status_code,
8303 tax_line_rec.tax_rate_code,
8304 p_tax_determine_date,
8305 l_tax_class,
8306 l_tax_rate_rec,
8307 x_return_status,
8308 l_error_buffer);
8309
8310 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8311 IF (g_level_statement >= g_current_runtime_level ) THEN
8312 FND_LOG.STRING(g_level_statement,
8313 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8314 'Incorrect return_status after calling ' ||
8315 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info');
8316 FND_LOG.STRING(g_level_statement,
8317 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8318 'RETURN_STATUS = ' || x_return_status);
8319 FND_LOG.STRING(g_level_statement,
8320 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8321 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8322 END IF;
8323 RETURN;
8324 END IF;
8325
8326 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8327 l_rownum).tax_rate_id := l_tax_rate_rec.tax_rate_id;
8328 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8329 l_rownum).tax_rate := l_tax_rate_rec.percentage_rate;
8330
8331
8332 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_amt <> 0
8333 THEN
8334
8335 IF l_tax_rate_rec.percentage_rate <> tax_line_rec.tax_rate AND -- Bug 5010575
8336 l_tax_rate_rec.allow_adhoc_tax_rate_flag = 'N'
8337 THEN
8338
8339 x_return_status := FND_API.G_RET_STS_ERROR;
8340 l_error_buffer := 'Tax Rate Code is not adhoc';
8341 IF (g_level_statement >= g_current_runtime_level ) THEN
8342 FND_LOG.STRING(g_level_statement,
8343 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8344 l_error_buffer);
8345 FND_LOG.STRING(g_level_statement,
8346 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8347 'RETURN_STATUS = ' || x_return_status);
8348 FND_LOG.STRING(g_level_statement,
8349 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8350 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8351 END IF;
8352 RETURN;
8353 END IF;
8354
8355 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8356 -- l_rownum).tax_rate_id := l_tax_rate_rec.tax_rate_id;
8357 --IF l_tax_found_in_ap_flag = 'Y' THEN
8358
8359 -- replace tax_regime_code, tax and tax_status_code
8360 --
8361 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8362 -- l_rownum).tax_regime_code := l_tax_regime_code;
8363 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8364 -- l_rownum).tax := l_tax;
8365 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8366 -- l_rownum).tax_status_code := l_tax_status_code;
8367
8368 --END IF;
8369
8370 ELSE -- tax_amt = 0
8371
8372 -- Check if offset tax is allowed, if not raise error
8373 --
8374 -- Offset tax Flag should be set only when the tax percentage rate
8375 -- is not zero.
8376 --Bug 14827690, keep the condition same as non migrated case
8377 IF l_tax_rate_rec.offset_tax_rate_code is NOT NULL THEN
8378
8379 IF l_tax_rate_rec.percentage_rate <> 0 THEN -- Bug 5010575
8380 IF p_event_class_rec.allow_offset_tax_calc_flag = 'N'
8381 THEN
8382 x_return_status := FND_API.G_RET_STS_ERROR;
8383 l_error_buffer := 'Need to create Offset Tax. But offset tax is not allowed or populated at rate level';
8384
8385 IF g_level_statement >= g_current_runtime_level THEN
8386 FND_LOG.STRING(g_level_statement,
8387 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8388 l_error_buffer);
8389 FND_LOG.STRING(g_level_statement,
8390 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8391 'RETURN_STATUS = ' || x_return_status);
8392 FND_LOG.STRING(g_level_statement,
8393 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8394 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8395 END IF;
8396 RETURN;
8397 ELSE
8398 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8399 l_rownum).offset_flag := 'Y';
8400 -- Bug 10273603 Tax Rate percentage, offset processing will be determined in ZX_TDS_RATE_DETM_PKG
8401 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).manually_entered_flag, 'N') = 'N' THEN
8402 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum).tax_rate := NULL;
8403 END IF;
8404 -- Bug 10273603
8405 END IF;
8406 ELSE
8407 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8408 l_rownum).offset_flag := 'N';
8409 END IF;
8410
8411 -- set tax_rate column and amt related columns to NULL
8412 -- Tax Rate percentage will be determined in ZX_TDS_RATE_DETM_PKG
8413 --
8414 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8415 -- l_rownum).offset_flag := 'Y';
8416
8417 --bug#8611251
8418 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8419 -- l_rownum).tax_amt := NULL;
8420 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8421 -- l_rownum).tax_amt_tax_curr := NULL;
8422 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8423 -- l_rownum).tax_amt_funcl_curr := NULL;
8424 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8425 -- l_rownum).taxable_amt := NULL;
8426 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8427 -- l_rownum).taxable_amt_tax_curr := NULL;
8428 --ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8429 -- l_rownum).taxable_amt_funcl_curr := NULL;
8430
8431 END IF; --Bug 14827690
8432 END IF; -- tax_amt <> 0 OR NOT
8433 END IF; -- tax rate code is migrated or not
8434
8435 IF l_is_valid THEN
8436 -- set x_begin_index
8437 --
8438 IF (x_begin_index is NULL) THEN
8439 x_begin_index := l_rownum;
8440 END IF;
8441
8442 populate_registration_info(
8443 p_event_class_rec => p_event_class_rec,
8444 p_trx_line_index => p_trx_line_index,
8445 p_rownum => l_rownum,
8446 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
8447 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
8448 p_tax_determine_date => p_tax_determine_date,
8449 x_return_status => x_return_status);
8450
8451 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8452 IF (g_level_statement >= g_current_runtime_level ) THEN
8453 FND_LOG.STRING(g_level_statement,
8454 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8455 'Incorrect return_status after calling ' ||
8456 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
8457 FND_LOG.STRING(g_level_statement,
8458 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8459 'RETURN_STATUS = ' || x_return_status);
8460 FND_LOG.STRING(g_level_statement,
8461 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8462 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8463 END IF;
8464 RETURN;
8465 END IF;
8466
8467 -- Moved to the bottom as part of Bug 10288709
8468 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8469 l_rownum).tax_amt := NULL;
8470 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8471 l_rownum).tax_amt_tax_curr := NULL;
8472 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8473 l_rownum).tax_amt_funcl_curr := NULL;
8474 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8475 l_rownum).taxable_amt := NULL;
8476 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8477 l_rownum).taxable_amt_tax_curr := NULL;
8478 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
8479 l_rownum).taxable_amt_funcl_curr := NULL;
8480
8481 END IF; -- l_is_valid
8482
8483 END LOOP; -- tax_line_rec IN get_taxes_f_intercomp_trx_csr
8484
8485 -- set x_end_index
8486 --
8487 IF (x_begin_index IS NOT NULL) THEN
8488 x_end_index := ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST;
8489 END IF;
8490
8491 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines (p_trx_line_index,
8492 x_begin_index,
8493 x_end_index,
8494 x_return_status,
8495 l_error_buffer );
8496
8497 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8498 IF (g_level_statement >= g_current_runtime_level ) THEN
8499 FND_LOG.STRING(g_level_statement,
8500 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8501 'Incorrect RETURN_STATUS after calling '||
8502 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
8503 FND_LOG.STRING(g_level_statement,
8504 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8505 'RETURN_STATUS = ' || x_return_status);
8506 FND_LOG.STRING(g_level_statement,
8507 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8508 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8509 END IF;
8510 RETURN;
8511 END IF;
8512
8513 IF (g_level_procedure >= g_current_runtime_level ) THEN
8514 FND_LOG.STRING(g_level_procedure,
8515 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8516 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)'||x_return_status);
8517 END IF;
8518
8519 EXCEPTION
8520 WHEN OTHERS THEN
8521 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8522 IF (g_level_unexpected >= g_current_runtime_level ) THEN
8523 FND_LOG.STRING(g_level_unexpected,
8524 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx',
8525 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
8526 FND_LOG.STRING(g_level_unexpected,
8527 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx.END',
8528 'ZX_TDS_APPLICABILITY_DETM_PKG.get_taxes_for_intercomp_trx(-)');
8529 END IF;
8530
8531 END get_taxes_for_intercomp_trx;
8532
8533 -- Added for STCC Bug 4959835
8534 ---------------------------------------------------------------------
8535 -- PUBLIC PROCEDURE
8536 -- get_process_results
8537 --
8538 -- DESCRIPTION: This procedure is to fetch the applicable tax lines
8539 -- directly from the process results for non-location based
8540 -- scenario (P2P and O2C VAT)
8541 --
8542 -- January 05, 2006 Usha Srikumaran Created
8543 --
8544
8545 PROCEDURE get_process_results(
8546 p_trx_line_index IN BINARY_INTEGER,
8547 p_tax_date IN DATE,
8548 p_tax_determine_date IN DATE,
8549 p_tax_point_date IN DATE,
8550 p_event_class_rec IN zx_api_pub.event_class_rec_type,
8551 x_begin_index IN OUT NOCOPY BINARY_INTEGER,
8552 x_end_index IN OUT NOCOPY BINARY_INTEGER,
8553 x_return_status OUT NOCOPY VARCHAR2) IS
8554
8555 CURSOR get_unique_constraint_csr(
8556 c_tax_classification_code zx_lines_det_factors.input_tax_classification_code%TYPE,
8557 c_internal_organization_id zx_lines_det_factors.internal_organization_id%TYPE)
8558 IS
8559 SELECT cg.constraint_id
8560 FROM zx_condition_groups_b cg,
8561 ar_tax_conditions_all tc
8562 WHERE cg.condition_group_code like substrb(c_tax_classification_code,1,40)||'~'||'%'
8563 AND cg.enabled_flag = 'Y'
8564 AND cg.constraint_id IS NOT NULL
8565 AND tc.tax_condition_id = cg.constraint_id
8566 AND tc.org_id = c_internal_organization_id;
8567
8568
8569 -- CURSOR get_constraints_csr
8570 -- (c_tax_classification_code zx_lines_det_factors.input_tax_classification_code%TYPE)
8571 -- IS
8572 -- SELECT cg.CONSTRAINT_ID
8573 -- FROM zx_condition_groups_b cg
8574 -- WHERE cg.CONDITION_GROUP_CODE like c_tax_classification_code||'~'||'%'
8575 -- AND cg.enabled_flag = 'Y'
8576 -- AND cg.constraint_id IS NOT NULL;
8577 --
8578 --
8579 -- CURSOR get_unique_constraint_csr(
8580 -- c_tax_classification_code zx_lines_det_factors.input_tax_classification_code%TYPE,
8581 -- c_internal_organization_id zx_lines_det_factors.internal_organization_id%TYPE)
8582 -- IS
8583 -- SELECT cg.constraint_id
8584 -- FROM zx_condition_groups_b cg,
8585 -- ar_tax_conditions tc
8586 -- WHERE cg.condition_group_code like c_tax_classification_code||'~'||'%'
8587 -- AND cg.enabled_flag = 'Y'
8588 -- AND tc.tax_condition_id = cg.constraint_id
8589 -- AND tc.org_id = c_internal_organization_id;
8590
8591 CURSOR get_candidate_taxes_csr(
8592 c_condition_group_code zx_condition_groups_b.condition_group_code%TYPE,
8593 c_tax_rate_code zx_rates_b.tax_rate_code%TYPE,
8594 c_tax_class zx_rates_b.tax_class%TYPE,
8595 c_tax_determine_date DATE) IS
8596 SELECT tax_regime_code,
8597 tax,
8598 status_result,
8599 rate_result,
8600 condition_set_id,
8601 exception_set_id,
8602 result_id,
8603 query_num
8604 FROM
8605 (SELECT /*+ leading(PR) use_nl(RL) */
8606 rl.tax_regime_code,
8607 rl.tax,
8608 pr.status_result,
8609 pr.rate_result,
8610 pr.condition_set_id,
8611 pr.exception_set_id,
8612 pr.result_id,
8613 1 query_num,
8614 tax.compounding_precedence
8615 FROM ZX_PROCESS_RESULTS pr,
8616 ZX_SCO_RULES_B_V rl,
8617 ZX_SCO_TAXES_B_V tax
8618 --ZX_SCO_RATES_B_V rt
8619 WHERE (pr.CONDITION_GROUP_CODE in (c_condition_group_code
8620 , decode(c_tax_class,'OUTPUT',substrb(c_tax_rate_code,1,45)||'-'||'XOP'
8621 ,'INPUT' ,substrb(c_tax_rate_code,1,45)||'-'||'XIP'
8622 ,c_condition_group_code
8623 )
8624 )
8625 or pr.CONDITION_GROUP_CODE like c_condition_group_code ||'~'||'%')
8626 AND rl.effective_from <= c_tax_determine_date ---Bug 5691957
8627 AND (rl.effective_to >= c_tax_determine_date OR rl.effective_to IS NULL ) ---Bug 5691957
8628 AND pr.enabled_flag = 'Y'
8629 AND rl.tax_rule_id = pr.tax_rule_id
8630 AND rl.service_type_code = 'DET_DIRECT_RATE'
8631 AND tax.tax_regime_code=rl.tax_regime_code
8632 AND tax.tax=rl.tax
8633 AND tax.effective_from <= c_tax_determine_date
8634 AND (tax.effective_to >= c_tax_determine_date OR tax.effective_to IS NULL )
8635 AND tax.live_for_processing_flag = 'Y'
8636 AND tax.live_for_applicability_flag = 'Y'
8637 AND EXISTS
8638 (SELECT /*+ no_unnest */ 1
8639 FROM ZX_SCO_RATES_B_V rt
8640 WHERE rt.tax_regime_code = rl.tax_regime_code -- bug 6680676
8641 AND rt.tax = rl.tax
8642 AND rt.tax_status_code = pr.status_result
8643 AND rt.tax_rate_code = pr.rate_result
8644 AND rt.effective_from <= c_tax_determine_date
8645 AND (rt.effective_to >= c_tax_determine_date OR rt.effective_to IS NULL )
8646 AND rt.Active_Flag = 'Y'
8647 AND (rt.tax_class = c_tax_class OR rt.tax_class IS NULL))
8648 UNION ALL
8649 SELECT /*+ leading(RT.a) use_nl(RT.sd) */
8650 DISTINCT rt.tax_regime_code,
8651 rt.tax,
8652 rt.tax_status_code,
8653 rt.tax_rate_code,
8654 NULL condition_set_id,
8655 NULL exception_set_id,
8656 NULL result_id,
8657 2 query_num,
8658 tax.compounding_precedence
8659 FROM ZX_SCO_RATES_B_V rt,
8660 ZX_SCO_TAXES_B_V tax
8661 WHERE rt.tax_rate_code = c_tax_rate_code
8662 AND rt.rate_type_code <> 'RECOVERY'
8663 AND rt.effective_from <= c_tax_determine_date
8664 AND (rt.effective_to >= c_tax_determine_date OR rt.effective_to IS NULL )
8665 AND rt.Active_Flag = 'Y'
8666 AND (rt.tax_class = c_tax_class or rt.tax_class IS NULL)
8667 -- Bug 5481559: Though jurisdiction code is NULL for migrated tax classification
8668 -- codes, it can be entered for newly created tax rates, in which
8669 -- case,w e should consider the tax rate if jurisdiction matches. i-- Jurisdiction match will be checked when place of supply is
8670 -- validated.
8671 -- AND rt.tax_jurisdiction_code is NULL
8672 AND tax.tax_regime_code = rt.tax_regime_code
8673 AND tax.tax = rt.tax
8674 AND tax.live_for_processing_flag = 'Y'
8675 AND tax.live_for_applicability_flag = 'Y'
8676 AND tax.effective_from <= c_tax_determine_date
8677 AND (tax.effective_to >= c_tax_determine_date OR tax.effective_to IS NULL )
8678 )
8679 order by compounding_precedence nulls first;
8680
8681 -- To filter based on rate class
8682 --
8683 CURSOR check_tax_rate_class_csr(
8684 c_tax_regime_code zx_rates_b.tax_regime_code%TYPE,
8685 c_tax zx_rates_b.tax%TYPE,
8686 c_tax_status_code zx_rates_b.tax_status_code%TYPE,
8687 c_tax_rate_code zx_rates_b.tax_rate_code%TYPE,
8688 c_tax_class zx_rates_b.tax_class%TYPE,
8689 c_tax_determine_date DATE) IS
8690 SELECT 1
8691 FROM ZX_SCO_RATES_B_V
8692 WHERE tax_regime_code = c_tax_regime_code
8693 AND tax = c_tax
8694 AND tax_status_code = c_tax_status_code
8695 AND tax_rate_code = c_tax_rate_code
8696 AND effective_from <= c_tax_determine_date
8697 AND (effective_to >= c_tax_determine_date OR effective_to IS NULL )
8698 AND Active_Flag = 'Y'
8699 AND (tax_class = c_tax_class or tax_class IS NULL)
8700 AND rownum=1;
8701
8702 -- cursor to order the jurisdictions in the GT
8703 CURSOR c_get_jurisdiction_from_gt(
8704 c_tax_regime_code VARCHAR2,
8705 c_tax VARCHAR2)IS
8706 SELECT tax_jurisdiction_id,
8707 tax_jurisdiction_code,
8708 tax_regime_code,
8709 tax,
8710 precedence_level
8711 FROM zx_jurisdictions_gt
8712 WHERE tax_regime_code = c_tax_regime_code
8713 AND tax = c_tax
8714 ORDER BY precedence_level;
8715
8716
8717 CURSOR get_tax_info_csr(c_tax_regime_code IN ZX_REGIMES_B.tax_regime_code%TYPE,
8718 c_tax IN zx_taxes_b.tax%TYPE,
8719 c_tax_determine_date IN DATE) IS
8720 SELECT tax_id,
8721 tax,
8722 tax_regime_code,
8723 tax_type_code,
8724 tax_precision,
8725 minimum_accountable_unit,
8726 Rounding_Rule_Code,
8727 Tax_Status_Rule_Flag,
8728 Tax_Rate_Rule_Flag,
8729 Place_Of_Supply_Rule_Flag,
8730 Applicability_Rule_Flag,
8731 Tax_Calc_Rule_Flag,
8732 Taxable_Basis_Rule_Flag,
8733 def_tax_calc_formula,
8734 def_taxable_basis_formula,
8735 Reporting_Only_Flag,
8736 tax_currency_code,
8737 Def_Place_Of_Supply_Type_Code,
8738 Def_Registr_Party_Type_Code,
8739 Registration_Type_Rule_Flag,
8740 Direct_Rate_Rule_Flag,
8741 Def_Inclusive_Tax_Flag,
8742 effective_from,
8743 effective_to,
8744 compounding_precedence,
8745 Has_Other_Jurisdictions_Flag,
8746 Live_For_Processing_Flag,
8747 Regn_Num_Same_As_Le_Flag,
8748 applied_amt_handling_flag,
8749 exchange_rate_type,
8750 applicable_by_default_flag,
8751 record_type_code,
8752 tax_exmpt_cr_method_code,
8753 tax_exmpt_source_tax,
8754 legal_reporting_status_def_val,
8755 def_rec_settlement_option_code,
8756 zone_geography_type,
8757 override_geography_type,
8758 allow_rounding_override_flag,
8759 tax_account_source_tax
8760 FROM ZX_SCO_TAXES_B_V
8761 WHERE tax = c_tax
8762 AND tax_regime_code = c_tax_regime_code
8763 AND (effective_from <= c_tax_determine_date AND
8764 (effective_to >= c_tax_determine_date OR effective_to IS NULL))
8765 AND live_for_processing_flag = 'Y'
8766 AND live_for_applicability_flag = 'Y'
8767 -- AND rownum = 1;
8768 ORDER BY subscription_level_code;
8769
8770
8771 -- Local variables
8772 --
8773 l_constraint_id zx_condition_groups_b.constraint_id%TYPE;
8774 l_condition_group_code zx_condition_groups_b.condition_group_code%TYPE;
8775 l_tax_classification_code zx_lines_det_factors.input_tax_classification_code%TYPE;
8776 l_internal_organization_id zx_lines_det_factors.internal_organization_id%TYPE;
8777 l_cec_result BOOLEAN;
8778 l_action_rec_tbl ZX_TDS_PROCESS_CEC_PVT.action_rec_tbl_type;
8779 l_tax_regime_code_tbl tax_regime_code_tbl;
8780 l_tax_tbl tax_tbl;
8781 l_result_id_tbl result_id_tbl;
8782 l_query_num_tbl ZX_GLOBAL_STRUCTURES_PKG.NUMBER_tbl_type;
8783 l_status_result_tbl status_result_tbl;
8784 l_rate_result_tbl rate_result_tbl;
8785 l_condition_set_tbl condition_set_tbl;
8786 l_exception_set_tbl exception_set_tbl;
8787 l_counter NUMBER;
8788 i NUMBER;
8789 l_tax_regime_rec zx_global_structures_pkg.tax_regime_rec_type;
8790 l_tax_rec ZX_TDS_UTILITIES_PKG.zx_tax_info_cache_rec;
8791 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
8792 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
8793 l_error_buffer VARCHAR2(200);
8794 l_rownum BINARY_INTEGER;
8795 l_curr_rownum BINARY_INTEGER;
8796 l_tax_class zx_rates_b.tax_class%TYPE;
8797 l_temp_num NUMBER;
8798 l_jurisdictions_found VARCHAR2(1);
8799 l_jurisdiction_rec ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_type;
8800 l_place_of_supply_type_code zx_taxes_b.def_place_of_supply_type_code%TYPE;
8801 l_place_of_supply_result_id NUMBER;
8802 l_begin_index BINARY_INTEGER;
8803 l_end_index BINARY_INTEGER;
8804 l_regimerownum BINARY_INTEGER;
8805 l_tax_index NUMBER;
8806 l_trx_line_id NUMBER;
8807 l_trx_level_type VARCHAR2(30);
8808
8809 l_self_assessed_flag zx_lines.self_assessed_flag%TYPE;
8810 l_tax_amt_included_flag zx_lines.tax_amt_included_flag%TYPE;
8811 l_tax_jurisdiction_id zx_lines.tax_jurisdiction_id%TYPE;
8812 l_tax_jurisdiction_code zx_lines.tax_jurisdiction_code%TYPE;
8813 l_jur_index NUMBER;
8814 l_jurisdiction_rec_tbl ZX_TCM_GEO_JUR_PKG.tax_jurisdiction_rec_tbl_type;
8815 l_index NUMBER;
8816 l_tbl_index BINARY_INTEGER;
8817 l_rate_exists_same_prod_family BOOLEAN;
8818 l_tax_applicable BOOLEAN;
8819 l_applicability_result_id NUMBER;
8820 l_applicability_result zx_process_results.alphanumeric_result%TYPE;
8821 l_exception_rate zx_lines.exception_rate%TYPE;
8822
8823 -- Added for Bug 10184087
8824 l_ref_doc_tax_applicable BOOLEAN;
8825 l_tmp_tax_apportionmt_ln_num NUMBER;
8826
8827 l_cancel_tax_line BOOLEAN; -- Added for Bug#13110309
8828
8829 BEGIN
8830
8831 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
8832
8833 IF (g_level_procedure >= g_current_runtime_level ) THEN
8834 FND_LOG.STRING(g_level_procedure,
8835 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.BEGIN',
8836 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(+)');
8837 END IF;
8838
8839 x_return_status := FND_API.G_RET_STS_SUCCESS;
8840
8841 l_tax_classification_code :=
8842 NVL(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INPUT_TAX_CLASSIFICATION_CODE(p_trx_line_index),
8843 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.OUTPUT_TAX_CLASSIFICATION_CODE(p_trx_line_index));
8844
8845 l_internal_organization_id :=
8846 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.INTERNAL_ORGANIZATION_ID(p_trx_line_index);
8847
8848 l_condition_group_code := l_tax_classification_code;
8849
8850 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
8851 l_tax_class := 'OUTPUT';
8852 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
8853 l_tax_class := 'INPUT';
8854 END IF;
8855
8856 l_trx_line_id :=
8857 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
8858 l_trx_level_type :=
8859 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
8860
8861 IF l_tax_classification_code IS NOT NULL THEN
8862 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
8863 p_trx_line_index) = 'CREATE' OR
8864 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
8865 p_trx_line_index) = 'CREATE_WITH_TAX' OR
8866 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
8867 p_trx_line_index) = 'UPDATE' OR
8868 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
8869 p_trx_line_index) = 'CREATE_TAX_ONLY' OR
8870 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
8871 p_trx_line_index) = 'COPY_AND_CREATE'
8872 THEN
8873
8874
8875 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
8876
8877
8878 OPEN get_unique_constraint_csr(l_tax_classification_code,
8879 l_internal_organization_id);
8880 FETCH get_unique_constraint_csr INTO l_constraint_id;
8881 CLOSE get_unique_constraint_csr;
8882
8883 -- OPEN get_constraints_csr(l_tax_classification_code);
8884 --
8885 -- -- There may be multiple records if there are 2 tax groups with the same code
8886 -- -- having different constraint_id. In that case, get the correct record based
8887 -- -- on the internal OU.
8888 --
8889 -- IF get_constraints_csr%ROWCOUNT > 1 THEN
8890 --
8891 -- OPEN get_unique_constraint_csr(l_tax_classification_code,
8892 -- l_internal_organization_id);
8893 -- FETCH get_unique_constraint_csr into l_constraint_id;
8894 -- CLOSE get_unique_constraint_csr;
8895 -- ELSE
8896 -- FETCH get_constraints_csr into l_constraint_id;
8897 -- END IF;
8898
8899 IF l_constraint_id IS NOT NULL THEN
8900 l_condition_group_code := substrb(l_tax_classification_code,1,40) || '~' ||
8901 l_constraint_id;
8902
8903 -- The following procedure is currently PRIVATE inside rule engine.
8904 -- It has to be made public to be called as below
8905
8906 ZX_TDS_RULE_BASE_DETM_PVT.init_cec_params (
8907 p_structure_name => 'TRX_LINE_DIST_TBL',
8908 p_structure_index => p_trx_line_index,
8909 p_return_status => x_return_status,
8910 p_error_buffer => l_error_buffer);
8911
8912 ZX_TDS_PROCESS_CEC_PVT.evaluate_cec(
8913 p_constraint_id => l_constraint_id,
8914 p_cec_ship_to_party_site_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_party_site_id,
8915 p_cec_bill_to_party_site_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_party_site_id,
8916 p_cec_ship_to_party_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_party_id,
8917 p_cec_bill_to_party_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_party_id,
8918 p_cec_poo_location_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_poo_location_id,
8919 p_cec_poa_location_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_poa_location_id,
8920 p_cec_trx_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_id,
8921 p_cec_trx_line_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_line_id,
8922 p_cec_ledger_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ledger_id,
8923 p_cec_internal_organization_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_internal_organization_id,
8924 p_cec_so_organization_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_so_organization_id,
8925 p_cec_product_org_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_product_org_id,
8926 p_cec_product_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_product_id,
8927 p_cec_trx_line_date => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_line_date,
8928 p_cec_trx_type_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_type_id,
8929 p_cec_fob_point => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_fob_point,
8930 p_cec_ship_to_site_use_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_site_use_id,
8931 p_cec_bill_to_site_use_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_site_use_id,
8932 p_cec_result => l_cec_result,
8933 p_action_rec_tbl => l_action_rec_tbl,
8934 p_return_status => x_return_status,
8935 p_error_buffer => l_error_buffer);
8936
8937 FOR i IN 1.. NVL(l_action_rec_tbl.last,0) LOOP
8938
8939 IF UPPER(l_action_rec_tbl(i).action_code) in ('ERROR_MESSAGE','SYSTEM_ERROR') then
8940 x_return_status := FND_API.G_RET_STS_ERROR;
8941 app_exception.raise_exception;
8942 ELSIF UPPER(l_action_rec_tbl(i).action_code) = 'DO_NOT_USE_THIS_TAX_GROUP' then
8943 l_cec_result := FALSE;
8944 ELSIF UPPER(l_action_rec_tbl(i).action_code) = 'USE_THIS_TAX_GROUP' then
8945 l_cec_result := TRUE;
8946 ELSIF UPPER(l_action_rec_tbl(i).action_code) = 'DEFAULT_TAX_CODE' then
8947
8948 NULL;
8949 --++ How do we default a Tax Code at Tax Group level if there are
8950 -- multiple tax codes associated with that tax group? Even if we default,
8951 -- should we evaluate the conditions and exceptions and if there is an action
8952 -- DEFAULT_TAX_CODE should we honour that one ? Revisit later
8953 END IF;
8954 END LOOP;
8955 END IF; -- l_constraint_id IS NOT NULL
8956
8957 -- CLOSE get_constraints_csr;
8958
8959 END IF; -- O2C prod family grp
8960
8961 IF l_cec_result OR l_constraint_id IS NULL THEN
8962
8963 l_curr_rownum := NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
8964 l_rownum := l_curr_rownum;
8965
8966 -- Evaluate the conditions and exceptions
8967 --
8968
8969 OPEN get_candidate_taxes_csr(
8970 c_condition_group_code => l_condition_group_code,
8971 c_tax_rate_code => l_tax_classification_code,
8972 c_tax_class => l_tax_class,
8973 c_tax_determine_date => p_tax_determine_date);
8974
8975 LOOP
8976 FETCH get_candidate_taxes_csr bulk collect INTO
8977 l_tax_regime_code_tbl,
8978 l_tax_tbl,
8979 l_status_result_tbl,
8980 l_rate_result_tbl,
8981 l_condition_set_tbl,
8982 l_exception_set_tbl,
8983 l_result_id_tbl,
8984 l_query_num_tbl
8985 LIMIT c_lines_per_commit;
8986
8987 l_counter := l_tax_regime_code_tbl.count;
8988
8989 FOR j IN 1..l_counter LOOP
8990
8991 l_tax_index := NULL;
8992 l_ref_doc_tax_applicable := FALSE; -- bug 10184087
8993
8994 l_end_index := NVL( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
8995 -- Check if this tax line exists in the new created applicable tax lines
8996 l_tax_index := ZX_TDS_UTILITIES_PKG.get_tax_index(
8997 l_tax_regime_code_tbl(j),
8998 l_tax_tbl(j),
8999 l_trx_line_id,
9000 l_trx_level_type,
9001 x_begin_index,
9002 l_end_index,
9003 x_return_status);
9004
9005 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9006 IF (g_level_statement >= g_current_runtime_level ) THEN
9007 FND_LOG.STRING(g_level_statement,
9008 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9009 'Incorrect return_status after calling ' ||
9010 'ZX_TDS_UTILITIES_PKG.get_tax_index');
9011 FND_LOG.STRING(g_level_statement,
9012 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9013 'RETURN_STATUS = ' || x_return_status);
9014 FND_LOG.STRING(g_level_statement,
9015 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9016 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9017 END IF;
9018 RETURN;
9019 END IF;
9020
9021 --Only process the taxes which has NOT been added to the detail tax lines.
9022 IF l_tax_index is NULL OR
9023 (l_tax_index IS NOT NULL AND -- Added for bug 10184087
9024 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).other_doc_source ='REFERENCE' AND
9025 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).unrounded_tax_amt = 0 AND
9026 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).unrounded_taxable_amt = 0 AND
9027 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).manually_entered_flag ='Y' AND
9028 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).freeze_until_overridden_flag ='Y'
9029 ) THEN
9030
9031 IF l_condition_set_tbl(j) IS NOT NULL OR l_exception_set_tbl(j) IS NOT NULL
9032 THEN
9033
9034 l_action_rec_tbl.delete;
9035 l_cec_result := TRUE; -- bugfix 5572117
9036 l_exception_rate := NULL; -- bugfix 6906653
9037
9038 IF l_constraint_id is NULL then
9039 -- The initialization would have occurred earlier if the constraint_id was NOT NULL
9040 ZX_TDS_RULE_BASE_DETM_PVT.init_cec_params (
9041 p_structure_name => 'TRX_LINE_DIST_TBL',
9042 p_structure_index => p_trx_line_index,
9043 p_return_status => x_return_status,
9044 p_error_buffer => l_error_buffer);
9045 END IF;
9046
9047 ZX_TDS_PROCESS_CEC_PVT.evaluate_cec(
9048 p_condition_set_id => l_condition_set_tbl(j),
9049 p_exception_set_id => l_exception_set_tbl(j),
9050 p_cec_ship_to_party_site_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_party_site_id,
9051 p_cec_bill_to_party_site_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_party_site_id,
9052 p_cec_ship_to_party_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_party_id,
9053 p_cec_bill_to_party_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_party_id,
9054 p_cec_poo_location_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_poo_location_id,
9055 p_cec_poa_location_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_poa_location_id,
9056 p_cec_trx_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_id,
9057 p_cec_trx_line_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_line_id,
9058 p_cec_ledger_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ledger_id,
9059 p_cec_internal_organization_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_internal_organization_id,
9060 p_cec_so_organization_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_so_organization_id,
9061 p_cec_product_org_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_product_org_id,
9062 p_cec_product_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_product_id,
9063 p_cec_trx_line_date => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_line_date,
9064 p_cec_trx_type_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_trx_type_id,
9065 p_cec_fob_point => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_fob_point,
9066 p_cec_ship_to_site_use_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_ship_to_site_use_id,
9067 p_cec_bill_to_site_use_id => ZX_TDS_RULE_BASE_DETM_PVT.g_cec_bill_to_site_use_id,
9068 p_cec_result => l_cec_result,
9069 p_action_rec_tbl => l_action_rec_tbl,
9070 p_return_status => x_return_status,
9071 p_error_buffer => l_error_buffer);
9072
9073 for i in 1.. nvl(l_action_rec_tbl.last,0) loop
9074
9075 IF (g_level_statement >= g_current_runtime_level ) THEN
9076 FND_LOG.STRING(g_level_statement,
9077 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9078 'action code ' ||
9079 l_action_rec_tbl(i).action_code);
9080 END IF;
9081 if upper(l_action_rec_tbl(i).action_code) in ('ERROR_MESSAGE','SYSTEM_ERROR') then
9082 x_return_status := FND_API.G_RET_STS_ERROR;
9083 IF (g_level_error >= g_current_runtime_level ) THEN
9084 FND_LOG.STRING(g_level_error,
9085 'ZX.PLSQL.ZX_TDS_RULE_BASE_DETM_PVT.get_result',
9086 'Action_code is ERROR_MESSAGE,SYSTEM_ERROR');
9087 END IF;
9088
9089 app_exception.raise_exception;
9090 elsif upper(l_action_rec_tbl(i).action_code) in ('DO_NOT_USE_THIS_TAX_CODE',
9091 'DO_NOT_USE_THIS_TAX_GROUP') then
9092 l_cec_result := FALSE;
9093
9094 elsif upper(l_action_rec_tbl(i).action_code) in ('USE_THIS_TAX_CODE','USE_TAX_CODE',
9095 'DEFAULT_TAX_CODE','DO_NOT_APPLY_EXCEPTION') then --Bug 5865988
9096 l_cec_result := TRUE;
9097
9098 -- Bug 5730672
9099
9100 IF upper(l_action_rec_tbl(i).action_code)= 'DEFAULT_TAX_CODE' THEN
9101 BEGIN
9102 SELECT DISTINCT rt.tax_status_code,
9103 rt.tax_rate_code,
9104 2
9105 INTO l_status_result_tbl(j),
9106 l_rate_result_tbl(j),
9107 l_query_num_tbl(j)
9108 FROM ZX_SCO_RATES_B_V rt
9109 WHERE rt.tax_rate_code = l_action_rec_tbl(i).action_value
9110 AND tax_regime_code = l_tax_regime_code_tbl(j)
9111 AND tax = l_tax_tbl(j)
9112 AND rt.effective_from <= p_tax_determine_date
9113 AND (rt.effective_to >= p_tax_determine_date
9114 OR rt.effective_to IS NULL )
9115 AND rt.Active_Flag = 'Y'
9116 AND (rt.tax_class = l_tax_class or rt.tax_class IS NULL)
9117 AND EXISTS (SELECT 1
9118 FROM ZX_SCO_TAXES_B_V tax
9119 WHERE tax.tax_regime_code = rt.tax_regime_code
9120 AND tax.tax = rt.tax
9121 AND tax.live_for_processing_flag = 'Y'
9122 AND tax.live_for_applicability_flag = 'Y');
9123 EXCEPTION
9124 WHEN OTHERS THEN
9125 l_cec_result := FALSE; -- Revisit
9126 END;
9127 END IF;
9128 -- Bug 5730672
9129
9130 /*
9131 if upper(l_action_rec_tbl(i).action_code)= 'USE_THIS_TAX_CODE' then
9132 get_tsrm_num_value(p_structure_name,
9133 p_structure_index,
9134 'OUTPUT_TAX_CLASSIFICATION_CODE',
9135 l_override_tax_rate_code,
9136 p_return_status,
9137 p_error_buffer);
9138 elsif upper(l_action_rec_tbl(i).action_code)in ('DEFAULT_TAX_CODE','USE_TAX_CODE') then
9139 l_override_tax_rate_code := l_action_rec_tbl(i).action_value;
9140 end if;
9141
9142 -- Get the Tax regime, Tax, Status, Rate Code based on override_tax_rate_code
9143 -- and set it on the result_rec.
9144
9145 Open select_tax_status_rate_code (p_tax_regime_code, p_tax, l_override_tax_rate_code,
9146 p_tax_determine_date);
9147 fetch select_tax_status_rate_code into l_tax_status_code, l_tax_rate_code;
9148
9149 If select_tax_status_rate_code%NOTFOUND then
9150 --A record does not exist with that tax rate code for the given tax.
9151 --Raise error;
9152
9153 p_return_status := FND_API.G_RET_STS_ERROR;
9154 p_error_buffer := SUBSTR(SQLERRM, 1, 80);
9155 IF (g_level_error >= g_current_runtime_level ) THEN
9156 FND_LOG.STRING(g_level_error,
9157 'ZX.PLSQL.ZX_TDS_RULE_BASE_DETM_PVT.get_result',
9158 'Cannot set the tax rate code to '||l_override_tax_rate_code ||
9159 ', ERROR: '||p_error_buffer);
9160 END IF;
9161 IF select_tax_status_rate_code%isopen then
9162 Close select_tax_status_rate_code;
9163 END IF;
9164 app_exception.raise_exception;
9165 ELSE
9166 p_zx_result_rec.rate_result := l_tax_rate_code;
9167 p_zx_result_rec.status_result := l_tax_status_code;
9168 End if;
9169
9170 Close select_tax_status_rate_code;
9171 */
9172 elsif upper(l_action_rec_tbl(i).action_code)= 'DO_NOT_APPLY_EXCEPTION' then
9173 NULL;
9174 elsif upper(l_action_rec_tbl(i).action_code) = 'APPLY_EXCEPTION' then
9175 -- populate the numeric result column of the result rec.
9176 -- This rate will be used during Tax Rate Determination process
9177 -- The Rate determination process will check if the rate is ad-hoc and
9178 -- accordingly honour this rate or raise exception.
9179 l_cec_result := TRUE;
9180 --bug6604498
9181 l_exception_rate := to_number(l_action_rec_tbl(i).action_value);
9182
9183 /* this part also needs to be revisited. How to use an exception rate.
9184 Begin
9185 p_zx_result_rec.numeric_result := l_action_rec_tbl(i).action_value;
9186 exception
9187 when others then
9188 FND_MESSAGE.SET_NAME('ZX','GENERIC_MESSAGE');
9189 FND_MESSAGE.SET_TOKEN('GENERIC_TEXT','The action value for APPLY_EXCEPTION action code'||
9190 'does not contain number');
9191 FND_MSG_PUB.Add;
9192 IF (g_level_error >= g_current_runtime_level ) THEN
9193 FND_LOG.STRING(g_level_error,
9194 'ZX.PLSQL.ZX_TDS_RULE_BASE_DETM_PVT.get_result',
9195 'The action value for APPLY_EXCEPTION action code '||
9196 'does not contain number');
9197 END IF;
9198 app_exception.raise_exception;
9199 end;
9200 */
9201 end if;
9202 end loop;
9203 END IF; -- Not null conditions or exceptions
9204
9205 -- Question: Should we check for l_action_rec_tbl? refer to get_result
9206 -- procedure in zxdirulenginpvtb.pls for this
9207
9208 IF (l_cec_result OR
9209 (l_condition_set_tbl(j) IS NULL and l_exception_set_tbl(j) is NULL))
9210 THEN
9211
9212 l_rate_exists_same_prod_family := TRUE;
9213
9214 IF l_rate_result_tbl(j) IS NOT NULL
9215 -- nipatel need to check if rate exists in the same product family only
9216 -- if the record was fetched from the first query (i.e. based on rules)
9217 AND l_query_num_tbl(j) = 1 THEN
9218
9219 -- Filter based on tax rate class
9220 -- Check if tax rate exists in the same product family group
9221 --
9222
9223 l_tbl_index := dbms_utility.get_hash_value(
9224 l_tax_regime_code_tbl(j)||l_tax_tbl(j)||
9225 l_status_result_tbl(j)||l_rate_result_tbl(j),
9226 1,
9227 8192);
9228
9229
9230 IF ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash.exists(l_tbl_index)
9231 THEN
9232 -- cehck the product family from the cached structure
9233
9234 IF ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash(l_tbl_index).tax_class is NULL THEN
9235
9236 l_rate_exists_same_prod_family := TRUE;
9237
9238 ELSIF (ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash(l_tbl_index).tax_class is NOT NULL
9239 AND ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash(l_tbl_index).tax_class = l_tax_class)
9240 THEN
9241
9242 l_rate_exists_same_prod_family := TRUE;
9243
9244 ELSIF (ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash(l_tbl_index).tax_class is NOT NULL
9245 AND ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash(l_tbl_index).tax_class <> l_tax_class)
9246 THEN
9247
9248 l_rate_exists_same_prod_family := FALSE;
9249
9250 END IF;
9251 END IF; -- ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash.exists(l_tbl_index)
9252
9253 IF ( NOT ZX_TDS_UTILITIES_PKG.g_tax_rate_info_ind_by_hash.exists(l_tbl_index) )
9254 OR l_rate_exists_same_prod_family = FALSE THEN
9255 -- check product family using cursor
9256
9257 OPEN check_tax_rate_class_csr(
9258 l_tax_regime_code_tbl(j),
9259 l_tax_tbl(j),
9260 l_status_result_tbl(j),
9261 l_rate_result_tbl(j),
9262 l_tax_class,
9263 p_tax_determine_date);
9264 FETCH check_tax_rate_class_csr INTO l_temp_num;
9265
9266 IF check_tax_rate_class_csr%NOTFOUND THEN
9267
9268 close check_tax_rate_class_csr;
9269 l_rate_exists_same_prod_family := FALSE;
9270 -- tax not applicable. goto the next record
9271 --
9272 IF (g_level_statement >= g_current_runtime_level ) THEN
9273 FND_LOG.STRING(g_level_statement,
9274 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9275 'Tax Rate does not exist in this product family group. ');
9276 END IF;
9277 ELSE
9278 close check_tax_rate_class_csr;
9279 END IF;
9280
9281 END IF; -- check product family using cursor
9282
9283 END IF; -- l_rate_result_tbl(j) IS NOT NULL
9284
9285 -- Handle for candidate taxes got from direct rate rules without tax rate/status defined
9286 -- and taxes got from rates_b table with approperiate rate defined.
9287 IF l_rate_result_tbl(j) IS NULL OR
9288 (l_rate_result_tbl(j) IS NOT NULL AND l_rate_exists_same_prod_family)
9289 THEN
9290 -- validate and populate tax_id
9291 --
9292
9293 -- Bug 5252411
9294
9295 l_index := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl.FIRST;
9296 l_tax_rec := NULL;
9297 WHILE l_index IS NOT NULL LOOP
9298
9299 IF (l_tax_tbl(j) = ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index).tax AND
9300 l_tax_regime_code_tbl(j) = ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index).tax_regime_code)
9301 THEN
9302 IF (g_level_statement >= g_current_runtime_level ) THEN
9303 FND_LOG.STRING(g_level_statement,
9304 'ZX.PLSQL.ZX_TDS_UTILITIES_PKG.get_tax_cache_info',
9305 'tax found in tax cache, at index '||
9306 to_char(l_index));
9307 END IF;
9308
9309 IF ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index).effective_from <= p_tax_determine_date
9310 AND (ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index).effective_to >= p_tax_determine_date
9311 OR ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index).effective_to IS NULL)
9312 THEN
9313 l_tax_rec := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_index);
9314
9315 END IF;
9316 EXIT;
9317 END IF; -- tax found in cache
9318
9319 l_index := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl.NEXT(l_index);
9320 END LOOP;
9321
9322 -- tax not exists in the cache structure, retrieve tax info from table
9323 IF l_tax_rec.TAX IS NULL THEN
9324
9325 OPEN get_tax_info_csr(l_tax_regime_code_tbl(j),
9326 l_tax_tbl(j),
9327 p_tax_determine_date);
9328 FETCH get_tax_info_csr into l_tax_rec;
9329 CLOSE get_tax_info_csr;
9330
9331 -- bug fix 5579156: cache the tax detail info when tax found effective.
9332 IF l_tax_rec.tax_id IS NOT NULL THEN
9333 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_rec.tax_id) := l_tax_rec;
9334 END IF;
9335
9336 END IF;
9337
9338
9339 IF l_tax_rec.TAX IS NOT NULL THEN -- Process tax only if it is enabled for processing
9340
9341 -- Initialize the TCM jurisdiction global tbl for each tax.
9342 -- Bug 13768696
9343 g_inner_jurisdiction_code := NULL;
9344 g_outer_jurisdiction_code := NULL;
9345 g_inner_jurisdiction_id := NULL;
9346 g_outer_jurisdiction_id := NULL;
9347 l_jurisdictions_found := NULL;
9348
9349 get_place_of_supply(
9350 p_event_class_rec => p_event_class_rec,
9351 p_tax_regime_code => l_tax_rec.tax_regime_code,
9352 p_tax_id => l_tax_rec.tax_id,
9353 p_tax => l_tax_rec.tax,
9354 p_tax_determine_date => p_tax_determine_date,
9355 p_def_place_of_supply_type_cd => l_tax_rec.def_place_of_supply_type_code,
9356 p_place_of_supply_rule_flag => l_tax_rec.place_of_supply_rule_flag,
9357 p_applicability_rule_flag => l_tax_rec.applicability_rule_flag,
9358 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
9359 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
9360 p_trx_line_index => p_trx_line_index,
9361 p_direct_rate_result_id => l_result_id_tbl(j),
9362 x_jurisdiction_rec => l_jurisdiction_rec,
9363 x_jurisdictions_found => l_jurisdictions_found,
9364 x_place_of_supply_type_code => l_place_of_supply_type_code,
9365 x_place_of_supply_result_id => l_place_of_supply_result_id,
9366 x_return_status => x_return_status);
9367
9368 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9369 IF (g_level_statement >= g_current_runtime_level ) THEN
9370 FND_LOG.STRING(g_level_statement,
9371 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9372 'Incorrect return_status after calling ' ||
9373 'ZX_TDS_APPLICABILITY_DETM_PKG.get_place_of_supply');
9374 END IF;
9375
9376 -- For migrated taxes, if the has_other_jurisdictions_flag on the tax is 'N',
9377 -- no jurisdiction required, so ignore the errors raised from get_place_of_supply
9378 --
9379 IF NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'N' AND
9380 NVL(l_tax_rec.record_type_code, 'USER_DEFINED') = 'MIGRATED'
9381 THEN
9382 x_return_status := FND_API.G_RET_STS_SUCCESS;
9383 IF (g_level_statement >= g_current_runtime_level ) THEN
9384 FND_LOG.STRING(g_level_statement,
9385 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9386 'For migrated taxes, if the has_other_jurisdictions_flag on ' ||
9387 'the tax is N, no jurisdiction required. Continue processing tax... ');
9388 END IF;
9389
9390 ELSE
9391 IF (g_level_statement >= g_current_runtime_level ) THEN
9392 FND_LOG.STRING(g_level_statement,
9393 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9394 'Unable to determine the Place of Supply for tax: '||l_tax_rec.tax||
9395 ' Place of Supply is mandatory when Direct Rate Determination is for l usocation based taxes');
9396 FND_LOG.STRING(g_level_statement,
9397 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9398 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)'||', RETURN_STATUS = ' || x_return_status);
9399 END IF;
9400
9401 RETURN;
9402 END IF;
9403 END IF;
9404
9405 -- bug 5120930
9406 l_tax_applicable := FALSE;
9407
9408 IF (l_jurisdictions_found = 'Y' OR
9409 NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'N') THEN
9410
9411 IF l_jurisdictions_found = 'Y'
9412 AND l_jurisdiction_rec.tax_jurisdiction_code IS NULL
9413 THEN
9414
9415 -- for multiple jurisdictions case: cache the most inner
9416 -- and outer jurisdiction for future usage
9417
9418 OPEN c_get_jurisdiction_from_gt(l_tax_rec.tax_regime_code, l_tax_rec.tax);
9419 FETCH c_get_jurisdiction_from_gt
9420 BULK COLLECT INTO l_jurisdiction_rec_tbl;
9421 CLOSE c_get_jurisdiction_from_gt;
9422
9423 IF l_jurisdiction_rec_tbl.COUNT = 0 THEN
9424
9425 IF (g_level_statement >= g_current_runtime_level ) THEN
9426 FND_LOG.STRING(g_level_statement,
9427 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9428 'No data found in ZX_JURISDICTIONS_GT when multiple jurisdictions found.');
9429 END IF;
9430 RAISE NO_DATA_FOUND;
9431
9432 END IF;
9433 -- cache the global most inner and outer jurisdiction code
9434 l_jur_index := l_jurisdiction_rec_tbl.FIRST;
9435 g_inner_jurisdiction_code
9436 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_code;
9437 g_inner_jurisdiction_id
9438 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_id;
9439
9440 l_jur_index := l_jurisdiction_rec_tbl.LAST;
9441 g_outer_jurisdiction_code
9442 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_code;
9443 g_outer_jurisdiction_id
9444 := l_jurisdiction_rec_tbl(l_jur_index).tax_jurisdiction_id;
9445
9446 IF (g_level_statement >= g_current_runtime_level ) THEN
9447 FND_LOG.STRING(g_level_statement,
9448 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9449 'g_inner_jurisdiction_code = '|| g_inner_jurisdiction_code||'g_outer_jurisdiction_code = '|| g_outer_jurisdiction_code);
9450
9451 END IF;
9452
9453 ELSIF l_jurisdictions_found = 'Y'
9454 AND l_jurisdiction_rec.tax_jurisdiction_code IS NOT NULL
9455 THEN
9456 -- for single jurisdiction case: cache the most inner
9457 -- and outer jurisdiction same as the jurisdiction found
9458 -- for future usage
9459
9460 g_inner_jurisdiction_code
9461 := l_jurisdiction_rec.tax_jurisdiction_code;
9462 g_inner_jurisdiction_id
9463 := l_jurisdiction_rec.tax_jurisdiction_id;
9464 g_outer_jurisdiction_code
9465 := l_jurisdiction_rec.tax_jurisdiction_code;
9466 g_outer_jurisdiction_id
9467 := l_jurisdiction_rec.tax_jurisdiction_id;
9468
9469 IF (g_level_statement >= g_current_runtime_level ) THEN
9470 FND_LOG.STRING(g_level_statement,
9471 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9472 'g_inner_jurisdiction_code = '|| g_inner_jurisdiction_code|| 'g_outer_jurisdiction_code = '|| g_outer_jurisdiction_code);
9473
9474 END IF;
9475 END IF;
9476
9477 IF NVL(l_tax_rec.applicability_rule_flag, 'N') = 'N' THEN
9478 -- for migrated taxes, if no additioncal applicability rule
9479 -- defined, treate tax as applicable
9480
9481 l_tax_applicable := TRUE;
9482
9483 ELSE
9484 -- call is_tax_applicable to determine additional tax applicability
9485 --
9486 l_tax_applicable := is_tax_applicable (
9487 p_tax_id => l_tax_rec.tax_id,
9488 p_tax_determine_date => p_tax_determine_date,
9489 p_applicability_rule_flag => l_tax_rec.applicability_rule_flag,
9490 p_event_class_rec => p_event_class_rec,
9491 p_trx_line_index => p_trx_line_index,
9492 p_applicable_by_default_flag => l_tax_rec.applicable_by_default_flag,
9493 x_applicability_result => l_applicability_result,
9494 x_applicability_result_id => l_applicability_result_id,
9495 x_return_status => x_return_status);
9496
9497 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9498 IF (g_level_statement >= g_current_runtime_level ) THEN
9499 FND_LOG.STRING(g_level_statement,
9500 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9501 'Incorrect return_status after calling ' ||
9502 'ZX_TDS_APPLICABILITY_DETM_PKG.is_tax_applicable');
9503 FND_LOG.STRING(g_level_statement,
9504 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9505 'RETURN_STATUS = ' || x_return_status);
9506 FND_LOG.STRING(g_level_statement,
9507 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9508 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9509 END IF;
9510 RETURN;
9511 END IF;
9512 END IF; --NVL(l_tax_rec.applicability_rule_flag, 'N') = 'N'
9513
9514 END IF; -- l_jurisdictions_found ='Y' OR NVL(l_tax_rec.has_other_jurisdictions_flag, 'N') = 'N')
9515
9516 /* --bug 5385188
9517 -- Since Direct Rate is applicable, POS is not mandatory. So ignore
9518 -- the errors raised from get_place_of_supply
9519
9520 x_return_status := FND_API.G_RET_STS_SUCCESS;
9521 */
9522
9523 IF l_tax_applicable THEN
9524 IF (l_tax_index IS NOT NULL AND -- Added for bug 10184087
9525 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).other_doc_source ='REFERENCE' AND
9526 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).unrounded_tax_amt = 0 AND
9527 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).unrounded_taxable_amt = 0 AND
9528 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).manually_entered_flag ='Y' AND
9529 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index).freeze_until_overridden_flag ='Y'
9530 )
9531 THEN
9532
9533 IF (g_level_statement >= g_current_runtime_level ) THEN
9534 FND_LOG.STRING(g_level_statement,
9535 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9536 'Tax is Applicable and there exists a Zero Amount Reference Tax Line at index '||l_tax_index);
9537 FND_LOG.STRING(g_level_statement,
9538 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9539 'Resetting the tax line record at index '||l_tax_index);
9540 END IF;
9541
9542 l_rownum := l_tax_index;
9543 l_tmp_tax_apportionmt_ln_num :=
9544 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_tax_index
9545 ).tax_apportionment_line_number;
9546 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum) := NULL;
9547 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(l_rownum
9548 ).tax_apportionment_line_number := l_tmp_tax_apportionmt_ln_num;
9549 l_ref_doc_tax_applicable := TRUE;
9550 ELSE
9551 -- build the new detail tax lines ONLY AFTER the tax is evaluated to be applicable.
9552 l_begin_index := l_curr_rownum + 1;
9553 l_rownum := l_rownum + 1;
9554 END IF;
9555
9556 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9557 l_rownum).application_id := p_event_class_rec.application_id;
9558 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9559 l_rownum).event_class_code := p_event_class_rec.event_class_code;
9560 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9561 l_rownum).entity_code := p_event_class_rec.entity_code;
9562 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9563 l_rownum).trx_id := p_event_class_rec.trx_id;
9564
9565 -- validate and populate tax_regime_id
9566 --
9567 ZX_TDS_UTILITIES_PKG.get_regime_cache_info(
9568 l_tax_regime_code_tbl(j),
9569 p_tax_determine_date,
9570 l_tax_regime_rec,
9571 x_return_status,
9572 l_error_buffer);
9573
9574 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9575 IF (g_level_statement >= g_current_runtime_level ) THEN
9576 FND_LOG.STRING(g_level_statement,
9577 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9578 'Incorrect return_status after calling ' ||
9579 'ZX_TDS_UTILITIES_PKG.get_regime_cache_info');
9580 FND_LOG.STRING(g_level_statement,
9581 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9582 'RETURN_STATUS = ' || x_return_status);
9583 FND_LOG.STRING(g_level_statement,
9584 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9585 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9586 END IF;
9587 RETURN;
9588 END IF;
9589
9590 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9591 l_rownum).tax_regime_id := l_tax_regime_rec.tax_regime_id;
9592
9593 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9594 l_rownum).tax_id := l_tax_rec.tax_id;
9595
9596 -- bug 5077691: populate legal_reporting_status
9597 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
9598 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9599 l_rownum).legal_reporting_status :=
9600 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
9601 l_tax_rec.tax_id).legal_reporting_status_def_val;
9602 END IF;
9603
9604 IF l_jurisdictions_found = 'Y'
9605 AND l_jurisdiction_rec.tax_jurisdiction_code IS NULL
9606 THEN
9607
9608 -- Stamp multiple_jurisdiction_flag on the tax line to 'Y'
9609 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9610 l_rownum).multiple_jurisdictions_flag := 'Y';
9611
9612 END IF;
9613
9614 IF l_status_result_tbl(j) IS NOT NULL THEN
9615 -- validate and populate tax_status_id
9616 --
9617 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
9618 l_tax_tbl(j),
9619 l_tax_regime_code_tbl(j),
9620 l_status_result_tbl(j),
9621 p_tax_determine_date,
9622 l_tax_status_rec,
9623 x_return_status,
9624 l_error_buffer);
9625
9626 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9627 IF (g_level_statement >= g_current_runtime_level ) THEN
9628 FND_LOG.STRING(g_level_statement,
9629 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9630 'Incorrect return_status after calling ' ||
9631 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
9632 FND_LOG.STRING(g_level_statement,
9633 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9634 'RETURN_STATUS = ' || x_return_status);
9635 FND_LOG.STRING(g_level_statement,
9636 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9637 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9638 END IF;
9639 RETURN;
9640 END IF;
9641
9642 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9643 l_rownum).tax_status_id := l_tax_status_rec.tax_status_id;
9644
9645 END IF; --l_status_result_tbl(j) IS NOT NULL
9646
9647 IF l_rate_result_tbl(j) IS NOT NULL THEN
9648 -- validate and populate tax_rate_id
9649 --
9650
9651 -- bug 5475775:
9652
9653 IF l_jurisdiction_rec.tax_jurisdiction_code is NULL and
9654 l_jurisdictions_found = 'Y' THEN
9655
9656 -- multiple jurisdictions situation
9657
9658 FOR i IN 1 .. nvl(l_jurisdiction_rec_tbl.count, 0) LOOP
9659
9660 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
9661 l_tax_regime_code_tbl(j),
9662 l_tax_tbl(j),
9663 l_jurisdiction_rec_tbl(i).tax_jurisdiction_code,
9664 l_status_result_tbl(j),
9665 l_rate_result_tbl(j),
9666 p_tax_determine_date,
9667 l_tax_class,
9668 l_tax_rate_rec,
9669 x_return_status,
9670 l_error_buffer);
9671
9672 IF x_return_status = FND_API.G_RET_STS_SUCCESS AND
9673 l_tax_rate_rec.tax_rate_id is not NULL and
9674 l_tax_rate_rec.tax_jurisdiction_code = l_jurisdiction_rec_tbl(i).tax_jurisdiction_code
9675 THEN
9676 -- A matching rate record is found. use this record for processing
9677 EXIT;
9678 END IF;
9679
9680 END LOOP;
9681
9682 ELSE
9683
9684 -- Single Jurisdiction
9685
9686 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
9687 l_tax_regime_code_tbl(j),
9688 l_tax_tbl(j),
9689 l_jurisdiction_rec.tax_jurisdiction_code,
9690 l_status_result_tbl(j),
9691 l_rate_result_tbl(j),
9692 p_tax_determine_date,
9693 l_tax_class,
9694 l_tax_rate_rec,
9695 x_return_status,
9696 l_error_buffer);
9697 END IF;
9698
9699
9700 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9701 IF (g_level_statement >= g_current_runtime_level ) THEN
9702 FND_LOG.STRING(g_level_statement,
9703 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9704 'Incorrect return_status after calling ' ||
9705 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info');
9706 FND_LOG.STRING(g_level_statement,
9707 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9708 'RETURN_STATUS = ' || x_return_status);
9709 FND_LOG.STRING(g_level_statement,
9710 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9711 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9712 END IF;
9713 RETURN;
9714 END IF;
9715
9716 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9717 l_rownum).tax_rate_id := l_tax_rate_rec.tax_rate_id;
9718
9719 END IF; --l_rate_result_tbl(j) IS NOT NULL
9720
9721 -- >> Update call
9722 IF(ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(p_trx_line_index)='UPDATE') AND
9723 NOT l_ref_doc_tax_applicable -- Added for Bug 10184087
9724 THEN
9725 handle_update_scenarios(p_trx_line_index,
9726 p_event_class_rec,
9727 l_rownum,
9728 l_tax_rec.tax_regime_code,
9729 l_tax_rec.tax,
9730 p_tax_date,
9731 p_tax_determine_date,
9732 p_tax_point_date,
9733 l_self_assessed_flag,
9734 l_tax_amt_included_flag,
9735 l_tax_jurisdiction_id,
9736 l_tax_jurisdiction_code,
9737 x_return_status);
9738
9739 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9740 IF (g_level_statement >= g_current_runtime_level ) THEN
9741 FND_LOG.STRING(g_level_statement,
9742 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9743 'Incorrect return_status after calling ' ||
9744 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results');
9745 FND_LOG.STRING(g_level_statement,
9746 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9747 'RETURN_STATUS = ' || x_return_status);
9748 FND_LOG.STRING(g_level_statement,
9749 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9750 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9751 END IF;
9752 RETURN;
9753 END IF;
9754 END IF;
9755
9756 -- Added for Bug#13110309
9757 -- In case of Update call, the procedure handle_update_scenario will populate
9758 -- the structure ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl with the
9759 -- tax line details at index l_new_row_num
9760 -- If tax line exists at index l_new_row_num and it is canceled then set the
9761 -- variable l_cancel_tax_line to TRUE
9762
9763 l_cancel_tax_line := FALSE;
9764
9765 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.EXISTS(l_rownum)
9766 THEN
9767 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9768 l_rownum).cancel_flag,'N') = 'Y'
9769 THEN
9770 l_cancel_tax_line := TRUE;
9771 END IF;
9772 END IF;
9773
9774 -- Set the values of columns in ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl
9775 -- if the value of variable l_cancel_tax_line is not TRUE
9776 IF NOT(l_cancel_tax_line) THEN
9777 --
9778 -- Populate the g_detail_tax_lines structure
9779 --
9780 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9781 l_rownum).event_type_code := p_event_class_rec.event_type_code;
9782
9783 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9784 l_rownum).tax_date := p_tax_date;
9785
9786 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9787 l_rownum).tax_determine_date := p_tax_determine_date;
9788
9789 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9790 l_rownum).tax_point_date := p_tax_point_date;
9791
9792 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9793 l_rownum).place_of_supply_type_code := l_place_of_supply_type_code;
9794
9795 -- stamp trx_level_type and trx_line_id, since they are used for
9796 -- tax line index checking.
9797 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9798 l_rownum).trx_level_type :=
9799 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index);
9800
9801 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9802 l_rownum).trx_line_id :=
9803 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index);
9804
9805 -- if orig_tax_jurisdiction_code(id) is not NULL (for UPDATE),
9806 -- populate tax_jurisdiction_code and tax_jurisdiction_id fetched
9807 -- from zx_lines. Otherwise, populate new tax_jurisdiction_code
9808 -- and tax_jurisdiction_id from most inner jurisdiction info
9809 --
9810 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9811 l_rownum).orig_tax_jurisdiction_code IS NOT NULL
9812 THEN
9813 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9814 l_rownum).tax_jurisdiction_code := l_tax_jurisdiction_code;
9815
9816 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9817 l_rownum).tax_jurisdiction_id := l_tax_jurisdiction_id;
9818 ELSE
9819 -- bug 5120930
9820 -- always stamp the most inner jurisdiction code on tax line
9821
9822 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9823 l_rownum).tax_jurisdiction_code
9824 := NVL(l_jurisdiction_rec.tax_jurisdiction_code,
9825 g_inner_jurisdiction_code);
9826
9827 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9828 l_rownum).tax_jurisdiction_id
9829 := NVL(l_jurisdiction_rec.tax_jurisdiction_id,
9830 g_inner_jurisdiction_id);
9831 END IF;
9832
9833 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9834 l_rownum).tax_regime_code := l_tax_rec.tax_regime_code;
9835 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9836 l_rownum).tax := l_tax_rec.tax;
9837 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9838 l_rownum).tax_currency_code := l_tax_rec.tax_currency_code;
9839 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9840 l_rownum).tax_type_code := l_tax_rec.tax_type_code;
9841 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9842 l_rownum).tax_currency_conversion_date := p_tax_determine_date;
9843 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9844 l_rownum).tax_currency_conversion_type :=
9845 l_tax_rec.exchange_rate_type;
9846 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9847 l_rownum).reporting_only_flag := l_tax_rec.reporting_only_flag;
9848 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9849 l_rownum).place_of_supply_result_id :=
9850 l_place_of_supply_result_id;
9851 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9852 l_rownum).legal_message_pos :=
9853 ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_place_of_supply_result_id,
9854 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index));
9855 -- Populate direct_rate_rule_flag, as well as tax_status_code
9856 -- and tax_rate_code if direct_rate is applicable.
9857 --
9858 IF NVL(ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9859 l_rownum).last_manual_entry,'X') NOT IN ('TAX_RATE','TAX_AMOUNT')
9860 THEN
9861 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9862 l_rownum).direct_rate_result_id := l_result_id_tbl(j);
9863 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9864 l_rownum).tax_status_code := l_status_result_tbl(j);
9865 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9866 l_rownum).tax_rate_code := l_rate_result_tbl(j);
9867 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9868 l_rownum).legal_message_rate :=
9869 ZX_TDS_CALC_SERVICES_PUB_PKG.get_rep_code_id(l_result_id_tbl(j),
9870 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_date(p_trx_line_index));
9871 END IF;
9872
9873 --bug6604498
9874 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9875 l_rownum).exception_rate := l_exception_rate;
9876
9877 -- populate rounding_lvl_party_tax_prof_id and rounding_level_code
9878 --
9879 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9880 l_rownum).rounding_lvl_party_tax_prof_id :=
9881 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rnd_lvl_party_tax_prof_id;
9882
9883 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9884 l_rownum).rounding_level_code :=
9885 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_level;
9886
9887 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9888 l_rownum).rounding_lvl_party_type :=
9889 ZX_TDS_CALC_SERVICES_PUB_PKG.g_rounding_lvl_party_type;
9890
9891 -- populate hq_estb_party_tax_prof_id
9892 --
9893 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9894 l_rownum).hq_estb_party_tax_prof_id :=
9895 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.hq_estb_party_tax_prof_id(
9896 p_trx_line_index);
9897
9898 -- populate tax registration info
9899 --
9900 populate_registration_info(
9901 p_event_class_rec => p_event_class_rec,
9902 p_trx_line_index => p_trx_line_index,
9903 p_rownum => l_rownum,
9904 p_def_reg_type => l_tax_rec.def_registr_party_type_code,
9905 p_reg_rule_flg => l_tax_rec.registration_type_rule_flag,
9906 p_tax_determine_date => p_tax_determine_date,
9907 x_return_status => x_return_status);
9908
9909 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9910 IF (g_level_statement >= g_current_runtime_level ) THEN
9911 FND_LOG.STRING(g_level_statement,
9912 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9913 'Incorrect return_status after calling ' ||
9914 'ZX_TDS_APPLICABILITY_DETM_PKG.populate_registration_info');
9915 FND_LOG.STRING(g_level_statement,
9916 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
9917 'RETURN_STATUS = ' || x_return_status);
9918 FND_LOG.STRING(g_level_statement,
9919 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
9920 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
9921 END IF;
9922 RETURN;
9923 END IF;
9924
9925 -- If orig_tax_amt_included_flag/orig_self_assessed_flag is not NULL
9926 -- (for UPDATE), populate tax_amt_included_flag/self_assessed_flag
9927 -- fetched from zx_lines. Otherwise, keep tax_amt_included_flag/
9928 -- self_assessed_flag returned from get_tax_registration
9929 --
9930 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9931 l_rownum).orig_tax_amt_included_flag IS NOT NULL THEN
9932 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9933 l_rownum).tax_amt_included_flag := l_tax_amt_included_flag;
9934 END IF;
9935
9936 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9937 l_rownum).orig_self_assessed_flag IS NOT NULL THEN
9938 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9939 l_rownum).self_assessed_flag := l_self_assessed_flag;
9940 END IF;
9941
9942 -- populate rounding_rule_code if it is null
9943 --
9944 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9945 l_rownum).rounding_rule_code IS NULL THEN
9946 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9947 l_rownum).rounding_rule_code := l_tax_rec.rounding_rule_code;
9948 END IF;
9949
9950 -- If the value of p_event_class_rec.self_assess_tax_lines_flag
9951 -- is 'N', populate self_assessed_flg to 'N'
9952 --
9953 IF NVL(p_event_class_rec.self_assess_tax_lines_flag, 'N') = 'N'
9954 THEN
9955
9956 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9957 l_rownum).self_assessed_flag := 'N';
9958 END IF;
9959
9960 -- bug#8592720
9961 IF (ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
9962 p_trx_line_index) = 'CREATE_TAX_ONLY') THEN
9963
9964 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9965 l_rownum).tax_only_line_flag := 'Y';
9966 END IF;
9967
9968 END IF; -- NOT(l_cancel_tax_line)
9969
9970 -- Bug 4277751: For intercompany transaction, detail tax lines from
9971 -- addintional applicability process should be marked as
9972 -- self assessed
9973 --
9974 --
9975 -- Bug 5705976: Since, we stamp 'INTERCOMPANY_TRX' on both AR and AP
9976 -- transactions, the following code has become incorrect.
9977 --
9978 /*
9979 IF ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action(
9980 p_trx_line_index) IN ('CREATE', 'UPDATE') AND
9981 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.source_event_class_code(
9982 p_trx_line_index) = 'INTERCOMPANY_TRX'
9983 THEN
9984 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
9985 l_rownum).self_assessed_flag := 'Y';
9986 END IF;
9987 */
9988 -- Populate Regime and Regime detail table
9989 --
9990
9991 --
9992 -- Bug#5440023- do not poplate detail_tax_regime_tbl
9993 -- for partner integration with 'LINE_INFO_TAX_ONLY' lines
9994 --
9995 IF NOT (NVL(ZX_GLOBAL_STRUCTURES_PKG.g_ptnr_srvc_subscr_flag, 'N') = 'Y' AND
9996 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_level_action (p_trx_line_index ) = 'LINE_INFO_TAX_ONLY' )
9997 THEN
9998 l_regimerownum :=
9999 NVL(ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl.last, 0) + 1;
10000
10001 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
10002 l_regimerownum).trx_line_index := p_trx_line_index;
10003 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
10004 l_regimerownum).tax_regime_id:= l_tax_regime_rec.tax_regime_id;
10005 ZX_GLOBAL_STRUCTURES_PKG.detail_tax_regime_tbl(
10006 l_regimerownum).tax_regime_precedence :=
10007 l_tax_regime_rec.tax_regime_precedence;
10008
10009 END IF;
10010
10011 add_tax_regime (l_tax_regime_rec.tax_regime_precedence,
10012 l_tax_regime_rec.tax_regime_id,
10013 l_tax_regime_rec.tax_regime_code,
10014 l_tax_regime_rec.parent_regime_code,
10015 l_tax_regime_rec.country_code,
10016 l_tax_regime_rec.geography_type,
10017 l_tax_regime_rec.geography_id,
10018 l_tax_regime_rec.effective_from,
10019 l_tax_regime_rec.effective_to,
10020 x_return_status );
10021 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10022 IF (g_level_error >= g_current_runtime_level ) THEN
10023 FND_LOG.STRING(g_level_error,
10024 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
10025 'Incorrect return_status after calling ' ||
10026 'ZX_TDS_APPLICABILITY_DETM_PKG.add_tax_regime');
10027 FND_LOG.STRING(g_level_error,
10028 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
10029 'RETURN_STATUS = ' || x_return_status);
10030 FND_LOG.STRING(g_level_error,
10031 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
10032 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
10033 END IF;
10034 RETURN;
10035 END IF;
10036
10037 END IF; -- l_tax_applicable
10038 END IF; -- l_tax_rec.TAX IS NOT NULL
10039 END IF; -- l_rate_result_tbl(j) IS NULL OR
10040 -- (l_rate_result_tbl(j) IS NOT NULL AND l_rate_exists_same_prod_family)
10041 END IF; -- If condition is valid or NULL
10042 END IF; -- IF condition for get_tax_index
10043
10044 IF (x_begin_index is null) THEN
10045 x_begin_index := l_begin_index;
10046 END IF;
10047 END LOOP; -- End For loop
10048
10049 EXIT WHEN get_candidate_taxes_csr%NOTFOUND;
10050
10051 END LOOP; -- get_candidate_taxes_csr
10052 CLOSE get_candidate_taxes_csr;
10053 END IF; -- If constraint is VALID or NULL
10054
10055 --IF (l_begin_index is NOT NULL) THEN
10056 IF (x_begin_index is NOT NULL) THEN
10057 x_end_index :=
10058 NVL( ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl.LAST, 0);
10059 END IF;
10060
10061 -- If p_event_class_rec.enforce_tax_from_ref_doc_flag = 'Y' AND
10062 -- trx_line_dist_tbl.ref_doc_application_id(p_trx_line_index) IS NOT NULL,
10063 -- get tax rate code from refefence document
10064 --
10065 IF p_event_class_rec.enforce_tax_from_ref_doc_flag = 'Y' AND
10066 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(
10067 p_trx_line_index) IS NOT NULL
10068 THEN
10069
10070 enforce_tax_from_ref_doc(
10071 x_begin_index,
10072 x_end_index,
10073 p_trx_line_index,
10074 x_return_status);
10075 END IF;
10076
10077 -- copy transaction info to new tax lines
10078
10079 ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines (p_trx_line_index,
10080 x_begin_index,
10081 x_end_index,
10082 x_return_status,
10083 l_error_buffer );
10084
10085 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10086 IF (g_level_statement >= g_current_runtime_level ) THEN
10087 FND_LOG.STRING(g_level_statement,
10088 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
10089 'Incorrect RETURN_STATUS after calling '||
10090 'ZX_TDS_TAX_LINES_POPU_PKG.cp_tsrm_val_to_zx_lines');
10091 FND_LOG.STRING(g_level_statement,
10092 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
10093 'RETURN_STATUS = ' || x_return_status);
10094 FND_LOG.STRING(g_level_statement,
10095 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
10096 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
10097 END IF;
10098 RETURN;
10099 END IF;
10100 END IF; -- line_level_action = 'CREATE', 'UPDATE', 'CREATE_TAX_ONLY'
10101
10102 END IF;
10103 IF (g_level_procedure >= g_current_runtime_level ) THEN
10104 FND_LOG.STRING(g_level_procedure,
10105 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
10106 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
10107 END IF;
10108
10109
10110 EXCEPTION
10111 WHEN OTHERS THEN
10112 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10113 l_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
10114 IF (g_level_unexpected >= g_current_runtime_level ) THEN
10115 FND_LOG.STRING(g_level_unexpected,
10116 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results',
10117 l_error_buffer);
10118 FND_LOG.STRING(g_level_unexpected,
10119 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results.END',
10120 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
10121 END IF;
10122 END get_process_results;
10123 -- End: Bug 4959835
10124
10125 /*Start: Moved from get_applicable_taxes as part of restructuring for STCC */
10126 ----------------------------------------------------------------------
10127 -- PROCEDURE
10128 -- handle_update_scenarios
10129 --
10130 -- DESCRIPTION
10131 --
10132 -- This procedure populates the appropriate cache structures
10133 -- and key columns of g_detail_tax_lines_tbl when the
10134 -- transaction line level action is 'Update'
10135 --
10136 -- IN
10137 -- p_row_num
10138 -- p_tax_regime_code
10139 -- p_tax
10140 -- p_trx_line_index
10141 -- p_event_class_rec
10142 -- p_tax_date
10143 -- p_tax_determine_date
10144 -- p_tax_point_date
10145 --
10146 -- OUT NOCOPY x_return_status
10147 -- x_self_assessed_flag
10148 -- x_tax_amt_included_flag
10149 -- x_tax_jurisdiction_id
10150 -- x_tax_jurisdiction_code
10151 --
10152 -- Key Columns:
10153 -- tax_line_id,
10154 -- last_manual_entry,
10155 -- tax_status_code,
10156 -- orig_tax_status_id,
10157 -- orig_tax_status_code,
10158 -- tax_rate_code,
10159 -- tax_rate,
10160 -- orig_tax_rate_id,
10161 -- orig_tax_rate_code,
10162 -- orig_tax_rate,
10163 -- tax_amt,
10164 -- orig_tax_amt,
10165 -- taxable_amt,
10166 -- orig_taxable_amt,
10167 -- line_amt,
10168 -- self_assessed_flag,
10169 -- tax_amt_included_flag,
10170 -- tax_jurisdiction_id,
10171 -- tax_jurisdiction_code,
10172 -- orig_self_assessed_flag,
10173 -- orig_tax_amt_included_flag,
10174 -- orig_tax_jurisdiction_id,
10175 -- orig_tax_jurisdiction_code,
10176 -- unrounded_taxable_amt,
10177 -- unrounded_tax_amt,
10178 -- cal_tax_amt,
10179 -- associated_child_frozen_flag
10180 -- cancel_flag
10181 ----------------------------------------------------------------------
10182
10183 PROCEDURE handle_update_scenarios(
10184 p_trx_line_index IN BINARY_INTEGER,
10185 p_event_class_rec IN zx_api_pub.event_class_rec_type,
10186 p_row_num IN NUMBER,
10187 p_tax_regime_code IN zx_regimes_b.tax_regime_code%TYPE,
10188 p_tax IN zx_taxes_b.tax%TYPE,
10189 p_tax_date IN DATE,
10190 p_tax_determine_date IN DATE,
10191 p_tax_point_date IN DATE,
10192 x_self_assessed_flag OUT NOCOPY zx_lines.self_assessed_flag%TYPE,
10193 x_tax_amt_included_flag OUT NOCOPY zx_lines.tax_amt_included_flag%TYPE,
10194 x_tax_jurisdiction_id OUT NOCOPY zx_lines.tax_jurisdiction_id%TYPE,
10195 x_tax_jurisdiction_code OUT NOCOPY zx_lines.tax_jurisdiction_code%TYPE,
10196 x_return_status OUT NOCOPY VARCHAR2) IS
10197
10198 -- Local variables
10199 l_current_line_amt zx_lines.line_amt%TYPE;
10200 l_tax_line_rec zx_lines%ROWTYPE;
10201
10202 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
10203 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
10204 l_error_buffer VARCHAR2(200);
10205
10206 l_tax_class zx_rates_b.tax_class%TYPE;
10207
10208
10209 CURSOR get_key_columns_cur IS
10210 SELECT * FROM zx_lines
10211 WHERE application_id = p_event_class_rec.application_id
10212 AND entity_code = p_event_class_rec.entity_code
10213 AND event_class_code = p_event_class_rec.event_class_code
10214 AND trx_id = p_event_class_rec.trx_id
10215 AND trx_line_id =
10216 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_line_id(p_trx_line_index)
10217 AND trx_level_type =
10218 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.trx_level_type(p_trx_line_index)
10219 AND tax_regime_code = p_tax_regime_code
10220 AND tax = p_tax
10221 AND mrc_tax_line_flag = 'N'
10222 AND tax_apportionment_line_number > 0
10223 ORDER BY tax_apportionment_line_number;
10224
10225 BEGIN
10226
10227 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
10228
10229 IF (g_level_procedure >= g_current_runtime_level ) THEN
10230 FND_LOG.STRING(g_level_procedure,
10231 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.BEGIN',
10232 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(+)');
10233 END IF;
10234
10235 x_return_status := FND_API.G_RET_STS_SUCCESS;
10236
10237 -- Bug#5417753- determine tax_class value
10238 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
10239 l_tax_class := 'OUTPUT';
10240 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
10241 l_tax_class := 'INPUT';
10242 END IF;
10243
10244 OPEN get_key_columns_cur;
10245
10246 FETCH get_key_columns_cur INTO l_tax_line_rec;
10247
10248
10249 IF get_key_columns_cur%FOUND THEN
10250
10251 x_self_assessed_flag := l_tax_line_rec.self_assessed_flag;
10252 x_tax_amt_included_flag := l_tax_line_rec.tax_amt_included_flag;
10253 x_tax_jurisdiction_id := l_tax_line_rec.tax_jurisdiction_id;
10254 x_tax_jurisdiction_code := l_tax_line_rec.tax_jurisdiction_code;
10255
10256 IF l_tax_line_rec.cancel_flag = 'Y' THEN
10257 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_row_num) :=
10258 l_tax_line_rec;
10259 IF (g_level_procedure >= g_current_runtime_level ) THEN
10260 FND_LOG.STRING(g_level_procedure,
10261 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10262 'Found a canceled tax line for same Tax Regime and Tax');
10263 FND_LOG.STRING(g_level_procedure,
10264 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10265 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10266 END IF;
10267 RETURN;
10268 END IF;
10269
10270 -- bug 6906427: 1. Retain tax_line_id and associated_child_frozen_flag
10271 -- for tax only line, or associated_child_frozen_flag
10272 -- is 'N'. When associated_child_frozen_flag is 'Y',
10273 -- the tail end service will check if tax line id
10274 -- needs to be retained
10275 -- 2. Retain summary tax line id for tax only line
10276 --
10277 IF NVL(l_tax_line_rec.tax_only_line_flag, 'N') = 'Y' THEN
10278
10279 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10280 p_row_num).tax_line_id := l_tax_line_rec.tax_line_id;
10281 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10282 p_row_num).associated_child_frozen_flag :=
10283 l_tax_line_rec.associated_child_frozen_flag;
10284 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10285 p_row_num).summary_tax_line_id := l_tax_line_rec.summary_tax_line_id;
10286
10287 ELSIF NVL(l_tax_line_rec.associated_child_frozen_flag, 'N') = 'N' THEN
10288
10289 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10290 p_row_num).tax_line_id := l_tax_line_rec.tax_line_id;
10291 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10292 p_row_num).associated_child_frozen_flag :=
10293 l_tax_line_rec.associated_child_frozen_flag;
10294
10295 END IF;
10296
10297 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10298 p_row_num).orig_self_assessed_flag :=
10299 l_tax_line_rec.orig_self_assessed_flag;
10300 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10301 p_row_num).orig_tax_amt_included_flag :=
10302 l_tax_line_rec.orig_tax_amt_included_flag;
10303 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10304 p_row_num).orig_tax_jurisdiction_id :=
10305 l_tax_line_rec.orig_tax_jurisdiction_id;
10306 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10307 p_row_num).orig_tax_jurisdiction_code :=
10308 l_tax_line_rec.orig_tax_jurisdiction_code;
10309
10310 -- bug 5633271
10311 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10312 p_row_num).overridden_flag := l_tax_line_rec.overridden_flag;
10313
10314 --Bug7339485
10315 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10316 p_row_num).TAX_RATE_TYPE := l_tax_line_rec.tax_rate_type;
10317
10318 IF (g_level_procedure >= g_current_runtime_level ) THEN
10319 FND_LOG.STRING(g_level_procedure,
10320 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10321 'Value for Ovrdn_Flg : '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_row_num).OVERRIDDEN_FLAG||
10322 ', Orig_Self_Assess_Flg : '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_row_num).ORIG_SELF_ASSESSED_FLAG||
10323 ', Orig_Incl_Tax_Flg : '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_row_num).ORIG_TAX_AMT_INCLUDED_FLAG||
10324 ', Tax_Rate_Type : '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(p_row_num).TAX_RATE_TYPE||
10325 ', Last_Manual_Entry : '||l_tax_line_rec.last_manual_entry);
10326 END IF;
10327
10328 -- Bug13619155
10329 -- Retain the value of legal_justification_text columns
10330 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10331 p_row_num).legal_justification_text1 := l_tax_line_rec.legal_justification_text1;
10332 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10333 p_row_num).legal_justification_text2 := l_tax_line_rec.legal_justification_text2;
10334 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10335 p_row_num).legal_justification_text3 := l_tax_line_rec.legal_justification_text3;
10336
10337 -- bug 5684123: 1. Set g_overridden_tax_ln_exist_flg
10338 -- 2. Prorate orig_tax_amt_tax_curr for P2P
10339 --
10340 IF NVL(l_tax_line_rec.overridden_flag, 'N') = 'Y' THEN
10341
10342 ZX_TDS_CALC_SERVICES_PUB_PKG.g_overridden_tax_ln_exist_flg := 'Y';
10343
10344
10345
10346 IF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
10347 l_current_line_amt :=
10348 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(p_trx_line_index);
10349
10350 IF l_tax_line_rec.line_amt <> 0 AND
10351 l_tax_line_rec.line_amt <> l_current_line_amt THEN
10352
10353 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10354 p_row_num).orig_tax_amt_tax_curr :=
10355 l_tax_line_rec.orig_tax_amt_tax_curr *
10356 l_current_line_amt/l_tax_line_rec.line_amt;
10357
10358 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10359 p_row_num).orig_taxable_amt_tax_curr :=
10360 l_tax_line_rec.orig_taxable_amt_tax_curr *
10361 l_current_line_amt/l_tax_line_rec.line_amt;
10362 ELSE /* Bug 5684123 */
10363 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10364 p_row_num).orig_tax_amt_tax_curr :=
10365 l_tax_line_rec.orig_tax_amt_tax_curr;
10366 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10367 p_row_num).orig_taxable_amt_tax_curr :=
10368 l_tax_line_rec.orig_taxable_amt_tax_curr;
10369 END IF;
10370 ELSE
10371 -- bug 5636132
10372 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10373 p_row_num).orig_tax_amt_tax_curr :=
10374 l_tax_line_rec.orig_tax_amt_tax_curr;
10375 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10376 p_row_num).orig_taxable_amt_tax_curr :=
10377 l_tax_line_rec.orig_taxable_amt_tax_curr;
10378 END IF; -- p_event_class_rec.prod_family_grp_code = 'P2P'
10379 END IF; -- overridden_flag = 'Y'
10380
10381 IF l_tax_line_rec.last_manual_entry = 'STATUSTORATE' THEN
10382
10383 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10384 p_row_num).last_manual_entry := 'TAX_STATUS';
10385 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10386 p_row_num).tax_status_code := l_tax_line_rec.tax_status_code;
10387 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10388 p_row_num).orig_tax_status_code:=l_tax_line_rec.orig_tax_status_code;
10389 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10390 p_row_num).orig_tax_status_id := l_tax_line_rec.orig_tax_status_id;
10391
10392 -- populate tax_status_id
10393 --
10394 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
10395 p_tax,
10396 p_tax_regime_code,
10397 l_tax_line_rec.tax_status_code,
10398 p_tax_determine_date,
10399 l_tax_status_rec,
10400 x_return_status,
10401 l_error_buffer);
10402
10403 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10404 IF (g_level_error >= g_current_runtime_level ) THEN
10405 FND_LOG.STRING(g_level_error,
10406 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10407 'Incorrect return_status after calling '||
10408 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info.');
10409 FND_LOG.STRING(g_level_error,
10410 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10411 'RETURN_STATUS = ' || x_return_status);
10412 FND_LOG.STRING(g_level_error,
10413 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10414 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10415 END IF;
10416 CLOSE get_key_columns_cur;
10417 RETURN;
10418 END IF;
10419
10420 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10421 p_row_num).tax_status_id :=
10422 l_tax_status_rec.tax_status_id;
10423
10424 ELSIF l_tax_line_rec.last_manual_entry = 'TAX_RATE_CODE' THEN
10425
10426 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10427 p_row_num).last_manual_entry := 'TAX_RATE_CODE';
10428 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10429 p_row_num).tax_status_code := l_tax_line_rec.tax_status_code;
10430 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10431 p_row_num).orig_tax_status_code:=l_tax_line_rec.orig_tax_status_code;
10432 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10433 p_row_num).orig_tax_status_id := l_tax_line_rec.orig_tax_status_id;
10434 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10435 p_row_num).tax_rate_code := l_tax_line_rec.tax_rate_code;
10436 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10437 p_row_num).orig_tax_rate_code := l_tax_line_rec.orig_tax_rate_code;
10438 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10439 p_row_num).orig_tax_rate_id := l_tax_line_rec.orig_tax_rate_id;
10440 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10441 p_row_num).orig_tax_rate := l_tax_line_rec.orig_tax_rate;
10442
10443 -- populate tax_status_id
10444 --
10445 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
10446 p_tax,
10447 p_tax_regime_code,
10448 l_tax_line_rec.tax_status_code,
10449 p_tax_determine_date,
10450 l_tax_status_rec,
10451 x_return_status,
10452 l_error_buffer);
10453
10454 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10455 IF (g_level_error >= g_current_runtime_level ) THEN
10456 FND_LOG.STRING(g_level_error,
10457 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10458 'Incorrect return_status after calling '||
10459 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info.');
10460 FND_LOG.STRING(g_level_error,
10461 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10462 'RETURN_STATUS = ' || x_return_status);
10463 FND_LOG.STRING(g_level_error,
10464 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10465 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10466 END IF;
10467 CLOSE get_key_columns_cur;
10468 RETURN;
10469 END IF;
10470
10471 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10472 p_row_num).tax_status_id :=
10473 l_tax_status_rec.tax_status_id;
10474
10475 -- validate and populate tax_rate_id
10476 --
10477 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
10478 p_tax_regime_code,
10479 p_tax,
10480 x_tax_jurisdiction_code,
10481 l_tax_line_rec.tax_status_code,
10482 l_tax_line_rec.tax_rate_code,
10483 p_tax_determine_date,
10484 l_tax_class,
10485 l_tax_rate_rec,
10486 x_return_status,
10487 l_error_buffer);
10488
10489 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10490 IF (g_level_error >= g_current_runtime_level ) THEN
10491 FND_LOG.STRING(g_level_error,
10492 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10493 'Incorrect return_status after calling '||
10494 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info.');
10495 FND_LOG.STRING(g_level_error,
10496 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10497 'RETURN_STATUS = ' || x_return_status);
10498 FND_LOG.STRING(g_level_error,
10499 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10500 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10501 END IF;
10502 CLOSE get_key_columns_cur;
10503 RETURN;
10504 END IF;
10505
10506 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10507 p_row_num).tax_rate_id := l_tax_rate_rec.tax_rate_id;
10508
10509 ELSIF l_tax_line_rec.last_manual_entry = 'TAX_RATE' THEN
10510
10511 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10512 p_row_num).last_manual_entry := 'TAX_RATE';
10513 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10514 p_row_num).tax_status_code := l_tax_line_rec.tax_status_code;
10515 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10516 p_row_num).orig_tax_status_code:=l_tax_line_rec.orig_tax_status_code;
10517 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10518 p_row_num).orig_tax_status_id := l_tax_line_rec.orig_tax_status_id;
10519 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10520 p_row_num).tax_rate_code := l_tax_line_rec.tax_rate_code;
10521 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10522 p_row_num).tax_rate := l_tax_line_rec.tax_rate;
10523 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10524 p_row_num).orig_tax_rate_code := l_tax_line_rec.orig_tax_rate_code;
10525 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10526 p_row_num).orig_tax_rate_id := l_tax_line_rec.orig_tax_rate_id;
10527 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10528 p_row_num).orig_tax_rate := l_tax_line_rec.orig_tax_rate;
10529
10530 -- populate tax_status_id
10531 --
10532 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
10533 p_tax,
10534 p_tax_regime_code,
10535 l_tax_line_rec.tax_status_code,
10536 p_tax_determine_date,
10537 l_tax_status_rec,
10538 x_return_status,
10539 l_error_buffer);
10540
10541 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10542 IF (g_level_error >= g_current_runtime_level ) THEN
10543 FND_LOG.STRING(g_level_error,
10544 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10545 'Incorrect return_status after calling '||
10546 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info.');
10547 FND_LOG.STRING(g_level_error,
10548 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10549 'RETURN_STATUS = ' || x_return_status);
10550 FND_LOG.STRING(g_level_error,
10551 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10552 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10553 END IF;
10554 CLOSE get_key_columns_cur;
10555 RETURN;
10556 END IF;
10557
10558 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10559 p_row_num).tax_status_id :=
10560 l_tax_status_rec.tax_status_id;
10561
10562 -- validate and populate tax_rate_id
10563 --
10564 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
10565 p_tax_regime_code,
10566 p_tax,
10567 x_tax_jurisdiction_code,
10568 l_tax_line_rec.tax_status_code,
10569 l_tax_line_rec.tax_rate_code,
10570 p_tax_determine_date,
10571 l_tax_class,
10572 l_tax_rate_rec,
10573 x_return_status,
10574 l_error_buffer);
10575
10576 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10577 IF (g_level_error >= g_current_runtime_level ) THEN
10578 FND_LOG.STRING(g_level_error,
10579 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10580 'Incorrect return_status after calling '||
10581 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info.');
10582 FND_LOG.STRING(g_level_error,
10583 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10584 'RETURN_STATUS = ' || x_return_status);
10585 FND_LOG.STRING(g_level_error,
10586 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10587 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10588 END IF;
10589 CLOSE get_key_columns_cur;
10590 RETURN;
10591 END IF;
10592
10593 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10594 p_row_num).tax_rate_id := l_tax_rate_rec.tax_rate_id;
10595
10596 ELSIF l_tax_line_rec.last_manual_entry = 'TAX_AMOUNT' THEN
10597
10598 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10599 p_row_num).last_manual_entry := 'TAX_AMOUNT';
10600 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10601 p_row_num).tax_status_code := l_tax_line_rec.tax_status_code;
10602 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10603 p_row_num).orig_tax_status_code :=l_tax_line_rec.orig_tax_status_code;
10604 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10605 p_row_num).orig_tax_status_id := l_tax_line_rec.orig_tax_status_id;
10606 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10607 p_row_num).tax_rate_code := l_tax_line_rec.tax_rate_code;
10608 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10609 p_row_num).tax_rate := l_tax_line_rec.tax_rate;
10610 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10611 p_row_num).orig_tax_rate_code := l_tax_line_rec.orig_tax_rate_code;
10612 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10613 p_row_num).orig_tax_rate_id := l_tax_line_rec.orig_tax_rate_id;
10614 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10615 p_row_num).orig_tax_rate := l_tax_line_rec.orig_tax_rate;
10616 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10617 p_row_num).orig_tax_amt := l_tax_line_rec.orig_tax_amt;
10618 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10619 p_row_num).orig_taxable_amt := l_tax_line_rec.orig_taxable_amt;
10620
10621 -- bug 5684123: move to the top.-- bug 5636132,
10622 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10623 -- p_row_num).orig_tax_amt_tax_curr :=
10624 -- l_tax_line_rec.orig_tax_amt_tax_curr;
10625 -- ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10626 -- p_row_num).orig_taxable_amt_tax_curr :=
10627 -- l_tax_line_rec.orig_taxable_amt_tax_curr;
10628
10629
10630
10631 -- bug 5633271
10632 --
10633 -- populate taxable_basis_formula and tax_calculation_formula
10634 --
10635 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10636 p_row_num).tax_calculation_formula :=
10637 l_tax_line_rec.tax_calculation_formula;
10638 -- Added IF condition to handle taxable_basis_formula mismatch --
10639 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10640 p_row_num).manually_entered_flag = 'Y' THEN
10641 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10642 p_row_num).taxable_basis_formula := 'PRORATED_TB';
10643 ELSE
10644 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10645 p_row_num).taxable_basis_formula :=
10646 l_tax_line_rec.taxable_basis_formula;
10647 END IF;
10648
10649 -- populate tax_status_id
10650 --
10651 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
10652 p_tax,
10653 p_tax_regime_code,
10654 l_tax_line_rec.tax_status_code,
10655 p_tax_determine_date,
10656 l_tax_status_rec,
10657 x_return_status,
10658 l_error_buffer);
10659
10660 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10661 IF (g_level_error >= g_current_runtime_level ) THEN
10662 FND_LOG.STRING(g_level_error,
10663 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10664 'Incorrect return_status after calling '||
10665 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info.');
10666 FND_LOG.STRING(g_level_error,
10667 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10668 'RETURN_STATUS = ' || x_return_status);
10669 FND_LOG.STRING(g_level_error,
10670 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10671 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10672 END IF;
10673 CLOSE get_key_columns_cur;
10674 RETURN;
10675 END IF;
10676
10677 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10678 p_row_num).tax_status_id :=
10679 l_tax_status_rec.tax_status_id;
10680
10681 -- validate and populate tax_rate_id
10682 --
10683 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
10684 p_tax_regime_code,
10685 p_tax,
10686 x_tax_jurisdiction_code,
10687 l_tax_line_rec.tax_status_code,
10688 l_tax_line_rec.tax_rate_code,
10689 p_tax_determine_date,
10690 l_tax_class,
10691 l_tax_rate_rec,
10692 x_return_status,
10693 l_error_buffer);
10694
10695 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10696 IF (g_level_error >= g_current_runtime_level ) THEN
10697 FND_LOG.STRING(g_level_error,
10698 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10699 'Incorrect return_status after calling '||
10700 'ZX_TDS_UTILITIES_PKG.get_tax_rate_info.');
10701 FND_LOG.STRING(g_level_error,
10702 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10703 'RETURN_STATUS = ' || x_return_status);
10704 FND_LOG.STRING(g_level_error,
10705 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10706 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10707 END IF;
10708 CLOSE get_key_columns_cur;
10709 RETURN;
10710 END IF;
10711
10712 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10713 p_row_num).tax_rate_id := l_tax_rate_rec.tax_rate_id;
10714
10715 -- prorate tax amount and taxable amount
10716 --
10717 l_current_line_amt :=
10718 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.line_amt(
10719 p_trx_line_index);
10720
10721 IF l_tax_line_rec.line_amt <> 0 THEN
10722 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10723 p_row_num).unrounded_tax_amt :=
10724 l_tax_line_rec.unrounded_tax_amt*l_current_line_amt/l_tax_line_rec.line_amt;
10725 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10726 p_row_num).unrounded_taxable_amt :=
10727 l_tax_line_rec.unrounded_taxable_amt*l_current_line_amt/l_tax_line_rec.line_amt;
10728
10729 -- set tax_amt to NULL
10730 --
10731 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10732 p_row_num).tax_amt := NULL;
10733
10734 ELSE
10735 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10736 p_row_num).unrounded_tax_amt := l_tax_line_rec.unrounded_tax_amt;
10737 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10738 p_row_num).unrounded_taxable_amt
10739 := l_tax_line_rec.unrounded_taxable_amt;
10740 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10741 p_row_num).tax_amt := l_tax_line_rec.tax_amt;
10742 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10743 p_row_num).taxable_amt := l_tax_line_rec.taxable_amt;
10744 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10745 p_row_num).cal_tax_amt := l_tax_line_rec.cal_tax_amt;
10746
10747 END IF;
10748
10749 END IF;
10750
10751 ELSIF get_key_columns_cur%NOTFOUND THEN
10752 /*
10753 * will be populated by pop_tax_line_for_trx_line
10754 * SELECT zx_lines_s.NEXTVAL
10755 * INTO ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10756 * p_row_num).tax_line_id
10757 * FROM dual;
10758 */
10759
10760 IF (g_level_statement >= g_current_runtime_level ) THEN
10761 FND_LOG.STRING(g_level_statement,
10762 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10763 'get_key_columns_cur NOTFOUND..');
10764 END IF;
10765
10766 NULL;
10767 END IF;
10768
10769 CLOSE get_key_columns_cur;
10770
10771 IF (g_level_procedure >= g_current_runtime_level ) THEN
10772 FND_LOG.STRING(g_level_procedure,
10773 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.BEGIN',
10774 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10775 END IF;
10776
10777 EXCEPTION
10778 WHEN OTHERS THEN
10779 CLOSE get_key_columns_cur;
10780 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10781 l_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
10782 IF (g_level_unexpected >= g_current_runtime_level ) THEN
10783 FND_LOG.STRING(g_level_unexpected,
10784 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios',
10785 l_error_buffer);
10786 FND_LOG.STRING(g_level_unexpected,
10787 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios.END',
10788 'ZX_TDS_APPLICABILITY_DETM_PKG.handle_update_scenarios(-)');
10789 END IF;
10790 END handle_update_scenarios;
10791
10792 /*Start: Moved from get_applicable_taxes as part of restructuring for STCC */
10793 ----------------------------------------------------------------------
10794 -- PROCEDURE
10795 -- enforce_tax_from_ref_doc
10796 --
10797 -- DESCRIPTION
10798 --
10799 -- This procedure obtains the tax details from reference
10800 -- docs and populates g_detail_tax_lines_tbl.
10801 --
10802 --
10803 -- IN
10804 -- p_begin_index
10805 -- p_end_index
10806 -- p_trx_line_index
10807 --
10808 -- OUT NOCOPY x_return_status
10809 --
10810
10811 PROCEDURE enforce_tax_from_ref_doc(
10812 p_begin_index IN BINARY_INTEGER,
10813 p_end_index IN BINARY_INTEGER,
10814 p_trx_line_index IN BINARY_INTEGER,
10815 x_return_status OUT NOCOPY VARCHAR2) IS
10816
10817 -- Local variables
10818 i NUMBER;
10819 l_tax_status_rec ZX_TDS_UTILITIES_PKG.zx_status_info_rec;
10820 l_error_buffer VARCHAR2(200);
10821
10822 -- Cursor definitions
10823 CURSOR enforce_rate_code_from_ref_doc(
10824 c_tax zx_lines.tax%TYPE,
10825 c_tax_regime_code zx_lines.tax_regime_code%TYPE) IS
10826 SELECT tax_status_code,
10827 tax_rate_code,
10828 line_amt,
10829 tax_amt,
10830 taxable_amt,
10831 -- nipatel bug 6648042
10832 tax_apportionment_line_number
10833 -- nipatel bug 6648042
10834 FROM zx_lines
10835 WHERE application_id =
10836 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_application_id(p_trx_line_index)
10837 AND event_class_code =
10838 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_event_class_code(p_trx_line_index)
10839 AND entity_code =
10840 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_entity_code(p_trx_line_index)
10841 AND trx_id =
10842 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_id(p_trx_line_index)
10843 AND trx_line_id =
10844 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_line_id(p_trx_line_index)
10845 AND trx_level_type =
10846 ZX_GLOBAL_STRUCTURES_PKG.trx_line_dist_tbl.ref_doc_trx_level_type(p_trx_line_index)
10847 AND tax_regime_code = c_tax_regime_code
10848 AND tax = c_tax
10849 AND cancel_flag <> 'Y'
10850 AND mrc_tax_line_flag = 'N';
10851
10852 BEGIN
10853
10854 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
10855
10856 IF (g_level_procedure >= g_current_runtime_level ) THEN
10857 FND_LOG.STRING(g_level_procedure,
10858 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc.BEGIN',
10859 'ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc(+)');
10860 END IF;
10861
10862 x_return_status := FND_API.G_RET_STS_SUCCESS;
10863
10864 FOR i IN NVL(p_begin_index, 1) .. NVL(p_end_index, 0) LOOP
10865
10866 IF g_level_statement >= g_current_runtime_level THEN
10867 FND_LOG.STRING(g_level_statement,
10868 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10869 'Processing for Tax Line Index = '||TO_CHAR(i));
10870 END IF;
10871
10872 -- Bug 12870975 : Added code to skip the processing for Zero Amount reference tax line
10873 IF ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).other_doc_source = 'REFERENCE' AND
10874 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_tax_amt = 0 AND
10875 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).unrounded_taxable_amt = 0 AND
10876 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).manually_entered_flag = 'Y' AND
10877 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).freeze_until_overridden_flag ='Y'
10878 THEN
10879 IF g_level_statement >= g_current_runtime_level THEN
10880 FND_LOG.STRING(g_level_statement,
10881 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10882 'This is Zero Amount Reference Tax Line. Do Nothing.');
10883 END IF;
10884 NULL;
10885
10886 ELSE
10887 IF g_level_statement >= g_current_runtime_level THEN
10888 FND_LOG.STRING(g_level_statement,
10889 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10890 'Get Tax Status and Tax Rate Code from Reference Doc for '||
10891 'Tax Regime '||ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_regime_code||
10892 ' and Tax '|| ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax);
10893 END IF;
10894
10895 OPEN enforce_rate_code_from_ref_doc(
10896 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax,
10897 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_regime_code);
10898
10899 FETCH enforce_rate_code_from_ref_doc INTO
10900 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_code,
10901 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_rate_code,
10902 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10903 i).other_doc_line_amt,
10904 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10905 i).other_doc_line_tax_amt,
10906 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10907 i).other_doc_line_taxable_amt,
10908 -- nipatel bug 6648042
10909 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10910 i).tax_apportionment_line_number;
10911 -- nipatel bug 6648042
10912
10913 IF enforce_rate_code_from_ref_doc%FOUND THEN
10914
10915 -- populate copied_from_other_doc_flag and other_doc_source
10916 --
10917 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10918 i).copied_from_other_doc_flag := 'Y';
10919 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10920 i).other_doc_source := 'REFERENCE';
10921
10922 -- bugfix 5176149:populate tax_status_id
10923 --
10924 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
10925 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax,
10926 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_regime_code,
10927 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_status_code,
10928 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(i).tax_determine_date,
10929 l_tax_status_rec,
10930 x_return_status,
10931 l_error_buffer);
10932
10933 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10934 IF (g_level_statement >= g_current_runtime_level ) THEN
10935 FND_LOG.STRING(g_level_statement,
10936 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10937 'Incorrect return_status after calling ' ||
10938 'ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info');
10939 FND_LOG.STRING(g_level_statement,
10940 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10941 'RETURN_STATUS = ' || x_return_status);
10942 FND_LOG.STRING(g_level_statement,
10943 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc.END',
10944 'ZX_TDS_APPLICABILITY_DETM_PKG.get_process_results(-)');
10945 END IF;
10946 RETURN;
10947 END IF;
10948
10949 ZX_TDS_CALC_SERVICES_PUB_PKG.g_detail_tax_lines_tbl(
10950 i).tax_status_id := l_tax_status_rec.tax_status_id;
10951
10952 ELSE
10953 IF g_level_statement >= g_current_runtime_level THEN
10954 FND_LOG.STRING(g_level_statement,
10955 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10956 'enforce_tax_from_ref_doc_flag is turned on, but tax status'||
10957 'code and tax rate code are not available from reference doc.');
10958 END IF;
10959 END IF;
10960
10961 CLOSE enforce_rate_code_from_ref_doc;
10962 END IF;
10963
10964 END LOOP; -- i IN NVL(x_begin_index, -1) .. NVL(x_end_index, 0)
10965
10966 IF (g_level_procedure >= g_current_runtime_level ) THEN
10967 FND_LOG.STRING(g_level_procedure,
10968 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc.END',
10969 'ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc(-)');
10970 END IF;
10971
10972 EXCEPTION
10973 WHEN NO_DATA_FOUND THEN
10974 x_return_status := FND_API.G_RET_STS_ERROR;
10975 l_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
10976 IF (g_level_error >= g_current_runtime_level ) THEN
10977 FND_LOG.STRING(g_level_error,
10978 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10979 l_error_buffer);
10980 FND_LOG.STRING(g_level_error,
10981 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc.END',
10982 'ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc(-)');
10983 END IF;
10984
10985 WHEN OTHERS THEN
10986 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
10987 l_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
10988 IF (g_level_unexpected >= g_current_runtime_level ) THEN
10989 FND_LOG.STRING(g_level_unexpected,
10990 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc',
10991 l_error_buffer);
10992 FND_LOG.STRING(g_level_unexpected,
10993 'ZX.PLSQL.ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc.END',
10994 'ZX_TDS_APPLICABILITY_DETM_PKG.enforce_tax_from_ref_doc(-)');
10995 END IF;
10996 END enforce_tax_from_ref_doc;
10997
10998 END ZX_TDS_APPLICABILITY_DETM_PKG;
10999