[Home] [Help]
PACKAGE BODY: APPS.ZX_TDS_OFFSET_TAX_DETM_PKG
Source
1 package body ZX_TDS_OFFSET_TAX_DETM_PKG as
2 /* $Header: zxdioffsettxpkgb.pls 120.43.12010000.2 2008/11/12 12:22:45 spasala ship $ */
3
4 PROCEDURE get_offset_info(
5 p_tax_rate_code IN ZX_RATES_B.TAX_RATE_CODE%TYPE,
6 p_tax IN ZX_TAXES_B.TAX%TYPE,
7 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
8 p_tax_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
9 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
10 p_tax_jurisdiction_code IN ZX_JURISDICTIONS_B.tax_jurisdiction_code%TYPE,
11 p_tax_class IN ZX_RATES_B.TAX_CLASS%TYPE,
12 p_offset_tax_rate_id OUT NOCOPY ZX_RATES_B.TAX_RATE_ID%TYPE,
13 p_tax_rate OUT NOCOPY ZX_LINES.TAX_RATE%TYPE,
14 p_return_status OUT NOCOPY VARCHAR2,
15 p_error_buffer OUT NOCOPY VARCHAR2);
16
17 PROCEDURE set_null_columns(
18 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE);
19
20 PROCEDURE set_flg_columns(
21 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE);
22
23 PROCEDURE set_amt_columns(
24 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
25 p_parent_tax_rate IN VARCHAR2,
26 p_initial_tax_rate IN NUMBER,
27 p_return_status OUT NOCOPY VARCHAR2,
28 p_error_buffer OUT NOCOPY VARCHAR2);
29
30
31 PROCEDURE get_tax_status_id(
32 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
33 p_tax IN ZX_TAXES_B.TAX%TYPE,
34 p_tax_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
35 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
36 p_tax_status_id OUT NOCOPY ZX_STATUS_B.TAX_STATUS_ID%TYPE,
37 p_return_status OUT NOCOPY VARCHAR2,
38 p_error_buffer OUT NOCOPY VARCHAR2);
39
40 PROCEDURE get_tax_id(
41 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
42 p_tax IN ZX_TAXES_B.TAX%TYPE,
43 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
44 p_tax_id OUT NOCOPY ZX_TAXES_B.TAX_ID%TYPE,
45 p_return_status OUT NOCOPY VARCHAR2,
46 p_error_buffer OUT NOCOPY VARCHAR2);
47
48 PROCEDURE get_old_offset_tax_line_id(
49 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
50 p_offset_tax_line_rec IN ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
51 p_old_offset_tax_line_id OUT NOCOPY ZX_LINES.TAX_LINE_ID%TYPE,
52 p_return_status OUT NOCOPY VARCHAR2,
53 p_error_buffer OUT NOCOPY VARCHAR2);
54
55 PROCEDURE create_offset_tax_line(
56 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
57 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
58 p_offset_tax_rate_code IN ZX_RATES_B.TAX_RATE_CODE%TYPE,
59 p_offset_tax_rate_id IN ZX_RATES_B.TAX_RATE_ID%TYPE,
60 p_tax_rate IN ZX_LINES.TAX_RATE%TYPE,
61 p_initial_tax_rate IN ZX_LINES.TAX_RATE%TYPE,
62 p_offset_tax IN ZX_TAXES_B.TAX%TYPE,
63 p_offset_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
64 p_return_status OUT NOCOPY VARCHAR2,
65 p_error_buffer OUT NOCOPY VARCHAR2);
66
67 g_current_runtime_level NUMBER;
68 g_level_statement CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
69 g_level_procedure CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
70 g_level_unexpected CONSTANT NUMBER := FND_LOG.LEVEL_UNEXPECTED;
71 g_level_error CONSTANT NUMBER := FND_LOG.LEVEL_ERROR;
72
73 ----------------------------------------------------------------------
74 -- PUBLIC PROCEDURE
75 -- process_offset_tax
76 --
77 -- DESCRIPTION
78 --
79 -- This procedure is the entry point to offset tax determination process
80
81 PROCEDURE process_offset_tax(
82 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
83 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
84 p_return_status OUT NOCOPY VARCHAR2,
85 p_error_buffer OUT NOCOPY VARCHAR2)
86
87 IS
88 l_tax_rate_id ZX_RATES_B.TAX_RATE_ID%TYPE;
89 l_offset_tax_rate_id ZX_RATES_B.TAX_RATE_ID%TYPE;
90 l_offset_tax_rate ZX_LINES.TAX_RATE%TYPE;
91 l_initial_tax_rate ZX_LINES.TAX_RATE%TYPE;
92 l_offset_tax ZX_TAXES_B.TAX%TYPE;
93 l_offset_tax_regime_code ZX_REGIMES_B.TAX_REGIME_CODE%TYPE;
94 l_offset_tax_status_code ZX_STATUS_B.TAX_STATUS_CODE%TYPE;
95 l_offset_tax_rate_code ZX_RATES_B.OFFSET_TAX_RATE_CODE%TYPE;
96 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
97 l_tax_class ZX_RATES_B.TAX_CLASS%TYPE;
98
99 BEGIN
100 g_current_runtime_level := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
101
102 IF (g_level_procedure >= g_current_runtime_level ) THEN
103 FND_LOG.STRING(g_level_procedure,
104 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax.BEGIN',
105 'ZX_TDS_OFFSET_TAX_DETM_PKG: process_offset_tax(+)');
106 END IF;
107
108 p_return_status := FND_API.G_RET_STS_SUCCESS;
109 p_error_buffer := NULL;
110
111 -- Bug#5417753- determine tax_class value
112 IF p_event_class_rec.prod_family_grp_code = 'O2C' THEN
113 l_tax_class := 'OUTPUT';
114 ELSIF p_event_class_rec.prod_family_grp_code = 'P2P' THEN
115 l_tax_class := 'INPUT';
116 END IF;
117
118 l_tax_rate_id := p_offset_tax_line_rec.tax_rate_id;
119 l_offset_tax_regime_code := p_offset_tax_line_rec.tax_regime_code;
120
121
122 IF ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl.EXISTS(l_tax_rate_id) THEN
123 l_offset_tax_rate_code :=
124 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl(l_tax_rate_id).offset_tax_rate_code;
125 l_offset_tax_status_code :=
126 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl(l_tax_rate_id).offset_status_code;
127 l_offset_tax :=
128 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl(l_tax_rate_id).offset_tax;
129
130 l_initial_tax_rate :=
131 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl(l_tax_rate_id).percentage_rate;
132 ELSE
133
134 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
135 p_tax_rate_id => l_tax_rate_id,
136 p_tax_rate_rec => l_tax_rate_rec,
137 p_return_status => p_return_status,
138 p_error_buffer => p_error_buffer
139 );
140 IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
141 IF (g_level_error >= g_current_runtime_level ) THEN
142 FND_LOG.STRING(g_level_error,
143 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax',
144 'Incorrect status returned from ZX_TDS_UTILITIES_PKG.get_tax_rate_info'||
145 'p_return_status = ' || p_return_status);
146 FND_LOG.STRING(g_level_error,
147 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax',
148 'p_error_buffer = ' || p_error_buffer);
149 END IF;
150 RETURN;
151 END IF;
152
153 ZX_TDS_UTILITIES_PKG.g_tax_rate_info_tbl(l_tax_rate_id) := l_tax_rate_rec;
154
155 l_offset_tax_rate_code := l_tax_rate_rec.offset_tax_rate_code;
156 l_offset_tax_status_code := l_tax_rate_rec.offset_status_code;
157 l_offset_tax := l_tax_rate_rec.offset_tax;
158 l_initial_tax_rate := l_tax_rate_rec.percentage_rate;
159
160 END IF;
161
162 get_offset_info(l_offset_tax_rate_code,
163 l_offset_tax,
164 l_offset_tax_regime_code,
165 l_offset_tax_status_code,
166 p_offset_tax_line_rec.tax_determine_date,
167 p_offset_tax_line_rec.tax_jurisdiction_code,
168 l_tax_class,
169 l_offset_tax_rate_id,
170 l_offset_tax_rate,
171 p_return_status,
172 p_error_buffer);
173
174 IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
175 --
176 -- bug#4893261- need to seed ZX_OFFSET_RATE_NOT_FOUND
177 --
178 IF p_return_status = FND_API.G_RET_STS_ERROR THEN
179 FND_MESSAGE.SET_NAME('ZX','ZX_OFFSET_RATE_NOT_FOUND');
180 FND_MESSAGE.SET_TOKEN('TAX_REGIME', l_offset_tax_regime_code);
181 FND_MESSAGE.SET_TOKEN('TAX',l_offset_tax);
182 FND_MESSAGE.SET_TOKEN('TAX_STATUS',l_offset_tax_status_code);
183 FND_MESSAGE.SET_TOKEN('TAX_RATE_CODE', l_offset_tax_rate_code);
184
185 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_line_id :=
186 p_offset_tax_line_rec.trx_line_id;
187 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec.trx_level_type :=
188 p_offset_tax_line_rec.trx_level_type;
189
190 ZX_API_PUB.add_msg(
191 ZX_TDS_CALC_SERVICES_PUB_PKG.g_msg_context_info_rec);
192
193 END IF;
194 RETURN;
195 END IF;
196
197 IF (g_level_procedure >= g_current_runtime_level ) THEN
198
199 FND_LOG.STRING(g_level_procedure,
200 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax.END',
201 'initial tax rate '||to_char(l_initial_tax_rate));
202 END IF;
203 create_offset_tax_line(p_offset_tax_line_rec,
204 p_event_class_rec,
205 l_offset_tax_rate_code,
206 l_offset_tax_rate_id,
207 l_offset_tax_rate,
208 l_initial_tax_rate,
209 l_offset_tax,
210 l_offset_tax_status_code,
211 p_return_status,
212 p_error_buffer);
213 IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
214 RETURN;
215 END IF;
216
217 IF (g_level_procedure >= g_current_runtime_level ) THEN
218
219 FND_LOG.STRING(g_level_procedure,
220 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax.END',
221 'ZX_TDS_OFFSET_TAX_DETM_PKG: process_offset_tax(-)'||p_return_status);
222 END IF;
223
224 EXCEPTION
225 WHEN OTHERS THEN
226 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
227 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
228
229 IF (g_level_unexpected >= g_current_runtime_level ) THEN
230 FND_LOG.STRING(g_level_unexpected,
231 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.process_offset_tax',
232 p_error_buffer);
233 END IF;
234
235 END process_offset_tax;
236
237 -----------------------------------------------------------------------
238 -- PRIVATE PROCEDURE
239 -- get_offset_info
240 --
241 -- DESCRIPTION
242 -- This procedure gets offset tax info from ZX_RATES_B
243 --
244 PROCEDURE get_offset_info(
245 p_tax_rate_code IN ZX_RATES_B.TAX_RATE_CODE%TYPE,
246 p_tax IN ZX_TAXES_B.TAX%TYPE,
247 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
248 p_tax_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
249 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
250 p_tax_jurisdiction_code IN ZX_JURISDICTIONS_B.tax_jurisdiction_code%TYPE,
251 p_tax_class IN ZX_RATES_B.TAX_CLASS%TYPE,
252 p_offset_tax_rate_id OUT NOCOPY ZX_RATES_B.TAX_RATE_ID%TYPE,
253 p_tax_rate OUT NOCOPY ZX_LINES.TAX_RATE%TYPE,
254 p_return_status OUT NOCOPY VARCHAR2,
255 p_error_buffer OUT NOCOPY VARCHAR2)
256
257 IS
258 --l_Rate_Type_Code ZX_RATES_B.Rate_Type_Code%TYPE;
259 --l_percentage_rate ZX_RATES_B.PERCENTAGE_RATE%TYPE;
260 --l_quantity_rate ZX_RATES_B.QUANTITY_RATE%TYPE;
261 l_tax_rate_rec ZX_TDS_UTILITIES_PKG.zx_rate_info_rec_type;
262
263 /* Bug#5417753- use cache structure
264 CURSOR get_offset_info_csr
265 (c_tax_rate_code ZX_RATES_B.TAX_RATE_CODE%TYPE,
266 c_tax ZX_TAXES_B.TAX%TYPE,
267 c_tax_regime_code ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
268 c_tax_status_code ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
269 c_tax_determine_date ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE)
270 IS
271
272 SELECT tax_rate_id,
273 Rate_Type_Code,
274 percentage_rate,
275 quantity_rate
276 FROM ZX_SCO_RATES_B_V
277 WHERE tax_rate_code = c_tax_rate_code AND
278 tax = c_tax AND
279 tax_regime_code = c_tax_regime_code AND
280 tax_status_code = c_tax_status_code AND
281 active_flag = 'Y' AND
282 c_tax_determine_date >= effective_from AND
283 (c_tax_determine_date <= effective_to OR
284 effective_to IS NULL)
285 ORDER BY subscription_level_code;
286 */
287
288 BEGIN
289 IF (g_level_statement >= g_current_runtime_level ) THEN
290 FND_LOG.STRING(g_level_statement,
291 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_offset_info.BEGIN',
292 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_offset_info(+)'||
293 'p_tax_rate_code = ' || p_tax_rate_code||
294 'p_tax = ' || p_tax||
295 'p_tax_regime_code = ' || p_tax_regime_code||
296 'p_tax_jurisdiction_code = ' || p_tax_jurisdiction_code ||
297 'p_tax_class = ' || p_tax_class ||
298 'p_tax_status_code = ' || p_tax_status_code);
299
300 END IF;
301
302 p_return_status := FND_API.G_RET_STS_SUCCESS;
303
304 /* Bug#5417753- use cache structure
305 OPEN get_offset_info_csr(p_tax_rate_code,
306 p_tax,
307 p_tax_regime_code,
308 p_tax_status_code,
309 p_tax_determine_date);
310 FETCH get_offset_info_csr INTO
311 p_offset_tax_rate_id,
312 l_Rate_Type_Code,
313 l_percentage_rate,
314 l_quantity_rate;
315 IF get_offset_info_csr%NOTFOUND THEN
316 p_return_status := FND_API.G_RET_STS_ERROR;
317 p_error_buffer := 'No data found for the specified tax rate ';
318 END IF;
319 CLOSE get_offset_info_csr;
320 */
321
322 ZX_TDS_UTILITIES_PKG.get_tax_rate_info(
323 p_tax_regime_code,
324 p_tax,
325 p_tax_jurisdiction_code,
326 p_tax_status_code,
327 p_tax_rate_code,
328 p_tax_determine_date,
329 p_tax_class,
330 l_tax_rate_rec,
331 p_return_status,
332 p_error_buffer);
333
334 IF p_return_status = FND_API.G_RET_STS_SUCCESS THEN
335 p_offset_tax_rate_id := l_tax_rate_rec.tax_rate_id;
336
337 IF l_tax_rate_rec.Rate_Type_Code = 'PERCENTAGE' THEN
338 p_tax_rate := l_tax_rate_rec.percentage_rate;
339 ELSE
340 p_tax_rate := l_tax_rate_rec.quantity_rate;
341 END IF;
342 END IF;
343
344 IF (g_level_statement >= g_current_runtime_level ) THEN
345
346 FND_LOG.STRING(g_level_statement,
347 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_offset_info.END',
348 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_offset_info(-)'||
349 'p_tax_rate = ' || to_char(p_tax_rate));
350 END IF;
351
352 EXCEPTION
353 WHEN OTHERS THEN
354 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
355 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
356
357 IF (FND_LOG.LEVEL_UNEXPECTED >= g_current_runtime_level ) THEN
358 FND_LOG.STRING(FND_LOG.LEVEL_UNEXPECTED,
359 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_offset_info',
360 'p_error_buffer = ' || p_error_buffer);
361 END IF;
362 END get_offset_info;
363
364 -----------------------------------------------------------------------
365 -- PRIVATE PROCEDURE
366 -- set_null_columns
367 --
368 -- DESCRIPTION
369 -- This procedure sets the values of columns to NULL
370
371 PROCEDURE set_null_columns(
372 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE)
373 IS
374 BEGIN
375 IF (g_level_statement >= g_current_runtime_level ) THEN
376 FND_LOG.STRING(g_level_statement,
377 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_null_columns.BEGIN',
378 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_null_columns(+)');
379 END IF;
380
381 p_offset_tax_line_rec.orig_tax_status_id := NULL;
382 p_offset_tax_line_rec.orig_tax_status_code := NULL;
383 p_offset_tax_line_rec.orig_tax_rate_id := NULL;
384 p_offset_tax_line_rec.orig_tax_rate_code := NULL;
385 p_offset_tax_line_rec.orig_tax_rate := NULL;
386 p_offset_tax_line_rec.orig_taxable_amt := NULL;
387 p_offset_tax_line_rec.orig_taxable_amt_tax_curr := NULL;
388 p_offset_tax_line_rec.orig_tax_amt := NULL;
389 p_offset_tax_line_rec.orig_tax_amt_tax_curr := NULL;
390 -- p_offset_tax_line_rec.offset_tax_line_number := NULL;
391 p_offset_tax_line_rec.created_by := NULL;
392 p_offset_tax_line_rec.creation_date := NULL;
393 p_offset_tax_line_rec.tax_line_id := NULL;
394 p_offset_tax_line_rec.last_manual_entry := NULL;
395 p_offset_tax_line_rec.tax_provider_id := NULL;
396 p_offset_tax_line_rec.tax_applicability_result_id := NULL;
397 p_offset_tax_line_rec.status_result_id := NULL;
398 p_offset_tax_line_rec.rate_result_id := NULL;
399 p_offset_tax_line_rec.basis_result_id := NULL;
400 p_offset_tax_line_rec.thresh_result_id := NULL;
401 p_offset_tax_line_rec.calc_result_id := NULL;
402 p_offset_tax_line_rec.direct_rate_result_id := NULL;
403 p_offset_tax_line_rec.tax_apportionment_line_number := NULL;
404 p_offset_tax_line_rec.summary_tax_line_id := NULL;
405 p_offset_tax_line_rec.tax_hold_code := NULL;
406 p_offset_tax_line_rec.tax_hold_released_code := NULL;
407
408 IF (g_level_statement >= g_current_runtime_level ) THEN
409 FND_LOG.STRING(g_level_statement,
410 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_null_columns.END',
411 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_null_columns(-)');
412 END IF;
413
414 EXCEPTION
415 WHEN OTHERS THEN
416 IF (g_level_unexpected >= g_current_runtime_level ) THEN
417 FND_LOG.STRING(g_level_unexpected,
418 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_null_columns',
419 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
420 END IF;
421
422 END set_null_columns;
423
424 ----------------------------------------------------------------------
425 -- PRIVATE PROCEDURE
426 -- set_flg_columns
427 --
428 -- DESCRIPTION
429 -- This procedure initializes the value of flag columns
430
431 PROCEDURE set_flg_columns(
432 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE)
433 IS
434 BEGIN
435 IF (g_level_statement >= g_current_runtime_level ) THEN
436 FND_LOG.STRING(g_level_statement,
437 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_flg_columns.BEGIN',
438 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_flg_columns(+)');
439 END IF;
440
441 p_offset_tax_line_rec.Offset_Flag := 'Y'; --Bug6509867
442 p_offset_tax_line_rec.Compounding_Tax_Flag := 'N';
443 p_offset_tax_line_rec.Tax_Apportionment_Flag := 'N';
444 p_offset_tax_line_rec.Overridden_Flag := 'N';
445 p_offset_tax_line_rec.Manually_Entered_Flag := 'N';
446 p_offset_tax_line_rec.Reporting_Only_Flag := 'N';
447 p_offset_tax_line_rec.Freeze_Until_Overridden_Flag := 'N';
448 p_offset_tax_line_rec.Copied_From_Other_Doc_Flag := 'N';
449 p_offset_tax_line_rec.Recalc_Required_Flag := 'N';
450 p_offset_tax_line_rec.Settlement_Flag := 'N';
451 p_offset_tax_line_rec.Associated_Child_Frozen_Flag := 'N';
452 p_offset_tax_line_rec.Enforce_From_Natural_Acct_Flag := 'N';
453 p_offset_tax_line_rec.Historical_Flag := 'N';
454
455 -- should get from the parent line
456 -- p_offset_tax_line_rec.Process_For_Recovery_Flag := 'Y';
457
458 IF (g_level_statement >= g_current_runtime_level ) THEN
459 FND_LOG.STRING(g_level_statement,
460 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_flg_columns.END',
461 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_flg_columns(-)');
462 END IF;
463
464 EXCEPTION
465 WHEN OTHERS THEN
466
467 IF (g_level_unexpected >= g_current_runtime_level ) THEN
468 FND_LOG.STRING(g_level_unexpected,
469 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_flg_columns',
470 sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80));
471 END IF;
472
473 END set_flg_columns;
474 ----------------------------------------------------------------------
475 -- PRIVATE PROCEDURE
476 -- set_amt_columns
477 --
478 -- DESCRIPTION
479 -- This procedure populates tax amount related columns
480
481 PROCEDURE set_amt_columns(
482 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
483 p_parent_tax_rate IN VARCHAR2,
484 p_initial_tax_rate IN NUMBER,
485 p_return_status OUT NOCOPY VARCHAR2,
486 p_error_buffer OUT NOCOPY VARCHAR2
487 )
488 IS
489 l_tax_id ZX_TAXES_B.TAX_ID%TYPE;
490 l_tax_min_acct_unit ZX_TAXES_B.MINIMUM_ACCOUNTABLE_UNIT%TYPE;
491 l_tax_precision ZX_TAXES_B.TAX_PRECISION%TYPE;
492 BEGIN
493 IF (g_level_statement >= g_current_runtime_level ) THEN
494 FND_LOG.STRING(g_level_statement,
495 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_amt_columns.BEGIN',
496 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_amt_columns(+)');
497 END IF;
498
499 p_return_status := FND_API.G_RET_STS_SUCCESS;
500
501 --
502 -- taxable amounts would be same as the original tax line
503 -- do not need to change unrounded_taxable_amt,
504 -- taxable_amt, taxable_amt_tax_curr, taxable_amt_funcl_curr
505 --
506
507 --
508 -- prorated total amounts would be opposite of original tax line
509 --
510 p_offset_tax_line_rec.prd_total_tax_amt := - p_offset_tax_line_rec.prd_total_tax_amt;
511 p_offset_tax_line_rec.prd_total_tax_amt_tax_curr := - p_offset_tax_line_rec.prd_total_tax_amt_tax_curr;
512 p_offset_tax_line_rec.prd_total_tax_amt_funcl_curr := - p_offset_tax_line_rec.prd_total_tax_amt_funcl_curr;
513
514 --
515 -- check to see if need to recalculate tax related amounts
516 -- if offset tax rate is different
517 --
518
519 IF (p_offset_tax_line_rec.tax_rate + p_parent_tax_rate = 0 ) THEN
520 --
521 -- set all offset amounts to negative, no need to recalculate
522 --
523 p_offset_tax_line_rec.unrounded_tax_amt := - p_offset_tax_line_rec.unrounded_tax_amt;
524 p_offset_tax_line_rec.tax_amt := - p_offset_tax_line_rec.tax_amt;
525 p_offset_tax_line_rec.tax_amt_tax_curr := - p_offset_tax_line_rec.tax_amt_tax_curr;
526 p_offset_tax_line_rec.cal_tax_amt := p_offset_tax_line_rec.tax_amt;
527 p_offset_tax_line_rec.cal_tax_amt_tax_curr := p_offset_tax_line_rec.tax_amt_tax_curr;
528 p_offset_tax_line_rec.tax_amt_funcl_curr := - p_offset_tax_line_rec.tax_amt_funcl_curr;
529 p_offset_tax_line_rec.cal_tax_amt_funcl_curr := - p_offset_tax_line_rec.cal_tax_amt_funcl_curr;
530
531 RETURN;
532 END IF;
533
534 IF (g_level_statement >= g_current_runtime_level ) THEN
535
536 FND_LOG.STRING(g_level_statement,
537 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_amt_columns.END',
538 'initia tax rate'||to_number(p_initial_tax_rate));
539 END IF;
540
541 IF (g_level_statement >= g_current_runtime_level ) THEN
542
543 FND_LOG.STRING(g_level_statement,
544 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_amt_columns.END',
545 'offset tax rate'||to_number(p_offset_tax_line_rec.tax_rate));
546 END IF;
547 IF (p_offset_tax_line_rec.tax_rate + p_initial_tax_rate = 0 ) THEN
548 --
549 -- set all offset amounts to negative, no need to recalculate
550 --
551 p_offset_tax_line_rec.unrounded_tax_amt := - p_offset_tax_line_rec.unrounded_tax_amt;
552 p_offset_tax_line_rec.tax_amt := - p_offset_tax_line_rec.tax_amt;
553 p_offset_tax_line_rec.tax_amt_tax_curr := - p_offset_tax_line_rec.tax_amt_tax_curr;
554 p_offset_tax_line_rec.cal_tax_amt := p_offset_tax_line_rec.tax_amt;
555 p_offset_tax_line_rec.cal_tax_amt_tax_curr := p_offset_tax_line_rec.tax_amt_tax_curr;
556 p_offset_tax_line_rec.tax_amt_funcl_curr := - p_offset_tax_line_rec.tax_amt_funcl_curr;
557 p_offset_tax_line_rec.cal_tax_amt_funcl_curr := - p_offset_tax_line_rec.cal_tax_amt_funcl_curr;
558 p_offset_tax_line_rec.tax_rate := - p_parent_tax_rate;
559
560 RETURN;
561 END IF;
562 --
563 -- offset tax has a different rate, need to recalculate amounts
564 --
565
566 p_offset_tax_line_rec.unrounded_tax_amt :=
567 p_offset_tax_line_rec.unrounded_taxable_amt * p_offset_tax_line_rec.tax_rate/100;
568
569 --
570 -- tax amount
571 --
572 p_offset_tax_line_rec.tax_amt := p_offset_tax_line_rec.unrounded_tax_amt;
573
574 p_offset_tax_line_rec.tax_amt :=
575 ZX_TDS_TAX_ROUNDING_PKG.round_tax(
576 p_offset_tax_line_rec.tax_amt,
577 p_offset_tax_line_rec.Rounding_Rule_Code,
578 p_offset_tax_line_rec.minimum_accountable_unit,
579 p_offset_tax_line_rec.precision,
580 p_return_status,
581 p_error_buffer);
582
583
584 IF p_offset_tax_line_rec.mrc_tax_line_flag = 'N' THEN
585 --
586 -- tax amount tax currency
587 --
588 p_offset_tax_line_rec.tax_amt_tax_curr :=
589 p_offset_tax_line_rec.unrounded_tax_amt * p_offset_tax_line_rec.tax_currency_conversion_rate;
590
591 --
592 -- now round the tax amount tax currency
593 --
594
595 l_tax_id := p_offset_tax_line_rec.tax_id;
596 l_tax_precision := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).tax_precision;
597 l_tax_min_acct_unit := ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(l_tax_id).minimum_accountable_unit;
598
599 p_offset_tax_line_rec.tax_amt_tax_curr :=
600 ZX_TDS_TAX_ROUNDING_PKG.round_tax(
601 p_offset_tax_line_rec.tax_amt_tax_curr,
602 p_offset_tax_line_rec.Rounding_Rule_Code,
603 l_tax_min_acct_unit,
604 l_tax_precision,
605 p_return_status,
606 p_error_buffer);
607
608 IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
609 RETURN;
610 END IF;
611
612 --
613 -- functional currency
614 --
615
616 IF p_offset_tax_line_rec.currency_conversion_rate IS NOT NULL THEN
617 p_offset_tax_line_rec.tax_amt_funcl_curr :=
618 p_offset_tax_line_rec.unrounded_tax_amt * p_offset_tax_line_rec.currency_conversion_rate;
619
620 p_offset_tax_line_rec.tax_amt_funcl_curr :=
621 ZX_TDS_TAX_ROUNDING_PKG.round_tax_funcl_curr(
622 p_offset_tax_line_rec.tax_amt_funcl_curr,
623 p_offset_tax_line_rec.ledger_id,
624 p_return_status,
625 p_error_buffer);
626
627 END IF;
628 END IF;
629
630 --
631 -- calculated tax amounts
632 --
633 p_offset_tax_line_rec.cal_tax_amt := p_offset_tax_line_rec.tax_amt;
634 p_offset_tax_line_rec.cal_tax_amt_tax_curr := p_offset_tax_line_rec.tax_amt_tax_curr;
635 p_offset_tax_line_rec.cal_tax_amt_funcl_curr := p_offset_tax_line_rec.tax_amt_funcl_curr;
636
637 IF (g_level_statement >= g_current_runtime_level ) THEN
638
639 FND_LOG.STRING(g_level_statement,
640 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_amt_columns.END',
641 'ZX_TDS_OFFSET_TAX_DETM_PKG: set_amt_columns(-)'||p_return_status);
642 END IF;
643
644 EXCEPTION
645 WHEN OTHERS THEN
646 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
647 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
648
649 IF (g_level_unexpected >= g_current_runtime_level ) THEN
650 FND_LOG.STRING(g_level_unexpected,
651 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.set_amt_columns',
652 p_error_buffer);
653 END IF;
654
655 END set_amt_columns;
656 -----------------------------------------------------------------------
657 -- PRIVATE PROCEDURE
658 -- get_tax_status_id
659 --
660 -- DESCRIPTION
661 -- This procedure gets tax status id from global cache structure based on
662 -- tax regime code, tax and tax status code
663 --
664 PROCEDURE get_tax_status_id(
665 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
666 p_tax IN ZX_TAXES_B.TAX%TYPE,
667 p_tax_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
668 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
669 p_tax_status_id OUT NOCOPY ZX_STATUS_B.TAX_STATUS_ID%TYPE,
670 p_return_status OUT NOCOPY VARCHAR2,
671 p_error_buffer OUT NOCOPY VARCHAR2)
672
673 IS
674 l_status_rec ZX_TDS_UTILITIES_PKG.ZX_STATUS_INFO_REC;
675
676 BEGIN
677 IF (g_level_statement >= g_current_runtime_level ) THEN
678 FND_LOG.STRING(g_level_statement,
679 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_status_id.BEGIN',
680 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_tax_status_id(+)');
681 END IF;
682 p_return_status := FND_API.G_RET_STS_SUCCESS;
683
684 ZX_TDS_UTILITIES_PKG.get_tax_status_cache_info(
685 p_tax,
686 p_tax_regime_code,
687 p_tax_status_code,
688 p_tax_determine_date,
689 l_status_rec,
690 p_return_status,
691 p_error_buffer);
692
693 IF p_return_status = FND_API.G_RET_STS_SUCCESS THEN
694 p_tax_status_id := l_status_rec.tax_status_id;
695 END IF;
696
697 IF (g_level_statement >= g_current_runtime_level ) THEN
698
699 FND_LOG.STRING(g_level_statement,
700 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_status_id.END',
701 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_tax_status_id(-)');
702 END IF;
703
704 EXCEPTION
705 WHEN OTHERS THEN
706 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
707 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
708
709 IF (g_level_unexpected >= g_current_runtime_level ) THEN
710 FND_LOG.STRING(g_level_unexpected,
711 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_status_id',
712 p_error_buffer);
713 END IF;
714
715 END get_tax_status_id;
716 -----------------------------------------------------------------------
717 -- PRIVATE PROCEDURE
718 -- get_tax_id
719 --
720 -- DESCRIPTION
721 -- This procedure gets tax id from zx_taxes based on
722 -- tax regime code and tax
723 --
724 PROCEDURE get_tax_id(
725 p_tax_regime_code IN ZX_REGIMES_B.TAX_REGIME_CODE%TYPE,
726 p_tax IN ZX_TAXES_B.TAX%TYPE,
727 p_tax_determine_date IN ZX_DETAIL_TAX_LINES_GT.TAX_DETERMINE_DATE%TYPE,
728 p_tax_id OUT NOCOPY ZX_TAXES_B.TAX_ID%TYPE,
729 p_return_status OUT NOCOPY VARCHAR2,
730 p_error_buffer OUT NOCOPY VARCHAR2)
731
732 IS
733 l_tax_rec ZX_TDS_UTILITIES_PKG.ZX_TAX_INFO_CACHE_REC;
734 BEGIN
735 IF (g_level_statement >= g_current_runtime_level ) THEN
736 FND_LOG.STRING(g_level_statement,
737 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_id.BEGIN',
738 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_tax_id(+)');
739 END IF;
740
741 p_return_status := FND_API.G_RET_STS_SUCCESS;
742
743 ZX_TDS_UTILITIES_PKG.get_tax_cache_info(
744 p_tax_regime_code,
745 p_tax,
746 p_tax_determine_date,
747 l_tax_rec,
748 p_return_status,
749 p_error_buffer);
750
751 IF p_return_status = FND_API.G_RET_STS_SUCCESS THEN
752 p_tax_id := l_tax_rec.tax_id;
753 END IF;
754
755 IF (g_level_statement >= g_current_runtime_level ) THEN
756
757 FND_LOG.STRING(g_level_statement,
758 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_id.END',
759 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_tax_id(-)'||
760 'p_tax_id = ' || to_char(p_tax_id)||
761 'p_return_status = ' || p_return_status);
762 END IF;
763
764 EXCEPTION
765 WHEN OTHERS THEN
766 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
767 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
768
769 IF (g_level_unexpected >= g_current_runtime_level ) THEN
770 FND_LOG.STRING(g_level_unexpected,
771 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_tax_id',
772 p_error_buffer);
773 END IF;
774
775 END get_tax_id;
776
777 ----------------------------------------------------------------------
778 -- PRIVATE PROCEDURE
779 -- get_old_offset_tax_line_id
780 --
781 -- DESCRIPTION
782 --
783 -- The procedure gets the tax line id of an offset tax line
784 -- from the repository based on the value of the tax line id
785 -- it links to
786
787 PROCEDURE get_old_offset_tax_line_id(
788 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
789 p_offset_tax_line_rec IN ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
790 p_old_offset_tax_line_id OUT NOCOPY ZX_LINES.TAX_LINE_ID%TYPE,
791 p_return_status OUT NOCOPY VARCHAR2,
792 p_error_buffer OUT NOCOPY VARCHAR2)
793 IS
794
795
796 CURSOR get_old_offset_tax_line_id_csr
797 -- (c_offset_link_to_tax_line_id ZX_LINES.OFFSET_LINK_TO_TAX_LINE_ID%TYPE)
798 IS
799 SELECT tax_line_id
800 FROM ZX_LINES
801 WHERE APPLICATION_ID = p_offset_tax_line_rec.APPLICATION_ID
802 AND ENTITY_CODE = p_offset_tax_line_rec.ENTITY_CODE
803 AND EVENT_CLASS_CODE = p_offset_tax_line_rec.EVENT_CLASS_CODE
804 AND trx_id = p_offset_tax_line_rec.trx_id
805 AND trx_line_id = p_offset_tax_line_rec.trx_line_id
806 AND trx_level_type = p_offset_tax_line_rec.trx_level_type
807 AND tax_regime_code = p_offset_tax_line_rec.tax_regime_code
808 AND offset_link_to_tax_line_id = p_offset_tax_line_rec.offset_link_to_tax_line_id;
809
810 BEGIN
811 IF (g_level_statement >= g_current_runtime_level ) THEN
812 FND_LOG.STRING(g_level_statement,
813 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_old_offset_tax_line_id.BEGIN',
814 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_old_offset_tax_line_id(+)'||
815 'p_offset_link_to_tax_line_id = ' ||
816 to_char(p_offset_tax_line_rec.offset_link_to_tax_line_id));
817 END IF;
818
819 p_return_status := FND_API.G_RET_STS_SUCCESS;
820
821 OPEN get_old_offset_tax_line_id_csr;
822 FETCH get_old_offset_tax_line_id_csr INTO p_old_offset_tax_line_id;
823 IF get_old_offset_tax_line_id_csr%NOTFOUND THEN
824 --
825 -- in this case, it is the first time this tax line has offset
826 -- tax associated with it, no offset tax line has been previously
827 -- created for this line
828 --
829 p_old_offset_tax_line_id := NULL;
830 END IF;
831 CLOSE get_old_offset_tax_line_id_csr;
832
833
834 IF (g_level_statement >= g_current_runtime_level ) THEN
835
836 FND_LOG.STRING(g_level_statement,
837 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_old_offset_tax_line_id.END',
838 'ZX_TDS_OFFSET_TAX_DETM_PKG: get_old_offset_tax_line_id(-)'||
839 'p_old_offset_tax_line_id = ' ||
840 to_char(p_old_offset_tax_line_id)||
841 'p_return_status = ' || p_return_status);
842 END IF;
843
844 EXCEPTION
845 WHEN OTHERS THEN
846 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
847 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
848
849 IF (g_level_unexpected >= g_current_runtime_level ) THEN
850 FND_LOG.STRING(g_level_unexpected,
851 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.get_old_offset_tax_line_id',
852 p_error_buffer);
853 END IF;
854
855 END get_old_offset_tax_line_id;
856
857 ----------------------------------------------------------------------
858 -- PRIVATE PROCEDURE
859 -- create_offset_tax_line
860 --
861 -- DESCRIPTION
862 --
863 -- The procedure is used to create an offset tax line for a main tax line
864 -- which has offset_flag = 'Y'
865
866 PROCEDURE create_offset_tax_line(
867 p_offset_tax_line_rec IN OUT NOCOPY ZX_DETAIL_TAX_LINES_GT%ROWTYPE,
868 p_event_class_rec IN ZX_API_PUB.EVENT_CLASS_REC_TYPE,
869 p_offset_tax_rate_code IN ZX_RATES_B.TAX_RATE_CODE%TYPE,
870 p_offset_tax_rate_id IN ZX_RATES_B.TAX_RATE_ID%TYPE,
871 p_tax_rate IN ZX_LINES.TAX_RATE%TYPE,
872 p_initial_tax_rate IN ZX_LINES.TAX_RATE%TYPE,
873 p_offset_tax IN ZX_TAXES_B.TAX%TYPE,
874 p_offset_status_code IN ZX_STATUS_B.TAX_STATUS_CODE%TYPE,
875 p_return_status OUT NOCOPY VARCHAR2,
876 p_error_buffer OUT NOCOPY VARCHAR2)
877 IS
878
879 CURSOR get_tax_line_number_csr IS
880 SELECT NVL(MAX(tax_line_number), 0) + 1
881 FROM zx_lines
882 WHERE application_id = p_offset_tax_line_rec.application_id
883 AND event_class_code = p_offset_tax_line_rec.event_class_code
884 AND entity_code = p_offset_tax_line_rec.entity_code
885 AND trx_id = p_offset_tax_line_rec.trx_id
886 AND trx_line_id = p_offset_tax_line_rec.trx_line_id
887 AND trx_level_type = p_offset_tax_line_rec.trx_level_type;
888
889 l_parent_tax_rate ZX_LINES.TAX_RATE%TYPE;
890 l_old_offset_tax_line_id ZX_LINES.TAX_LINE_ID%TYPE;
891
892 BEGIN
893 IF (g_level_statement >= g_current_runtime_level ) THEN
894 FND_LOG.STRING(g_level_statement,
895 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.create_offset_tax_line.BEGIN',
896 'ZX_TDS_OFFSET_TAX_DETM_PKG: create_offset_tax_line(+)');
897 END IF;
898
899 p_return_status := FND_API.G_RET_STS_SUCCESS;
900
901 --
902 -- set link to current non offset tax line
903 --
904 p_offset_tax_line_rec.offset_link_to_tax_line_id :=
905 p_offset_tax_line_rec.tax_line_id;
906 -- p_offset_tax_line_rec.tax_line_number :=
907 -- p_offset_tax_line_rec.offset_tax_line_number;
908
909 --
910 -- null out columns
911 --
912 set_null_columns(p_offset_tax_line_rec);
913
914 --
915 -- set flags
916 --
917 set_flg_columns(p_offset_tax_line_rec);
918
919 --
920 -- populate tax_line_id and who columns
921 --
922 ZX_TDS_TAX_LINES_POPU_PKG.populate_mandatory_columns(
923 p_offset_tax_line_rec,
924 p_return_status,
925 p_error_buffer);
926 IF p_return_status <> FND_API.G_RET_STS_SUCCESS THEN
927 RETURN;
928 END IF;
929
930 --
931 -- keep the tax rate of the tax line which associated with this
932 -- offset tax line, it will be used to determine whether all tax amounts
933 -- related need to be recalculated if offset tax rate is different
934 --
935 l_parent_tax_rate := p_offset_tax_line_rec.tax_rate;
936
937 --
938 -- populate tax related info
939 --
940 p_offset_tax_line_rec.tax_rate_code := p_offset_tax_rate_code;
941 p_offset_tax_line_rec.tax_rate_id := p_offset_tax_rate_id;
942 p_offset_tax_line_rec.tax_rate := p_tax_rate;
943 p_offset_tax_line_rec.offset_tax_rate_code := NULL;
944
945 p_offset_tax_line_rec.tax := p_offset_tax;
946 get_tax_id(p_offset_tax_line_rec.tax_regime_code,
947 p_offset_tax,
948 p_offset_tax_line_rec.tax_determine_date,
949 p_offset_tax_line_rec.tax_id,
950 p_return_status,
951 p_error_buffer);
952 IF p_return_status <>FND_API.G_RET_STS_SUCCESS THEN
953 RETURN;
954 END IF;
955
956 p_offset_tax_line_rec.tax_status_code := p_offset_status_code;
957 get_tax_status_id(p_offset_tax_line_rec.tax_regime_code,
958 p_offset_tax,
959 p_offset_status_code,
960 p_offset_tax_line_rec.tax_determine_date,
961 p_offset_tax_line_rec.tax_status_id,
962 p_return_status,
963 p_error_buffer);
964 IF p_return_status <>FND_API.G_RET_STS_SUCCESS THEN
965 RETURN;
966 END IF;
967
968 p_offset_tax_line_rec.tax_type_code :=
969 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(p_offset_tax_line_rec.tax_id).tax_type_code;
970
971 --
972 -- populate amount columns
973 --
974 set_amt_columns(p_offset_tax_line_rec,
975 l_parent_tax_rate,
976 p_initial_tax_rate,
977 p_return_status,
978 p_error_buffer);
979
980 IF p_return_status <>FND_API.G_RET_STS_SUCCESS THEN
981 RETURN;
982 END IF;
983
984 -- bug 5580990: populate legal_reporting_status
985 IF p_event_class_rec.tax_reporting_flag = 'Y' THEN
986 p_offset_tax_line_rec.legal_reporting_status :=
987 ZX_TDS_UTILITIES_PKG.g_tax_rec_tbl(
988 p_offset_tax_line_rec.tax_id).legal_reporting_status_def_val;
989 END IF;
990
991 --
992 -- if tax line is updated or overridden, need to preserve the
993 -- existing offset tax line id for this tax line since the offset
994 -- tax line may have been accounted, update the new created offset
995 -- tax line id with the existing offset tax line id in the
996 -- repository for this tax line
997 --
998
999 -- populate tax_line_number for OVERRIDE_TAX
1000 --
1001 IF NVL(p_offset_tax_line_rec.tax_event_type_code, 'A') = 'OVERRIDE_TAX' THEN
1002 OPEN get_tax_line_number_csr;
1003 FETCH get_tax_line_number_csr INTO p_offset_tax_line_rec.tax_line_number;
1004 CLOSE get_tax_line_number_csr;
1005 END IF;
1006
1007 -- Bug Fix 5417887
1008 -- IF (p_event_class_rec.tax_event_type_code = 'UPDATE' OR
1009 IF (p_offset_tax_line_rec.tax_event_type_code = 'UPDATE' OR
1010 p_event_class_rec.tax_event_type_code = 'OVERRIDE_TAX') THEN
1011 get_old_offset_tax_line_id(
1012 p_event_class_rec,
1013 p_offset_tax_line_rec,
1014 l_old_offset_tax_line_id,
1015 p_return_status,
1016 p_error_buffer);
1017
1018 IF p_return_status <>FND_API.G_RET_STS_SUCCESS THEN
1019 RETURN;
1020 END IF;
1021
1022 IF l_old_offset_tax_line_id IS NOT NULL THEN
1023 --
1024 -- overwrite the newly generated tax line id with
1025 -- the existing one in the repository
1026 --
1027 p_offset_tax_line_rec.tax_line_id := l_old_offset_tax_line_id;
1028 END IF;
1029 END IF;
1030
1031 IF (g_level_statement >= g_current_runtime_level ) THEN
1032
1033 FND_LOG.STRING(g_level_statement,
1034 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.create_offset_tax_line.END',
1035 'ZX_TDS_OFFSET_TAX_DETM_PKG: create_offset_tax_line(-)'||p_return_status);
1036 END IF;
1037
1038 EXCEPTION
1039 WHEN OTHERS THEN
1040 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1041 p_error_buffer := sqlcode || ': ' || SUBSTR(SQLERRM, 1, 80);
1042
1043 IF (g_level_unexpected >= g_current_runtime_level ) THEN
1044 FND_LOG.STRING(g_level_unexpected,
1045 'ZX.PLSQL.ZX_TDS_OFFSET_TAX_DETM_PKG.create_offset_tax_line',
1046 p_error_buffer);
1047 END IF;
1048
1049 END create_offset_tax_line;
1050
1051 END ZX_TDS_OFFSET_TAX_DETM_PKG;