[Home] [Help]
PACKAGE BODY: APPS.OKL_PROCESS_SALES_TAX_PVT
Source
1 PACKAGE BODY OKL_PROCESS_SALES_TAX_PVT AS
2 /* $Header: OKLRPSTB.pls 120.65.12020000.3 2013/03/22 05:10:19 racheruv ship $ */
3
4 ---------------------------------------------------------------------------
5 -- FUNCTION get_seq_id
6 ---------------------------------------------------------------------------
7 FUNCTION get_seq_id RETURN NUMBER IS
8 BEGIN
9 RETURN(okc_p_util.raw_to_number(sys_guid()));
10 END get_seq_id;
11
12 /*========================================================================
13 | PRIVATE PROCEDURE get_ship_to_site_use_id
14 |
15 | DESCRIPTION
16 | This procedure derives the ship To location for a customer
17 |
18 | CALLED FROM
19 | Other procedures in this API
20 |
21 | CALLS PROCEDURES/FUNCTIONS
22 |
23 |
24 | PARAMETERS
25 | Input Parameters
26 | p_cust_acct_id -- cutomer a/c ID
27 | p_fin_asset_id -- Financial Asset ID
28 | Output Parameters
29 | x_ship_to_site_use_id -- ship to Location
30 |
31 | KNOWN ISSUES
32 |
33 | NOTES
34 |
35 |
36 | MODIFICATION HISTORY
37 | Date Author Description of Changes
38 | 22-NOV-07 ASAWANKA Created for bug# 6612165
39 |
40 *=======================================================================*/
41 PROCEDURE get_ship_to_site_use_id(
42 p_api_version IN NUMBER,
43 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
44 x_return_status OUT NOCOPY VARCHAR2,
45 x_msg_count OUT NOCOPY NUMBER,
46 x_msg_data OUT NOCOPY VARCHAR2,
47 p_cust_acct_id IN NUMBER,
48 p_fin_asset_id IN NUMBER,
49 x_ship_to_site_use_id OUT NOCOPY NUMBER) IS
50
51 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
52
53 --Cursor to get the install_location_id of the asset
54 CURSOR l_get_instlocid(cp_fin_asset_id IN NUMBER) IS
55 SELECT csi.install_location_id,
56 -- csi.location_id
57 csi.install_location_type_code
58 FROM csi_item_instances csi,
59 okc_k_items cim,
60 okc_k_lines_b inst,
61 okc_k_lines_b ib,
62 okc_line_styles_b lse
63 WHERE csi.instance_id = TO_NUMBER(cim.object1_id1)
64 AND cim.cle_id = ib.id
65 AND ib.cle_id = inst.id
66 AND inst.lse_id = lse.id
67 AND lse.lty_code = 'FREE_FORM2'
68 AND inst.cle_id = cp_fin_asset_id ;
69
70 -- get the Install Base Line ID (INST_ITEM) for the financial asset
71 CURSOR l_institem_csr(cp_fin_asset_id IN NUMBER) IS
72 SELECT ib.id inst_item_id
73 FROM okc_k_lines_b inst,
74 okc_k_lines_b ib
75 WHERE ib.cle_id = inst.id
76 AND inst.lse_id = 43
77 AND inst.cle_id = cp_fin_asset_id;
78
79 -- get the party site use ID
80 CURSOR l_txlitminsts_csr(cp_kle_id IN NUMBER) IS
81 SELECT object_id1_new
82 FROM okl_txl_itm_insts
83 WHERE kle_id = cp_kle_id;
84
85 -- get the party site id
86 CURSOR l_partysiteuses_csr(cp_party_site_use_id IN NUMBER) IS
87 SELECT party_site_id
88 FROM hz_party_site_uses
89 WHERE party_site_use_id = cp_party_site_use_id;
90
91 --Cursor to get the corresponding hz_location id for the install location id
92 CURSOR l_get_location_id(cp_party_site_id IN NUMBER) IS
93 SELECT hzp.location_id
94 FROM HZ_PARTY_SITES HZP
95 WHERE HZP.PARTY_SITE_ID = cp_party_site_id;
96
97 --Cursor to get the corresponding party_site_id FOR a location id
98 CURSOR l_get_party_site_id(cp_location_id IN NUMBER) IS
99 SELECT HZP.PARTY_SITE_ID
100 FROM HZ_PARTY_SITES HZP,
101 HZ_PARTY_SITE_USES HZU
102 WHERE HZP.LOCATION_ID = cp_location_id
103 AND HZP.party_site_id = HZU.PARTY_SITE_ID
104 AND HZU.SITE_USE_TYPE = 'INSTALL_AT' ;
105
106 --Cursor to get the ship_to_site_use_id corresponding to the install_location_id of the asset
107 CURSOR l_get_shiptositeid(cp_cust_acct_id IN NUMBER, cp_inst_loc_id IN NUMBER,cp_loc_id IN NUMBER) IS
108 SELECT /*a.CUST_ACCT_SITE_ID */
109 b.site_use_id
110 FROM hz_cust_acct_sites_all a,
111 hz_cust_site_uses_all b,
112 hz_party_sites c
113 WHERE a.CUST_ACCT_SITE_ID = b.CUST_ACCT_SITE_ID
114 AND b.site_use_code = 'SHIP_TO'
115 AND a.party_site_id = c.party_site_id
116 AND a.cust_account_id = cp_cust_acct_id
117 AND a.org_id = MO_GLOBAL.get_current_org_id --NVL(TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10)),-99) sechawla 09-mar-11 11717200
118 AND c.party_site_id = cp_inst_loc_id
119 AND c.location_id = cp_loc_id;
120
121 l_inst_loc_id NUMBER;
122 l_inst_loc_type_code VARCHAR2(30);
123 l_loc_id NUMBER;
124 l_ship_to_siteuseid NUMBER;
125 l_inst_item_id NUMBER;
126 l_party_site_use_id NUMBER;
127
128 BEGIN
129
130 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
131 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id','Begin(+)');
132 END IF;
133
134 --Print Input Variables
135 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
136 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
137 'p_init_msg_list :'||p_init_msg_list);
138 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
139 'p_cust_acct_id :'||p_cust_acct_id);
140 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
141 'p_fin_asset_id :'||p_fin_asset_id);
142
143 END IF;
144
145 x_return_status := OKL_API.G_RET_STS_SUCCESS;
146
147 OPEN l_get_instlocid(p_fin_asset_id);
148 FETCH l_get_instlocid INTO l_inst_loc_id, l_inst_loc_type_code;
149
150 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
151 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
152 'l_inst_loc_id'||l_inst_loc_id);
153 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
154 'l_inst_loc_type_code'||l_inst_loc_type_code);
155 END IF;
156
157 IF l_get_instlocid%NOTFOUND THEN
158 -- For non Booked contracts, Install Location is not available in IB
159 -- get the location from the asset on the contract.
160
161 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
162 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
163 'l_get_instlocid%NOTFOUND');
164
165 END IF;
166
167 -- get the INST_ITEM line ID for the financial asset
168 OPEN l_institem_csr(p_fin_asset_id);
169 FETCH l_institem_csr INTO l_inst_item_id;
170 CLOSE l_institem_csr;
171
172 -- get the party site use ID
173 OPEN l_txlitminsts_csr(l_inst_item_id);
174 FETCH l_txlitminsts_csr INTO l_party_site_use_id;
175 CLOSE l_txlitminsts_csr;
176
177 -- get the party site ID
178 OPEN l_partysiteuses_csr(l_party_site_use_id);
179 FETCH l_partysiteuses_csr INTO l_inst_loc_id; --party site ID
180 CLOSE l_partysiteuses_csr;
181
182 -- get the location ID
183 OPEN l_get_location_id(l_inst_loc_id);
184 FETCH l_get_location_id INTO l_loc_id;
185 CLOSE l_get_location_id;
186
187 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
188 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
189 'l_inst_item_id '||l_inst_item_id);
190 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
191 'l_party_site_use_id '||l_party_site_use_id);
192 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
193 'l_inst_loc_id '||l_inst_loc_id);
194 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
195 'l_loc_id '||l_loc_id);
196
197 END IF;
198
199 IF l_inst_loc_id IS NULL OR l_loc_id IS NULL THEN
200 -- Install Location id is required
201 OKL_API.set_message( p_app_name => 'OKC',
202 p_msg_name => G_REQUIRED_VALUE,
203 p_token1 => G_COL_NAME_TOKEN,
204 p_token1_value => 'INSTALL_LOCATION_ID');
205 RAISE OKL_API.G_EXCEPTION_ERROR;
206 END IF;
207 ELSE
208 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
209 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
210 'l_get_instlocid%FOUND');
211
212 END IF;
213 --Check the source of the install location id
214 IF l_inst_loc_type_code = 'HZ_PARTY_SITES' THEN
215 -- get hz location id
216 OPEN l_get_location_id(l_inst_loc_id);
217 FETCH l_get_location_id INTO l_loc_id;
218 CLOSE l_get_location_id;
219 ELSIF l_inst_loc_type_code = 'HZ_LOCATIONS' THEN
220 l_loc_id := l_inst_loc_id;
221 -- get party site id
222 OPEN l_get_party_site_id(l_loc_id);
223 FETCH l_get_party_site_id INTO l_inst_loc_id;
224 CLOSE l_get_party_site_id;
225 END IF;
226
227 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
228 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
229 'l_loc_id '||l_loc_id);
230 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
231 'l_inst_loc_id '||l_inst_loc_id);
232
233 END IF;
234
235 END IF;
236 CLOSE l_get_instlocid;
237
238 --get the ship to site use id of the asset
239 OPEN l_get_shiptositeid(p_cust_acct_id,l_inst_loc_id,l_loc_id);
240 FETCH l_get_shiptositeid INTO l_ship_to_siteuseid; -- l_ship_to_siteuseid may be null
241 CLOSE l_get_shiptositeid;
242
243
244
245 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
246 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id.',
247 'l_ship_to_siteuseid '||l_ship_to_siteuseid);
248
249 END IF;
250
251 x_ship_to_site_use_id := l_ship_to_siteuseid;
252
253
254
255 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
256 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id ','End(-)');
257 END IF;
258
259 EXCEPTION
260 WHEN OKL_API.G_EXCEPTION_ERROR THEN
261 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
262 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id ',
263 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
264 END IF;
265
266 IF l_get_instlocid%ISOPEN THEN
267 CLOSE l_get_instlocid;
268 END IF;
269
270 IF l_institem_csr%ISOPEN THEN
271 CLOSE l_institem_csr;
272 END IF;
273
274 IF l_txlitminsts_csr%ISOPEN THEN
275 CLOSE l_txlitminsts_csr;
276 END IF;
277
278 IF l_partysiteuses_csr%ISOPEN THEN
279 CLOSE l_partysiteuses_csr;
280 END IF;
281
282 IF l_get_location_id%ISOPEN THEN
283 CLOSE l_get_location_id;
284 END IF;
285
286 IF l_get_party_site_id%ISOPEN THEN
287 CLOSE l_get_party_site_id;
288 END IF;
289
290
291 IF l_get_shiptositeid%ISOPEN THEN
292 CLOSE l_get_shiptositeid;
293 END IF;
294
295 x_return_status := OKL_API.G_RET_STS_ERROR;
296 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
297 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
298 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id ',
299 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
300 END IF;
301
302 IF l_get_instlocid%ISOPEN THEN
303 CLOSE l_get_instlocid;
304 END IF;
305
306 IF l_institem_csr%ISOPEN THEN
307 CLOSE l_institem_csr;
308 END IF;
309
310 IF l_txlitminsts_csr%ISOPEN THEN
311 CLOSE l_txlitminsts_csr;
312 END IF;
313
314 IF l_partysiteuses_csr%ISOPEN THEN
315 CLOSE l_partysiteuses_csr;
316 END IF;
317
318 IF l_get_location_id%ISOPEN THEN
319 CLOSE l_get_location_id;
320 END IF;
321
322 IF l_get_party_site_id%ISOPEN THEN
323 CLOSE l_get_party_site_id;
324 END IF;
325
326
327 IF l_get_shiptositeid%ISOPEN THEN
328 CLOSE l_get_shiptositeid;
329 END IF;
330 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
331 WHEN OTHERS THEN
332 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
333 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ship_to_site_use_id ',
334 'EXCEPTION :'||sqlerrm);
335 END IF;
336
337 IF l_get_instlocid%ISOPEN THEN
338 CLOSE l_get_instlocid;
339 END IF;
340
341 IF l_institem_csr%ISOPEN THEN
342 CLOSE l_institem_csr;
343 END IF;
344
345 IF l_txlitminsts_csr%ISOPEN THEN
346 CLOSE l_txlitminsts_csr;
347 END IF;
348
349 IF l_partysiteuses_csr%ISOPEN THEN
350 CLOSE l_partysiteuses_csr;
351 END IF;
352
353 IF l_get_location_id%ISOPEN THEN
354 CLOSE l_get_location_id;
355 END IF;
356
357 IF l_get_party_site_id%ISOPEN THEN
358 CLOSE l_get_party_site_id;
359 END IF;
360
361
362 IF l_get_shiptositeid%ISOPEN THEN
363 CLOSE l_get_shiptositeid;
364 END IF;
365 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
366 -- unexpected error
367 OKL_API.set_message(p_app_name => g_app_name,
368 p_msg_name => g_unexpected_error,
369 p_token1 => g_sqlcode_token,
370 p_token1_value => sqlcode,
371 p_token2 => g_sqlerrm_token,
372 p_token2_value => sqlerrm);
373 END get_ship_to_site_use_id;
374
375 /*========================================================================
376 | PUBLIC FUNCTION is_serialized_and_alc
377 |
378 | DESCRIPTION
379 | This function checks if any of the assets of the contract is serialized
380 | and has gone through Asset Relocation Change transaction. If so, returns
381 | 'Y', else 'N'
382 |
383 | CALLED FROM Authoring component
384 |
385 |
386 | CALLS PROCEDURES/FUNCTIONS
387 |
388 |
389 | PARAMETERS
390 | p_contract_id -- Contract Identifier
391 |
392 | KNOWN ISSUES
393 |
394 | NOTES
395 |
396 |
397 | MODIFICATION HISTORY
398 | Date Author Description of Changes
399 | 05-JUL-07 RRAVIKIR Created
400 |
401 *=======================================================================*/
402 FUNCTION is_serialized_and_alc(p_contract_id IN NUMBER)
403 RETURN VARCHAR2 IS
404
405 -- Local variables
406 l_value VARCHAR2(1);
407
408 -- Cursors
409 CURSOR l_k_serialized_and_alc(p_chr_id IN NUMBER) IS
410 SELECT '1'
411 FROM okl_tax_sources
412 WHERE khr_id = p_chr_id
413 AND entity_code = G_ASSETS_ENTITY_CODE
414 AND event_class_code = G_ALC_EVENT_CODE
415 AND alc_serialized_yn IN ('Y', 'L')
416 AND rownum = 1;
417 BEGIN
418 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
419 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc','Begin(+)');
420 END IF;
421
422 --Print Input Variables
423 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
424 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc.',
425 'p_contract_id :'||p_contract_id);
426 END IF;
427
428 OPEN l_k_serialized_and_alc(p_chr_id => p_contract_id);
429 FETCH l_k_serialized_and_alc INTO l_value;
430 CLOSE l_k_serialized_and_alc;
431
432 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
433 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc ','End(-)');
434 END IF;
435
436 IF (l_value IS NULL) THEN
437 RETURN 'N';
438 ELSE
439 RETURN 'Y';
440 END IF;
441
442 EXCEPTION
443 WHEN OKL_API.G_EXCEPTION_ERROR THEN
444
445 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
446 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc ',
447 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
448 END IF;
449
450 IF (l_k_serialized_and_alc%ISOPEN) THEN
451 CLOSE l_k_serialized_and_alc;
452 END IF;
453
454 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
455 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
456 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc ',
457 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
458 END IF;
459
460 IF (l_k_serialized_and_alc%ISOPEN) THEN
461 CLOSE l_k_serialized_and_alc;
462 END IF;
463
464 WHEN OTHERS THEN
465
466 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
467 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.is_serialized_and_alc ',
468 'EXCEPTION :'||sqlerrm);
469 END IF;
470
471 IF (l_k_serialized_and_alc%ISOPEN) THEN
472 CLOSE l_k_serialized_and_alc;
473 END IF;
474
475 END is_serialized_and_alc;
476
477 /*========================================================================
478 | PRIVATE PROCEDURE validate_tax_code
479 |
480 | DESCRIPTION
481 | This procedure populates the asset location change serialized total tax
482 |
483 | CALLED FROM
484 | process_tax_determ_override()
485 | process_asset_loc_tax()
486 |
487 | CALLS PROCEDURES/FUNCTIONS
488 | okl_tax_sources_pub.update_tax_sources()
489 |
490 | PARAMETERS
491 | p_source_trx_id -- Source Transaction Identifier
492 |
493 | KNOWN ISSUES
494 |
495 | NOTES
496 |
497 |
498 | MODIFICATION HISTORY
499 | Date Author Description of Changes
500 | 11-APR-07 RRAVIKIR Created
501 |
502 *=======================================================================*/
503 PROCEDURE validate_tax_code(
504 p_api_version IN NUMBER,
505 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
506 x_return_status OUT NOCOPY VARCHAR2,
507 x_msg_count OUT NOCOPY NUMBER,
508 x_msg_data OUT NOCOPY VARCHAR2,
509 p_trx_date IN DATE,
510 p_tbc_code IN VARCHAR2 DEFAULT NULL,
511 p_ufc_code IN VARCHAR2 DEFAULT NULL,
512 p_pc_code IN VARCHAR2 DEFAULT NULL,
513 x_valid_code OUT NOCOPY VARCHAR2) IS
514
515 -- Local variables
516 l_api_name CONSTANT VARCHAR2(30) := 'validate_tax_code';
517 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
518
519 l_dummy VARCHAR2(1);
520
521 -- Cursors
522 CURSOR l_tbc_csr(cp_trx_date IN DATE, cp_tbc_code IN VARCHAR2) IS
523 SELECT '1'
524 FROM zx_fc_business_categories_v
525 WHERE classification_code = cp_tbc_code
526 AND effective_from <= cp_trx_date
527 AND (effective_to >= cp_trx_date OR effective_to is NULL);
528
529 CURSOR l_ufc_csr(cp_trx_date IN DATE, cp_ufc_code IN VARCHAR2) IS
530 SELECT '1'
531 FROM zx_fc_user_defined_v
532 WHERE classification_code = cp_ufc_code
533 AND effective_from <= cp_trx_date
534 AND (effective_to >= cp_trx_date OR effective_to is NULL);
535
536 CURSOR l_pc_csr(cp_trx_date IN DATE, cp_pc_code IN VARCHAR2) IS
537 SELECT '1'
538 FROM zx_fc_product_categories_v
539 WHERE classification_code = cp_pc_code
540 AND effective_from <= cp_trx_date
541 AND (effective_to >= cp_trx_date OR effective_to is NULL);
542
543 BEGIN
544 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
545 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code','Begin(+)');
546 END IF;
547
548 --Print Input Variables
549 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
550 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code.',
551 'p_init_msg_list :'||p_init_msg_list);
552 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code.',
553 'p_trx_date :'||p_trx_date);
554 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code.',
555 'p_tbc_code :'||p_tbc_code);
556 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code.',
557 'p_ufc_code :'||p_ufc_code);
558 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code.',
559 'p_pc_code :'||p_pc_code);
560 END IF;
561
562 IF (p_tbc_code IS NOT NULL) THEN
563
564 OPEN l_tbc_csr(p_trx_date, p_tbc_code);
565 FETCH l_tbc_csr INTO l_dummy;
566 CLOSE l_tbc_csr;
567
568 ELSIF (p_ufc_code IS NOT NULL) THEN
569
570 OPEN l_ufc_csr(p_trx_date, p_ufc_code);
571 FETCH l_ufc_csr INTO l_dummy;
572 CLOSE l_ufc_csr;
573
574 ELSIF (p_pc_code IS NOT NULL) THEN
575
576 OPEN l_pc_csr(p_trx_date, p_pc_code);
577 FETCH l_pc_csr INTO l_dummy;
578 CLOSE l_pc_csr;
579
580 END IF;
581
582 IF (l_dummy = '1') THEN
583 x_valid_code := 'S';
584 ELSE
585 x_valid_code := 'F';
586 END IF;
587
588 x_return_status := l_return_status;
589
590 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
591 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code ','End(-)');
592 END IF;
593
594 EXCEPTION
595
596 WHEN OKL_API.G_EXCEPTION_ERROR THEN
597
598 IF (l_tbc_csr%ISOPEN) THEN
599 CLOSE l_tbc_csr;
600 END IF;
601
602 IF (l_ufc_csr%ISOPEN) THEN
603 CLOSE l_ufc_csr;
604 END IF;
605
606 IF (l_pc_csr%ISOPEN) THEN
607 CLOSE l_pc_csr;
608 END IF;
609
610 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
611 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code ',
612 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
613 END IF;
614
615 x_return_status := OKL_API.G_RET_STS_ERROR;
616
617 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
618
619 IF (l_tbc_csr%ISOPEN) THEN
620 CLOSE l_tbc_csr;
621 END IF;
622
623 IF (l_ufc_csr%ISOPEN) THEN
624 CLOSE l_ufc_csr;
625 END IF;
626
627 IF (l_pc_csr%ISOPEN) THEN
628 CLOSE l_pc_csr;
629 END IF;
630
631 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
632 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code ',
633 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
634 END IF;
635
636 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
637
638 WHEN OTHERS THEN
639
640 IF (l_tbc_csr%ISOPEN) THEN
641 CLOSE l_tbc_csr;
642 END IF;
643
644 IF (l_ufc_csr%ISOPEN) THEN
645 CLOSE l_ufc_csr;
646 END IF;
647
648 IF (l_pc_csr%ISOPEN) THEN
649 CLOSE l_pc_csr;
650 END IF;
651
652 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
653 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.validate_tax_code ',
654 'EXCEPTION :'||sqlerrm);
655 END IF;
656
657 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
658 -- unexpected error
659 OKL_API.set_message(p_app_name => g_app_name,
660 p_msg_name => g_unexpected_error,
661 p_token1 => g_sqlcode_token,
662 p_token1_value => sqlcode,
663 p_token2 => g_sqlerrm_token,
664 p_token2_value => sqlerrm);
665
666 END validate_tax_code;
667
668 /*========================================================================
669 | PRIVATE PROCEDURE copy_tax_trx_data
670 |
671 | DESCRIPTION
672 | This procedure copies the quote objects tax data into OKL_TAX_TRX_DETAILS
673 | table
674 |
675 | CALLED FROM
676 | process_quote_tax()
677 | process_quoting_upfront_tax()
678 |
679 | CALLS PROCEDURES/FUNCTIONS
680 |
681 |
682 | PARAMETERS
683 | p_trx_id -- Transaction Identifier
684 | p_entity_code -- Entity code
685 | p_event_class_code -- Event class code
686 |
687 | KNOWN ISSUES
688 |
689 | NOTES
690 |
691 |
692 | MODIFICATION HISTORY
693 | Date Author Description of Changes
694 | 07-MAY-07 RRAVIKIR Created
695 |
696 *=======================================================================*/
697 PROCEDURE copy_tax_trx_data (
698 p_api_version IN NUMBER,
699 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
700 x_return_status OUT NOCOPY VARCHAR2,
701 x_msg_count OUT NOCOPY NUMBER,
702 x_msg_data OUT NOCOPY VARCHAR2,
703 p_trx_id IN NUMBER,
704 p_entity_code IN VARCHAR2,
705 p_event_class_code IN VARCHAR2,
706 p_source_trx_name IN VARCHAR2) IS
707
708 -- Local variables
709 l_api_version CONSTANT NUMBER := 1;
710 l_api_name CONSTANT VARCHAR2(30) := 'copy_tax_trx_data';
711
712 l_tax_lines_tbl tax_lines_tbl_type;
713 i NUMBER := 0;
714 l_txs_id NUMBER;
715
716 -- Cursor to retrieve tax data
717 CURSOR l_get_tax_data_csr(cp_trx_id IN NUMBER,
718 cp_entity_code IN VARCHAR2,
719 cp_event_class_code IN VARCHAR2) IS
720 SELECT tax_rate_id,
721 tax_rate_code,
722 tax_exemption_id,
723 tax_rate,
724 tax_date,
725 line_amt,
726 internal_organization_id,
727 application_id,
728 entity_code,
729 event_class_code,
730 event_type_code,
731 trx_id,
732 trx_line_id,
733 trx_level_type,
734 trx_line_number,
735 tax_line_number,
736 tax_regime_id,
737 tax_regime_code,
738 tax_id,
739 tax,
740 tax_status_id,
741 tax_status_code,
742 tax_apportionment_line_number,
743 legal_entity_id,
744 trx_number,
745 trx_date,
746 tax_jurisdiction_id,
747 tax_jurisdiction_code,
748 tax_type_code,
749 tax_currency_code,
750 taxable_amt_tax_curr,
751 trx_currency_code,
752 minimum_accountable_unit,
753 precision,
754 currency_conversion_type,
755 currency_conversion_rate,
756 currency_conversion_date,
757 tax_determine_date,
758 taxable_amt,
759 tax_amt
760 FROM zx_detail_tax_lines_gt
761 WHERE trx_id = cp_trx_id
762 AND application_id = G_OKL_APPLICATION_ID
763 AND trx_level_type = G_TRX_LEVEL_TYPE
764 AND entity_code = cp_entity_code
765 AND event_class_code = cp_event_class_code;
766
767 -- get the primary key of okl_tax_sources
768 CURSOR l_taxsourceid_csr(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
769 SELECT id
770 FROM okl_tax_sources
771 WHERE trx_id = cp_trx_id
772 AND trx_line_id = cp_trx_line_id;
773
774 BEGIN
775 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
776 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data','Begin(+)');
777 END IF;
778
779 --Print Input Variables
780 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
781 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
782 'p_init_msg_list :'||p_init_msg_list);
783 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
784 'p_trx_id :'||p_trx_id);
785 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
786 'p_entity_code :'||p_entity_code);
787 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
788 'p_event_class_code :'||p_event_class_code);
789 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
790 'p_source_trx_name :'||p_source_trx_name);
791 END IF;
792
793 -- Populate the tax data into eBtax global session table
794 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
795 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data.',
796 'INSERT INTO OKL_TAX_TRX_DETAILS');
797 END IF;
798
799 l_tax_lines_tbl.DELETE;
800 FOR l_get_tax_data_rec IN l_get_tax_data_csr(cp_trx_id => p_trx_id,
801 cp_entity_code => p_entity_code,
802 cp_event_class_code => p_event_class_code) LOOP
803 l_tax_lines_tbl(i).id := get_seq_id;
804
805 OPEN l_taxsourceid_csr(l_get_tax_data_rec.trx_id, l_get_tax_data_rec.trx_line_id);
806 FETCH l_taxsourceid_csr INTO l_txs_id;
807 IF l_taxsourceid_csr%NOTFOUND THEN
808 OKL_API.set_message(p_app_name => 'OKL',
809 p_msg_name => 'OKL_TX_SRC_TRX_ERR',
810 p_token1 => 'LINE_NUM',
811 p_token1_value => i);
812 RAISE OKL_API.G_EXCEPTION_ERROR;
813 END IF;
814 CLOSE l_taxsourceid_csr;
815
816 l_tax_lines_tbl(i).txs_id := l_txs_id;
817 l_tax_lines_tbl(i).tax_determination_date := l_get_tax_data_rec.tax_determine_date;
818 l_tax_lines_tbl(i).tax_rate_id := l_get_tax_data_rec.tax_rate_id;
819 l_tax_lines_tbl(i).tax_rate_code := l_get_tax_data_rec.tax_rate_code;
820 l_tax_lines_tbl(i).taxable_amount := l_get_tax_data_rec.taxable_amt;
821 l_tax_lines_tbl(i).tax_exemption_id := l_get_tax_data_rec.tax_exemption_id;
822 l_tax_lines_tbl(i).tax_rate := l_get_tax_data_rec.tax_rate;
823 l_tax_lines_tbl(i).tax_amount := l_get_tax_data_rec.tax_amt;
824
825 l_tax_lines_tbl(i).tax_date := l_get_tax_data_rec.tax_date;
826 l_tax_lines_tbl(i).line_amt := l_get_tax_data_rec.line_amt;
827 l_tax_lines_tbl(i).internal_organization_id := l_get_tax_data_rec.internal_organization_id;
828 l_tax_lines_tbl(i).application_id := l_get_tax_data_rec.application_id;
829 l_tax_lines_tbl(i).entity_code := l_get_tax_data_rec.entity_code;
830 l_tax_lines_tbl(i).event_class_code := l_get_tax_data_rec.event_class_code;
831 l_tax_lines_tbl(i).event_type_code := l_get_tax_data_rec.event_type_code;
832 l_tax_lines_tbl(i).trx_id := l_get_tax_data_rec.trx_id;
833 l_tax_lines_tbl(i).trx_line_id := l_get_tax_data_rec.trx_line_id;
834 l_tax_lines_tbl(i).trx_level_type := l_get_tax_data_rec.trx_level_type;
835 l_tax_lines_tbl(i).trx_line_number := l_get_tax_data_rec.trx_line_number;
836 l_tax_lines_tbl(i).tax_line_number := l_get_tax_data_rec.tax_line_number;
837 l_tax_lines_tbl(i).tax_regime_id := l_get_tax_data_rec.tax_regime_id;
838 l_tax_lines_tbl(i).tax_regime_code := l_get_tax_data_rec.tax_regime_code;
839 l_tax_lines_tbl(i).tax_id := l_get_tax_data_rec.tax_id;
840 l_tax_lines_tbl(i).tax := l_get_tax_data_rec.tax;
841 l_tax_lines_tbl(i).tax_status_id := l_get_tax_data_rec.tax_status_id;
842 l_tax_lines_tbl(i).tax_status_code := l_get_tax_data_rec.tax_status_code;
843 l_tax_lines_tbl(i).tax_apportionment_line_number := l_get_tax_data_rec.tax_apportionment_line_number;
844 l_tax_lines_tbl(i).legal_entity_id := l_get_tax_data_rec.legal_entity_id;
845 l_tax_lines_tbl(i).trx_number := l_get_tax_data_rec.trx_number;
846 l_tax_lines_tbl(i).trx_date := l_get_tax_data_rec.trx_date;
847 l_tax_lines_tbl(i).tax_jurisdiction_id := l_get_tax_data_rec.tax_jurisdiction_id;
848 l_tax_lines_tbl(i).tax_jurisdiction_code := l_get_tax_data_rec.tax_jurisdiction_code;
849 l_tax_lines_tbl(i).tax_type_code := l_get_tax_data_rec.tax_type_code;
850 l_tax_lines_tbl(i).tax_currency_code := l_get_tax_data_rec.tax_currency_code;
851 l_tax_lines_tbl(i).taxable_amt_tax_curr := l_get_tax_data_rec.taxable_amt_tax_curr;
852 l_tax_lines_tbl(i).trx_currency_code := l_get_tax_data_rec.trx_currency_code;
853 l_tax_lines_tbl(i).minimum_accountable_unit := l_get_tax_data_rec.minimum_accountable_unit;
854 l_tax_lines_tbl(i).precision := l_get_tax_data_rec.precision;
855 l_tax_lines_tbl(i).currency_conversion_type := l_get_tax_data_rec.currency_conversion_type;
856 l_tax_lines_tbl(i).currency_conversion_rate := l_get_tax_data_rec.currency_conversion_rate;
857 l_tax_lines_tbl(i).currency_conversion_date := l_get_tax_data_rec.currency_conversion_date;
858 -- columns for backward compatibility
859 l_tax_lines_tbl(i).tax_determine_date := l_get_tax_data_rec.tax_determine_date;
860 l_tax_lines_tbl(i).taxable_amt := l_get_tax_data_rec.taxable_amt;
861 l_tax_lines_tbl(i).tax_amt := l_get_tax_data_rec.tax_amt;
862
863
864 l_tax_lines_tbl(i).billed_yn := 'N'; -- tax lines calculated by tax engine are not billed
865
866 IF (p_source_trx_name = 'Estimated Billing') THEN
867 l_tax_lines_tbl(i).tax_call_type_code := G_INVOICE_TAX;
868 ELSIF (p_source_trx_name = 'Sales Quote') THEN
869 l_tax_lines_tbl(i).tax_call_type_code := G_UPFRONT_TAX;
870 ELSIF (p_source_trx_name = 'Tax Schedule') THEN
871 l_tax_lines_tbl(i).tax_call_type_code := G_TAX_SCHEDULE;
872 END IF;
873
874 l_tax_lines_tbl(i).program_id := null;
875 l_tax_lines_tbl(i).request_id := null;
876 l_tax_lines_tbl(i).program_application_id := null;
877 l_tax_lines_tbl(i).program_update_date := null;
878 l_tax_lines_tbl(i).attribute_category := null;
879 l_tax_lines_tbl(i).attribute1 := null;
880 l_tax_lines_tbl(i).attribute2 := null;
881 l_tax_lines_tbl(i).attribute3 := null;
882 l_tax_lines_tbl(i).attribute4 := null;
883 l_tax_lines_tbl(i).attribute5 := null;
884 l_tax_lines_tbl(i).attribute6 := null;
885 l_tax_lines_tbl(i).attribute7 := null;
886 l_tax_lines_tbl(i).attribute8 := null;
887 l_tax_lines_tbl(i).attribute9 := null;
888 l_tax_lines_tbl(i).attribute10 := null;
889 l_tax_lines_tbl(i).attribute11 := null;
890 l_tax_lines_tbl(i).attribute12 := null;
891 l_tax_lines_tbl(i).attribute13 := null;
892 l_tax_lines_tbl(i).attribute14 := null;
893 l_tax_lines_tbl(i).attribute15 := null;
894 l_tax_lines_tbl(i).created_by := G_USER_ID;
895 l_tax_lines_tbl(i).creation_date := SYSDATE;
896 l_tax_lines_tbl(i).last_updated_by := G_USER_ID;
897 l_tax_lines_tbl(i).last_update_date := SYSDATE;
898 l_tax_lines_tbl(i).last_update_login := G_LOGIN_ID;
899 l_tax_lines_tbl(i).object_version_number := null;
900
901 i := i+1;
902 END LOOP;
903
904 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
905 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_tax.',
906 'l_tax_lines_tbl.COUNT '||l_tax_lines_tbl.COUNT);
907 END IF;
908
909 ---- Insert into okl_tax_trx_details begin -----
910 BEGIN
911 IF l_tax_lines_tbl.COUNT > 0 THEN
912 FORALL indx in l_tax_lines_tbl.FIRST..l_tax_lines_tbl.LAST
913 -- SAVE EXCEPTIONS
914 INSERT INTO okl_tax_trx_details VALUES l_tax_lines_tbl(indx);
915 END IF;
916 EXCEPTION
917 WHEN OTHERS THEN
918 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
919 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
920 OKL_API.set_message(
921 p_app_name => 'OKL',
922 p_msg_name => 'OKL_TX_TRX_INS_ERR',
923 p_token1 => 'TABLE_NAME',
924 p_token1_value => 'okl_tax_trx_details',
925 p_token2 => 'ERROR_CODE',
926 p_token2_value => SQLERRM(SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
927 p_token3 => 'ITERATION',
928 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
929 END LOOP;
930 RAISE OKL_API.G_EXCEPTION_ERROR;
931 END IF;
932 END;
933 ---- Insert into okl_tax_trx_details end -----
934
935 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
936 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data ','End(-)');
937 END IF;
938
939 EXCEPTION
940 WHEN OKL_API.G_EXCEPTION_ERROR THEN
941
942 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
943 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data ',
944 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
945 END IF;
946
947 x_return_status := OKL_API.G_RET_STS_ERROR;
948
949 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
950 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
951 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data ',
952 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
953 END IF;
954
955 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
956
957 WHEN OTHERS THEN
958
959 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
960 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_tax_trx_data ',
961 'EXCEPTION :'||sqlerrm);
962 END IF;
963
964 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
965 -- unexpected error
966 OKL_API.set_message(p_app_name => g_app_name,
967 p_msg_name => g_unexpected_error,
968 p_token1 => g_sqlcode_token,
969 p_token1_value => sqlcode,
970 p_token2 => g_sqlerrm_token,
971 p_token2_value => sqlerrm);
972
973 END copy_tax_trx_data;
974
975 /*========================================================================
976 | PRIVATE PROCEDURE populate_ser_split_total_tax
977 |
978 | DESCRIPTION
979 | This procedure populates the serialized total tax column after the split
980 | asset process, provided that asset has gone through ALC prior to Split
981 | transaction
982 |
983 | CALLED FROM
984 | process_split_asset_tax()
985 |
986 | CALLS PROCEDURES/FUNCTIONS
987 | okl_tax_sources_pub.update_tax_sources()
988 |
989 | PARAMETERS
990 | p_asset_id -- Asset Identifier
991 |
992 | KNOWN ISSUES
993 |
994 | NOTES
995 |
996 |
997 | MODIFICATION HISTORY
998 | Date Author Description of Changes
999 | 26-Jul-07 RRAVIKIR Created
1000 |
1001 *=======================================================================*/
1002 PROCEDURE populate_ser_split_total_tax(
1003 p_api_version IN NUMBER,
1004 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1005 x_return_status OUT NOCOPY VARCHAR2,
1006 x_msg_count OUT NOCOPY NUMBER,
1007 x_msg_data OUT NOCOPY VARCHAR2,
1008 p_asset_id IN NUMBER,
1009 p_serialized_asset IN VARCHAR2) IS
1010
1011 -- Local variables
1012 l_api_name CONSTANT VARCHAR2(30) := 'populate_ser_split_total_tax';
1013 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1014 l_total_tax_amount NUMBER;
1015 i NUMBER;
1016 j NUMBER;
1017 l_total_line_amount NUMBER;
1018
1019 -- Local data structure
1020 l_txsv_tbl txsv_tbl_type;
1021 lx_txsv_tbl txsv_tbl_type;
1022
1023 -- Cursors
1024 CURSOR l_taxablelines_ser_csr(cp_kle_id IN NUMBER, cp_sty_id IN NUMBER) IS
1025 SELECT id
1026 FROM okl_tax_sources
1027 WHERE kle_id = cp_kle_id
1028 AND sty_id = cp_sty_id
1029 AND tax_call_type_code = G_UPFRONT_TAX
1030 AND tax_line_status_code = G_ACTIVE_STATUS
1031 AND entity_code = G_CONTRACTS_ENTITY_CODE
1032 AND event_class_code = G_BOOKING_EVENT_CLASS_CODE;
1033
1034 CURSOR l_alc_total_tax_ser_csr(cp_kle_id IN NUMBER, cp_sty_id IN NUMBER) IS
1035 SELECT SUM(total_tax)
1036 FROM okl_tax_sources
1037 WHERE kle_id = cp_kle_id
1038 AND sty_id = cp_sty_id
1039 AND tax_call_type_code = G_UPFRONT_TAX
1040 AND tax_line_status_code = G_ACTIVE_STATUS
1041 AND entity_code = G_CONTRACTS_ENTITY_CODE
1042 AND event_class_code = G_BOOKING_EVENT_CLASS_CODE;
1043
1044 CURSOR l_alc_total_line_amt_ser_csr(cp_kle_id IN NUMBER, cp_sty_id IN NUMBER) IS
1045 SELECT SUM(assessable_value)
1046 FROM okl_tax_sources
1047 WHERE kle_id = cp_kle_id
1048 AND sty_id = cp_sty_id
1049 AND tax_call_type_code = G_UPFRONT_TAX
1050 AND tax_line_status_code = G_ACTIVE_STATUS
1051 AND entity_code = G_CONTRACTS_ENTITY_CODE
1052 AND event_class_code = G_BOOKING_EVENT_CLASS_CODE;
1053
1054 CURSOR l_fetch_stream_types_csr(cp_kle_id IN NUMBER) IS
1055 SELECT DISTINCT sty_id
1056 FROM okl_tax_sources
1057 WHERE kle_id = cp_kle_id
1058 AND tax_call_type_code = G_UPFRONT_TAX
1059 AND tax_line_status_code = G_ACTIVE_STATUS
1060 AND entity_code = G_CONTRACTS_ENTITY_CODE
1061 AND event_class_code = G_BOOKING_EVENT_CLASS_CODE;
1062
1063 BEGIN
1064 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1065 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax','Begin(+)');
1066 END IF;
1067
1068 --Print Input Variables
1069 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1070 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax.',
1071 'p_init_msg_list :'||p_init_msg_list);
1072 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax.',
1073 'p_asset_id :'||p_asset_id);
1074 END IF;
1075
1076 -- Get the modified tax lines from tax sources, sum up the total tax amount
1077 -- and store in alc_serialized_total_tax column of okl_tax_sources
1078 i := 1;
1079
1080 IF (p_serialized_asset = 'Y') THEN
1081 FOR l_fetch_stream_types_rec IN l_fetch_stream_types_csr(p_asset_id) LOOP
1082
1083 j := 1;
1084 FOR l_taxablelines_ser_rec IN l_taxablelines_ser_csr(cp_kle_id => p_asset_id,
1085 cp_sty_id => l_fetch_stream_types_rec.sty_id) LOOP
1086
1087 IF (j = 1) THEN
1088 OPEN l_alc_total_tax_ser_csr(cp_kle_id => p_asset_id,
1089 cp_sty_id => l_fetch_stream_types_rec.sty_id);
1090 FETCH l_alc_total_tax_ser_csr INTO l_total_tax_amount;
1091 CLOSE l_alc_total_tax_ser_csr;
1092
1093 OPEN l_alc_total_line_amt_ser_csr(cp_kle_id => p_asset_id,
1094 cp_sty_id => l_fetch_stream_types_rec.sty_id);
1095 FETCH l_alc_total_line_amt_ser_csr INTO l_total_line_amount;
1096 CLOSE l_alc_total_line_amt_ser_csr;
1097
1098 j := j + 1;
1099 END IF;
1100
1101 IF l_total_tax_amount IS NULL THEN
1102 l_total_tax_amount := 0;
1103 END IF;
1104 -- Populate Tax Sources data structure and update total tax
1105 l_txsv_tbl(i).id := l_taxablelines_ser_rec.id;
1106 l_txsv_tbl(i).alc_serialized_total_tax := l_total_tax_amount;
1107 l_txsv_tbl(i).alc_serialized_total_line_amt := l_total_line_amount;
1108
1109 i := i + 1;
1110
1111 END LOOP;
1112 END LOOP;
1113 END IF;
1114
1115 IF (l_txsv_tbl.COUNT > 0) THEN
1116 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1117 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax',
1118 'Calling okl_tax_sources_pub.update_tax_sources for updating Total Tax for all Lines in Tax Sources');
1119 END IF;
1120
1121 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
1122 ,p_init_msg_list => p_init_msg_list
1123 ,x_return_status => l_return_status
1124 ,x_msg_count => x_msg_count
1125 ,x_msg_data => x_msg_data
1126 ,p_txsv_tbl => l_txsv_tbl
1127 ,x_txsv_tbl => lx_txsv_tbl);
1128
1129 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1130 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax',
1131 'Return Status' || l_return_status);
1132 END IF;
1133
1134 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1135 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1136 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1137 RAISE OKL_API.G_EXCEPTION_ERROR;
1138 END IF;
1139
1140 END IF;
1141
1142 x_return_status := l_return_status;
1143
1144 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1145 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax ','End(-)');
1146 END IF;
1147
1148 EXCEPTION
1149
1150 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1151
1152 IF (l_alc_total_tax_ser_csr%ISOPEN) THEN
1153 CLOSE l_alc_total_tax_ser_csr;
1154 END IF;
1155
1156 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1157 CLOSE l_taxablelines_ser_csr;
1158 END IF;
1159
1160 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1161 CLOSE l_fetch_stream_types_csr;
1162 END IF;
1163
1164 IF (l_alc_total_line_amt_ser_csr%ISOPEN) THEN
1165 CLOSE l_alc_total_line_amt_ser_csr;
1166 END IF;
1167
1168 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1169 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax ',
1170 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
1171 END IF;
1172
1173 x_return_status := OKL_API.G_RET_STS_ERROR;
1174
1175 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1176
1177 IF (l_alc_total_tax_ser_csr%ISOPEN) THEN
1178 CLOSE l_alc_total_tax_ser_csr;
1179 END IF;
1180
1181 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1182 CLOSE l_taxablelines_ser_csr;
1183 END IF;
1184
1185 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1186 CLOSE l_fetch_stream_types_csr;
1187 END IF;
1188
1189 IF (l_alc_total_line_amt_ser_csr%ISOPEN) THEN
1190 CLOSE l_alc_total_line_amt_ser_csr;
1191 END IF;
1192
1193 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1194 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax ',
1195 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
1196 END IF;
1197
1198 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1199
1200 WHEN OTHERS THEN
1201
1202 IF (l_alc_total_tax_ser_csr%ISOPEN) THEN
1203 CLOSE l_alc_total_tax_ser_csr;
1204 END IF;
1205
1206 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1207 CLOSE l_taxablelines_ser_csr;
1208 END IF;
1209
1210 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1211 CLOSE l_fetch_stream_types_csr;
1212 END IF;
1213
1214 IF (l_alc_total_line_amt_ser_csr%ISOPEN) THEN
1215 CLOSE l_alc_total_line_amt_ser_csr;
1216 END IF;
1217
1218 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1219 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_ser_split_total_tax ',
1220 'EXCEPTION :'||sqlerrm);
1221 END IF;
1222
1223 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1224 -- unexpected error
1225 OKL_API.set_message(p_app_name => g_app_name,
1226 p_msg_name => g_unexpected_error,
1227 p_token1 => g_sqlcode_token,
1228 p_token1_value => sqlcode,
1229 p_token2 => g_sqlerrm_token,
1230 p_token2_value => sqlerrm);
1231
1232 END populate_ser_split_total_tax;
1233
1234 /*========================================================================
1235 | PRIVATE PROCEDURE populate_alc_total_tax
1236 |
1237 | DESCRIPTION
1238 | This procedure populates the asset location change serialized total tax
1239 |
1240 | CALLED FROM
1241 | process_tax_determ_override()
1242 | process_asset_loc_tax()
1243 |
1244 | CALLS PROCEDURES/FUNCTIONS
1245 | okl_tax_sources_pub.update_tax_sources()
1246 |
1247 | PARAMETERS
1248 | p_source_trx_id -- Source Transaction Identifier
1249 |
1250 | KNOWN ISSUES
1251 |
1252 | NOTES
1253 |
1254 |
1255 | MODIFICATION HISTORY
1256 | Date Author Description of Changes
1257 | 11-APR-07 RRAVIKIR Created
1258 |
1259 *=======================================================================*/
1260 PROCEDURE populate_alc_total_tax(
1261 p_api_version IN NUMBER,
1262 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1263 x_return_status OUT NOCOPY VARCHAR2,
1264 x_msg_count OUT NOCOPY NUMBER,
1265 x_msg_data OUT NOCOPY VARCHAR2,
1266 p_asset_id IN NUMBER,
1267 p_request_id IN NUMBER,
1268 p_serialized_asset IN VARCHAR2 DEFAULT NULL) IS
1269
1270 -- Local variables
1271 l_api_name CONSTANT VARCHAR2(30) := 'populate_alc_total_tax';
1272 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1273 l_total_tax_amount NUMBER;
1274 i NUMBER;
1275 j NUMBER;
1276
1277 -- Local data structure
1278 l_txsv_tbl txsv_tbl_type;
1279 lx_txsv_tbl txsv_tbl_type;
1280
1281 -- Cursors
1282 CURSOR l_taxablelines_csr(cp_kle_id IN NUMBER, cp_request_id IN NUMBER) IS
1283 SELECT id
1284 FROM okl_tax_sources
1285 WHERE trx_id IN (SELECT id
1286 FROM okl_trx_assets
1287 WHERE req_asset_id = cp_request_id)
1288 AND kle_id = cp_kle_id
1289 AND tax_call_type_code = G_UPFRONT_TAX
1290 AND tax_line_status_code = G_ACTIVE_STATUS
1291 AND entity_code = G_ASSETS_ENTITY_CODE
1292 AND event_class_code = G_ALC_EVENT_CODE;
1293
1294 CURSOR l_taxablelines_ser_csr(cp_kle_id IN NUMBER, cp_request_id IN NUMBER, cp_sty_id IN NUMBER) IS
1295 SELECT id
1296 FROM okl_tax_sources
1297 WHERE trx_id IN (SELECT id
1298 FROM okl_trx_assets
1299 WHERE req_asset_id = cp_request_id)
1300 AND kle_id = cp_kle_id
1301 AND sty_id = cp_sty_id
1302 AND tax_call_type_code = G_UPFRONT_TAX
1303 AND tax_line_status_code = G_INACTIVE_STATUS
1304 AND entity_code = G_ASSETS_ENTITY_CODE
1305 AND event_class_code = G_ALC_EVENT_CODE;
1306
1307 CURSOR l_alc_total_tax_ser_csr(cp_request_id IN NUMBER, cp_kle_id IN NUMBER, cp_sty_id IN NUMBER) IS
1308 SELECT SUM(total_tax)
1309 FROM okl_tax_sources
1310 WHERE trx_id IN (SELECT id
1311 FROM okl_trx_assets
1312 WHERE req_asset_id = cp_request_id)
1313 AND kle_id = cp_kle_id
1314 AND sty_id = cp_sty_id
1315 AND tax_call_type_code = G_UPFRONT_TAX
1316 AND tax_line_status_code = G_INACTIVE_STATUS
1317 AND entity_code = G_ASSETS_ENTITY_CODE
1318 AND event_class_code = G_ALC_EVENT_CODE;
1319
1320 CURSOR l_alc_total_tax_csr(cp_request_id IN NUMBER) IS
1321 SELECT SUM(total_tax)
1322 FROM okl_tax_sources
1323 WHERE trx_id IN (SELECT id
1324 FROM okl_trx_assets
1325 WHERE req_asset_id = cp_request_id)
1326 AND tax_call_type_code = G_UPFRONT_TAX
1327 AND tax_line_status_code = G_ACTIVE_STATUS
1328 AND entity_code = G_ASSETS_ENTITY_CODE
1329 AND event_class_code = G_ALC_EVENT_CODE;
1330
1331 CURSOR l_fetch_stream_types_csr(cp_kle_id IN NUMBER, cp_request_id IN NUMBER) IS
1332 SELECT DISTINCT sty_id
1333 FROM okl_tax_sources
1334 WHERE trx_id IN (SELECT id
1335 FROM okl_trx_assets
1336 WHERE req_asset_id = cp_request_id)
1337 AND kle_id = cp_kle_id
1338 AND tax_call_type_code = G_UPFRONT_TAX
1339 AND tax_line_status_code = G_INACTIVE_STATUS
1340 AND entity_code = G_ASSETS_ENTITY_CODE
1341 AND event_class_code = G_ALC_EVENT_CODE;
1342
1343 BEGIN
1344 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1345 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax','Begin(+)');
1346 END IF;
1347
1348 --Print Input Variables
1349 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1350 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax.',
1351 'p_init_msg_list :'||p_init_msg_list);
1352 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax.',
1353 'p_asset_id :'||p_asset_id);
1354 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax.',
1355 'p_request_id :'||p_request_id);
1356 END IF;
1357
1358 -- Get the modified tax lines from tax sources, sum up the total tax amount
1359 -- and store in alc_serialized_total_tax column of okl_tax_sources
1360 i := 1;
1361 IF (p_serialized_asset = 'Y') THEN
1362 FOR l_fetch_stream_types_rec IN l_fetch_stream_types_csr(cp_kle_id => p_asset_id,
1363 cp_request_id => p_request_id) LOOP
1364 j := 1;
1365 FOR l_taxablelines_ser_rec IN l_taxablelines_ser_csr(cp_kle_id => p_asset_id,
1366 cp_request_id => p_request_id,
1367 cp_sty_id => l_fetch_stream_types_rec.sty_id) LOOP
1368
1369 IF (j = 1) THEN
1370 OPEN l_alc_total_tax_ser_csr(cp_request_id => p_request_id,
1371 cp_kle_id => p_asset_id,
1372 cp_sty_id => l_fetch_stream_types_rec.sty_id);
1373 FETCH l_alc_total_tax_ser_csr INTO l_total_tax_amount;
1374 CLOSE l_alc_total_tax_ser_csr;
1375
1376 j := j + 1;
1377 END IF;
1378
1379 IF l_total_tax_amount IS NULL THEN
1380 l_total_tax_amount := 0;
1381 END IF;
1382 -- Populate Tax Sources data structure and update total tax
1383 l_txsv_tbl(i).id := l_taxablelines_ser_rec.id;
1384 l_txsv_tbl(i).alc_serialized_total_tax := l_total_tax_amount;
1385 l_txsv_tbl(i).tax_line_status_code := G_ACTIVE_STATUS;
1386
1387 i := i + 1;
1388
1389 END LOOP;
1390 END LOOP;
1391 ELSE
1392 FOR l_taxablelines_rec IN l_taxablelines_csr(cp_kle_id => p_asset_id, cp_request_id => p_request_id) LOOP
1393
1394 IF (i = 1) THEN
1395 OPEN l_alc_total_tax_csr(cp_request_id => p_request_id);
1396 FETCH l_alc_total_tax_csr INTO l_total_tax_amount;
1397 CLOSE l_alc_total_tax_csr;
1398 END IF;
1399
1400 IF l_total_tax_amount IS NULL THEN
1401 l_total_tax_amount := 0;
1402 END IF;
1403 -- Populate Tax Sources data structure and update total tax
1404 l_txsv_tbl(i).id := l_taxablelines_rec.id;
1405 l_txsv_tbl(i).alc_serialized_total_tax := l_total_tax_amount;
1406
1407 i := i+1;
1408
1409 END LOOP;
1410 END IF;
1411
1412 IF (l_txsv_tbl.COUNT > 0) THEN
1413 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1414 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax',
1415 'Calling okl_tax_sources_pub.update_tax_sources for updating Total Tax for all Lines in Tax Sources');
1416 END IF;
1417
1418 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
1419 ,p_init_msg_list => p_init_msg_list
1420 ,x_return_status => l_return_status
1421 ,x_msg_count => x_msg_count
1422 ,x_msg_data => x_msg_data
1423 ,p_txsv_tbl => l_txsv_tbl
1424 ,x_txsv_tbl => lx_txsv_tbl);
1425
1426 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1427 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax',
1428 'Return Status' || l_return_status);
1429 END IF;
1430
1431 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1432 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1433 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1434 RAISE OKL_API.G_EXCEPTION_ERROR;
1435 END IF;
1436
1437 END IF;
1438
1439 x_return_status := l_return_status;
1440
1441 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1442 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax ','End(-)');
1443 END IF;
1444
1445 EXCEPTION
1446
1447 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1448
1449 IF (l_alc_total_tax_csr%ISOPEN) THEN
1450 CLOSE l_alc_total_tax_csr;
1451 END IF;
1452
1453 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1454 CLOSE l_taxablelines_ser_csr;
1455 END IF;
1456
1457 IF (l_taxablelines_csr%ISOPEN) THEN
1458 CLOSE l_taxablelines_csr;
1459 END IF;
1460
1461 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1462 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax ',
1463 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
1464 END IF;
1465
1466 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1467 CLOSE l_fetch_stream_types_csr;
1468 END IF;
1469
1470 x_return_status := OKL_API.G_RET_STS_ERROR;
1471
1472 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1473
1474 IF (l_alc_total_tax_csr%ISOPEN) THEN
1475 CLOSE l_alc_total_tax_csr;
1476 END IF;
1477
1478 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1479 CLOSE l_taxablelines_ser_csr;
1480 END IF;
1481
1482 IF (l_taxablelines_csr%ISOPEN) THEN
1483 CLOSE l_taxablelines_csr;
1484 END IF;
1485
1486 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1487 CLOSE l_fetch_stream_types_csr;
1488 END IF;
1489
1490 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1491 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax ',
1492 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
1493 END IF;
1494
1495 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1496
1497 WHEN OTHERS THEN
1498
1499 IF (l_alc_total_tax_csr%ISOPEN) THEN
1500 CLOSE l_alc_total_tax_csr;
1501 END IF;
1502
1503 IF (l_taxablelines_ser_csr%ISOPEN) THEN
1504 CLOSE l_taxablelines_ser_csr;
1505 END IF;
1506
1507 IF (l_taxablelines_csr%ISOPEN) THEN
1508 CLOSE l_taxablelines_csr;
1509 END IF;
1510
1511 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1512 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_alc_total_tax ',
1513 'EXCEPTION :'||sqlerrm);
1514 END IF;
1515
1516 IF (l_fetch_stream_types_csr%ISOPEN) THEN
1517 CLOSE l_fetch_stream_types_csr;
1518 END IF;
1519
1520 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1521 -- unexpected error
1522 OKL_API.set_message(p_app_name => g_app_name,
1523 p_msg_name => g_unexpected_error,
1524 p_token1 => g_sqlcode_token,
1525 p_token1_value => sqlcode,
1526 p_token2 => g_sqlerrm_token,
1527 p_token2_value => sqlerrm);
1528
1529 END populate_alc_total_tax;
1530
1531 /*========================================================================
1532 | PRIVATE PROCEDURE update_tax_sources_total
1533 |
1534 | DESCRIPTION
1535 | This procedure fetches the tax amount from ZX_LINES and updates
1536 | the tax sources
1537 |
1538 | CALLED FROM
1539 | process_contract_reversal_tax()
1540 | process_quote_tax()
1541 | process_asset_loc_tax()
1542 | process_booking_upfront_tax()
1543 | process_quoting_upfront_tax()
1544 | process_tax_determ_override()
1545 | process_tax_details_override()
1546 | process_rebook_upfront_tax()
1547 |
1548 | CALLS PROCEDURES/FUNCTIONS
1549 | okl_tax_sources_pub.update_tax_sources()
1550 | populate_alc_total_tax()
1551 |
1552 | PARAMETERS
1553 | p_source_trx_id -- Source Transaction Identifier
1554 |
1555 | KNOWN ISSUES
1556 |
1557 | NOTES
1558 |
1559 |
1560 | MODIFICATION HISTORY
1561 | Date Author Description of Changes
1562 | 11-APR-07 RRAVIKIR Created
1563 |
1564 *=======================================================================*/
1565 PROCEDURE update_tax_sources_total(
1566 p_api_version IN NUMBER,
1567 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1568 x_return_status OUT NOCOPY VARCHAR2,
1569 x_msg_count OUT NOCOPY NUMBER,
1570 x_msg_data OUT NOCOPY VARCHAR2,
1571 p_source_trx_id IN NUMBER,
1572 p_source_trx_name IN VARCHAR2 DEFAULT NULL,
1573 p_serialized_asset IN VARCHAR2 DEFAULT NULL) IS
1574
1575 -- Local variables
1576 l_api_name CONSTANT VARCHAR2(30) := 'update_tax_sources_total';
1577 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1578 l_total_tax_amount NUMBER;
1579 i NUMBER;
1580
1581 -- Local data structure
1582 l_txsv_tbl txsv_tbl_type;
1583 lx_txsv_tbl txsv_tbl_type;
1584
1585 -- Cursors
1586 CURSOR l_taxablelines_rbk_csr(cp_trx_id IN NUMBER) IS
1587 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
1588 trx_level_type
1589 FROM okl_tax_sources
1590 WHERE trx_id = cp_trx_id
1591 AND tax_call_type_code = G_UPFRONT_TAX
1592 AND tax_line_status_code = G_INACTIVE_STATUS
1593 AND adjusted_doc_trx_id IS NOT NULL;
1594
1595 CURSOR l_taxablelines_csr(cp_trx_id IN NUMBER) IS
1596 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
1597 trx_level_type
1598 FROM okl_tax_sources
1599 WHERE trx_id = cp_trx_id
1600 AND tax_call_type_code = G_UPFRONT_TAX
1601 AND tax_line_status_code = G_ACTIVE_STATUS;
1602
1603 CURSOR l_taxablelines_txs_csr(cp_trx_id IN NUMBER) IS
1604 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
1605 trx_level_type
1606 FROM okl_tax_sources
1607 WHERE trx_id = cp_trx_id
1608 AND tax_call_type_code = G_TAX_SCHEDULE
1609 AND tax_line_status_code = G_ACTIVE_STATUS;
1610
1611 CURSOR l_taxablelines_bill_csr(cp_trx_id IN NUMBER) IS
1612 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
1613 trx_level_type
1614 FROM okl_tax_sources
1615 WHERE trx_id = cp_trx_id
1616 AND tax_call_type_code = G_INVOICE_TAX
1617 AND tax_line_status_code = G_ACTIVE_STATUS;
1618
1619 CURSOR l_zxlinestotaltax_csr(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER,
1620 cp_application_id IN NUMBER, cp_event_class_code IN VARCHAR2,
1621 cp_entity_code IN VARCHAR2, cp_trx_level_type IN VARCHAR2) IS
1622 SELECT SUM(tax_amt) total_tax
1623 FROM zx_lines
1624 WHERE trx_id = cp_trx_id
1625 AND trx_line_id = cp_trx_line_id
1626 AND application_id = cp_application_id
1627 AND event_class_code = cp_event_class_code
1628 AND entity_code = cp_entity_code
1629 AND trx_level_type = cp_trx_level_type
1630 AND nvl(cancel_flag, 'N') <> 'Y';
1631
1632 CURSOR l_totaltax_quote_csr(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER,
1633 cp_application_id IN NUMBER, cp_event_class_code IN VARCHAR2,
1634 cp_entity_code IN VARCHAR2, cp_trx_level_type IN VARCHAR2) IS
1635 SELECT SUM(tax_amt) total_tax
1636 FROM zx_detail_tax_lines_gt
1637 WHERE trx_id = cp_trx_id
1638 AND trx_line_id = cp_trx_line_id
1639 AND application_id = cp_application_id
1640 AND event_class_code = cp_event_class_code
1641 AND entity_code = cp_entity_code
1642 AND trx_level_type = cp_trx_level_type
1643 AND nvl(cancel_flag, 'N') <> 'Y';
1644
1645 CURSOR l_taxablelines_alc_ser_csr(cp_trx_id IN NUMBER) IS
1646 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
1647 trx_level_type
1648 FROM okl_tax_sources
1649 WHERE trx_id = cp_trx_id
1650 AND tax_call_type_code = G_UPFRONT_TAX
1651 AND tax_line_status_code = G_INACTIVE_STATUS;
1652
1653 BEGIN
1654 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1655 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total','Begin(+)');
1656 END IF;
1657
1658 --Print Input Variables
1659 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1660 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total.',
1661 'p_init_msg_list :'||p_init_msg_list);
1662 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total.',
1663 'p_source_trx_id :'||p_source_trx_id);
1664 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total.',
1665 'p_source_trx_name :'||p_source_trx_name);
1666 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total.',
1667 'p_serialized_asset :'||p_serialized_asset);
1668 END IF;
1669
1670 i := 1;
1671 IF p_source_trx_name = 'Estimated Billing' THEN
1672 FOR l_taxablelines_bill_rec IN l_taxablelines_bill_csr(cp_trx_id => p_source_trx_id) LOOP
1673
1674 -- Get the modified tax lines from zx_detail_tax_lines_gt, sum up the total tax amount
1675 -- and store in total_tax column of okl_tax_sources
1676 OPEN l_totaltax_quote_csr(cp_trx_id => p_source_trx_id,
1677 cp_trx_line_id => l_taxablelines_bill_rec.trx_line_id,
1678 cp_application_id => l_taxablelines_bill_rec.application_id,
1679 cp_event_class_code => l_taxablelines_bill_rec.event_class_code,
1680 cp_entity_code => l_taxablelines_bill_rec.entity_code,
1681 cp_trx_level_type => l_taxablelines_bill_rec.trx_level_type);
1682 FETCH l_totaltax_quote_csr INTO l_total_tax_amount;
1683 CLOSE l_totaltax_quote_csr;
1684
1685 IF l_total_tax_amount IS NULL THEN
1686 l_total_tax_amount := 0;
1687 END IF;
1688
1689 -- Populate Tax Sources data structure and update total tax
1690 l_txsv_tbl(i).id := l_taxablelines_bill_rec.id;
1691 l_txsv_tbl(i).total_tax := l_total_tax_amount;
1692
1693 i := i+1;
1694
1695 END LOOP;
1696
1697 ELSIF p_source_trx_name = 'Rebook' THEN
1698
1699 -- Get the modified tax lines from zx_lines, sum up the total tax amount
1700 -- and store in total_tax column of okl_tax_sources
1701 FOR l_taxablelines_rbk_rec IN l_taxablelines_rbk_csr(cp_trx_id => p_source_trx_id) LOOP
1702 OPEN l_zxlinestotaltax_csr(cp_trx_id => p_source_trx_id,
1703 cp_trx_line_id => l_taxablelines_rbk_rec.trx_line_id,
1704 cp_application_id => l_taxablelines_rbk_rec.application_id,
1705 cp_event_class_code => l_taxablelines_rbk_rec.event_class_code,
1706 cp_entity_code => l_taxablelines_rbk_rec.entity_code,
1707 cp_trx_level_type => l_taxablelines_rbk_rec.trx_level_type);
1708 FETCH l_zxlinestotaltax_csr INTO l_total_tax_amount;
1709 CLOSE l_zxlinestotaltax_csr;
1710
1711 IF l_total_tax_amount IS NULL THEN
1712 l_total_tax_amount := 0;
1713 END IF;
1714 -- Populate Tax Sources data structure and update total tax
1715 l_txsv_tbl(i).id := l_taxablelines_rbk_rec.id;
1716 l_txsv_tbl(i).total_tax := l_total_tax_amount;
1717
1718 i := i+1;
1719
1720 END LOOP;
1721
1722 ELSIF (p_source_trx_name = 'Asset Relocation' AND p_serialized_asset = 'Y') THEN
1723
1724 -- Get the modified tax lines from zx_lines, sum up the total tax amount
1725 -- and store in total_tax column of okl_tax_sources
1726 FOR l_taxablelines_alc_ser_rec IN l_taxablelines_alc_ser_csr(cp_trx_id => p_source_trx_id) LOOP
1727 OPEN l_zxlinestotaltax_csr(cp_trx_id => p_source_trx_id,
1728 cp_trx_line_id => l_taxablelines_alc_ser_rec.trx_line_id,
1729 cp_application_id => l_taxablelines_alc_ser_rec.application_id,
1730 cp_event_class_code => l_taxablelines_alc_ser_rec.event_class_code,
1731 cp_entity_code => l_taxablelines_alc_ser_rec.entity_code,
1732 cp_trx_level_type => l_taxablelines_alc_ser_rec.trx_level_type);
1733 FETCH l_zxlinestotaltax_csr INTO l_total_tax_amount;
1734 CLOSE l_zxlinestotaltax_csr;
1735
1736 IF l_total_tax_amount IS NULL THEN
1737 l_total_tax_amount := 0;
1738 END IF;
1739 -- Populate Tax Sources data structure and update total tax
1740 l_txsv_tbl(i).id := l_taxablelines_alc_ser_rec.id;
1741 l_txsv_tbl(i).total_tax := l_total_tax_amount;
1742
1743 i := i+1;
1744 END LOOP;
1745
1746 ELSIF (p_source_trx_name = 'Tax Schedule') THEN
1747
1748 -- Get the modified tax lines from zx_lines_det_factors, sum up the total tax amount
1749 -- and store in total_tax column of okl_tax_sources
1750 FOR l_taxablelines_txs_rec IN l_taxablelines_txs_csr(cp_trx_id => p_source_trx_id) LOOP
1751 OPEN l_totaltax_quote_csr(cp_trx_id => p_source_trx_id,
1752 cp_trx_line_id => l_taxablelines_txs_rec.trx_line_id,
1753 cp_application_id => l_taxablelines_txs_rec.application_id,
1754 cp_event_class_code => l_taxablelines_txs_rec.event_class_code,
1755 cp_entity_code => l_taxablelines_txs_rec.entity_code,
1756 cp_trx_level_type => l_taxablelines_txs_rec.trx_level_type);
1757 FETCH l_totaltax_quote_csr INTO l_total_tax_amount;
1758 CLOSE l_totaltax_quote_csr;
1759
1760 IF l_total_tax_amount IS NOT NULL THEN
1761 -- Populate Tax Sources data structure and update total tax
1762 l_txsv_tbl(i).id := l_taxablelines_txs_rec.id;
1763 l_txsv_tbl(i).total_tax := l_total_tax_amount;
1764 END IF;
1765
1766 i := i+1;
1767 END LOOP;
1768
1769 ELSE
1770
1771 -- Get the modified tax lines from zx_lines, sum up the total tax amount
1772 -- and store in total_tax column of okl_tax_sources
1773 FOR l_taxablelines_rec IN l_taxablelines_csr(cp_trx_id => p_source_trx_id) LOOP
1774
1775 IF p_source_trx_name = 'Sales Quote' THEN
1776 OPEN l_totaltax_quote_csr(cp_trx_id => p_source_trx_id,
1777 cp_trx_line_id => l_taxablelines_rec.trx_line_id,
1778 cp_application_id => l_taxablelines_rec.application_id,
1779 cp_event_class_code => l_taxablelines_rec.event_class_code,
1780 cp_entity_code => l_taxablelines_rec.entity_code,
1781 cp_trx_level_type => l_taxablelines_rec.trx_level_type);
1782 FETCH l_totaltax_quote_csr INTO l_total_tax_amount;
1783 CLOSE l_totaltax_quote_csr;
1784 ELSE
1785 OPEN l_zxlinestotaltax_csr(cp_trx_id => p_source_trx_id,
1786 cp_trx_line_id => l_taxablelines_rec.trx_line_id,
1787 cp_application_id => l_taxablelines_rec.application_id,
1788 cp_event_class_code => l_taxablelines_rec.event_class_code,
1789 cp_entity_code => l_taxablelines_rec.entity_code,
1790 cp_trx_level_type => l_taxablelines_rec.trx_level_type);
1791 FETCH l_zxlinestotaltax_csr INTO l_total_tax_amount;
1792 CLOSE l_zxlinestotaltax_csr;
1793 END IF;
1794
1795 IF l_total_tax_amount IS NULL THEN
1796 l_total_tax_amount := 0;
1797 END IF;
1798 -- Populate Tax Sources data structure and update total tax
1799 l_txsv_tbl(i).id := l_taxablelines_rec.id;
1800 l_txsv_tbl(i).total_tax := l_total_tax_amount;
1801
1802 IF (p_source_trx_name = 'Split Asset') THEN
1803 -- This is to make adjustable tax sources for previous active Upfront tax
1804 -- after reverse document call
1805 l_txsv_tbl(i).tax_line_status_code := G_INACTIVE_STATUS;
1806 END IF;
1807
1808 i := i+1;
1809
1810 END LOOP;
1811 END IF;
1812
1813 IF (l_txsv_tbl.COUNT > 0) THEN
1814 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1815 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total',
1816 'Calling okl_tax_sources_pub.update_tax_sources for updating Total Tax for all Lines in Tax Sources');
1817 END IF;
1818
1819 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
1820 ,p_init_msg_list => p_init_msg_list
1821 ,x_return_status => l_return_status
1822 ,x_msg_count => x_msg_count
1823 ,x_msg_data => x_msg_data
1824 ,p_txsv_tbl => l_txsv_tbl
1825 ,x_txsv_tbl => lx_txsv_tbl);
1826
1827 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1828 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total',
1829 'Return Status' || l_return_status);
1830 END IF;
1831
1832 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1833 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1834 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1835 RAISE OKL_API.G_EXCEPTION_ERROR;
1836 END IF;
1837
1838 END IF;
1839
1840 x_return_status := l_return_status;
1841
1842 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1843 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total ','End(-)');
1844 END IF;
1845
1846 EXCEPTION
1847
1848 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1849
1850 IF (l_taxablelines_csr%ISOPEN) THEN
1851 CLOSE l_taxablelines_csr;
1852 END IF;
1853
1854 IF (l_taxablelines_bill_csr%ISOPEN) THEN
1855 CLOSE l_taxablelines_bill_csr;
1856 END IF;
1857
1858 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
1859 CLOSE l_zxlinestotaltax_csr;
1860 END IF;
1861
1862 IF (l_totaltax_quote_csr%ISOPEN) THEN
1863 CLOSE l_totaltax_quote_csr;
1864 END IF;
1865
1866 IF (l_taxablelines_rbk_csr%ISOPEN) THEN
1867 CLOSE l_taxablelines_rbk_csr;
1868 END IF;
1869
1870 IF (l_taxablelines_alc_ser_csr%ISOPEN) THEN
1871 CLOSE l_taxablelines_alc_ser_csr;
1872 END IF;
1873
1874 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1875 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total ',
1876 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
1877 END IF;
1878
1879 x_return_status := OKL_API.G_RET_STS_ERROR;
1880
1881 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1882
1883 IF (l_taxablelines_csr%ISOPEN) THEN
1884 CLOSE l_taxablelines_csr;
1885 END IF;
1886
1887 IF (l_taxablelines_bill_csr%ISOPEN) THEN
1888 CLOSE l_taxablelines_bill_csr;
1889 END IF;
1890
1891 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
1892 CLOSE l_zxlinestotaltax_csr;
1893 END IF;
1894
1895 IF (l_totaltax_quote_csr%ISOPEN) THEN
1896 CLOSE l_totaltax_quote_csr;
1897 END IF;
1898
1899 IF (l_taxablelines_rbk_csr%ISOPEN) THEN
1900 CLOSE l_taxablelines_rbk_csr;
1901 END IF;
1902
1903 IF (l_taxablelines_alc_ser_csr%ISOPEN) THEN
1904 CLOSE l_taxablelines_alc_ser_csr;
1905 END IF;
1906
1907 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1908 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total ',
1909 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
1910 END IF;
1911
1912 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1913
1914 WHEN OTHERS THEN
1915
1916 IF (l_taxablelines_csr%ISOPEN) THEN
1917 CLOSE l_taxablelines_csr;
1918 END IF;
1919
1920 IF (l_taxablelines_bill_csr%ISOPEN) THEN
1921 CLOSE l_taxablelines_bill_csr;
1922 END IF;
1923
1924 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
1925 CLOSE l_zxlinestotaltax_csr;
1926 END IF;
1927
1928 IF (l_totaltax_quote_csr%ISOPEN) THEN
1929 CLOSE l_totaltax_quote_csr;
1930 END IF;
1931
1932 IF (l_taxablelines_rbk_csr%ISOPEN) THEN
1933 CLOSE l_taxablelines_rbk_csr;
1934 END IF;
1935
1936 IF (l_taxablelines_alc_ser_csr%ISOPEN) THEN
1937 CLOSE l_taxablelines_alc_ser_csr;
1938 END IF;
1939
1940 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
1941 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.update_tax_sources_total ',
1942 'EXCEPTION :'||sqlerrm);
1943 END IF;
1944
1945 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1946 -- unexpected error
1947 OKL_API.set_message(p_app_name => g_app_name,
1948 p_msg_name => g_unexpected_error,
1949 p_token1 => g_sqlcode_token,
1950 p_token1_value => sqlcode,
1951 p_token2 => g_sqlerrm_token,
1952 p_token2_value => sqlerrm);
1953
1954 END update_tax_sources_total;
1955
1956 /*========================================================================
1957 | PRIVATE PROCEDURE make_tax_sources_reportable
1958 |
1959 | DESCRIPTION
1960 | This procedure makes the tax sources reportable
1961 |
1962 | CALLED FROM
1963 | process_asset_loc_tax()
1964 | process_booking_upfront_tax()
1965 | process_rebook_upfront_tax()
1966 |
1967 | CALLS PROCEDURES/FUNCTIONS
1968 |
1969 |
1970 | PARAMETERS
1971 | p_source_trx_id -- Source Transaction Identifier
1972 |
1973 | KNOWN ISSUES
1974 |
1975 | NOTES
1976 |
1977 |
1978 | MODIFICATION HISTORY
1979 | Date Author Description of Changes
1980 | 16-MAY-07 RRAVIKIR Created
1981 |
1982 *=======================================================================*/
1983 PROCEDURE make_tax_sources_reportable(
1984 p_api_version IN NUMBER,
1985 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1986 x_return_status OUT NOCOPY VARCHAR2,
1987 x_msg_count OUT NOCOPY NUMBER,
1988 x_msg_data OUT NOCOPY VARCHAR2,
1989 p_source_trx_id IN NUMBER) IS
1990
1991 -- Local variables
1992 l_api_name CONSTANT VARCHAR2(30) := 'make_tax_sources_reportable';
1993 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1994 l_total_tax_amount NUMBER;
1995
1996 -- Local data structure
1997 l_txsv_tbl txsv_tbl_type;
1998 lx_txsv_tbl txsv_tbl_type;
1999
2000 i NUMBER;
2001
2002 -- Cursors
2003 CURSOR l_taxablelines_csr(cp_trx_id IN NUMBER) IS
2004 SELECT id, trx_line_id,application_id, event_class_code, entity_code,
2005 trx_level_type
2006 FROM okl_tax_sources
2007 WHERE trx_id = cp_trx_id
2008 AND tax_call_type_code = G_UPFRONT_TAX
2009 AND tax_line_status_code = G_ACTIVE_STATUS;
2010
2011 BEGIN
2012 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2013 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable','Begin(+)');
2014 END IF;
2015
2016 --Print Input Variables
2017 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2018 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable.',
2019 'p_init_msg_list :'||p_init_msg_list);
2020 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable.',
2021 'p_source_trx_id :'||p_source_trx_id);
2022 END IF;
2023
2024 i := 1;
2025 FOR l_taxablelines_rec IN l_taxablelines_csr(cp_trx_id => p_source_trx_id) LOOP
2026
2027 -- Populate Tax Sources data structure and update total tax
2028 l_txsv_tbl(i).id := l_taxablelines_rec.id;
2029 l_txsv_tbl(i).tax_reporting_flag := 'Y';
2030 l_txsv_tbl(i).reported_yn := 'Y';
2031
2032 i := i + 1;
2033 END LOOP;
2034
2035 IF (l_txsv_tbl.COUNT > 0) THEN
2036 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2037 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable',
2038 'Calling okl_tax_sources_pub.update_tax_sources for making Tax Sources Reportable');
2039 END IF;
2040
2041 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
2042 ,p_init_msg_list => p_init_msg_list
2043 ,x_return_status => l_return_status
2044 ,x_msg_count => x_msg_count
2045 ,x_msg_data => x_msg_data
2046 ,p_txsv_tbl => l_txsv_tbl
2047 ,x_txsv_tbl => lx_txsv_tbl);
2048
2049 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2050 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable',
2051 'Return Status' || l_return_status);
2052 END IF;
2053
2054 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2055 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2056 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2057 RAISE OKL_API.G_EXCEPTION_ERROR;
2058 END IF;
2059
2060 END IF;
2061
2062 x_return_status := l_return_status;
2063
2064 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2065 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable ','End(-)');
2066 END IF;
2067
2068 EXCEPTION
2069
2070 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2071
2072 IF (l_taxablelines_csr%ISOPEN) THEN
2073 CLOSE l_taxablelines_csr;
2074 END IF;
2075
2076 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2077 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable ',
2078 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
2079 END IF;
2080
2081 x_return_status := OKL_API.G_RET_STS_ERROR;
2082
2083 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2084
2085 IF (l_taxablelines_csr%ISOPEN) THEN
2086 CLOSE l_taxablelines_csr;
2087 END IF;
2088
2089 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2090 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable ',
2091 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
2092 END IF;
2093
2094 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2095
2096 WHEN OTHERS THEN
2097
2098 IF (l_taxablelines_csr%ISOPEN) THEN
2099 CLOSE l_taxablelines_csr;
2100 END IF;
2101
2102 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2103 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.make_tax_sources_reportable ',
2104 'EXCEPTION :'||sqlerrm);
2105 END IF;
2106
2107 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2108 -- unexpected error
2109 OKL_API.set_message(p_app_name => g_app_name,
2110 p_msg_name => g_unexpected_error,
2111 p_token1 => g_sqlcode_token,
2112 p_token1_value => sqlcode,
2113 p_token2 => g_sqlerrm_token,
2114 p_token2_value => sqlerrm);
2115
2116 END make_tax_sources_reportable;
2117
2118 /*========================================================================
2119 | PRIVATE PROCEDURE process_final_upfront_tax
2120 |
2121 | DESCRIPTION
2122 | This procedure processes the final upfront tax for 'Booking', 'Asset
2123 | Location change' and 'Rebook' transactions
2124 |
2125 | CALLED FROM
2126 | Other procedures in this API
2127 |
2128 | CALLS PROCEDURES/FUNCTIONS
2129 | OKL_TAX_INTERFACE_PVT.mark_reporting_flag
2130 |
2131 | PARAMETERS
2132 | Input Parameters
2133 | p_trx_id -- Transaction identifier
2134 | p_application_id -- Application identifier
2135 | p_entity_code -- Entity code
2136 | p_event_class_code -- Event class code
2137 |
2138 | Output Parameters
2139 |
2140 | KNOWN ISSUES
2141 |
2142 | NOTES
2143 |
2144 |
2145 | MODIFICATION HISTORY
2146 | Date Author Description of Changes
2147 | 22-MAR-07 RRAVIKIR Created
2148 *=======================================================================*/
2149 PROCEDURE process_final_upfront_tax(
2150 p_api_version IN NUMBER,
2151 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2152 x_return_status OUT NOCOPY VARCHAR2,
2153 x_msg_count OUT NOCOPY NUMBER,
2154 x_msg_data OUT NOCOPY VARCHAR2,
2155 p_trx_id IN NUMBER,
2156 p_application_id IN NUMBER,
2157 p_entity_code IN VARCHAR2,
2158 p_event_class_code IN VARCHAR2) IS
2159
2160 -- Local variables
2161 l_api_version CONSTANT NUMBER := 1;
2162 l_api_name CONSTANT VARCHAR2(30) := 'process_final_upfront_tax';
2163 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2164
2165 BEGIN
2166
2167 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2168 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax','Begin(+)');
2169 END IF;
2170
2171 --Print Input Variables
2172 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2173 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2174 'p_init_msg_list :'||p_init_msg_list);
2175 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2176 'p_trx_id :'||p_trx_id);
2177 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2178 'p_application_id :'||p_application_id);
2179 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2180 'p_entity_code :'||p_entity_code);
2181 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2182 'p_event_class_code :'||p_event_class_code);
2183 END IF;
2184
2185 -- Required Values
2186 IF p_trx_id IS NULL THEN
2187 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
2188 p_token1 => G_COL_NAME_TOKEN,
2189 p_token1_value => 'TRX_ID');
2190 RAISE OKL_API.G_EXCEPTION_ERROR;
2191 END IF;
2192
2193 IF p_application_id IS NULL THEN
2194 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
2195 p_token1 => G_COL_NAME_TOKEN,
2196 p_token1_value => 'APPLICATION_ID');
2197 RAISE OKL_API.G_EXCEPTION_ERROR;
2198 END IF;
2199
2200 IF p_entity_code IS NULL THEN
2201 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
2202 p_token1 => G_COL_NAME_TOKEN,
2203 p_token1_value => 'ENTITY_CODE');
2204 RAISE OKL_API.G_EXCEPTION_ERROR;
2205 END IF;
2206
2207 IF p_event_class_code IS NULL THEN
2208 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
2209 p_token1 => G_COL_NAME_TOKEN,
2210 p_token1_value => 'EVENT_CLASS_CODE');
2211 RAISE OKL_API.G_EXCEPTION_ERROR;
2212 END IF;
2213 -- End required values
2214
2215 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2216 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2217 'Calling OKL_TAX_INTERFACE_PVT.mark_reporting_flag');
2218 END IF;
2219
2220 OKL_TAX_INTERFACE_PVT.mark_reporting_flag( p_api_version => p_api_version,
2221 p_init_msg_list => p_init_msg_list,
2222 x_return_status => l_return_status,
2223 x_msg_count => x_msg_count,
2224 x_msg_data => x_msg_data,
2225 p_trx_id => p_trx_id,
2226 p_application_id => p_application_id,
2227 p_entity_code => p_entity_code,
2228 p_event_class_code => p_event_class_code);
2229
2230 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2231 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax.',
2232 'Return Status' || l_return_status);
2233 END IF;
2234
2235 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2236 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2237 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2238 RAISE OKL_API.G_EXCEPTION_ERROR;
2239 END IF;
2240
2241 x_return_status := l_return_status;
2242
2243 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2244 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax ','End(-)');
2245 END IF;
2246
2247 EXCEPTION
2248 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2249
2250 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2251 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax ',
2252 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
2253 END IF;
2254
2255 x_return_status := OKL_API.G_RET_STS_ERROR;
2256
2257 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2258 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2259 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax ',
2260 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
2261 END IF;
2262
2263 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2264
2265 WHEN OTHERS THEN
2266
2267 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2268 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_final_upfront_tax ',
2269 'EXCEPTION :'||sqlerrm);
2270 END IF;
2271
2272 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2273 -- unexpected error
2274 OKL_API.set_message(p_app_name => g_app_name,
2275 p_msg_name => g_unexpected_error,
2276 p_token1 => g_sqlcode_token,
2277 p_token1_value => sqlcode,
2278 p_token2 => g_sqlerrm_token,
2279 p_token2_value => sqlerrm);
2280
2281 END process_final_upfront_tax;
2282
2283 /*========================================================================
2284 | PRIVATE PROCEDURE populate_tax_trx_details
2285 |
2286 | DESCRIPTION
2287 | This procedure is called by tax module to populate tax data into ZX global
2288 | session table. eBtax uses this table to show the tax data for Quote
2289 | objects (Sales Quote, Lease Application and Termination Quote)
2290 |
2291 | CALLED FROM OLM Tax Module
2292 |
2293 |
2294 | CALLS PROCEDURES/FUNCTIONS
2295 |
2296 |
2297 | PARAMETERS
2298 | p_trx_id -- Transaction Identifier
2299 | p_trx_line_id -- Transaction Line Identifier
2300 | p_application_id -- Application Identifier
2301 | p_trx_level_type -- Transaction level type
2302 | p_entity_code -- Entity code
2303 | p_event_class_code -- Event class code
2304 |
2305 | KNOWN ISSUES
2306 |
2307 | NOTES
2308 |
2309 |
2310 | MODIFICATION HISTORY
2311 | Date Author Description of Changes
2312 | 04-APR-07 RRAVIKIR Created
2313 |
2314 *=======================================================================*/
2315 PROCEDURE populate_tax_trx_details (
2316 p_api_version IN NUMBER,
2317 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2318 x_return_status OUT NOCOPY VARCHAR2,
2319 x_msg_count OUT NOCOPY NUMBER,
2320 x_msg_data OUT NOCOPY VARCHAR2,
2321 p_trx_id IN NUMBER,
2322 p_trx_line_id IN NUMBER,
2323 p_application_id IN NUMBER,
2324 p_trx_level_type IN VARCHAR2,
2325 p_entity_code IN VARCHAR2,
2326 p_event_class_code IN VARCHAR2) IS
2327
2328 -- Local variables
2329 l_api_version CONSTANT NUMBER := 1;
2330 l_api_name CONSTANT VARCHAR2(30) := 'populate_tax_trx_details';
2331 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2332
2333 -- Cursor to retrieve tax data
2334 CURSOR l_get_tax_data_csr IS
2335 SELECT tax_determine_date,
2336 tax_rate_id,
2337 tax_rate_code,
2338 taxable_amt,
2339 tax_exemption_id,
2340 tax_rate,
2341 tax_amt,
2342 tax_date,
2343 line_amt,
2344 internal_organization_id,
2345 application_id,
2346 entity_code,
2347 event_class_code,
2348 event_type_code ,
2349 trx_id,
2350 trx_line_id,
2351 trx_level_type,
2352 trx_line_number,
2353 tax_line_number ,
2354 tax_regime_id ,
2355 tax_regime_code ,
2356 tax_id,
2357 tax,
2358 tax_status_id,
2359 tax_status_code,
2360 tax_apportionment_line_number,
2361 legal_entity_id,
2362 trx_number,
2363 trx_date,
2364 tax_jurisdiction_id,
2365 tax_jurisdiction_code,
2366 tax_type_code,
2367 tax_currency_code ,
2368 taxable_amt_tax_curr,
2369 trx_currency_code,
2370 minimum_accountable_unit,
2371 precision,
2372 currency_conversion_type,
2373 currency_conversion_rate,
2374 currency_conversion_date
2375 FROM okl_tax_trx_details
2376 WHERE trx_id = p_trx_id
2377 AND trx_line_id = p_trx_line_id
2378 AND application_id = p_application_id
2379 AND trx_level_type = p_trx_level_type
2380 AND entity_code = p_entity_code
2381 AND event_class_code = p_event_class_code;
2382
2383 BEGIN
2384 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2385 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details','Begin(+)');
2386 END IF;
2387
2388 --Print Input Variables
2389 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2390 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2391 'p_init_msg_list :'||p_init_msg_list);
2392 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2393 'p_trx_id :'||p_trx_id);
2394 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2395 'p_trx_line_id :'||p_trx_line_id);
2396 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2397 'p_application_id :'||p_application_id);
2398 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2399 'p_trx_level_type :'||p_trx_level_type);
2400 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2401 'p_entity_code :'||p_entity_code);
2402 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2403 'p_event_class_code :'||p_event_class_code);
2404 END IF;
2405
2406 -- Populate the tax data into eBtax global session table
2407 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2408 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2409 'INSERT INTO zx_detail_tax_lines_gt');
2410 END IF;
2411
2412 FOR l_get_tax_data_rec IN l_get_tax_data_csr LOOP
2413 INSERT INTO zx_detail_tax_lines_gt(
2414 tax_line_id,
2415 tax_determine_date,
2416 tax_rate_id,
2417 tax_rate_code,
2418 taxable_amt,
2419 tax_exemption_id,
2420 tax_rate,
2421 tax_amt,
2422 tax_date,
2423 line_amt,
2424 internal_organization_id,
2425 application_id,
2426 entity_code,
2427 event_class_code,
2428 event_type_code ,
2429 trx_id,
2430 trx_line_id,
2431 trx_level_type,
2432 trx_line_number,
2433 tax_line_number ,
2434 tax_regime_id ,
2435 tax_regime_code ,
2436 tax_id,
2437 tax,
2438 tax_status_id,
2439 tax_status_code,
2440 tax_apportionment_line_number,
2441 legal_entity_id,
2442 trx_number,
2443 trx_date,
2444 tax_jurisdiction_id,
2445 tax_jurisdiction_code,
2446 tax_type_code,
2447 tax_currency_code ,
2448 taxable_amt_tax_curr,
2449 trx_currency_code,
2450 minimum_accountable_unit,
2451 precision,
2452 currency_conversion_type,
2453 currency_conversion_rate,
2454 currency_conversion_date,
2455 created_by,
2456 creation_date,
2457 last_updated_by,
2458 last_update_date,
2459 last_update_login,
2460 object_version_number) VALUES
2461 (
2462 zx_lines_s.nextval,
2463 l_get_tax_data_rec.tax_determine_date,
2464 l_get_tax_data_rec.tax_rate_id,
2465 l_get_tax_data_rec.tax_rate_code,
2466 l_get_tax_data_rec.taxable_amt,
2467 l_get_tax_data_rec.tax_exemption_id,
2468 l_get_tax_data_rec.tax_rate,
2469 l_get_tax_data_rec.tax_amt,
2470 l_get_tax_data_rec.tax_date,
2471 l_get_tax_data_rec.line_amt,
2472 l_get_tax_data_rec.internal_organization_id,
2473 l_get_tax_data_rec.application_id,
2474 l_get_tax_data_rec.entity_code,
2475 l_get_tax_data_rec.event_class_code,
2476 l_get_tax_data_rec.event_type_code ,
2477 l_get_tax_data_rec.trx_id,
2478 l_get_tax_data_rec.trx_line_id,
2479 l_get_tax_data_rec.trx_level_type,
2480 l_get_tax_data_rec.trx_line_number,
2481 l_get_tax_data_rec.tax_line_number ,
2482 l_get_tax_data_rec.tax_regime_id ,
2483 l_get_tax_data_rec.tax_regime_code ,
2484 l_get_tax_data_rec.tax_id,
2485 l_get_tax_data_rec.tax,
2486 l_get_tax_data_rec.tax_status_id,
2487 l_get_tax_data_rec.tax_status_code,
2488 l_get_tax_data_rec.tax_apportionment_line_number,
2489 l_get_tax_data_rec.legal_entity_id,
2490 l_get_tax_data_rec.trx_number,
2491 l_get_tax_data_rec.trx_date,
2492 l_get_tax_data_rec.tax_jurisdiction_id,
2493 l_get_tax_data_rec.tax_jurisdiction_code,
2494 l_get_tax_data_rec.tax_type_code,
2495 l_get_tax_data_rec.tax_currency_code,
2496 l_get_tax_data_rec.taxable_amt_tax_curr,
2497 l_get_tax_data_rec.trx_currency_code,
2498 l_get_tax_data_rec.minimum_accountable_unit,
2499 l_get_tax_data_rec.precision,
2500 l_get_tax_data_rec.currency_conversion_type,
2501 l_get_tax_data_rec.currency_conversion_rate,
2502 l_get_tax_data_rec.currency_conversion_date,
2503 G_USER_ID,
2504 SYSDATE,
2505 G_USER_ID,
2506 SYSDATE,
2507 G_LOGIN_ID,
2508 1);
2509 END LOOP;
2510
2511 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2512 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details.',
2513 'Return Status' || l_return_status);
2514 END IF;
2515
2516 x_return_status := l_return_status;
2517
2518 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2519 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details ','End(-)');
2520 END IF;
2521
2522 EXCEPTION
2523 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2524
2525 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2526 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details ',
2527 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
2528 END IF;
2529
2530 x_return_status := OKL_API.G_RET_STS_ERROR;
2531
2532 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2533 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2534 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details ',
2535 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
2536 END IF;
2537
2538 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2539
2540 WHEN OTHERS THEN
2541
2542 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2543 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_trx_details ',
2544 'EXCEPTION :'||sqlerrm);
2545 END IF;
2546
2547 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2548 -- unexpected error
2549 OKL_API.set_message(p_app_name => g_app_name,
2550 p_msg_name => g_unexpected_error,
2551 p_token1 => g_sqlcode_token,
2552 p_token1_value => sqlcode,
2553 p_token2 => g_sqlerrm_token,
2554 p_token2_value => sqlerrm);
2555
2556 END populate_tax_trx_details;
2557
2558 /*========================================================================
2559 | PRIVATE PROCEDURE process_contract_reversal_tax
2560 |
2561 | DESCRIPTION
2562 | This procedure is called from calculate_sales_tax procedure to reverse the
2563 | tax entries during contract reversal
2564 |
2565 | CALLED FROM calculate_sales_tax()
2566 |
2567 |
2568 | CALLS PROCEDURES/FUNCTIONS
2569 | OKL_TAX_SOURCES_PUB.update_tax_sources()
2570 |
2571 |
2572 | PARAMETERS
2573 | p_source_trx_id -- Source transaction ID
2574 | p_source_trx_name -- Source transaction Name
2575 | p_source_table -- Source table
2576 |
2577 | KNOWN ISSUES
2578 |
2579 | NOTES
2580 |
2581 |
2582 | MODIFICATION HISTORY
2583 | Date Author Description of Changes
2584 | 11-APR-07 RRAVIKIR Created
2585 |
2586 *=======================================================================*/
2587 PROCEDURE process_contract_reversal_tax(
2588 p_api_version IN NUMBER,
2589 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2590 x_return_status OUT NOCOPY VARCHAR2,
2591 x_msg_count OUT NOCOPY NUMBER,
2592 x_msg_data OUT NOCOPY VARCHAR2,
2593 p_source_trx_id IN NUMBER,
2594 p_source_trx_name IN VARCHAR2,
2595 p_source_table IN VARCHAR2) IS
2596
2597 ------------- Reverse contract -------------------------
2598 --p_source_trx_id ---> okl_trx_assets.id
2599 --p_source_trx_name ---> 'Reverse'
2600 --p_source_table ---> 'OKL_TRX_CONTRACTS'
2601 --------------------------------------------------
2602 -- Local variables
2603 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2604 l_rev_trx_type_id NUMBER;
2605 l_khr_id NUMBER;
2606 l_legal_entity_id NUMBER;
2607 l_trx_date DATE;
2608 l_trx_level_type VARCHAR2(30);
2609 l_org_id NUMBER;
2610
2611 i NUMBER;
2612 l_fetch_size NUMBER := 10000;
2613 l_reverse BOOLEAN := FALSE;
2614
2615 TYPE tax_sources_tbl_type IS TABLE OF OKL_TAX_SOURCES%ROWTYPE INDEX BY BINARY_INTEGER;
2616 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
2617
2618 l_newtaxsourcesrev_tbl tax_sources_tbl_type;
2619 l_tax_src_tbl tax_src_tbl_type;
2620 lp_txsv_rec txsv_rec_type;
2621 lx_txsv_rec txsv_rec_type;
2622
2623 -- Cursors
2624 -- Booking tax lines will be the only ACTIVE set of tax lines at the time K is being Reversed
2625 -- Contract can be reversed only if no other transactions have happened on the contract
2626 -- this cursor selects existing active upfront taxable lines for a contract that is being reversed
2627 CURSOR l_prevtaxsourcesbk_csr(cp_khr_id IN NUMBER) IS
2628 SELECT id, khr_id, kle_id, asset_number, trx_id, trx_line_id, entity_code,
2629 event_class_code, trx_level_type, tax_call_type_code, sty_id,
2630 trx_business_category, tax_line_status_code, sel_id, reported_yn,
2631 line_name, application_id, tax_reporting_flag, default_taxation_country,
2632 product_category, user_defined_fisc_class, line_intended_use,
2633 tax_classification_code, inventory_item_id, bill_to_cust_acct_id,
2634 org_id, legal_entity_id, line_amt, assessable_value, total_tax,
2635 product_type, product_fisc_classification, trx_date, provnl_tax_determination_date,
2636 try_id, ship_to_location_id, ship_to_party_site_id, ship_to_party_id,
2637 bill_to_party_site_id, bill_to_location_id, bill_to_party_id,
2638 ship_to_cust_acct_site_use_id, bill_to_cust_acct_site_use_id,
2639 trx_currency_code, currency_conversion_date, currency_conversion_rate,
2640 currency_conversion_type
2641 FROM okl_tax_sources
2642 WHERE khr_id = cp_khr_id
2643 AND tax_call_type_code = G_UPFRONT_TAX
2644 AND tax_line_status_code = G_ACTIVE_STATUS;
2645
2646 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
2647 SELECT a.try_id, a.khr_id, a.legal_entity_id, a.date_transaction_occurred
2648 FROM okl_trx_contracts a, okl_trx_types_tl b
2649 WHERE a.id = cp_trx_id
2650 AND a.try_id = b.id
2651 AND b.name = cp_trx_type_name
2652 AND language = 'US';
2653
2654 TYPE prevtaxsources_tbl_type IS TABLE OF l_prevtaxsourcesbk_csr%ROWTYPE INDEX BY BINARY_INTEGER;
2655
2656 l_prevtaxsourcesbk_tbl prevtaxsources_tbl_type;
2657
2658 rev_trx_lines_tbl zx_trx_lines_tbl_type;
2659 rev_trx_hdr_rec line_params_rec_type;
2660
2661 BEGIN
2662
2663 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2664 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax','Begin(+)');
2665 END IF;
2666
2667 --Print Input Variables
2668 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2669 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2670 'p_init_msg_list :'||p_init_msg_list);
2671 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2672 'p_source_trx_id :'||p_source_trx_id);
2673 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2674 'p_source_trx_name :'||p_source_trx_name);
2675 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2676 'p_source_table :'||p_source_table);
2677 END IF;
2678
2679 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2680
2681 -- validate the source trx id
2682 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
2683 FETCH l_trxcontracts_csr INTO l_rev_trx_type_id, l_khr_id, l_legal_entity_id, l_trx_date;
2684 IF l_trxcontracts_csr%NOTFOUND THEN
2685 -- source trx id is invalid
2686 OKC_API.set_message( p_app_name => 'OKC',
2687 p_msg_name => G_INVALID_VALUE,
2688 p_token1 => G_COL_NAME_TOKEN,
2689 p_token1_value => 'SOURCE_TRX_ID');
2690 RAISE OKL_API.G_EXCEPTION_ERROR;
2691 END IF;
2692 CLOSE l_trxcontracts_csr;
2693
2694 -- Logic starts
2695 i := 1;
2696 l_newtaxsourcesrev_tbl.DELETE;
2697 l_tax_src_tbl.DELETE;
2698
2699 OPEN l_prevtaxsourcesbk_csr(cp_khr_id => l_khr_id);
2700 LOOP
2701 l_prevtaxsourcesbk_tbl.delete;
2702 FETCH l_prevtaxsourcesbk_csr BULK COLLECT INTO l_prevtaxsourcesbk_tbl LIMIT l_fetch_size;
2703 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2704 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2705 'l_prevtaxsourcesbk_tbl.COUNT '||l_prevtaxsourcesbk_tbl.COUNT );
2706 END IF;
2707
2708 IF l_prevtaxsourcesbk_tbl.COUNT > 0 THEN
2709 -- Create new tax sources for 'Reverse' transaction
2710 -- Number of new tax sources transactions is same as the number of
2711 -- previous Booking tax sources. Pick the previous tax sources for
2712 -- 'Booking' and create them again as new tax sources for trx type
2713 -- 'Reverse'. Contract can be reversed only if no other transaction
2714 -- has happned on the contract, after Booking. Hence contract structure
2715 -- remains the same between contract booking and contract reversal.
2716 -- Hence we can safely Pick the previous tax sources for 'Booking' and
2717 -- create them again as new tax sources for trx type 'Reverse'.
2718
2719 l_reverse := TRUE; -- Check if the tax is created for the contract
2720
2721 FOR k IN l_prevtaxsourcesbk_tbl.FIRST..l_prevtaxsourcesbk_tbl.LAST LOOP
2722 IF i = 1 THEN
2723 l_org_id := l_prevtaxsourcesbk_tbl(k).org_id;
2724 l_trx_level_type := l_prevtaxsourcesbk_tbl(k).trx_level_type;
2725 END IF;
2726
2727 -- Build new table for reversal
2728 l_newtaxsourcesrev_tbl(i).id := get_seq_id;
2729 l_newtaxsourcesrev_tbl(i).kle_id := l_prevtaxsourcesbk_tbl(k).kle_id;
2730 l_newtaxsourcesrev_tbl(i).khr_id := l_prevtaxsourcesbk_tbl(k).khr_id;
2731 l_newtaxsourcesrev_tbl(i).asset_number := l_prevtaxsourcesbk_tbl(k).asset_number;
2732 l_newtaxsourcesrev_tbl(i).trx_id := p_source_trx_id;
2733 l_newtaxsourcesrev_tbl(i).trx_line_id := l_newtaxsourcesrev_tbl(i).id;
2734 l_newtaxsourcesrev_tbl(i).entity_code := G_CONTRACTS_ENTITY_CODE;
2735 l_newtaxsourcesrev_tbl(i).event_class_code := G_REBOOK_EVENT_CLASS_CODE;
2736 l_newtaxsourcesrev_tbl(i).trx_level_type := l_prevtaxsourcesbk_tbl(k).trx_level_type;
2737 l_newtaxsourcesrev_tbl(i).adjusted_doc_entity_code := l_prevtaxsourcesbk_tbl(k).entity_code;
2738 l_newtaxsourcesrev_tbl(i).adjusted_doc_event_class_code := l_prevtaxsourcesbk_tbl(k).event_class_code;
2739 l_newtaxsourcesrev_tbl(i).adjusted_doc_trx_id := l_prevtaxsourcesbk_tbl(k).trx_id;
2740 l_newtaxsourcesrev_tbl(i).adjusted_doc_trx_line_id := l_prevtaxsourcesbk_tbl(k).trx_line_id;
2741 l_newtaxsourcesrev_tbl(i).adjusted_doc_trx_level_type := l_prevtaxsourcesbk_tbl(k).trx_level_type;
2742 l_newtaxsourcesrev_tbl(i).adjusted_doc_number := null;
2743 l_newtaxsourcesrev_tbl(i).adjusted_doc_date := null;
2744 l_newtaxsourcesrev_tbl(i).tax_call_type_code := G_UPFRONT_TAX;
2745 l_newtaxsourcesrev_tbl(i).sty_id := l_prevtaxsourcesbk_tbl(k).sty_id;
2746 l_newtaxsourcesrev_tbl(i).trx_business_category := l_prevtaxsourcesbk_tbl(k).trx_business_category;
2747 l_newtaxsourcesrev_tbl(i).tax_line_status_code := G_ACTIVE_STATUS;
2748 l_newtaxsourcesrev_tbl(i).sel_id := l_prevtaxsourcesbk_tbl(k).sel_id;
2749 l_newtaxsourcesrev_tbl(i).reported_yn := l_prevtaxsourcesbk_tbl(k).reported_yn;
2750 l_newtaxsourcesrev_tbl(i).program_id := null;
2751 l_newtaxsourcesrev_tbl(i).request_id := null;
2752 l_newtaxsourcesrev_tbl(i).program_application_id := null;
2753 l_newtaxsourcesrev_tbl(i).program_update_date := null;
2754 l_newtaxsourcesrev_tbl(i).attribute_category := null;
2755
2756 l_newtaxsourcesrev_tbl(i).attribute1 := null;
2757 l_newtaxsourcesrev_tbl(i).attribute2 := null;
2758 l_newtaxsourcesrev_tbl(i).attribute3 := null;
2759 l_newtaxsourcesrev_tbl(i).attribute4 := null;
2760 l_newtaxsourcesrev_tbl(i).attribute5 := null;
2761 l_newtaxsourcesrev_tbl(i).attribute6 := null;
2762 l_newtaxsourcesrev_tbl(i).attribute7 := null;
2763 l_newtaxsourcesrev_tbl(i).attribute8 := null;
2764 l_newtaxsourcesrev_tbl(i).attribute9 := null;
2765 l_newtaxsourcesrev_tbl(i).attribute10 := null;
2766 l_newtaxsourcesrev_tbl(i).attribute11 := null;
2767 l_newtaxsourcesrev_tbl(i).attribute12 := null;
2768 l_newtaxsourcesrev_tbl(i).attribute13 := null;
2769 l_newtaxsourcesrev_tbl(i).attribute14 := null;
2770 l_newtaxsourcesrev_tbl(i).attribute15 := null;
2771 l_newtaxsourcesrev_tbl(i).created_by := G_USER_ID;
2772 l_newtaxsourcesrev_tbl(i).creation_date := SYSDATE;
2773 l_newtaxsourcesrev_tbl(i).last_updated_by := G_USER_ID;
2774 l_newtaxsourcesrev_tbl(i).last_update_date := SYSDATE;
2775 l_newtaxsourcesrev_tbl(i).last_update_login := G_LOGIN_ID;
2776 l_newtaxsourcesrev_tbl(i).object_version_number := null;
2777
2778 l_newtaxsourcesrev_tbl(i).line_name := l_prevtaxsourcesbk_tbl(k).line_name;
2779 l_newtaxsourcesrev_tbl(i).application_id := l_prevtaxsourcesbk_tbl(k).application_id;
2780 l_newtaxsourcesrev_tbl(i).tax_reporting_flag := l_prevtaxsourcesbk_tbl(k).tax_reporting_flag;
2781 l_newtaxsourcesrev_tbl(i).default_taxation_country := l_prevtaxsourcesbk_tbl(k).default_taxation_country;
2782 l_newtaxsourcesrev_tbl(i).product_category := l_prevtaxsourcesbk_tbl(k).product_category;
2783 l_newtaxsourcesrev_tbl(i).user_defined_fisc_class := l_prevtaxsourcesbk_tbl(k).user_defined_fisc_class;
2784 l_newtaxsourcesrev_tbl(i).line_intended_use := l_prevtaxsourcesbk_tbl(k).line_intended_use;
2785 l_newtaxsourcesrev_tbl(i).tax_classification_code := l_prevtaxsourcesbk_tbl(k).tax_classification_code;
2786 l_newtaxsourcesrev_tbl(i).inventory_item_id := l_prevtaxsourcesbk_tbl(k).inventory_item_id;
2787 l_newtaxsourcesrev_tbl(i).bill_to_cust_acct_id := l_prevtaxsourcesbk_tbl(k).bill_to_cust_acct_id;
2788 l_newtaxsourcesrev_tbl(i).org_id := l_prevtaxsourcesbk_tbl(k).org_id;
2789 l_newtaxsourcesrev_tbl(i).legal_entity_id := l_prevtaxsourcesbk_tbl(k).legal_entity_id;
2790 l_newtaxsourcesrev_tbl(i).line_amt := -l_prevtaxsourcesbk_tbl(k).line_amt;
2791 l_newtaxsourcesrev_tbl(i).assessable_value := -l_prevtaxsourcesbk_tbl(k).assessable_value;
2792
2793 l_newtaxsourcesrev_tbl(i).total_tax := null; -- this col will be populated after reverse doc API is called
2794 l_newtaxsourcesrev_tbl(i).trx_date := l_trx_date;
2795 l_newtaxsourcesrev_tbl(i).try_id := l_rev_trx_type_id;
2796
2797 l_newtaxsourcesrev_tbl(i).product_type := l_prevtaxsourcesbk_tbl(k).product_type;
2798 l_newtaxsourcesrev_tbl(i).product_fisc_classification := l_prevtaxsourcesbk_tbl(k).product_fisc_classification;
2799 l_newtaxsourcesrev_tbl(i).provnl_tax_determination_date := null;
2800 l_newtaxsourcesrev_tbl(i).ship_to_location_id := l_prevtaxsourcesbk_tbl(k).ship_to_location_id;
2801 l_newtaxsourcesrev_tbl(i).ship_to_party_site_id := l_prevtaxsourcesbk_tbl(k).ship_to_party_site_id;
2802 l_newtaxsourcesrev_tbl(i).ship_to_party_id := l_prevtaxsourcesbk_tbl(k).ship_to_party_id;
2803 l_newtaxsourcesrev_tbl(i).bill_to_party_site_id := l_prevtaxsourcesbk_tbl(k).bill_to_party_site_id;
2804 l_newtaxsourcesrev_tbl(i).bill_to_location_id := l_prevtaxsourcesbk_tbl(k).bill_to_location_id;
2805 l_newtaxsourcesrev_tbl(i).bill_to_party_id := l_prevtaxsourcesbk_tbl(k).bill_to_party_id;
2806 l_newtaxsourcesrev_tbl(i).ship_to_cust_acct_site_use_id := l_prevtaxsourcesbk_tbl(k).ship_to_cust_acct_site_use_id;
2807 l_newtaxsourcesrev_tbl(i).bill_to_cust_acct_site_use_id := l_prevtaxsourcesbk_tbl(k).bill_to_cust_acct_site_use_id;
2808 l_newtaxsourcesrev_tbl(i).trx_currency_code := l_prevtaxsourcesbk_tbl(k).trx_currency_code;
2809 l_newtaxsourcesrev_tbl(i).currency_conversion_type := l_prevtaxsourcesbk_tbl(k).currency_conversion_type;
2810 l_newtaxsourcesrev_tbl(i).currency_conversion_rate := l_prevtaxsourcesbk_tbl(k).currency_conversion_rate;
2811 l_newtaxsourcesrev_tbl(i).currency_conversion_date := l_prevtaxsourcesbk_tbl(k).currency_conversion_date;
2812
2813 -- Store the prev booking tax source IDs in a table. This table will be used inactivate the Booking sources
2814 l_tax_src_tbl(i) := l_prevtaxsourcesbk_tbl(k).id;
2815
2816 -- Populate the ZX reverse transaction lines table for tax call
2817 rev_trx_lines_tbl(i).internal_organization_id := l_org_id;
2818 rev_trx_lines_tbl(i).reversing_appln_id := G_OKL_APPLICATION_ID;
2819 rev_trx_lines_tbl(i).reversing_entity_code := G_CONTRACTS_ENTITY_CODE;
2820 rev_trx_lines_tbl(i).reversing_evnt_cls_code := G_REBOOK_EVENT_CLASS_CODE;
2821 rev_trx_lines_tbl(i).reversing_trx_id := p_source_trx_id;
2822 rev_trx_lines_tbl(i).reversing_trx_level_type := l_trx_level_type;
2823 rev_trx_lines_tbl(i).reversing_trx_line_id := l_newtaxsourcesrev_tbl(i).id;
2824
2825 rev_trx_lines_tbl(i).reversed_appln_id := G_OKL_APPLICATION_ID;
2826 rev_trx_lines_tbl(i).reversed_entity_code := G_CONTRACTS_ENTITY_CODE;
2827 rev_trx_lines_tbl(i).reversed_evnt_cls_code:= G_BOOKING_EVENT_CLASS_CODE;
2828 rev_trx_lines_tbl(i).reversed_trx_id := l_newtaxsourcesrev_tbl(i).adjusted_doc_trx_id;
2829 rev_trx_lines_tbl(i).reversed_trx_level_type := l_trx_level_type;
2830 rev_trx_lines_tbl(i).reversed_trx_line_id := l_newtaxsourcesrev_tbl(i).adjusted_doc_trx_line_id;
2831
2832 i := i + 1;
2833 END LOOP;
2834 END IF;
2835 EXIT WHEN l_prevtaxsourcesbk_csr%NOTFOUND;
2836 END LOOP;
2837 CLOSE l_prevtaxsourcesbk_csr;
2838
2839 -- Inactivate the previous ACTIVE tax lines - begin
2840 -- Inactivate previous Booking tax sources
2841 -- No Change needed for previous booking tax lines in eBTax
2842 IF l_tax_src_tbl.COUNT > 0 THEN
2843 BEGIN
2844 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
2845 UPDATE okl_tax_sources SET tax_line_status_code = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
2846 EXCEPTION
2847 WHEN OTHERS THEN
2848 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
2849 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
2850 OKL_API.set_message(
2851 p_app_name => 'OKL',
2852 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
2853 p_token1 => 'TABLE_NAME',
2854 p_token1_value => 'OKL_TAX_SOURCES',
2855 p_token2 => 'ERROR_CODE',
2856 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
2857 p_token3 => 'ITERATION',
2858 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
2859 END LOOP;
2860 RAISE OKL_API.G_EXCEPTION_ERROR;
2861 END IF;
2862 END;
2863 END IF;
2864
2865 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2866 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2867 'Inactivated the previous active upfront tax lines ' );
2868 END IF;
2869 -- Inactivate the previous ACTIVE tax lines - end
2870
2871 -- bulk insert into okl_tax_sources -- start
2872 BEGIN
2873 IF l_newtaxsourcesrev_tbl.COUNT > 0 THEN
2874 FORALL indx in l_newtaxsourcesrev_tbl.FIRST..l_newtaxsourcesrev_tbl.LAST
2875 -- SAVE EXCEPTIONS
2876 INSERT INTO okl_tax_sources VALUES l_newtaxsourcesrev_tbl(indx);
2877 END IF;
2878 EXCEPTION
2879 WHEN OTHERS THEN
2880 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
2881 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
2882 OKL_API.set_message(p_app_name => 'OKL',
2883 p_msg_name => 'OKL_TX_TRX_INS_ERR',
2884 p_token1 => 'TABLE_NAME',
2885 p_token1_value => 'OKL_TAX_SOURCES',
2886 p_token2 => 'ERROR_CODE',
2887 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
2888 p_token3 => 'ITERATION',
2889 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
2890 END LOOP;
2891 RAISE OKL_API.G_EXCEPTION_ERROR;
2892 END IF;
2893 END;
2894 -- bulk insert into okl_tax_sources -- end
2895
2896 -- At this point, the latest active upfront tax sources are the ones
2897 -- corresponding to 'Reverse' transaction. If user queries the booking tax
2898 -- (contract booking page) at this point, UI will display the tax corresponding
2899 -- to 'Reverse' trx type. At any point, there can be only 1 set of active
2900 -- upfront tax lines for a contract. Hence the old Booking tax sources are
2901 -- inactivated and new tax sources are created for 'Reverse' trx type.
2902 -- No changes are needed to the tax lines that exist in eBTax for the 'Booking'
2903 -- event
2904
2905 -- Populate ZX reverse transaction tables
2906 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2907 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2908 'Calling OKL_TAX_INTERFACE_PVT.reverse_document');
2909 END IF;
2910
2911 IF (l_reverse) THEN -- Process Reversal only if the tax is created for the contract
2912
2913 rev_trx_hdr_rec.internal_organization_id := l_org_id;
2914 rev_trx_hdr_rec.application_id := G_OKL_APPLICATION_ID;
2915 rev_trx_hdr_rec.trx_id := p_source_trx_id;
2916 rev_trx_hdr_rec.legal_entity_id := l_legal_entity_id;
2917 rev_trx_hdr_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
2918 rev_trx_hdr_rec.event_class_code := G_REBOOK_EVENT_CLASS_CODE;
2919
2920 OKL_TAX_INTERFACE_PVT.reverse_document (
2921 p_api_version => p_api_version,
2922 p_init_msg_list => p_init_msg_list,
2923 x_return_status => l_return_status,
2924 x_msg_count => x_msg_count,
2925 x_msg_data => x_msg_data,
2926 p_rev_trx_hdr_rec => rev_trx_hdr_rec,
2927 p_rev_trx_lines_tbl => rev_trx_lines_tbl);
2928
2929 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2930 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2931 'Return Status' || l_return_status);
2932 END IF;
2933
2934 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2935 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2936 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2937 RAISE OKL_API.G_EXCEPTION_ERROR;
2938 END IF;
2939
2940 -- Get the total tax amount corresponding to 'Reverse' transaction from
2941 -- zx_lines and update total_tax on okl_tax_sources
2942 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2943 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2944 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
2945 END IF;
2946
2947 update_tax_sources_total(p_api_version => p_api_version,
2948 p_init_msg_list => p_init_msg_list,
2949 x_return_status => l_return_status,
2950 x_msg_count => x_msg_count,
2951 x_msg_data => x_msg_data,
2952 p_source_trx_id => p_source_trx_id);
2953
2954 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2955 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax.',
2956 'Return Status' || l_return_status);
2957 END IF;
2958
2959 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2960 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2961 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2962 RAISE OKL_API.G_EXCEPTION_ERROR;
2963 END IF;
2964
2965 END IF;
2966
2967 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2968 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax ','End(-)');
2969 END IF;
2970
2971 EXCEPTION
2972 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2973 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2974 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax ',
2975 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
2976 END IF;
2977
2978 IF l_prevtaxsourcesbk_csr%ISOPEN THEN
2979 CLOSE l_prevtaxsourcesbk_csr;
2980 END IF;
2981
2982 IF l_trxcontracts_csr%ISOPEN THEN
2983 CLOSE l_trxcontracts_csr;
2984 END IF;
2985
2986 x_return_status := OKL_API.G_RET_STS_ERROR;
2987 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2988 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
2989 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax ',
2990 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
2991 END IF;
2992
2993 IF l_prevtaxsourcesbk_csr%ISOPEN THEN
2994 CLOSE l_prevtaxsourcesbk_csr;
2995 END IF;
2996
2997 IF l_trxcontracts_csr%ISOPEN THEN
2998 CLOSE l_trxcontracts_csr;
2999 END IF;
3000
3001 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3002
3003 WHEN OTHERS THEN
3004 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3005 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_contract_reversal_tax ',
3006 'EXCEPTION :'||sqlerrm);
3007 END IF;
3008
3009 IF l_prevtaxsourcesbk_csr%ISOPEN THEN
3010 CLOSE l_prevtaxsourcesbk_csr;
3011 END IF;
3012
3013 IF l_trxcontracts_csr%ISOPEN THEN
3014 CLOSE l_trxcontracts_csr;
3015 END IF;
3016
3017 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3018 -- unexpected error
3019 OKL_API.set_message(p_app_name => g_app_name,
3020 p_msg_name => g_unexpected_error,
3021 p_token1 => g_sqlcode_token,
3022 p_token1_value => sqlcode,
3023 p_token2 => g_sqlerrm_token,
3024 p_token2_value => sqlerrm);
3025
3026 END process_contract_reversal_tax;
3027
3028 /*========================================================================
3029 | PUBLIC PROCEDURE get_location_party_ids
3030 |
3031 | DESCRIPTION
3032 | This procedure derives the Location and Party Identifiers from the
3033 | customer account and financial asset
3034 |
3035 | CALLED FROM
3036 | Other procedures in this API
3037 |
3038 | CALLS PROCEDURES/FUNCTIONS
3039 |
3040 |
3041 | PARAMETERS
3042 | Input Parameters
3043 | p_cust_acct_id -- Customer a/c identifier
3044 | p_fin_asset_id -- Financial Asset identifier
3045 | p_khr_id -- Contract identifier
3046 |
3047 | Either p_khr_id or p_fin_asset_id is mandatory
3048 |
3049 | Output Parameters
3050 | x_ship_to_site_use_id -- Ship to site use identifier
3051 | x_bill_to_party_site_id -- Bill to party site identifier
3052 | x_bill_to_location_id -- Bill to location identifier
3053 | x_bill_to_party_id -- Bill to party identifier
3054 | x_ship_to_party_site_id -- Ship to party site identifier
3055 | x_ship_to_location_id -- Ship to location identifier
3056 | x_ship_to_party_id -- Ship to party identifier
3057 |
3058 | KNOWN ISSUES
3059 |
3060 | NOTES
3061 |
3062 |
3063 | MODIFICATION HISTORY
3064 | Date Author Description of Changes
3065 | 08-APR-05 SECHAWLA Created
3066 | 22-Feb-07 RRAVIKIR Retrieve the following values as out
3067 | params - x_bill_to_party_site_id
3068 | x_bill_to_location_id
3069 | x_bill_to_party_id
3070 | x_ship_to_party_site_id
3071 | x_ship_to_location_id
3072 | x_ship_to_party_id
3073 | 06-nov-2007 sechawla 6602476 Modified l_get_ship_to_ids to
3074 | pick the first supplier invoice incase of multiple invoices
3075 | Modified the inner query of l_get_ship_to_ids
3076 *=======================================================================*/
3077 PROCEDURE get_location_party_ids(
3078 p_api_version IN NUMBER,
3079 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3080 x_return_status OUT NOCOPY VARCHAR2,
3081 x_msg_count OUT NOCOPY NUMBER,
3082 x_msg_data OUT NOCOPY VARCHAR2,
3083 p_cust_acct_id IN NUMBER,
3084 p_fin_asset_id IN NUMBER,
3085 p_khr_id IN NUMBER,
3086 x_bill_to_party_site_id OUT NOCOPY NUMBER,
3087 x_bill_to_location_id OUT NOCOPY NUMBER,
3088 x_bill_to_party_id OUT NOCOPY NUMBER,
3089 x_bill_to_site_use_id OUT NOCOPY NUMBER,
3090 x_ship_to_party_site_id OUT NOCOPY NUMBER,
3091 x_ship_to_location_id OUT NOCOPY NUMBER,
3092 x_ship_to_party_id OUT NOCOPY NUMBER,
3093 x_ship_to_site_use_id OUT NOCOPY NUMBER) IS
3094
3095 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3096
3097 --Cursor to get the 'SHIP_TO' identifiers corresponding to the install_location_id of the asset
3098 CURSOR l_get_ship_to_ids(cp_site_use_id IN NUMBER) IS -- asaanka changed for bug # 6612165
3099 SELECT
3100 b.site_use_id,
3101 c.party_site_id,
3102 c.party_id,
3103 c.location_id
3104 FROM hz_cust_acct_sites_all a,
3105 hz_cust_site_uses_all b,
3106 hz_party_sites c
3107 WHERE
3108 a.cust_acct_site_id = b.cust_acct_site_id
3109 AND b.site_use_code = 'SHIP_TO'
3110 AND b.site_use_id = cp_site_use_id -- asaanka changed for bug # 6612165
3111 AND a.party_site_id = c.party_site_id
3112 AND a.cust_account_id = p_cust_acct_id;
3113
3114 -- Cursor to get the 'BILL_TO' identifiers of the asset
3115 CURSOR l_get_line_bill_to_ids IS
3116 SELECT
3117 c.party_site_id,
3118 c.party_id,
3119 c.location_id,
3120 b.site_use_id
3121 FROM hz_cust_acct_sites_all a,
3122 hz_cust_site_uses_all b,
3123 hz_party_sites c
3124 WHERE
3125 a.cust_acct_site_id = b.cust_acct_site_id
3126 AND b.site_use_code = 'BILL_TO'
3127 AND b.site_use_id = (SELECT DECODE(okcl.bill_to_site_use_id, null, okch.bill_to_site_use_id, okcl.bill_to_site_use_id)
3128 FROM okc_k_headers_all_b okch, okc_k_lines_v okcl
3129 WHERE okcl.dnz_chr_id = okch.id
3130 AND okcl.id = p_fin_asset_id)
3131 AND a.party_site_id = c.party_site_id
3132 AND a.cust_account_id = p_cust_acct_id;
3133
3134 -- Cursor to get the 'BILL_TO' identifiers of the contract
3135 CURSOR l_get_chr_bill_to_ids IS
3136 SELECT
3137 c.party_site_id,
3138 c.party_id,
3139 c.location_id,
3140 b.site_use_id
3141 FROM hz_cust_acct_sites_all a,
3142 hz_cust_site_uses_all b,
3143 hz_party_sites c
3144 WHERE
3145 a.cust_acct_site_id = b.cust_acct_site_id
3146 AND b.site_use_code = 'BILL_TO'
3147 AND b.site_use_id = (SELECT bill_to_site_use_id
3148 FROM okc_k_headers_all_b
3149 WHERE id = p_khr_id)
3150 AND a.party_site_id = c.party_site_id
3151 AND a.cust_account_id = p_cust_acct_id;
3152
3153 l_bill_to_party_site_id NUMBER;
3154 l_bill_to_location_id NUMBER;
3155 l_bill_to_party_id NUMBER;
3156 l_bill_to_site_use_id NUMBER;
3157 l_ship_to_party_site_id NUMBER;
3158 l_ship_to_location_id NUMBER;
3159 l_ship_to_party_id NUMBER;
3160 l_ship_to_site_use_id NUMBER;
3161
3162 BEGIN
3163
3164 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3165 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids','Begin(+)');
3166 END IF;
3167
3168 --Print Input Variables
3169 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3170 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3171 'p_init_msg_list :'||p_init_msg_list);
3172 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3173 'p_cust_acct_id :'||p_cust_acct_id);
3174 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3175 'p_fin_asset_id :'||p_fin_asset_id);
3176 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3177 'p_khr_id :'||p_khr_id);
3178 END IF;
3179
3180 -- Required Values
3181 IF p_fin_asset_id IS NULL AND p_khr_id IS NULL THEN
3182 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
3183 p_token1 => G_COL_NAME_TOKEN,
3184 p_token1_value => 'CONTRACT_ID');
3185 RAISE OKL_API.G_EXCEPTION_ERROR;
3186 END IF;
3187 IF (p_fin_asset_id IS NOT NULL) THEN
3188 get_ship_to_site_use_id(
3189 p_api_version => p_api_version,
3190 p_init_msg_list => OKC_API.G_FALSE,
3191 x_return_status => x_return_status,
3192 x_msg_count => x_msg_count,
3193 x_msg_data => x_msg_data,
3194 p_cust_acct_id => p_cust_acct_id,
3195 p_fin_asset_id => p_fin_asset_id,
3196 x_ship_to_site_use_id => l_ship_to_site_use_id);
3197
3198 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN -- will never be setting this to unexpecetd inside get_tbc ?
3199 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3200 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3201 RAISE OKL_API.G_EXCEPTION_ERROR;
3202 END IF;
3203 -- Get the 'SHIP_TO' indetifiers of the asset
3204 IF l_ship_to_site_use_id IS NOT NULL THEN
3205 OPEN l_get_ship_to_ids(l_ship_to_site_use_id);
3206 FETCH l_get_ship_to_ids INTO l_ship_to_site_use_id, l_ship_to_party_site_id,
3207 l_ship_to_party_id, l_ship_to_location_id; -- these values may be null
3208 CLOSE l_get_ship_to_ids;
3209 END IF;
3210 END IF;
3211
3212 -- Get the 'BILL_TO' indetifiers of the contract
3213 IF (p_fin_asset_id IS NULL) THEN
3214 OPEN l_get_chr_bill_to_ids;
3215 FETCH l_get_chr_bill_to_ids INTO l_bill_to_party_site_id, l_bill_to_party_id,
3216 l_bill_to_location_id, l_bill_to_site_use_id;
3217 CLOSE l_get_chr_bill_to_ids;
3218 ELSE -- Get the 'BILL_TO' indetifiers of the asset
3219 OPEN l_get_line_bill_to_ids;
3220 FETCH l_get_line_bill_to_ids INTO l_bill_to_party_site_id, l_bill_to_party_id,
3221 l_bill_to_location_id, l_bill_to_site_use_id;
3222 CLOSE l_get_line_bill_to_ids;
3223 END IF;
3224
3225 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3226 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3227 'l_ship_to_party_site_id '||l_ship_to_party_site_id);
3228 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3229 'l_ship_to_location_id '||l_ship_to_location_id);
3230 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3231 'l_ship_to_party_id '||l_ship_to_party_id);
3232 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3233 'l_ship_to_site_use_id '||l_ship_to_site_use_id);
3234
3235 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3236 'l_bill_to_party_site_id '||l_bill_to_party_site_id);
3237 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3238 'l_bill_to_location_id '||l_bill_to_location_id);
3239 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3240 'l_bill_to_party_id '||l_bill_to_party_id);
3241 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids.',
3242 'l_bill_to_site_use_id '||l_bill_to_site_use_id);
3243 END IF;
3244
3245 x_ship_to_site_use_id := l_ship_to_site_use_id;
3246 x_ship_to_party_site_id := l_ship_to_party_site_id;
3247 x_ship_to_location_id := l_ship_to_location_id;
3248 x_ship_to_party_id := l_ship_to_party_id;
3249 x_bill_to_party_site_id := l_bill_to_party_site_id;
3250 x_bill_to_location_id := l_bill_to_location_id;
3251 x_bill_to_party_id := l_bill_to_party_id;
3252 x_bill_to_site_use_id := l_bill_to_site_use_id;
3253
3254 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3255
3256 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3257 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids ','End(-)');
3258 END IF;
3259
3260 EXCEPTION
3261 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3262 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3263 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids ',
3264 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
3265 END IF;
3266
3267 IF l_get_ship_to_ids%ISOPEN THEN
3268 CLOSE l_get_ship_to_ids;
3269 END IF;
3270
3271 IF l_get_line_bill_to_ids%ISOPEN THEN
3272 CLOSE l_get_line_bill_to_ids;
3273 END IF;
3274
3275 IF l_get_chr_bill_to_ids%ISOPEN THEN
3276 CLOSE l_get_chr_bill_to_ids;
3277 END IF;
3278
3279 x_return_status := OKL_API.G_RET_STS_ERROR;
3280 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3281 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3282 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids ',
3283 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
3284 END IF;
3285
3286 IF l_get_ship_to_ids%ISOPEN THEN
3287 CLOSE l_get_ship_to_ids;
3288 END IF;
3289
3290 IF l_get_line_bill_to_ids%ISOPEN THEN
3291 CLOSE l_get_line_bill_to_ids;
3292 END IF;
3293
3294 IF l_get_chr_bill_to_ids%ISOPEN THEN
3295 CLOSE l_get_chr_bill_to_ids;
3296 END IF;
3297
3298 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3299
3300 WHEN OTHERS THEN
3301 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3302 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_location_party_ids ',
3303 'EXCEPTION :'||sqlerrm);
3304 END IF;
3305
3306 IF l_get_ship_to_ids%ISOPEN THEN
3307 CLOSE l_get_ship_to_ids;
3308 END IF;
3309
3310 IF l_get_line_bill_to_ids%ISOPEN THEN
3311 CLOSE l_get_line_bill_to_ids;
3312 END IF;
3313
3314 IF l_get_chr_bill_to_ids%ISOPEN THEN
3315 CLOSE l_get_chr_bill_to_ids;
3316 END IF;
3317
3318 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3319 -- unexpected error
3320 OKL_API.set_message(p_app_name => g_app_name,
3321 p_msg_name => g_unexpected_error,
3322 p_token1 => g_sqlcode_token,
3323 p_token1_value => sqlcode,
3324 p_token2 => g_sqlerrm_token,
3325 p_token2_value => sqlerrm);
3326
3327 END get_location_party_ids;
3328
3329 /*========================================================================
3330 | PRIVATE PROCEDURE get_tbc_code
3331 |
3332 | DESCRIPTION
3333 | This retrieves TBC (Transaction Business Category) for tax call, based upon
3334 | the contract and line level tax determinats
3335 |
3336 | CALLED FROM
3337 |
3338 |
3339 | CALLS PROCEDURES/FUNCTIONS
3340 |
3341 |
3342 | PARAMETERS
3343 | Input Parameters
3344 | p_sty_id -- Stream Type ID
3345 | p_try_id -- Transaction Type ID
3346 | p_book_class_code -- Book class code
3347 | p_tax_country_code -- Tax country code
3348 | Output Parameters
3349 | x_tbc_code -- TBC Code
3350 |
3351 | KNOWN ISSUES
3352 |
3353 | NOTES
3354 |
3355 |
3356 | MODIFICATION HISTORY
3357 | Date Author Description of Changes
3358 | 17-APR-07 RRAVIKIR Created
3359 |
3360 *=======================================================================*/
3361 PROCEDURE get_tbc_code(
3362 p_api_version IN NUMBER,
3363 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3364 x_return_status OUT NOCOPY VARCHAR2,
3365 x_msg_count OUT NOCOPY NUMBER,
3366 x_msg_data OUT NOCOPY VARCHAR2,
3367 p_try_id IN NUMBER,
3368 p_sty_id IN NUMBER,
3369 p_book_class_code IN VARCHAR2,
3370 p_tax_country_code IN VARCHAR2,
3371 x_tbc_code OUT NOCOPY VARCHAR2) IS
3372
3373 -- Get all the TBC definitions applicable to a transaction type
3374 CURSOR l_tbcdef_csr(cp_try_id IN NUMBER) IS
3375 SELECT result_code tbc_code,
3376 try_id,
3377 sty_id ,
3378 book_class_code,
3379 tax_country_code,
3380 'Y' select_yn -- All TBCs returned by this cursor are selected initially
3381 FROM okl_tax_attr_definitions
3382 WHERE (try_id = cp_try_id OR try_id IS NULL)
3383 AND RESULT_TYPE_CODE = 'TBC_CODE'
3384 AND NVL(expire_flag, 'N') = 'N';
3385
3386 TYPE tbcdefs_tbl_type IS TABLE OF l_tbcdef_csr%ROWTYPE INDEX BY BINARY_INTEGER;
3387 TYPE tbcdefs_selected_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3388 TYPE det_null_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3389
3390 l_tbcdefs_tbl tbcdefs_tbl_type;
3391 l_det_null_tbl det_null_tbl_type;
3392 l_tbcdefs_selected_tbl tbcdefs_selected_tbl_type;
3393
3394 i NUMBER;
3395 j NUMBER;
3396 k NUMBER;
3397 tbc_set_count NUMBER;
3398 l_tbc_code okl_tax_attr_definitions.RESULT_CODE%TYPE;
3399 -- l_tbc_code VARCHAR2(30);
3400 selected_count NUMBER;
3401 det_match_cnt NUMBER;
3402 l_selected_tbc_pos NUMBER;
3403
3404 BEGIN
3405
3406 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3407 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code','Begin(+)');
3408 END IF;
3409
3410 --Print Input Variables
3411 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3412 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3413 'p_init_msg_list :'||p_init_msg_list);
3414 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3415 'p_sty_id :'||p_sty_id);
3416 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3417 'p_try_id :'||p_try_id);
3418 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3419 'p_book_class_code :'||p_book_class_code);
3420 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3421 'p_tax_country_code :'||p_tax_country_code);
3422 END IF;
3423
3424
3425 OPEN l_tbcdef_csr(p_try_id);
3426 FETCH l_tbcdef_csr BULK COLLECT INTO l_tbcdefs_tbl;
3427 CLOSE l_tbcdef_csr;
3428
3429 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3430 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3431 'l_tbcdefs_tbl.COUNT '||l_tbcdefs_tbl.COUNT);
3432 END IF;
3433
3434 IF l_tbcdefs_tbl.COUNT > 0 THEN -- MAIN END IF
3435 k := 1;
3436 FOR i IN 1 .. 3 LOOP -- determinant loop
3437 tbc_set_count := 0;
3438
3439 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3440 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.', 'i '||i);
3441 END IF;
3442
3443 FOR j IN l_tbcdefs_tbl.FIRST .. l_tbcdefs_tbl.LAST LOOP
3444 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3445 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3446 'j '||j||' l_tbcdefs_tbl(j).select_yn '||l_tbcdefs_tbl(j).select_yn );
3447 END IF;
3448
3449 IF l_tbcdefs_tbl(j).select_yn = 'Y' THEN
3450 IF i = 1 THEN -- stream type
3451 IF p_sty_id IS NULL THEN
3452 IF l_tbcdefs_tbl(j).sty_id IS NULL THEN
3453 tbc_set_count := tbc_set_count + 1;
3454 ELSE
3455 l_tbcdefs_tbl(j).select_yn := 'N';
3456 END IF;
3457 ELSE
3458 IF l_tbcdefs_tbl(j).sty_id IS NULL OR l_tbcdefs_tbl(j).sty_id = p_sty_id THEN
3459 tbc_set_count := tbc_set_count + 1;
3460 ELSE
3461 l_tbcdefs_tbl(j).select_yn := 'N';
3462 END IF;
3463 END IF
3464 ;
3465 ELSIF i = 2 THEN -- book class code
3466 IF p_book_class_code IS NULL THEN
3467 IF l_tbcdefs_tbl(j).book_class_code IS NULL THEN
3468 tbc_set_count := tbc_set_count + 1;
3469 ELSE
3470 l_tbcdefs_tbl(j).select_yn := 'N';
3471 END IF;
3472 ELSE
3473 IF l_tbcdefs_tbl(j).book_class_code IS NULL OR l_tbcdefs_tbl(j).book_class_code = p_book_class_code THEN
3474 tbc_set_count := tbc_set_count + 1;
3475 ELSE
3476 l_tbcdefs_tbl(j).select_yn := 'N';
3477 END IF;
3478 END IF;
3479
3480 ELSIF i = 3 THEN -- tax country (last determinant)
3481 IF p_tax_country_code IS NULL THEN
3482 IF l_tbcdefs_tbl(j).tax_country_code IS NULL THEN
3483 tbc_set_count := tbc_set_count + 1;
3484 l_tbcdefs_selected_tbl(k) := j;
3485 ELSE
3486 l_tbcdefs_tbl(j).select_yn := 'N';
3487 END IF;
3488 ELSE
3489 IF l_tbcdefs_tbl(j).tax_country_code IS NULL OR l_tbcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
3490 tbc_set_count := tbc_set_count + 1;
3491 l_tbcdefs_selected_tbl(k) := j;
3492 ELSE
3493 l_tbcdefs_tbl(j).select_yn := 'N';
3494 END IF;
3495 END IF;
3496
3497 k := k + 1;
3498 END IF;
3499
3500 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3501 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3502 'tbc_set_count '||tbc_set_count);
3503 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3504 'l_tbcdefs_tbl(j).select_yn '||l_tbcdefs_tbl(j).select_yn);
3505 END IF;
3506 END IF;
3507 END LOOP;
3508
3509 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3510 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3511 'tbc_set_count '||tbc_set_count);
3512 END IF;
3513
3514 IF tbc_set_count = 0 THEN
3515 EXIT;
3516 END IF;
3517 END LOOP; -- determinant loop
3518
3519 -- At this point l_tbcdefs_tbl has been scanned for all the determinants.
3520 -- select_yn flag in this table is set to 'Y' for TBCs that have either Null
3521 -- determinant value or value matching with the transaction. Table l_tbcdefs_selected_tbl
3522 -- holds those indexes of original table l_tbcdefs_tbl, that have seleted TBCs.
3523 -- At this point this table may contain more than 1 TBCs. If so, we need to further filter
3524 -- out TBCs from this table based upon the priority of the determinants.
3525 -- Following priority order is used :
3526 -- 1. Transaction Type
3527 -- 2. Stream Type
3528 -- 3. Book Class
3529 -- 4. Tax Country
3530
3531 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3532 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3533 'tbc_set_count outside first loop'||tbc_set_count);
3534 END IF;
3535
3536 IF tbc_set_count = 1 THEN
3537 l_tbc_code := l_tbcdefs_tbl(l_tbcdefs_selected_tbl(1)).tbc_code;
3538 ELSIF tbc_set_count > 1 THEN
3539 -- There can be more than one selected TBCs at this point
3540 -- apply determinant priority logic to select 1 TBC
3541 selected_count := tbc_set_count;
3542
3543 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3544 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3545 'l_tbcdefs_selected_tbl.count '||l_tbcdefs_selected_tbl.count );
3546 END IF;
3547
3548 FOR i IN 1 .. 4 LOOP -- determinant loop
3549
3550 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3551 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3552 'i '||i||' selected_count '||selected_count );
3553 END IF;
3554
3555 j := 1;
3556 det_match_cnt := 0;
3557 l_det_null_tbl.DELETE;
3558
3559 IF selected_count > 1 THEN
3560 FOR k IN l_tbcdefs_selected_tbl.FIRST .. l_tbcdefs_selected_tbl.LAST LOOP -- finally selected indexes
3561 -- At this point all the selecetd TBCs will either have Null determinant
3562 -- value or determinant value matching with the calling transaction
3563 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3564 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.', 'k '||k);
3565 END IF;
3566
3567 IF i = 1 THEN -- transaction type
3568 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).try_id IS NULL THEN
3569 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3570 j := j + 1;
3571 ELSE
3572 det_match_cnt := det_match_cnt + 1;
3573 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3574 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3575 -- when only one TBC is left
3576 END IF;
3577
3578 IF k = tbc_set_count THEN -- last record
3579 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3580 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3581 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3582 END IF;
3583
3584 IF det_match_cnt = selected_count THEN --k THEN
3585 NULL; -- all records have matching values, do nothing
3586 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3587 NULL; -- keep all records selected. Don't exclude yet.
3588 ELSIF det_match_cnt = 1 THEN
3589 selected_count := 1;
3590 ELSE -- more than one but less than total selected records have matching values
3591 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3592 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3593 selected_count := selected_count - 1;
3594 END LOOP;
3595 END IF;
3596 END IF;
3597
3598 ELSIF i = 2 THEN -- stream type
3599 IF p_sty_id IS NOT NULL THEN
3600 -- IF p_sty_id is null then l_tbcdefs_tbl will have more than 1 TBCs with
3601 -- only NULL values for sty_id. So no need to filter further, move on to next determinant
3602 -- When system is processing a determinant, there will always be more than one selected TBCS
3603 -- This is because, at the end of processing each determinant, we check the selected count
3604 -- If selected count = 1 then we do not process next determinant and exit
3605 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3606 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).sty_id IS NULL THEN
3607 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3608 j := j + 1;
3609 ELSE
3610 det_match_cnt := det_match_cnt + 1;
3611 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3612 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3613 -- when only one TBC is left
3614 END IF;
3615 END IF;
3616
3617 IF k = tbc_set_count THEN -- last record
3618 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3619 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3620 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3621 END IF;
3622
3623 IF det_match_cnt = selected_count THEN --k THEN
3624 NULL; -- all records have matching values, do nothing
3625 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3626 NULL; -- keep all records selected. Don't exclude yet.
3627 ELSIF det_match_cnt = 1 THEN
3628 selected_count := 1;
3629 ELSE -- more than one but less than total selected records have matching values
3630 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3631 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3632 selected_count := selected_count - 1;
3633 END LOOP;
3634 END IF;
3635 END IF;
3636 END IF;
3637
3638 ELSIF i = 3 THEN -- book class
3639 IF p_book_class_code IS NOT NULL THEN
3640 -- IF p_book_class_code is null then l_tbcdefs_tbl will have more than 1 TBCs with
3641 -- only NULL values for book_class_code. So no need to filter further, move on to next determinant
3642 -- When system is processing a determinant, there will always be more than one selected TBCS
3643 -- This is because, at the end of processing each determinant, we check the selected count
3644 -- If selected count = 1 then we do not process next determinant and exit
3645 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3646 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).book_class_code IS NULL THEN
3647 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3648 j := j + 1;
3649 ELSE
3650 det_match_cnt := det_match_cnt + 1;
3651 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3652 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3653 -- when only one TBC is left
3654 END IF;
3655 END IF;
3656
3657 IF k = tbc_set_count THEN -- last record
3658 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3659 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3660 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3661 END IF;
3662
3663 IF det_match_cnt = selected_count THEN --k THEN
3664 NULL; -- all records have matching values, do nothing
3665 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3666 NULL; -- keep all records selected. Don't exclude yet.
3667 ELSIF det_match_cnt = 1 THEN
3668 selected_count := 1;
3669 ELSE -- more than one but less than total selected records have matching values
3670 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3671 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3672 selected_count := selected_count - 1;
3673 END LOOP;
3674 END IF;
3675 END IF;
3676 END IF;
3677
3678 ELSIF i = 4 THEN -- tax country
3679 IF p_tax_country_code IS NOT NULL THEN
3680 -- IF p_tax_country_code is null then l_tbcdefs_tbl will have more than 1 TBCs with
3681 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
3682 -- When system is processing a determinant, there will always be more than one selected TBCS
3683 -- This is because, at the end of processing each determinant, we check the selected count
3684 -- If selected count = 1 then we do not process next determinant and exit
3685 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3686 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
3687 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3688 j := j + 1;
3689 ELSE
3690 det_match_cnt := det_match_cnt + 1;
3691 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3692 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3693 -- when only one TBC is left
3694 END IF;
3695 END IF;
3696
3697 IF k = tbc_set_count THEN -- last record
3698 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3699 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3700 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3701 END IF;
3702
3703 IF det_match_cnt = selected_count THEN --k THEN
3704 NULL; -- all records have matching values, do nothing
3705 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3706 NULL; -- keep all records selected. Don't exclude yet.
3707 ELSIF det_match_cnt = 1 THEN
3708 selected_count := 1;
3709 ELSE -- more than one but less than total selected records have matching values
3710 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3711 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3712 selected_count := selected_count - 1;
3713 END LOOP;
3714 END IF;
3715 END IF;
3716 END IF;
3717 END IF;
3718 END LOOP;
3719 ELSIF selected_count = 1 THEN
3720 EXIT;
3721 END IF;
3722 END LOOP; -- determinant loop
3723
3724 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3725 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3726 'selected_count outside 2nd loop '||selected_count);
3727 END IF;
3728
3729 IF selected_count = 1 THEN
3730 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3731 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3732 'l_selected_tbc_pos '||l_selected_tbc_pos);
3733 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3734 'l_selected_tbc_pos tbc_code '||l_tbcdefs_tbl(l_selected_tbc_pos).tbc_code);
3735 END IF;
3736 l_tbc_code := l_tbcdefs_tbl(l_selected_tbc_pos).tbc_code;
3737 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3738 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3739 'l_tbc_code '||l_tbc_code);
3740 end if;
3741 ELSIF selected_count > 1 THEN -- still more than one TBCs are selected
3742 l_tbc_code := NULL;
3743 END IF;
3744
3745 ELSIF tbc_set_count = 0 THEN
3746 l_tbc_code := NULL;
3747 END IF;
3748
3749 END IF; -- MAIN END IF ends
3750
3751 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3752 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3753 'l_tbc_code '||l_tbc_code);
3754 END IF;
3755
3756 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3757
3758 -- TBC can be NULL
3759 x_tbc_code := l_tbc_code;
3760
3761 EXCEPTION
3762 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3763
3764 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3765 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3766 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
3767 END IF;
3768
3769 IF l_tbcdef_csr%ISOPEN THEN
3770 CLOSE l_tbcdef_csr;
3771 END IF;
3772
3773 x_return_status := OKL_API.G_RET_STS_ERROR;
3774 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3775
3776 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3777 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3778 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
3779 END IF;
3780
3781 IF l_tbcdef_csr%ISOPEN THEN
3782 CLOSE l_tbcdef_csr;
3783 END IF;
3784
3785 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3786
3787 WHEN OTHERS THEN
3788 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3789 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3790 'EXCEPTION :'||sqlerrm);
3791 END IF;
3792
3793 IF l_tbcdef_csr%ISOPEN THEN
3794 CLOSE l_tbcdef_csr;
3795 END IF;
3796
3797 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3798 -- unexpected error
3799 OKL_API.set_message(p_app_name => g_app_name,
3800 p_msg_name => g_unexpected_error,
3801 p_token1 => g_sqlcode_token,
3802 p_token1_value => sqlcode,
3803 p_token2 => g_sqlerrm_token,
3804 p_token2_value => sqlerrm);
3805
3806 END get_tbc_code;
3807
3808 /*========================================================================
3809 | PRIVATE PROCEDURE get_pc_code
3810 |
3811 | DESCRIPTION
3812 | This procedure retrieves PC (Product Category) for tax call, based upon the
3813 | contract and line level tax determinats
3814 |
3815 | CALLED FROM
3816 |
3817 |
3818 | CALLS PROCEDURES/FUNCTIONS
3819 |
3820 |
3821 | PARAMETERS
3822 | Input Parameters
3823 | p_sty_id -- Stream Type ID
3824 | p_purchase_option_code -- Purchase option code
3825 | p_int_disclosed_code -- Interest disclosed code
3826 | p_title_trnsfr_code -- Transfer Of Title
3827 | p_sale_lease_back_code -- Sale and Lease Back
3828 | p_lease_purchased_code -- Purchase of Lease
3829 | p_tax_country_code -- Tax country code
3830 | Output Parameters
3831 | x_pc_code -- PC Code
3832 |
3833 | KNOWN ISSUES
3834 |
3835 | NOTES
3836 |
3837 |
3838 | MODIFICATION HISTORY
3839 | Date Author Description of Changes
3840 | 17-APR-07 RRAVIKIR Created
3841 |
3842 *=======================================================================*/
3843 PROCEDURE get_pc_code(
3844 p_api_version IN NUMBER,
3845 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3846 x_return_status OUT NOCOPY VARCHAR2,
3847 x_msg_count OUT NOCOPY NUMBER,
3848 x_msg_data OUT NOCOPY VARCHAR2,
3849 p_sty_id IN NUMBER,
3850 p_purchase_option_code IN VARCHAR2,
3851 p_int_disclosed_code IN VARCHAR2,
3852 p_title_trnsfr_code IN VARCHAR2,
3853 p_sale_lease_back_code IN VARCHAR2,
3854 p_lease_purchased_code in varchar2,
3855 p_tax_country_code IN VARCHAR2,
3856 x_pc_code OUT NOCOPY VARCHAR2) IS
3857
3858 -- Get all the PC definitions
3859 CURSOR l_pcdef_csr IS
3860 SELECT result_code pc_code,
3861 sty_id,
3862 purchase_option_code,
3863 int_disclosed_code,
3864 title_trnsfr_code,
3865 sale_lease_back_code,
3866 lease_purchased_code,
3867 tax_country_code,
3868 'Y' select_yn -- All PCs returned by this cursor are selected initially
3869 FROM okl_tax_attr_definitions
3870 WHERE (sty_id = p_sty_id OR sty_id IS NULL)
3871 AND result_type_code = 'PC_CODE'
3872 AND NVL(expire_flag, 'N') = 'N';
3873
3874 TYPE pcdefs_tbl_type IS TABLE OF l_pcdef_csr%ROWTYPE INDEX BY BINARY_INTEGER;
3875 TYPE pcdefs_selected_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3876 TYPE det_null_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3877
3878 l_pcdefs_tbl pcdefs_tbl_type;
3879 l_det_null_tbl det_null_tbl_type;
3880 l_pcdefs_selected_tbl pcdefs_selected_tbl_type;
3881
3882 i NUMBER;
3883 j NUMBER;
3884 k NUMBER;
3885 pc_set_count NUMBER;
3886 l_pc_code VARCHAR2(30);
3887 selected_count NUMBER;
3888 det_match_cnt NUMBER;
3889 l_selected_pc_pos NUMBER;
3890
3891 BEGIN
3892
3893 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3894 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code','Begin(+)');
3895 END IF;
3896
3897 --Print Input Variables
3898 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3899 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3900 'p_init_msg_list :'||p_init_msg_list);
3901 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3902 'p_sty_id :'||p_sty_id);
3903 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3904 'p_purchase_option_code :'||p_purchase_option_code);
3905 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3906 'p_int_disclosed_code :'||p_int_disclosed_code);
3907 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3908 'p_title_trnsfr_code :'||p_title_trnsfr_code);
3909 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3910 'p_sale_lease_back_code :'||p_sale_lease_back_code);
3911 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3912 'p_lease_purchased_code :'||p_lease_purchased_code);
3913 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3914 'p_tax_country_code :'||p_tax_country_code);
3915 END IF;
3916
3917 OPEN l_pcdef_csr;
3918 FETCH l_pcdef_csr BULK COLLECT INTO l_pcdefs_tbl;
3919 CLOSE l_pcdef_csr;
3920
3921 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3922 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3923 'l_pcdefs_tbl.COUNT '||l_pcdefs_tbl.COUNT);
3924 END IF;
3925
3926 IF l_pcdefs_tbl.COUNT > 0 THEN -- MAIN IF
3927 k := 1;
3928 FOR i IN 1 .. 6 LOOP -- determinant loop
3929 pc_set_count := 0;
3930
3931 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3932 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.', 'i '||i);
3933 END IF;
3934
3935 FOR j IN l_pcdefs_tbl.FIRST .. l_pcdefs_tbl.LAST LOOP
3936 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3937 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3938 'j '||j||' l_pcdefs_tbl(j).select_yn '||l_pcdefs_tbl(j).select_yn );
3939 END IF;
3940
3941 IF l_pcdefs_tbl(j).select_yn = 'Y' THEN
3942 IF i = 1 THEN -- purchase option
3943 IF p_purchase_option_code IS NULL THEN
3944 IF l_pcdefs_tbl(j).purchase_option_code IS NULL THEN
3945 pc_set_count := pc_set_count + 1;
3946 ELSE
3947 l_pcdefs_tbl(j).select_yn := 'N';
3948 END IF;
3949 ELSE
3950 IF l_pcdefs_tbl(j).purchase_option_code IS NULL OR l_pcdefs_tbl(j).purchase_option_code = p_purchase_option_code THEN
3951 pc_set_count := pc_set_count + 1;
3952 ELSE
3953 l_pcdefs_tbl(j).select_yn := 'N';
3954 END IF;
3955 END IF;
3956
3957 ELSIF i = 2 THEN -- Interest disclosed code
3958 IF p_int_disclosed_code IS NULL OR p_int_disclosed_code = 'N' THEN
3959 IF l_pcdefs_tbl(j).int_disclosed_code = 'N' THEN -- INT_DISCLOSED_CODE can not be null on DB
3960 pc_set_count := pc_set_count + 1;
3961 ELSE
3962 l_pcdefs_tbl(j).select_yn := 'N';
3963 END IF;
3964 ELSE
3965 pc_set_count := pc_set_count + 1;
3966 END IF;
3967
3968 ELSIF i = 3 THEN -- Title transfer code
3969 IF p_title_trnsfr_code IS NULL OR p_title_trnsfr_code = 'N' THEN
3970 IF l_pcdefs_tbl(j).title_trnsfr_code = 'N' THEN -- TITLE_TRNSFR_CODE can not be null on DB
3971 pc_set_count := pc_set_count + 1;
3972 ELSE
3973 l_pcdefs_tbl(j).select_yn := 'N';
3974 END IF;
3975 ELSE
3976 pc_set_count := pc_set_count + 1;
3977 END IF;
3978
3979 ELSIF i = 4 THEN -- Sale lease back code
3980 IF p_sale_lease_back_code IS NULL OR p_sale_lease_back_code = 'N' THEN
3981 IF l_pcdefs_tbl(j).sale_lease_back_code = 'N' THEN --SALE_LEASE_BACK_CODE can not be null on DB
3982 pc_set_count := pc_set_count + 1;
3983 ELSE
3984 l_pcdefs_tbl(j).select_yn := 'N';
3985 END IF;
3986 ELSE
3987 pc_set_count := pc_set_count + 1;
3988 END IF;
3989
3990 ELSIF i = 5 THEN -- Lease purchased code
3991 IF p_lease_purchased_code IS NULL OR p_lease_purchased_code = 'N' THEN
3992 IF l_pcdefs_tbl(j).lease_purchased_code = 'N' THEN --LEASE_PURCHASED_CODE can not be null on DB
3993 pc_set_count := pc_set_count + 1;
3994 ELSE
3995 l_pcdefs_tbl(j).select_yn := 'N';
3996 END IF;
3997 ELSE
3998 pc_set_count := pc_set_count + 1;
3999 END IF;
4000
4001 ELSIF i = 6 THEN -- tax country (last determinant)
4002 IF p_tax_country_code IS NULL THEN
4003 IF l_pcdefs_tbl(j).tax_country_code IS NULL THEN
4004 pc_set_count := pc_set_count + 1;
4005 l_pcdefs_selected_tbl(k) := j;
4006 ELSE
4007 l_pcdefs_tbl(j).select_yn := 'N';
4008 END IF;
4009 ELSE
4010 IF l_pcdefs_tbl(j).tax_country_code IS NULL OR l_pcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
4011 pc_set_count := pc_set_count + 1;
4012 l_pcdefs_selected_tbl(k) := j;
4013 ELSE
4014 l_pcdefs_tbl(j).select_yn := 'N';
4015 END IF;
4016 END IF;
4017
4018 k := k + 1;
4019 END IF;
4020
4021 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4022 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4023 'pc_set_count '||pc_set_count);
4024 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4025 'l_pcdefs_tbl(j).select_yn '||l_pcdefs_tbl(j).select_yn);
4026 END IF;
4027 END IF;
4028 END LOOP;
4029
4030 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4031 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4032 'pc_set_count '||pc_set_count);
4033 END IF;
4034
4035 IF pc_set_count = 0 THEN
4036 EXIT;
4037 END IF;
4038 END LOOP; -- determinant loop
4039
4040 -- At this point l_pcdefs_tbl has been scanned for all the determinants.
4041 -- select_yn flag in this table is set to 'Y' for PCs that have either Null
4042 -- determinnt value or value matching with the transaction. Table l_pcdefs_selected_tbl
4043 -- holds those indexes of original table l_pcdefs_tbl, that have seleted PCs.
4044 -- At this point this table may contain more than 1 PCs. If so, we need to further filter
4045 -- out PCs from this table based upon the priority of the determinants.
4046 -- Following priority order is used :
4047 -- 1. Stream Type
4048 -- 2. Purchase option
4049 -- 3. Interest disclosed code
4050 -- 4. Title transfer code
4051 -- 5. Sale Lease back code
4052 -- 6. Lease purchased code
4053 -- 7. Tax Country
4054
4055 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4056 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4057 'pc_set_count outside first loop'||pc_set_count);
4058 END IF;
4059
4060 IF pc_set_count = 1 THEN
4061 l_pc_code := l_pcdefs_tbl(l_pcdefs_selected_tbl(1)).pc_code;
4062 ELSIF pc_set_count > 1 THEN
4063 -- There can be more than one selected PCs at this point
4064 -- apply determinant priority logic to select 1 PC
4065 selected_count := pc_set_count;
4066
4067 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4068 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4069 'l_pcdefs_selected_tbl.count '||l_pcdefs_selected_tbl.count );
4070 END IF;
4071
4072 FOR i IN 1 .. 7 LOOP -- determinant loop
4073
4074 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4075 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4076 'i '||i||' selected_count '||selected_count );
4077 END IF;
4078
4079 j := 1;
4080 det_match_cnt := 0;
4081 l_det_null_tbl.DELETE;
4082
4083 IF selected_count > 1 THEN
4084 FOR k IN l_pcdefs_selected_tbl.FIRST .. l_pcdefs_selected_tbl.LAST LOOP -- finally selected indexes
4085 -- At this point all the selecetd PCs will either have Null determinant value or determinant value matching with the calling transaction
4086 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4087 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.', 'k '||k);
4088 END IF;
4089
4090 IF i = 1 THEN -- Stream Type
4091 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).sty_id IS NULL THEN
4092 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4093 j := j + 1;
4094 ELSE
4095 det_match_cnt := det_match_cnt + 1;
4096 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4097 -- l_selected_pc_pos will be used as the index of the selected PC,
4098 -- when only one PC is left
4099 END IF;
4100
4101 IF k = pc_set_count THEN -- last record
4102 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4103 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4104 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4105 END IF;
4106
4107 IF det_match_cnt = selected_count THEN --k THEN
4108 NULL; -- all records have matching values, do nothing
4109 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4110 NULL; -- keep all records selected. Don't exclude yet.
4111 ELSIF det_match_cnt = 1 THEN
4112 selected_count := 1;
4113 ELSE -- more than one but less than total selected records have matching values
4114 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4115 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4116 selected_count := selected_count - 1;
4117 END LOOP;
4118 END IF;
4119 END IF;
4120
4121 ELSIF i = 2 THEN -- Purchase option
4122 IF p_purchase_option_code IS NOT NULL THEN
4123 -- IF p_purchase_option_code is null then l_pcdefs_tbl will have more than 1 PCs with
4124 -- only NULL values for purchase_option_code. So no need to filter further, move on to next determinant
4125 -- When system is processing a determinant, there will always be more than one selected PCS
4126 -- This is because, at the end of processing each determinant, we check the selected count
4127 -- If selected count = 1 then we do not process next determinant and exit
4128 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4129 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).purchase_option_code IS NULL THEN
4130 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4131 j := j + 1;
4132 ELSE
4133 det_match_cnt := det_match_cnt + 1;
4134 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4135 -- l_selected_pc_pos will be used as the index of the selected PC,
4136 -- when only one PC is left
4137 END IF;
4138 END IF;
4139
4140 IF k = pc_set_count THEN -- last record
4141 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4142 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4143 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4144 END IF;
4145
4146 IF det_match_cnt = selected_count THEN --k THEN
4147 NULL; -- all records have matching values, do nothing
4148 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4149 NULL; -- keep all records selected. Don't exclude yet.
4150 ELSIF det_match_cnt = 1 THEN
4151 selected_count := 1;
4152 ELSE -- more than one but less than total selected records have matching values
4153 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4154 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4155 selected_count := selected_count - 1;
4156 END LOOP;
4157 END IF;
4158 END IF;
4159 END IF;
4160
4161 ELSIF i = 3 THEN -- Interest disclosed code
4162 IF p_int_disclosed_code = 'Y' THEN
4163 -- IF p_int_disclosed_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4164 -- INT_DISCLOSED_CODE. So no need to filter further
4165 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4166 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).int_disclosed_code = 'N' THEN
4167 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4168 j := j + 1;
4169 ELSE
4170 det_match_cnt := det_match_cnt + 1;
4171 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4172 -- l_selected_pc_pos will be used as the index of the selected PC,
4173 -- when only one PC is left
4174 END IF;
4175 END IF;
4176
4177 IF k = pc_set_count THEN -- last record
4178 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4179 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4180 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4181 END IF;
4182
4183 IF det_match_cnt = selected_count THEN --k THEN
4184 NULL; -- all records have matching values, do nothing
4185 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4186 NULL; -- keep all records selected. Don't exclude yet.
4187 ELSIF det_match_cnt = 1 THEN
4188 selected_count := 1;
4189 ELSE -- more than one but less than total selected records have matching values
4190 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4191 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4192 selected_count := selected_count - 1;
4193 END LOOP;
4194 END IF;
4195 END IF;
4196 END IF;
4197
4198 ELSIF i = 4 THEN -- Title transfer code
4199 IF p_title_trnsfr_code = 'Y' THEN
4200 -- IF p_title_trnsfr_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4201 -- title_trnsfr_code. So no need to filter further
4202 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4203 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).title_trnsfr_code = 'N' THEN
4204 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4205 j := j + 1;
4206 ELSE
4207 det_match_cnt := det_match_cnt + 1;
4208 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4209 -- l_selected_pc_pos will be used as the index of the selected PC,
4210 -- when only one PC is left
4211 END IF;
4212 END IF;
4213
4214 IF k = pc_set_count THEN -- last record
4215 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4216 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4217 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4218 END IF;
4219
4220 IF det_match_cnt = selected_count THEN --k THEN
4221 NULL; -- all records have matching values, do nothing
4222 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4223 NULL; -- keep all records selected. Don't exclude yet.
4224 ELSIF det_match_cnt = 1 THEN
4225 selected_count := 1;
4226 ELSE -- more than one but less than total selected records have matching values
4227 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4228 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4229 selected_count := selected_count - 1;
4230 END LOOP;
4231 END IF;
4232 END IF;
4233 END IF;
4234
4235 ELSIF i = 5 THEN -- Sale Lease back code
4236 IF p_sale_lease_back_code = 'Y' THEN
4237 -- IF p_sale_lease_back_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4238 -- sale_lease_back_code. So no need to filter further
4239 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4240 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).sale_lease_back_code = 'N' THEN
4241 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4242 j := j + 1;
4243 ELSE
4244 det_match_cnt := det_match_cnt + 1;
4245 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4246 -- l_selected_pc_pos will be used as the index of the selected PC,
4247 -- when only one PC is left
4248 END IF;
4249 END IF;
4250
4251 IF k = pc_set_count THEN -- last record
4252 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4253 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4254 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4255 END IF;
4256
4257 IF det_match_cnt = selected_count THEN --k THEN
4258 NULL; -- all records have matching values, do nothing
4259 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4260 NULL; -- keep all records selected. Don't exclude yet.
4261 ELSIF det_match_cnt = 1 THEN
4262 selected_count := 1;
4263 ELSE -- more than one but less than total selected records have matching values
4264 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4265 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4266 selected_count := selected_count - 1;
4267 END LOOP;
4268 END IF;
4269 END IF;
4270 END IF;
4271
4272 ELSIF i = 6 THEN -- Lease purchased code
4273 IF p_lease_purchased_code = 'Y' THEN
4274 -- IF p_lease_purchased_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4275 -- lease_purchased_code. So no need to filter further
4276 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4277 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).lease_purchased_code = 'N' THEN
4278 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4279 j := j + 1;
4280 ELSE
4281 det_match_cnt := det_match_cnt + 1;
4282 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4283 -- l_selected_pc_pos will be used as the index of the selected PC,
4284 -- when only one PC is left
4285 END IF;
4286 END IF;
4287
4288 IF k = pc_set_count THEN -- last record
4289 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4290 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4291 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4292 END IF;
4293
4294 IF det_match_cnt = selected_count THEN --k THEN
4295 NULL; -- all records have matching values, do nothing
4296 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4297 NULL; -- keep all records selected. Don't exclude yet.
4298 ELSIF det_match_cnt = 1 THEN
4299 selected_count := 1;
4300 ELSE -- more than one but less than total selected records have matching values
4301 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4302 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4303 selected_count := selected_count - 1;
4304 END LOOP;
4305 END IF;
4306 END IF;
4307 END IF;
4308
4309 ELSIF i = 7 THEN -- Tax Country
4310 IF p_tax_country_code IS NOT NULL THEN
4311 -- IF p_tax_country_code is null then l_pcdefs_tbl will have more than 1 PCs with
4312 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
4313 -- When system is processing a determinant, there will always be more than one selected PCS
4314 -- This is because, at the end of processing each determinant, we check the selected count
4315 -- If selected count = 1 then we do not process next determinant and exit
4316 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4317 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
4318 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4319 j := j + 1;
4320 ELSE
4321 det_match_cnt := det_match_cnt + 1;
4322 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4323 -- l_selected_pc_pos will be used as the index of the selected PC,
4324 -- when only one PC is left
4325 END IF;
4326 END IF;
4327
4328 IF k = pc_set_count THEN -- last record
4329 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4330 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4331 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4332 END IF;
4333
4334 IF det_match_cnt = selected_count THEN --k THEN
4335 NULL; -- all records have matching values, do nothing
4336 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4337 NULL; -- keep all records selected. Don't exclude yet.
4338 ELSIF det_match_cnt = 1 THEN
4339 selected_count := 1;
4340 ELSE -- more than one but less than total selected records have matching values
4341 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4342 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4343 selected_count := selected_count - 1;
4344 END LOOP;
4345 END IF;
4346 END IF;
4347
4348 END IF;
4349 END IF;
4350 END LOOP;
4351 ELSIF selected_count = 1 THEN
4352 EXIT;
4353 END IF;
4354 END LOOP; -- determinant loop
4355
4356 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4357 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4358 'selected_count outside 2nd loop '||selected_count);
4359 END IF;
4360
4361 IF selected_count = 1 THEN
4362 l_pc_code := l_pcdefs_tbl(l_selected_pc_pos).pc_code;
4363 ELSIF selected_count > 1 THEN -- still more than one PCs are selected
4364 l_pc_code := NULL;
4365 END IF;
4366 ELSIF pc_set_count = 0 THEN
4367 l_pc_code := NULL;
4368 END IF;
4369
4370 END IF; -- MAIN IF ends
4371
4372 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4373 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4374 'l_pc_code '||l_pc_code);
4375 END IF;
4376
4377 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4378
4379 -- PC can be null
4380 x_pc_code := l_pc_code;
4381
4382 EXCEPTION
4383 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4384
4385 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4386 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4387 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
4388 END IF;
4389
4390 IF l_pcdef_csr%ISOPEN THEN
4391 CLOSE l_pcdef_csr;
4392 END IF;
4393
4394 x_return_status := OKL_API.G_RET_STS_ERROR;
4395 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4396
4397 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4398 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4399 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
4400 END IF;
4401
4402 IF l_pcdef_csr%ISOPEN THEN
4403 CLOSE l_pcdef_csr;
4404 END IF;
4405
4406 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4407
4408 WHEN OTHERS THEN
4409 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4410 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4411 'EXCEPTION :'||sqlerrm);
4412 END IF;
4413
4414 IF l_pcdef_csr%ISOPEN THEN
4415 CLOSE l_pcdef_csr;
4416 END IF;
4417
4418 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4419 -- unexpected error
4420 OKL_API.set_message(p_app_name => g_app_name,
4421 p_msg_name => g_unexpected_error,
4422 p_token1 => g_sqlcode_token,
4423 p_token1_value => sqlcode,
4424 p_token2 => g_sqlerrm_token,
4425 p_token2_value => sqlerrm);
4426
4427 END get_pc_code;
4428
4429 /*========================================================================
4430 | PRIVATE PROCEDURE get_ufc_code
4431 |
4432 | DESCRIPTION
4433 | This procedure retrieves UFC (User Fiscal Classification) for tax call,
4434 | based upon the contract and line level tax determinats
4435 |
4436 | CALLED FROM
4437 |
4438 |
4439 | CALLS PROCEDURES/FUNCTIONS
4440 |
4441 |
4442 | PARAMETERS
4443 | Input Parameters
4444 | p_purchase_option -- Purchase option
4445 | p_fin_product_id -- Financial Product
4446 | p_try_id -- Transaction Type ID
4447 | p_sty_id -- Stream Type ID
4448 | p_int_disclosed_code -- Interest Disclosed
4449 | p_title_trnsfr_code -- Transfer Of Title
4450 | p_sale_lease_back_code -- Sale and Lease Back
4451 | p_lease_purchased_code -- Purchase of Lease
4452 | p_equip_usage_code -- Usage of Equipment
4453 | p_vendor_site_id -- Vendor Site ID
4454 | p_age_of_equip -- Age of Equipment
4455 | p_term_quote_type_code -- Termination quote type code
4456 | p_term_quote_reason_code -- Termination quote reason code
4457 | p_tax_country_code -- Tax country code
4458 | Output Parameters
4459 | x_ufc_code -- UFC Code
4460 |
4461 | KNOWN ISSUES
4462 |
4463 | NOTES
4464 |
4465 |
4466 | MODIFICATION HISTORY
4467 | Date Author Description of Changes
4468 | 08-APR-05 SECHAWLA Created
4469 | 20-APR-07 RRAVIKIR Modified
4470 |
4471 *=======================================================================*/
4472
4473 PROCEDURE get_ufc_code(
4474 p_api_version IN NUMBER,
4475 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4476 x_return_status OUT NOCOPY VARCHAR2,
4477 x_msg_count OUT NOCOPY NUMBER,
4478 x_msg_data OUT NOCOPY VARCHAR2,
4479 p_purchase_option IN VARCHAR2,
4480 p_fin_product_id IN VARCHAR2,
4481 p_try_id IN NUMBER,
4482 p_sty_id IN NUMBER,
4483 p_int_disclosed_code IN VARCHAR2,
4484 p_title_trnsfr_code IN VARCHAR2,
4485 p_sale_lease_back_code IN VARCHAR2,
4486 p_lease_purchased_code IN VARCHAR2,
4487 p_equip_usage_code IN VARCHAR2,
4488 p_vendor_site_id IN NUMBER,
4489 p_age_of_equip IN NUMBER,
4490 p_term_quote_type_code IN VARCHAR2 DEFAULT NULL,
4491 p_term_quote_reason_code IN VARCHAR2 DEFAULT NULL,
4492 p_tax_country_code IN VARCHAR2,
4493 x_ufc_code OUT NOCOPY VARCHAR2) IS
4494
4495 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4496
4497 -- Get all the UFC definitions applicable to a transaction type
4498 CURSOR l_ufcdef_csr(cp_try_id IN NUMBER) IS
4499 SELECT result_code ufc_code,
4500 try_id,
4501 sty_id ,
4502 purchase_option_code,
4503 equip_usage_code,
4504 vendor_site_id,
4505 age_of_equip_from,
4506 age_of_equip_to,
4507 pdt_id,
4508 int_disclosed_code ,
4509 title_trnsfr_code,
4510 sale_lease_back_code,
4511 lease_purchased_code,
4512 term_quote_type_code,
4513 term_quote_reason_code,
4514 tax_country_code,
4515 'Y' select_yn -- all ufcs returned by this cursor are selected initially
4516 FROM okl_tax_attr_definitions
4517 WHERE (try_id = cp_try_id OR try_id IS NULL)
4518 AND RESULT_TYPE_CODE = 'UFC_CODE'
4519 AND NVL(expire_flag, 'N') = 'N';
4520
4521
4522 TYPE ufcdefs_tbl_type IS TABLE OF l_ufcdef_csr%ROWTYPE INDEX BY BINARY_INTEGER;
4523 TYPE ufcdefs_selected_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
4524 TYPE det_null_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
4525
4526 l_ufcdefs_tbl ufcdefs_tbl_type;
4527 l_det_null_tbl det_null_tbl_type;
4528 l_ufcdefs_selected_tbl ufcdefs_selected_tbl_type;
4529
4530 i NUMBER;
4531 j NUMBER;
4532 k NUMBER;
4533 ufc_set_count NUMBER;
4534 l_ufc_code VARCHAR2(30);
4535 selected_count NUMBER;
4536 det_match_cnt NUMBER;
4537 l_selected_ufc_pos NUMBER;
4538 BEGIN
4539
4540 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4541 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code','Begin(+)');
4542 END IF;
4543
4544 -- Print Input Variables
4545 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4546 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4547 'p_init_msg_list :'||p_init_msg_list);
4548 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4549 'p_purchase_option :'||p_purchase_option);
4550 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4551 'p_fin_product_id :'||p_fin_product_id);
4552 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4553 'p_try_id :'||p_try_id);
4554 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4555 'p_sty_id :'||p_sty_id);
4556 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4557 'p_int_disclosed_code :'||p_int_disclosed_code);
4558 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4559 'p_title_trnsfr_code :'||p_title_trnsfr_code);
4560 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4561 'p_sale_lease_back_code :'||p_sale_lease_back_code);
4562 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4563 'p_lease_purchased_code :'||p_lease_purchased_code);
4564 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4565 'p_equip_usage_code :'||p_equip_usage_code);
4566 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4567 'p_vendor_site_id :'||p_vendor_site_id);
4568 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4569 'p_age_of_equip :'||p_age_of_equip);
4570 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4571 'term_quote_type_code :'|| p_term_quote_type_code);
4572 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4573 'term_quote_reason_code :'|| p_term_quote_reason_code);
4574 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4575 'p_tax_country_code :'|| p_tax_country_code);
4576 END IF;
4577
4578 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4579
4580 OPEN l_ufcdef_csr(p_try_id);
4581 FETCH l_ufcdef_csr BULK COLLECT INTO l_ufcdefs_tbl;
4582 CLOSE l_ufcdef_csr;
4583
4584 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4585 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4586 'l_ufcdefs_tbl.COUNT '||l_ufcdefs_tbl.COUNT);
4587 END IF;
4588
4589 IF l_ufcdefs_tbl.COUNT > 0 THEN -- MAIN IF
4590 k := 1;
4591 FOR i IN 1 .. 13 LOOP -- determinant loop
4592 ufc_set_count := 0;
4593
4594 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4595 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4596 'i '||i);
4597 END IF;
4598
4599 FOR j IN l_ufcdefs_tbl.FIRST .. l_ufcdefs_tbl.LAST LOOP
4600
4601 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4602 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4603 'j '||j||' l_ufcdefs_tbl(j).select_yn '||l_ufcdefs_tbl(j).select_yn );
4604 END IF;
4605
4606 IF l_ufcdefs_tbl(j).select_yn = 'Y' THEN
4607 IF i = 1 THEN -- stream type
4608 IF p_sty_id IS NULL THEN
4609 IF l_ufcdefs_tbl(j).sty_id IS NULL THEN
4610 ufc_set_count := ufc_set_count + 1;
4611 ELSE
4612 l_ufcdefs_tbl(j).select_yn := 'N';
4613 END IF;
4614 ELSE
4615 IF l_ufcdefs_tbl(j).sty_id IS NULL OR l_ufcdefs_tbl(j).sty_id = p_sty_id THEN
4616 ufc_set_count := ufc_set_count + 1;
4617 ELSE
4618 l_ufcdefs_tbl(j).select_yn := 'N';
4619 END IF;
4620 END IF;
4621
4622 ELSIF i = 2 THEN -- term quote type
4623 IF p_term_quote_type_code IS NULL THEN
4624 IF l_ufcdefs_tbl(j).term_quote_type_code IS NULL THEN
4625 ufc_set_count := ufc_set_count + 1;
4626 ELSE
4627 l_ufcdefs_tbl(j).select_yn := 'N';
4628 END IF;
4629 ELSE
4630 IF l_ufcdefs_tbl(j).term_quote_type_code IS NULL OR
4631 l_ufcdefs_tbl(j).term_quote_type_code = p_term_quote_type_code THEN
4632 ufc_set_count := ufc_set_count + 1;
4633 ELSE
4634 l_ufcdefs_tbl(j).select_yn := 'N';
4635 END IF;
4636 END IF;
4637
4638 ELSIF i = 3 THEN -- term quote reason
4639 IF p_term_quote_reason_code IS NULL THEN
4640 IF l_ufcdefs_tbl(j).term_quote_reason_code IS NULL THEN
4641 ufc_set_count := ufc_set_count + 1;
4642 ELSE
4643 l_ufcdefs_tbl(j).select_yn := 'N';
4644 END IF;
4645 ELSE
4646 IF l_ufcdefs_tbl(j).term_quote_reason_code IS NULL OR
4647 l_ufcdefs_tbl(j).term_quote_reason_code = p_term_quote_reason_code THEN
4648 ufc_set_count := ufc_set_count + 1;
4649 ELSE
4650 l_ufcdefs_tbl(j).select_yn := 'N';
4651 END IF;
4652 END IF;
4653
4654 ELSIF i = 4 THEN -- purchase option
4655 IF p_purchase_option IS NULL THEN
4656 IF l_ufcdefs_tbl(j).purchase_option_code IS NULL THEN
4657 ufc_set_count := ufc_set_count + 1;
4658 ELSE
4659 l_ufcdefs_tbl(j).select_yn := 'N';
4660 END IF;
4661 ELSE
4662 IF l_ufcdefs_tbl(j).purchase_option_code IS NULL OR l_ufcdefs_tbl(j).purchase_option_code = p_purchase_option THEN
4663 ufc_set_count := ufc_set_count + 1;
4664 ELSE
4665 l_ufcdefs_tbl(j).select_yn := 'N';
4666 END IF;
4667 END IF;
4668
4669 ELSIF i = 5 THEN -- usage of equipment
4670 IF p_equip_usage_code IS NULL THEN
4671 IF l_ufcdefs_tbl(j).equip_usage_code IS NULL THEN
4672 ufc_set_count := ufc_set_count + 1;
4673 ELSE
4674 l_ufcdefs_tbl(j).select_yn := 'N';
4675 END IF;
4676 ELSE -- 22-NOV-05 SECHAWLA 4742539 : fixed the parameter name in the following comparison
4677 IF l_ufcdefs_tbl(j).equip_usage_code IS NULL OR l_ufcdefs_tbl(j).equip_usage_code = p_equip_usage_code THEN
4678 ufc_set_count := ufc_set_count + 1;
4679 ELSE
4680 l_ufcdefs_tbl(j).select_yn := 'N';
4681 END IF;
4682 END IF;
4683
4684 ELSIF i = 6 THEN -- vendor location
4685 IF p_VENDOR_SITE_ID IS NULL THEN
4686 IF l_ufcdefs_tbl(j).VENDOR_SITE_ID IS NULL THEN
4687 ufc_set_count := ufc_set_count + 1;
4688 ELSE
4689 l_ufcdefs_tbl(j).select_yn := 'N';
4690 END IF;
4691 ELSE -- 22-NOV-05 SECHAWLA 4742539 : fixed the parameter name in the following comparison
4692 IF l_ufcdefs_tbl(j).VENDOR_SITE_ID IS NULL OR l_ufcdefs_tbl(j).VENDOR_SITE_ID = p_VENDOR_SITE_ID THEN
4693 ufc_set_count := ufc_set_count + 1;
4694 ELSE
4695 l_ufcdefs_tbl(j).select_yn := 'N';
4696 END IF;
4697 END IF;
4698
4699 ELSIF i = 7 THEN -- age of equipment
4700 IF p_age_of_equip IS NULL THEN
4701 IF l_ufcdefs_tbl(j).age_of_equip_from IS NULL AND l_ufcdefs_tbl(j).age_of_equip_to IS NULL THEN
4702 ufc_set_count := ufc_set_count + 1;
4703 ELSE
4704 l_ufcdefs_tbl(j).select_yn := 'N';
4705 END IF;
4706 ELSE
4707 IF ( (l_ufcdefs_tbl(j).age_of_equip_from IS NULL AND l_ufcdefs_tbl(j).age_of_equip_to IS NULL) OR
4708 ( (l_ufcdefs_tbl(j).age_of_equip_to IS NOT NULL) AND (p_age_of_equip BETWEEN nvl(l_ufcdefs_tbl(j).age_of_equip_from,0) AND l_ufcdefs_tbl(j).age_of_equip_to) )OR
4709 ( l_ufcdefs_tbl(j).age_of_equip_to IS NULL AND l_ufcdefs_tbl(j).age_of_equip_from <= p_age_of_equip)
4710 ) THEN
4711 ufc_set_count := ufc_set_count + 1;
4712 ELSE
4713 l_ufcdefs_tbl(j).select_yn := 'N';
4714 END IF;
4715 END IF;
4716
4717 ELSIF i = 8 THEN -- financial product
4718 IF p_fin_product_id IS NULL THEN
4719 IF l_ufcdefs_tbl(j).pdt_id IS NULL THEN
4720 ufc_set_count := ufc_set_count + 1;
4721 ELSE
4722 l_ufcdefs_tbl(j).select_yn := 'N';
4723 END IF;
4724 ELSE
4725 IF l_ufcdefs_tbl(j).pdt_id IS NULL OR l_ufcdefs_tbl(j).pdt_id = p_fin_product_id THEN
4726 ufc_set_count := ufc_set_count + 1;
4727 ELSE
4728 l_ufcdefs_tbl(j).select_yn := 'N';
4729 END IF;
4730 END IF;
4731
4732 ELSIF i = 9 THEN -- interest disclosed
4733 IF p_int_disclosed_code IS NULL OR p_int_disclosed_code = 'N' THEN
4734 IF l_ufcdefs_tbl(j).int_disclosed_code = 'N' THEN -- INT_DISCLOSED_CODE can not be null on DB
4735 ufc_set_count := ufc_set_count + 1;
4736 ELSE
4737 l_ufcdefs_tbl(j).select_yn := 'N';
4738 END IF;
4739 ELSE
4740 ufc_set_count := ufc_set_count + 1;
4741 END IF;
4742
4743 ELSIF i = 10 THEN -- transfer of Title
4744 IF p_title_trnsfr_code IS NULL OR p_title_trnsfr_code = 'N' THEN
4745 IF l_ufcdefs_tbl(j).title_trnsfr_code = 'N' THEN -- TITLE_TRNSFR_CODE can not be null on DB
4746 ufc_set_count := ufc_set_count + 1;
4747 ELSE
4748 l_ufcdefs_tbl(j).select_yn := 'N';
4749 END IF;
4750 ELSE
4751 ufc_set_count := ufc_set_count + 1;
4752 END IF;
4753
4754 ELSIF i = 11 THEN -- sale and lease back
4755 IF p_sale_lease_back_code IS NULL OR p_sale_lease_back_code = 'N' THEN
4756 IF l_ufcdefs_tbl(j).sale_lease_back_code = 'N' THEN --SALE_LEASE_BACK_CODE can not be null on DB
4757 ufc_set_count := ufc_set_count + 1;
4758 ELSE
4759 l_ufcdefs_tbl(j).select_yn := 'N';
4760 END IF;
4761 ELSE
4762 ufc_set_count := ufc_set_count + 1;
4763 END IF;
4764
4765 ELSIF i = 12 THEN -- purchase of lease
4766 IF p_lease_purchased_code IS NULL OR p_lease_purchased_code = 'N' THEN
4767 IF l_ufcdefs_tbl(j).lease_purchased_code = 'N' THEN --LEASE_PURCHASED_CODE can not be null on DB
4768 ufc_set_count := ufc_set_count + 1;
4769 ELSE
4770 l_ufcdefs_tbl(j).select_yn := 'N';
4771 END IF;
4772 ELSE
4773 ufc_set_count := ufc_set_count + 1;
4774 END IF;
4775
4776 ELSIF i = 13 THEN --taxation country (last determinant)
4777 IF p_tax_country_code IS NULL THEN
4778 IF l_ufcdefs_tbl(j).tax_country_code IS NULL THEN
4779 ufc_set_count := ufc_set_count + 1;
4780 l_ufcdefs_selected_tbl(k) := j;
4781 k := k + 1; --Added by bkatraga for bug 9483019
4782 ELSE
4783 l_ufcdefs_tbl(j).select_yn := 'N';
4784 END IF;
4785 ELSE
4786 IF l_ufcdefs_tbl(j).tax_country_code IS NULL OR
4787 l_ufcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
4788 ufc_set_count := ufc_set_count + 1;
4789 l_ufcdefs_selected_tbl(k) := j;
4790 k := k + 1; --Added by bkatraga for bug 9483019
4791 ELSE
4792 l_ufcdefs_tbl(j).select_yn := 'N';
4793 END IF;
4794 END IF;
4795
4796 /*IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4797 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4798 'k '||k||' l_ufcdefs_selected_tbl(k) '||l_ufcdefs_selected_tbl(k));
4799 END IF;*/
4800 --k := k + 1; Commented by bkatraga for bug 9483019
4801 END IF;
4802
4803 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4804 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4805 'ufc_set_count '||ufc_set_count);
4806 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4807 'l_ufcdefs_tbl(j).select_yn '||l_ufcdefs_tbl(j).select_yn);
4808 END IF;
4809 END IF;
4810 END LOOP;
4811
4812 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4813 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4814 'ufc_set_count '||ufc_set_count);
4815 END IF;
4816
4817 IF ufc_set_count = 0 THEN
4818 EXIT;
4819 END IF;
4820 END LOOP;
4821
4822 -- At this point l_ufcdefs_tbl has been scanned for all the determinants.
4823 -- select_yn flag in this table is set to 'Y' for ufcs that have either Null
4824 -- determinnt value or value matching with the transaction. Table l_ufcdefs_selected_tbl
4825 -- holds those indexes of original table l_ufcdefs_tbl, that have seleted ufcs.
4826 -- At this point this table may contain more than 1 ufcs. If so, we need to further filter
4827 -- out ufcs from this table based upon the priority of the determinants.
4828 -- Following priority order is used :
4829 -- 1. Transaction Type
4830 -- 2. Stream Type
4831 -- 3. Purchase Option
4832 -- 4. Usage Of Equipment
4833 -- 5. Vendor Location
4834 -- 6. Age of Equipment
4835 -- 7. Financial Product
4836 -- 8. Interest Disclosed
4837 -- 9. Transfer Of Title
4838 -- 10. Sale and Lease back
4839 -- 11. Purchase of Lease
4840
4841 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4842 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4843 'ufc_set_count outside first loop'||ufc_set_count);
4844 END IF;
4845
4846 IF ufc_set_count = 1 THEN
4847 l_ufc_code := l_ufcdefs_tbl(l_ufcdefs_selected_tbl(1)).ufc_code;
4848
4849 ELSIF ufc_set_count > 1 THEN
4850 -- There can be more than one selected ufcs at this point
4851 -- apply determinant priority logic to select 1 ufc
4852
4853 selected_count := ufc_set_count;
4854
4855 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4856 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4857 'l_ufcdefs_selected_tbl.count '||l_ufcdefs_selected_tbl.count );
4858 END IF;
4859
4860 FOR i IN 1..14 LOOP -- determinant loop
4861
4862 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4863 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4864 'i '||i||' selected_count '||selected_count );
4865 END IF;
4866
4867 j := 1;
4868 det_match_cnt := 0;
4869 l_det_null_tbl.DELETE;
4870
4871 IF selected_count > 1 THEN
4872 FOR k IN l_ufcdefs_selected_tbl.FIRST .. l_ufcdefs_selected_tbl.LAST LOOP -- finally selected indexes
4873 -- At this point all the selecetd ufcs will either have Null determinant value or determinant value matching with the calling transaction
4874 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4875 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.','k '||k);
4876 END IF;
4877
4878 IF i = 1 THEN -- transaction type
4879 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).try_id IS NULL THEN
4880
4881 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4882 j := j + 1;
4883 ELSE
4884 det_match_cnt := det_match_cnt + 1;
4885 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4886 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4887 -- when only one UFC is left
4888 END IF;
4889
4890 IF k = ufc_set_count THEN -- last record
4891 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4892 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4893 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4894 END IF;
4895
4896 IF det_match_cnt = selected_count THEN --k THEN
4897 NULL; -- all records have matching values, do nothing
4898 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4899 NULL; -- keep all records selected. Don't exclude yet.
4900 ELSIF det_match_cnt = 1 THEN
4901 selected_count := 1;
4902 ELSE -- more than one but less than total selected records have matching values
4903 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4904 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4905 selected_count := selected_count - 1;
4906 END LOOP;
4907 END IF;
4908 END IF;
4909
4910 ELSIF i = 2 THEN -- stream type
4911 IF p_sty_id IS NOT NULL THEN
4912 -- IF p_sty_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
4913 -- only NULL values for sty_id. So no need to filter further, move on to next determinant
4914 -- When system is processing a determinant, there will always be more than one selected ufcS
4915 -- This is because, at the end of processing each determinant, we check the selected count
4916 -- If selected count = 1 then we do not process next determinant and exit
4917 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4918 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).sty_id IS NULL THEN
4919 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4920 j := j + 1;
4921 ELSE
4922 det_match_cnt := det_match_cnt + 1;
4923 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4924 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4925 -- when only one UFC is left
4926 END IF;
4927 END IF;
4928
4929 IF k = ufc_set_count THEN -- last record
4930 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4931 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4932 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4933 END IF;
4934
4935 IF det_match_cnt = selected_count THEN --k THEN
4936 NULL; -- all records have matching values, do nothing
4937 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4938 NULL; -- keep all records selected. Don't exclude yet.
4939 ELSIF det_match_cnt = 1 THEN
4940 selected_count := 1;
4941 ELSE -- more than one but less than total selected records have matching values
4942 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4943 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4944 selected_count := selected_count - 1;
4945 END LOOP;
4946 END IF;
4947 END IF;
4948 END IF;
4949
4950 ELSIF i = 3 THEN -- termination quote type
4951 IF p_term_quote_type_code IS NOT NULL THEN
4952 -- IF p_term_quote_type_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
4953 -- only NULL values for term_quote_type_code. So no need to filter further, move on to next determinant
4954 -- When system is processing a determinant, there will always be more than one selected ufcS
4955 -- This is because, at the end of processing each determinant, we check the selected count
4956 -- If selected count = 1 then we do not process next determinant and exit
4957 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4958 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).term_quote_type_code IS NULL THEN
4959 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4960 j := j + 1;
4961 ELSE
4962 det_match_cnt := det_match_cnt + 1;
4963 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4964 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4965 -- when only one UFC is left
4966 END IF;
4967 END IF;
4968
4969 IF k = ufc_set_count THEN -- last record
4970 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4971 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4972 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4973 END IF;
4974
4975 IF det_match_cnt = selected_count THEN --k THEN
4976 NULL; -- all records have matching values, do nothing
4977 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4978 NULL; -- keep all records selected. Don't exclude yet.
4979 ELSIF det_match_cnt = 1 THEN
4980 selected_count := 1;
4981 ELSE -- more than one but less than total selected records have matching values
4982 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4983 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4984 selected_count := selected_count - 1;
4985 END LOOP;
4986 END IF;
4987 END IF;
4988 END IF;
4989
4990 ELSIF i = 4 THEN -- termination quote reason
4991 IF p_term_quote_reason_code IS NOT NULL THEN
4992 -- IF p_term_quote_reason_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
4993 -- only NULL values for term_quote_reason_code. So no need to filter further, move on to next determinant
4994 -- When system is processing a determinant, there will always be more than one selected ufcS
4995 -- This is because, at the end of processing each determinant, we check the selected count
4996 -- If selected count = 1 then we do not process next determinant and exit
4997 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4998 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).term_quote_reason_code IS NULL THEN
4999 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5000 j := j + 1;
5001 ELSE
5002 det_match_cnt := det_match_cnt + 1;
5003 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5004 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5005 -- when only one UFC is left
5006 END IF;
5007 END IF;
5008
5009 IF k = ufc_set_count THEN -- last record
5010 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5011 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5012 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5013 END IF;
5014
5015 IF det_match_cnt = selected_count THEN --k THEN
5016 NULL; -- all records have matching values, do nothing
5017 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5018 NULL; -- keep all records selected. Don't exclude yet.
5019 ELSIF det_match_cnt = 1 THEN
5020 selected_count := 1;
5021 ELSE -- more than one but less than total selected records have matching values
5022 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5023 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5024 selected_count := selected_count - 1;
5025 END LOOP;
5026 END IF;
5027 END IF;
5028 END IF;
5029
5030 ELSIF i = 5 THEN -- purchase option
5031 IF p_purchase_option IS NOT NULL THEN
5032 -- IF p_purchase_option is null then l_ufcdefs_tbl will have more than 1 ufcs with
5033 -- only NULL values for purchase_option. So no need to filter further, move on to next determinant
5034 -- When system is processing a determinant, there will always be more than one selected ufcS
5035 -- This is because, at the end of processing each determinant, we check the selected count
5036 -- If selected count = 1 then we do not process next determinant and exit
5037 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5038 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).purchase_option_code IS NULL THEN
5039 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5040 j := j + 1;
5041 ELSE
5042 det_match_cnt := det_match_cnt + 1;
5043 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5044 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5045 -- when only one UFC is left
5046 END IF;
5047 END IF;
5048
5049 IF k = ufc_set_count THEN -- last record
5050 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5051 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5052 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5053 END IF;
5054
5055 IF det_match_cnt = selected_count THEN --k THEN
5056 NULL; -- all records have matching values, do nothing
5057 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5058 NULL; -- keep all records selected. Don't exclude yet.
5059 ELSIF det_match_cnt = 1 THEN
5060 selected_count := 1;
5061 ELSE -- more than one but less than total selected records have matching values
5062 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5063 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5064 selected_count := selected_count - 1;
5065 END LOOP;
5066 END IF;
5067 END IF;
5068 END IF;
5069
5070 ELSIF i = 6 THEN -- usage of equipment
5071 IF p_equip_usage_code IS NOT NULL THEN
5072 -- IF p_equip_usage_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
5073 -- only NULL values for equip_usage_code. So no need to filter further, move on to next determinant
5074 -- When system is processing a determinant, there will always be more than one selected ufcS
5075 -- This is because, at the end of processing each determinant, we check the selected count
5076 -- If selected count = 1 then we do not process next determinant and exit
5077 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5078 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).equip_usage_code IS NULL THEN
5079 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5080 j := j + 1;
5081 ELSE
5082 det_match_cnt := det_match_cnt + 1;
5083 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5084 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5085 -- when only one UFC is left
5086 END IF;
5087 END IF;
5088
5089 IF k = ufc_set_count THEN -- last record
5090 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5091 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5092 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5093 END IF;
5094
5095 IF det_match_cnt = selected_count THEN --k THEN
5096 NULL; -- all records have matching values, do nothing
5097 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5098 NULL; -- keep all records selected. Don't exclude yet.
5099 ELSIF det_match_cnt = 1 THEN
5100 selected_count := 1;
5101 ELSE -- more than one but less than total selected records have matching values
5102 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5103 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5104 selected_count := selected_count - 1;
5105 END LOOP;
5106 END IF;
5107 END IF;
5108 END IF;
5109
5110 ELSIF i = 7 THEN -- vendor location
5111 IF p_vendor_site_id IS NOT NULL THEN
5112 -- IF p_vendor_site_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
5113 -- only NULL values for vendor_site_id. So no need to filter further, move on to next determinant
5114 -- When system is processing a determinant, there will always be more than one selected ufcS
5115 -- This is because, at the end of processing each determinant, we check the selected count
5116 -- If selected count = 1 then we do not process next determinant and exit
5117 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5118 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).vendor_site_id IS NULL THEN
5119 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5120 j := j + 1;
5121 ELSE
5122 det_match_cnt := det_match_cnt + 1;
5123 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5124 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5125 -- when only one UFC is left
5126 END IF;
5127 END IF;
5128
5129 IF k = ufc_set_count THEN -- last record
5130 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5131 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5132 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5133 END IF;
5134
5135 IF det_match_cnt = selected_count THEN --k THEN
5136 NULL; -- all records have matching values, do nothing
5137 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5138 NULL; -- keep all records selected. Don't exclude yet.
5139 ELSIF det_match_cnt = 1 THEN
5140 selected_count := 1;
5141 ELSE -- more than one but less than total selected records have matching values
5142 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5143 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5144 selected_count := selected_count - 1;
5145 END LOOP;
5146 END IF;
5147 END IF;
5148 END IF;
5149
5150 ELSIF i = 8 THEN -- age of equipment
5151 IF p_age_of_equip IS NOT NULL THEN
5152 -- IF p_age_of_equip is null then l_ufcdefs_tbl will have more than 1 ufcs with
5153 -- only NULL values for age_of_equip. So no need to filter further, move on to next determinant
5154 -- When system is processing a determinant, there will always be more than one selected ufcS
5155 -- This is because, at the end of processing each determinant, we check the selected count
5156 -- If selected count = 1 then we do not process next determinant and exit
5157 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5158 IF (l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).age_of_equip_from IS NULL AND
5159 l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).age_of_equip_to IS NULL) THEN
5160 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5161 j := j + 1;
5162 ELSE
5163 det_match_cnt := det_match_cnt + 1;
5164 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5165 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5166 -- when only one UFC is left
5167 END IF;
5168 END IF;
5169
5170 IF k = ufc_set_count THEN -- last record
5171 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5172 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5173 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5174 END IF;
5175
5176 IF det_match_cnt = selected_count THEN --k THEN
5177 NULL; -- all records have matching values, do nothing
5178 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5179 NULL; -- keep all records selected. Don't exclude yet.
5180 ELSIF det_match_cnt = 1 THEN
5181 selected_count := 1;
5182 ELSE -- more than one but less than total selected records have matching values
5183 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5184 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5185 selected_count := selected_count - 1;
5186 END LOOP;
5187 END IF;
5188 END IF;
5189 END IF;
5190
5191 ELSIF i = 9 THEN -- financial product
5192 IF p_fin_product_id IS NOT NULL THEN
5193 -- IF p_fin_product_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
5194 -- only NULL values for fin_product_id. So no need to filter further, move on to next determinant
5195 -- When system is processing a determinant, there will always be more than one selected ufcS
5196 -- This is because, at the end of processing each determinant, we check the selected count
5197 -- If selected count = 1 then we do not process next determinant and exit
5198 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5199 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).pdt_id IS NULL THEN
5200 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5201 j := j + 1;
5202 ELSE
5203 det_match_cnt := det_match_cnt + 1;
5204 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5205 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5206 -- when only one UFC is left
5207 END IF;
5208 END IF;
5209
5210 IF k = ufc_set_count THEN -- last record
5211 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5212 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5213 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5214 END IF;
5215
5216 IF det_match_cnt = selected_count THEN --k THEN
5217 NULL; -- all records have matching values, do nothing
5218 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5219 NULL; -- keep all records selected. Don't exclude yet.
5220 ELSIF det_match_cnt = 1 THEN
5221 selected_count := 1;
5222 ELSE -- more than one but less than total selected records have matching values
5223 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5224 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5225 selected_count := selected_count - 1;
5226 END LOOP;
5227 END IF;
5228 END IF;
5229 END IF;
5230
5231 ELSIF i = 10 THEN -- interest disclosed
5232 IF p_int_disclosed_code = 'Y' THEN
5233 -- IF p_int_disclosed_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5234 -- only NULL values for int_disclosed_code. So no need to filter further, move on to next determinant
5235 -- When system is processing a determinant, there will always be more than one selected ufcS
5236 -- This is because, at the end of processing each determinant, we check the selected count
5237 -- If selected count = 1 then we do not process next determinant and exit
5238 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5239 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).int_disclosed_code = 'N' THEN
5240 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5241 j := j + 1;
5242 ELSE
5243 det_match_cnt := det_match_cnt + 1;
5244 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5245 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5246 -- when only one UFC is left
5247 END IF;
5248 END IF;
5249
5250 IF k = ufc_set_count THEN -- last record
5251 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5252 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5253 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5254 END IF;
5255
5256 IF det_match_cnt = selected_count THEN --k THEN
5257 NULL; -- all records have matching values, do nothing
5258 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5259 NULL; -- keep all records selected. Don't exclude yet.
5260 ELSIF det_match_cnt = 1 THEN
5261 selected_count := 1;
5262 ELSE -- more than one but less than total selected records have matching values
5263 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5264 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5265 selected_count := selected_count - 1;
5266 END LOOP;
5267 END IF;
5268 END IF;
5269 END IF;
5270
5271 ELSIF i = 11 THEN -- transfer of title
5272 IF p_title_trnsfr_code = 'Y' THEN
5273 -- IF p_title_trnsfr_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5274 -- only NULL values for title_trnsfr_code. So no need to filter further, move on to next determinant
5275 -- When system is processing a determinant, there will always be more than one selected ufcS
5276 -- This is because, at the end of processing each determinant, we check the selected count
5277 -- If selected count = 1 then we do not process next determinant and exit
5278 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5279 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).title_trnsfr_code = 'N' THEN
5280 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5281 j := j + 1;
5282 ELSE
5283 det_match_cnt := det_match_cnt + 1;
5284 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5285 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5286 -- when only one UFC is left
5287 END IF;
5288 END IF;
5289
5290 IF k = ufc_set_count THEN -- last record
5291 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5292 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5293 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5294 END IF;
5295
5296 IF det_match_cnt = selected_count THEN --k THEN
5297 NULL; -- all records have matching values, do nothing
5298 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5299 NULL; -- keep all records selected. Don't exclude yet.
5300 ELSIF det_match_cnt = 1 THEN
5301 selected_count := 1;
5302 ELSE -- more than one but less than total selected records have matching values
5303 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5304 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5305 selected_count := selected_count - 1;
5306 END LOOP;
5307 END IF;
5308 END IF;
5309 END IF;
5310
5311 ELSIF i = 12 THEN -- sale and lease back
5312 IF p_sale_lease_back_code = 'Y' THEN
5313 -- IF p_sale_lease_back_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5314 -- only NULL values for sale_lease_back_code. So no need to filter further, move on to next determinant
5315 -- When system is processing a determinant, there will always be more than one selected ufcS
5316 -- This is because, at the end of processing each determinant, we check the selected count
5317 -- If selected count = 1 then we do not process next determinant and exit
5318 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5319 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).sale_lease_back_code = 'N' THEN
5320 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5321 j := j + 1;
5322 ELSE
5323 det_match_cnt := det_match_cnt + 1;
5324 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5325 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5326 -- when only one UFC is left
5327 END IF;
5328 END IF;
5329
5330 IF k = ufc_set_count THEN -- last record
5331 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5332 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5333 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5334 END IF;
5335
5336 IF det_match_cnt = selected_count THEN --k THEN
5337 NULL; -- all records have matching values, do nothing
5338 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5339 NULL; -- keep all records selected. Don't exclude yet.
5340 ELSIF det_match_cnt = 1 THEN
5341 selected_count := 1;
5342 ELSE -- more than one but less than total selected records have matching values
5343 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5344 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5345 selected_count := selected_count - 1;
5346 END LOOP;
5347 END IF;
5348 END IF;
5349 END IF;
5350
5351 ELSIF i = 13 THEN -- purchase of lease
5352 IF p_lease_purchased_code = 'Y' THEN
5353 -- IF p_lease_purchased_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5354 -- only NULL values for lease_purchased_code. So no need to filter further, move on to next determinant
5355 -- When system is processing a determinant, there will always be more than one selected ufcS
5356 -- This is because, at the end of processing each determinant, we check the selected count
5357 -- If selected count = 1 then we do not process next determinant and exit
5358 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5359 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).lease_purchased_code = 'N' THEN
5360 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5361 j := j + 1;
5362 ELSE
5363 det_match_cnt := det_match_cnt + 1;
5364 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5365 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5366 -- when only one UFC is left
5367 END IF;
5368 END IF;
5369
5370 IF k = ufc_set_count THEN -- last record
5371 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5372 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5373 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5374 END IF;
5375
5376 IF det_match_cnt = selected_count THEN --k THEN
5377 NULL; -- all records have matching values, do nothing
5378 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5379 NULL; -- keep all records selected. Don't exclude yet.
5380 ELSIF det_match_cnt = 1 THEN
5381 selected_count := 1;
5382 ELSE -- more than one but less than total selected records have matching values
5383 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5384 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5385 selected_count := selected_count - 1;
5386 END LOOP;
5387 END IF;
5388 END IF;
5389 END IF;
5390
5391 ELSIF i = 14 THEN -- tax country
5392 IF p_tax_country_code IS NOT NULL THEN
5393 -- IF p_tax_country_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
5394 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
5395 -- When system is processing a determinant, there will always be more than one selected ufcS
5396 -- This is because, at the end of processing each determinant, we check the selected count
5397 -- If selected count = 1 then we do not process next determinant and exit
5398 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5399 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
5400 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5401 j := j + 1;
5402 ELSE
5403 det_match_cnt := det_match_cnt + 1;
5404 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5405 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5406 -- when only one UFC is left
5407 END IF;
5408 END IF;
5409
5410 IF k = ufc_set_count THEN -- last record
5411 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5412 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5413 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5414 END IF;
5415
5416 IF det_match_cnt = selected_count THEN --k THEN
5417 NULL; -- all records have matching values, do nothing
5418 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5419 NULL; -- keep all records selected. Don't exclude yet.
5420 ELSIF det_match_cnt = 1 THEN
5421 selected_count := 1;
5422 ELSE -- more than one but less than total selected records have matching values
5423 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5424 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5425 selected_count := selected_count - 1;
5426 END LOOP;
5427 END IF;
5428 END IF;
5429 END IF;
5430 END IF;
5431 END LOOP;
5432 ELSIF selected_count = 1 THEN
5433 EXIT;
5434 END IF;
5435 END LOOP; -- determinant loop
5436
5437 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5438 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5439 'selected_count outside 2nd loop '||selected_count);
5440 END IF;
5441
5442 IF selected_count = 1 THEN
5443 l_ufc_code := l_ufcdefs_tbl(l_selected_ufc_pos).ufc_code;
5444 ELSIF selected_count > 1 THEN -- still more than one ufcs are selected
5445 l_ufc_code := NULL;
5446 END IF;
5447
5448 ELSIF ufc_set_count = 0 THEN
5449 l_ufc_code := NULL;
5450 END IF;
5451 END IF; -- MAIN IF Ends
5452
5453 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5454 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5455 'l_ufc_code '||l_ufc_code);
5456 END IF;
5457
5458 -- UFC can be NULL
5459 x_ufc_code := l_ufc_code;
5460
5461 EXCEPTION
5462 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5463
5464 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5465 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5466 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
5467 END IF;
5468
5469 IF l_ufcdef_csr%ISOPEN THEN
5470 CLOSE l_ufcdef_csr;
5471 END IF;
5472
5473 x_return_status := OKL_API.G_RET_STS_ERROR;
5474 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5475
5476 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5477 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5478 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
5479 END IF;
5480
5481 IF l_ufcdef_csr%ISOPEN THEN
5482 CLOSE l_ufcdef_csr;
5483 END IF;
5484
5485 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
5486
5487 WHEN OTHERS THEN
5488 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5489 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5490 'EXCEPTION :'||sqlerrm);
5491 END IF;
5492
5493 IF l_ufcdef_csr%ISOPEN THEN
5494 CLOSE l_ufcdef_csr;
5495 END IF;
5496
5497
5498 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
5499 -- unexpected error
5500 OKL_API.set_message(p_app_name => g_app_name,
5501 p_msg_name => g_unexpected_error,
5502 p_token1 => g_sqlcode_token,
5503 p_token1_value => sqlcode,
5504 p_token2 => g_sqlerrm_token,
5505 p_token2_value => sqlerrm);
5506
5507 END get_ufc_code;
5508
5509 /*========================================================================
5510 | PRIVATE PROCEDURE populate_tax_info
5511 |
5512 | DESCRIPTION
5513 | This procedure derives the tax sources and tax details to populate ZX tables
5514 |
5515 | CALLED FROM
5516 | process_booking_upfront_tax
5517 | process_quote_tax
5518 | process_asset_loc_tax
5519 | process_quoting_upfront_tax
5520 |
5521 |
5522 | CALLS PROCEDURES/FUNCTIONS
5523 | get_ufc_code()
5524 | okl_am_util_pvt.get_formula_value()
5525 |
5526 | PARAMETERS
5527 | p_prch_opt_det -- Purchase Option
5528 | p_fin_prod_id_det -- Financial product
5529 | p_int_disclosed_det -- Interest Disclosed
5530 | -- asset level begin
5531 | p_TITLE_TRNSFR_CODE -- Transfer of Title
5532 | p_SALE_LEASE_BACK_CODE -- Sale and Lease Back
5533 | p_LEASE_PURCHASED_CODE -- Purchase of Lease
5534 | p_EQUIP_USAGE_CODE -- Usage Of Equipment
5535 | p_VENDOR_SITE_ID -- Vendor Site ID
5536 | p_AGE_OF_EQUIP -- Age of Equipment
5537 | p_kle_id -- Kle ID
5538 | p_asset_number -- Asset Number
5539 | p_ship_to_site_use_id -- Ship to Site Use ID
5540 | p_inventory_item_id -- Inventory Item ID
5541 | --asset level end
5542 | p_sty_id -- Stream Type ID
5543 | p_taxable_basis -- Taxable Basis Amount
5544 | p_tax_call_cnt -- counter
5545 | px_tax_sources_tbl -- table used to store tax source transactions
5546 | p_khr_id -- contract ID
5547 | p_source_trx_id -- Source Trx ID
5548 | p_source_table -- Source Table
5549 | p_reported_yn -- reportable y/n
5550 | p_fma_id -- formula ID
5551 | p_formula_name -- formula name
5552 | p_bill_to_siteuseid -- Bill to site use id
5553 | lx_trx_rec_tbl -- table used to store input data for the TAx Engine call
5554 | p_k_start_date -- contract start date
5555 | p_currency_code -- Currency Code
5556 | p_cust_trx_type_id -- AR customer trx type
5557 | p_minimum_accountable_unit -- Minimum accountable unit for currency
5558 | p_precision -- currency precision
5559 |
5560 | KNOWN ISSUES
5561 |
5562 | NOTES
5563 |
5564 |
5565 | MODIFICATION HISTORY
5566 | Date Author Description of Changes
5567 | 08-APR-05 SECHAWLA Created
5568 | 05-DEC-05 SECHAWLA Use a different index p_trx_rec_tbl_cnt
5569 | to populate p_trx_rec_tbl. This happens
5570 | only for the 'Rebook' transaction
5571 | 04-Jan-08 SECHAWLA 6651621 Added 3 additional parameters to taxable basis override formula -
5572 | 'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
5573 | 15-Nov-09 sechawla 9121244 wrong variable was being used to send tax classification code to ebtax
5574 | because of which fresh tax call, right after the upgrade, using migrated AR setups
5575 | was not calculating any tax.
5576 *=======================================================================*/
5577
5578 PROCEDURE populate_tax_info(
5579 p_api_version IN NUMBER,
5580 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5581 x_return_status OUT NOCOPY VARCHAR2,
5582 x_msg_count OUT NOCOPY NUMBER,
5583 x_msg_data OUT NOCOPY VARCHAR2,
5584 p_prch_opt_det IN VARCHAR2,
5585 p_fin_prod_id_det IN NUMBER,
5586 p_int_disclosed_det IN VARCHAR2,
5587 p_title_trnsfr_code IN VARCHAR2,
5588 p_sale_lease_back_code IN VARCHAR2,
5589 p_lease_purchased_code IN VARCHAR2,
5590 p_equip_usage_code IN VARCHAR2,
5591 p_vendor_site_id IN NUMBER,
5592 p_age_of_equip IN NUMBER,
5593 p_source_trx_name IN VARCHAR2,
5594 p_cust_trx_type_id IN NUMBER,
5595 p_book_class_code IN VARCHAR2,
5596 p_tax_call_cnt IN NUMBER,
5597 p_line_params_tbl_cnt IN NUMBER DEFAULT NULL,
5598 p_fma_id IN NUMBER,
5599 p_formula_name IN VARCHAR2,
5600 p_minimum_accountable_unit IN NUMBER,
5601 p_precision IN NUMBER,
5602 p_sales_quote_id IN NUMBER, -- Used only for Sales Quote tax call
5603 p_event_type_code IN VARCHAR2,
5604 p_ledger_id IN NUMBER,
5605 p_line_level_action IN VARCHAR2,
5606 p_tax_src_params_rec IN tax_src_params_rec_type,
5607 p_quote_flag IN VARCHAR2,
5608 p_rounding_ship_to_party_id IN NUMBER,
5609 p_rounding_bill_to_party_id IN NUMBER,
5610 p_line_amt_includes_tax_flag IN VARCHAR2,
5611 p_term_quote_type_code IN VARCHAR2,
5612 p_term_quote_reason_code IN VARCHAR2,
5613 p_alc_ser_def_code IN VARCHAR2 DEFAULT NULL,
5614 px_tax_sources_tbl IN OUT NOCOPY tax_sources_tbl_type,
5615 px_line_params_tbl IN OUT NOCOPY line_params_tbl_type) IS
5616
5617 lx_tbc_code VARCHAR2(30);
5618 lx_ufc_code VARCHAR2(30);
5619 lx_pc_code VARCHAR2(30);
5620 lx_tax_classification_code VARCHAR2(50);
5621 l_assessable_value NUMBER;
5622 l_line_amt NUMBER;
5623 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
5624 l_set_of_books_id NUMBER;
5625 l_alc_fetch_code BOOLEAN := FALSE;
5626
5627 lx_tax_valid_code VARCHAR2(1);
5628
5629 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
5630 SELECT set_of_books_id
5631 FROM ar_system_parameters_all
5632 WHERE org_id = cp_org_id;
5633
5634 l_next_index NUMBER;
5635
5636 BEGIN
5637
5638 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5639 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info','Begin(+)');
5640 END IF;
5641
5642 --Print Input Variables
5643 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5644 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5645 'p_init_msg_list :'||p_init_msg_list);
5646 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5647 'p_prch_opt_det :'||p_prch_opt_det);
5648 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5649 'p_prch_opt_det :'||p_prch_opt_det);
5650 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5651 'p_fin_prod_id_det :'||p_fin_prod_id_det);
5652 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5653 'p_int_disclosed_det :'||p_int_disclosed_det);
5654 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5655 'p_title_trnsfr_code :'||p_title_trnsfr_code);
5656 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5657 'p_sale_lease_back_code :'||p_sale_lease_back_code);
5658 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5659 'p_lease_purchased_code :'||p_lease_purchased_code);
5660 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5661 'p_equip_usage_code :'||p_equip_usage_code);
5662 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5663 'p_vendor_site_id :'||p_vendor_site_id);
5664 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5665 'p_age_of_equip :'||p_age_of_equip);
5666 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5667 'p_tax_call_cnt :'||p_tax_call_cnt);
5668 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5669 'px_tax_sources_tbl.count :'||px_tax_sources_tbl.count);
5670 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5671 'p_fma_id :'||p_fma_id);
5672 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5673 'p_formula_name :'||p_formula_name);
5674 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5675 'p_cust_trx_type_id :'||p_cust_trx_type_id);
5676 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5677 'p_minimum_accountable_unit :'||p_minimum_accountable_unit);
5678 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5679 'p_precision :'||p_precision);
5680 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5681 'p_sales_quote_id :'||p_sales_quote_id);
5682 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5683 'p_event_type_code :'||p_event_type_code);
5684 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5685 'p_ledger_id :'||p_ledger_id);
5686 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5687 'p_quote_flag :'||p_quote_flag);
5688 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5689 'p_line_level_action :'||p_line_level_action);
5690 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5691 'p_rounding_ship_to_party_id :'||p_rounding_ship_to_party_id);
5692 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5693 'p_rounding_bill_to_party_id :'||p_rounding_bill_to_party_id);
5694 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5695 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5696 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5697 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5698 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5699 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5700 END IF;
5701
5702 IF (p_source_trx_name = 'Asset Relocation' AND
5703 p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L') AND
5704 p_alc_ser_def_code IN ('A', 'F')) THEN
5705 l_alc_fetch_code := TRUE;
5706 ELSIF (p_source_trx_name = 'Asset Relocation' AND
5707 (p_tax_src_params_rec.alc_serialized_yn IS NULL OR
5708 p_tax_src_params_rec.alc_serialized_yn = 'N')) THEN
5709 l_alc_fetch_code := TRUE;
5710 END IF;
5711
5712 IF (l_alc_fetch_code OR p_source_trx_name <> 'Asset Relocation') THEN
5713 -- This processing will be done only once for Asset Relocation transaction for
5714 -- the Serialized/Non-Serialized asset. It will be processed as needed for
5715 -- other transactions
5716 -- Get TBC code
5717 get_tbc_code(p_api_version => p_api_version,
5718 p_init_msg_list => OKC_API.G_FALSE,
5719 x_return_status => x_return_status,
5720 x_msg_count => x_msg_count,
5721 x_msg_data => x_msg_data,
5722 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5723 p_try_id => p_tax_src_params_rec.try_id,
5724 p_book_class_code => p_book_class_code,
5725 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5726 x_tbc_code => lx_tbc_code);
5727
5728 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5729 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5730 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5731 RAISE OKL_API.G_EXCEPTION_ERROR;
5732 END IF;
5733
5734 -- Validate TBC Code
5735 IF lx_tbc_code IS NOT NULL THEN
5736 validate_tax_code(
5737 p_api_version => p_api_version,
5738 p_init_msg_list => p_init_msg_list,
5739 x_return_status => x_return_status,
5740 x_msg_count => x_msg_count,
5741 x_msg_data => x_msg_data,
5742 p_trx_date => p_tax_src_params_rec.trx_date,
5743 p_tbc_code => lx_tbc_code,
5744 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5745
5746 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5747 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5748 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5749 RAISE OKL_API.G_EXCEPTION_ERROR;
5750 END IF;
5751 END IF;
5752
5753 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5754 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5755 'lx_tbc_code'||lx_tbc_code);
5756 END IF;
5757
5758 -- Get the first level determinant for TBC basing on transaction, if the value is null
5759 IF lx_tbc_code IS NULL OR lx_tax_valid_code = 'F' THEN
5760 IF p_source_trx_name IN ('Tax Schedule', 'Estimated Billing') THEN
5761 lx_tbc_code := 'SALES_TRANSACTION';
5762 ELSE
5763 lx_tbc_code := 'BOOKING';
5764 END IF;
5765 END IF;
5766
5767 IF (p_source_trx_name = 'Asset Relocation' AND
5768 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5769 p_alc_ser_def_code = 'F') THEN
5770 G_TBC_CODE := lx_tbc_code;
5771 END IF;
5772
5773 -- Get PC code
5774 get_pc_code(p_api_version => p_api_version,
5775 p_init_msg_list => OKC_API.G_FALSE,
5776 x_return_status => x_return_status,
5777 x_msg_count => x_msg_count,
5778 x_msg_data => x_msg_data,
5779 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5780 p_purchase_option_code => p_prch_opt_det,
5781 p_int_disclosed_code => p_int_disclosed_det,
5782 p_title_trnsfr_code => p_title_trnsfr_code,
5783 p_sale_lease_back_code => p_sale_lease_back_code,
5784 p_lease_purchased_code => p_lease_purchased_code,
5785 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5786 x_pc_code => lx_pc_code);
5787
5788 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5789 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5790 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5791 RAISE OKL_API.G_EXCEPTION_ERROR;
5792 END IF;
5793
5794 -- Validate PC Code
5795 IF lx_pc_code IS NOT NULL THEN
5796 validate_tax_code(
5797 p_api_version => p_api_version,
5798 p_init_msg_list => p_init_msg_list,
5799 x_return_status => x_return_status,
5800 x_msg_count => x_msg_count,
5801 x_msg_data => x_msg_data,
5802 p_trx_date => p_tax_src_params_rec.trx_date,
5803 p_pc_code => lx_pc_code,
5804 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5805
5806 IF (lx_tax_valid_code = 'F') THEN
5807 lx_pc_code := null;
5808 END IF;
5809
5810 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5811 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5812 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5813 RAISE OKL_API.G_EXCEPTION_ERROR;
5814 END IF;
5815 END IF;
5816
5817 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5818 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5819 'lx_pc_code'||lx_pc_code);
5820 END IF;
5821
5822 IF (p_source_trx_name = 'Asset Relocation' AND
5823 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5824 p_alc_ser_def_code = 'F') THEN
5825 G_PC_CODE := lx_pc_code;
5826 END IF;
5827
5828 -- contract level call begin
5829 -- Get UFC code
5830 get_ufc_code(p_api_version => p_api_version,
5831 p_init_msg_list => OKC_API.G_FALSE,
5832 x_return_status => x_return_status,
5833 x_msg_count => x_msg_count,
5834 x_msg_data => x_msg_data,
5835 p_purchase_option => p_prch_opt_det,
5836 p_fin_product_id => p_fin_prod_id_det,
5837 p_try_id => p_tax_src_params_rec.try_id,
5838 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5839 p_int_disclosed_code => p_int_disclosed_det,
5840 p_title_trnsfr_code => p_title_trnsfr_code, -- asset level
5841 p_sale_lease_back_code => p_sale_lease_back_code, -- asset level
5842 p_lease_purchased_code => p_lease_purchased_code, -- asset level
5843 p_equip_usage_code => p_equip_usage_code ,-- asset level
5844 p_vendor_site_id => p_vendor_site_id, -- asset level
5845 p_age_of_equip => p_age_of_equip, -- asset level
5846 p_term_quote_type_code => p_term_quote_type_code,
5847 p_term_quote_reason_code => p_term_quote_reason_code,
5848 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5849 x_ufc_code => lx_ufc_code);
5850
5851 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5852 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5853 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5854 RAISE OKL_API.G_EXCEPTION_ERROR;
5855 END IF;
5856
5857 -- Validate UFC Code
5858 IF lx_ufc_code IS NOT NULL THEN
5859 validate_tax_code(
5860 p_api_version => p_api_version,
5861 p_init_msg_list => p_init_msg_list,
5862 x_return_status => x_return_status,
5863 x_msg_count => x_msg_count,
5864 x_msg_data => x_msg_data,
5865 p_trx_date => p_tax_src_params_rec.trx_date,
5866 p_ufc_code => lx_ufc_code,
5867 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5868
5869 IF (lx_tax_valid_code = 'F') THEN
5870 lx_ufc_code := null;
5871 END IF;
5872
5873 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5874 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5875 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5876 RAISE OKL_API.G_EXCEPTION_ERROR;
5877 END IF;
5878 END IF;
5879
5880 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5881 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5882 'lx_ufc_code'||lx_ufc_code);
5883 END IF;
5884
5885 IF (p_source_trx_name = 'Asset Relocation' AND
5886 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5887 p_alc_ser_def_code = 'F') THEN
5888 G_UFC_CODE := lx_ufc_code;
5889 END IF;
5890
5891 END IF;
5892
5893 -- Check if taxable basis override applies
5894 IF p_fma_id IS NOT NULL THEN
5895 -- execute tax basis override formula, pass tax determinants
5896 l_add_params(1).name := 'PURCHASE_OPTION';
5897 l_add_params(1).value := p_prch_opt_det;
5898
5899 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
5900 l_add_params(2).value := p_fin_prod_id_det;
5901
5902 l_add_params(3).name := 'TRX_TYPE_ID';
5903 l_add_params(3).value := p_tax_src_params_rec.try_id;
5904
5905 l_add_params(4).name := 'STREAM_TYPE_ID';
5906 l_add_params(4).value := p_tax_src_params_rec.sty_id;
5907
5908 l_add_params(5).name := 'INTEREST_DISCLOSED';
5909 l_add_params(5).value := p_int_disclosed_det;
5910
5911 l_add_params(6).name := 'TRANSFER_OF_TITLE';
5912 l_add_params(6).value := p_title_trnsfr_code;
5913
5914 l_add_params(7).name := 'SALE_LEASE_BACK';
5915 l_add_params(7).value := p_sale_lease_back_code;
5916
5917 l_add_params(8).name := 'PURCHASE_OF_LEASE';
5918 l_add_params(8).value := p_lease_purchased_code;
5919
5920 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
5921 l_add_params(9).value := p_equip_usage_code;
5922
5923 l_add_params(10).name := 'VENDOR_SITE_ID';
5924 l_add_params(10).value := p_vendor_site_id;
5925
5926 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
5927 l_add_params(11).value := p_age_of_equip;
5928
5929 l_add_params(12).name := 'BOOK_CLASS';
5930 l_add_params(12).value := p_book_class_code;
5931
5932 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
5933 l_add_params(13).value := p_tax_src_params_rec.bill_to_party_site_id;
5934
5935 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
5936 l_add_params(14).value := p_tax_src_params_rec.bill_to_location_id;
5937
5938 l_add_params(15).name := 'BILL_TO_PARTY_ID';
5939 l_add_params(15).value := p_tax_src_params_rec.bill_to_party_id;
5940
5941 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
5942 l_add_params(16).value := p_tax_src_params_rec.ship_to_party_site_id;
5943
5944 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
5945 l_add_params(17).value := p_tax_src_params_rec.ship_to_location_id;
5946
5947 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
5948 l_add_params(18).value := p_tax_src_params_rec.ship_to_party_id;
5949
5950 -- Directly Mapped
5951 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
5952 l_add_params(19).value := p_tax_src_params_rec.bill_to_cust_acct_site_use_id;
5953
5954 l_add_params(20).name := 'INVENTORY_ITEM_ID';
5955 l_add_params(20).value := p_tax_src_params_rec.inventory_item_id;
5956
5957 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
5958 l_add_params(21).value := p_tax_src_params_rec.ship_to_cust_acct_site_use_id;
5959
5960 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
5961 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
5962 l_add_params(22).name := 'LINE_NAME';
5963 l_add_params(22).value := p_tax_src_params_rec.line_name;
5964
5965 l_add_params(23).name := 'SOURCE_TRX_NAME';
5966 l_add_params(23).value := p_source_trx_name;
5967
5968 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
5969 l_add_params(24).value := p_tax_src_params_rec.line_amt;
5970 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
5971
5972 l_next_index := 25; --SECHAWLA 04-Jan-08 6651621 - Added
5973
5974 IF p_sales_quote_id IS NOT NULL THEN
5975 l_add_params(l_next_index).name := 'SALES_QUOTE_ID'; --SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5976 l_add_params(l_next_index).value := p_sales_quote_id;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5977 l_next_index := l_next_index + 1;
5978 END IF;
5979
5980 IF (p_source_trx_name = 'Estimated Billing') THEN
5981 l_add_params(l_next_index).name := 'TERM_QUOTE_TYPE_CODE';--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5982 l_add_params(l_next_index).value := p_term_quote_type_code;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5983
5984 l_next_index := l_next_index + 1; --SECHAWLA 04-Jan-08 6651621 - Added
5985
5986 l_add_params(l_next_index).name := 'TERM_QUOTE_REASON_CODE';--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5987 l_add_params(l_next_index).value := p_term_quote_reason_code;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5988 END IF;
5989
5990 okl_am_util_pvt.get_formula_value(
5991 p_formula_name => p_formula_name,
5992 p_chr_id => p_tax_src_params_rec.khr_id, -- will be NULL for sales Quote tax call
5993 p_cle_id => p_tax_src_params_rec.kle_id, -- will be NULL for sales Quote tax call
5994 p_additional_parameters => l_add_params,
5995 x_formula_value => l_assessable_value, --OVERRIDEN TAXABLE BASIS
5996 x_return_status => x_return_status);
5997
5998 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
5999 OKL_API.init_msg_list('T');
6000 OKL_API.set_message(p_app_name => 'OKL',
6001 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
6002 p_token1 => 'FMA_NAME',
6003 p_token1_value => p_formula_name,
6004 p_token2 => 'TRX_NAME ',
6005 p_token2_value => p_source_trx_name);
6006 RAISE OKL_API.G_EXCEPTION_ERROR;
6007 END IF;
6008
6009 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6010 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6011 'calculated l_assessable_value '||l_assessable_value);
6012 END IF;
6013 END IF;
6014
6015 -- Populate the line_amt in l_assessable_value if null
6016 IF l_assessable_value IS NULL THEN
6017 l_assessable_value := p_tax_src_params_rec.line_amt;
6018 l_line_amt := p_tax_src_params_rec.line_amt;
6019 ELSE
6020 l_line_amt := l_assessable_value;
6021 END IF;
6022
6023 -- Get Set of Books ID
6024 OPEN c_get_set_of_books_id(cp_org_id => p_tax_src_params_rec.org_id);
6025 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
6026 CLOSE c_get_set_of_books_id;
6027
6028 -- Get the tax classification code
6029 IF (l_alc_fetch_code OR p_source_trx_name <> 'Asset Relocation') THEN
6030 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6031 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6032 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
6033 END IF;
6034
6035 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
6036 x_return_status => x_return_status,
6037 p_ship_to_site_use_id => p_tax_src_params_rec.ship_to_cust_acct_site_use_id,
6038 p_bill_to_site_use_id => p_tax_src_params_rec.bill_to_cust_acct_site_use_id,
6039 p_inventory_item_id => p_tax_src_params_rec.inventory_item_id,
6040 p_organization_id => p_tax_src_params_rec.org_id,
6041 p_set_of_books_id => l_set_of_books_id,
6042 p_trx_date => p_tax_src_params_rec.trx_date,
6043 p_trx_type_id => null,
6044 p_entity_code => G_AR_ENTITY_CODE,
6045 p_event_class_code => G_INVOICE_EVENT_CLASS_CODE,
6046 p_application_id => G_AR_APPLICATION_ID,
6047 p_internal_organization_id => p_tax_src_params_rec.org_id,
6048 x_tax_classification_code => lx_tax_classification_code );
6049
6050 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6051 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6052 'Return Status '|| x_return_status);
6053 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6054 'lx_tax_classification_code = '|| lx_tax_classification_code);
6055 END IF;
6056
6057 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6058 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6059 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6060 RAISE OKL_API.G_EXCEPTION_ERROR;
6061 END IF;
6062
6063 IF (p_source_trx_name = 'Asset Relocation' AND
6064 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
6065 p_alc_ser_def_code = 'F') THEN
6066 G_TAX_CLASS_CODE := lx_tax_classification_code;
6067 END IF;
6068
6069 END IF;
6070
6071 IF (p_source_trx_name = 'Asset Relocation' AND
6072 p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L') AND
6073 p_alc_ser_def_code = 'N') THEN
6074 lx_ufc_code := G_UFC_CODE;
6075 lx_tbc_code := G_TBC_CODE;
6076 lx_pc_code := G_PC_CODE;
6077 lx_tax_classification_code := G_TAX_CLASS_CODE;
6078 END IF;
6079
6080 -- populate okl_tax_sources pl/sql table
6081 px_tax_sources_tbl(p_tax_call_cnt).id := get_seq_id;
6082 px_tax_sources_tbl(p_tax_call_cnt).khr_id := p_tax_src_params_rec.khr_id;
6083 px_tax_sources_tbl(p_tax_call_cnt).kle_id := p_tax_src_params_rec.kle_id;
6084 px_tax_sources_tbl(p_tax_call_cnt).sty_id := p_tax_src_params_rec.sty_id;
6085 px_tax_sources_tbl(p_tax_call_cnt).inventory_item_id := p_tax_src_params_rec.inventory_item_id;
6086 px_tax_sources_tbl(p_tax_call_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6087 px_tax_sources_tbl(p_tax_call_cnt).line_amt := l_line_amt;
6088 px_tax_sources_tbl(p_tax_call_cnt).line_name := p_tax_src_params_rec.line_name;
6089 px_tax_sources_tbl(p_tax_call_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6090 px_tax_sources_tbl(p_tax_call_cnt).org_id := p_tax_src_params_rec.org_id;
6091 px_tax_sources_tbl(p_tax_call_cnt).product_type := G_DEFAULT_PRODUCT_TYPE;
6092 px_tax_sources_tbl(p_tax_call_cnt).assessable_value := l_assessable_value;
6093 px_tax_sources_tbl(p_tax_call_cnt).asset_number := p_tax_src_params_rec.asset_number;
6094 px_tax_sources_tbl(p_tax_call_cnt).reported_yn := p_tax_src_params_rec.reported_yn;
6095
6096 px_tax_sources_tbl(p_tax_call_cnt).trx_id := p_tax_src_params_rec.trx_id;
6097
6098 IF (p_source_trx_name = 'Estimated Billing') THEN
6099 px_tax_sources_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6100 ELSE
6101 px_tax_sources_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6102 END IF;
6103
6104 px_tax_sources_tbl(p_tax_call_cnt).trx_level_type := G_TRX_LEVEL_TYPE;
6105 px_tax_sources_tbl(p_tax_call_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6106 px_tax_sources_tbl(p_tax_call_cnt).trx_date := p_tax_src_params_rec.trx_date;
6107 px_tax_sources_tbl(p_tax_call_cnt).try_id := p_tax_src_params_rec.try_id;
6108
6109 px_tax_sources_tbl(p_tax_call_cnt).entity_code := p_tax_src_params_rec.entity_code;
6110 px_tax_sources_tbl(p_tax_call_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6111 px_tax_sources_tbl(p_tax_call_cnt).application_id := G_OKL_APPLICATION_ID;
6112 px_tax_sources_tbl(p_tax_call_cnt).request_id := null;
6113
6114 px_tax_sources_tbl(p_tax_call_cnt).program_id := null;
6115 px_tax_sources_tbl(p_tax_call_cnt).program_application_id := null;
6116 px_tax_sources_tbl(p_tax_call_cnt).program_update_date := null;
6117
6118 px_tax_sources_tbl(p_tax_call_cnt).attribute_category := null;
6119 px_tax_sources_tbl(p_tax_call_cnt).attribute1 := null;
6120 px_tax_sources_tbl(p_tax_call_cnt).attribute2 := null;
6121 px_tax_sources_tbl(p_tax_call_cnt).attribute3 := null;
6122 px_tax_sources_tbl(p_tax_call_cnt).attribute4 := null;
6123 px_tax_sources_tbl(p_tax_call_cnt).attribute5 := null;
6124 px_tax_sources_tbl(p_tax_call_cnt).attribute6 := null;
6125 px_tax_sources_tbl(p_tax_call_cnt).attribute7 := null;
6126 px_tax_sources_tbl(p_tax_call_cnt).attribute8 := null;
6127 px_tax_sources_tbl(p_tax_call_cnt).attribute9 := null;
6128 px_tax_sources_tbl(p_tax_call_cnt).attribute10 := null;
6129 px_tax_sources_tbl(p_tax_call_cnt).attribute11 := null;
6130 px_tax_sources_tbl(p_tax_call_cnt).attribute12 := null;
6131 px_tax_sources_tbl(p_tax_call_cnt).attribute13 := null;
6132 px_tax_sources_tbl(p_tax_call_cnt).attribute14 := null;
6133 px_tax_sources_tbl(p_tax_call_cnt).attribute15 := null;
6134 px_tax_sources_tbl(p_tax_call_cnt).created_by := G_USER_ID;
6135 px_tax_sources_tbl(p_tax_call_cnt).creation_date := SYSDATE;
6136 px_tax_sources_tbl(p_tax_call_cnt).last_updated_by := G_USER_ID;
6137 px_tax_sources_tbl(p_tax_call_cnt).last_update_date := SYSDATE;
6138 px_tax_sources_tbl(p_tax_call_cnt).last_update_login := G_LOGIN_ID;
6139 px_tax_sources_tbl(p_tax_call_cnt).object_version_number := null;
6140
6141 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6142 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6143 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6144
6145 px_tax_sources_tbl(p_tax_call_cnt).product_fisc_classification := null;
6146 px_tax_sources_tbl(p_tax_call_cnt).product_category := lx_pc_code;
6147 px_tax_sources_tbl(p_tax_call_cnt).user_defined_fisc_class := lx_ufc_code;
6148 px_tax_sources_tbl(p_tax_call_cnt).tax_classification_code := lx_tax_classification_code;
6149 px_tax_sources_tbl(p_tax_call_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6150 px_tax_sources_tbl(p_tax_call_cnt).provnl_tax_determination_date := null;
6151 px_tax_sources_tbl(p_tax_call_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6152 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6153 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6154 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6155 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6156 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6157 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6158 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6159 px_tax_sources_tbl(p_tax_call_cnt).tax_call_type_code := p_tax_src_params_rec.tax_call_type_code;
6160 px_tax_sources_tbl(p_tax_call_cnt).trx_business_category := lx_tbc_code;
6161 px_tax_sources_tbl(p_tax_call_cnt).tax_line_status_code := p_tax_src_params_rec.tax_line_status_code;
6162
6163 px_tax_sources_tbl(p_tax_call_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6164 px_tax_sources_tbl(p_tax_call_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6165 px_tax_sources_tbl(p_tax_call_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6166 px_tax_sources_tbl(p_tax_call_cnt).ship_to_cust_acct_site_use_id := p_tax_src_params_rec.ship_to_cust_acct_site_use_id;
6167 px_tax_sources_tbl(p_tax_call_cnt).bill_to_cust_acct_id := p_tax_src_params_rec.bill_to_cust_acct_id;
6168 px_tax_sources_tbl(p_tax_call_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6169 px_tax_sources_tbl(p_tax_call_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6170 px_tax_sources_tbl(p_tax_call_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6171 px_tax_sources_tbl(p_tax_call_cnt).bill_to_cust_acct_site_use_id := p_tax_src_params_rec.bill_to_cust_acct_site_use_id;
6172
6173 -- Populate ALC_SERIALIZED_YN for ALC transaction
6174 IF (p_source_trx_name = 'Asset Relocation') THEN
6175 IF (p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L')) THEN
6176 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_yn := p_tax_src_params_rec.alc_serialized_yn;
6177 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_total_line_amt := p_tax_src_params_rec.alc_serialized_total_line_amt;
6178 ELSE
6179 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_yn := 'N';
6180 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_total_line_amt := p_tax_src_params_rec.alc_serialized_total_line_amt;
6181 END IF;
6182 END IF;
6183
6184 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6185 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6186 'POPULATED px_tax_sources_tbl ');
6187 END IF;
6188
6189 IF (p_line_params_tbl_cnt IS NULL) THEN
6190 px_line_params_tbl(p_tax_call_cnt).application_id := G_OKL_APPLICATION_ID;
6191 px_line_params_tbl(p_tax_call_cnt).trx_id := p_tax_src_params_rec.trx_id;
6192 px_line_params_tbl(p_tax_call_cnt).internal_organization_id := p_tax_src_params_rec.org_id;
6193 px_line_params_tbl(p_tax_call_cnt).entity_code := p_tax_src_params_rec.entity_code;
6194 px_line_params_tbl(p_tax_call_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6195 px_line_params_tbl(p_tax_call_cnt).event_type_code := p_event_type_code;
6196 px_line_params_tbl(p_tax_call_cnt).trx_date := p_tax_src_params_rec.trx_date;
6197 px_line_params_tbl(p_tax_call_cnt).ledger_id := p_ledger_id;
6198 px_line_params_tbl(p_tax_call_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6199 px_line_params_tbl(p_tax_call_cnt).trx_level_type := p_tax_src_params_rec.trx_level_type;
6200 px_line_params_tbl(p_tax_call_cnt).line_level_action := p_line_level_action;
6201
6202 IF (p_source_trx_name = 'Estimated Billing') THEN
6203 px_line_params_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6204 ELSE
6205 px_line_params_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6206 END IF;
6207
6208 px_line_params_tbl(p_tax_call_cnt).line_amt := l_line_amt;
6209 px_line_params_tbl(p_tax_call_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6210 px_line_params_tbl(p_tax_call_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6211 px_line_params_tbl(p_tax_call_cnt).product_type := p_tax_src_params_rec.product_type;
6212
6213 --sechawla 9121244 : p_tax_src_params_rec.tax_classification_code does not have tax classification code populated
6214 --correct variable to use is lx_tax_classification_code
6215 --px_line_params_tbl(p_tax_call_cnt).output_tax_classification_code := p_tax_src_params_rec.tax_classification_code;
6216 px_line_params_tbl(p_tax_call_cnt).output_tax_classification_code := lx_tax_classification_code;
6217 --sechawla 9121244 : end
6218
6219 px_line_params_tbl(p_tax_call_cnt).assessable_value := l_assessable_value;
6220 px_line_params_tbl(p_tax_call_cnt).receivables_trx_type_id := p_cust_trx_type_id;
6221 px_line_params_tbl(p_tax_call_cnt).product_id := p_tax_src_params_rec.inventory_item_id;
6222 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6223 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6224 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6225 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6226 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6227 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6228 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6229 px_line_params_tbl(p_tax_call_cnt).line_amt_includes_tax_flag := p_line_amt_includes_tax_flag;
6230
6231 px_line_params_tbl(p_tax_call_cnt).trx_business_category := lx_tbc_code;
6232 px_line_params_tbl(p_tax_call_cnt).product_category := lx_pc_code;
6233 px_line_params_tbl(p_tax_call_cnt).user_defined_fisc_class := lx_ufc_code;
6234 px_line_params_tbl(p_tax_call_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6235 px_line_params_tbl(p_tax_call_cnt).ship_to_cust_acct_site_use_id := p_tax_src_params_rec.ship_to_cust_acct_site_use_id;
6236 px_line_params_tbl(p_tax_call_cnt).bill_to_cust_acct_site_use_id := p_tax_src_params_rec.bill_to_cust_acct_site_use_id;
6237 px_line_params_tbl(p_tax_call_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6238 px_line_params_tbl(p_tax_call_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6239 px_line_params_tbl(p_tax_call_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6240 px_line_params_tbl(p_tax_call_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6241 px_line_params_tbl(p_tax_call_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6242 px_line_params_tbl(p_tax_call_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6243 px_line_params_tbl(p_tax_call_cnt).rounding_ship_to_party_id := p_rounding_ship_to_party_id;
6244 px_line_params_tbl(p_tax_call_cnt).rounding_bill_to_party_id := p_rounding_bill_to_party_id;
6245 px_line_params_tbl(p_tax_call_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6246 px_line_params_tbl(p_tax_call_cnt).precision := p_precision;
6247 px_line_params_tbl(p_tax_call_cnt).minimum_accountable_unit := p_minimum_accountable_unit;
6248 px_line_params_tbl(p_tax_call_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6249 px_line_params_tbl(p_tax_call_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6250 px_line_params_tbl(p_tax_call_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6251 ELSE -- Applicable for 'Rebook' transaction only
6252 px_line_params_tbl(p_line_params_tbl_cnt).application_id := G_OKL_APPLICATION_ID;
6253 px_line_params_tbl(p_line_params_tbl_cnt).trx_id := p_tax_src_params_rec.trx_id;
6254 px_line_params_tbl(p_line_params_tbl_cnt).internal_organization_id := p_tax_src_params_rec.org_id;
6255 px_line_params_tbl(p_line_params_tbl_cnt).entity_code := p_tax_src_params_rec.entity_code;
6256 px_line_params_tbl(p_line_params_tbl_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6257 px_line_params_tbl(p_line_params_tbl_cnt).event_type_code := p_event_type_code;
6258 px_line_params_tbl(p_line_params_tbl_cnt).trx_date := p_tax_src_params_rec.trx_date;
6259 px_line_params_tbl(p_line_params_tbl_cnt).ledger_id := p_ledger_id;
6260 px_line_params_tbl(p_line_params_tbl_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6261 px_line_params_tbl(p_line_params_tbl_cnt).trx_level_type := p_tax_src_params_rec.trx_level_type;
6262 px_line_params_tbl(p_line_params_tbl_cnt).line_level_action := p_line_level_action;
6263
6264 IF (p_source_trx_name = 'Estimated Billing') THEN
6265 px_line_params_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6266 ELSE
6267 px_line_params_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6268 END IF;
6269
6270 px_line_params_tbl(p_line_params_tbl_cnt).line_amt := l_line_amt;
6271 px_line_params_tbl(p_line_params_tbl_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6272 px_line_params_tbl(p_line_params_tbl_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6273 px_line_params_tbl(p_line_params_tbl_cnt).product_type := p_tax_src_params_rec.product_type;
6274
6275 --sechawla 9121244 : p_tax_src_params_rec.tax_classification_code does not have tax classification code populated
6276 --correct variable to use is lx_tax_classification_code
6277 --px_line_params_tbl(p_line_params_tbl_cnt).output_tax_classification_code := p_tax_src_params_rec.tax_classification_code;
6278 px_line_params_tbl(p_line_params_tbl_cnt).output_tax_classification_code := lx_tax_classification_code;
6279 --sechawla 9121244 : end
6280
6281 px_line_params_tbl(p_line_params_tbl_cnt).assessable_value := l_assessable_value;
6282 px_line_params_tbl(p_line_params_tbl_cnt).receivables_trx_type_id := p_cust_trx_type_id;
6283 px_line_params_tbl(p_line_params_tbl_cnt).product_id := p_tax_src_params_rec.inventory_item_id;
6284 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6285 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6286 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6287 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6288 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6289 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6290 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6291 px_line_params_tbl(p_line_params_tbl_cnt).line_amt_includes_tax_flag := p_line_amt_includes_tax_flag;
6292
6293 px_line_params_tbl(p_line_params_tbl_cnt).trx_business_category := lx_tbc_code;
6294 px_line_params_tbl(p_line_params_tbl_cnt).product_category := lx_pc_code;
6295 px_line_params_tbl(p_line_params_tbl_cnt).user_defined_fisc_class := lx_ufc_code;
6296 px_line_params_tbl(p_line_params_tbl_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6297 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_cust_acct_site_use_id := p_tax_src_params_rec.ship_to_cust_acct_site_use_id;
6298 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_cust_acct_site_use_id := p_tax_src_params_rec.bill_to_cust_acct_site_use_id;
6299 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6300 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6301 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6302 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6303 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6304 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6305 px_line_params_tbl(p_line_params_tbl_cnt).rounding_ship_to_party_id := p_rounding_ship_to_party_id;
6306 px_line_params_tbl(p_line_params_tbl_cnt).rounding_bill_to_party_id := p_rounding_bill_to_party_id;
6307 px_line_params_tbl(p_line_params_tbl_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6308 px_line_params_tbl(p_line_params_tbl_cnt).precision := p_precision;
6309 px_line_params_tbl(p_line_params_tbl_cnt).minimum_accountable_unit := p_minimum_accountable_unit;
6310 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6311 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6312 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6313 END IF;
6314
6315 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6316 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ','End(-)');
6317 END IF;
6318
6319 EXCEPTION
6320 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6321 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6322 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6323 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6324 END IF;
6325
6326 IF (c_get_set_of_books_id%ISOPEN) THEN
6327 CLOSE c_get_set_of_books_id;
6328 END IF;
6329
6330 x_return_status := OKL_API.G_RET_STS_ERROR;
6331 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6332 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6333 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6334 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6335 END IF;
6336
6337 IF (c_get_set_of_books_id%ISOPEN) THEN
6338 CLOSE c_get_set_of_books_id;
6339 END IF;
6340
6341 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6342
6343 WHEN OTHERS THEN
6344 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6345 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6346 'EXCEPTION :'||sqlerrm);
6347 END IF;
6348
6349 IF (c_get_set_of_books_id%ISOPEN) THEN
6350 CLOSE c_get_set_of_books_id;
6351 END IF;
6352
6353 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6354 -- unexpected error
6355 OKL_API.set_message(p_app_name => g_app_name,
6356 p_msg_name => g_unexpected_error,
6357 p_token1 => g_sqlcode_token,
6358 p_token1_value => sqlcode,
6359 p_token2 => g_sqlerrm_token,
6360 p_token2_value => sqlerrm);
6361
6362 END populate_tax_info;
6363
6364 /*========================================================================
6365 | PRIVATE PROCEDURE populate_tax_codes
6366 |
6367 | DESCRIPTION
6368 | This procedure derives the tax codes
6369 |
6370 | CALLED FROM
6371 | process_tax_schedule_tax
6372 |
6373 |
6374 | CALLS PROCEDURES/FUNCTIONS
6375 | get_ufc_code()
6376 |
6377 | PARAMETERS
6378 |
6379 | KNOWN ISSUES
6380 |
6381 | NOTES
6382 |
6383 |
6384 | MODIFICATION HISTORY
6385 | Date Author Description of Changes
6386 | 22-AUG-07 RRAVIKIR Created
6387 *=======================================================================*/
6388 PROCEDURE populate_tax_codes(
6389 p_api_version IN NUMBER,
6390 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6391 x_return_status OUT NOCOPY VARCHAR2,
6392 x_msg_count OUT NOCOPY NUMBER,
6393 x_msg_data OUT NOCOPY VARCHAR2,
6394 p_prch_opt_det IN VARCHAR2,
6395 p_fin_prod_id_det IN NUMBER,
6396 p_int_disclosed_det IN VARCHAR2,
6397 p_title_trnsfr_code IN VARCHAR2,
6398 p_sale_lease_back_code IN VARCHAR2,
6399 p_lease_purchased_code IN VARCHAR2,
6400 p_equip_usage_code IN VARCHAR2,
6401 p_vendor_site_id IN NUMBER,
6402 p_age_of_equip IN NUMBER,
6403 p_source_trx_name IN VARCHAR2,
6404 p_book_class_code IN VARCHAR2,
6405 p_tax_code_cnt IN NUMBER,
6406 p_sty_id IN NUMBER,
6407 p_try_id IN NUMBER,
6408 p_tax_country_code IN VARCHAR2,
6409 p_khr_id IN NUMBER,
6410 p_kle_id IN NUMBER,
6411 p_bill_to_party_site_id IN NUMBER,
6412 p_bill_to_location_id IN NUMBER,
6413 p_bill_to_party_id IN NUMBER,
6414 p_bill_to_cust_acct_site_id IN NUMBER,
6415 p_ship_to_party_site_id IN NUMBER DEFAULT NULL,
6416 p_ship_to_location_id IN NUMBER DEFAULT NULL,
6417 p_ship_to_party_id IN NUMBER DEFAULT NULL,
6418 p_ship_to_cust_acct_site_id IN NUMBER DEFAULT NULL,
6419 p_inventory_item_id IN NUMBER DEFAULT NULL,
6420 p_org_id IN NUMBER,
6421 p_trx_date IN DATE,
6422 px_tax_codes_tbl IN OUT NOCOPY tax_codes_tbl_type) IS
6423
6424 lx_tbc_code VARCHAR2(30);
6425 lx_ufc_code VARCHAR2(30);
6426 lx_pc_code VARCHAR2(30);
6427 lx_tax_classification_code VARCHAR2(50);
6428 l_set_of_books_id NUMBER;
6429 lx_tax_valid_code VARCHAR2(1);
6430
6431 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
6432 SELECT set_of_books_id
6433 FROM ar_system_parameters_all
6434 WHERE org_id = cp_org_id;
6435
6436 BEGIN
6437
6438 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6439 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes','Begin(+)');
6440 END IF;
6441
6442 --Print Input Variables
6443 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6444 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6445 'p_init_msg_list :'||p_init_msg_list);
6446 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6447 'p_prch_opt_det :'||p_prch_opt_det);
6448 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6449 'p_prch_opt_det :'||p_prch_opt_det);
6450 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6451 'p_fin_prod_id_det :'||p_fin_prod_id_det);
6452 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6453 'p_int_disclosed_det :'||p_int_disclosed_det);
6454 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6455 'p_title_trnsfr_code :'||p_title_trnsfr_code);
6456 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6457 'p_sale_lease_back_code :'||p_sale_lease_back_code);
6458 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6459 'p_lease_purchased_code :'||p_lease_purchased_code);
6460 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6461 'p_equip_usage_code :'||p_equip_usage_code);
6462 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6463 'p_vendor_site_id :'||p_vendor_site_id);
6464 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6465 'p_age_of_equip :'||p_age_of_equip);
6466 END IF;
6467
6468 -- Get TBC code
6469 get_tbc_code(p_api_version => p_api_version,
6470 p_init_msg_list => OKC_API.G_FALSE,
6471 x_return_status => x_return_status,
6472 x_msg_count => x_msg_count,
6473 x_msg_data => x_msg_data,
6474 p_sty_id => p_sty_id, -- used if pymnts exist
6475 p_try_id => p_try_id,
6476 p_book_class_code => p_book_class_code,
6477 p_tax_country_code => p_tax_country_code,
6478 x_tbc_code => lx_tbc_code);
6479
6480 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6481 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6482 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6483 RAISE OKL_API.G_EXCEPTION_ERROR;
6484 END IF;
6485
6486 -- Validate TBC Code
6487 IF lx_tbc_code IS NOT NULL THEN
6488 validate_tax_code(
6489 p_api_version => p_api_version,
6490 p_init_msg_list => p_init_msg_list,
6491 x_return_status => x_return_status,
6492 x_msg_count => x_msg_count,
6493 x_msg_data => x_msg_data,
6494 p_trx_date => p_trx_date,
6495 p_tbc_code => lx_tbc_code,
6496 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6497
6498 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6499 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6500 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6501 RAISE OKL_API.G_EXCEPTION_ERROR;
6502 END IF;
6503 END IF;
6504
6505 -- Get the first level determinant for TBC basing on transaction, if the value is null
6506 IF ((lx_tbc_code IS NULL OR lx_tax_valid_code = 'F')AND p_source_trx_name = 'Tax Schedule') THEN
6507 lx_tbc_code := 'SALES_TRANSACTION';
6508 END IF;
6509
6510 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6511 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6512 'lx_tbc_code'||lx_tbc_code);
6513 END IF;
6514
6515 -- Get PC code
6516 get_pc_code(p_api_version => p_api_version,
6517 p_init_msg_list => OKC_API.G_FALSE,
6518 x_return_status => x_return_status,
6519 x_msg_count => x_msg_count,
6520 x_msg_data => x_msg_data,
6521 p_sty_id => p_sty_id,
6522 p_purchase_option_code => p_prch_opt_det,
6523 p_int_disclosed_code => p_int_disclosed_det,
6524 p_title_trnsfr_code => p_title_trnsfr_code,
6525 p_sale_lease_back_code => p_sale_lease_back_code,
6526 p_lease_purchased_code => p_lease_purchased_code,
6527 p_tax_country_code => p_tax_country_code,
6528 x_pc_code => lx_pc_code);
6529
6530 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6531 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6532 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6533 RAISE OKL_API.G_EXCEPTION_ERROR;
6534 END IF;
6535
6536 -- Validate PC Code
6537 IF lx_pc_code IS NOT NULL THEN
6538 validate_tax_code(
6539 p_api_version => p_api_version,
6540 p_init_msg_list => p_init_msg_list,
6541 x_return_status => x_return_status,
6542 x_msg_count => x_msg_count,
6543 x_msg_data => x_msg_data,
6544 p_trx_date => p_trx_date,
6545 p_pc_code => lx_pc_code,
6546 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6547
6548 IF (lx_tax_valid_code = 'F') THEN
6549 lx_pc_code := null;
6550 END IF;
6551
6552 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6553 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6554 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6555 RAISE OKL_API.G_EXCEPTION_ERROR;
6556 END IF;
6557 END IF;
6558
6559 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6560 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6561 'lx_pc_code'||lx_pc_code);
6562 END IF;
6563
6564 -- Get UFC code
6565 get_ufc_code(p_api_version => p_api_version,
6566 p_init_msg_list => OKC_API.G_FALSE,
6567 x_return_status => x_return_status,
6568 x_msg_count => x_msg_count,
6569 x_msg_data => x_msg_data,
6570 p_purchase_option => p_prch_opt_det,
6571 p_fin_product_id => p_fin_prod_id_det,
6572 p_try_id => p_try_id,
6573 p_sty_id => p_sty_id, -- used if pymnts exist
6574 p_int_disclosed_code => p_int_disclosed_det,
6575 p_title_trnsfr_code => p_title_trnsfr_code, -- asset level
6576 p_sale_lease_back_code => p_sale_lease_back_code, -- asset level
6577 p_lease_purchased_code => p_lease_purchased_code, -- asset level
6578 p_equip_usage_code => p_equip_usage_code ,-- asset level
6579 p_vendor_site_id => p_vendor_site_id, -- asset level
6580 p_age_of_equip => p_age_of_equip, -- asset level
6581 p_term_quote_type_code => null,
6582 p_term_quote_reason_code => null,
6583 p_tax_country_code => p_tax_country_code,
6584 x_ufc_code => lx_ufc_code);
6585
6586 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6587 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6588 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6589 RAISE OKL_API.G_EXCEPTION_ERROR;
6590 END IF;
6591
6592 -- Validate UFC Code
6593 IF lx_ufc_code IS NOT NULL THEN
6594 validate_tax_code(
6595 p_api_version => p_api_version,
6596 p_init_msg_list => p_init_msg_list,
6597 x_return_status => x_return_status,
6598 x_msg_count => x_msg_count,
6599 x_msg_data => x_msg_data,
6600 p_trx_date => p_trx_date,
6601 p_ufc_code => lx_ufc_code,
6602 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6603
6604 IF (lx_tax_valid_code = 'F') THEN
6605 lx_ufc_code := null;
6606 END IF;
6607
6608 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6609 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6610 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6611 RAISE OKL_API.G_EXCEPTION_ERROR;
6612 END IF;
6613 END IF;
6614
6615 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6616 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6617 'lx_ufc_code'||lx_ufc_code);
6618 END IF;
6619
6620 -- Get Set of Books ID
6621 OPEN c_get_set_of_books_id(cp_org_id => p_org_id);
6622 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
6623 CLOSE c_get_set_of_books_id;
6624
6625 -- Get the tax classification code
6626 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6627 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6628 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
6629 END IF;
6630
6631 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
6632 x_return_status => x_return_status,
6633 p_ship_to_site_use_id => p_ship_to_cust_acct_site_id,
6634 p_bill_to_site_use_id => p_bill_to_cust_acct_site_id,
6635 p_inventory_item_id => p_inventory_item_id,
6636 p_organization_id => p_org_id,
6637 p_set_of_books_id => l_set_of_books_id,
6638 p_trx_date => p_trx_date,
6639 p_trx_type_id => null,
6640 p_entity_code => G_AR_ENTITY_CODE,
6641 p_event_class_code => G_INVOICE_EVENT_CLASS_CODE,
6642 p_application_id => G_AR_APPLICATION_ID,
6643 p_internal_organization_id => p_org_id,
6644 x_tax_classification_code => lx_tax_classification_code );
6645
6646 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6647 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6648 'Return Status '|| x_return_status);
6649 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6650 'lx_tax_classification_code = '|| lx_tax_classification_code);
6651 END IF;
6652
6653 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6654 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6655 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6656 RAISE OKL_API.G_EXCEPTION_ERROR;
6657 END IF;
6658
6659 px_tax_codes_tbl(p_tax_code_cnt).khr_id := p_khr_id;
6660 px_tax_codes_tbl(p_tax_code_cnt).kle_id := p_kle_id;
6661 px_tax_codes_tbl(p_tax_code_cnt).sty_id := p_sty_id;
6662 px_tax_codes_tbl(p_tax_code_cnt).tbc_code := lx_tbc_code;
6663 px_tax_codes_tbl(p_tax_code_cnt).pc_code := lx_pc_code;
6664 px_tax_codes_tbl(p_tax_code_cnt).ufc_code := lx_ufc_code;
6665 px_tax_codes_tbl(p_tax_code_cnt).tax_class_code := lx_tax_classification_code;
6666
6667 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6668 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ','End(-)');
6669 END IF;
6670
6671 EXCEPTION
6672 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6673 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6674 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6675 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6676 END IF;
6677
6678 IF (c_get_set_of_books_id%ISOPEN) THEN
6679 CLOSE c_get_set_of_books_id;
6680 END IF;
6681
6682 x_return_status := OKL_API.G_RET_STS_ERROR;
6683
6684 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6685 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6686 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6687 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6688 END IF;
6689
6690 IF (c_get_set_of_books_id%ISOPEN) THEN
6691 CLOSE c_get_set_of_books_id;
6692 END IF;
6693
6694 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6695
6696 WHEN OTHERS THEN
6697
6698 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6699 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6700 'EXCEPTION :'||sqlerrm);
6701 END IF;
6702
6703 IF (c_get_set_of_books_id%ISOPEN) THEN
6704 CLOSE c_get_set_of_books_id;
6705 END IF;
6706
6707 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6708
6709 OKL_API.set_message(p_app_name => g_app_name,
6710 p_msg_name => g_unexpected_error,
6711 p_token1 => g_sqlcode_token,
6712 p_token1_value => sqlcode,
6713 p_token2 => g_sqlerrm_token,
6714 p_token2_value => sqlerrm);
6715
6716 END populate_tax_codes;
6717
6718 /*========================================================================
6719 | PUBLIC PROCEDURE get_billing_stream_types
6720 |
6721 | DESCRIPTION
6722 | This procedure is called by the Tax Calculation Setup Screen to derive
6723 | List of Values for the screen LOV field "Stream Type For Billing"
6724 |
6725 | CALLED FROM
6726 | Tax Calculation Setup Screen
6727 |
6728 | CALLS PROCEDURES/FUNCTIONS
6729 |
6730 |
6731 | PARAMETERS
6732 | Input Parameters
6733 | p_org_id -- org ID
6734 | p_sty_code -- Stream Type Code
6735 | Output Parameters
6736 | x_sty_id_tbl -- Table of Billing Stream Types
6737 |
6738 | KNOWN ISSUES
6739 |
6740 | NOTES
6741 |
6742 |
6743 | MODIFICATION HISTORY
6744 | Date Author Description of Changes
6745 | 08-APR-05 SECHAWLA Created
6746 |
6747 *=======================================================================*/
6748
6749
6750 PROCEDURE get_billing_stream_types(
6751 p_api_version IN NUMBER,
6752 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6753 x_return_status OUT NOCOPY VARCHAR2,
6754 x_msg_count OUT NOCOPY NUMBER,
6755 x_msg_data OUT NOCOPY VARCHAR2,
6756 p_org_id IN NUMBER,
6757 p_sty_code IN VARCHAR2,
6758 x_sty_id_tbl OUT NOCOPY sty_id_tbl_type) IS
6759
6760 -- get all the Billable, enabled streams of purpose FEE_PAYMENT
6761 CURSOR l_strmtype_csr(cp_sty_code IN VARCHAR2) IS
6762 SELECT a.id, a.code, a.stream_type_purpose, b.meaning
6763 FROM okl_strm_type_b a, fnd_lookups b
6764 WHERE a.stream_type_purpose = 'FEE_PAYMENT'
6765 AND a.billable_yn = 'Y'
6766 AND a.stream_type_purpose = b.lookup_code
6767 AND b.lookup_type = 'OKL_STREAM_TYPE_PURPOSE'
6768 AND b.enabled_flag = 'Y'
6769 AND upper(a.code) like decode(cp_sty_code, NULL, a.code, '%', a.code, upper(cp_sty_code)||'%');
6770
6771 -- get all the SGT sets for a given OU
6772 CURSOR l_stgentmptsets_csr(cp_org_id IN NUMBER) IS
6773 SELECT id
6774 FROM okl_st_gen_tmpt_sets
6775 WHERE org_id = cp_org_id
6776 --asawanka bug fix 4659674 start
6777 AND product_type = 'FINANCIAL';
6778 --asawanka bug fix 4659674 end
6779
6780 -- Get all SGTs for a given SGT Set
6781 CURSOR l_stgentemplates_csr(cp_gts_id IN NUMBER) IS
6782 SELECT id
6783 FROM okl_st_gen_templates
6784 WHERE gts_id = cp_gts_id
6785 AND tmpt_status = G_ACTIVE_STATUS;
6786
6787 -- Get all the SGT Lines for a given SGT
6788 CURSOR l_stgentmptlns_csr(cp_gtt_id IN NUMBER) IS
6789 SELECT primary_sty_id
6790 FROM okl_st_gen_tmpt_lns
6791 WHERE gtt_id = cp_gtt_id
6792 AND primary_yn = 'Y';
6793
6794 l_sty_id_tbl sty_id_tbl_type;
6795
6796 l_stream_type_found VARCHAR2(1);
6797 sty_id_tbl_cnt NUMBER := 0;
6798 l_sgt_set_found VARCHAR2(1) := 'N';
6799 l_strm_type_cnt NUMBER := 0;
6800 l_any_active_sgt_found VARCHAR2(1);
6801 l_active_sgt_found VARCHAR2(1);
6802 l_id NUMBER;
6803
6804 BEGIN
6805
6806 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6807 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types','Begin(+)');
6808 END IF;
6809
6810 --Print Input Variables
6811 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6812 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6813 'p_init_msg_list :'||p_init_msg_list);
6814 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6815 'p_org_id :'||p_org_id);
6816 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6817 'p_sty_code :'||p_sty_code);
6818 END IF;
6819
6820 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6821
6822 -- Check if any stream generation template set exists for this OU
6823 OPEN l_stgentmptsets_csr(p_org_id);
6824 FETCH l_stgentmptsets_csr INTO l_id;
6825 IF l_stgentmptsets_csr%FOUND THEN
6826 l_sgt_set_found := 'Y';
6827 END IF;
6828 CLOSE l_stgentmptsets_csr;
6829
6830 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6831 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6832 'l_sgt_set_found'||l_sgt_set_found);
6833 END IF;
6834
6835 l_any_active_sgt_found := 'N'; -- Flag to indicate if any ACTIVE SGT exists across all SGT Sets
6836
6837 FOR l_strmtype_rec IN l_strmtype_csr(p_sty_code) LOOP -- All/User selected billable stream types of purpose 'FEE_PAYMENT'
6838 l_strm_type_cnt := l_strm_type_cnt + 1;
6839
6840 IF l_sgt_set_found = 'Y' THEN -- If there are any SGT sets for this OU
6841
6842 l_stream_type_found := 'N';
6843
6844 IF l_strm_type_cnt = 1 OR l_any_active_sgt_found = 'Y' THEN
6845
6846
6847
6848 -- When the following piece of code is executed for the first stream type, it sets the flag
6849 -- l_any_active_sgt_found (along with other processing logic) to 'Y' if any ACTIVE SGT
6850 -- is found across all SGT sets. If there are no ACTIVE SGTs across all the SGT sets, then
6851 -- this piece of code is not executed for the remaining stream types
6852 FOR l_stgentmptsets_rec IN l_stgentmptsets_csr(p_org_id) LOOP -- all SGT sets for a given org
6853
6854
6855 l_active_sgt_found := 'N';
6856 FOR l_stgentemplates_rec IN l_stgentemplates_csr(l_stgentmptsets_rec.id) LOOP -- all ACTIVE versions of a given SGT
6857 l_active_sgt_found := 'Y';
6858 l_any_active_sgt_found := 'Y';
6859 FOR l_stgentmptlns_rec IN l_stgentmptlns_csr(l_stgentemplates_rec.id) LOOP -- all lines (stream types) in a given version
6860 IF l_stgentmptlns_rec.primary_sty_id = l_strmtype_rec.id THEN
6861 l_stream_type_found := 'Y';
6862 EXIT;
6863 ELSE
6864 l_stream_type_found := 'N';
6865 END IF;
6866 END LOOP;
6867 --IF l_stream_type_found = 'N' THEN
6868 --dcshanmu bug 6667098 start
6869 IF l_stream_type_found = 'Y' THEN
6870 --dcshanmu bug 6667098 end
6871 EXIT;
6872 END IF;
6873 END LOOP;
6874 --IF l_active_sgt_found = 'Y' AND l_stream_type_found = 'N' THEN
6875 --dcshanmu bug 6667098 start
6876 IF l_active_sgt_found = 'Y' AND l_stream_type_found = 'Y' THEN
6877 --dcshanmu bug 6667098 end
6878 EXIT;
6879 END IF;
6880 END LOOP;
6881
6882 END IF; -- IF l_strm_type_cnt = 1 OR l_any_active_sgt_found = 'Y' THEN
6883
6884
6885 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6886 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6887 'l_any_active_sgt_found'||l_any_active_sgt_found);
6888 END IF;
6889
6890 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6891 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6892 'l_stream_type_found'||l_stream_type_found);
6893 END IF;
6894
6895 -- If there are no ACTIVE SGTs across all SGT sets OR stream type found under ACTIVE SGTs,
6896 -- then consider stream type for the LOV
6897 IF l_any_active_sgt_found = 'N' OR l_stream_type_found = 'Y' THEN
6898 sty_id_tbl_cnt := sty_id_tbl_cnt + 1;
6899
6900 l_sty_id_tbl(sty_id_tbl_cnt).sty_id := l_strmtype_rec.id;
6901 l_sty_id_tbl(sty_id_tbl_cnt).sty_code := l_strmtype_rec.code;
6902 l_sty_id_tbl(sty_id_tbl_cnt).sty_purpose := l_strmtype_rec.meaning;
6903
6904 END IF;
6905
6906
6907 ELSE -- there are no SGT sets existing for this OU, so consider stream type for the LOV
6908
6909 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6910 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6911 'There are no SGT sets existing for this OU');
6912 END IF;
6913
6914 sty_id_tbl_cnt := sty_id_tbl_cnt + 1;
6915
6916 l_sty_id_tbl(sty_id_tbl_cnt).sty_id := l_strmtype_rec.id;
6917 l_sty_id_tbl(sty_id_tbl_cnt).sty_code := l_strmtype_rec.code;
6918 l_sty_id_tbl(sty_id_tbl_cnt).sty_purpose := l_strmtype_rec.meaning;
6919
6920 END IF;
6921 END LOOP;
6922
6923 x_sty_id_tbl := l_sty_id_tbl;
6924
6925
6926 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6927 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ','End(-)');
6928 END IF;
6929
6930
6931 EXCEPTION
6932 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6933 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6934 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6935 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6936 END IF;
6937
6938
6939 IF l_strmtype_csr%ISOPEN THEN
6940 CLOSE l_strmtype_csr;
6941 END IF;
6942
6943 IF l_stgentmptsets_csr%ISOPEN THEN
6944 CLOSE l_stgentmptsets_csr;
6945 END IF;
6946
6947 IF l_stgentemplates_csr%ISOPEN THEN
6948 CLOSE l_stgentemplates_csr;
6949 END IF;
6950
6951 IF l_stgentmptlns_csr%ISOPEN THEN
6952 CLOSE l_stgentmptlns_csr;
6953 END IF;
6954
6955 x_return_status := OKL_API.G_RET_STS_ERROR;
6956 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6957 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6958 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6959 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6960 END IF;
6961
6962 IF l_strmtype_csr%ISOPEN THEN
6963 CLOSE l_strmtype_csr;
6964 END IF;
6965
6966 IF l_stgentmptsets_csr%ISOPEN THEN
6967 CLOSE l_stgentmptsets_csr;
6968 END IF;
6969
6970 IF l_stgentemplates_csr%ISOPEN THEN
6971 CLOSE l_stgentemplates_csr;
6972 END IF;
6973
6974 IF l_stgentmptlns_csr%ISOPEN THEN
6975 CLOSE l_stgentmptlns_csr;
6976 END IF;
6977
6978 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6979
6980 WHEN OTHERS THEN
6981 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6982 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6983 'EXCEPTION :'||sqlerrm);
6984 END IF;
6985
6986 IF l_strmtype_csr%ISOPEN THEN
6987 CLOSE l_strmtype_csr;
6988 END IF;
6989
6990 IF l_stgentmptsets_csr%ISOPEN THEN
6991 CLOSE l_stgentmptsets_csr;
6992 END IF;
6993
6994 IF l_stgentemplates_csr%ISOPEN THEN
6995 CLOSE l_stgentemplates_csr;
6996 END IF;
6997
6998 IF l_stgentmptlns_csr%ISOPEN THEN
6999 CLOSE l_stgentmptlns_csr;
7000 END IF;
7001
7002 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
7003 -- unexpected error
7004 OKL_API.set_message(p_app_name => g_app_name,
7005 p_msg_name => g_unexpected_error,
7006 p_token1 => g_sqlcode_token,
7007 p_token1_value => sqlcode,
7008 p_token2 => g_sqlerrm_token,
7009 p_token2_value => sqlerrm);
7010
7011 END get_billing_stream_types;
7012
7013 /*========================================================================
7014 | PRIVATE PROCEDURE get_k_hdr_tax_params
7015 |
7016 | DESCRIPTION
7017 | This procedure is called by other procedures in this API to derive
7018 | contract level tax determinats
7019 |
7020 | CALLED FROM
7021 |
7022 |
7023 | CALLS PROCEDURES/FUNCTIONS
7024 | okl_am_util_pvt.get_rule_record
7025 |
7026 |
7027 | PARAMETERS
7028 | Input parameters
7029 | p_khr_id -- Contract ID
7030 | p_source_trx_name -- Source Transaction
7031 | p_source_table -- Source Trx Table
7032 | p_qtp_code -- Quote Type (Termination / Repurchase)
7033 | p_early_term_yn -- Early termination yn
7034 | p_purpose_code -- Stream Type purpose
7035 | Output Parameters
7036 | x_cust_acct_id -- Customer A/c ID
7037 | x_bill_to_siteuseid -- Bill To Site Use ID
7038 | x_currency_code -- Curency Code
7039 | x_cust_trx_type_id -- Customer Trx Type ID
7040 | x_precision -- Currency Precision
7041 | x_minimum_accountable_unit -- Currncy Min accountable unit
7042 | x_prch_opt_det -- Purchase Option
7043 | x_fin_prod_id_det -- Financial Product ID
7044 | x_int_disclosed_det -- Interest Disclosed
7045 |
7046 | KNOWN ISSUES
7047 |
7048 | NOTES
7049 |
7050 |
7051 | MODIFICATION HISTORY
7052 | Date Author Description of Changes
7053 | 08-APR-05 SECHAWLA Created
7054 | 23-NOV-05 SECHAWLA 4742539 System picking wrong TBC
7055 |
7056 *=======================================================================*/
7057
7058 PROCEDURE get_k_hdr_tax_params(
7059 p_api_version IN NUMBER,
7060 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7061 x_return_status OUT NOCOPY VARCHAR2,
7062 x_msg_count OUT NOCOPY NUMBER,
7063 x_msg_data OUT NOCOPY VARCHAR2,
7064 p_khr_id IN NUMBER,
7065 p_source_trx_name IN VARCHAR2,
7066 p_source_table IN VARCHAR2,
7067 p_qtp_code IN VARCHAR2 DEFAULT NULL, -- Used only for termination/repurchase quote
7068 p_early_term_yn IN VARCHAR2 DEFAULT NULL, -- Used only for termination/repurchase quote
7069 p_purpose_code IN VARCHAR2 DEFAULT NULL, -- Used only in process_invoice_tax to identify remk,asset repair,vendor cure invoices
7070 x_cust_acct_id OUT NOCOPY NUMBER,
7071 x_bill_to_siteuseid OUT NOCOPY NUMBER,
7072 x_currency_code OUT NOCOPY VARCHAR2,
7073 x_cust_trx_type_id OUT NOCOPY NUMBER,
7074 x_precision OUT NOCOPY NUMBER,
7075 x_minimum_accountable_unit OUT NOCOPY NUMBER,
7076 x_prch_opt_det OUT NOCOPY VARCHAR2,
7077 x_fin_prod_id_det OUT NOCOPY NUMBER,
7078 x_int_disclosed_det OUT NOCOPY VARCHAR2,
7079 x_org_id OUT NOCOPY NUMBER,
7080 x_book_class_code OUT NOCOPY VARCHAR2,
7081 x_bill_to_party_site_id OUT NOCOPY NUMBER,
7082 x_bill_to_party_id OUT NOCOPY NUMBER,
7083 x_bill_to_location_id OUT NOCOPY NUMBER,
7084 x_currency_conversion_type OUT NOCOPY VARCHAR2,
7085 x_currency_conversion_rate OUT NOCOPY NUMBER,
7086 x_currency_conversion_date OUT NOCOPY DATE,
7087 x_contract_start_date OUT NOCOPY DATE ) IS
7088
7089 --Cursor to get the customer_account_id for the customer
7090 CURSOR c_get_contractinfo_csr(cp_khr_id IN NUMBER) IS
7091 SELECT cust_acct_id, bill_to_site_use_id, currency_code, org_id,
7092 conversion_type, conversion_rate, conversion_rate_date, start_date
7093 FROM okc_k_headers_b
7094 WHERE id = cp_khr_id;
7095
7096 --get currency attributes
7097 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
7098 SELECT precision, minimum_accountable_unit
7099 FROM fnd_currencies
7100 WHERE currency_code = cp_currency_code
7101 AND enabled_flag = 'Y'
7102 AND NVL(start_date_active, sysdate) <= sysdate
7103 AND NVL(end_date_active, sysdate) >= sysdate;
7104
7105 --Get the AR customer transaction type used by OKL
7106 CURSOR l_racusttrxtypes_csr IS
7107 SELECT cust_trx_type_id
7108 FROM ra_cust_trx_types_all
7109 WHERE name = 'Invoice-OKL';
7110
7111 -- get the financial product
7112 CURSOR l_oklkheaders_csr(cp_khr_id IN NUMBER) IS
7113 SELECT pdt_id, deal_type
7114 FROM okl_k_headers
7115 WHERE id = cp_khr_id;
7116
7117 l_cust_trx_type_id NUMBER;
7118
7119 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7120 l_precision NUMBER;
7121 l_minimum_accountable_unit NUMBER;
7122
7123 l_rulv_rec okl_rule_pub.rulv_rec_type;
7124 l_rulv_empty_rec okl_rule_pub.rulv_rec_type;
7125
7126 l_prch_opt_det VARCHAR2(450);
7127 l_fin_prod_id_det NUMBER;
7128 l_int_disclosed_det VARCHAR2(30);
7129 l_purpose_code VARCHAR2(30);
7130 l_book_class_code VARCHAR2(30);
7131
7132 lx_bill_to_party_site_id NUMBER;
7133 lx_bill_to_location_id NUMBER;
7134 lx_bill_to_party_id NUMBER;
7135 lx_bill_to_siteuseid NUMBER;
7136 lx_ship_to_party_site_id NUMBER;
7137 lx_ship_to_location_id NUMBER;
7138 lx_ship_to_party_id NUMBER;
7139 lx_ship_to_siteuseid NUMBER;
7140
7141 l_get_contractinfo_rec c_get_contractinfo_csr%ROWTYPE;
7142
7143 BEGIN
7144
7145 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7146 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params','Begin(+)');
7147 END IF;
7148
7149 --Print Input Variables
7150 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7151 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7152 'p_init_msg_list :'||p_init_msg_list);
7153 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7154 'p_khr_id :'||p_khr_id);
7155 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7156 'p_source_trx_name :'||p_source_trx_name);
7157 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7158 'p_source_table :'||p_source_table);
7159 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7160 'p_qtp_code :'||p_qtp_code);
7161 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7162 'p_early_term_yn :'||p_early_term_yn);
7163 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7164 'p_purpose_code :'||p_purpose_code);
7165 END IF;
7166
7167 OPEN c_get_contractinfo_csr(p_khr_id);
7168 FETCH c_get_contractinfo_csr INTO l_get_contractinfo_rec;
7169 IF c_get_contractinfo_csr%NOTFOUND THEN
7170 -- KHR ID is invalid
7171 OKC_API.set_message( p_app_name => 'OKC',
7172 p_msg_name => G_INVALID_VALUE,
7173 p_token1 => G_COL_NAME_TOKEN,
7174 p_token1_value => 'KHR_ID');
7175 RAISE OKL_API.G_EXCEPTION_ERROR;
7176 END IF;
7177 CLOSE c_get_contractinfo_csr;
7178
7179 IF l_get_contractinfo_rec.currency_code IS NULL THEN
7180 OKC_API.set_message( p_app_name => 'OKC',
7181 p_msg_name => G_REQUIRED_VALUE,
7182 p_token1 => G_COL_NAME_TOKEN,
7183 p_token1_value => 'CURRENCY_CODE');
7184
7185 RAISE OKL_API.G_EXCEPTION_ERROR;
7186 END IF;
7187
7188 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7189 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7190 'l_get_custacctid_rec.cust_acct_id'||l_get_contractinfo_rec.cust_acct_id);
7191
7192 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7193 'l_get_custacctid_rec.bill_to_site_use_id'||l_get_contractinfo_rec.bill_to_site_use_id);
7194
7195 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7196 'l_get_custacctid_rec.currency_code'||l_get_contractinfo_rec.currency_code);
7197 END IF;
7198
7199
7200 OPEN l_fndcurrency_csr(l_get_contractinfo_rec.currency_code);
7201 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit; -- l_minimum_accountable_unit is optional in fnd_currencies
7202 -- but mandatory for tax team
7203 -- check with Nilesh
7204 IF l_fndcurrency_csr%NOTFOUND THEN
7205 -- currency code is invalid
7206 OKC_API.set_message( p_app_name => 'OKC',
7207 p_msg_name => G_INVALID_VALUE,
7208 p_token1 => G_COL_NAME_TOKEN,
7209 p_token1_value => 'CURRENCY_CODE');
7210
7211 RAISE OKL_API.G_EXCEPTION_ERROR;
7212 END IF;
7213 CLOSE l_fndcurrency_csr;
7214
7215 -- get the AR cust trx type ID
7216 OPEN l_racusttrxtypes_csr;
7217 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
7218 IF l_racusttrxtypes_csr%NOTFOUND THEN
7219 -- cust trx tyep id is required
7220 OKC_API.set_message( p_app_name => 'OKC',
7221 p_msg_name => G_REQUIRED_VALUE,
7222 p_token1 => G_COL_NAME_TOKEN,
7223 p_token1_value => 'CUST_TRX_TYPE_ID');
7224
7225 RAISE OKL_API.G_EXCEPTION_ERROR;
7226 END IF;
7227 CLOSE l_racusttrxtypes_csr;
7228
7229
7230
7231 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7232 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7233 'l_precision'||l_precision);
7234
7235 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7236 'l_minimum_accountable_unit'||l_minimum_accountable_unit);
7237
7238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7239 'l_cust_trx_type_id'||l_cust_trx_type_id);
7240
7241
7242 END IF;
7243 ----------- Identify the determinants : TBC and directly mapped START ---------------------
7244
7245 -- Financial Product - K level
7246 OPEN l_oklkheaders_csr(p_khr_id);
7247 FETCH l_oklkheaders_csr INTO l_fin_prod_id_det, l_book_class_code;
7248 CLOSE l_oklkheaders_csr;
7249
7250 IF l_fin_prod_id_det IS NULL THEN -- financial product is mandatory on the contract
7251 OKC_API.set_message( p_app_name => 'OKC',
7252 p_msg_name => G_REQUIRED_VALUE,
7253 p_token1 => G_COL_NAME_TOKEN,
7254 p_token1_value => 'Financial Product');
7255 RAISE OKL_API.G_EXCEPTION_ERROR;
7256 END IF;
7257
7258 IF p_source_trx_name = 'Estimated Billing' AND p_source_table = 'OKL_TRX_QUOTES_B' THEN -- Termination/Repurchase quote creation/updation
7259 IF p_qtp_code LIKE 'TER%' THEN
7260 IF p_early_term_yn = 'Y' THEN
7261 -- get Early term purchase option - K level
7262
7263 l_rulv_rec := l_rulv_empty_rec ;
7264 okl_am_util_pvt.get_rule_record(
7265 p_rgd_code => 'AMTEOC'
7266 ,p_rdf_code => 'AMBPOC'
7267 ,p_chr_id => p_khr_id
7268 ,p_cle_id => NULL
7269 ,p_message_yn => FALSE
7270 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7271 ,x_return_status => x_return_status
7272 ,x_msg_count => x_msg_count
7273 ,x_msg_data => x_msg_data);
7274
7275 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7276 -- Rule instance is found
7277 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7278
7279 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7280
7281 END IF;
7282
7283
7284 END IF;
7285 ---
7286 ELSE
7287 -- EOT Purchase Option - K level
7288 l_rulv_rec := l_rulv_empty_rec ;
7289 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7290 ,p_rdf_code => 'AMBPOC'
7291 ,p_chr_id => p_khr_id
7292 ,p_cle_id => NULL
7293 ,p_message_yn => FALSE
7294 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7295 ,x_return_status => x_return_status
7296 ,x_msg_count => x_msg_count
7297 ,x_msg_data => x_msg_data);
7298
7299 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7300 -- Rule instance is found
7301 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7302
7303 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7304
7305 END IF;
7306
7307 END IF;
7308
7309 -----
7310 END IF;
7311
7312 -- Interest Disclosed - K Level
7313 l_rulv_rec := l_rulv_empty_rec ;
7314 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7315 ,p_rdf_code => 'LASTCL'
7316 ,p_chr_id => p_khr_id
7317 ,p_cle_id => NULL
7318 ,p_message_yn => FALSE
7319 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7320 ,x_return_status => x_return_status
7321 ,x_msg_count => x_msg_count
7322 ,x_msg_data => x_msg_data);
7323
7324 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7325 -- Rule instance is found
7326 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7327
7328 l_int_disclosed_det := l_rulv_rec.rule_information2;
7329 ELSE -- interest diclosed is optional on the contract
7330
7331 l_int_disclosed_det := 'N';
7332 END IF;
7333
7334 ELSE -- interest diclosed is optional on the contract
7335
7336 l_int_disclosed_det := 'N';
7337 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7338 END IF;
7339 ----
7340
7341 ELSE -- repurchase quote creation / updation
7342 l_prch_opt_det := NULL; -- Purchase option is not applicable for Repurcsae Quote creation, updation
7343 l_fin_prod_id_det := NULL; -- financial product is NA for repurchase quote creation, updation
7344 l_int_disclosed_det := 'N';
7345 END IF;
7346 ELSIF ( (p_source_trx_name = 'Billing' OR p_source_trx_name = 'Credit Memo')
7347 AND p_source_table = 'OKL_TXD_AR_LN_DTLS_B'
7348 ) THEN -- Billing from other transactions (not stream biling)
7349 IF p_qtp_code LIKE 'TER%' THEN -- termination quote billing
7350 IF p_early_term_yn = 'Y' THEN
7351 -- get Early term purchase option
7352 l_rulv_rec := l_rulv_empty_rec ;
7353 okl_am_util_pvt.get_rule_record(
7354 p_rgd_code => 'AMTEOC'
7355 ,p_rdf_code => 'AMBPOC'
7356 ,p_chr_id => p_khr_id
7357 ,p_cle_id => NULL
7358 ,p_message_yn => FALSE
7359 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7360 ,x_return_status => x_return_status
7361 ,x_msg_count => x_msg_count
7362 ,x_msg_data => x_msg_data);
7363
7364 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7365 -- Rule instance is found
7366 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7367
7368 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7369
7370 END IF;
7371
7372 END IF;
7373 ---
7374 ELSE
7375 -- get EOT purchase option
7376 l_rulv_rec := l_rulv_empty_rec ;
7377 okl_am_util_pvt.get_rule_record(
7378 p_rgd_code => 'AMTFOC'
7379 ,p_rdf_code => 'AMBPOC'
7380 ,p_chr_id => p_khr_id
7381 ,p_cle_id => NULL
7382 ,p_message_yn => FALSE
7383 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7384 ,x_return_status => x_return_status
7385 ,x_msg_count => x_msg_count
7386 ,x_msg_data => x_msg_data);
7387
7388 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7389 -- Rule instance is found
7390 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7391
7392 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7393
7394 END IF;
7395
7396 END IF;
7397 ---
7398 END IF;
7399
7400 -- Interest Disclosed - K Level
7401 l_rulv_rec := l_rulv_empty_rec ;
7402 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7403 ,p_rdf_code => 'LASTCL'
7404 ,p_chr_id => p_khr_id
7405 ,p_cle_id => NULL
7406 ,p_message_yn => FALSE
7407 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7408 ,x_return_status => x_return_status
7409 ,x_msg_count => x_msg_count
7410 ,x_msg_data => x_msg_data);
7411
7412 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7413 -- Rule instance is found
7414 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7415
7416 l_int_disclosed_det := l_rulv_rec.rule_information2;
7417 ELSE -- interest diclosed is optional on the contract
7418
7419 l_int_disclosed_det := 'N';
7420 END IF;
7421
7422 ELSE -- interest diclosed is optional on the contract
7423
7424 l_int_disclosed_det := 'N';
7425 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7426 END IF;
7427 ----
7428 ELSIF p_qtp_code LIKE 'REP%' OR p_purpose_code IN ('AMBSPR','CURE','REPAIR_CHARGE') THEN
7429 -- Repurchase quote billing OR Remk,asset repair or vendor cure billing
7430
7431 l_prch_opt_det := NULL; -- Purchase option is not applicable for Repurcsae Quote billing
7432 l_fin_prod_id_det := NULL; -- Fin product is NA for repurchase quote billing
7433 l_int_disclosed_det := 'N';
7434
7435 -- SECHAWLA 23-NOV-05 4742539 : added the following piece of code : begin
7436 ELSE
7437 -- EOT Purchase Option - K level
7438 l_rulv_rec := l_rulv_empty_rec ;
7439 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7440 ,p_rdf_code => 'AMBPOC'
7441 ,p_chr_id => p_khr_id
7442 ,p_cle_id => NULL
7443 ,p_message_yn => FALSE
7444 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7445 ,x_return_status => x_return_status
7446 ,x_msg_count => x_msg_count
7447 ,x_msg_data => x_msg_data);
7448
7449 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7450 -- Rule instance is found
7451 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7452
7453 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7454
7455 END IF;
7456
7457 END IF;
7458
7459 -- Interest Disclosed - K Level
7460 l_rulv_rec := l_rulv_empty_rec ;
7461 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7462 ,p_rdf_code => 'LASTCL'
7463 ,p_chr_id => p_khr_id
7464 ,p_cle_id => NULL
7465 ,p_message_yn => FALSE
7466 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7467 ,x_return_status => x_return_status
7468 ,x_msg_count => x_msg_count
7469 ,x_msg_data => x_msg_data);
7470
7471 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7472 -- Rule instance is found
7473 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7474
7475 l_int_disclosed_det := l_rulv_rec.rule_information2;
7476 ELSE -- interest diclosed is optional on the contract
7477
7478 l_int_disclosed_det := 'N';
7479 END IF;
7480
7481 ELSE -- interest diclosed is optional on the contract
7482
7483 l_int_disclosed_det := 'N';
7484 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7485 END IF;
7486 -- SECHAWLA 23-NOV-05 4742539 : end
7487
7488 END IF;
7489
7490
7491 ELSE -- for all other cases, use EOT purchase option
7492
7493 -- EOT Purchase Option - K level
7494 l_rulv_rec := l_rulv_empty_rec ;
7495 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7496 ,p_rdf_code => 'AMBPOC'
7497 ,p_chr_id => p_khr_id
7498 ,p_cle_id => NULL
7499 ,p_message_yn => FALSE
7500 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7501 ,x_return_status => x_return_status
7502 ,x_msg_count => x_msg_count
7503 ,x_msg_data => x_msg_data);
7504
7505 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7506 -- Rule instance is found
7507 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7508
7509 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7510
7511 END IF;
7512
7513 END IF;
7514
7515 -- Interest Disclosed - K Level
7516 l_rulv_rec := l_rulv_empty_rec ;
7517 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7518 ,p_rdf_code => 'LASTCL'
7519 ,p_chr_id => p_khr_id
7520 ,p_cle_id => NULL
7521 ,p_message_yn => FALSE
7522 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7523 ,x_return_status => x_return_status
7524 ,x_msg_count => x_msg_count
7525 ,x_msg_data => x_msg_data);
7526
7527 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7528 -- Rule instance is found
7529 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7530
7531 l_int_disclosed_det := l_rulv_rec.rule_information2;
7532 ELSE -- interest diclosed is optional on the contract
7533
7534 l_int_disclosed_det := 'N';
7535 END IF;
7536
7537 ELSE -- interest diclosed is optional on the contract
7538
7539 l_int_disclosed_det := 'N';
7540 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7541 END IF;
7542 END IF;
7543
7544
7545 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7546 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7547 'l_prch_opt_det'||l_prch_opt_det);
7548 END IF;
7549
7550
7551 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7552 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7553 'l_int_disclosed_det'||l_int_disclosed_det);
7554 END IF;
7555
7556 -- get the 'bill_to' identifiers -- start
7557 IF p_source_trx_name NOT IN ('Funding', 'Disbursement', 'Debit Memo') THEN
7558 get_location_party_ids( p_api_version => p_api_version,
7559 p_init_msg_list => p_init_msg_list,
7560 x_return_status => x_return_status,
7561 x_msg_count => x_msg_count,
7562 x_msg_data => x_msg_data,
7563 p_cust_acct_id => l_get_contractinfo_rec.cust_acct_id,
7564 p_fin_asset_id => null,
7565 p_khr_id => p_khr_id,
7566 x_bill_to_party_site_id => lx_bill_to_party_site_id,
7567 x_bill_to_location_id => lx_bill_to_location_id,
7568 x_bill_to_party_id => lx_bill_to_party_id,
7569 x_bill_to_site_use_id => lx_bill_to_siteuseid,
7570 x_ship_to_party_site_id => lx_ship_to_party_site_id,
7571 x_ship_to_location_id => lx_ship_to_location_id,
7572 x_ship_to_party_id => lx_ship_to_party_id,
7573 x_ship_to_site_use_id => lx_ship_to_siteuseid);
7574 END IF;
7575
7576 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7577 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7578 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7579 RAISE OKL_API.G_EXCEPTION_ERROR;
7580 END IF;
7581
7582 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7583 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7584 'lx_bill_to_party_site_id'||lx_bill_to_party_site_id);
7585 END IF;
7586
7587 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7588 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7589 'lx_bill_to_location_id'||lx_bill_to_location_id);
7590 END IF;
7591
7592 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7593 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7594 'lx_bill_to_party_id'||lx_bill_to_party_id);
7595 END IF;
7596 -- get the 'bill_to' identifiers -- end
7597
7598 x_cust_acct_id := l_get_contractinfo_rec.cust_acct_id;
7599 x_bill_to_siteuseid := l_get_contractinfo_rec.bill_to_site_use_id;
7600 x_currency_code := l_get_contractinfo_rec.currency_code;
7601 x_org_id := l_get_contractinfo_rec.org_id;
7602 x_currency_conversion_type := l_get_contractinfo_rec.conversion_type;
7603 x_currency_conversion_rate := l_get_contractinfo_rec.conversion_rate;
7604 x_currency_conversion_date := l_get_contractinfo_rec.conversion_rate_date;
7605 x_contract_start_date := l_get_contractinfo_rec.start_date;
7606
7607 x_bill_to_party_site_id := lx_bill_to_party_site_id;
7608 x_bill_to_party_id := lx_bill_to_party_id;
7609 x_bill_to_location_id := lx_bill_to_location_id;
7610
7611 x_book_class_code := l_book_class_code;
7612 x_cust_trx_type_id := l_cust_trx_type_id;
7613 x_precision := l_precision;
7614 x_minimum_accountable_unit := l_minimum_accountable_unit;
7615 x_prch_opt_det := l_prch_opt_det;
7616 x_fin_prod_id_det := l_fin_prod_id_det;
7617 x_int_disclosed_det := l_int_disclosed_det;
7618
7619
7620 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7621 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ','End(-)');
7622 END IF;
7623
7624 EXCEPTION
7625 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7626 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7627 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7628 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
7629 END IF;
7630
7631 IF c_get_contractinfo_csr%ISOPEN THEN
7632 CLOSE c_get_contractinfo_csr;
7633 END IF;
7634
7635 IF l_fndcurrency_csr%ISOPEN THEN
7636 CLOSE l_fndcurrency_csr;
7637 END IF;
7638
7639 IF l_racusttrxtypes_csr%ISOPEN THEN
7640 CLOSE l_racusttrxtypes_csr;
7641 END IF;
7642
7643 IF l_oklkheaders_csr%ISOPEN THEN
7644 CLOSE l_oklkheaders_csr;
7645 END IF;
7646
7647 x_return_status := OKL_API.G_RET_STS_ERROR;
7648 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7649 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7650 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7651 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
7652 END IF;
7653
7654 IF c_get_contractinfo_csr%ISOPEN THEN
7655 CLOSE c_get_contractinfo_csr;
7656 END IF;
7657
7658 IF l_fndcurrency_csr%ISOPEN THEN
7659 CLOSE l_fndcurrency_csr;
7660 END IF;
7661
7662 IF l_racusttrxtypes_csr%ISOPEN THEN
7663 CLOSE l_racusttrxtypes_csr;
7664 END IF;
7665
7666 IF l_oklkheaders_csr%ISOPEN THEN
7667 CLOSE l_oklkheaders_csr;
7668 END IF;
7669
7670 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
7671
7672 WHEN OTHERS THEN
7673 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7674 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7675 'EXCEPTION :'||sqlerrm);
7676 END IF;
7677
7678 IF c_get_contractinfo_csr%ISOPEN THEN
7679 CLOSE c_get_contractinfo_csr;
7680 END IF;
7681
7682 IF l_fndcurrency_csr%ISOPEN THEN
7683 CLOSE l_fndcurrency_csr;
7684 END IF;
7685
7686 IF l_racusttrxtypes_csr%ISOPEN THEN
7687 CLOSE l_racusttrxtypes_csr;
7688 END IF;
7689
7690 IF l_oklkheaders_csr%ISOPEN THEN
7691 CLOSE l_oklkheaders_csr;
7692 END IF;
7693
7694 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
7695 -- unexpected error
7696 OKL_API.set_message(p_app_name => g_app_name,
7697 p_msg_name => g_unexpected_error,
7698 p_token1 => g_sqlcode_token,
7699 p_token1_value => sqlcode,
7700 p_token2 => g_sqlerrm_token,
7701 p_token2_value => sqlerrm);
7702
7703 END get_k_hdr_tax_params;
7704
7705 /*========================================================================
7706 | PRIVATE PROCEDURE get_asset_tax_params
7707 |
7708 | DESCRIPTION
7709 | This procedure is called by other procedures in this API to derive
7710 | asset level tax determinats
7711 |
7712 | CALLED FROM
7713 |
7714 |
7715 | CALLS PROCEDURES/FUNCTIONS
7716 | okl_am_util_pvt.get_rule_record
7717 |
7718 |
7719 | PARAMETERS
7720 | Input parameters
7721 | p_khr_id -- Contract ID
7722 | p_kle_id -- Financial Asset ID
7723 | p_source_trx_name -- Source Transaction Name
7724 | p_source_table -- Source Transaction Table
7725 | p_qtp_code -- Quote Type
7726 | p_purpose_code -- Stream Type Purpose
7727 | Output Parameters
7728 | x_transfer_of_title -- Transfer of Title
7729 | x_sale_lease_back -- Sale and Lease Back
7730 | x_purchase_of_lease -- Purchase of Lease
7731 | x_usage_of_equipment -- Usage of Equipment
7732 | x_age_of_equipment -- Age of Equipment
7733 | x_vendor_site_id -- Vendor Site ID
7734 |
7735 | KNOWN ISSUES
7736 |
7737 | NOTES
7738 |
7739 |
7740 | MODIFICATION HISTORY
7741 | Date Author Description of Changes
7742 | 08-APR-05 SECHAWLA Created
7743 |
7744 *=======================================================================*/
7745
7746 PROCEDURE get_asset_tax_params(
7747 p_api_version IN NUMBER,
7748 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7749 x_return_status OUT NOCOPY VARCHAR2,
7750 x_msg_count OUT NOCOPY NUMBER,
7751 x_msg_data OUT NOCOPY VARCHAR2,
7752 p_khr_id IN NUMBER,
7753 p_kle_id IN NUMBER, -- financial asset id
7754 p_source_trx_name IN VARCHAR2,
7755 p_source_table IN VARCHAR2,
7756 p_qtp_code IN VARCHAR2 DEFAULT NULL, -- Used only for term / repurchase quote
7757 p_purpose_code IN VARCHAR2 DEFAULT NULL, -- Used only in process_invoice_tax to identify remk,asset repair,vendor cure invoices
7758 x_transfer_of_title OUT NOCOPY VARCHAR2,
7759 x_sale_lease_back OUT NOCOPY VARCHAR2,
7760 x_purchase_of_lease OUT NOCOPY VARCHAR2,
7761 x_usage_of_equipment OUT NOCOPY VARCHAR2,
7762 x_age_of_equipment OUT NOCOPY NUMBER,
7763 x_vendor_site_id OUT NOCOPY NUMBER
7764 ) IS
7765
7766 --get the asset number
7767 CURSOR l_okclines_csr(cp_fin_asset_id IN NUMBER) IS
7768 SELECT name
7769 FROM OKC_K_LINES_v
7770 WHERE id = cp_fin_asset_id;
7771
7772 -- get the model line id (ITEM) for a financial asset id
7773 CURSOR l_modelline_csr(cp_fin_asset_id IN NUMBER) IS
7774 SELECT id
7775 FROM okc_k_lines_b
7776 WHERE cle_id = cp_fin_asset_id
7777 AND lse_id = 34 ; -- model line LSE ID
7778
7779 -- Get the vendor for asset/service/fee line
7780 CURSOR l_partyroles_csr(cp_line_id IN NUMBER) IS
7781 SELECT object1_id1 --is fk to po_vendors.vendor_id
7782 FROM okc_k_party_roles_b
7783 WHERE cle_id = cp_line_id --fee/service top line id for fee and service, model line id for asset line
7784 AND rle_code = 'OKL_VENDOR';
7785
7786 -- get the primary pay vendor location for the vendor
7787 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
7788 SELECT vendor_site_id
7789 FROM po_vendor_sites
7790 WHERE vendor_id = cp_vendor_id
7791 AND primary_pay_site_flag = 'Y';
7792
7793
7794 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7795
7796 l_rulv_rec okl_rule_pub.rulv_rec_type;
7797 l_rulv_empty_rec okl_rule_pub.rulv_rec_type;
7798 l_name VARCHAR2(150);
7799
7800 l_transfer_of_title VARCHAR2(30);
7801 l_sale_lease_back VARCHAR2(30);
7802 l_purchase_of_lease VARCHAR2(30);
7803 l_usage_of_equipment VARCHAR2(450);
7804 l_age_of_equipment NUMBER;
7805 l_vendor_site_id NUMBER;
7806 l_model_line_id NUMBER;
7807 l_vendor_id NUMBER;
7808 l_vndr_cnt NUMBER;
7809 l_purpose_code VARCHAR2(30);
7810
7811 BEGIN
7812
7813 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7814 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params','Begin(+)');
7815 END IF;
7816
7817 --Print Input Variables
7818 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7819 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7820 'p_init_msg_list :'||p_init_msg_list);
7821 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7822 'p_khr_id :'||to_char(p_khr_id));
7823 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7824 'p_kle_id :'||to_char(p_kle_id));
7825 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7826 'p_source_trx_name :'||p_source_trx_name);
7827 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7828 'p_source_table :'||p_source_table);
7829 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7830 'p_qtp_code :'||p_qtp_code);
7831 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7832 'p_purpose_code :'||p_purpose_code);
7833
7834 END IF;
7835
7836
7837 IF ( (p_source_trx_name IS NULL AND p_source_table = 'OKL_TRX_QUOTES_B' AND p_qtp_code LIKE 'REP%')-- Repurchase quote creation/updation
7838 OR
7839 ( ( p_source_trx_name = 'Billing' OR p_source_trx_name = 'Credit Memo' )
7840 AND ( p_source_table = 'OKL_TXD_AR_LN_DTLS_B' )
7841 AND ( p_qtp_code LIKE 'REP%' OR p_purpose_code IN ('AMBSPR','CURE','REPAIR_CHARGE') )
7842 ) -- Repurchase quote billing OR Remk,asset repair or vendor cure billing
7843 ) THEN
7844
7845 l_transfer_of_title := 'N';
7846 l_sale_lease_back := 'N';
7847 l_purchase_of_lease := 'N';
7848 l_usage_of_equipment := NULL;
7849 l_age_of_equipment := NULL;
7850 l_vendor_site_id := NULL;
7851
7852 ELSE
7853 -- get transfer of title -- financial Asset level
7854 l_rulv_rec := l_rulv_empty_rec ;
7855 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7856 ,p_rdf_code => 'LAASTX'
7857 ,p_chr_id => p_khr_id
7858 ,p_cle_id => p_kle_id
7859 ,p_message_yn => FALSE
7860 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7861 ,x_return_status => x_return_status
7862 ,x_msg_count => x_msg_count
7863 ,x_msg_data => x_msg_data);
7864
7865 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7866 -- Rule instance is found
7867 IF (l_rulv_rec.rule_information6 IS NOT NULL) AND (l_rulv_rec.rule_information6 <> OKL_API.G_MISS_CHAR) THEN
7868
7869 l_transfer_of_title := l_rulv_rec.rule_information6;
7870 ELSE -- transfer of title is optional on the contract
7871
7872 l_transfer_of_title := 'N';
7873 END IF;
7874 ELSE -- transfer of title is optional on the contract
7875
7876 l_transfer_of_title := 'N';
7877 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7878 END IF;
7879 -- get transfer of title : end
7880
7881 -- get sale_lease_back -- financial Asset level
7882 l_rulv_rec := l_rulv_empty_rec ;
7883 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7884 ,p_rdf_code => 'LAASTX'
7885 ,p_chr_id => p_khr_id
7886 ,p_cle_id => p_kle_id
7887 ,p_message_yn => FALSE
7888 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7889 ,x_return_status => x_return_status
7890 ,x_msg_count => x_msg_count
7891 ,x_msg_data => x_msg_data);
7892
7893 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7894 -- Rule instance is found
7895 IF (l_rulv_rec.rule_information7 IS NOT NULL) AND (l_rulv_rec.rule_information7 <> OKL_API.G_MISS_CHAR) THEN
7896
7897 l_sale_lease_back := l_rulv_rec.rule_information7;
7898 ELSE -- sale and lease back is optional on the contract
7899
7900 l_sale_lease_back := 'N';
7901 END IF;
7902 ELSE -- sale and lease back is optional on the contract
7903
7904 l_sale_lease_back := 'N';
7905 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7906 END IF;
7907 -- get sale_lease_back : end
7908
7909
7910 -- get purchase_of_lease -- financial Asset level
7911 l_rulv_rec := l_rulv_empty_rec ;
7912 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7913 ,p_rdf_code => 'LAASTX'
7914 ,p_chr_id => p_khr_id
7915 ,p_cle_id => p_kle_id
7916 ,p_message_yn => FALSE
7917 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7918 ,x_return_status => x_return_status
7919 ,x_msg_count => x_msg_count
7920 ,x_msg_data => x_msg_data);
7921
7922 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7923 -- Rule instance is found
7924 IF (l_rulv_rec.rule_information8 IS NOT NULL) AND (l_rulv_rec.rule_information8 <> OKL_API.G_MISS_CHAR) THEN
7925
7926 l_purchase_of_lease := l_rulv_rec.rule_information8;
7927 ELSE -- purchase of lease is optional on the contract
7928
7929 l_purchase_of_lease := 'N';
7930 END IF;
7931 ELSE -- purchase of lease is optional on the contract
7932
7933 l_purchase_of_lease := 'N';
7934 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7935 END IF;
7936 -- get purchase_of_lease : end
7937
7938
7939 -- get usage_of_equipment -- financial Asset level
7940 l_rulv_rec := l_rulv_empty_rec ;
7941 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7942 ,p_rdf_code => 'LAASTX'
7943 ,p_chr_id => p_khr_id
7944 ,p_cle_id => p_kle_id
7945 ,p_message_yn => FALSE
7946 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7947 ,x_return_status => x_return_status
7948 ,x_msg_count => x_msg_count
7949 ,x_msg_data => x_msg_data);
7950
7951 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7952 -- Rule instance is found
7953 IF (l_rulv_rec.rule_information9 IS NOT NULL) AND (l_rulv_rec.rule_information9 <> OKL_API.G_MISS_CHAR) THEN
7954
7955 l_usage_of_equipment := l_rulv_rec.rule_information9;
7956
7957 END IF;
7958 ELSE
7959 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7960 END IF;
7961 -- get usage_of_equipment : end
7962
7963
7964 -- get age_of_equipment -- financial Asset level
7965 l_rulv_rec := l_rulv_empty_rec ;
7966 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7967 ,p_rdf_code => 'LAASTX'
7968 ,p_chr_id => p_khr_id
7969 ,p_cle_id => p_kle_id
7970 ,p_message_yn => FALSE
7971 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7972 ,x_return_status => x_return_status
7973 ,x_msg_count => x_msg_count
7974 ,x_msg_data => x_msg_data);
7975
7976 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7977 -- Rule instance is found
7978 IF (l_rulv_rec.rule_information10 IS NOT NULL) AND (l_rulv_rec.rule_information10 <> OKL_API.G_MISS_CHAR) THEN
7979
7980 l_age_of_equipment := to_number(l_rulv_rec.rule_information10);
7981
7982 END IF;
7983 ELSE
7984 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7985 END IF;
7986 -- get age_of_equipment : end
7987
7988
7989 -- get Vendor site
7990
7991 -- Get the Model line for the financial asset line
7992 OPEN l_modelline_csr(p_kle_id);
7993 FETCH l_modelline_csr INTO l_model_line_id;
7994 CLOSE l_modelline_csr;
7995
7996 -- get the asset line Vendor
7997 -- Check if multiple vendors exist. If so, vendor location is not a determinant
7998 l_vndr_cnt := 0;
7999 FOR l_partyroles_rec in l_partyroles_csr(l_model_line_id) LOOP
8000 l_vndr_cnt := l_vndr_cnt + 1;
8001 l_vendor_id := l_partyroles_rec.object1_id1; -- vendor is optional
8002 END LOOP;
8003
8004
8005 IF l_vndr_cnt = 1 AND l_vendor_id IS NOT NULL THEN
8006 -- get the primary vendor site (if defined) from AP
8007 -- vendor site is applicable for fin asset / service / fee lines / sublines
8008 OPEN l_povendorsites_csr(l_vendor_id);
8009 FETCH l_povendorsites_csr INTO l_vendor_site_id; -- will be null if none of the sites are checked as primary
8010 CLOSE l_povendorsites_csr;
8011
8012 END IF;
8013 -- get Vendor site : end
8014 END IF;
8015
8016 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8017 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8018 'l_transfer_of_title'||l_transfer_of_title);
8019 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8020 'l_sale_lease_back'||l_sale_lease_back);
8021 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8022 'l_purchase_of_lease'||l_purchase_of_lease);
8023 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8024 'l_usage_of_equipment'||l_usage_of_equipment);
8025 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8026 'l_age_of_equipment'||l_age_of_equipment);
8027 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
8028 'l_vendor_site_id'||l_vendor_site_id);
8029 END IF;
8030
8031 x_transfer_of_title := l_transfer_of_title;
8032 x_sale_lease_back := l_sale_lease_back;
8033 x_purchase_of_lease := l_purchase_of_lease;
8034 x_usage_of_equipment := l_usage_of_equipment;
8035 x_age_of_equipment := l_age_of_equipment;
8036 x_vendor_site_id := l_vendor_site_id;
8037
8038 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8039 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ','End(-)');
8040 END IF;
8041
8042 EXCEPTION
8043 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8044
8045 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8046 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8047 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
8048 END IF;
8049
8050 IF l_okclines_csr%ISOPEN THEN
8051 CLOSE l_okclines_csr;
8052 END IF;
8053
8054 IF l_modelline_csr%ISOPEN THEN
8055 CLOSE l_modelline_csr;
8056 END IF;
8057
8058 IF l_partyroles_csr%ISOPEN THEN
8059 CLOSE l_partyroles_csr;
8060 END IF;
8061
8062 IF l_povendorsites_csr%ISOPEN THEN
8063 CLOSE l_povendorsites_csr;
8064 END IF;
8065
8066 x_return_status := OKL_API.G_RET_STS_ERROR;
8067 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8068 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8069 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8070 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
8071 END IF;
8072
8073 IF l_okclines_csr%ISOPEN THEN
8074 CLOSE l_okclines_csr;
8075 END IF;
8076
8077 IF l_modelline_csr%ISOPEN THEN
8078 CLOSE l_modelline_csr;
8079 END IF;
8080
8081 IF l_partyroles_csr%ISOPEN THEN
8082 CLOSE l_partyroles_csr;
8083 END IF;
8084
8085 IF l_povendorsites_csr%ISOPEN THEN
8086 CLOSE l_povendorsites_csr;
8087 END IF;
8088
8089
8090 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8091
8092 WHEN OTHERS THEN
8093 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8094 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8095 'EXCEPTION :'||sqlerrm);
8096 END IF;
8097
8098 IF l_okclines_csr%ISOPEN THEN
8099 CLOSE l_okclines_csr;
8100 END IF;
8101
8102 IF l_modelline_csr%ISOPEN THEN
8103 CLOSE l_modelline_csr;
8104 END IF;
8105
8106 IF l_partyroles_csr%ISOPEN THEN
8107 CLOSE l_partyroles_csr;
8108 END IF;
8109
8110 IF l_povendorsites_csr%ISOPEN THEN
8111 CLOSE l_povendorsites_csr;
8112 END IF;
8113
8114
8115 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8116 -- unexpected error
8117 OKL_API.set_message(p_app_name => g_app_name,
8118 p_msg_name => g_unexpected_error,
8119 p_token1 => g_sqlcode_token,
8120 p_token1_value => sqlcode,
8121 p_token2 => g_sqlerrm_token,
8122 p_token2_value => sqlerrm);
8123
8124 END get_asset_tax_params;
8125
8126 /*========================================================================
8127 | PRIVATE PROCEDURE process_tax_schedule_tax
8128 |
8129 | DESCRIPTION
8130 | This procedure is called from calculate_sales_tax procedure to calculate
8131 | tax schedule for customer requests, booking and rebooking
8132 |
8133 | CALLED FROM calculate_sales_tax()
8134 |
8135 |
8136 | CALLS PROCEDURES/FUNCTIONS
8137 | get_k_hdr_tax_params()
8138 | get_asset_tax_params()
8139 | get_location_party_ids()
8140 | get_ufc_code()
8141 | OKL_TAX_INTERFACE_PVT.calculate_tax()
8142 |
8143 |
8144 | PARAMETERS
8145 | p_source_trx_id -- Source transaction ID
8146 | p_source_trx_name -- Source transaction Name
8147 | p_source_table -- Source table
8148 |
8149 | KNOWN ISSUES
8150 |
8151 | NOTES
8152 |
8153 |
8154 | MODIFICATION HISTORY
8155 | Date Author Description of Changes
8156 | 08-APR-05 SECHAWLA Created
8157 | 22-APR-08 SECHAWLA 6975983 Do not error out if there is no tax in eBTax for
8158 | the Billed stream elements. Create taxable line
8159 | in okl_tax_sources. There won't be aby tax lines
8160 | in okl_tax_trx_details.
8161 |
8162 *=======================================================================*/
8163 PROCEDURE process_tax_schedule_tax(
8164 p_api_version IN NUMBER,
8165 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8166 x_return_status OUT NOCOPY VARCHAR2,
8167 x_msg_count OUT NOCOPY NUMBER,
8168 x_msg_data OUT NOCOPY VARCHAR2,
8169 p_source_trx_id IN NUMBER,
8170 p_source_trx_name IN VARCHAR2,
8171 p_source_table IN VARCHAR2) IS
8172
8173 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8174 i NUMBER;
8175
8176 -- get the tax schedule request details
8177 CURSOR l_trxrequests_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
8178 SELECT a.dnz_khr_id, a.start_date, a.end_date, a.try_id, a.legal_entity_id, a.org_id
8179 FROM okl_trx_requests a, okl_trx_types_tl b
8180 WHERE a.id = cp_trx_id
8181 AND a.try_id = b.id
8182 AND b.name = cp_trx_type_name
8183 AND language = 'US';
8184
8185 --Cursor to get all the streams / stream elements associated with the contract
8186 -- This cursor picks up the K, asset, service, fee , service subline, fee subline level payments
8187 -- We are excluding Insurance streams. Usage lines do not have payments / streams
8188 CURSOR c_k_unbilled_streams_csr(cp_contract_id IN NUMBER,
8189 cp_date_from IN DATE,
8190 cp_date_to IN DATE) IS
8191 SELECT strm.khr_id,
8192 strm.kle_id, -- can be null for K level streams
8193 lse.lty_code,
8194 NULL asset_number,
8195 NULL trx_id,
8196 NULL trx_line_id,
8197 NULL entity_code,
8198 NULL event_class_code,
8199 NULL trx_level_type,
8200 NULL adjusted_doc_entity_code,
8201 NULL adjusted_doc_event_class_code,
8202 NULL adjusted_doc_trx_id,
8203 NULL adjusted_doc_trx_line_id,
8204 NULL adjusted_doc_trx_level_type,
8205 NULL adjusted_doc_number,
8206 NULL adjusted_doc_date,
8207 G_TAX_SCHEDULE tax_call_type_code,
8208 strm.sty_id stream_type_id,
8209 NULL trx_business_category,
8210 'ACTIVE' tax_line_status_code,
8211 selm.id sel_id,
8212 'N' reported_yn,
8213 typ.code Stream_Type,
8214 typ.billable_yn Billable,
8215 strm.id stream_id,
8216 strm.transaction_number,
8217 selm.amount,
8218 selm.stream_element_date stream_element_date,
8219 NULL tax_sources_id,
8220 NULL asset_line_id,
8221 NULL ship_to_siteuseid,
8222 NULL inventory_item_id
8223 FROM okl_strm_type_b typ,
8224 okl_streams strm,
8225 okl_strm_elements selm,
8226 okc_k_lines_b lines,
8227 okc_line_styles_b lse
8228 WHERE strm.sty_id = typ.id
8229 AND strm.id = selm.stm_id
8230 AND typ.billable_yn = 'Y'
8231 AND strm.say_code ='CURR'
8232 AND strm.active_yn = 'Y'
8233 AND strm.purpose_code IS NULL
8234 AND strm.khr_id = cp_contract_id
8235 AND selm.stream_element_date BETWEEN cp_date_from AND cp_date_to
8236 AND strm.kle_id = lines.id(+)
8237 AND lines.lse_id = lse.id (+)
8238 AND lse.lty_code (+) <> 'INSURANCE'
8239 AND NOT EXISTS -- tax lines don't exist in AR ( This condition is added to pick up stream elements billed under
8240 -- old solution : date_billed may not be null but billing may not have been run completely, so tax
8241 -- may not have been calculated in AR
8242 (SELECT NULL
8243 FROM okl_bpd_tld_ar_lines_v cnsld
8244 WHERE cnsld.sel_id = selm.id)
8245 ORDER BY strm.kle_id, strm.sty_id;
8246
8247 -- get Billed stream elements
8248 CURSOR c_k_billed_streams_csr(cp_contract_id IN NUMBER,
8249 cp_date_from IN DATE,
8250 cp_date_to IN DATE) IS
8251 SELECT strm.khr_id,
8252 strm.kle_id, -- can be null for K level streams
8253 strm.sty_id stream_type_id,
8254 selm.id sel_id,
8255 selm.stream_element_date stream_element_date,
8256 cnsld.customer_trx_id,
8257 cnsld.customer_trx_line_id,
8258 selm.amount --SECHAWLA 22-APR-08 6975983 : added
8259 FROM okl_strm_type_b typ,
8260 okl_streams strm,
8261 okl_strm_elements selm,
8262 okc_k_lines_b lines,
8263 okc_line_styles_b lse,
8264 okl_bpd_tld_ar_lines_v cnsld
8265 WHERE strm.sty_id = typ.id
8266 AND strm.id = selm.stm_id
8267 AND typ.billable_yn = 'Y'
8268 AND strm.say_code ='CURR'
8269 AND strm.active_yn = 'Y'
8270 AND strm.purpose_code IS NULL
8271 AND strm.khr_id = cp_contract_id
8272 AND selm.stream_element_date BETWEEN cp_date_from AND cp_date_to
8273 AND selm.date_billed IS NOT NULL -- pick billed stream elements
8274 AND strm.kle_id = lines.id(+)
8275 AND lines.lse_id = lse.id (+)
8276 AND lse.lty_code (+) <> 'INSURANCE'
8277 AND cnsld.sel_id = selm.id
8278 AND cnsld.khr_id = strm.khr_id;
8279 -- ORDER BY strm.kle_id, strm.sty_id;
8280
8281 -- get the billing line details
8282 CURSOR l_txdarlndtls_csr(cp_sel_id IN NUMBER, cp_sty_id IN NUMBER) IS
8283 SELECT hdr.id trx_id, det.id trx_line_id
8284 FROM okl_trx_ar_invoices_b hdr, okl_txl_ar_inv_lns_b line, okl_txd_ar_ln_dtls_b det
8285 WHERE det.sel_id = cp_sel_id
8286 AND det.sty_id = cp_sty_id
8287 AND det.til_id_details = line.id
8288 AND line.tai_id = hdr.id;
8289
8290 -- get all the financial asset lines for the contract
8291 CURSOR l_finassets_csr(CP_KHR_ID IN NUMBER) IS
8292 SELECT DISTINCT strm.kle_id fin_asset_id -- is DISTINCT req ? can an asset line have more than one stream types ?
8293 FROM okl_strm_type_b typ,
8294 okl_streams strm,
8295 okc_k_lines_b lines,
8296 okc_line_styles_b sty
8297 WHERE strm.sty_id = typ.id
8298 AND typ.billable_yn = 'Y'
8299 AND strm.say_code ='CURR'
8300 AND strm.active_yn = 'Y'
8301 AND strm.purpose_code IS NULL
8302 AND strm.khr_id = CP_KHR_ID
8303 AND strm.kle_id = lines.id
8304 AND lines.lse_id = sty.id
8305 AND sty.lty_code = 'FREE_FORM1';
8306
8307 --get the asset number
8308 CURSOR l_okclines_csr(cp_fin_asset_id IN NUMBER) IS
8309 SELECT name, lse_id
8310 FROM OKC_K_LINES_v
8311 WHERE id = cp_fin_asset_id;
8312
8313 -- get contract/line stream types (K1-A1-ST1, K1-A1-ST2, K1-S1-ST3, K1-ST4...)
8314 CURSOR l_kstreamtypes_csr(cp_khr_id IN NUMBER) IS
8315 SELECT typ.code Stream_Type,
8316 strm.id stream_id,
8317 strm.kle_id line_id,
8318 strm.sty_id stream_type_id,
8319 sty.lty_code
8320 FROM okl_strm_type_b typ,
8321 okl_streams strm,
8322 okc_k_lines_b lines,
8323 okc_line_styles_b sty
8324 WHERE strm.sty_id = typ.id
8325 AND typ.billable_yn = 'Y'
8326 AND strm.say_code ='CURR'
8327 AND strm.active_yn = 'Y'
8328 AND strm.purpose_code IS NULL
8329 AND strm.khr_id = cp_khr_id
8330 AND strm.kle_id = lines.id(+)
8331 AND lines.lse_id = sty.id (+)
8332 AND sty.lty_code (+) <> 'INSURANCE';
8333
8334 -- Get the financial asset associated with a given subline
8335 CURSOR l_finasset_csr(cp_fee_serviced_asset_line_id IN NUMBER, cp_line_type IN VARCHAR2) IS
8336 SELECT cim.object1_id1
8337 FROM okc_k_lines_b cle, okc_line_styles_b lse, okc_k_items cim
8338 WHERE cle.lse_id = lse.id
8339 AND lse.lty_code = cp_line_type
8340 AND cim.cle_id = cle.id
8341 AND cle.id = cp_fee_serviced_asset_line_id;
8342
8343 -- get the inventory item id and inventory item org for a financial asset
8344 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
8345 SELECT cim_model.object1_id1,
8346 cim_model.object1_id2
8347 FROM okc_k_items cim_model,
8348 okc_k_lines_b cleb_model,
8349 okc_line_styles_b lseb_model
8350 WHERE cim_model.cle_id = cleb_model.id
8351 AND cleb_model.cle_id = cp_fin_asset_id
8352 AND lseb_model.id = cleb_model.lse_id
8353 AND lseb_model.lty_code = 'ITEM';
8354
8355 -- get the tax lines corresponding to billing tax source ID
8356 CURSOR l_taxtrxdetails_csr(cp_txs_id IN NUMBER) IS
8357 SELECT *
8358 FROM okl_tax_trx_details
8359 WHERE txs_id = cp_txs_id;
8360
8361 -- Get the vendor for asset/service/fee line
8362 CURSOR l_partyroles_csr(cp_line_id IN NUMBER) IS
8363 SELECT object1_id1 --is fk to po_vendors.vendor_id
8364 FROM okc_k_party_roles_b
8365 WHERE cle_id = cp_line_id --fee/service top line id for fee and service, model line id for asset line
8366 AND rle_code = 'OKL_VENDOR';
8367
8368 -- get the primary pay vendor location for the vendor
8369 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
8370 SELECT vendor_site_id
8371 FROM po_vendor_sites
8372 WHERE vendor_id = cp_vendor_id
8373 AND primary_pay_site_flag = 'Y';
8374
8375 -- check if stream element is billed in AR
8376 -- Get total tax for a taxable line
8377 CURSOR l_get_zx_total_tax(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8378 SELECT SUM(zx.tax_amt) tax_amt
8379 FROM zx_lines zx
8380 WHERE zx.trx_id = cp_trx_id
8381 AND zx.trx_line_id = cp_trx_line_id
8382 AND zx.entity_code = G_AR_ENTITY_CODE
8383 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8384 AND zx.application_id = G_AR_APPLICATION_ID;
8385
8386 -- Get tax values for a taxable line
8387 CURSOR l_get_zx_taxable_line_info(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8388 SELECT zx.line_amt,
8389 zx.taxable_amt,
8390 zx.trx_date,
8391 zx.tax_determine_date,
8392 zx.trx_currency_code,
8393 zx.currency_conversion_type,
8394 zx.currency_conversion_rate,
8395 zx.currency_conversion_date,
8396 zxdet.product_category,
8397 zxdet.trx_business_category,
8398 zxdet.product_fisc_classification,
8399 zxdet.user_defined_fisc_class,
8400 zxdet.product_type,
8401 zxdet.internal_organization_id,
8402 zxdet.input_tax_classification_code,
8403 zx.legal_entity_id,
8404 zxdet.line_intended_use
8405 FROM zx_lines zx,
8406 zx_lines_det_factors zxdet
8407 WHERE zx.trx_line_id = cp_trx_line_id
8408 AND zx.trx_id = cp_trx_id
8409 AND zx.internal_organization_id = MO_GLOBAL.get_current_org_id
8410 AND zx.entity_code = G_AR_ENTITY_CODE
8411 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8412 AND zx.application_id = G_AR_APPLICATION_ID
8413 AND zx.trx_line_id = zxdet.trx_line_id
8414 AND zx.trx_id = zxdet.trx_id
8415 AND zx.internal_organization_id = zxdet.internal_organization_id
8416 AND zx.entity_code = zxdet.entity_code
8417 AND zx.event_class_code = zxdet.event_class_code
8418 AND zx.application_id = zxdet.application_id
8419 AND ROWNUM = 1;
8420
8421 -- get tax lines from eBTax
8422 CURSOR l_get_zx_tax_lines(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8423 SELECT zx.tax_rate_id,
8424 zx.tax_rate_code,
8425 zx.tax_exemption_id,
8426 zx.tax_rate,
8427 zx.tax_date,
8428 zx.line_amt,
8429 zx.internal_organization_id,
8430 zx.application_id,
8431 zx.entity_code,
8432 zx.event_class_code,
8433 zx.event_type_code,
8434 zx.trx_id,
8435 zx.trx_line_id,
8436 zx.trx_level_type,
8437 zx.trx_line_number,
8438 zx.tax_line_number,
8439 zx.tax_regime_id,
8440 zx.tax_regime_code,
8441 zx.tax_id,
8442 zx.tax,
8443 zx.tax_status_id,
8444 zx.tax_status_code,
8445 zx.tax_apportionment_line_number,
8446 zx.legal_entity_id,
8447 zx.trx_number,
8448 zx.trx_date,
8449 zx.tax_jurisdiction_id,
8450 zx.tax_jurisdiction_code,
8451 zx.tax_type_code,
8452 zx.tax_currency_code,
8453 zx.taxable_amt_tax_curr,
8454 zx.trx_currency_code,
8455 zx.minimum_accountable_unit,
8456 zx.precision,
8457 zx.currency_conversion_type,
8458 zx.currency_conversion_rate,
8459 zx.currency_conversion_date,
8460 zx.tax_determine_date,
8461 zx.taxable_amt,
8462 zx.tax_amt,
8463 zxdet.product_category,
8464 zxdet.trx_business_category,
8465 zxdet.product_fisc_classification,
8466 zxdet.user_defined_fisc_class,
8467 zxdet.product_type
8468 FROM zx_lines zx,
8469 zx_lines_det_factors zxdet
8470 WHERE zx.trx_id = cp_trx_id
8471 AND zx.trx_line_id = cp_trx_line_id
8472 AND zx.internal_organization_id = MO_GLOBAL.get_current_org_id
8473 AND zx.entity_code = G_AR_ENTITY_CODE
8474 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8475 AND zx.application_id = G_AR_APPLICATION_ID
8476 AND zx.trx_line_id = zxdet.trx_line_id
8477 AND zx.trx_id = zxdet.trx_id
8478 AND zx.internal_organization_id = zxdet.internal_organization_id
8479 AND zx.entity_code = zxdet.entity_code
8480 AND zx.event_class_code = zxdet.event_class_code
8481 AND zx.application_id = zxdet.application_id;
8482
8483 -- Local Record Structures
8484 TYPE contract_streams_rec_type IS RECORD (
8485 khr_id NUMBER,
8486 kle_id NUMBER,
8487 lty_code VARCHAR2(30),
8488 asset_number VARCHAR2(15),
8489 trx_id NUMBER,
8490 trx_line_id NUMBER,
8491 entity_code VARCHAR2(30),
8492 event_class_code VARCHAR2(30),
8493 trx_level_type VARCHAR2(30),
8494 adjusted_doc_entity_code VARCHAR2(30),
8495 adjusted_doc_event_class_code VARCHAR2(30),
8496 adjusted_doc_trx_id NUMBER,
8497 adjusted_doc_trx_line_id NUMBER,
8498 adjusted_doc_trx_level_type VARCHAR2(30),
8499 adjusted_doc_number VARCHAR2(150),
8500 adjusted_doc_date DATE,
8501 tax_call_type_code VARCHAR2(30),
8502 stream_type_id NUMBER,
8503 trx_business_category VARCHAR2(30),
8504 tax_line_status_code VARCHAR2(30),
8505 sel_id NUMBER,
8506 reported_yn VARCHAR2(1),
8507 Stream_Type VARCHAR2(150),
8508 Billable VARCHAR2(1),
8509 stream_id NUMBER,
8510 transaction_number NUMBER,
8511 amount NUMBER,
8512 stream_element_date DATE,
8513 tax_sources_id NUMBER,
8514 asset_line_id NUMBER,
8515 ship_to_siteuseid NUMBER,
8516 inventory_item_id NUMBER );
8517
8518 TYPE bill_ts_tx_src_rec_type IS RECORD (
8519 BILL_ID NUMBER,
8520 TS_KHR_ID NUMBER,
8521 TS_KLE_ID NUMBER,
8522 BILL_ASSET_NUMBER VARCHAR2(15),
8523 BILL_TRX_ID NUMBER ,
8524 BILL_TRX_LINE_ID NUMBER ,
8525 TS_TRX_ID NUMBER,
8526 TS_TRX_LINE_ID NUMBER,
8527 TS_STY_ID NUMBER,
8528 BILL_TRX_BUSINESS_CATEGORY VARCHAR2(30),
8529 TS_SEL_ID NUMBER,
8530 TS_SEL_DATE DATE);
8531
8532 TYPE asset_level_det_rec_type IS RECORD
8533 (fin_asset_id NUMBER,
8534 transfer_of_title VARCHAR2(30),
8535 sale_lease_back VARCHAR2(30),
8536 purchase_of_lease VARCHAR2(30),
8537 usage_of_equipment VARCHAR2(30),
8538 vendor_site_id NUMBER,
8539 age_of_equipment NUMBER);
8540
8541 TYPE k_billed_streams_rec_type IS RECORD (
8542 khr_id NUMBER,
8543 kle_id NUMBER,
8544 sty_id NUMBER,
8545 sel_id NUMBER,
8546 sel_date DATE,
8547 customer_trx_id NUMBER,
8548 customer_trx_line_id NUMBER,
8549 sel_amount NUMBER); --SECHAWLA 22-APR-08 6975983 : added;
8550
8551 TYPE contract_streams_tbl_type IS TABLE OF contract_streams_rec_type INDEX BY BINARY_INTEGER;
8552 TYPE bill_ts_tx_src_tbl_type IS TABLE OF bill_ts_tx_src_rec_type INDEX BY BINARY_INTEGER;
8553 TYPE asset_level_det_tbl_type IS TABLE OF asset_level_det_rec_type INDEX BY BINARY_INTEGER;
8554 TYPE finassets_tbl_type IS TABLE OF l_finassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
8555 TYPE kstreamtypes_tbl_type IS TABLE OF l_kstreamtypes_csr%ROWTYPE INDEX BY BINARY_INTEGER;
8556 TYPE k_billed_streams_tbl_type IS TABLE OF k_billed_streams_rec_type INDEX BY BINARY_INTEGER;
8557
8558 l_get_zx_taxable_line_info_rec l_get_zx_taxable_line_info%ROWTYPE;
8559 l_ts_asset_level_det_tbl asset_level_det_tbl_type;
8560 l_kstreamtypes_tbl kstreamtypes_tbl_type;
8561 l_finassets_tbl finassets_tbl_type;
8562 l_contract_streams_tbl contract_streams_tbl_type;
8563 l_tax_sources_tbl tax_sources_tbl_type;
8564 l_tax_trx_details_tbl tax_lines_tbl_type;
8565 l_K_unbilled_streams_rec contract_streams_rec_type;
8566 l_bill_ts_tx_src_tbl bill_ts_tx_src_tbl_type;
8567 l_k_billed_streams_tbl k_billed_streams_tbl_type;
8568 lx_tax_codes_tbl tax_codes_tbl_type;
8569 lx_line_params_tbl line_params_tbl_type;
8570 lp_hdr_params_rec hdr_params_rec_type;
8571
8572 l_fetch_size NUMBER := 10000;
8573
8574 l_ts_trx_type_id_det NUMBER;
8575 l_asset_number VARCHAR2(150);
8576
8577 l_tax_sources_id NUMBER;
8578
8579 l_ts_prch_opt_det VARCHAR2(450);
8580 l_ts_fin_prod_id_det NUMBER;
8581 l_ts_int_disclosed_det VARCHAR2(30);
8582
8583 l_ts_transfer_of_title VARCHAR2(30);
8584 l_ts_sale_lease_back VARCHAR2(30);
8585 l_ts_purchase_of_lease VARCHAR2(30);
8586 l_ts_usage_of_equipment VARCHAR2(450);
8587 l_ts_age_of_equipment NUMBER;
8588 l_ts_vendor_site_id NUMBER;
8589
8590 l_fin_asset_id NUMBER;
8591 ind NUMBER;
8592 l_asset_line_id NUMBER;
8593 l_inv_item_org_id NUMBER;
8594 l_contract_streams_tbc VARCHAR2(30);
8595 l_unbilled_strms_exist BOOLEAN := FALSE;
8596 l_bill_ts_tx_src_cnt NUMBER;
8597
8598 j NUMBER;
8599 l_cust_trx_type_id NUMBER;
8600 l_vendor_id NUMBER;
8601 l_vndr_cnt NUMBER;
8602 l_dummy VARCHAR2(1);
8603 l_ts_khr_id NUMBER;
8604 l_ts_start_date DATE;
8605 l_ts_end_date DATE;
8606
8607 l_cust_acct_id NUMBER;
8608 l_bill_to_siteuseid NUMBER;
8609 l_currency_code VARCHAR2(15);
8610 l_precision NUMBER;
8611 l_minimum_accountable_unit NUMBER;
8612
8613 lx_bill_to_party_site_id NUMBER;
8614 lx_bill_to_location_id NUMBER;
8615 lx_bill_to_party_id NUMBER;
8616 lx_bill_to_siteuseid NUMBER;
8617 lx_ship_to_party_site_id NUMBER;
8618 lx_ship_to_location_id NUMBER;
8619 lx_ship_to_party_id NUMBER;
8620 lx_ship_to_siteuseid NUMBER;
8621
8622 lx_org_id NUMBER;
8623 lx_book_class_code VARCHAR2(30);
8624 lx_currency_conversion_type VARCHAR2(30);
8625 lx_currency_conversion_rate NUMBER;
8626 lx_currency_conversion_date DATE;
8627 lx_contract_start_date DATE;
8628
8629 l_name VARCHAR2(150);
8630 l_lse_id NUMBER;
8631 l_tax_code_count NUMBER;
8632 l_taxation_country VARCHAR2(2);
8633 l_ledger_id NUMBER;
8634 l_legal_entity_id NUMBER;
8635 l_inv_item_id NUMBER;
8636 l_inv_org_id NUMBER;
8637 l_org_id NUMBER;
8638 l_value_fetched BOOLEAN;
8639
8640 l_tbc_code VARCHAR2(240);
8641 l_ufc_code VARCHAR2(240);
8642 l_pc_code VARCHAR2(240);
8643 l_tax_class_code VARCHAR2(50);
8644 l_total_tax NUMBER;
8645
8646 BEGIN
8647 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8648 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax','Begin(+)');
8649 END IF;
8650
8651 -- Print Input Variables
8652 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8653 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8654 'p_init_msg_list :'||p_init_msg_list);
8655 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8656 'p_source_trx_id :'||p_source_trx_id);
8657 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8658 'p_source_trx_name :'||p_source_trx_name);
8659 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8660 'p_source_table :'||p_source_table);
8661 END IF;
8662
8663 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8664
8665 OPEN l_trxrequests_csr(p_source_trx_id, p_source_trx_name);
8666 FETCH l_trxrequests_csr INTO l_ts_khr_id, l_ts_start_date, l_ts_end_date,
8667 l_ts_trx_type_id_det, l_legal_entity_id, l_org_id;
8668 IF l_trxrequests_csr%NOTFOUND THEN
8669 -- source trx id is invalid
8670 OKC_API.set_message( p_app_name => 'OKC',
8671 p_msg_name => G_INVALID_VALUE,
8672 p_token1 => G_COL_NAME_TOKEN,
8673 p_token1_value => 'SOURCE_TRX_ID');
8674 RAISE OKL_API.G_EXCEPTION_ERROR;
8675 END IF;
8676 CLOSE l_trxrequests_csr;
8677
8678 -- Fetch the Ledger info
8679 l_ledger_id := okl_accounting_util.get_set_of_books_id;
8680
8681 -- Fetch the Tax country
8682 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
8683 x_msg_count => x_msg_count,
8684 x_msg_data => x_msg_data,
8685 p_legal_entity_id => l_legal_entity_id);
8686
8687 -- Get K header level tax parameters
8688 get_k_hdr_tax_params(
8689 p_api_version => p_api_version,
8690 p_init_msg_list => OKC_API.G_FALSE,
8691 x_return_status => x_return_status,
8692 x_msg_count => x_msg_count,
8693 x_msg_data => x_msg_data,
8694 p_khr_id => l_ts_khr_id,
8695 p_source_trx_name => p_source_trx_name,
8696 p_source_table => p_source_table,
8697 x_cust_acct_id => l_cust_acct_id,
8698 x_bill_to_siteuseid => lx_bill_to_siteuseid,
8699 x_currency_code => l_currency_code,
8700 x_cust_trx_type_id => l_cust_trx_type_id,
8701 x_precision => l_precision,
8702 x_minimum_accountable_unit => l_minimum_accountable_unit,
8703 x_prch_opt_det => l_ts_prch_opt_det,
8704 x_fin_prod_id_det => l_ts_fin_prod_id_det,
8705 x_int_disclosed_det => l_ts_int_disclosed_det,
8706 x_org_id => lx_org_id,
8707 x_book_class_code => lx_book_class_code,
8708 x_bill_to_party_site_id => lx_bill_to_party_site_id,
8709 x_bill_to_party_id => lx_bill_to_party_id,
8710 x_bill_to_location_id => lx_bill_to_location_id,
8711 x_currency_conversion_type => lx_currency_conversion_type,
8712 x_currency_conversion_rate => lx_currency_conversion_rate,
8713 x_currency_conversion_date => lx_currency_conversion_date,
8714 x_contract_start_date => lx_contract_start_date);
8715
8716 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8717 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8718 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8719 RAISE OKL_API.G_EXCEPTION_ERROR;
8720 END IF;
8721
8722 --------------- Process Billed Stream elements - Start -------------------
8723
8724 -- Check if any of the stream elements between the given date range are
8725 -- billed (under old/new solution) If so, insert already calculated tax
8726 -- lines into tax sources and tax trx details with trx type of
8727 -- 'Tax Schedule' If Billed under new solution, then tax would have been
8728 -- calculated under 'Billing' transaction type and tax lines inserted into
8729 -- okl_tax_sources/okl_tax_trx_detials. Insert these tax lines back into tax
8730 -- sources/tax trx details with transaction type of 'Tax Schedule'
8731
8732 l_bill_ts_tx_src_cnt := 0;
8733 l_bill_ts_tx_src_tbl.DELETE;
8734 OPEN c_k_billed_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
8735 LOOP
8736 l_k_billed_streams_tbl.DELETE;
8737 FETCH c_k_billed_streams_csr BULK COLLECT INTO l_k_billed_streams_tbl LIMIT l_fetch_size;
8738
8739 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8740 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8741 'l_k_billed_streams_tbl.COUNT '||l_k_billed_streams_tbl.COUNT);
8742 END IF;
8743
8744 IF l_k_billed_streams_tbl.COUNT > 0 THEN
8745
8746 l_tax_sources_tbl.DELETE;
8747 l_tax_trx_details_tbl.DELETE;
8748 i := 1;
8749 FOR k IN l_k_billed_streams_tbl.FIRST..l_k_billed_streams_tbl.LAST LOOP
8750
8751 l_total_tax := 0;
8752
8753 OPEN l_get_zx_taxable_line_info(l_k_billed_streams_tbl(k).customer_trx_id, l_k_billed_streams_tbl(k).customer_trx_line_id);
8754 FETCH l_get_zx_taxable_line_info INTO l_get_zx_taxable_line_info_rec;
8755 IF l_get_zx_taxable_line_info%NOTFOUND THEN -- data should exist in the billing tables
8756 --SECHAWLA 22-APR-08 6975983 : begin
8757 --SECHAWLA 22-APR-08 6975983 : shouldn't fail if no tax calculated in eBTax for AR Invoice
8758 /*
8759 OKL_API.set_message( p_app_name => 'OKL',
8760 p_msg_name => 'OKL_TX_NO_BILLING_INFO');
8761 RAISE OKL_API.G_EXCEPTION_ERROR;
8762 */
8763 -- In scenario where there is no tax in eBTax for billed AR invoices (stream elements),
8764 -- Tax determinants can not be derived. Tax determinants are passed to AR through Ar Interface
8765 -- But these are not stored in actual AR tables. When AR makes tax call to eBTax, these determinants
8766 -- are passed to ebTax and stored in eBTax. Since in this case, there is no data in eBTax tables,
8767 -- it is not possible to derive these values. Hence storing Null values
8768 l_get_zx_taxable_line_info_rec.trx_business_category := NULL;
8769 l_get_zx_taxable_line_info_rec.product_category := NULL;
8770 l_get_zx_taxable_line_info_rec.user_defined_fisc_class := NULL;
8771 l_get_zx_taxable_line_info_rec.line_intended_use := NULL;
8772 l_get_zx_taxable_line_info_rec.input_tax_classification_code := NULL;
8773 l_get_zx_taxable_line_info_rec.product_type := NULL;
8774 l_get_zx_taxable_line_info_rec.product_fisc_classification := NULL;
8775
8776
8777 l_get_zx_taxable_line_info_rec.internal_organization_id := l_org_id;
8778 l_get_zx_taxable_line_info_rec.legal_entity_id := l_legal_entity_id;
8779
8780 l_get_zx_taxable_line_info_rec.line_amt := l_k_billed_streams_tbl(k).sel_amount;
8781 l_get_zx_taxable_line_info_rec.taxable_amt := l_k_billed_streams_tbl(k).sel_amount;
8782
8783 l_get_zx_taxable_line_info_rec.trx_date := l_k_billed_streams_tbl(k).sel_date;
8784
8785 l_get_zx_taxable_line_info_rec.tax_determine_date := NULL;
8786
8787 l_get_zx_taxable_line_info_rec.trx_currency_code := l_currency_code;
8788 l_get_zx_taxable_line_info_rec.currency_conversion_type := NULL;
8789 l_get_zx_taxable_line_info_rec.currency_conversion_rate := NULL;
8790 l_get_zx_taxable_line_info_rec.currency_conversion_date := NULL;
8791 --SECHAWLA 22-APR-08 6975983 : end
8792 END IF;
8793 CLOSE l_get_zx_taxable_line_info;
8794
8795 OPEN l_get_zx_total_tax(l_k_billed_streams_tbl(k).customer_trx_id, l_k_billed_streams_tbl(k).customer_trx_line_id);
8796 FETCH l_get_zx_total_tax INTO l_total_tax;
8797 CLOSE l_get_zx_total_tax;
8798
8799 IF (l_k_billed_streams_tbl(k).kle_id IS NOT NULL) THEN
8800 OPEN l_okclines_csr(l_k_billed_streams_tbl(k).kle_id);
8801 FETCH l_okclines_csr INTO l_name, l_lse_id;
8802 CLOSE l_okclines_csr;
8803 END IF;
8804
8805 -- populate tax sources table with transaction type of 'Tax Schedule'
8806 l_tax_sources_tbl(k).id := get_seq_id;
8807 l_tax_sources_tbl(k).kle_id := l_k_billed_streams_tbl(k).kle_id;
8808 l_tax_sources_tbl(k).khr_id := l_ts_khr_id;
8809
8810 IF (l_lse_id = 33) THEN
8811 l_tax_sources_tbl(k).asset_number := l_name;
8812 END IF;
8813
8814 l_tax_sources_tbl(k).trx_id := p_source_trx_id;
8815 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
8816 l_tax_sources_tbl(k).entity_code := G_TAX_SCH_ENTITY_CODE;
8817 l_tax_sources_tbl(k).event_class_code := G_TAX_SCHEDULE;
8818 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
8819 l_tax_sources_tbl(k).adjusted_doc_entity_code := null;
8820 l_tax_sources_tbl(k).adjusted_doc_event_class_code := null;
8821 l_tax_sources_tbl(k).adjusted_doc_trx_id := null;
8822 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := null;
8823 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := null;
8824 l_tax_sources_tbl(k).adjusted_doc_number := null;
8825 l_tax_sources_tbl(k).adjusted_doc_date := null;
8826 l_tax_sources_tbl(k).tax_call_type_code := G_TAX_SCHEDULE;
8827 l_tax_sources_tbl(k).sty_id := l_k_billed_streams_tbl(k).sty_id;
8828 l_tax_sources_tbl(k).trx_business_category := l_get_zx_taxable_line_info_rec.trx_business_category;
8829 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
8830 l_tax_sources_tbl(k).sel_id := l_k_billed_streams_tbl(k).sel_id;
8831 l_tax_sources_tbl(k).reported_yn := 'Y';
8832 l_tax_sources_tbl(k).program_id := null;
8833 l_tax_sources_tbl(k).request_id := null;
8834 l_tax_sources_tbl(k).program_application_id := null;
8835 l_tax_sources_tbl(k).program_update_date := null;
8836 l_tax_sources_tbl(k).attribute_category := null;
8837
8838 l_tax_sources_tbl(k).attribute1 := null;
8839 l_tax_sources_tbl(k).attribute2 := null;
8840 l_tax_sources_tbl(k).attribute3 := null;
8841 l_tax_sources_tbl(k).attribute4 := null;
8842 l_tax_sources_tbl(k).attribute5 := null;
8843 l_tax_sources_tbl(k).attribute6 := null;
8844 l_tax_sources_tbl(k).attribute7 := null;
8845 l_tax_sources_tbl(k).attribute8 := null;
8846 l_tax_sources_tbl(k).attribute9 := null;
8847 l_tax_sources_tbl(k).attribute10 := null;
8848 l_tax_sources_tbl(k).attribute11 := null;
8849 l_tax_sources_tbl(k).attribute12 := null;
8850 l_tax_sources_tbl(k).attribute13 := null;
8851 l_tax_sources_tbl(k).attribute14 := null;
8852 l_tax_sources_tbl(k).attribute15 := null;
8853 l_tax_sources_tbl(k).created_by := G_USER_ID;
8854 l_tax_sources_tbl(k).creation_date := SYSDATE;
8855 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
8856 l_tax_sources_tbl(k).last_update_date := SYSDATE;
8857 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
8858 l_tax_sources_tbl(k).object_version_number := null;
8859
8860 l_tax_sources_tbl(k).line_name := l_name;
8861 l_tax_sources_tbl(k).application_id := G_OKL_APPLICATION_ID;
8862 l_tax_sources_tbl(k).tax_reporting_flag := 'Y';
8863 l_tax_sources_tbl(k).default_taxation_country := l_taxation_country;
8864 l_tax_sources_tbl(k).product_category := l_get_zx_taxable_line_info_rec.product_category;
8865 l_tax_sources_tbl(k).user_defined_fisc_class := l_get_zx_taxable_line_info_rec.user_defined_fisc_class;
8866 l_tax_sources_tbl(k).line_intended_use := l_get_zx_taxable_line_info_rec.line_intended_use;
8867 l_tax_sources_tbl(k).tax_classification_code := l_get_zx_taxable_line_info_rec.input_tax_classification_code;
8868 l_tax_sources_tbl(k).inventory_item_id := null;
8869 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_cust_acct_id;
8870 l_tax_sources_tbl(k).org_id := l_get_zx_taxable_line_info_rec.internal_organization_id;
8871 l_tax_sources_tbl(k).legal_entity_id := l_get_zx_taxable_line_info_rec.legal_entity_id;
8872 l_tax_sources_tbl(k).line_amt := l_get_zx_taxable_line_info_rec.line_amt;
8873 l_tax_sources_tbl(k).assessable_value := l_get_zx_taxable_line_info_rec.taxable_amt;
8874
8875 l_tax_sources_tbl(k).total_tax := l_total_tax;
8876 l_tax_sources_tbl(k).trx_date := l_get_zx_taxable_line_info_rec.trx_date;
8877 l_tax_sources_tbl(k).try_id := l_ts_trx_type_id_det ; --SECHAWLA 22-APR-08 6975983 --null;
8878
8879 l_tax_sources_tbl(k).product_type := l_get_zx_taxable_line_info_rec.product_type;
8880 l_tax_sources_tbl(k).product_fisc_classification := l_get_zx_taxable_line_info_rec.product_fisc_classification;
8881 l_tax_sources_tbl(k).provnl_tax_determination_date := l_get_zx_taxable_line_info_rec.tax_determine_date;
8882 l_tax_sources_tbl(k).ship_to_location_id := null;
8883 l_tax_sources_tbl(k).ship_to_party_site_id := null;
8884 l_tax_sources_tbl(k).ship_to_party_id := null;
8885 l_tax_sources_tbl(k).bill_to_party_site_id := null;
8886 l_tax_sources_tbl(k).bill_to_location_id := null;
8887 l_tax_sources_tbl(k).bill_to_party_id := null;
8888 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := null;
8889 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := null;
8890 l_tax_sources_tbl(k).trx_currency_code := l_get_zx_taxable_line_info_rec.trx_currency_code;
8891 l_tax_sources_tbl(k).currency_conversion_type := l_get_zx_taxable_line_info_rec.currency_conversion_type;
8892 l_tax_sources_tbl(k).currency_conversion_rate := l_get_zx_taxable_line_info_rec.currency_conversion_rate;
8893 l_tax_sources_tbl(k).currency_conversion_date := l_get_zx_taxable_line_info_rec.currency_conversion_date;
8894
8895 -- Populate Tax trx details for each tax source
8896 FOR l_get_zx_tax_lines_rec IN l_get_zx_tax_lines(l_k_billed_streams_tbl(k).customer_trx_id,
8897 l_k_billed_streams_tbl(k).customer_trx_line_id) LOOP
8898
8899 l_tax_trx_details_tbl(i).id := get_seq_id;
8900 l_tax_trx_details_tbl(i).txs_id := l_tax_sources_tbl(k).id;
8901 l_tax_trx_details_tbl(i).tax_determination_date := l_get_zx_tax_lines_rec.tax_determine_date;
8902 l_tax_trx_details_tbl(i).tax_rate_id := l_get_zx_tax_lines_rec.tax_rate_id;
8903 l_tax_trx_details_tbl(i).tax_rate_code := l_get_zx_tax_lines_rec.tax_rate_code;
8904 l_tax_trx_details_tbl(i).taxable_amount := l_get_zx_tax_lines_rec.taxable_amt;
8905 l_tax_trx_details_tbl(i).tax_exemption_id := l_get_zx_tax_lines_rec.tax_exemption_id;
8906 l_tax_trx_details_tbl(i).tax_rate := l_get_zx_tax_lines_rec.tax_rate;
8907 l_tax_trx_details_tbl(i).tax_amount := l_get_zx_tax_lines_rec.tax_amt;
8908
8909 l_tax_trx_details_tbl(i).tax_date := l_get_zx_tax_lines_rec.tax_date;
8910 l_tax_trx_details_tbl(i).line_amt := l_get_zx_tax_lines_rec.line_amt;
8911 l_tax_trx_details_tbl(i).internal_organization_id := l_get_zx_tax_lines_rec.internal_organization_id;
8912 l_tax_trx_details_tbl(i).application_id := l_get_zx_tax_lines_rec.application_id;
8913 l_tax_trx_details_tbl(i).entity_code := l_get_zx_tax_lines_rec.entity_code;
8914 l_tax_trx_details_tbl(i).event_class_code := l_get_zx_tax_lines_rec.event_class_code;
8915 l_tax_trx_details_tbl(i).event_type_code := l_get_zx_tax_lines_rec.event_type_code;
8916 l_tax_trx_details_tbl(i).trx_id := l_tax_sources_tbl(k).trx_id;
8917 l_tax_trx_details_tbl(i).trx_line_id := l_tax_sources_tbl(k).trx_line_id;
8918 l_tax_trx_details_tbl(i).trx_level_type := l_get_zx_tax_lines_rec.trx_level_type;
8919 l_tax_trx_details_tbl(i).trx_line_number := l_get_zx_tax_lines_rec.trx_line_number;
8920 l_tax_trx_details_tbl(i).tax_line_number := l_get_zx_tax_lines_rec.tax_line_number;
8921 l_tax_trx_details_tbl(i).tax_regime_id := l_get_zx_tax_lines_rec.tax_regime_id;
8922 l_tax_trx_details_tbl(i).tax_regime_code := l_get_zx_tax_lines_rec.tax_regime_code;
8923 l_tax_trx_details_tbl(i).tax_id := l_get_zx_tax_lines_rec.tax_id;
8924 l_tax_trx_details_tbl(i).tax := l_get_zx_tax_lines_rec.tax;
8925 l_tax_trx_details_tbl(i).tax_status_id := l_get_zx_tax_lines_rec.tax_status_id;
8926 l_tax_trx_details_tbl(i).tax_status_code := l_get_zx_tax_lines_rec.tax_status_code;
8927 l_tax_trx_details_tbl(i).tax_apportionment_line_number := l_get_zx_tax_lines_rec.tax_apportionment_line_number;
8928 l_tax_trx_details_tbl(i).legal_entity_id := l_get_zx_tax_lines_rec.legal_entity_id;
8929 l_tax_trx_details_tbl(i).trx_number := l_get_zx_tax_lines_rec.trx_number;
8930 l_tax_trx_details_tbl(i).trx_date := l_get_zx_tax_lines_rec.trx_date;
8931 l_tax_trx_details_tbl(i).tax_jurisdiction_id := l_get_zx_tax_lines_rec.tax_jurisdiction_id;
8932 l_tax_trx_details_tbl(i).tax_jurisdiction_code := l_get_zx_tax_lines_rec.tax_jurisdiction_code;
8933 l_tax_trx_details_tbl(i).tax_type_code := l_get_zx_tax_lines_rec.tax_type_code;
8934 l_tax_trx_details_tbl(i).tax_currency_code := l_get_zx_tax_lines_rec.tax_currency_code;
8935 l_tax_trx_details_tbl(i).taxable_amt_tax_curr := l_get_zx_tax_lines_rec.taxable_amt_tax_curr;
8936 l_tax_trx_details_tbl(i).trx_currency_code := l_get_zx_tax_lines_rec.trx_currency_code;
8937 l_tax_trx_details_tbl(i).minimum_accountable_unit := l_get_zx_tax_lines_rec.minimum_accountable_unit;
8938 l_tax_trx_details_tbl(i).precision := l_get_zx_tax_lines_rec.precision;
8939 l_tax_trx_details_tbl(i).currency_conversion_type := l_get_zx_tax_lines_rec.currency_conversion_type;
8940 l_tax_trx_details_tbl(i).currency_conversion_rate := l_get_zx_tax_lines_rec.currency_conversion_rate;
8941 l_tax_trx_details_tbl(i).currency_conversion_date := l_get_zx_tax_lines_rec.currency_conversion_date;
8942
8943 -- columns for backward compatibility
8944 l_tax_trx_details_tbl(i).tax_determine_date := l_get_zx_tax_lines_rec.tax_determine_date;
8945 l_tax_trx_details_tbl(i).taxable_amt := l_get_zx_tax_lines_rec.taxable_amt;
8946 l_tax_trx_details_tbl(i).tax_amt := l_get_zx_tax_lines_rec.tax_amt;
8947 l_tax_trx_details_tbl(i).billed_yn := 'Y'; -- tax lines calculated by tax engine are not billed
8948 l_tax_trx_details_tbl(i).tax_call_type_code := G_TAX_SCHEDULE;
8949
8950 l_tax_trx_details_tbl(i).program_id := null;
8951 l_tax_trx_details_tbl(i).request_id := null;
8952 l_tax_trx_details_tbl(i).program_application_id := null;
8953 l_tax_trx_details_tbl(i).program_update_date := null;
8954 l_tax_trx_details_tbl(i).attribute_category := null;
8955 l_tax_trx_details_tbl(i).attribute1 := null;
8956 l_tax_trx_details_tbl(i).attribute2 := null;
8957 l_tax_trx_details_tbl(i).attribute3 := null;
8958 l_tax_trx_details_tbl(i).attribute4 := null;
8959 l_tax_trx_details_tbl(i).attribute5 := null;
8960 l_tax_trx_details_tbl(i).attribute6 := null;
8961 l_tax_trx_details_tbl(i).attribute7 := null;
8962 l_tax_trx_details_tbl(i).attribute8 := null;
8963 l_tax_trx_details_tbl(i).attribute9 := null;
8964 l_tax_trx_details_tbl(i).attribute10 := null;
8965 l_tax_trx_details_tbl(i).attribute11 := null;
8966 l_tax_trx_details_tbl(i).attribute12 := null;
8967 l_tax_trx_details_tbl(i).attribute13 := null;
8968 l_tax_trx_details_tbl(i).attribute14 := null;
8969 l_tax_trx_details_tbl(i).attribute15 := null;
8970 l_tax_trx_details_tbl(i).created_by := G_USER_ID;
8971 l_tax_trx_details_tbl(i).creation_date := SYSDATE;
8972 l_tax_trx_details_tbl(i).last_updated_by := G_USER_ID;
8973 l_tax_trx_details_tbl(i).last_update_date := SYSDATE;
8974 l_tax_trx_details_tbl(i).last_update_login := G_LOGIN_ID;
8975 l_tax_trx_details_tbl(i).object_version_number := null;
8976
8977 i := i + 1;
8978 END LOOP;
8979
8980 END LOOP;
8981 END IF;
8982 EXIT WHEN c_k_billed_streams_csr%NOTFOUND;
8983 END LOOP;
8984 CLOSE c_k_billed_streams_csr;
8985
8986 -- At this point l_tax_sources_tbl and l_tax_trx_details_tbl tables have
8987 -- all the data for the billed stream elements
8988
8989 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8990 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8991 'before Insert into okl_tax_sources ');
8992 END IF;
8993
8994 ---- Insert into okl_tax_sources begin -----
8995 BEGIN
8996 IF l_tax_sources_tbl.COUNT > 0 THEN
8997 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
8998 -- SAVE EXCEPTIONS
8999 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
9000 END IF;
9001 EXCEPTION
9002 WHEN OTHERS THEN
9003 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
9004 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
9005 OKL_API.set_message(p_app_name => 'OKL',
9006 p_msg_name => 'OKL_TX_TRX_INS_ERR',
9007 p_token1 => 'TABLE_NAME',
9008 p_token1_value => 'OKL_TAX_SOURCES',
9009 p_token2 => 'ERROR_CODE',
9010 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
9011 p_token3 => 'ITERATION',
9012 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
9013 END LOOP;
9014 RAISE OKL_API.G_EXCEPTION_ERROR;
9015 END IF;
9016 END;
9017 ---- Insert into okl_tax_sources end -----
9018
9019 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9020 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9021 'before Insert into okl_tax_trx_details ');
9022 END IF;
9023
9024 ---- Insert into okl_tax_trx_details begin -----
9025 BEGIN
9026 IF l_tax_trx_details_tbl.COUNT > 0 THEN
9027 FORALL indx IN l_tax_trx_details_tbl.FIRST..l_tax_trx_details_tbl.LAST
9028 -- SAVE EXCEPTIONS
9029 INSERT INTO okl_tax_trx_details VALUES l_tax_trx_details_tbl(indx);
9030 END IF;
9031 EXCEPTION
9032 WHEN OTHERS THEN
9033 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
9034 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
9035 OKL_API.set_message(p_app_name => 'OKL',
9036 p_msg_name => 'OKL_TX_TRX_INS_ERR',
9037 p_token1 => 'TABLE_NAME',
9038 p_token1_value => 'OKL_TAX_TRX_DETAILS',
9039 p_token2 => 'ERROR_CODE',
9040 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
9041 p_token3 => 'ITERATION',
9042 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
9043 END LOOP;
9044 RAISE OKL_API.G_EXCEPTION_ERROR;
9045 END IF;
9046 END;
9047
9048 ---- Insert into okl_tax_trx_details end -----
9049
9050 -- At this point tax sources and tax trx details have been created for the already billed
9051 -- and taxed stream elements under transaction type 'Tax Schedule'
9052
9053 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9054 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9055 'Process Billed Stream elements end ');
9056 END IF;
9057 --------------- Process Billed Stream elements - End -------------------
9058
9059 -----------------Process Unbilled Stream elements - Start --------------
9060 OPEN c_k_unbilled_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
9061 FETCH c_k_unbilled_streams_csr INTO l_K_unbilled_streams_rec;
9062 IF c_k_unbilled_streams_csr%FOUND THEN
9063 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9064 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9065 'l_unbilled_strms_exist = TRUE ');
9066 END IF;
9067
9068 l_unbilled_strms_exist := TRUE;
9069 END IF;
9070 CLOSE c_k_unbilled_streams_csr;
9071
9072 IF (l_unbilled_strms_exist) THEN -- Processing for Unbilled streams - Start
9073
9074 -------------- Get financial asset line level TBC Determinants ---------------
9075 i := 0;
9076 OPEN l_finassets_csr(l_ts_khr_id);
9077 LOOP
9078 l_finassets_tbl.DELETE;
9079 FETCH l_finassets_csr BULK COLLECT INTO l_finassets_tbl LIMIT l_fetch_size;
9080
9081 IF l_finassets_tbl.COUNT > 0 THEN
9082 FOR K IN l_finassets_tbl.FIRST..l_finassets_tbl.LAST LOOP
9083
9084 get_asset_tax_params(
9085 p_api_version => p_api_version,
9086 p_init_msg_list => OKC_API.G_FALSE,
9087 x_return_status => x_return_status,
9088 x_msg_count => x_msg_count,
9089 x_msg_data => x_msg_data,
9090 p_khr_id => l_ts_khr_id,
9091 p_kle_id => l_finassets_tbl(k).fin_asset_id,
9092 p_source_trx_name => p_source_trx_name,
9093 p_source_table => p_source_table,
9094 x_transfer_of_title => l_ts_transfer_of_title,
9095 x_sale_lease_back => l_ts_sale_lease_back,
9096 x_purchase_of_lease => l_ts_purchase_of_lease,
9097 x_usage_of_equipment => l_ts_usage_of_equipment,
9098 x_age_of_equipment => l_ts_age_of_equipment,
9099 x_vendor_site_id => l_ts_vendor_site_id);
9100
9101 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9102 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9103 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9104 RAISE OKL_API.G_EXCEPTION_ERROR;
9105 END IF;
9106
9107 l_ts_asset_level_det_tbl(i).fin_asset_id := l_finassets_tbl(k).fin_asset_id;
9108 l_ts_asset_level_det_tbl(i).transfer_of_title := l_ts_transfer_of_title;
9109 l_ts_asset_level_det_tbl(i).sale_lease_back := l_ts_sale_lease_back;
9110 l_ts_asset_level_det_tbl(i).purchase_of_lease := l_ts_purchase_of_lease;
9111 l_ts_asset_level_det_tbl(i).usage_of_equipment := l_ts_usage_of_equipment;
9112 l_ts_asset_level_det_tbl(i).vendor_site_id := l_ts_vendor_site_id;
9113 l_ts_asset_level_det_tbl(i).age_of_equipment := l_ts_age_of_equipment;
9114
9115 i := i + 1;
9116 END LOOP;
9117 END IF;
9118 EXIT WHEN l_finassets_csr%NOTFOUND;
9119 END LOOP;
9120 CLOSE l_finassets_csr;
9121
9122 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9123 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9124 'after hdr level and asset level determinant fetch ');
9125 END IF;
9126
9127 -------- Get all codes at stream type level (for each unique combination of K/Line and stream type) -----------
9128
9129 OPEN l_kstreamtypes_csr(l_ts_khr_id);
9130 LOOP
9131 l_kstreamtypes_tbl.DELETE;
9132 FETCH l_kstreamtypes_csr BULK COLLECT INTO l_kstreamtypes_tbl LIMIT l_fetch_size;
9133
9134 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9135 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9136 'l_kstreamtypes_tbl.COUNT '||l_kstreamtypes_tbl.COUNT);
9137 END IF;
9138
9139 IF l_kstreamtypes_tbl.COUNT > 0 THEN
9140
9141 l_tax_code_count := 1;
9142 lx_tax_codes_tbl.DELETE;
9143 FOR K IN l_kstreamtypes_tbl.FIRST..l_kstreamtypes_tbl.LAST LOOP
9144
9145 IF (l_kstreamtypes_tbl(k).line_id IS NULL OR
9146 l_kstreamtypes_tbl(k).lty_code IN ('SOLD_SERVICE', 'FEE')) THEN
9147
9148 -- K level stream or service/fee line level stream
9149 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9150 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9151 'hdr level OR Service/Fee Line level ');
9152 END IF;
9153
9154 l_vendor_id := NULL;
9155 l_ts_vendor_site_id := NULL;
9156
9157 -- Vendor site is applicable for fin asset / service / fee lines / sublines
9158 -- Vendor site is not applicable at the K level
9159 IF l_kstreamtypes_tbl(k).line_id IS NOT NULL THEN -- service or fee line
9160 -- Check if multiple vendors exist. If so, vendor location is
9161 -- not a determinant, get the service / fee line Vendor
9162 l_vndr_cnt := 0;
9163
9164 FOR l_partyroles_rec IN l_partyroles_csr(l_kstreamtypes_tbl(k).line_id) LOOP -- pass top service/fee line id
9165 l_vndr_cnt := l_vndr_cnt + 1;
9166 l_vendor_id := l_partyroles_rec.object1_id1; -- vendor is optional
9167 END LOOP;
9168
9169 IF l_vndr_cnt = 1 AND l_vendor_id IS NOT NULL THEN
9170 -- get the primary pay vendor site (if defined) from AP
9171 OPEN l_povendorsites_csr(l_vendor_id);
9172 FETCH l_povendorsites_csr INTO l_ts_vendor_site_id; -- will be null if none of the sites are checked as primary
9173 CLOSE l_povendorsites_csr;
9174 END IF;
9175 END IF;
9176
9177 populate_tax_codes( p_api_version => p_api_version,
9178 p_init_msg_list => OKC_API.G_FALSE,
9179 x_return_status => x_return_status,
9180 x_msg_count => x_msg_count,
9181 x_msg_data => x_msg_data,
9182 p_prch_opt_det => l_ts_prch_opt_det,
9183 p_fin_prod_id_det => l_ts_fin_prod_id_det,
9184 p_int_disclosed_det => l_ts_int_disclosed_det,
9185 p_title_trnsfr_code => null,
9186 p_sale_lease_back_code => null,
9187 p_lease_purchased_code => null,
9188 p_equip_usage_code => null,
9189 p_vendor_site_id => l_ts_vendor_site_id,
9190 p_age_of_equip => null,
9191 p_source_trx_name => p_source_trx_name,
9192 p_book_class_code => lx_book_class_code,
9193 p_tax_code_cnt => l_tax_code_count,
9194 p_sty_id => l_kstreamtypes_tbl(k).stream_type_id,
9195 p_try_id => l_ts_trx_type_id_det,
9196 p_tax_country_code => l_taxation_country,
9197 p_khr_id => l_ts_khr_id,
9198 p_kle_id => l_kstreamtypes_tbl(k).line_id,
9199 p_bill_to_party_site_id => lx_bill_to_party_site_id,
9200 p_bill_to_location_id => lx_bill_to_location_id,
9201 p_bill_to_party_id => lx_bill_to_party_id,
9202 p_bill_to_cust_acct_site_id => lx_bill_to_siteuseid,
9203 p_org_id => l_org_id,
9204 p_trx_date => l_ts_start_date,
9205 px_tax_codes_tbl => lx_tax_codes_tbl);
9206
9207 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9208 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9209 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9210 RAISE OKL_API.G_EXCEPTION_ERROR;
9211 END IF;
9212
9213 l_tax_code_count := l_tax_code_count + 1;
9214
9215 ELSIF l_kstreamtypes_tbl(k).lty_code IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
9216 -- Asset level stream or service/fee sub line level stream
9217
9218 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9219 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9220 'asset / service subline / fee subline level ');
9221 END IF;
9222
9223 IF l_kstreamtypes_tbl(k).lty_code = 'FREE_FORM1' THEN
9224 l_fin_asset_id := l_kstreamtypes_tbl(k).line_id;
9225 ELSE
9226 -- If subline level, get the attached fin asset id
9227 OPEN l_finasset_csr(l_kstreamtypes_tbl(k).line_id, l_kstreamtypes_tbl(k).lty_code);
9228 FETCH l_finasset_csr INTO l_fin_asset_id;
9229 CLOSE l_finasset_csr;
9230 END IF;
9231
9232 IF l_ts_asset_level_det_tbl.count > 0 THEN
9233 ind := l_ts_asset_level_det_tbl.FIRST;
9234 LOOP
9235
9236 IF l_ts_asset_level_det_tbl(ind).fin_asset_id = l_fin_asset_id THEN
9237
9238 -- Equipment Type(inventory item id)
9239 -- get the inventory item id
9240 OPEN l_invitem_csr(l_fin_asset_id);
9241 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_org_id;
9242 IF l_invitem_csr%NOTFOUND THEN
9243 OKL_API.set_message(
9244 p_app_name => 'OKL',
9245 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
9246 p_token1 => 'ASSET_NUMBER',
9247 p_token1_value => 'FIN_ASSET_ID');
9248
9249 RAISE OKL_API.G_EXCEPTION_ERROR;
9250 END IF;
9251 CLOSE l_invitem_csr;
9252
9253 -- get the Location Party ID's
9254 get_location_party_ids(
9255 p_api_version => p_api_version,
9256 p_init_msg_list => OKC_API.G_FALSE,
9257 x_return_status => x_return_status,
9258 x_msg_count => x_msg_count,
9259 x_msg_data => x_msg_data,
9260 p_cust_acct_id => l_cust_acct_id,
9261 p_fin_asset_id => l_fin_asset_id,
9262 p_khr_id => l_ts_khr_id,
9263 x_bill_to_party_site_id => lx_bill_to_party_site_id,
9264 x_bill_to_location_id => lx_bill_to_location_id,
9265 x_bill_to_party_id => lx_bill_to_party_id,
9266 x_bill_to_site_use_id => lx_bill_to_siteuseid,
9267 x_ship_to_party_site_id => lx_ship_to_party_site_id,
9268 x_ship_to_location_id => lx_ship_to_location_id,
9269 x_ship_to_party_id => lx_ship_to_party_id,
9270 x_ship_to_site_use_id => lx_ship_to_siteuseid);
9271
9272 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9273 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9274 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9275 RAISE OKL_API.G_EXCEPTION_ERROR;
9276 END IF;
9277
9278 populate_tax_codes( p_api_version => p_api_version,
9279 p_init_msg_list => OKC_API.G_FALSE,
9280 x_return_status => x_return_status,
9281 x_msg_count => x_msg_count,
9282 x_msg_data => x_msg_data,
9283 p_prch_opt_det => l_ts_prch_opt_det,
9284 p_fin_prod_id_det => l_ts_fin_prod_id_det,
9285 p_int_disclosed_det => l_ts_int_disclosed_det,
9286 p_title_trnsfr_code => l_ts_asset_level_det_tbl(ind).transfer_of_title,
9287 p_sale_lease_back_code => l_ts_asset_level_det_tbl(ind).sale_lease_back,
9288 p_lease_purchased_code => l_ts_asset_level_det_tbl(ind).purchase_of_lease,
9289 p_equip_usage_code => l_ts_asset_level_det_tbl(ind).usage_of_equipment,
9290 p_vendor_site_id => l_ts_asset_level_det_tbl(ind).vendor_site_id,
9291 p_age_of_equip => l_ts_asset_level_det_tbl(ind).age_of_equipment,
9292 p_source_trx_name => p_source_trx_name,
9293 p_book_class_code => lx_book_class_code,
9294 p_tax_code_cnt => l_tax_code_count,
9295 p_sty_id => l_kstreamtypes_tbl(k).stream_type_id,
9296 p_try_id => l_ts_trx_type_id_det,
9297 p_tax_country_code => l_taxation_country,
9298 p_khr_id => l_ts_khr_id,
9299 p_kle_id => l_fin_asset_id,
9300 p_bill_to_party_site_id => lx_bill_to_party_site_id,
9301 p_bill_to_location_id => lx_bill_to_location_id,
9302 p_bill_to_party_id => lx_bill_to_party_id,
9303 p_bill_to_cust_acct_site_id => lx_bill_to_siteuseid,
9304 p_ship_to_party_site_id => lx_ship_to_party_site_id,
9305 p_ship_to_location_id => lx_ship_to_location_id,
9306 p_ship_to_party_id => lx_ship_to_party_id,
9307 p_ship_to_cust_acct_site_id => lx_ship_to_siteuseid,
9308 p_inventory_item_id => l_inv_item_id,
9309 p_org_id => l_org_id,
9310 p_trx_date => l_ts_start_date,
9311 px_tax_codes_tbl => lx_tax_codes_tbl);
9312
9313 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9314 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9315 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9316 RAISE OKL_API.G_EXCEPTION_ERROR;
9317 END IF;
9318
9319 l_tax_code_count := l_tax_code_count + 1;
9320
9321 EXIT;
9322 END IF;
9323
9324 EXIT WHEN (ind = l_ts_asset_level_det_tbl.LAST);
9325 ind := l_ts_asset_level_det_tbl.NEXT(ind);
9326 END LOOP;
9327 END IF;
9328 END IF;
9329
9330 END LOOP;
9331 END IF;
9332 EXIT WHEN l_kstreamtypes_csr%NOTFOUND;
9333 END LOOP;
9334 CLOSE l_kstreamtypes_csr;
9335
9336 -- Taxable Basis Override not allowed for Tax Schedule type of calls
9337
9338 l_tax_sources_tbl.DELETE;
9339 OPEN c_k_unbilled_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
9340 LOOP
9341 l_contract_streams_tbl.DELETE;
9342 FETCH c_k_unbilled_streams_csr BULK COLLECT INTO l_contract_streams_tbl LIMIT l_fetch_size;
9343
9344 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9345 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9346 'l_contract_streams_tbl.COUNT '||l_contract_streams_tbl.COUNT );
9347 END IF;
9348
9349 IF l_contract_streams_tbl.COUNT > 0 THEN
9350 -- insert each row into tax sources
9351 -- fill in the missing values IN l_contract_streams_tbl
9352 FOR K IN l_contract_streams_tbl.FIRST..l_contract_streams_tbl.LAST LOOP
9353
9354 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9355 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9356 'l_contract_streams_tbl(k).lty_code '||l_contract_streams_tbl(k).lty_code );
9357 END IF;
9358
9359 -- populate asset number for fin asset line / sublines
9360 IF l_contract_streams_tbl(k).lty_code IN ('FREE_FORM1','LINK_SERV_ASSET', 'LINK_FEE_ASSET') THEN
9361
9362 IF l_contract_streams_tbl(k).lty_code = 'FREE_FORM1' THEN
9363 l_asset_line_id := l_contract_streams_tbl(k).kle_id;
9364 ELSE -- Service subline or Fee subline
9365 --get the financial asset associated with the subline
9366
9367 -- see if pervious fetch fro aaatched asset id can be stored and used here instead of curosr fetch
9368 OPEN l_finasset_csr(l_contract_streams_tbl(k).kle_id, l_contract_streams_tbl(k).lty_code); -- contract_streams_tbl(k).kle_id is a subline here
9369 FETCH l_finasset_csr INTO l_asset_line_id;
9370 CLOSE l_finasset_csr;
9371 END IF;
9372
9373 l_contract_streams_tbl(k).asset_line_id := l_asset_line_id; -- populate asset id for subline as well
9374
9375 OPEN l_okclines_csr(l_asset_line_id);
9376 FETCH l_okclines_csr INTO l_name, l_lse_id;
9377 CLOSE l_okclines_csr;
9378
9379 l_contract_streams_tbl(k).asset_number := l_name;-- populate asset num for subline as well
9380
9381 get_location_party_ids(
9382 p_api_version => p_api_version,
9383 p_init_msg_list => OKC_API.G_FALSE,
9384 x_return_status => x_return_status,
9385 x_msg_count => x_msg_count,
9386 x_msg_data => x_msg_data,
9387 p_cust_acct_id => l_cust_acct_id,
9388 p_fin_asset_id => l_asset_line_id,
9389 p_khr_id => l_ts_khr_id,
9390 x_bill_to_party_site_id => lx_bill_to_party_site_id,
9391 x_bill_to_location_id => lx_bill_to_location_id,
9392 x_bill_to_party_id => lx_bill_to_party_id,
9393 x_bill_to_site_use_id => lx_bill_to_siteuseid,
9394 x_ship_to_party_site_id => lx_ship_to_party_site_id,
9395 x_ship_to_location_id => lx_ship_to_location_id,
9396 x_ship_to_party_id => lx_ship_to_party_id,
9397 x_ship_to_site_use_id => lx_ship_to_siteuseid);
9398
9399 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9400 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9401 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9402 RAISE OKL_API.G_EXCEPTION_ERROR;
9403 END IF;
9404
9405 l_contract_streams_tbl(k).ship_to_siteuseid := lx_ship_to_siteuseid;
9406
9407 -- get the inventory item id
9408 OPEN l_invitem_csr(l_asset_line_id);
9409 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
9410 IF l_invitem_csr%NOTFOUND THEN
9411 OKL_API.set_message(p_app_name => 'OKL',
9412 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
9413 p_token1 => 'ASSET_NUMBER',
9414 p_token1_value => l_asset_number);
9415 RAISE OKL_API.G_EXCEPTION_ERROR;
9416 END IF;
9417 CLOSE l_invitem_csr;
9418
9419 l_contract_streams_tbl(k).inventory_item_id := l_inv_item_id;
9420
9421 ELSE
9422 OPEN l_okclines_csr(l_contract_streams_tbl(k).kle_id);
9423 FETCH l_okclines_csr INTO l_name, l_lse_id;
9424 CLOSE l_okclines_csr;
9425 END IF;
9426
9427 -- Populate tax sources table with transaction type of 'Tax Schedule'
9428 l_tax_sources_tbl(k).id := get_seq_id;
9429 l_tax_sources_tbl(k).kle_id := l_contract_streams_tbl(k).kle_id;
9430 l_tax_sources_tbl(k).khr_id := l_ts_khr_id;
9431 l_tax_sources_tbl(k).asset_number := l_contract_streams_tbl(k).asset_number;
9432
9433 l_tax_sources_tbl(k).trx_id := p_source_trx_id;
9434 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
9435 l_tax_sources_tbl(k).entity_code := G_TAX_SCH_ENTITY_CODE;
9436 l_tax_sources_tbl(k).event_class_code := G_TAX_SCHEDULE;
9437 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
9438 l_tax_sources_tbl(k).adjusted_doc_entity_code := null;
9439 l_tax_sources_tbl(k).adjusted_doc_event_class_code := null;
9440 l_tax_sources_tbl(k).adjusted_doc_trx_id := null;
9441 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := null;
9442 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := null;
9443 l_tax_sources_tbl(k).adjusted_doc_number := null;
9444 l_tax_sources_tbl(k).adjusted_doc_date := null;
9445 l_tax_sources_tbl(k).tax_call_type_code := G_TAX_SCHEDULE;
9446 l_tax_sources_tbl(k).sty_id := l_contract_streams_tbl(k).stream_type_id;
9447
9448 l_value_fetched := FALSE;
9449 IF lx_tax_codes_tbl.COUNT > 0 THEN
9450 ind := lx_tax_codes_tbl.FIRST;
9451 LOOP
9452
9453 IF ((nvl(lx_tax_codes_tbl(ind).kle_id,-11) = nvl(l_contract_streams_tbl(k).kle_id,-11)) AND
9454 (lx_tax_codes_tbl(ind).sty_id = l_contract_streams_tbl(k).stream_type_id)) THEN
9455
9456 l_tbc_code := lx_tax_codes_tbl(ind).tbc_code;
9457 l_ufc_code := lx_tax_codes_tbl(ind).ufc_code;
9458 l_pc_code := lx_tax_codes_tbl(ind).pc_code;
9459 l_tax_class_code := lx_tax_codes_tbl(ind).tax_class_code;
9460
9461 EXIT;
9462 END IF;
9463
9464 EXIT WHEN (ind = lx_tax_codes_tbl.LAST);
9465 ind := lx_tax_codes_tbl.NEXT(ind);
9466 END LOOP;
9467 l_contract_streams_tbl(k).trx_business_category := l_contract_streams_tbc;
9468 END IF;
9469
9470 l_tax_sources_tbl(k).trx_business_category := l_tbc_code;
9471 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
9472 l_tax_sources_tbl(k).sel_id := l_contract_streams_tbl(k).sel_id;
9473 l_tax_sources_tbl(k).reported_yn := 'N';
9474 l_tax_sources_tbl(k).program_id := null;
9475 l_tax_sources_tbl(k).request_id := null;
9476 l_tax_sources_tbl(k).program_application_id := null;
9477 l_tax_sources_tbl(k).program_update_date := null;
9478 l_tax_sources_tbl(k).attribute_category := null;
9479
9480 l_tax_sources_tbl(k).attribute1 := null;
9481 l_tax_sources_tbl(k).attribute2 := null;
9482 l_tax_sources_tbl(k).attribute3 := null;
9483 l_tax_sources_tbl(k).attribute4 := null;
9484 l_tax_sources_tbl(k).attribute5 := null;
9485 l_tax_sources_tbl(k).attribute6 := null;
9486 l_tax_sources_tbl(k).attribute7 := null;
9487 l_tax_sources_tbl(k).attribute8 := null;
9488 l_tax_sources_tbl(k).attribute9 := null;
9489 l_tax_sources_tbl(k).attribute10 := null;
9490 l_tax_sources_tbl(k).attribute11 := null;
9491 l_tax_sources_tbl(k).attribute12 := null;
9492 l_tax_sources_tbl(k).attribute13 := null;
9493 l_tax_sources_tbl(k).attribute14 := null;
9494 l_tax_sources_tbl(k).attribute15 := null;
9495 l_tax_sources_tbl(k).created_by := G_USER_ID;
9496 l_tax_sources_tbl(k).creation_date := SYSDATE;
9497 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
9498 l_tax_sources_tbl(k).last_update_date := SYSDATE;
9499 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
9500 l_tax_sources_tbl(k).object_version_number := null;
9501
9502 l_tax_sources_tbl(k).line_name := l_name;
9503 l_tax_sources_tbl(k).application_id := G_OKL_APPLICATION_ID;
9504 l_tax_sources_tbl(k).tax_reporting_flag := 'N';
9505 l_tax_sources_tbl(k).default_taxation_country := l_taxation_country;
9506 l_tax_sources_tbl(k).product_category := l_pc_code;
9507 l_tax_sources_tbl(k).user_defined_fisc_class := l_ufc_code;
9508 l_tax_sources_tbl(k).line_intended_use := l_ts_age_of_equipment;
9509 l_tax_sources_tbl(k).tax_classification_code := l_tax_class_code;
9510 l_tax_sources_tbl(k).inventory_item_id := l_contract_streams_tbl(k).inventory_item_id;
9511 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_cust_acct_id;
9512 l_tax_sources_tbl(k).org_id := l_org_id;
9513 l_tax_sources_tbl(k).legal_entity_id := l_legal_entity_id;
9514 l_tax_sources_tbl(k).line_amt := l_contract_streams_tbl(k).amount;
9515 l_tax_sources_tbl(k).assessable_value := l_contract_streams_tbl(k).amount;
9516
9517 l_tax_sources_tbl(k).total_tax := null;
9518 l_tax_sources_tbl(k).trx_date := l_contract_streams_tbl(k).stream_element_date;
9519 l_tax_sources_tbl(k).try_id := l_ts_trx_type_id_det;
9520
9521 l_tax_sources_tbl(k).product_type := G_DEFAULT_PRODUCT_TYPE;
9522 l_tax_sources_tbl(k).product_fisc_classification := null;
9523 l_tax_sources_tbl(k).provnl_tax_determination_date := l_contract_streams_tbl(k).stream_element_date;
9524 l_tax_sources_tbl(k).ship_to_location_id := lx_ship_to_location_id;
9525 l_tax_sources_tbl(k).ship_to_party_site_id := lx_ship_to_party_site_id;
9526 l_tax_sources_tbl(k).ship_to_party_id := lx_ship_to_party_id;
9527 l_tax_sources_tbl(k).bill_to_party_site_id := lx_bill_to_party_site_id;
9528 l_tax_sources_tbl(k).bill_to_location_id := lx_bill_to_location_id;
9529 l_tax_sources_tbl(k).bill_to_party_id := lx_bill_to_party_id;
9530 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
9531 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
9532 l_tax_sources_tbl(k).trx_currency_code := l_currency_code;
9533 l_tax_sources_tbl(k).currency_conversion_type := lx_currency_conversion_type;
9534 l_tax_sources_tbl(k).currency_conversion_rate := lx_currency_conversion_rate;
9535 l_tax_sources_tbl(k).currency_conversion_date := lx_currency_conversion_date;
9536
9537 -- Populate Tax Trx Table to call 'calculate_tax'
9538 lx_line_params_tbl(k).application_id := G_OKL_APPLICATION_ID;
9539 lx_line_params_tbl(k).trx_id := p_source_trx_id;
9540 lx_line_params_tbl(k).internal_organization_id := l_org_id;
9541 lx_line_params_tbl(k).entity_code := l_tax_sources_tbl(k).entity_code;
9542 lx_line_params_tbl(k).event_class_code := l_tax_sources_tbl(k).event_class_code;
9543 lx_line_params_tbl(k).event_type_code := G_TAX_SCH_CRE_EVT_TYPE_CODE;
9544 lx_line_params_tbl(k).trx_date := l_tax_sources_tbl(k).trx_date;
9545 lx_line_params_tbl(k).ledger_id := l_ledger_id;
9546 lx_line_params_tbl(k).legal_entity_id := l_legal_entity_id;
9547 lx_line_params_tbl(k).trx_level_type := l_tax_sources_tbl(k).trx_level_type;
9548 lx_line_params_tbl(k).line_level_action := G_CREATE_LINE_LEVEL_ACTION;
9549
9550 lx_line_params_tbl(k).trx_line_id := l_tax_sources_tbl(k).trx_line_id;
9551
9552 lx_line_params_tbl(k).line_amt := l_tax_sources_tbl(k).line_amt;
9553 lx_line_params_tbl(k).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
9554 lx_line_params_tbl(k).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
9555 lx_line_params_tbl(k).product_type := l_tax_sources_tbl(k).product_type;
9556 lx_line_params_tbl(k).output_tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
9557 lx_line_params_tbl(k).assessable_value := l_tax_sources_tbl(k).line_amt;
9558 lx_line_params_tbl(k).receivables_trx_type_id := l_cust_trx_type_id;
9559 lx_line_params_tbl(k).product_id := l_tax_sources_tbl(k).inventory_item_id;
9560 lx_line_params_tbl(k).adjusted_doc_entity_code := null;
9561 lx_line_params_tbl(k).adjusted_doc_event_class_code := null;
9562 lx_line_params_tbl(k).adjusted_doc_trx_id := null;
9563 lx_line_params_tbl(k).adjusted_doc_line_id := null;
9564 lx_line_params_tbl(k).adjusted_doc_trx_level_type := null;
9565 lx_line_params_tbl(k).adjusted_doc_number := null;
9566 lx_line_params_tbl(k).adjusted_doc_date := null;
9567 lx_line_params_tbl(k).line_amt_includes_tax_flag := 'N';
9568
9569 lx_line_params_tbl(k).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
9570 lx_line_params_tbl(k).product_category := l_tax_sources_tbl(k).product_category;
9571 lx_line_params_tbl(k).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
9572 lx_line_params_tbl(k).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
9573 lx_line_params_tbl(k).ship_to_cust_acct_site_use_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
9574 lx_line_params_tbl(k).bill_to_cust_acct_site_use_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
9575 lx_line_params_tbl(k).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
9576 lx_line_params_tbl(k).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
9577 lx_line_params_tbl(k).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
9578 lx_line_params_tbl(k).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
9579 lx_line_params_tbl(k).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
9580 lx_line_params_tbl(k).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
9581 lx_line_params_tbl(k).rounding_ship_to_party_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
9582 lx_line_params_tbl(k).rounding_bill_to_party_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
9583 lx_line_params_tbl(k).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
9584 lx_line_params_tbl(k).precision := l_precision;
9585 lx_line_params_tbl(k).minimum_accountable_unit := l_minimum_accountable_unit;
9586 lx_line_params_tbl(k).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
9587 lx_line_params_tbl(k).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
9588 lx_line_params_tbl(k).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
9589
9590 END LOOP;
9591 END IF;
9592
9593 EXIT WHEN c_k_unbilled_streams_csr%NOTFOUND;
9594 END LOOP;
9595 CLOSE c_k_unbilled_streams_csr;
9596
9597 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9598 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9599 'before Insert into okl_tax_sources ');
9600 END IF;
9601
9602 ---- Insert into okl_tax_sources begin -----
9603 BEGIN
9604 IF l_tax_sources_tbl.COUNT > 0 THEN
9605 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
9606 -- SAVE EXCEPTIONS
9607 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
9608 END IF;
9609 EXCEPTION
9610 WHEN OTHERS THEN
9611 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
9612 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
9613 OKL_API.set_message(p_app_name => 'OKL',
9614 p_msg_name => 'OKL_TX_TRX_INS_ERR',
9615 p_token1 => 'TABLE_NAME',
9616 p_token1_value => 'OKL_TAX_SOURCES',
9617 p_token2 => 'ERROR_CODE',
9618 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
9619 p_token3 => 'ITERATION',
9620 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
9621 END LOOP;
9622 RAISE OKL_API.G_EXCEPTION_ERROR;
9623 END IF;
9624 END;
9625 ---- Insert into okl_tax_sources end -----
9626
9627 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9628 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9629 'lx_line_params_tbl.COUNT '||lx_line_params_tbl.COUNT);
9630 END IF;
9631
9632 IF lx_line_params_tbl.COUNT > 0 THEN
9633 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9634 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9635 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
9636 END IF;
9637
9638 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
9639 lp_hdr_params_rec.trx_id := p_source_trx_id;
9640 lp_hdr_params_rec.internal_organization_id := l_org_id;
9641 lp_hdr_params_rec.entity_code := G_TAX_SCH_ENTITY_CODE;
9642 lp_hdr_params_rec.event_class_code := G_TAX_SCHEDULE;
9643 lp_hdr_params_rec.event_type_code := G_TAX_SCH_CRE_EVT_TYPE_CODE;
9644 lp_hdr_params_rec.quote_flag := 'Y';
9645
9646 OKL_TAX_INTERFACE_PVT.calculate_tax(
9647 p_api_version => p_api_version,
9648 p_init_msg_list => p_init_msg_list,
9649 x_return_status => x_return_status,
9650 x_msg_count => x_msg_count,
9651 x_msg_data => x_msg_data,
9652 p_hdr_params_rec => lp_hdr_params_rec,
9653 p_line_params_tbl => lx_line_params_tbl);
9654
9655 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9656 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9657 'After tax engine call '||x_return_status);
9658 END IF;
9659
9660 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9661 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9662 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9663 RAISE OKL_API.G_EXCEPTION_ERROR;
9664 END IF;
9665 END IF;
9666
9667 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9668 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9669 'Calling "update_tax_sources_total" .. ');
9670 END IF;
9671
9672 update_tax_sources_total(p_api_version => p_api_version,
9673 p_init_msg_list => p_init_msg_list,
9674 x_return_status => x_return_status,
9675 x_msg_count => x_msg_count,
9676 x_msg_data => x_msg_data,
9677 p_source_trx_id => p_source_trx_id,
9678 p_source_trx_name => p_source_trx_name );
9679
9680 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9681 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9682 'Return Status' || x_return_status);
9683 END IF;
9684
9685 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9686 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9687 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9688 RAISE OKL_API.G_EXCEPTION_ERROR;
9689 END IF;
9690
9691 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9692 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9693 'Calling "copy_tax_trx_data" .. ');
9694 END IF;
9695
9696 copy_tax_trx_data ( p_api_version => p_api_version,
9697 p_init_msg_list => p_init_msg_list,
9698 x_return_status => x_return_status,
9699 x_msg_count => x_msg_count,
9700 x_msg_data => x_msg_data,
9701 p_trx_id => p_source_trx_id,
9702 p_entity_code => G_TAX_SCH_ENTITY_CODE,
9703 p_event_class_code => G_TAX_SCHEDULE,
9704 p_source_trx_name => p_source_trx_name);
9705
9706
9707 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9708 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9709 'Return Status' || x_return_status);
9710 END IF;
9711
9712 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9713 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9714 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9715 RAISE OKL_API.G_EXCEPTION_ERROR;
9716 END IF;
9717
9718 END IF; -- Processing for Unbilled streams - End
9719
9720 -----------------Process Unbilled Stream elements - End --------------
9721
9722 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9723 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ','End(-)');
9724 END IF;
9725
9726 EXCEPTION
9727 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9728 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9729 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9730 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
9731 END IF;
9732
9733 IF l_trxrequests_csr%ISOPEN THEN
9734 CLOSE l_trxrequests_csr;
9735 END IF;
9736
9737 IF c_k_unbilled_streams_csr%ISOPEN THEN
9738 CLOSE c_k_unbilled_streams_csr;
9739 END IF;
9740
9741 IF c_k_billed_streams_csr%ISOPEN THEN
9742 CLOSE c_k_billed_streams_csr;
9743 END IF;
9744
9745 IF l_txdarlndtls_csr%ISOPEN THEN
9746 CLOSE l_txdarlndtls_csr;
9747 END IF;
9748
9749 IF l_finassets_csr%ISOPEN THEN
9750 CLOSE l_finassets_csr;
9751 END IF;
9752
9753 IF l_okclines_csr%ISOPEN THEN
9754 CLOSE l_okclines_csr;
9755 END IF;
9756
9757 IF l_kstreamtypes_csr%ISOPEN THEN
9758 CLOSE l_kstreamtypes_csr;
9759 END IF;
9760
9761 IF l_finasset_csr%ISOPEN THEN
9762 CLOSE l_finasset_csr;
9763 END IF;
9764
9765 IF l_invitem_csr%ISOPEN THEN
9766 CLOSE l_invitem_csr;
9767 END IF;
9768
9769 IF l_partyroles_csr%ISOPEN THEN
9770 CLOSE l_partyroles_csr;
9771 END IF;
9772
9773 IF l_povendorsites_csr%ISOPEN THEN
9774 CLOSE l_povendorsites_csr;
9775 END IF;
9776
9777 IF l_get_zx_total_tax%ISOPEN THEN
9778 CLOSE l_get_zx_total_tax;
9779 END IF;
9780
9781 IF l_get_zx_taxable_line_info%ISOPEN THEN
9782 CLOSE l_get_zx_taxable_line_info;
9783 END IF;
9784
9785 IF l_get_zx_tax_lines%ISOPEN THEN
9786 CLOSE l_get_zx_tax_lines;
9787 END IF;
9788
9789 x_return_status := OKL_API.G_RET_STS_ERROR;
9790
9791 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9792 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9793 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9794 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
9795 END IF;
9796
9797 IF l_trxrequests_csr%ISOPEN THEN
9798 CLOSE l_trxrequests_csr;
9799 END IF;
9800
9801 IF c_k_unbilled_streams_csr%ISOPEN THEN
9802 CLOSE c_k_unbilled_streams_csr;
9803 END IF;
9804
9805 IF c_k_billed_streams_csr%ISOPEN THEN
9806 CLOSE c_k_billed_streams_csr;
9807 END IF;
9808
9809 IF l_txdarlndtls_csr%ISOPEN THEN
9810 CLOSE l_txdarlndtls_csr;
9811 END IF;
9812
9813 IF l_finassets_csr%ISOPEN THEN
9814 CLOSE l_finassets_csr;
9815 END IF;
9816
9817 IF l_okclines_csr%ISOPEN THEN
9818 CLOSE l_okclines_csr;
9819 END IF;
9820
9821 IF l_kstreamtypes_csr%ISOPEN THEN
9822 CLOSE l_kstreamtypes_csr;
9823 END IF;
9824
9825 IF l_finasset_csr%ISOPEN THEN
9826 CLOSE l_finasset_csr;
9827 END IF;
9828
9829 IF l_invitem_csr%ISOPEN THEN
9830 CLOSE l_invitem_csr;
9831 END IF;
9832
9833 IF l_partyroles_csr%ISOPEN THEN
9834 CLOSE l_partyroles_csr;
9835 END IF;
9836
9837 IF l_povendorsites_csr%ISOPEN THEN
9838 CLOSE l_povendorsites_csr;
9839 END IF;
9840
9841 IF l_get_zx_total_tax%ISOPEN THEN
9842 CLOSE l_get_zx_total_tax;
9843 END IF;
9844
9845 IF l_get_zx_taxable_line_info%ISOPEN THEN
9846 CLOSE l_get_zx_taxable_line_info;
9847 END IF;
9848
9849 IF l_get_zx_tax_lines%ISOPEN THEN
9850 CLOSE l_get_zx_tax_lines;
9851 END IF;
9852
9853 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9854
9855 WHEN OTHERS THEN
9856 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9857 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9858 'EXCEPTION :'||sqlerrm);
9859 END IF;
9860
9861 IF l_trxrequests_csr%ISOPEN THEN
9862 CLOSE l_trxrequests_csr;
9863 END IF;
9864
9865 IF c_k_unbilled_streams_csr%ISOPEN THEN
9866 CLOSE c_k_unbilled_streams_csr;
9867 END IF;
9868
9869 IF c_k_billed_streams_csr%ISOPEN THEN
9870 CLOSE c_k_billed_streams_csr;
9871 END IF;
9872
9873 IF l_txdarlndtls_csr%ISOPEN THEN
9874 CLOSE l_txdarlndtls_csr;
9875 END IF;
9876
9877 IF l_finassets_csr%ISOPEN THEN
9878 CLOSE l_finassets_csr;
9879 END IF;
9880
9881 IF l_okclines_csr%ISOPEN THEN
9882 CLOSE l_okclines_csr;
9883 END IF;
9884
9885 IF l_kstreamtypes_csr%ISOPEN THEN
9886 CLOSE l_kstreamtypes_csr;
9887 END IF;
9888
9889 IF l_finasset_csr%ISOPEN THEN
9890 CLOSE l_finasset_csr;
9891 END IF;
9892
9893 IF l_invitem_csr%ISOPEN THEN
9894 CLOSE l_invitem_csr;
9895 END IF;
9896
9897 IF l_partyroles_csr%ISOPEN THEN
9898 CLOSE l_partyroles_csr;
9899 END IF;
9900
9901 IF l_povendorsites_csr%ISOPEN THEN
9902 CLOSE l_povendorsites_csr;
9903 END IF;
9904
9905 IF l_get_zx_total_tax%ISOPEN THEN
9906 CLOSE l_get_zx_total_tax;
9907 END IF;
9908
9909 IF l_get_zx_taxable_line_info%ISOPEN THEN
9910 CLOSE l_get_zx_taxable_line_info;
9911 END IF;
9912
9913 IF l_get_zx_tax_lines%ISOPEN THEN
9914 CLOSE l_get_zx_tax_lines;
9915 END IF;
9916
9917 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9918 -- unexpected error
9919 OKL_API.set_message(p_app_name => g_app_name,
9920 p_msg_name => g_unexpected_error,
9921 p_token1 => g_sqlcode_token,
9922 p_token1_value => sqlcode,
9923 p_token2 => g_sqlerrm_token,
9924 p_token2_value => sqlerrm);
9925
9926 END process_tax_schedule_tax;
9927
9928 /*========================================================================
9929 | PRIVATE PROCEDURE process_quote_tax
9930 |
9931 | DESCRIPTION
9932 | This procedure is called from calculate_sales_tax procedure to calculate
9933 | invoice tax for Termination / repurchase quote creation/updation/deletion
9934 |
9935 | CALLED FROM calculate_sales_tax()
9936 |
9937 |
9938 | CALLS PROCEDURES/FUNCTIONS
9939 | get_k_hdr_tax_params()
9940 | get_asset_tax_params()
9941 | get_location_party_ids()
9942 | get_ufc_code()
9943 | OKL_TAX_INTERFACE_PVT.calculate_tax()
9944 |
9945 |
9946 | PARAMETERS
9947 | p_source_trx_id -- Source transaction ID
9948 | p_source_trx_name -- Source transaction Name
9949 | p_source_table -- Source table
9950 |
9951 | KNOWN ISSUES
9952 |
9953 | NOTES
9954 |
9955 |
9956 | MODIFICATION HISTORY
9957 | Date Author Description of Changes
9958 | 08-APR-05 SECHAWLA Created
9959 | 28-feb-11 sechawla 11796455 - system date should be used to calcualte tax for termination quote,
9960 | as opposed to contract start date
9961 |
9962 *====================================================================================================================*/
9963 PROCEDURE process_quote_tax(
9964 p_api_version IN NUMBER,
9965 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
9966 x_return_status OUT NOCOPY VARCHAR2,
9967 x_msg_count OUT NOCOPY NUMBER,
9968 x_msg_data OUT NOCOPY VARCHAR2,
9969 p_source_trx_id IN NUMBER,
9970 p_source_trx_name IN VARCHAR2,
9971 p_source_table IN VARCHAR2) IS
9972
9973 ---- Termination/Repurchase Quote Creation -------
9974 --p_source_trx_id ---> okl_trx_quotes_b.id
9975 --p_source_trx_name ---> 'Estimated Billing'
9976 --p_source_table ---> 'OKL_TRX_QUOTES_B'
9977 --------------------------------------------------
9978
9979 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9980
9981 -- Get quote details
9982 CURSOR l_trxquotes_csr(cp_qte_id IN NUMBER) IS
9983 SELECT khr_id, date_effective_from, early_termination_yn, qtp_code,
9984 legal_entity_id, qrs_code
9985 FROM okl_trx_quotes_b
9986 WHERE id = cp_qte_id;
9987
9988 -- get the previous tax source transaction for this quote
9989 CURSOR l_prevtaxsources_csr(cp_trx_id IN NUMBER) IS
9990 SELECT id
9991 FROM okl_tax_sources
9992 WHERE trx_id = cp_trx_id;
9993
9994 -- get the previous tax trx details
9995 CURSOR l_prevtaxtrxdet_csr(cp_txs_id IN NUMBER) IS
9996 SELECT ID
9997 FROM okl_tax_trx_details
9998 WHERE txs_id = cp_txs_id;
9999
10000 -- get the tax eligible quote lines
10001 CURSOR l_txlquotelines_csr(cp_qte_id IN NUMBER) IS
10002 SELECT txl.id, txl.sty_id, txl.kle_id,
10003 txl.qlt_code, txl.amount, txl.try_id, cle.name
10004 FROM okl_txl_quote_lines_b txl, okc_k_lines_v cle
10005 WHERE qte_id = cp_qte_id
10006 AND qlt_code NOT IN ('AMCFIA', 'AMCTAX', 'AMYOUB', 'AMCSDD')
10007 AND txl.kle_id = cle.id (+);
10008
10009 -- AMYOUB - Outstanding bal : excluding as it is not invoiced So no tax will be calculated on it during acceptance
10010 -- AMCTAX - Tax/VAT : excluding for old quotes. New quotes wil not have this quote line
10011 -- AMCFIA - Used for internal purpose.
10012
10013 --get line name
10014 CURSOR l_okclines_csr(cp_line_id IN NUMBER) IS
10015 SELECT name, lse_id
10016 FROM okc_k_lines_v
10017 WHERE id = cp_line_id;
10018
10019 -- get the inventory item id and inventory item org for a financial asset
10020 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
10021 SELECT cim_model.object1_id1,
10022 cim_model.object1_id2
10023 FROM okc_k_items cim_model,
10024 okc_k_lines_b cleb_model,
10025 okc_line_styles_b lseb_model
10026 WHERE cim_model.cle_id = cleb_model.id
10027 AND cleb_model.cle_id = cp_fin_asset_id
10028 AND lseb_model.id = cleb_model.lse_id
10029 AND lseb_model.lty_code = 'ITEM';
10030
10031 -- Check if tax basis override formula exists
10032 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
10033 SELECT fma_id
10034 FROM okl_tax_basis_override
10035 WHERE try_id = cp_try_id
10036 AND org_id = MO_GLOBAL.get_current_org_id;
10037
10038 -- GET FORMULA NAME
10039 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
10040 SELECT name
10041 FROM okl_formulae_b
10042 WHERE id = cp_fma_id;
10043
10044 TYPE prevtaxsrc_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10045 TYPE prevtaxtrxdet_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10046 TYPE txlquotelines_tbl_type IS TABLE OF l_txlquotelines_csr%ROWTYPE INDEX BY BINARY_INTEGER;
10047
10048 l_qte_khr_id NUMBER;
10049 l_qte_dt_eff_from DATE;
10050
10051 l_prevtaxsrc_tbl prevtaxsrc_tbl_type;
10052 l_prevtaxtrxdet_tbl prevtaxtrxdet_tbl_type;
10053 l_txlquotelines_tbl txlquotelines_tbl_type;
10054 l_tax_sources_tbl tax_sources_tbl_type;
10055 lp_tax_src_params_rec tax_src_params_rec_type;
10056 lx_line_params_tbl line_params_tbl_type;
10057 lx_tax_sources_tbl tax_sources_tbl_type;
10058 lp_hdr_params_rec hdr_params_rec_type;
10059
10060 l_fetch_size NUMBER := 10000;
10061 i NUMBER;
10062 j NUMBER;
10063 k NUMBER;
10064
10065 l_cust_acct_id NUMBER;
10066 l_bill_to_siteuseid NUMBER;
10067 l_currency_code VARCHAR2(15);
10068 l_precision NUMBER;
10069 l_minimum_accountable_unit NUMBER;
10070 l_cust_trx_type_id NUMBER;
10071 l_legal_entity_id NUMBER;
10072
10073 l_qte_prch_opt_det VARCHAR2(450);
10074 l_qte_fin_prod_id_det NUMBER;
10075 l_qte_int_disclosed_det VARCHAR2(30);
10076
10077 l_name VARCHAR2(150);
10078 l_qte_transfer_of_title VARCHAR2(30);
10079 l_qte_sale_lease_back VARCHAR2(30);
10080 l_qte_purchase_of_lease VARCHAR2(30);
10081 l_qte_usage_of_equipment VARCHAR2(450);
10082 l_qte_age_of_equipment NUMBER;
10083 l_qte_vendor_site_id NUMBER;
10084 l_inv_item_id NUMBER;
10085 l_inv_item_org_id NUMBER;
10086 l_taxation_country VARCHAR2(2);
10087
10088 lx_bill_to_party_site_id NUMBER;
10089 lx_bill_to_location_id NUMBER;
10090 lx_bill_to_party_id NUMBER;
10091 lx_bill_to_siteuseid NUMBER;
10092 lx_ship_to_party_site_id NUMBER;
10093 lx_ship_to_location_id NUMBER;
10094 lx_ship_to_party_id NUMBER;
10095 lx_ship_to_siteuseid NUMBER;
10096 lx_tbc_code VARCHAR2(30);
10097 l_ledger_id NUMBER;
10098 l_lse_id NUMBER;
10099
10100 l_taxable_basis NUMBER;
10101 l_fma_id NUMBER;
10102 l_formula_name VARCHAR2(150);
10103 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
10104 lx_sty_id NUMBER;
10105 l_early_term_yn VARCHAR2(1);
10106 l_qtp_code VARCHAR2(30);
10107 asset_cnt NUMBER;
10108 tax_call_cnt NUMBER;
10109
10110 lx_org_id NUMBER;
10111 lx_book_class_code VARCHAR2(30);
10112 lx_currency_conversion_type VARCHAR2(30);
10113 lx_currency_conversion_rate NUMBER;
10114 lx_currency_conversion_date DATE;
10115 lx_contract_start_date DATE;
10116
10117 lx_cust_acct_id NUMBER;
10118 lx_currency_code VARCHAR2(15);
10119 lx_precision NUMBER;
10120 lx_minimum_accountable_unit NUMBER;
10121 lx_cust_trx_type_id NUMBER;
10122
10123 lx_pb_prch_opt_det VARCHAR2(450);
10124 lx_pb_fin_prod_id_det NUMBER;
10125 lx_pb_int_disclosed_det VARCHAR2(30);
10126
10127 l_qrs_code VARCHAR2(30);
10128
10129 BEGIN
10130
10131 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10132 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax','Begin(+)');
10133 END IF;
10134
10135 --Print Input Variables
10136 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10137 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10138 'p_init_msg_list :'||p_init_msg_list);
10139 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10140 'p_source_trx_id :'||p_source_trx_id);
10141 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10142 'p_source_trx_name :'||p_source_trx_name);
10143 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10144 'p_source_table :'||p_source_table);
10145 END IF;
10146
10147 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10148
10149 -- Validate soure trx id
10150 OPEN l_trxquotes_csr(p_source_trx_id);
10151 FETCH l_trxquotes_csr INTO l_qte_khr_id, l_qte_dt_eff_from,
10152 l_early_term_yn, l_qtp_code, l_legal_entity_id,
10153 l_qrs_code;
10154 IF l_trxquotes_csr%NOTFOUND THEN
10155 -- source trx id is invalid
10156 OKC_API.set_message( p_app_name => 'OKC',
10157 p_msg_name => G_INVALID_VALUE,
10158 p_token1 => G_COL_NAME_TOKEN,
10159 p_token1_value => 'SOURCE_TRX_ID');
10160 RAISE OKL_API.G_EXCEPTION_ERROR;
10161 END IF;
10162 CLOSE l_trxquotes_csr;
10163
10164 --Check if tax source transactions already exist for this quote. If so, delete the previous tax transcations and
10165 --recalculate tax
10166 OPEN l_prevtaxsources_csr(p_source_trx_id);
10167 LOOP
10168 l_prevtaxsrc_tbl.DELETE;
10169 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsrc_tbl LIMIT l_fetch_size;
10170 IF l_prevtaxsrc_tbl.COUNT > 0 THEN
10171
10172 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10173 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10174 'Deleteing prev tax source transactions for this quote ');
10175 END IF;
10176
10177 i := 0;
10178 l_prevtaxtrxdet_tbl.DELETE;
10179 FOR k IN l_prevtaxsrc_tbl.FIRST .. l_prevtaxsrc_tbl.LAST LOOP
10180 FOR l_prevtaxtrxdet_rec IN l_prevtaxtrxdet_csr(l_prevtaxsrc_tbl(k)) LOOP
10181 i := i + 1;
10182 l_prevtaxtrxdet_tbl(i):= l_prevtaxtrxdet_rec.id;
10183
10184 END LOOP;
10185 END LOOP;
10186
10187 -- delete from both the tables.
10188 BEGIN
10189 IF l_prevtaxtrxdet_tbl.COUNT > 0 THEN
10190 FORALL i IN l_prevtaxtrxdet_tbl.FIRST..l_prevtaxtrxdet_tbl.LAST
10191 DELETE FROM OKL_TAX_TRX_DETAILS WHERE id = l_prevtaxtrxdet_tbl(i);
10192 END IF;
10193 EXCEPTION
10194 WHEN OTHERS THEN
10195 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10196 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10197 OKL_API.set_message(
10198 p_app_name => 'OKL',
10199 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
10200 p_token1 => 'TABLE_NAME',
10201 p_token1_value => 'OKL_TAX_TRX_DETAILS',
10202 p_token2 => 'ERROR_CODE',
10203 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10204 p_token3 => 'ITERATION',
10205 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10206 END LOOP;
10207 RAISE OKL_API.G_EXCEPTION_ERROR;
10208 END IF;
10209 END;
10210
10211 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10212 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10213 'Deleted from okl_tax_trx_details... ');
10214 END IF;
10215
10216 BEGIN
10217 FORALL i IN l_prevtaxsrc_tbl.FIRST..l_prevtaxsrc_tbl.LAST
10218 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prevtaxsrc_tbl(i);
10219 EXCEPTION
10220 WHEN OTHERS THEN
10221 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10222 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10223 OKL_API.set_message(
10224 p_app_name => 'OKL',
10225 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
10226 p_token1 => 'TABLE_NAME',
10227 p_token1_value => 'OKL_TAX_SOURCES',
10228 p_token2 => 'ERROR_CODE',
10229 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10230 p_token3 => 'ITERATION',
10231 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10232 END LOOP;
10233 RAISE OKL_API.G_EXCEPTION_ERROR;
10234 END IF;
10235 END;
10236
10237 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10239 'Deleted from okl_tax_sources... ');
10240 END IF;
10241 END IF;
10242
10243 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
10244 END LOOP;
10245 CLOSE l_prevtaxsources_csr;
10246
10247 -- Get contract header info
10248 get_k_hdr_tax_params(
10249 p_api_version => p_api_version,
10250 p_init_msg_list => p_init_msg_list,
10251 x_return_status => x_return_status,
10252 x_msg_count => x_msg_count,
10253 x_msg_data => x_msg_data,
10254 p_khr_id => l_qte_khr_id,
10255 p_source_trx_name => p_source_trx_name,
10256 p_source_table => p_source_table,
10257 p_qtp_code => l_qtp_code,
10258 p_early_term_yn => l_early_term_yn,
10259 x_cust_acct_id => lx_cust_acct_id,
10260 x_bill_to_siteuseid => lx_bill_to_siteuseid,
10261 x_currency_code => lx_currency_code,
10262 x_cust_trx_type_id => lx_cust_trx_type_id,
10263 x_precision => lx_precision,
10264 x_minimum_accountable_unit => lx_minimum_accountable_unit,
10265 x_prch_opt_det => lx_pb_prch_opt_det,
10266 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
10267 x_int_disclosed_det => lx_pb_int_disclosed_det,
10268 x_org_id => lx_org_id,
10269 x_book_class_code => lx_book_class_code,
10270 x_bill_to_party_site_id => lx_bill_to_party_site_id,
10271 x_bill_to_party_id => lx_bill_to_party_id,
10272 x_bill_to_location_id => lx_bill_to_location_id,
10273 x_currency_conversion_type => lx_currency_conversion_type,
10274 x_currency_conversion_rate => lx_currency_conversion_rate,
10275 x_currency_conversion_date => lx_currency_conversion_date,
10276 x_contract_start_date => lx_contract_start_date);
10277
10278 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10279 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10280 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10281 RAISE OKL_API.G_EXCEPTION_ERROR;
10282 END IF;
10283
10284 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10285 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10286 'l_cust_acct_id '||lx_cust_acct_id );
10287 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10288 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
10289 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10290 'lx_currency_code '||lx_currency_code );
10291 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10292 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
10293 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10294 'lx_precision '||lx_precision );
10295 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10296 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
10297 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10298 'lx_pb_prch_opt_det '||lx_pb_prch_opt_det );
10299 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10300 'lx_pb_fin_prod_id_det '||lx_pb_fin_prod_id_det );
10301 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10302 'lx_pb_int_disclosed_det '||lx_pb_int_disclosed_det );
10303 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10304 'lx_org_id '||lx_org_id );
10305 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10306 'lx_book_class_code '||lx_book_class_code );
10307 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10308 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
10309 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10310 'lx_bill_to_party_id '||lx_bill_to_party_id );
10311 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10312 'lx_bill_to_location_id '||lx_bill_to_location_id );
10313 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10314 'lx_currency_conversion_type '||lx_currency_conversion_type );
10315 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10316 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
10317 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10318 'lx_currency_conversion_date '||lx_currency_conversion_date );
10319 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10320 'lx_contract_start_date '||lx_contract_start_date );
10321 END IF;
10322
10323 -- Fetch the Ledger info
10324 l_ledger_id := okl_accounting_util.get_set_of_books_id;
10325
10326 -- Fetch the Tax country
10327 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
10328 x_msg_count => x_msg_count,
10329 x_msg_data => x_msg_data,
10330 p_legal_entity_id => l_legal_entity_id);
10331 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10332 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10333 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10334 RAISE OKL_API.G_EXCEPTION_ERROR;
10335 END IF;
10336
10337 tax_call_cnt := 1;
10338 OPEN l_txlquotelines_csr(p_source_trx_id);
10339 LOOP
10340 l_txlquotelines_tbl.DELETE;
10341 l_tax_sources_tbl.DELETE;
10342 FETCH l_txlquotelines_csr BULK COLLECT INTO l_txlquotelines_tbl LIMIT l_fetch_size;
10343
10344 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10345 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10346 'l_txlquotelines_tbl.COUNT '||l_txlquotelines_tbl.COUNT);
10347 END IF;
10348
10349 IF l_txlquotelines_tbl.COUNT > 0 THEN
10350 FOR k IN l_txlquotelines_tbl.FIRST .. l_txlquotelines_tbl.LAST LOOP
10351
10352 IF l_txlquotelines_tbl(k).kle_id IS NOT NULL THEN -- asset level quote line
10353
10354 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10355 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10356 'asset level quote line ');
10357 END IF;
10358
10359 OPEN l_okclines_csr(l_txlquotelines_tbl(k).kle_id);
10360 FETCH l_okclines_csr INTO l_name, l_lse_id;
10361 CLOSE l_okclines_csr;
10362
10363 IF (l_lse_id = 33) THEN
10364 -- Get the financial asset level determinants
10365 get_asset_tax_params(
10366 p_api_version => p_api_version,
10367 p_init_msg_list => OKC_API.G_FALSE,
10368 x_return_status => x_return_status,
10369 x_msg_count => x_msg_count,
10370 x_msg_data => x_msg_data,
10371 p_khr_id => l_qte_khr_id,
10372 p_kle_id => l_txlquotelines_tbl(k).kle_id,
10373 p_source_trx_name => p_source_trx_name,
10374 p_source_table => p_source_table,
10375 p_qtp_code => l_qtp_code,
10376 x_transfer_of_title => l_qte_transfer_of_title,
10377 x_sale_lease_back => l_qte_sale_lease_back,
10378 x_purchase_of_lease => l_qte_purchase_of_lease,
10379 x_usage_of_equipment => l_qte_usage_of_equipment,
10380 x_age_of_equipment => l_qte_age_of_equipment,
10381 x_vendor_site_id => l_qte_vendor_site_id);
10382
10383 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10384 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10385 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10386 RAISE OKL_API.G_EXCEPTION_ERROR;
10387 END IF;
10388
10389 -- Equipment Type(inventory item id)
10390 -- get the inventory item id
10391 OPEN l_invitem_csr(l_txlquotelines_tbl(k).kle_id);
10392 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
10393 IF l_invitem_csr%NOTFOUND THEN
10394 OKL_API.set_message(
10395 p_app_name => 'OKL',
10396 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
10397 p_token1 => 'ASSET_NUMBER',
10398 p_token1_value => l_name);
10399
10400 RAISE OKL_API.G_EXCEPTION_ERROR;
10401 END IF;
10402 CLOSE l_invitem_csr;
10403
10404 IF l_qtp_code LIKE 'TER%' THEN -- Ship to Location is not applicable for repurchase quote
10405 -- Get the ship_to and _bill_to identifiers
10406 get_location_party_ids(
10407 p_api_version => p_api_version,
10408 p_init_msg_list => OKC_API.G_FALSE,
10409 x_return_status => x_return_status,
10410 x_msg_count => x_msg_count,
10411 x_msg_data => x_msg_data,
10412 p_cust_acct_id => lx_cust_acct_id,
10413 p_fin_asset_id => l_txlquotelines_tbl(k).kle_id,
10414 p_khr_id => l_qte_khr_id,
10415 x_bill_to_party_site_id => lx_bill_to_party_site_id,
10416 x_bill_to_location_id => lx_bill_to_location_id,
10417 x_bill_to_party_id => lx_bill_to_party_id,
10418 x_bill_to_site_use_id => lx_bill_to_siteuseid,
10419 x_ship_to_party_site_id => lx_ship_to_party_site_id,
10420 x_ship_to_location_id => lx_ship_to_location_id,
10421 x_ship_to_party_id => lx_ship_to_party_id,
10422 x_ship_to_site_use_id => lx_ship_to_siteuseid);
10423
10424 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10425 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10426 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10427 RAISE OKL_API.G_EXCEPTION_ERROR;
10428 END IF;
10429 END IF;
10430
10431 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10432 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10433 'l_name '||l_name);
10434 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10435 'l_qte_khr_id '||l_qte_khr_id);
10436 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10437 'l_txlquotelines_tbl(k).kle_id '||l_txlquotelines_tbl(k).kle_id);
10438 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10439 'l_qte_transfer_of_title '||l_qte_transfer_of_title);
10440 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10441 'l_qte_sale_lease_back '||l_qte_sale_lease_back);
10442 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10443 'l_qte_purchase_of_lease '||l_qte_purchase_of_lease);
10444 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10445 'l_qte_usage_of_equipment '||l_qte_usage_of_equipment);
10446 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10447 'l_qte_age_of_equipment '||l_qte_age_of_equipment);
10448 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10449 'l_qte_vendor_site_id '||l_qte_vendor_site_id);
10450 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10451 'l_inv_item_id '||l_inv_item_id);
10452 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10453 'l_inv_item_org_id '||l_inv_item_org_id);
10454 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10455 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
10456 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10457 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
10458 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10459 'lx_ship_to_location_id '||lx_ship_to_location_id );
10460 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10461 'lx_ship_to_party_id '||lx_ship_to_party_id );
10462 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10463 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
10464 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10465 'lx_bill_to_location_id '||lx_bill_to_location_id );
10466 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10467 'lx_bill_to_party_id '||lx_bill_to_party_id );
10468 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10469 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
10470 END IF;
10471 END IF;
10472 END IF; -- if asset level quote line
10473
10474 -- SECHAWLA 17-MAR-06 5022404 : For Billing adjustment quote line, get stream type from quote lines table
10475 IF l_txlquotelines_tbl(k).qlt_code = 'BILL_ADJST' THEN
10476 lx_sty_id := l_txlquotelines_tbl(k).sty_id;
10477 ELSE
10478 OKL_STREAMS_UTIL.get_primary_stream_type( p_khr_id => l_qte_khr_id,
10479 p_primary_sty_purpose => l_txlquotelines_tbl(k).qlt_code,
10480 x_return_status => x_return_status,
10481 x_primary_sty_id => lx_sty_id);
10482
10483 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10484 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10485 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10486 RAISE OKL_API.G_EXCEPTION_ERROR;
10487 END IF;
10488 END IF;
10489
10490 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10491 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10492 'stream type '||lx_sty_id);
10493 END IF;
10494
10495 IF (tax_call_cnt = 1) THEN
10496 -- Check if taxable bais override applies to Estimated Billing transaction
10497 OPEN l_txbasisoverride_csr(l_txlquotelines_tbl(k).try_id);
10498 FETCH l_txbasisoverride_csr INTO l_fma_id;
10499 CLOSE l_txbasisoverride_csr;
10500
10501 IF l_fma_id IS NOT NULL THEN
10502 OPEN l_formulae_csr(l_fma_id);
10503 FETCH l_formulae_csr INTO l_formula_name;
10504 IF l_formulae_csr%NOTFOUND THEN
10505 OKC_API.set_message( p_app_name => 'OKC',
10506 p_msg_name => G_INVALID_VALUE,
10507 p_token1 => G_COL_NAME_TOKEN,
10508 p_token1_value => 'FMA_ID');
10509 RAISE OKL_API.G_EXCEPTION_ERROR;
10510 END IF;
10511 CLOSE l_formulae_csr;
10512
10513 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10514 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10515 'l_formula_name '||l_formula_name);
10516 END IF;
10517 END IF;
10518 END IF;
10519
10520 -- Populate tax sources record -- start
10521 lp_tax_src_params_rec.kle_id := l_txlquotelines_tbl(k).kle_id;
10522
10523 IF (l_lse_id = 33) THEN
10524 lp_tax_src_params_rec.asset_number := l_txlquotelines_tbl(k).name;
10525 END IF;
10526
10527 lp_tax_src_params_rec.line_name := l_txlquotelines_tbl(k).name;
10528
10529 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
10530 lp_tax_src_params_rec.ship_to_party_site_id := lx_ship_to_party_site_id;
10531 lp_tax_src_params_rec.ship_to_party_id := lx_ship_to_party_id;
10532 lp_tax_src_params_rec.ship_to_location_id := lx_ship_to_location_id;
10533
10534 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
10535 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
10536 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
10537 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
10538
10539 lp_tax_src_params_rec.inventory_item_id := l_inv_item_id;
10540 lp_tax_src_params_rec.sty_id := lx_sty_id;
10541
10542 lp_tax_src_params_rec.khr_id := l_qte_khr_id;
10543 lp_tax_src_params_rec.trx_id := p_source_trx_id;
10544 lp_tax_src_params_rec.trx_line_id := l_txlquotelines_tbl(k).id;
10545 lp_tax_src_params_rec.entity_code := G_AM_QUOTES_ENTITY_CODE;
10546 lp_tax_src_params_rec.event_class_code := G_AM_QTE_EVENT_CLASS_CODE;
10547 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
10548 lp_tax_src_params_rec.tax_call_type_code := G_INVOICE_TAX;
10549 lp_tax_src_params_rec.tax_reporting_flag := 'N';
10550 lp_tax_src_params_rec.reported_yn := 'N';
10551 --lp_tax_src_params_rec.trx_date := lx_contract_start_date; --sechawla 28-feb-11 11796455
10552 -- System date should be used to calculate tax for termination quotes, not contract start date
10553 lp_tax_src_params_rec.trx_date := trunc(sysdate); --sechawla 28-feb-11 11796455
10554 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
10555 lp_tax_src_params_rec.line_intended_use := l_qte_usage_of_equipment;
10556 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
10557 lp_tax_src_params_rec.org_id := lx_org_id;
10558 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
10559 lp_tax_src_params_rec.line_amt := l_txlquotelines_tbl(k).amount;
10560 lp_tax_src_params_rec.try_id := l_txlquotelines_tbl(k).try_id;
10561
10562 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
10563 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
10564 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
10565 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
10566 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
10567 lp_tax_src_params_rec.adjusted_doc_number := null;
10568 lp_tax_src_params_rec.adjusted_doc_date := null;
10569 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
10570 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
10571
10572 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
10573 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
10574 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
10575 -- Populate tax sources record -- end
10576
10577 populate_tax_info(
10578 p_api_version => p_api_version,
10579 p_init_msg_list => OKC_API.G_FALSE,
10580 x_return_status => x_return_status,
10581 x_msg_count => x_msg_count,
10582 x_msg_data => x_msg_data,
10583 p_prch_opt_det => lx_pb_prch_opt_det,
10584 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
10585 p_int_disclosed_det => lx_pb_int_disclosed_det,
10586 p_title_trnsfr_code => l_qte_transfer_of_title,
10587 p_sale_lease_back_code => l_qte_sale_lease_back,
10588 p_lease_purchased_code => l_qte_purchase_of_lease,
10589 p_equip_usage_code => l_qte_usage_of_equipment,
10590 p_vendor_site_id => l_qte_vendor_site_id,
10591 p_age_of_equip => l_qte_age_of_equipment,
10592 p_source_trx_name => p_source_trx_name,
10593 p_cust_trx_type_id => lx_cust_trx_type_id,
10594 p_book_class_code => lx_book_class_code,
10595 p_tax_call_cnt => tax_call_cnt,
10596 p_fma_id => l_fma_id,
10597 p_formula_name => l_formula_name,
10598 p_minimum_accountable_unit => lx_minimum_accountable_unit,
10599 p_precision => lx_precision,
10600 p_sales_quote_id => null,
10601 p_event_type_code => G_AM_QTE_CRE_EVT_TYPE_CODE,
10602 p_ledger_id => l_ledger_id,
10603 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
10604 p_tax_src_params_rec => lp_tax_src_params_rec,
10605 p_quote_flag => 'Y',
10606 p_rounding_ship_to_party_id => lx_ship_to_party_id,
10607 p_rounding_bill_to_party_id => lx_bill_to_party_id,
10608 p_line_amt_includes_tax_flag => 'N',
10609 p_term_quote_type_code => l_qtp_code,
10610 p_term_quote_reason_code => l_qrs_code,
10611 px_tax_sources_tbl => lx_tax_sources_tbl,
10612 px_line_params_tbl => lx_line_params_tbl );
10613
10614 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10615 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10616 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10617 RAISE OKL_API.G_EXCEPTION_ERROR;
10618 END IF;
10619
10620 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10621 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10622 'lx_tax_sources_tbl.count '|| lx_tax_sources_tbl.COUNT );
10623 END IF;
10624
10625 tax_call_cnt := tax_call_cnt + 1;
10626
10627 END LOOP;
10628 END IF;
10629 EXIT WHEN l_txlquotelines_csr%NOTFOUND;
10630 END LOOP;
10631 CLOSE l_txlquotelines_csr;
10632
10633 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10634 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10635 'tax_call_cnt '||tax_call_cnt);
10636 END IF;
10637
10638 -- Insert into okl_tax_sources
10639 BEGIN
10640 IF lx_tax_sources_tbl.COUNT > 0 THEN
10641 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
10642 -- SAVE EXCEPTIONS
10643 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
10644 END IF;
10645 EXCEPTION
10646 WHEN OTHERS THEN
10647 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10648 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10649 OKL_API.set_message( p_app_name => 'OKL',
10650 p_msg_name => 'OKL_TX_TRX_INS_ERR',
10651 p_token1 => 'TABLE_NAME',
10652 p_token1_value => 'OKL_TAX_SOURCES',
10653 p_token2 => 'ERROR_CODE',
10654 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10655 p_token3 => 'ITERATION',
10656 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10657 END LOOP;
10658 RAISE OKL_API.G_EXCEPTION_ERROR;
10659 END IF;
10660 END;
10661 -- Insert into okl_tax_sources end
10662
10663 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10664 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10665 'Insert into okl_tax_sources ');
10666 END IF;
10667
10668 IF lx_line_params_tbl.COUNT > 0 THEN
10669 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10670 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10671 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
10672 END IF;
10673
10674 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
10675 lp_hdr_params_rec.trx_id := p_source_trx_id;
10676 lp_hdr_params_rec.internal_organization_id := lx_org_id;
10677 lp_hdr_params_rec.entity_code := G_AM_QUOTES_ENTITY_CODE;
10678 lp_hdr_params_rec.event_class_code := G_AM_QTE_EVENT_CLASS_CODE;
10679 lp_hdr_params_rec.event_type_code := G_AM_QTE_CRE_EVT_TYPE_CODE;
10680 lp_hdr_params_rec.quote_flag := 'Y';
10681
10682 OKL_TAX_INTERFACE_PVT.calculate_tax(
10683 p_api_version => p_api_version,
10684 p_init_msg_list => p_init_msg_list,
10685 x_return_status => x_return_status,
10686 x_msg_count => x_msg_count,
10687 x_msg_data => x_msg_data,
10688 p_hdr_params_rec => lp_hdr_params_rec,
10689 p_line_params_tbl => lx_line_params_tbl);
10690
10691 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10692 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10693 'After tax engine call '||x_return_status);
10694 END IF;
10695
10696 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10697 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10698 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10699 RAISE OKL_API.G_EXCEPTION_ERROR;
10700 END IF;
10701 END IF;
10702
10703 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10704 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10705 'Calling "update_tax_sources_total" .. ');
10706 END IF;
10707
10708 update_tax_sources_total(p_api_version => p_api_version,
10709 p_init_msg_list => p_init_msg_list,
10710 x_return_status => x_return_status,
10711 x_msg_count => x_msg_count,
10712 x_msg_data => x_msg_data,
10713 p_source_trx_id => p_source_trx_id,
10714 p_source_trx_name => p_source_trx_name );
10715
10716 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10717 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10718 'Return Status' || x_return_status);
10719 END IF;
10720
10721 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10722 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10723 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10724 RAISE OKL_API.G_EXCEPTION_ERROR;
10725 END IF;
10726
10727 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10728 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10729 'Calling "copy_tax_trx_data" .. ');
10730 END IF;
10731
10732 copy_tax_trx_data ( p_api_version => p_api_version,
10733 p_init_msg_list => p_init_msg_list,
10734 x_return_status => x_return_status,
10735 x_msg_count => x_msg_count,
10736 x_msg_data => x_msg_data,
10737 p_trx_id => p_source_trx_id,
10738 p_entity_code => G_AM_QUOTES_ENTITY_CODE,
10739 p_event_class_code => G_AM_QTE_EVENT_CLASS_CODE,
10740 p_source_trx_name => p_source_trx_name);
10741
10742
10743 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10744 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10745 'Return Status' || x_return_status);
10746 END IF;
10747
10748 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10749 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10750 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10751 RAISE OKL_API.G_EXCEPTION_ERROR;
10752 END IF;
10753
10754 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10755 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ','End(-)');
10756 END IF;
10757
10758 EXCEPTION
10759 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10760 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10761 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10762 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
10763 END IF;
10764
10765 IF l_trxquotes_csr%ISOPEN THEN
10766 CLOSE l_trxquotes_csr;
10767 END IF;
10768
10769 IF l_prevtaxsources_csr%ISOPEN THEN
10770 CLOSE l_prevtaxsources_csr;
10771 END IF;
10772
10773 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10774 CLOSE l_prevtaxtrxdet_csr;
10775 END IF;
10776
10777 IF l_txlquotelines_csr%ISOPEN THEN
10778 CLOSE l_txlquotelines_csr;
10779 END IF;
10780
10781 IF l_okclines_csr%ISOPEN THEN
10782 CLOSE l_okclines_csr;
10783 END IF;
10784
10785 IF l_invitem_csr%ISOPEN THEN
10786 CLOSE l_invitem_csr;
10787 END IF;
10788
10789 IF l_txbasisoverride_csr%ISOPEN THEN
10790 CLOSE l_txbasisoverride_csr;
10791 END IF;
10792
10793 IF l_formulae_csr%ISOPEN THEN
10794 CLOSE l_formulae_csr;
10795 END IF;
10796
10797 x_return_status := OKL_API.G_RET_STS_ERROR;
10798 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10799 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10800 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10801 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
10802 END IF;
10803
10804 IF l_trxquotes_csr%ISOPEN THEN
10805 CLOSE l_trxquotes_csr;
10806 END IF;
10807
10808 IF l_prevtaxsources_csr%ISOPEN THEN
10809 CLOSE l_prevtaxsources_csr;
10810 END IF;
10811
10812 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10813 CLOSE l_prevtaxtrxdet_csr;
10814 END IF;
10815
10816 IF l_txlquotelines_csr%ISOPEN THEN
10817 CLOSE l_txlquotelines_csr;
10818 END IF;
10819
10820 IF l_okclines_csr%ISOPEN THEN
10821 CLOSE l_okclines_csr;
10822 END IF;
10823
10824 IF l_invitem_csr%ISOPEN THEN
10825 CLOSE l_invitem_csr;
10826 END IF;
10827
10828 IF l_txbasisoverride_csr%ISOPEN THEN
10829 CLOSE l_txbasisoverride_csr;
10830 END IF;
10831
10832 IF l_formulae_csr%ISOPEN THEN
10833 CLOSE l_formulae_csr;
10834 END IF;
10835
10836 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
10837
10838 WHEN OTHERS THEN
10839 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10840 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10841 'EXCEPTION :'||sqlerrm);
10842 END IF;
10843
10844 IF l_trxquotes_csr%ISOPEN THEN
10845 CLOSE l_trxquotes_csr;
10846 END IF;
10847
10848 IF l_prevtaxsources_csr%ISOPEN THEN
10849 CLOSE l_prevtaxsources_csr;
10850 END IF;
10851
10852 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10853 CLOSE l_prevtaxtrxdet_csr;
10854 END IF;
10855
10856 IF l_txlquotelines_csr%ISOPEN THEN
10857 CLOSE l_txlquotelines_csr;
10858 END IF;
10859
10860 IF l_okclines_csr%ISOPEN THEN
10861 CLOSE l_okclines_csr;
10862 END IF;
10863
10864 IF l_invitem_csr%ISOPEN THEN
10865 CLOSE l_invitem_csr;
10866 END IF;
10867
10868 IF l_txbasisoverride_csr%ISOPEN THEN
10869 CLOSE l_txbasisoverride_csr;
10870 END IF;
10871
10872 IF l_formulae_csr%ISOPEN THEN
10873 CLOSE l_formulae_csr;
10874 END IF;
10875
10876 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
10877 -- unexpected error
10878 OKL_API.set_message(p_app_name => g_app_name,
10879 p_msg_name => g_unexpected_error,
10880 p_token1 => g_sqlcode_token,
10881 p_token1_value => sqlcode,
10882 p_token2 => g_sqlerrm_token,
10883 p_token2_value => sqlerrm);
10884
10885 END process_quote_tax;
10886
10887 /*========================================================================
10888 | PRIVATE PROCEDURE process_asset_loc_tax
10889 |
10890 | DESCRIPTION
10891 | This procedure is called from calculate_sales_tax procedure to calculate
10892 | upfront tax for Asset location Change
10893 |
10894 | CALLED FROM calculate_sales_tax()
10895 |
10896 |
10897 | CALLS PROCEDURES/FUNCTIONS
10898 | OKL_TAX_SOURCES_PUB.update_tax_sources()
10899 | get_k_hdr_tax_params()
10900 | get_asset_tax_params()
10901 | get_location_party_ids()
10902 | get_ufc_code()
10903 | OKL_TAX_INTERFACE_PVT.calculate_tax()
10904 |
10905 |
10906 | PARAMETERS
10907 | p_source_trx_id -- Source transaction ID
10908 | p_source_trx_name -- Source transaction Name
10909 | p_source_table -- Source table
10910 | p_tax_call_type -- Tax call type (Values - 'ESTIMATED'/ 'ACTUAL')
10911 | p_serialized_asset -- Serialized Asset (Values - 'Y'/'N')
10912 | p_request_id -- Id of OKL_trx_Requests
10913 | p_alc_final_call -- Determines if the asset location change final
10914 | call is being made for the serialized asset
10915 | (Values - null/'N'/'Y')
10916 |
10917 | KNOWN ISSUES
10918 |
10919 | NOTES
10920 |
10921 |
10922 | MODIFICATION HISTORY
10923 | Date Author Description of Changes
10924 | 08-APR-05 SECHAWLA Created
10925 |
10926 *=======================================================================*/
10927 PROCEDURE process_asset_loc_tax(
10928 p_api_version IN NUMBER,
10929 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10930 x_return_status OUT NOCOPY VARCHAR2,
10931 x_msg_count OUT NOCOPY NUMBER,
10932 x_msg_data OUT NOCOPY VARCHAR2,
10933 p_source_trx_id IN NUMBER,
10934 p_source_trx_name IN VARCHAR2,
10935 p_source_table IN VARCHAR2,
10936 p_tax_call_type IN VARCHAR2,
10937 p_serialized_asset IN VARCHAR2,
10938 p_request_id IN NUMBER,
10939 p_alc_final_call IN VARCHAR2) IS
10940
10941 -------------Asset Location Change --------------
10942 --p_source_trx_id ---> okl_trx_assets.id
10943 --p_source_trx_name ---> 'Asset Relocation' (changed from Internal Asset Creation to Asset Relocation)
10944 --p_source_table ---> 'OKL_TRX_ASSETS'
10945 --p_tax_call_type ---> Tax call type
10946 --p_serialized_asset ---> Serialized Asset (Y/N)
10947 --p_request_id ---> Id of OKL_trx_Requests
10948 --------------------------------------------------
10949 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10950
10951 -- validate source trx id
10952 CURSOR l_trxassets_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
10953 SELECT a.try_id, a.date_trans_occurred, a.legal_entity_id
10954 FROM okl_trx_assets a , okl_trx_types_tl b
10955 WHERE a.id = cp_trx_id
10956 AND a.try_id = b.id
10957 AND b.name = cp_trx_type_name
10958 AND language = 'US';
10959
10960 -- get the trx line details
10961 CURSOR l_txlitminsts_csr(cp_id IN NUMBER) IS
10962 SELECT kle_id, -- Id of INST_ITEM line
10963 OBJECT_ID1_NEW, -- ID of okx_party_site_uses_v
10964 DNZ_CLE_ID -- id of FREE_FORM1
10965 FROM okl_txl_itm_insts
10966 WHERE tas_id = cp_id;
10967
10968 -- get the new location id
10969 --asawanka modified for bug # 6612165
10970 CURSOR l_partysiteuses_csr(cp_id1 IN NUMBER) IS
10971 SELECT location_id, party_site_id
10972 FROM okx_party_site_uses_v
10973 WHERE id1 = cp_id1
10974 AND site_use_type = 'INSTALL_AT';
10975
10976 -- get the acive upfront tax sources for this asset
10977 -- k1 > A1 > RENT
10978 -- k1 > A1 > Estimated Property Tax
10979 CURSOR l_taxsources_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
10980 SELECT id, org_id, entity_code, event_class_code
10981 FROM okl_tax_sources
10982 WHERE khr_id = cp_khr_id
10983 AND kle_id = cp_kle_id
10984 AND tax_call_type_code = G_UPFRONT_TAX
10985 AND tax_line_status_code = G_ACTIVE_STATUS
10986 AND application_id = G_OKL_APPLICATION_ID
10987 AND trx_level_type = G_TRX_LEVEL_TYPE
10988 AND adjusted_doc_trx_id IS NULL
10989 AND adjusted_doc_trx_line_id IS NULL;
10990
10991 -- get the contract id
10992 CURSOR l_okcklines_csr(cp_kle_id IN NUMBER) IS
10993 SELECT chr_id, name
10994 FROM okc_k_lines_v
10995 WHERE id = cp_kle_id;
10996
10997 -- get the current, active, billable streams for the asset
10998 CURSOR l_assetstreams_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
10999 SELECT typ.code Stream_Type,
11000 strm.id stream_id,
11001 strm.kle_id line_id,
11002 strm.sty_id stream_type_id
11003 FROM okl_strm_type_b typ,
11004 okl_streams strm
11005 WHERE strm.sty_id = typ.id
11006 AND typ.billable_yn = 'Y'
11007 AND strm.say_code ='CURR'
11008 AND strm.active_yn = 'Y'
11009 AND strm.purpose_code IS NULL
11010 AND strm.khr_id = cp_khr_id
11011 AND strm.kle_id = cp_kle_id;
11012
11013 -- get the total stream amount
11014 CURSOR l_strmelements_csr(cp_stm_id IN NUMBER) IS
11015 SELECT sum(amount)
11016 FROM okl_strm_elements
11017 WHERE stm_id = cp_stm_id;
11018
11019 -- Chaeck if tax basis override formula exists
11020 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
11021 SELECT fma_id
11022 FROM okl_tax_basis_override
11023 WHERE try_id = cp_try_id
11024 AND org_id = MO_GLOBAL.get_current_org_id;
11025
11026 -- get the inventory item id and inventory item org for a financial asset
11027 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
11028 SELECT cim_model.object1_id1,
11029 cim_model.object1_id2
11030 FROM okc_k_items cim_model,
11031 okc_k_lines_b cleb_model,
11032 okc_line_styles_b lseb_model
11033 WHERE cim_model.cle_id = cleb_model.id
11034 AND cleb_model.cle_id = cp_fin_asset_id
11035 AND lseb_model.id = cleb_model.lse_id
11036 AND lseb_model.lty_code = 'ITEM';
11037
11038 -- GET FORMULA NAME
11039 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
11040 SELECT name
11041 FROM okl_formulae_b
11042 WHERE id = cp_fma_id;
11043
11044 CURSOR l_okltaxsources_csr(cp_app_id IN NUMBER, cp_trx_id IN NUMBER) IS
11045 SELECT entity_code, event_class_code
11046 FROM okl_tax_sources
11047 WHERE application_id = cp_app_id
11048 AND trx_id = cp_trx_id
11049 AND trx_level_type = G_TRX_LEVEL_TYPE
11050 AND tax_call_type_code = G_UPFRONT_TAX
11051 AND tax_line_status_code = G_ACTIVE_STATUS
11052 AND entity_code = G_ASSETS_ENTITY_CODE
11053 AND event_class_code = G_ALC_EVENT_CODE
11054 AND ROWNUM = 1;
11055
11056 CURSOR c_get_ast_instances(p_parent_line_id IN NUMBER) IS
11057 SELECT count(*)
11058 FROM okc_k_lines_v okcl,
11059 okc_line_styles_v lse
11060 WHERE okcl.cle_id = p_parent_line_id
11061 AND okcl.lse_id = lse.id
11062 AND lse.lty_code = 'FREE_FORM2';
11063
11064 CURSOR c_get_streams_count(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
11065 SELECT count(*)
11066 FROM okl_strm_type_b typ,
11067 okl_streams strm
11068 WHERE strm.sty_id = typ.id
11069 AND typ.billable_yn = 'Y'
11070 AND strm.say_code ='CURR'
11071 AND strm.active_yn = 'Y'
11072 AND strm.purpose_code IS NULL
11073 AND strm.khr_id = cp_khr_id
11074 AND strm.kle_id = cp_kle_id;
11075
11076 l_taxsources_rec l_okltaxsources_csr%ROWTYPE;
11077
11078 --asawanka added for bug #6612165
11079 --Cursor to get the ship_to_site_use_id corresponding to the install_location_id of the asset
11080 CURSOR l_get_shiptositeid(cp_cust_acct_id IN NUMBER, cp_inst_loc_id IN NUMBER,cp_loc_id IN NUMBER) IS
11081 SELECT b.site_use_id,
11082 c.party_site_id,
11083 c.party_id,
11084 c.location_id
11085 FROM hz_cust_acct_sites_all a,
11086 hz_cust_site_uses_all b,
11087 hz_party_sites c
11088 WHERE a.CUST_ACCT_SITE_ID = b.CUST_ACCT_SITE_ID
11089 AND b.site_use_code = 'SHIP_TO'
11090 AND a.party_site_id = c.party_site_id
11091 AND a.cust_account_id = cp_cust_acct_id
11092 AND a.org_id = MO_GLOBAL.get_current_org_id
11093 AND c.party_site_id = cp_inst_loc_id
11094 AND c.location_id = cp_loc_id;
11095
11096 SUBTYPE txsv_rec_type IS okl_txs_pvt.txsv_rec_type;
11097
11098 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11099
11100 l_tax_src_tbl tax_src_tbl_type;
11101 lp_tax_src_params_rec tax_src_params_rec_type;
11102 lx_line_params_tbl line_params_tbl_type;
11103 lx_tax_sources_tbl tax_sources_tbl_type;
11104 lp_hdr_params_rec hdr_params_rec_type;
11105
11106 l_alc_trx_type_id_det NUMBER;
11107 l_inst_item_line_id NUMBER;
11108 l_party_site_uses_id1 NUMBER;
11109 l_fin_asset_id NUMBER;
11110 l_new_location_id NUMBER;
11111 --asawanka added for bug# 6612165 start
11112 l_install_location_id NUMBER;
11113 --asawanka added for bug# 6612165 end
11114 l_chr_id NUMBER;
11115 l_name VARCHAR2(150);
11116 l_total_strm_tax NUMBER;
11117 l_total_prev_tax NUMBER;
11118 l_total_curr_tax NUMBER;
11119
11120 lx_cust_acct_id NUMBER;
11121 lx_currency_code VARCHAR2(15);
11122 lx_precision NUMBER;
11123 lx_minimum_accountable_unit NUMBER;
11124 lx_cust_trx_type_id NUMBER;
11125
11126 lx_alc_prch_opt_det VARCHAR2(450);
11127 lx_alc_fin_prod_id_det NUMBER;
11128 lx_alc_int_disclosed_det VARCHAR2(30);
11129
11130 lx_alc_transfer_of_title VARCHAR2(30);
11131 lx_alc_sale_lease_back VARCHAR2(30);
11132 lx_alc_purchase_of_lease VARCHAR2(30);
11133 lx_alc_usage_of_equipment VARCHAR2(450);
11134 lx_alc_age_of_equipment NUMBER;
11135 lx_alc_vendor_site_id NUMBER;
11136
11137 lp_txsv_rec txsv_rec_type;
11138 lp_txsv_rec_emp txsv_rec_type;
11139 lx_txsv_rec txsv_rec_type;
11140
11141 lx_tbc_code VARCHAR2(30);
11142 l_taxable_basis NUMBER;
11143 l_taxable_ser_basis NUMBER;
11144 l_fma_id NUMBER;
11145 l_inv_item_id NUMBER;
11146 l_inv_item_org_id NUMBER;
11147 l_legal_entity_id NUMBER;
11148 l_ledger_id NUMBER;
11149 l_taxation_country VARCHAR2(2);
11150
11151 lx_bill_to_party_site_id NUMBER;
11152 lx_bill_to_location_id NUMBER;
11153 lx_bill_to_party_id NUMBER;
11154 lx_bill_to_siteuseid NUMBER;
11155 lx_ship_to_party_site_id NUMBER;
11156 lx_ship_to_location_id NUMBER;
11157 lx_ship_to_party_id NUMBER;
11158 lx_ship_to_siteuseid NUMBER;
11159
11160 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
11161 l_formula_name VARCHAR2(150);
11162 l_trx_date DATE;
11163 l_tax_source_id NUMBER;
11164 k NUMBER;
11165 j NUMBER;
11166 next_tx_src_cnt NUMBER;
11167 tax_call_cnt NUMBER;
11168
11169 lx_org_id NUMBER;
11170 lx_book_class_code VARCHAR2(30);
11171 l_entity_code VARCHAR2(30);
11172 l_event_class_code VARCHAR2(30);
11173 lx_currency_conversion_type VARCHAR2(30);
11174 lx_currency_conversion_rate NUMBER;
11175 lx_currency_conversion_date DATE;
11176 lx_contract_start_date DATE;
11177 l_org_id NUMBER;
11178 l_asset_inst_count NUMBER;
11179 l_alc_ser_def_code VARCHAR2(1) := 'N';
11180 l_stream_count NUMBER;
11181
11182 BEGIN
11183
11184 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11185 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax','Begin(+)');
11186 END IF;
11187
11188 --Print Input Variables
11189 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11190 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11191 'p_init_msg_list :'||p_init_msg_list);
11192 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11193 'p_source_trx_id :'||p_source_trx_id);
11194 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11195 'p_source_trx_name :'||p_source_trx_name);
11196 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11197 'p_source_table :'||p_source_table);
11198 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11199 'p_tax_call_type :'||p_tax_call_type);
11200 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11201 'p_serialized_asset :'||p_serialized_asset);
11202 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11203 'p_request_id :'||p_request_id);
11204 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11205 'p_alc_final_call :'||p_alc_final_call);
11206 END IF;
11207
11208 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11209
11210 -- validate the source trx id
11211 OPEN l_trxassets_csr(p_source_trx_id, p_source_trx_name);
11212 FETCH l_trxassets_csr INTO l_alc_trx_type_id_det, l_trx_date, l_legal_entity_id;
11213 IF l_trxassets_csr%NOTFOUND THEN
11214 -- source trx id is invalid
11215 OKC_API.set_message( p_app_name => 'OKC',
11216 p_msg_name => G_INVALID_VALUE,
11217 p_token1 => G_COL_NAME_TOKEN,
11218 p_token1_value => 'SOURCE_TRX_ID');
11219 RAISE OKL_API.G_EXCEPTION_ERROR;
11220 END IF;
11221 CLOSE l_trxassets_csr;
11222
11223 IF p_tax_call_type = G_ESTIMATED_CALL_TYPE THEN
11224
11225 -- get trx line details
11226 OPEN l_txlitminsts_csr(p_source_trx_id);
11227 FETCH l_txlitminsts_csr INTO l_inst_item_line_id, l_party_site_uses_id1, l_fin_asset_id;
11228 IF l_txlitminsts_csr%NOTFOUND THEN
11229 OKC_API.set_message( p_app_name => 'OKC',
11230 p_msg_name => G_REQUIRED_VALUE,
11231 p_token1 => G_COL_NAME_TOKEN,
11232 p_token1_value => 'PARTY_SITE_USES_ID1');
11233 RAISE OKL_API.G_EXCEPTION_ERROR;
11234 END IF;
11235
11236 IF l_fin_asset_id IS NULL THEN
11237 OKC_API.set_message( p_app_name => 'OKC',
11238 p_msg_name => G_REQUIRED_VALUE,
11239 p_token1 => G_COL_NAME_TOKEN,
11240 p_token1_value => 'DNZ_CLE_ID');
11241 RAISE OKL_API.G_EXCEPTION_ERROR;
11242 END IF;
11243 CLOSE l_txlitminsts_csr;
11244
11245 OPEN l_okcklines_csr(l_fin_asset_id);
11246 FETCH l_okcklines_csr INTO l_chr_id, l_name;
11247 IF l_okcklines_csr%NOTFOUND THEN
11248 OKC_API.set_message( p_app_name => 'OKC',
11249 p_msg_name => G_INVALID_VALUE,
11250 p_token1 => G_COL_NAME_TOKEN,
11251 p_token1_value => 'DNZ_CLE_ID');
11252 RAISE OKL_API.G_EXCEPTION_ERROR;
11253 END IF;
11254 CLOSE l_okcklines_csr;
11255
11256 -- get the new location id
11257 OPEN l_partysiteuses_csr(l_party_site_uses_id1);
11258 FETCH l_partysiteuses_csr INTO l_new_location_id,l_install_location_id;
11259 IF l_partysiteuses_csr%NOTFOUND THEN
11260 OKC_API.set_message( p_app_name => 'OKC',
11261 p_msg_name => G_REQUIRED_VALUE,
11262 p_token1 => G_COL_NAME_TOKEN,
11263 p_token1_value => 'LOCATION_ID');
11264 RAISE OKL_API.G_EXCEPTION_ERROR;
11265 END IF;
11266 CLOSE l_partysiteuses_csr;
11267
11268 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11269 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11270 'l_inst_item_line_id'||l_inst_item_line_id);
11271 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11272 'l_party_site_uses_id1'||l_party_site_uses_id1);
11273 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11274 'l_fin_asset_id'||l_fin_asset_id);
11275 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11276 'l_chr_id'||l_chr_id);
11277 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11278 'l_name'||l_name);
11279 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11280 'l_new_location_id'||l_new_location_id);
11281 END IF;
11282
11283 -- Populate tax sources id to deactivate existing upfront tax lines for this asset.
11284 IF (p_serialized_asset = 'N' OR (p_serialized_asset = 'Y' AND (p_alc_final_call IS NULL OR p_alc_final_call = 'Y'))) THEN -- This processing will be done only once for the serialized asset
11285 k := 1;
11286 l_tax_src_tbl.DELETE;
11287 -- This cursor will fetch only a few rows
11288 FOR l_taxsources_rec IN l_taxsources_csr(l_chr_id, l_fin_asset_id) LOOP
11289 -- K1 > A1 > RENT
11290 -- K2 > A1 > Estimated Property Tax
11291
11292 -- Store the tax source IDs in a table
11293 l_tax_src_tbl(k) := l_taxsources_rec.ID;
11294
11295 IF (k = 1) THEN
11296 l_org_id := l_taxsources_rec.org_id;
11297 l_entity_code := l_taxsources_rec.entity_code;
11298 l_event_class_code := l_taxsources_rec.event_class_code;
11299 END IF;
11300
11301 k := k + 1;
11302 END LOOP;
11303
11304 -- Inactivate the previous ACTIVE upfront tax lines - begin
11305 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11306 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11307 'l_tax_src_tbl.COUNT '||l_tax_src_tbl.COUNT );
11308 END IF;
11309
11310 IF l_tax_src_tbl.COUNT > 0 THEN
11311 BEGIN
11312 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
11313 UPDATE OKL_TAX_SOURCES SET TAX_LINE_STATUS_CODE = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
11314
11315 EXCEPTION
11316 WHEN OTHERS THEN
11317 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
11318 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
11319 OKL_API.set_message(
11320 p_app_name => 'OKL',
11321 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
11322 p_token1 => 'TABLE_NAME',
11323 p_token1_value => 'OKL_TAX_SOURCES',
11324 p_token2 => 'ERROR_CODE',
11325 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
11326 p_token3 => 'ITERATION',
11327 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
11328 END LOOP;
11329 RAISE OKL_API.G_EXCEPTION_ERROR;
11330 END IF;
11331 END;
11332
11333 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11334 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11335 'Inactivated the previous active upfront tax lines ' );
11336 END IF;
11337 END IF;
11338 -- Inactivate the previous ACTIVE upfront tax lines - end
11339
11340 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11341 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11342 'Updated existing tax lines status to INACIVE');
11343 END IF;
11344
11345 END IF; -- Processing will be only once for the serialized asset
11346
11347 -- Get contract header info
11348 get_k_hdr_tax_params(
11349 p_api_version => p_api_version,
11350 p_init_msg_list => p_init_msg_list,
11351 x_return_status => x_return_status,
11352 x_msg_count => x_msg_count,
11353 x_msg_data => x_msg_data,
11354 p_khr_id => l_chr_id,
11355 p_source_trx_name => p_source_trx_name,
11356 p_source_table => p_source_table,
11357 x_cust_acct_id => lx_cust_acct_id,
11358 x_bill_to_siteuseid => lx_bill_to_siteuseid,
11359 x_currency_code => lx_currency_code,
11360 x_cust_trx_type_id => lx_cust_trx_type_id,
11361 x_precision => lx_precision,
11362 x_minimum_accountable_unit => lx_minimum_accountable_unit,
11363 x_prch_opt_det => lx_alc_prch_opt_det,
11364 x_fin_prod_id_det => lx_alc_fin_prod_id_det,
11365 x_int_disclosed_det => lx_alc_int_disclosed_det,
11366 x_org_id => lx_org_id,
11367 x_book_class_code => lx_book_class_code,
11368 x_bill_to_party_site_id => lx_bill_to_party_site_id,
11369 x_bill_to_party_id => lx_bill_to_party_id,
11370 x_bill_to_location_id => lx_bill_to_location_id,
11371 x_currency_conversion_type => lx_currency_conversion_type,
11372 x_currency_conversion_rate => lx_currency_conversion_rate,
11373 x_currency_conversion_date => lx_currency_conversion_date,
11374 x_contract_start_date => lx_contract_start_date);
11375
11376 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11377 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11378 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11379 RAISE OKL_API.G_EXCEPTION_ERROR;
11380 END IF;
11381
11382 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11383 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11384 'lx_cust_acct_id '||lx_cust_acct_id );
11385 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11386 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
11387 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11388 'lx_currency_code '||lx_currency_code );
11389 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11390 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
11391 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11392 'lx_precision '||lx_precision );
11393 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11394 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
11395 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11396 'lx_alc_prch_opt_det '||lx_alc_prch_opt_det );
11397 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11398 'lx_alc_fin_prod_id_det '||lx_alc_fin_prod_id_det );
11399 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11400 'lx_alc_int_disclosed_det '||lx_alc_int_disclosed_det );
11401 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11402 'lx_org_id '||lx_org_id );
11403 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11404 'lx_book_class_code '||lx_book_class_code );
11405 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11406 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
11407 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11408 'lx_bill_to_party_id '||lx_bill_to_party_id );
11409 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11410 'lx_bill_to_location_id '||lx_bill_to_location_id );
11411 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11412 'lx_currency_conversion_type '||lx_currency_conversion_type );
11413 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11414 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
11415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11416 'lx_currency_conversion_date '||lx_currency_conversion_date );
11417 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11418 'lx_contract_start_date '||lx_contract_start_date );
11419 END IF;
11420
11421 -- get the asset level determinants
11422 get_asset_tax_params(
11423 p_api_version => p_api_version,
11424 p_init_msg_list => OKC_API.G_FALSE,
11425 x_return_status => x_return_status,
11426 x_msg_count => x_msg_count,
11427 x_msg_data => x_msg_data,
11428 p_khr_id => l_chr_id,
11429 p_kle_id => l_fin_asset_id,
11430 p_source_trx_name => p_source_trx_name,
11431 p_source_table => p_source_table,
11432 x_transfer_of_title => lx_alc_transfer_of_title,
11433 x_sale_lease_back => lx_alc_sale_lease_back,
11434 x_purchase_of_lease => lx_alc_purchase_of_lease,
11435 x_usage_of_equipment => lx_alc_usage_of_equipment,
11436 x_age_of_equipment => lx_alc_age_of_equipment,
11437 x_vendor_site_id => lx_alc_vendor_site_id);
11438
11439 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11440 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11441 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11442 RAISE OKL_API.G_EXCEPTION_ERROR;
11443 END IF;
11444
11445 -- Equipment Type(inventory item id)
11446 -- get the inventory item id
11447 OPEN l_invitem_csr(l_fin_asset_id);
11448 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
11449 IF l_invitem_csr%NOTFOUND THEN
11450 OKL_API.set_message( p_app_name => 'OKL',
11451 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
11452 p_token1 => 'ASSET_NUMBER',
11453 p_token1_value => l_name);
11454 RAISE OKL_API.G_EXCEPTION_ERROR;
11455 END IF;
11456 CLOSE l_invitem_csr;
11457
11458 -- get the Equipment Locationn (IB Loc)
11459 get_location_party_ids( p_api_version => p_api_version,
11460 p_init_msg_list => OKC_API.G_FALSE,
11461 x_return_status => x_return_status,
11462 x_msg_count => x_msg_count,
11463 x_msg_data => x_msg_data,
11464 p_cust_acct_id => lx_cust_acct_id,
11465 p_fin_asset_id => l_fin_asset_id,
11466 p_khr_id => l_chr_id,
11467 x_bill_to_party_site_id => lx_bill_to_party_site_id,
11468 x_bill_to_location_id => lx_bill_to_location_id,
11469 x_bill_to_party_id => lx_bill_to_party_id,
11470 x_bill_to_site_use_id => lx_bill_to_siteuseid,
11471 x_ship_to_party_site_id => lx_ship_to_party_site_id,
11472 x_ship_to_location_id => lx_ship_to_location_id,
11473 x_ship_to_party_id => lx_ship_to_party_id,
11474 x_ship_to_site_use_id => lx_ship_to_siteuseid);
11475
11476 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN -- will never be setting this to unexpecetd inside get_ufc_code ?
11477 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11478 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11479 RAISE OKL_API.G_EXCEPTION_ERROR;
11480 END IF;
11481
11482 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11483 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11484 'l_fin_asset_id '||l_fin_asset_id);
11485 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11486 'lx_alc_transfer_of_title '||lx_alc_transfer_of_title);
11487 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11488 'lx_alc_sale_lease_back '||lx_alc_sale_lease_back);
11489 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11490 'lx_alc_purchase_of_lease '||lx_alc_purchase_of_lease);
11491 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11492 'lx_alc_usage_of_equipment '||lx_alc_usage_of_equipment);
11493 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11494 'lx_alc_age_of_equipment '||lx_alc_age_of_equipment);
11495 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11496 'lx_alc_vendor_site_id '||lx_alc_vendor_site_id);
11497 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11498 'l_inv_item_id '||l_inv_item_id);
11499 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11500 'l_inv_item_org_id '||l_inv_item_org_id);
11501 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11502 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
11503 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11504 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
11505 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11506 'lx_ship_to_location_id '||lx_ship_to_location_id );
11507 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11508 'lx_ship_to_party_id '||lx_ship_to_party_id );
11509 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11510 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
11511 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11512 'lx_bill_to_location_id '||lx_bill_to_location_id );
11513 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11514 'lx_bill_to_party_id '||lx_bill_to_party_id );
11515 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11516 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
11517 END IF;
11518
11519 --asaawnka added for bug #6612165 start
11520 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11521 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11522 'lx_cust_acct_id '||lx_cust_acct_id);
11523 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11524 'l_install_location_id '||l_install_location_id);
11525 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11526 'l_new_location_id '||l_new_location_id);
11527 END IF;
11528 --get the ship to addresses for the new location specified during asset location change
11529 OPEN l_get_shiptositeid(lx_cust_acct_id,l_install_location_id,l_new_location_id);
11530 FETCH l_get_shiptositeid INTO lx_ship_to_siteuseid, lx_ship_to_party_site_id,
11531 lx_ship_to_party_id, lx_ship_to_location_id;
11532 CLOSE l_get_shiptositeid;
11533
11534 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11535 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11536 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
11537 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11538 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
11539 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11540 'lx_ship_to_location_id '||lx_ship_to_location_id );
11541 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11542 'lx_ship_to_party_id '||lx_ship_to_party_id );
11543 END IF;
11544 --asaawnka added for bug #6612165 end
11545
11546
11547 -- Check if taxable bais override applies to Asset location Change transaction
11548 OPEN l_txbasisoverride_csr(l_alc_trx_type_id_det);
11549 FETCH l_txbasisoverride_csr INTO l_fma_id;
11550 CLOSE l_txbasisoverride_csr;
11551
11552 IF l_fma_id IS NOT NULL THEN
11553
11554 OPEN l_formulae_csr(l_fma_id);
11555 FETCH l_formulae_csr INTO l_formula_name;
11556 IF l_formulae_csr%NOTFOUND THEN
11557 OKC_API.set_message( p_app_name => 'OKC',
11558 p_msg_name => G_INVALID_VALUE,
11559 p_token1 => G_COL_NAME_TOKEN,
11560 p_token1_value => 'FMA_ID');
11561 RAISE OKL_API.G_EXCEPTION_ERROR;
11562 END IF;
11563 CLOSE l_formulae_csr;
11564
11565 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11566 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11567 'l_formula_name '||l_formula_name);
11568 END IF;
11569 END IF;
11570
11571 -- Fetch the Ledger info
11572 l_ledger_id := okl_accounting_util.get_set_of_books_id;
11573
11574 -- Fetch the Tax country
11575 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
11576 x_msg_count => x_msg_count,
11577 x_msg_data => x_msg_data,
11578 p_legal_entity_id => l_legal_entity_id);
11579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11582 RAISE OKL_API.G_EXCEPTION_ERROR;
11583 END IF;
11584
11585 OPEN c_get_streams_count(l_chr_id, l_fin_asset_id);
11586 FETCH c_get_streams_count INTO l_stream_count;
11587 CLOSE c_get_streams_count;
11588
11589
11590 -- If the asset is serialized, divide the taxable amount by number of instances count
11591 -- Fetch the number of instances of asset
11592 OPEN c_get_ast_instances(l_fin_asset_id);
11593 FETCH c_get_ast_instances INTO l_asset_inst_count;
11594 CLOSE c_get_ast_instances;
11595
11596 -- 'l_alc_ser_def_code' value is used in specific to derive the TBC, PC, UFC codes only once
11597 -- for serialized asset in order to prevent the same processing for all serial numbers
11598 IF (p_serialized_asset = 'Y' AND l_stream_count > 1) THEN
11599 l_alc_ser_def_code := 'A'; -- If there are multiple stream types, fetch the codes always
11600 ELSIF (p_serialized_asset = 'Y' AND ((p_alc_final_call IS NULL OR p_alc_final_call = 'Y') AND l_asset_inst_count = 1)) THEN
11601 l_alc_ser_def_code := 'F'; -- If asset is serialized and asset is having only 1 unit , then fetch it
11602 ELSIF (p_serialized_asset = 'Y' AND p_alc_final_call IS NULL) THEN
11603 l_alc_ser_def_code := 'F'; -- If the asset is serialized and having multiple units, fetch only first time
11604 ELSIF (p_serialized_asset = 'Y' AND p_alc_final_call IN ('N', 'Y')) THEN
11605 l_alc_ser_def_code := 'N'; -- If the asset is serialized and having multiple units, fetch is already done in
11606 -- previous 'elsif' .. so don't fetch anymore, use the previous fetched values
11607 ELSIF (p_serialized_asset IS NULL OR p_serialized_asset = 'N') THEN
11608 l_alc_ser_def_code := 'A'; -- If the asset is not serialized fetch it
11609 END IF;
11610
11611 tax_call_cnt := 1;
11612
11613 -- This cursor will return only a few rows, typically 1 or 2
11614 -- For Non-Serialized asset
11615 -- A1 > Rent , A1 - Estimated Property tax etc
11616 -- For Serialized asset
11617 -- A1_ser1 > Rent , A1_ser1 - Estimated Property tax ( tax call)
11618 -- A1_ser2 > Rent , A1_ser2 - Estimated Property tax (2 tax call)
11619 -- A1_ser3 > Rent , A1_ser3 - Estimated Property tax (3 tax call)
11620 FOR l_assetstreams_rec IN l_assetstreams_csr(l_chr_id, l_fin_asset_id) LOOP
11621
11622 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11623 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11624 'Processing current payment '||l_assetstreams_rec.stream_type_id);
11625 END IF;
11626
11627 -- Get the default taxable basis amount
11628 OPEN l_strmelements_csr(l_assetstreams_rec.stream_id);
11629 FETCH l_strmelements_csr INTO l_taxable_basis;
11630 CLOSE l_strmelements_csr;
11631
11632 IF (p_serialized_asset = 'Y' AND l_asset_inst_count IS NOT NULL) THEN
11633 l_taxable_ser_basis := l_taxable_basis / l_asset_inst_count;
11634 END IF;
11635
11636 -- Populate tax sources record -- start
11637 lp_tax_src_params_rec.kle_id := l_fin_asset_id;
11638 lp_tax_src_params_rec.asset_number := l_name;
11639 lp_tax_src_params_rec.line_name := l_name;
11640
11641 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
11642 lp_tax_src_params_rec.ship_to_party_site_id := lx_ship_to_party_site_id;
11643 lp_tax_src_params_rec.ship_to_party_id := lx_ship_to_party_id;
11644 lp_tax_src_params_rec.ship_to_location_id := lx_ship_to_location_id;
11645
11646 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
11647 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
11648 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
11649 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
11650
11651 lp_tax_src_params_rec.inventory_item_id := l_inv_item_id;
11652 lp_tax_src_params_rec.sty_id := l_assetstreams_rec.stream_type_id;
11653
11654 lp_tax_src_params_rec.khr_id := l_chr_id;
11655 lp_tax_src_params_rec.trx_id := p_source_trx_id;
11656 lp_tax_src_params_rec.entity_code := G_ASSETS_ENTITY_CODE;
11657 lp_tax_src_params_rec.event_class_code := G_ALC_EVENT_CODE;
11658 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
11659 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
11660 lp_tax_src_params_rec.tax_reporting_flag := 'N';
11661 lp_tax_src_params_rec.reported_yn := 'N';
11662 lp_tax_src_params_rec.trx_date := l_trx_date;
11663 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
11664 lp_tax_src_params_rec.line_intended_use := lx_alc_usage_of_equipment;
11665 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
11666 lp_tax_src_params_rec.org_id := lx_org_id;
11667 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
11668 lp_tax_src_params_rec.try_id := l_alc_trx_type_id_det;
11669
11670 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
11671 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
11672 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
11673 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
11674 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
11675 lp_tax_src_params_rec.adjusted_doc_number := null;
11676 lp_tax_src_params_rec.adjusted_doc_date := null;
11677
11678 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
11679
11680 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
11681 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
11682 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
11683
11684 IF (p_serialized_asset = 'Y') THEN
11685 lp_tax_src_params_rec.line_amt := l_taxable_ser_basis;
11686 lp_tax_src_params_rec.alc_serialized_total_line_amt := l_taxable_basis;
11687 lp_tax_src_params_rec.tax_line_status_code := G_INACTIVE_STATUS;
11688
11689 IF (p_alc_final_call = 'Y') THEN
11690 -- Indicates tax for last serial number. Also, used to display the
11691 -- HGrid data
11692 -- alc_serialized_yn is set at the stream type level. If A1 is
11693 -- serialized (3 units), with 2 stream types, okl_tax_sources will
11694 -- have 6 rows. Out of these 2 rows (last ones for each atream type)
11695 -- will have alc_serialized_yn set to 'L'
11696 lp_tax_src_params_rec.alc_serialized_yn := 'L';
11697 ELSE
11698 lp_tax_src_params_rec.alc_serialized_yn := p_serialized_asset;
11699 END IF;
11700
11701 ELSE
11702 lp_tax_src_params_rec.line_amt := l_taxable_basis;
11703 lp_tax_src_params_rec.alc_serialized_total_line_amt := l_taxable_basis;
11704 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
11705 END IF;
11706 -- Populate tax sources record -- end
11707
11708 populate_tax_info(
11709 p_api_version => p_api_version,
11710 p_init_msg_list => OKC_API.G_FALSE,
11711 x_return_status => x_return_status,
11712 x_msg_count => x_msg_count,
11713 x_msg_data => x_msg_data,
11714 p_prch_opt_det => lx_alc_prch_opt_det,
11715 p_fin_prod_id_det => lx_alc_fin_prod_id_det,
11716 p_int_disclosed_det => lx_alc_int_disclosed_det,
11717 p_title_trnsfr_code => lx_alc_transfer_of_title,
11718 p_sale_lease_back_code => lx_alc_sale_lease_back,
11719 p_lease_purchased_code => lx_alc_purchase_of_lease,
11720 p_equip_usage_code => lx_alc_usage_of_equipment,
11721 p_vendor_site_id => lx_alc_vendor_site_id,
11722 p_age_of_equip => lx_alc_age_of_equipment,
11723 p_source_trx_name => p_source_trx_name,
11724 p_cust_trx_type_id => lx_cust_trx_type_id,
11725 p_book_class_code => lx_book_class_code,
11726 p_tax_call_cnt => tax_call_cnt,
11727 p_fma_id => l_fma_id,
11728 p_formula_name => l_formula_name,
11729 p_minimum_accountable_unit => lx_minimum_accountable_unit,
11730 p_precision => lx_precision,
11731 p_sales_quote_id => null,
11732 p_event_type_code => G_ALC_CRE_EVENT_CODE,
11733 p_ledger_id => l_ledger_id,
11734 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
11735 p_tax_src_params_rec => lp_tax_src_params_rec,
11736 p_quote_flag => 'N',
11737 p_rounding_ship_to_party_id => lx_ship_to_party_id,
11738 p_rounding_bill_to_party_id => lx_bill_to_party_id,
11739 p_line_amt_includes_tax_flag => 'N',
11740 p_term_quote_type_code => null,
11741 p_term_quote_reason_code => null,
11742 p_alc_ser_def_code => l_alc_ser_def_code,
11743 px_tax_sources_tbl => lx_tax_sources_tbl,
11744 px_line_params_tbl => lx_line_params_tbl );
11745
11746 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11747 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11748 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11749 RAISE OKL_API.G_EXCEPTION_ERROR;
11750 END IF;
11751
11752 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11753 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11754 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
11755 END IF;
11756
11757 tax_call_cnt := tax_call_cnt + 1;
11758 END LOOP;
11759
11760 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11761 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11762 'prepared new tax sources ');
11763 END IF;
11764
11765 -- insert into okl_tax_sources
11766 BEGIN
11767 IF lx_tax_sources_tbl.COUNT > 0 THEN
11768 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
11769 -- SAVE EXCEPTIONS
11770 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
11771 END IF;
11772 EXCEPTION
11773 WHEN OTHERS THEN
11774 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
11775 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
11776 OKL_API.set_message(
11777 p_app_name => 'OKL',
11778 p_msg_name => 'OKL_TX_TRX_INS_ERR',
11779 p_token1 => 'TABLE_NAME',
11780 p_token1_value => 'OKL_TAX_SOURCES',
11781 p_token2 => 'ERROR_CODE',
11782 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
11783 p_token3 => 'ITERATION',
11784 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
11785 END LOOP;
11786 RAISE OKL_API.G_EXCEPTION_ERROR;
11787 END IF;
11788 END;
11789 -- Insert into okl_tax_sources end --
11790
11791 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11792 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11793 ' inserted into okl_tax_sources ' );
11794 END IF;
11795
11796 -- At this point tax sources for previous upfront tax have been Inactivated
11797 -- and tax sources for the current tax calculations have been inserted"
11798 -- Incase of a non serailzed asset, sample tax sources are -
11799 -- K1 > A1 > RENT
11800 -- K1 > A1 > Est Prop Tax
11801 -- Above Tax sources are created during the single call from ALC to OKl Tax Engine
11802 -- Incase of a serailzed asset (3 units) , sample tax sources after the
11803 -- first call to OKL Tax engine, for 1st serial no. are -
11804 -- K1 > A1 > Ser 1 > RENT
11805 -- K1 > A1 > Ser 1 > Est Prop Tax
11806 -- During subsequent calls (for each serial no.), following taxsources will be created
11807 -- K1 > A1 > Ser 2 > RENT
11808 -- K1 > A1 > Ser 2 > Est Prop Tax
11809 -- K1 > A1 > Ser 3 > RENT
11810 -- K1 > A1 > Ser 4 > Est Prop Tax
11811 -- Call tax engine to calculate new tax for the current asset location change transaction
11812 IF lx_line_params_tbl.COUNT > 0 THEN
11813 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11814 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11815 'Before tax engine call '||x_return_status);
11816 END IF;
11817
11818 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
11819 lp_hdr_params_rec.trx_id := p_source_trx_id;
11820 lp_hdr_params_rec.internal_organization_id := lx_org_id;
11821 lp_hdr_params_rec.entity_code := G_ASSETS_ENTITY_CODE;
11822 lp_hdr_params_rec.event_class_code := G_ALC_EVENT_CODE;
11823 lp_hdr_params_rec.event_type_code := G_ALC_CRE_EVENT_CODE;
11824 lp_hdr_params_rec.quote_flag := 'N';
11825
11826 OKL_TAX_INTERFACE_PVT.calculate_tax(
11827 p_api_version => p_api_version,
11828 p_init_msg_list => p_init_msg_list,
11829 x_return_status => x_return_status,
11830 x_msg_count => x_msg_count,
11831 x_msg_data => x_msg_data,
11832 p_hdr_params_rec => lp_hdr_params_rec,
11833 p_line_params_tbl => lx_line_params_tbl);
11834
11835 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11836 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11837 'After tax engine call '||x_return_status);
11838 END IF;
11839
11840 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11841 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11842 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11843 RAISE OKL_API.G_EXCEPTION_ERROR;
11844 END IF;
11845 END IF;
11846
11847 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11848 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11849 'Calling "update_tax_sources_total" .. ');
11850 END IF;
11851
11852 update_tax_sources_total(p_api_version => p_api_version,
11853 p_init_msg_list => p_init_msg_list,
11854 x_return_status => x_return_status,
11855 x_msg_count => x_msg_count,
11856 x_msg_data => x_msg_data,
11857 p_source_trx_id => p_source_trx_id,
11858 p_source_trx_name => p_source_trx_name,
11859 p_serialized_asset => p_serialized_asset);
11860
11861 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11862 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11863 'Return Status' || x_return_status);
11864 END IF;
11865
11866 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11867 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11868 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11869 RAISE OKL_API.G_EXCEPTION_ERROR;
11870 END IF;
11871
11872 IF (p_serialized_asset = 'Y' AND p_alc_final_call = 'Y') THEN
11873 G_UFC_CODE := null;
11874 G_TBC_CODE := null;
11875 G_PC_CODE := null;
11876 G_TAX_CLASS_CODE := null;
11877
11878 populate_alc_total_tax(p_api_version => p_api_version,
11879 p_init_msg_list => p_init_msg_list,
11880 x_return_status => l_return_status,
11881 x_msg_count => x_msg_count,
11882 x_msg_data => x_msg_data,
11883 p_asset_id => l_fin_asset_id,
11884 p_request_id => p_request_id,
11885 p_serialized_asset => p_serialized_asset);
11886
11887 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11888 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11889 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11890 RAISE OKL_API.G_EXCEPTION_ERROR;
11891 END IF;
11892 ELSE
11893 populate_alc_total_tax(p_api_version => p_api_version,
11894 p_init_msg_list => p_init_msg_list,
11895 x_return_status => l_return_status,
11896 x_msg_count => x_msg_count,
11897 x_msg_data => x_msg_data,
11898 p_asset_id => l_fin_asset_id,
11899 p_request_id => p_request_id);
11900
11901 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11902 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11903 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11904 RAISE OKL_API.G_EXCEPTION_ERROR;
11905 END IF;
11906 END IF;
11907
11908 ELSIF p_tax_call_type = G_ACTUAL_CALL_TYPE THEN
11909
11910 OPEN l_okltaxsources_csr(cp_app_id => G_OKL_APPLICATION_ID,
11911 cp_trx_id => p_source_trx_id);
11912 FETCH l_okltaxsources_csr into l_taxsources_rec;
11913 CLOSE l_okltaxsources_csr;
11914
11915
11916 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11917 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11918 'process_final_upfront_tax');
11919 END IF;
11920
11921 -- Call ebtax procedure to flip the reportable flag from N to Y
11922 process_final_upfront_tax( p_api_version => p_api_version,
11923 p_init_msg_list => p_init_msg_list,
11924 x_return_status => x_return_status,
11925 x_msg_count => x_msg_count,
11926 x_msg_data => x_msg_data,
11927 p_trx_id => p_source_trx_id,
11928 p_application_id => G_OKL_APPLICATION_ID,
11929 p_entity_code => l_taxsources_rec.entity_code,
11930 p_event_class_code => l_taxsources_rec.event_class_code);
11931
11932 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11933 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11934 'Return Status' || x_return_status);
11935 END IF;
11936
11937 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11938 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11939 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11940 RAISE OKL_API.G_EXCEPTION_ERROR;
11941 END IF;
11942
11943 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11944 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11945 'Calling "make_tax_sources_reportable" .. ');
11946 END IF;
11947
11948 make_tax_sources_reportable(p_api_version => p_api_version,
11949 p_init_msg_list => p_init_msg_list,
11950 x_return_status => x_return_status,
11951 x_msg_count => x_msg_count,
11952 x_msg_data => x_msg_data,
11953 p_source_trx_id => p_source_trx_id);
11954
11955 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11956 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11957 'Return Status' || x_return_status);
11958 END IF;
11959
11960 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11961 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11962 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11963 RAISE OKL_API.G_EXCEPTION_ERROR;
11964 END IF;
11965
11966 END IF;
11967
11968 -- CS will Call BPD API with ALC trx, to create tax only invoice.
11969
11970 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11971 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ','End(-)');
11972 END IF;
11973 EXCEPTION
11974 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11975 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11976 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
11977 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
11978 END IF;
11979
11980 IF l_trxassets_csr%ISOPEN THEN
11981 CLOSE l_trxassets_csr;
11982 END IF;
11983
11984 IF l_txlitminsts_csr%ISOPEN THEN
11985 CLOSE l_txlitminsts_csr;
11986 END IF;
11987
11988 IF l_partysiteuses_csr%ISOPEN THEN
11989 CLOSE l_partysiteuses_csr;
11990 END IF;
11991
11992 IF l_taxsources_csr%ISOPEN THEN
11993 CLOSE l_taxsources_csr;
11994 END IF;
11995
11996 IF l_okcklines_csr%ISOPEN THEN
11997 CLOSE l_okcklines_csr;
11998 END IF;
11999
12000 IF l_assetstreams_csr%ISOPEN THEN
12001 CLOSE l_assetstreams_csr;
12002 END IF;
12003
12004 IF l_strmelements_csr%ISOPEN THEN
12005 CLOSE l_strmelements_csr;
12006 END IF;
12007
12008 IF l_txbasisoverride_csr%ISOPEN THEN
12009 CLOSE l_txbasisoverride_csr;
12010 END IF;
12011
12012 IF l_invitem_csr%ISOPEN THEN
12013 CLOSE l_invitem_csr;
12014 END IF;
12015
12016 IF l_formulae_csr%ISOPEN THEN
12017 CLOSE l_formulae_csr;
12018 END IF;
12019
12020 IF c_get_streams_count%ISOPEN THEN
12021 CLOSE c_get_streams_count;
12022 END IF;
12023
12024 x_return_status := OKL_API.G_RET_STS_ERROR;
12025 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12026 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12027 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
12028 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
12029 END IF;
12030
12031 IF l_trxassets_csr%ISOPEN THEN
12032 CLOSE l_trxassets_csr;
12033 END IF;
12034
12035 IF l_txlitminsts_csr%ISOPEN THEN
12036 CLOSE l_txlitminsts_csr;
12037 END IF;
12038
12039 IF l_partysiteuses_csr%ISOPEN THEN
12040 CLOSE l_partysiteuses_csr;
12041 END IF;
12042
12043 IF l_taxsources_csr%ISOPEN THEN
12044 CLOSE l_taxsources_csr;
12045 END IF;
12046
12047 IF l_okcklines_csr%ISOPEN THEN
12048 CLOSE l_okcklines_csr;
12049 END IF;
12050
12051 IF l_assetstreams_csr%ISOPEN THEN
12052 CLOSE l_assetstreams_csr;
12053 END IF;
12054
12055 IF l_strmelements_csr%ISOPEN THEN
12056 CLOSE l_strmelements_csr;
12057 END IF;
12058
12059 IF l_txbasisoverride_csr%ISOPEN THEN
12060 CLOSE l_txbasisoverride_csr;
12061 END IF;
12062
12063 IF l_invitem_csr%ISOPEN THEN
12064 CLOSE l_invitem_csr;
12065 END IF;
12066
12067 IF l_formulae_csr%ISOPEN THEN
12068 CLOSE l_formulae_csr;
12069 END IF;
12070
12071 IF c_get_streams_count%ISOPEN THEN
12072 CLOSE c_get_streams_count;
12073 END IF;
12074
12075 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12076
12077 WHEN OTHERS THEN
12078 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12079 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
12080 'EXCEPTION :'||sqlerrm);
12081 END IF;
12082
12083 IF l_trxassets_csr%ISOPEN THEN
12084 CLOSE l_trxassets_csr;
12085 END IF;
12086
12087 IF l_txlitminsts_csr%ISOPEN THEN
12088 CLOSE l_txlitminsts_csr;
12089 END IF;
12090
12091 IF l_partysiteuses_csr%ISOPEN THEN
12092 CLOSE l_partysiteuses_csr;
12093 END IF;
12094
12095 IF l_taxsources_csr%ISOPEN THEN
12096 CLOSE l_taxsources_csr;
12097 END IF;
12098
12099 IF l_okcklines_csr%ISOPEN THEN
12100 CLOSE l_okcklines_csr;
12101 END IF;
12102
12103 IF l_assetstreams_csr%ISOPEN THEN
12104 CLOSE l_assetstreams_csr;
12105 END IF;
12106
12107 IF l_strmelements_csr%ISOPEN THEN
12108 CLOSE l_strmelements_csr;
12109 END IF;
12110
12111 IF l_txbasisoverride_csr%ISOPEN THEN
12112 CLOSE l_txbasisoverride_csr;
12113 END IF;
12114
12115 IF l_invitem_csr%ISOPEN THEN
12116 CLOSE l_invitem_csr;
12117 END IF;
12118
12119 IF l_formulae_csr%ISOPEN THEN
12120 CLOSE l_formulae_csr;
12121 END IF;
12122
12123 IF c_get_streams_count%ISOPEN THEN
12124 CLOSE c_get_streams_count;
12125 END IF;
12126
12127 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12128 -- unexpected error
12129 OKL_API.set_message(p_app_name => g_app_name,
12130 p_msg_name => g_unexpected_error,
12131 p_token1 => g_sqlcode_token,
12132 p_token1_value => sqlcode,
12133 p_token2 => g_sqlerrm_token,
12134 p_token2_value => sqlerrm);
12135
12136 END process_asset_loc_tax;
12137
12138 /*========================================================================
12139 | PRIVATE PROCEDURE process_split_asset_tax
12140 |
12141 | DESCRIPTION
12142 | This procedure is called from calculate_sales_tax procedure to Split
12143 | the currently active upfront tax lines for the asset being split
12144 |
12145 | CALLED FROM calculate_sales_tax()
12146 |
12147 |
12148 | CALLS PROCEDURES/FUNCTIONS
12149 | OKL_TAX_SOURCES_PUB.update_tax_sources()
12150 |
12151 |
12152 | PARAMETERS
12153 | p_source_trx_id -- Source transaction ID
12154 | p_source_trx_name -- Source transaction Name
12155 | p_source_table -- Source table
12156 |
12157 | KNOWN ISSUES
12158 |
12159 | NOTES
12160 |
12161 |
12162 | MODIFICATION HISTORY
12163 | Date Author Description of Changes
12164 | 08-APR-05 SECHAWLA Created
12165 |
12166 *=======================================================================*/
12167 PROCEDURE process_split_asset_tax(
12168 p_api_version IN NUMBER,
12169 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
12170 x_return_status OUT NOCOPY VARCHAR2,
12171 x_msg_count OUT NOCOPY NUMBER,
12172 x_msg_data OUT NOCOPY VARCHAR2,
12173 p_source_trx_id IN NUMBER,
12174 p_source_trx_name IN VARCHAR2,
12175 p_source_table IN VARCHAR2) IS
12176
12177 -------------Split Asset -------------------------
12178 --p_source_trx_id ---> okl_trx_assets.id
12179 --p_source_trx_name ---> 'Split Asset'
12180 --p_source_table ---> 'OKL_TRX_ASSETS'
12181 --------------------------------------------------
12182
12183 -- validate source trx id
12184 CURSOR l_trxassets_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
12185 SELECT a.try_id, a.date_trans_occurred
12186 FROM okl_trx_assets a, okl_trx_types_tl b
12187 WHERE a.id = cp_trx_id
12188 AND a.try_id = b.id
12189 AND b.name = cp_trx_type_name
12190 AND language = 'US';
12191
12192 -- get the trx line information
12193 CURSOR l_txlassets_csr(cp_id IN NUMBER) IS
12194 SELECT txl.id, okc.cle_id kle_id, -- financial asset to be split
12195 txl.dnz_khr_id,
12196 txl.asset_number,
12197 txl.current_units
12198 FROM okl_txl_assets_b txl,
12199 okc_k_lines_b okc
12200 WHERE txl.tas_id = cp_id
12201 AND txl.kle_id = okc.id
12202 AND txl.dnz_khr_id = okc.dnz_chr_id;
12203
12204 -- get the trx details information
12205 CURSOR l_txdassets_csr(cp_id IN NUMBER) IS
12206 SELECT txd.id, okc.cle_id target_kle_id, txd.asset_number, txd.split_percent, txd.quantity
12207 FROM okl_txd_assets_b txd,
12208 okc_k_lines_b okc
12209 WHERE tal_id = cp_id
12210 AND txd.target_kle_id = okc.id;
12211
12212
12213 -- get the current active upfront tax sources for this asset
12214 -- k1 > A1 > RENT
12215 -- k1 > A1 > Estimated Property Tax
12216 CURSOR l_taxsources_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER ) IS
12217 SELECT id, khr_id, kle_id, asset_number, trx_id, trx_line_id, entity_code, event_class_code,
12218 trx_level_type, tax_call_type_code, sty_id, trx_business_category, reported_yn,
12219 sel_id, line_name, application_id, tax_reporting_flag, default_taxation_country,
12220 product_category, user_defined_fisc_class, line_intended_use,
12221 tax_classification_code, inventory_item_id, bill_to_cust_acct_id, legal_entity_id,
12222 line_amt, assessable_value, total_tax, product_type,
12223 product_fisc_classification, trx_date, provnl_tax_determination_date,
12224 try_id, ship_to_location_id, ship_to_party_site_id, ship_to_party_id,
12225 bill_to_party_site_id, bill_to_location_id, bill_to_party_id,
12226 ship_to_cust_acct_site_use_id, bill_to_cust_acct_site_use_id,
12227 trx_currency_code, currency_conversion_type, currency_conversion_rate,
12228 currency_conversion_date, org_id, alc_serialized_yn
12229 FROM okl_tax_sources
12230 WHERE khr_id = cp_khr_id
12231 AND kle_id = cp_kle_id
12232 AND tax_call_type_code = G_UPFRONT_TAX
12233 AND tax_line_status_code = G_ACTIVE_STATUS
12234 AND ADJUSTED_DOC_TRX_ID IS NULL
12235 AND ADJUSTED_DOC_TRX_LINE_ID IS NULL;
12236
12237 -- get the tax lines corresponding to previous upfront tax source ID
12238 CURSOR l_taxtrxdetails_csr(cp_txs_id IN NUMBER) IS
12239 SELECT *
12240 FROM okl_tax_trx_details
12241 WHERE txs_id = cp_txs_id;
12242
12243 -- get the contract id
12244 CURSOR l_okcklines_csr(cp_kle_id IN NUMBER) IS
12245 SELECT dnz_chr_id, name
12246 FROM okc_k_lines_v
12247 WHERE id = cp_kle_id;
12248
12249 CURSOR l_racusttrxtypes_csr IS
12250 SELECT cust_trx_type_id
12251 FROM ra_cust_trx_types_all
12252 WHERE name = 'Invoice-OKL';
12253
12254 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
12255 SELECT precision, minimum_accountable_unit
12256 FROM fnd_currencies
12257 WHERE currency_code = cp_currency_code
12258 AND enabled_flag = 'Y'
12259 AND NVL(start_date_active, sysdate) <= sysdate
12260 AND NVL(end_date_active, sysdate) >= sysdate;
12261
12262 TYPE tax_sources_tbl_type IS TABLE OF OKL_TAX_SOURCES%ROWTYPE INDEX BY BINARY_INTEGER;
12263 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12264
12265 l_tax_src_tbl tax_src_tbl_type;
12266 l_tax_sources_tbl tax_sources_tbl_type;
12267 rev_trx_lines_tbl zx_trx_lines_tbl_type;
12268 rev_trx_hdr_rec line_params_rec_type;
12269 l_line_params_tbl line_params_tbl_type;
12270 l_new_tax_sources_tbl tax_sources_tbl_type;
12271 lp_hdr_params_rec hdr_params_rec_type;
12272
12273 l_spl_trx_type_id NUMBER;
12274 l_trx_date DATE;
12275 l_fin_asset_id NUMBER;
12276 l_dnz_khr_id NUMBER;
12277 l_asset_number VARCHAR2(150);
12278 l_txl_id NUMBER;
12279 l_txd_id NUMBER;
12280 l_current_units NUMBER;
12281 l_dnz_chr_id NUMBER;
12282 l_name VARCHAR2(150);
12283 k NUMBER;
12284 j NUMBER;
12285 old_tx_src_cnt NUMBER;
12286 new_tax_count NUMBER;
12287 lp_txsv_rec txsv_rec_type;
12288 lp_txsv_rec_emp txsv_rec_type;
12289 lx_txsv_rec txsv_rec_type;
12290 l_split_ratio NUMBER;
12291 l_reverse BOOLEAN := FALSE;
12292 l_org_id NUMBER;
12293 l_legal_entity_id NUMBER;
12294
12295 l_cust_trx_type_id NUMBER;
12296 l_precision NUMBER;
12297 l_minimum_accountable_unit NUMBER;
12298 l_hdr_total_tax NUMBER := 0;
12299 l_trx_currency_code VARCHAR2(15);
12300 l_asset_ser_alc VARCHAR2(1);
12301
12302 BEGIN
12303
12304 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12305 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax','Begin(+)');
12306 END IF;
12307
12308 --Print Input Variables
12309 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12310 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12311 'p_init_msg_list :'||p_init_msg_list);
12312 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12313 'p_source_trx_id :'||p_source_trx_id);
12314 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12315 'p_source_trx_name :'||p_source_trx_name);
12316 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12317 'p_source_table :'||p_source_table);
12318 END IF;
12319
12320 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12321
12322 -- validate the source trx id
12323 OPEN l_trxassets_csr(p_source_trx_id, p_source_trx_name);
12324 FETCH l_trxassets_csr INTO l_spl_trx_type_id, l_trx_date;
12325 IF l_trxassets_csr%NOTFOUND THEN
12326 -- source trx id is invalid
12327 OKC_API.set_message( p_app_name => 'OKC',
12328 p_msg_name => G_INVALID_VALUE,
12329 p_token1 => G_COL_NAME_TOKEN,
12330 p_token1_value => 'SOURCE_TRX_ID');
12331 RAISE OKL_API.G_EXCEPTION_ERROR;
12332 END IF;
12333 CLOSE l_trxassets_csr;
12334
12335 -- get trx line information
12336 OPEN l_txlassets_csr(p_source_trx_id);
12337 FETCH l_txlassets_csr INTO l_txl_id, l_fin_asset_id, l_dnz_khr_id,
12338 l_asset_number, l_current_units;
12339 IF l_txlassets_csr%NOTFOUND THEN
12340 OKC_API.set_message( p_app_name => 'OKC',
12341 p_msg_name => G_REQUIRED_VALUE,
12342 p_token1 => G_COL_NAME_TOKEN,
12343 p_token1_value => 'Financial Asset');
12344 RAISE OKL_API.G_EXCEPTION_ERROR;
12345 END IF;
12346
12347 IF l_fin_asset_id IS NULL THEN
12348 OKC_API.set_message( p_app_name => 'OKC',
12349 p_msg_name => G_REQUIRED_VALUE,
12350 p_token1 => G_COL_NAME_TOKEN,
12351 p_token1_value => 'KLE_ID');
12352 RAISE OKL_API.G_EXCEPTION_ERROR;
12353 END IF;
12354
12355 IF l_current_units IS NULL THEN
12356 OKC_API.set_message( p_app_name => 'OKC',
12357 p_msg_name => G_REQUIRED_VALUE,
12358 p_token1 => G_COL_NAME_TOKEN,
12359 p_token1_value => 'CURRENT_UNITS');
12360 RAISE OKL_API.G_EXCEPTION_ERROR;
12361 END IF;
12362
12363 CLOSE l_txlassets_csr;
12364
12365 IF l_dnz_khr_id IS NULL OR l_asset_number IS NULL THEN
12366 OPEN l_okcklines_csr(l_fin_asset_id);
12367 FETCH l_okcklines_csr INTO l_dnz_chr_id, l_name;
12368 IF l_okcklines_csr%NOTFOUND THEN
12369 OKC_API.set_message( p_app_name => 'OKC',
12370 p_msg_name => G_INVALID_VALUE,
12371 p_token1 => G_COL_NAME_TOKEN,
12372 p_token1_value => 'KLE_ID');
12373 RAISE OKL_API.G_EXCEPTION_ERROR;
12374 END IF;
12375 CLOSE l_okcklines_csr;
12376
12377 IF l_dnz_khr_id IS NULL THEN
12378 l_dnz_khr_id := l_dnz_chr_id;
12379 END IF;
12380
12381 IF l_asset_number IS NULL THEN
12382 l_asset_number := l_name;
12383 IF l_asset_number IS NULL THEN
12384 OKC_API.set_message( p_app_name => 'OKC',
12385 p_msg_name => G_REQUIRED_VALUE,
12386 p_token1 => G_COL_NAME_TOKEN,
12387 p_token1_value => 'ASSET_NUMBER');
12388 RAISE OKL_API.G_EXCEPTION_ERROR;
12389 END IF;
12390 END IF;
12391 END IF;
12392
12393 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12394 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12395 'l_txl_id'||l_txl_id);
12396 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12397 'l_fin_asset_id'||l_fin_asset_id);
12398 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12399 'l_dnz_khr_id'||l_dnz_khr_id);
12400 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12401 'l_asset_number'||l_asset_number);
12402 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12403 'l_current_units'||l_current_units);
12404 END IF;
12405
12406
12407 -- Create adjusting tax source transaction for the previous active tax lines
12408 -- These tax lines could have resulted from an earlier booking / rebooking /
12409 -- asset location change / split asset transactions
12410 -- Deactivate existing upfront tax lines for this asset.
12411 k := 1;
12412 l_tax_sources_tbl.DELETE;
12413 l_tax_src_tbl.DELETE;
12414 -- This cursor will fetch only a few rows
12415 FOR l_taxsources_rec IN l_taxsources_csr(l_dnz_khr_id, l_fin_asset_id) LOOP
12416 -- K1 > A1 > RENT
12417 -- K2 > A1 > Estimated Property Tax
12418
12419 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12420 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12421 'creating -ve tax sources for prev ACTIVE upfront tax lines '||' k = '||k);
12422 END IF;
12423
12424 IF (k = 1) THEN
12425 l_reverse := TRUE;
12426 l_org_id := l_taxsources_rec.org_id;
12427 l_legal_entity_id := l_taxsources_rec.legal_entity_id;
12428 l_trx_currency_code := l_taxsources_rec.trx_currency_code;
12429 END IF;
12430
12431 l_hdr_total_tax := l_hdr_total_tax + l_taxsources_rec.total_tax;
12432
12433 -- Create adjusting tax source transaction for the previous active tax lines
12434 l_tax_sources_tbl(k).id := get_seq_id;
12435 l_tax_sources_tbl(k).khr_id := l_taxsources_rec.khr_id;
12436 l_tax_sources_tbl(k).kle_id := l_taxsources_rec.kle_id;
12437 l_tax_sources_tbl(k).asset_number := l_taxsources_rec.asset_number;
12438 l_tax_sources_tbl(k).trx_id := p_source_trx_id; -- split asset trx id
12439 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
12440 l_tax_sources_tbl(k).entity_code := G_CONTRACTS_ENTITY_CODE;
12441 l_tax_sources_tbl(k).event_class_code := G_REBOOK_EVENT_CLASS_CODE;
12442 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
12443 l_tax_sources_tbl(k).adjusted_doc_entity_code := l_taxsources_rec.entity_code;
12444 l_tax_sources_tbl(k).adjusted_doc_event_class_code := l_taxsources_rec.event_class_code;
12445 l_tax_sources_tbl(k).adjusted_doc_trx_id := l_taxsources_rec.trx_id;
12446 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := l_taxsources_rec.trx_line_id;
12447 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := l_taxsources_rec.trx_level_type;
12448 l_tax_sources_tbl(k).adjusted_doc_number := NULL;
12449 l_tax_sources_tbl(k).adjusted_doc_date := NULL;
12450 l_tax_sources_tbl(k).tax_call_type_code := l_taxsources_rec.tax_call_type_code;
12451 l_tax_sources_tbl(k).sty_id := l_taxsources_rec.sty_id;
12452 l_tax_sources_tbl(k).trx_business_category := l_taxsources_rec.trx_business_category;
12453 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
12454
12455 l_tax_sources_tbl(k).sel_id := l_taxsources_rec.sel_id;
12456 l_tax_sources_tbl(k).line_name := l_taxsources_rec.line_name;
12457 l_tax_sources_tbl(k).application_id := l_taxsources_rec.application_id;
12458 l_tax_sources_tbl(k).tax_reporting_flag := l_taxsources_rec.tax_reporting_flag;
12459 l_tax_sources_tbl(k).default_taxation_country := l_taxsources_rec.default_taxation_country;
12460 l_tax_sources_tbl(k).product_category := l_taxsources_rec.product_category;
12461 l_tax_sources_tbl(k).user_defined_fisc_class := l_taxsources_rec.user_defined_fisc_class;
12462 l_tax_sources_tbl(k).line_intended_use := l_taxsources_rec.line_intended_use;
12463 l_tax_sources_tbl(k).tax_classification_code := l_taxsources_rec.tax_classification_code;
12464 l_tax_sources_tbl(k).inventory_item_id := l_taxsources_rec.inventory_item_id;
12465 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_taxsources_rec.bill_to_cust_acct_id;
12466 l_tax_sources_tbl(k).org_id := l_taxsources_rec.org_id;
12467 l_tax_sources_tbl(k).legal_entity_id := l_taxsources_rec.legal_entity_id;
12468 l_tax_sources_tbl(k).line_amt := -l_taxsources_rec.line_amt;
12469 l_tax_sources_tbl(k).assessable_value := -l_taxsources_rec.assessable_value;
12470 l_tax_sources_tbl(k).total_tax := null; -- Populated after Reverse document ZX call
12471 l_tax_sources_tbl(k).product_type := l_taxsources_rec.product_type;
12472 l_tax_sources_tbl(k).product_fisc_classification := l_taxsources_rec.product_fisc_classification;
12473 l_tax_sources_tbl(k).trx_date := l_trx_date;
12474 l_tax_sources_tbl(k).provnl_tax_determination_date := l_taxsources_rec.trx_date;
12475 l_tax_sources_tbl(k).try_id := l_spl_trx_type_id;
12476 l_tax_sources_tbl(k).ship_to_location_id := l_taxsources_rec.ship_to_location_id;
12477 l_tax_sources_tbl(k).ship_to_party_site_id := l_taxsources_rec.ship_to_party_site_id;
12478 l_tax_sources_tbl(k).ship_to_party_id := l_taxsources_rec.ship_to_party_id;
12479 l_tax_sources_tbl(k).bill_to_party_site_id := l_taxsources_rec.bill_to_party_site_id;
12480 l_tax_sources_tbl(k).bill_to_location_id := l_taxsources_rec.bill_to_location_id;
12481 l_tax_sources_tbl(k).bill_to_party_id := l_taxsources_rec.bill_to_party_id;
12482 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := l_taxsources_rec.ship_to_cust_acct_site_use_id;
12483 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := l_taxsources_rec.bill_to_cust_acct_site_use_id;
12484 l_tax_sources_tbl(k).trx_currency_code := l_taxsources_rec.trx_currency_code;
12485 l_tax_sources_tbl(k).currency_conversion_type := l_taxsources_rec.currency_conversion_type;
12486 l_tax_sources_tbl(k).currency_conversion_rate := l_taxsources_rec.currency_conversion_rate;
12487 l_tax_sources_tbl(k).currency_conversion_date := l_taxsources_rec.currency_conversion_date;
12488 l_tax_sources_tbl(k).alc_serialized_yn := l_taxsources_rec.alc_serialized_yn;
12489
12490 l_tax_sources_tbl(k).reported_yn := l_taxsources_rec.reported_yn;
12491 l_tax_sources_tbl(k).program_id := NULL;
12492 l_tax_sources_tbl(k).request_id := NULL;
12493 l_tax_sources_tbl(k).program_application_id := NULL;
12494 l_tax_sources_tbl(k).program_update_date := NULL;
12495 l_tax_sources_tbl(k).attribute_category := NULL;
12496
12497 l_tax_sources_tbl(k).attribute1 := NULL;
12498 l_tax_sources_tbl(k).attribute2 := NULL;
12499 l_tax_sources_tbl(k).attribute3 := NULL;
12500 l_tax_sources_tbl(k).attribute4 := NULL;
12501 l_tax_sources_tbl(k).attribute5 := NULL;
12502 l_tax_sources_tbl(k).attribute6 := NULL;
12503 l_tax_sources_tbl(k).attribute7 := NULL;
12504 l_tax_sources_tbl(k).attribute8 := NULL;
12505 l_tax_sources_tbl(k).attribute9 := NULL;
12506 l_tax_sources_tbl(k).attribute10 := NULL;
12507 l_tax_sources_tbl(k).attribute11 := NULL;
12508 l_tax_sources_tbl(k).attribute12 := NULL;
12509 l_tax_sources_tbl(k).attribute13 := NULL;
12510 l_tax_sources_tbl(k).attribute14 := NULL;
12511 l_tax_sources_tbl(k).attribute15 := NULL;
12512 l_tax_sources_tbl(k).created_by := G_USER_ID;
12513 l_tax_sources_tbl(k).creation_date := SYSDATE;
12514 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
12515 l_tax_sources_tbl(k).last_update_date := SYSDATE;
12516 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
12517 l_tax_sources_tbl(k).object_version_number := NULL;
12518
12519 l_tax_src_tbl(k) := l_taxsources_rec.id;
12520
12521 -- Populate the ZX reverse transaction lines table for tax call
12522 rev_trx_lines_tbl(k).internal_organization_id := l_org_id;
12523 rev_trx_lines_tbl(k).reversing_appln_id := G_OKL_APPLICATION_ID;
12524 rev_trx_lines_tbl(k).reversing_entity_code := G_CONTRACTS_ENTITY_CODE;
12525 rev_trx_lines_tbl(k).reversing_evnt_cls_code := G_REBOOK_EVENT_CLASS_CODE;
12526 rev_trx_lines_tbl(k).reversing_trx_id := p_source_trx_id;
12527 rev_trx_lines_tbl(k).reversing_trx_level_type := l_taxsources_rec.trx_level_type;
12528 rev_trx_lines_tbl(k).reversing_trx_line_id := l_tax_sources_tbl(k).id;
12529
12530 rev_trx_lines_tbl(k).reversed_appln_id := G_OKL_APPLICATION_ID;
12531 rev_trx_lines_tbl(k).reversed_entity_code := l_taxsources_rec.entity_code;
12532 rev_trx_lines_tbl(k).reversed_evnt_cls_code := l_taxsources_rec.event_class_code;
12533 rev_trx_lines_tbl(k).reversed_trx_id := l_taxsources_rec.trx_id;
12534 rev_trx_lines_tbl(k).reversed_trx_level_type := l_taxsources_rec.trx_level_type;
12535 rev_trx_lines_tbl(k).reversed_trx_line_id := l_taxsources_rec.trx_line_id;
12536
12537 k := k + 1;
12538 END LOOP;
12539
12540 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12541 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12542 ' k = '||k);
12543 END IF;
12544
12545 -- Inactivate the previous ACTIVE tax lines - begin
12546 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12547 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12548 ' Inactivating the status of previous active upfront tax sources - Start ');
12549 END IF;
12550
12551 IF l_tax_src_tbl.COUNT > 0 THEN
12552 BEGIN
12553 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
12554 UPDATE okl_tax_sources SET tax_line_status_code = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
12555 EXCEPTION
12556 WHEN OTHERS THEN
12557 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12558 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12559 OKL_API.set_message(
12560 p_app_name => 'OKL',
12561 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
12562 p_token1 => 'TABLE_NAME',
12563 p_token1_value => 'OKL_TAX_SOURCES',
12564 p_token2 => 'ERROR_CODE',
12565 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12566 p_token3 => 'ITERATION',
12567 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12568 END LOOP;
12569 RAISE OKL_API.G_EXCEPTION_ERROR;
12570 END IF;
12571 END;
12572 END IF;
12573
12574 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12575 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12576 'Inactivating the status of previous active upfront tax sources - End ' );
12577 END IF;
12578 -- Inactivate the previous ACTIVE tax lines - end
12579
12580 -- bulk insert into okl_tax_sources -- start
12581 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12582 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12583 ' Insert Adjusting tax sources - Start');
12584 END IF;
12585
12586 BEGIN
12587 IF l_tax_sources_tbl.COUNT > 0 THEN
12588 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
12589 -- SAVE EXCEPTIONS
12590 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
12591 END IF;
12592 EXCEPTION
12593 WHEN OTHERS THEN
12594 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12595 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12596 OKL_API.set_message(p_app_name => 'OKL',
12597 p_msg_name => 'OKL_TX_TRX_INS_ERR',
12598 p_token1 => 'TABLE_NAME',
12599 p_token1_value => 'OKL_TAX_SOURCES',
12600 p_token2 => 'ERROR_CODE',
12601 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12602 p_token3 => 'ITERATION',
12603 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12604 END LOOP;
12605 RAISE OKL_API.G_EXCEPTION_ERROR;
12606 END IF;
12607 END;
12608
12609 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12610 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12611 ' Insert Adjusting tax sources - End');
12612 END IF;
12613 -- bulk insert into okl_tax_sources -- end
12614
12615 -- Reverse document call
12616 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12617 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12618 'Calling OKL_TAX_INTERFACE_PVT.reverse_document');
12619 END IF;
12620
12621 IF (l_reverse) THEN -- Process Reversal only if the tax is created for the contract
12622
12623 rev_trx_hdr_rec.internal_organization_id := l_org_id;
12624 rev_trx_hdr_rec.application_id := G_OKL_APPLICATION_ID;
12625 rev_trx_hdr_rec.trx_id := p_source_trx_id;
12626 rev_trx_hdr_rec.legal_entity_id := l_legal_entity_id;
12627 rev_trx_hdr_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
12628 rev_trx_hdr_rec.event_class_code := G_REBOOK_EVENT_CLASS_CODE;
12629
12630 OKL_TAX_INTERFACE_PVT.reverse_document (
12631 p_api_version => p_api_version,
12632 p_init_msg_list => p_init_msg_list,
12633 x_return_status => x_return_status,
12634 x_msg_count => x_msg_count,
12635 x_msg_data => x_msg_data,
12636 p_rev_trx_hdr_rec => rev_trx_hdr_rec,
12637 p_rev_trx_lines_tbl => rev_trx_lines_tbl);
12638
12639 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12640 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12641 'Return Status' || x_return_status);
12642 END IF;
12643
12644 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12645 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12646 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12647 RAISE OKL_API.G_EXCEPTION_ERROR;
12648 END IF;
12649
12650 -- Get the total tax amount corresponding to 'Reverse' transaction from
12651 -- zx_lines and update total_tax on okl_tax_sources
12652 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12653 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12654 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
12655 END IF;
12656
12657 update_tax_sources_total(p_api_version => p_api_version,
12658 p_init_msg_list => p_init_msg_list,
12659 x_return_status => x_return_status,
12660 x_msg_count => x_msg_count,
12661 x_msg_data => x_msg_data,
12662 p_source_trx_id => p_source_trx_id,
12663 p_source_trx_name => p_source_trx_name);
12664
12665 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12666 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12667 'Return Status' || x_return_status);
12668 END IF;
12669
12670 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12671 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12672 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12673 RAISE OKL_API.G_EXCEPTION_ERROR;
12674 END IF;
12675
12676 END IF;
12677
12678 -- get the AR cust trx type ID
12679 OPEN l_racusttrxtypes_csr;
12680 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
12681 IF l_racusttrxtypes_csr%NOTFOUND THEN
12682 -- cust trx tyep id is required
12683 OKC_API.set_message( p_app_name => 'OKC',
12684 p_msg_name => G_REQUIRED_VALUE,
12685 p_token1 => G_COL_NAME_TOKEN,
12686 p_token1_value => 'CUST_TRX_TYPE_ID');
12687 RAISE OKL_API.G_EXCEPTION_ERROR;
12688 END IF;
12689 CLOSE l_racusttrxtypes_csr;
12690
12691 OPEN l_fndcurrency_csr(l_trx_currency_code);
12692 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit; -- l_minimum_accountable_unit is optional in fnd_currencies
12693 -- but mandatory for tax team
12694 -- check with Nilesh
12695 IF l_fndcurrency_csr%NOTFOUND THEN
12696 OKC_API.set_message( p_app_name => 'OKC',
12697 p_msg_name => G_INVALID_VALUE,
12698 p_token1 => G_COL_NAME_TOKEN,
12699 p_token1_value => 'CURRENCY_CODE');
12700 RAISE OKL_API.G_EXCEPTION_ERROR;
12701 END IF;
12702 CLOSE l_fndcurrency_csr;
12703
12704 IF k > 1 THEN -- if there are any existing ACTIVE upfront tax lines
12705 old_tx_src_cnt := k - 1; -- tax source trx count for the original asset
12706
12707 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12708 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12709 'old_tx_src_cnt '||old_tx_src_cnt );
12710 END IF;
12711
12712 l_asset_ser_alc := is_serialized_and_alc(l_dnz_khr_id);
12713
12714 -- create tax sources for assets after split
12715 l_new_tax_sources_tbl.DELETE;
12716 new_tax_count := 1;
12717 FOR l_txdassets_rec IN l_txdassets_csr(l_txl_id) LOOP -- for each new asset
12718
12719 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12720 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12721 'asset after split '||l_txdassets_rec.asset_number );
12722 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12723 'split_percent '||l_txdassets_rec.split_percent );
12724 END IF;
12725
12726 IF l_txdassets_rec.split_percent IS NOT NULL THEN
12727 l_split_ratio := l_txdassets_rec.split_percent / 100;
12728 ELSE
12729 l_split_ratio := l_txdassets_rec.quantity / l_current_units;
12730 END IF;
12731
12732 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12733 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12734 'l_split_ratio '||l_split_ratio );
12735 END IF;
12736
12737 -- for each new asset, create as many tax source transactions as the original asset
12738 FOR k IN 1..old_tx_src_cnt LOOP
12739
12740 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12741 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12742 'Creating tax src for the new asset, k = '||k);
12743 END IF;
12744
12745 -- Create new tax sources for split transaction
12746 l_new_tax_sources_tbl(new_tax_count).id := get_seq_id;
12747 l_new_tax_sources_tbl(new_tax_count).khr_id := l_dnz_khr_id;
12748 l_new_tax_sources_tbl(new_tax_count).kle_id := l_txdassets_rec.target_kle_id;
12749 l_new_tax_sources_tbl(new_tax_count).asset_number := l_txdassets_rec.asset_number;
12750 l_new_tax_sources_tbl(new_tax_count).trx_id := p_source_trx_id; -- split asset trx id
12751 l_new_tax_sources_tbl(new_tax_count).trx_line_id := l_new_tax_sources_tbl(new_tax_count).id;
12752 l_new_tax_sources_tbl(new_tax_count).entity_code := G_CONTRACTS_ENTITY_CODE;
12753 l_new_tax_sources_tbl(new_tax_count).event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12754 l_new_tax_sources_tbl(new_tax_count).trx_level_type := G_TRX_LEVEL_TYPE;
12755 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_entity_code := NULL;
12756 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_event_class_code := NULL;
12757 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_id := NULL;
12758 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_line_id := NULL;
12759 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_level_type := NULL;
12760 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_number := NULL;
12761 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_date := NULL;
12762 l_new_tax_sources_tbl(new_tax_count).tax_call_type_code := G_UPFRONT_TAX;
12763 l_new_tax_sources_tbl(new_tax_count).sty_id := l_tax_sources_tbl(k).sty_id;
12764 l_new_tax_sources_tbl(new_tax_count).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
12765 l_new_tax_sources_tbl(new_tax_count).tax_line_status_code := G_ACTIVE_STATUS;
12766
12767 l_new_tax_sources_tbl(new_tax_count).sel_id := l_tax_sources_tbl(k).sel_id;
12768 l_new_tax_sources_tbl(new_tax_count).line_name := l_txdassets_rec.asset_number;
12769 l_new_tax_sources_tbl(new_tax_count).application_id := G_OKL_APPLICATION_ID;
12770 l_new_tax_sources_tbl(new_tax_count).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
12771 l_new_tax_sources_tbl(new_tax_count).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
12772 l_new_tax_sources_tbl(new_tax_count).product_category := l_tax_sources_tbl(k).product_category;
12773 l_new_tax_sources_tbl(new_tax_count).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
12774 l_new_tax_sources_tbl(new_tax_count).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
12775 l_new_tax_sources_tbl(new_tax_count).tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
12776 l_new_tax_sources_tbl(new_tax_count).inventory_item_id := l_tax_sources_tbl(k).inventory_item_id;
12777 l_new_tax_sources_tbl(new_tax_count).bill_to_cust_acct_id := l_tax_sources_tbl(k).bill_to_cust_acct_id;
12778 l_new_tax_sources_tbl(new_tax_count).org_id := l_tax_sources_tbl(k).org_id;
12779 l_new_tax_sources_tbl(new_tax_count).legal_entity_id := l_tax_sources_tbl(k).legal_entity_id;
12780 l_new_tax_sources_tbl(new_tax_count).line_amt := -l_tax_sources_tbl(k).line_amt * l_split_ratio;
12781 l_new_tax_sources_tbl(new_tax_count).assessable_value := -l_tax_sources_tbl(k).assessable_value * l_split_ratio;
12782 l_new_tax_sources_tbl(new_tax_count).total_tax := null; -- Populated after tax call
12783 l_new_tax_sources_tbl(new_tax_count).product_type := l_tax_sources_tbl(k).product_type;
12784 l_new_tax_sources_tbl(new_tax_count).product_fisc_classification := l_tax_sources_tbl(k).product_fisc_classification;
12785 l_new_tax_sources_tbl(new_tax_count).trx_date := l_tax_sources_tbl(k).trx_date;
12786 l_new_tax_sources_tbl(new_tax_count).provnl_tax_determination_date := l_tax_sources_tbl(k).provnl_tax_determination_date;
12787 l_new_tax_sources_tbl(new_tax_count).try_id := l_spl_trx_type_id;
12788 l_new_tax_sources_tbl(new_tax_count).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
12789 l_new_tax_sources_tbl(new_tax_count).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
12790 l_new_tax_sources_tbl(new_tax_count).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12791 l_new_tax_sources_tbl(new_tax_count).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
12792 l_new_tax_sources_tbl(new_tax_count).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
12793 l_new_tax_sources_tbl(new_tax_count).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12794 l_new_tax_sources_tbl(new_tax_count).ship_to_cust_acct_site_use_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
12795 l_new_tax_sources_tbl(new_tax_count).bill_to_cust_acct_site_use_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
12796 l_new_tax_sources_tbl(new_tax_count).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
12797 l_new_tax_sources_tbl(new_tax_count).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
12798 l_new_tax_sources_tbl(new_tax_count).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
12799 l_new_tax_sources_tbl(new_tax_count).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
12800 l_new_tax_sources_tbl(new_tax_count).alc_serialized_yn := l_tax_sources_tbl(k).alc_serialized_yn;
12801
12802 l_new_tax_sources_tbl(new_tax_count).reported_yn := l_tax_sources_tbl(k).reported_yn;
12803 l_new_tax_sources_tbl(new_tax_count).program_id := NULL;
12804 l_new_tax_sources_tbl(new_tax_count).request_id := NULL;
12805 l_new_tax_sources_tbl(new_tax_count).program_application_id := NULL;
12806 l_new_tax_sources_tbl(new_tax_count).program_update_date := NULL;
12807 l_new_tax_sources_tbl(new_tax_count).attribute_category := NULL;
12808
12809 l_new_tax_sources_tbl(new_tax_count).attribute1 := NULL;
12810 l_new_tax_sources_tbl(new_tax_count).attribute2 := NULL;
12811 l_new_tax_sources_tbl(new_tax_count).attribute3 := NULL;
12812 l_new_tax_sources_tbl(new_tax_count).attribute4 := NULL;
12813 l_new_tax_sources_tbl(new_tax_count).attribute5 := NULL;
12814 l_new_tax_sources_tbl(new_tax_count).attribute6 := NULL;
12815 l_new_tax_sources_tbl(new_tax_count).attribute7 := NULL;
12816 l_new_tax_sources_tbl(new_tax_count).attribute8 := NULL;
12817 l_new_tax_sources_tbl(new_tax_count).attribute9 := NULL;
12818 l_new_tax_sources_tbl(new_tax_count).attribute10 := NULL;
12819 l_new_tax_sources_tbl(new_tax_count).attribute11 := NULL;
12820 l_new_tax_sources_tbl(new_tax_count).attribute12 := NULL;
12821 l_new_tax_sources_tbl(new_tax_count).attribute13 := NULL;
12822 l_new_tax_sources_tbl(new_tax_count).attribute14 := NULL;
12823 l_new_tax_sources_tbl(new_tax_count).attribute15 := NULL;
12824 l_new_tax_sources_tbl(new_tax_count).created_by := G_USER_ID;
12825 l_new_tax_sources_tbl(new_tax_count).creation_date := SYSDATE;
12826 l_new_tax_sources_tbl(new_tax_count).last_updated_by := G_USER_ID;
12827 l_new_tax_sources_tbl(new_tax_count).last_update_date := SYSDATE;
12828 l_new_tax_sources_tbl(new_tax_count).last_update_login := G_LOGIN_ID;
12829 l_new_tax_sources_tbl(new_tax_count).object_version_number := NULL;
12830
12831 -- Populate line params table for tax calculation
12832 l_line_params_tbl(new_tax_count).application_id := G_OKL_APPLICATION_ID;
12833 l_line_params_tbl(new_tax_count).trx_id := p_source_trx_id;
12834 l_line_params_tbl(new_tax_count).internal_organization_id := l_tax_sources_tbl(k).org_id;
12835 l_line_params_tbl(new_tax_count).entity_code := G_CONTRACTS_ENTITY_CODE;
12836 l_line_params_tbl(new_tax_count).event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12837 l_line_params_tbl(new_tax_count).event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
12838 l_line_params_tbl(new_tax_count).trx_date := l_tax_sources_tbl(k).trx_date;
12839 l_line_params_tbl(new_tax_count).ledger_id := okl_accounting_util.get_set_of_books_id;
12840 l_line_params_tbl(new_tax_count).legal_entity_id := l_tax_sources_tbl(k).legal_entity_id;
12841 l_line_params_tbl(new_tax_count).trx_level_type := G_TRX_LEVEL_TYPE;
12842 l_line_params_tbl(new_tax_count).line_level_action := G_CREATE_LINE_LEVEL_ACTION;
12843 l_line_params_tbl(new_tax_count).trx_line_id := l_new_tax_sources_tbl(new_tax_count).id;
12844 l_line_params_tbl(new_tax_count).line_amt := -l_tax_sources_tbl(k).line_amt * l_split_ratio;
12845 l_line_params_tbl(new_tax_count).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
12846 l_line_params_tbl(new_tax_count).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
12847 l_line_params_tbl(new_tax_count).product_type := l_tax_sources_tbl(k).product_type;
12848 l_line_params_tbl(new_tax_count).output_tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
12849 l_line_params_tbl(new_tax_count).assessable_value := -l_tax_sources_tbl(k).assessable_value * l_split_ratio;
12850 l_line_params_tbl(new_tax_count).receivables_trx_type_id := l_cust_trx_type_id;
12851 l_line_params_tbl(new_tax_count).product_id := l_tax_sources_tbl(k).inventory_item_id;
12852 l_line_params_tbl(new_tax_count).adjusted_doc_entity_code := NULL;
12853 l_line_params_tbl(new_tax_count).adjusted_doc_event_class_code := NULL;
12854 l_line_params_tbl(new_tax_count).adjusted_doc_trx_id := NULL;
12855 l_line_params_tbl(new_tax_count).adjusted_doc_line_id := NULL;
12856 l_line_params_tbl(new_tax_count).adjusted_doc_trx_level_type := NULL;
12857 l_line_params_tbl(new_tax_count).adjusted_doc_number := NULL;
12858 l_line_params_tbl(new_tax_count).adjusted_doc_date := NULL;
12859 l_line_params_tbl(new_tax_count).line_amt_includes_tax_flag := 'N';
12860 l_line_params_tbl(new_tax_count).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
12861 l_line_params_tbl(new_tax_count).product_category := l_tax_sources_tbl(k).product_category;
12862 l_line_params_tbl(new_tax_count).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
12863 l_line_params_tbl(new_tax_count).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
12864 l_line_params_tbl(new_tax_count).ship_to_cust_acct_site_use_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
12865 l_line_params_tbl(new_tax_count).bill_to_cust_acct_site_use_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
12866 l_line_params_tbl(new_tax_count).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
12867 l_line_params_tbl(new_tax_count).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
12868 l_line_params_tbl(new_tax_count).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12869 l_line_params_tbl(new_tax_count).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
12870 l_line_params_tbl(new_tax_count).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
12871 l_line_params_tbl(new_tax_count).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12872 l_line_params_tbl(new_tax_count).rounding_ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12873 l_line_params_tbl(new_tax_count).rounding_bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12874 l_line_params_tbl(new_tax_count).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
12875 l_line_params_tbl(new_tax_count).precision := l_precision;
12876 l_line_params_tbl(new_tax_count).minimum_accountable_unit := l_minimum_accountable_unit;
12877 l_line_params_tbl(new_tax_count).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
12878 l_line_params_tbl(new_tax_count).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
12879 l_line_params_tbl(new_tax_count).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
12880 l_line_params_tbl(new_tax_count).provnl_tax_determination_date := l_tax_sources_tbl(k).provnl_tax_determination_date;
12881 l_line_params_tbl(new_tax_count).ctrl_total_hdr_tax_amt := l_hdr_total_tax;
12882
12883 new_tax_count := new_tax_count + 1;
12884
12885 END LOOP;
12886
12887 END LOOP;
12888
12889 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12890 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12891 'l_line_params_tbl.COUNT '||l_line_params_tbl.COUNT);
12892 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12893 'l_new_tax_sources_tbl.COUNT '||l_new_tax_sources_tbl.COUNT);
12894 END IF;
12895
12896 -- bulk insert into okl_tax_sources -- start
12897 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12898 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12899 ' Insert Split asset tax sources - Start');
12900 END IF;
12901
12902 BEGIN
12903 IF l_new_tax_sources_tbl.COUNT > 0 THEN
12904 FORALL indx in l_new_tax_sources_tbl.FIRST..l_new_tax_sources_tbl.LAST
12905 -- SAVE EXCEPTIONS
12906 INSERT INTO okl_tax_sources VALUES l_new_tax_sources_tbl(indx);
12907 END IF;
12908 EXCEPTION
12909 WHEN OTHERS THEN
12910 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12911 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12912 OKL_API.set_message(p_app_name => 'OKL',
12913 p_msg_name => 'OKL_TX_TRX_INS_ERR',
12914 p_token1 => 'TABLE_NAME',
12915 p_token1_value => 'OKL_TAX_SOURCES',
12916 p_token2 => 'ERROR_CODE',
12917 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12918 p_token3 => 'ITERATION',
12919 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12920 END LOOP;
12921 RAISE OKL_API.G_EXCEPTION_ERROR;
12922 END IF;
12923 END;
12924
12925 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12926 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12927 ' Insert Split asset tax sources - End');
12928 END IF;
12929 -- bulk insert into okl_tax_sources -- end
12930
12931
12932 IF l_line_params_tbl.COUNT > 0 THEN
12933 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12934 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12935 'Before tax engine call '||x_return_status);
12936 END IF;
12937
12938 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
12939 lp_hdr_params_rec.trx_id := p_source_trx_id;
12940 lp_hdr_params_rec.internal_organization_id := l_org_id;
12941 lp_hdr_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
12942 lp_hdr_params_rec.event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12943 lp_hdr_params_rec.event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
12944 lp_hdr_params_rec.quote_flag := 'N';
12945
12946 OKL_TAX_INTERFACE_PVT.calculate_tax(
12947 p_api_version => p_api_version,
12948 p_init_msg_list => p_init_msg_list,
12949 x_return_status => x_return_status,
12950 x_msg_count => x_msg_count,
12951 x_msg_data => x_msg_data,
12952 p_hdr_params_rec => lp_hdr_params_rec,
12953 p_line_params_tbl => l_line_params_tbl);
12954
12955 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12956 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12957 'After tax engine call '||x_return_status);
12958 END IF;
12959
12960 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12961 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12962 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12963 RAISE OKL_API.G_EXCEPTION_ERROR;
12964 END IF;
12965 END IF;
12966
12967 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12968 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12969 'Calling "update_tax_sources_total" .. ');
12970 END IF;
12971
12972 update_tax_sources_total(p_api_version => p_api_version,
12973 p_init_msg_list => p_init_msg_list,
12974 x_return_status => x_return_status,
12975 x_msg_count => x_msg_count,
12976 x_msg_data => x_msg_data,
12977 p_source_trx_id => p_source_trx_id);
12978
12979 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12980 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12981 'Return Status' || x_return_status);
12982 END IF;
12983
12984 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12985 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12986 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12987 RAISE OKL_API.G_EXCEPTION_ERROR;
12988 END IF;
12989
12990 -- Populate Serialized Asset total tax, if the ALC happened on the asset
12991 -- before the Split process
12992 IF (l_asset_ser_alc = 'Y') THEN
12993 FOR l_txdassets_rec IN l_txdassets_csr(l_txl_id) LOOP
12994 populate_ser_split_total_tax(p_api_version => p_api_version,
12995 p_init_msg_list => p_init_msg_list,
12996 x_return_status => x_return_status,
12997 x_msg_count => x_msg_count,
12998 x_msg_data => x_msg_data,
12999 p_asset_id => l_txdassets_rec.target_kle_id,
13000 p_serialized_asset => l_asset_ser_alc);
13001
13002 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13003 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13004 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13005 RAISE OKL_API.G_EXCEPTION_ERROR;
13006 END IF;
13007 END LOOP;
13008 END IF;
13009
13010 END IF; -- if there are any existing ACTIVE upfront tax lines
13011
13012 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13013 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ','End(-)');
13014 END IF;
13015
13016 EXCEPTION
13017 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13018 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13019 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
13020 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
13021 END IF;
13022
13023 IF l_trxassets_csr%ISOPEN THEN
13024 CLOSE l_trxassets_csr;
13025 END IF;
13026
13027 IF l_txlassets_csr%ISOPEN THEN
13028 CLOSE l_txlassets_csr;
13029 END IF;
13030
13031 IF l_txdassets_csr%ISOPEN THEN
13032 CLOSE l_txdassets_csr;
13033 END IF;
13034
13035 IF l_taxsources_csr%ISOPEN THEN
13036 CLOSE l_taxsources_csr;
13037 END IF;
13038
13039 IF l_taxtrxdetails_csr%ISOPEN THEN
13040 CLOSE l_taxtrxdetails_csr;
13041 END IF;
13042
13043 IF l_okcklines_csr%ISOPEN THEN
13044 CLOSE l_okcklines_csr;
13045 END IF;
13046
13047 IF l_racusttrxtypes_csr%ISOPEN THEN
13048 CLOSE l_racusttrxtypes_csr;
13049 END IF;
13050
13051 IF l_fndcurrency_csr%ISOPEN THEN
13052 CLOSE l_fndcurrency_csr;
13053 END IF;
13054
13055 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13056 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13057 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
13058 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
13059 END IF;
13060
13061 IF l_trxassets_csr%ISOPEN THEN
13062 CLOSE l_trxassets_csr;
13063 END IF;
13064
13065 IF l_txlassets_csr%ISOPEN THEN
13066 CLOSE l_txlassets_csr;
13067 END IF;
13068
13069 IF l_txdassets_csr%ISOPEN THEN
13070 CLOSE l_txdassets_csr;
13071 END IF;
13072
13073 IF l_taxsources_csr%ISOPEN THEN
13074 CLOSE l_taxsources_csr;
13075 END IF;
13076
13077 IF l_taxtrxdetails_csr%ISOPEN THEN
13078 CLOSE l_taxtrxdetails_csr;
13079 END IF;
13080
13081 IF l_okcklines_csr%ISOPEN THEN
13082 CLOSE l_okcklines_csr;
13083 END IF;
13084
13085 IF l_racusttrxtypes_csr%ISOPEN THEN
13086 CLOSE l_racusttrxtypes_csr;
13087 END IF;
13088
13089 IF l_fndcurrency_csr%ISOPEN THEN
13090 CLOSE l_fndcurrency_csr;
13091 END IF;
13092
13093 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
13094
13095 WHEN OTHERS THEN
13096 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13097 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
13098 'EXCEPTION :'||sqlerrm);
13099 END IF;
13100
13101 IF l_trxassets_csr%ISOPEN THEN
13102 CLOSE l_trxassets_csr;
13103 END IF;
13104
13105 IF l_txlassets_csr%ISOPEN THEN
13106 CLOSE l_txlassets_csr;
13107 END IF;
13108
13109 IF l_txdassets_csr%ISOPEN THEN
13110 CLOSE l_txdassets_csr;
13111 END IF;
13112
13113 IF l_taxsources_csr%ISOPEN THEN
13114 CLOSE l_taxsources_csr;
13115 END IF;
13116
13117 IF l_taxtrxdetails_csr%ISOPEN THEN
13118 CLOSE l_taxtrxdetails_csr;
13119 END IF;
13120
13121 IF l_okcklines_csr%ISOPEN THEN
13122 CLOSE l_okcklines_csr;
13123 END IF;
13124
13125 IF l_racusttrxtypes_csr%ISOPEN THEN
13126 CLOSE l_racusttrxtypes_csr;
13127 END IF;
13128
13129 IF l_fndcurrency_csr%ISOPEN THEN
13130 CLOSE l_fndcurrency_csr;
13131 END IF;
13132
13133 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
13134 -- unexpected error
13135 OKL_API.set_message(p_app_name => g_app_name,
13136 p_msg_name => g_unexpected_error,
13137 p_token1 => g_sqlcode_token,
13138 p_token1_value => sqlcode,
13139 p_token2 => g_sqlerrm_token,
13140 p_token2_value => sqlerrm);
13141
13142 END process_split_asset_tax;
13143
13144 /*========================================================================
13145 | PRIVATE PROCEDURE process_booking_upfront_tax
13146 |
13147 | DESCRIPTION
13148 | This procedure is called from calculate_sales_tax procedure to calculate
13149 | Upfront tax during Pre Booking and Booking
13150 |
13151 | CALLED FROM calculate_sales_tax()
13152 |
13153 |
13154 | CALLS PROCEDURES/FUNCTIONS
13155 | get_k_hdr_tax_params()
13156 | get_asset_tax_params()
13157 | get_location_party_ids()
13158 | populate_tax_info()
13159 | OKL_TAX_INTERFACE_PVT.calculate_tax()
13160 |
13161 |
13162 | PARAMETERS
13163 | p_source_trx_id -- Source transaction ID
13164 | p_source_trx_name -- Source transaction Name
13165 | p_source_table -- Source table
13166 | p_tax_call_type -- 'ESTIMATED'/'ACTUAL'
13167 |
13168 | KNOWN ISSUES
13169 |
13170 | NOTES
13171 |
13172 |
13173 | MODIFICATION HISTORY
13174 | Date Author Description of Changes
13175 | 08-APR-05 SECHAWLA Created
13176 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Pre-Booking and Booking
13177 | setups into 'Booking'
13178 |
13179 *=======================================================================*/
13180 PROCEDURE process_booking_upfront_tax(
13181 p_api_version IN NUMBER,
13182 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
13183 x_return_status OUT NOCOPY VARCHAR2,
13184 x_msg_count OUT NOCOPY NUMBER,
13185 x_msg_data OUT NOCOPY VARCHAR2,
13186 p_source_trx_id IN NUMBER,
13187 p_source_trx_name IN VARCHAR2,
13188 p_source_table IN VARCHAR2,
13189 p_tax_call_type IN VARCHAR2) IS
13190
13191 -------------Booking --------------
13192 --p_source_trx_id ---> okl_trx_contracts.id
13193 --p_source_trx_name ---> 'Booking'
13194 --p_source_table ---> 'OKL_TRX_CONTRACTS'
13195 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL'
13196 --------------------------------------------------
13197 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
13198
13199 -- validate source trx id (Booking)
13200 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
13201 SELECT a.try_id, a.khr_id, a.legal_entity_id
13202 FROM okl_trx_contracts a , okl_trx_types_tl b
13203 WHERE a.id = cp_trx_id
13204 AND a.try_id = b.id
13205 AND b.name = cp_trx_type_name
13206 AND language = 'US';
13207
13208 -- validate source trx id (Rebook)
13209 -- okl_trx_contracts.khr_id has original contract id
13210 -- okl_trx_contracts.khr_id_new has rebook copy contract id
13211 CURSOR l_trxcontracts_rbk_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
13212 SELECT a.khr_id_new, a.legal_entity_id
13213 FROM okl_trx_contracts a , okl_trx_types_tl b
13214 WHERE a.id = cp_trx_id
13215 AND a.try_id = b.id
13216 AND b.name = cp_trx_type_name
13217 AND language = 'US';
13218
13219 CURSOR l_bookingtrxtypeid_csr IS
13220 SELECT id
13221 FROM okl_trx_types_v
13222 WHERE NAME = 'Booking';
13223
13224 CURSOR l_tax_src_info_csr(cp_khr_id IN NUMBER, cp_trx_id IN NUMBER) IS
13225 SELECT org_id, application_id, entity_code, event_class_code
13226 FROM okl_tax_sources
13227 WHERE khr_id = cp_khr_id
13228 AND tax_call_type_code = G_UPFRONT_TAX
13229 AND tax_line_status_code = G_ACTIVE_STATUS
13230 AND application_id = G_OKL_APPLICATION_ID
13231 AND trx_id = cp_trx_id
13232 AND trx_level_type = G_TRX_LEVEL_TYPE
13233 AND ROWNUM = 1;
13234
13235 CURSOR l_prev_taxsources_csr(cp_khr_id IN NUMBER, cp_trx_id IN NUMBER) IS
13236 SELECT id
13237 FROM okl_tax_sources
13238 WHERE khr_id = cp_khr_id
13239 AND tax_call_type_code = G_UPFRONT_TAX
13240 AND tax_line_status_code = G_ACTIVE_STATUS
13241 AND application_id = G_OKL_APPLICATION_ID
13242 AND trx_id = cp_trx_id
13243 AND trx_level_type = G_TRX_LEVEL_TYPE;
13244
13245 --delete the pre-booking tax source transaction and tax details
13246 -- This cursor is used during Booking. It will pick up the Pre-booking tax lines
13247 -- Pre-Booking tax lines will be the only ACTIVE set of tax lines at the time K is being Booked
13248 CURSOR l_prevtaxsourcesbk_csr(cp_khr_id IN NUMBER) IS
13249 SELECT id
13250 FROM okl_tax_sources
13251 WHERE khr_id = cp_khr_id
13252 AND tax_call_type_code = G_UPFRONT_TAX
13253 AND tax_line_status_code = G_ACTIVE_STATUS
13254 AND application_id = G_OKL_APPLICATION_ID
13255 AND trx_level_type = G_TRX_LEVEL_TYPE;
13256
13257 -- Bug #15992711 :Start
13258 -- cursor will now fetch only those asset lines which are new
13259 -- so tax calculation will be fired only for these assets
13260 -- Get all the asset lines of the contract
13261 /* CURSOR l_finassets_csr(cp_chr_id IN NUMBER) IS
13262 SELECT cle.id fin_asset_id, cle.name asset_number
13263 FROM okc_k_lines_v cle
13264 WHERE cle.chr_id = cp_chr_id
13265 AND cle.lse_id = 33
13266 AND sts_code NOT IN ('ABANDONED', 'EXPIRED', 'REVERSED', 'TERMINATED');*/
13267
13268
13269 CURSOR l_finassets_csr(cp_chr_id IN NUMBER) IS
13270 SELECT cle.id fin_asset_id, cle.name asset_number
13271 FROM okc_k_lines_v cle
13272 ,okl_k_lines kle
13273 WHERE cle.chr_id = cp_chr_id
13274 AND cle.lse_id = 33
13275 AND kle.id = cle.id
13276 AND NVL(kle.re_lease_yn,'N') = 'N'
13277 AND sts_code NOT IN ('ABANDONED', 'EXPIRED', 'REVERSED', 'TERMINATED');
13278 -- Bug #15992711 :End
13279
13280 -- get the current contract and asset line level payments
13281 CURSOR l_k_asset_pymnts_csr(cp_chr_id IN NUMBER) IS
13282 SELECT rgpb.cle_id line_id,
13283 styb.id stream_type_id,
13284 styb.CODE stream_type_code,
13285 sum(nvl((rulb2.RULE_INFORMATION3 * rulb2.RULE_INFORMATION6),0) + nvl(rulb2.RULE_INFORMATION8,0)) line_amt
13286 FROM
13287 okc_rule_groups_b rgpb,
13288 okc_rules_b rulb,
13289 okc_rules_b rulb2,
13290 okl_strm_type_b styb
13291 WHERE rgpb.dnz_chr_id = cp_chr_id
13292 AND rgpb.chr_id = cp_chr_id
13293 AND rgpb.cle_id IS NULL
13294 AND rgpb.rgd_code = 'LALEVL'
13295 AND rulb.rgp_id = rgpb.id
13296 AND rulb.rule_information_category = 'LASLH'
13297 AND rulb.dnz_chr_id = cp_chr_id
13298 AND styb.id = rulb.object1_id1
13299 AND rulb2.object2_id1 = rulb.id
13300 AND rulb2.rgp_id = rgpb.id
13301 AND rulb2.rule_information_category = 'LASLL'
13302 -- Bug #15992711 : Start
13303 -- modification to look at re_lease_yn flag at line level
13304 AND EXISTS ( SELECT '1'
13305 FROM okl_k_lines kle
13306 WHERE NVL(kle.re_lease_yn,'N') = 'N'
13307 AND kle.id = rgpb.cle_id)
13308 -- Bug #15992711 : End
13309 GROUP BY rgpb.cle_id, styb.id, styb.CODE
13310 -- Bug 9682559
13311 -- , rulb2.RULE_INFORMATION6
13312 -- End Bug 9682559
13313 UNION
13314 SELECT rgpb.cle_id line_id,
13315 styb.id stream_type_id,
13316 styb.CODE stream_type_code,
13317 sum(nvl((rulb2.RULE_INFORMATION3 * rulb2.RULE_INFORMATION6),0) + nvl(rulb2.RULE_INFORMATION8,0)) line_amt
13318 FROM okc_k_lines_b cleb,
13319 okc_rule_groups_b rgpb,
13320 okc_rules_b rulb,
13321 okc_rules_b rulb2,
13322 okl_strm_type_b styb
13323 WHERE rgpb.dnz_chr_id = cp_chr_id
13324 AND rgpb.chr_id IS NULL
13325 AND rgpb.cle_id = cleb.id
13326 AND cleb.dnz_chr_id = cp_chr_id
13327 AND cleb.lse_id = 33
13328 AND cleb.sts_code NOT IN ('ABANDONED', 'EXPIRED', 'REVERSED', 'TERMINATED')
13329 AND rgpb.rgd_code = 'LALEVL'
13330 AND rulb.rgp_id = rgpb.id
13331 AND rulb.rule_information_category = 'LASLH'
13332 AND rulb.dnz_chr_id = cp_chr_id
13333 AND styb.id = rulb.object1_id1
13334 AND rulb2.object2_id1 = rulb.id
13335 AND rulb2.rgp_id = rgpb.id
13336 AND rulb2.rule_information_category = 'LASLL'
13337 -- Bug #15992711 : Start
13338 -- modification to look at re_lease_yn flag at line level
13339 AND EXISTS ( SELECT '1'
13340 FROM okl_k_lines kle
13341 WHERE NVL(kle.re_lease_yn,'N') = 'N'
13342 AND kle.id = rgpb.cle_id)
13343 -- Bug #15992711 : End
13344 GROUP BY rgpb.cle_id, styb.id, styb.CODE;
13345 -- Bug 9682559
13346 -- , rulb2.RULE_INFORMATION6;
13347 -- End Bug 9682559
13348 -- get the inventory item id and inventory item org for a financial asset
13349 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
13350 SELECT cim_model.object1_id1,
13351 cim_model.object1_id2
13352 FROM okc_k_items cim_model,
13353 okc_k_lines_b cleb_model,
13354 okc_line_styles_b lseb_model
13355 WHERE cim_model.cle_id = cleb_model.id
13356 AND cleb_model.cle_id = cp_fin_asset_id
13357 AND lseb_model.id = cleb_model.lse_id
13358 AND lseb_model.lty_code = 'ITEM';
13359
13360 -- Check if tax basis override formula exists
13361 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
13362 SELECT fma_id
13363 FROM okl_tax_basis_override
13364 WHERE try_id = cp_try_id
13365 AND org_id = MO_GLOBAL.get_current_org_id;
13366
13367 -- GET FORMULA NAME
13368 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
13369 SELECT name
13370 FROM Okl_formulae_b
13371 WHERE id = cp_fma_id;
13372
13373 l_fetch_size NUMBER := 10000;
13374 l_bk_trx_type_id_det NUMBER;
13375 l_khr_id NUMBER;
13376 l_legal_entity_id NUMBER;
13377 i NUMBER;
13378 l_fma_id NUMBER;
13379 l_formula_name VARCHAR2(150);
13380 l_ledger_id NUMBER;
13381
13382 lx_cust_acct_id NUMBER;
13383 lx_currency_code VARCHAR2(15);
13384 lx_precision NUMBER;
13385 lx_minimum_accountable_unit NUMBER;
13386 lx_cust_trx_type_id NUMBER;
13387
13388 lx_pb_prch_opt_det VARCHAR2(450);
13389 lx_pb_fin_prod_id_det NUMBER;
13390 lx_pb_int_disclosed_det VARCHAR2(30);
13391 l_tax_call_type VARCHAR2(30);
13392
13393 l_pb_transfer_of_title VARCHAR2(30);
13394 l_pb_sale_lease_back VARCHAR2(30);
13395 l_pb_purchase_of_lease VARCHAR2(30);
13396 l_pb_usage_of_equipment VARCHAR2(450);
13397 l_pb_age_of_equipment NUMBER;
13398 l_pb_vendor_site_id NUMBER;
13399 l_inv_item_id NUMBER;
13400 l_inv_item_org_id NUMBER;
13401
13402 lx_bill_to_party_site_id NUMBER;
13403 lx_bill_to_location_id NUMBER;
13404 lx_bill_to_party_id NUMBER;
13405 lx_bill_to_siteuseid NUMBER;
13406 lx_ship_to_party_site_id NUMBER;
13407 lx_ship_to_location_id NUMBER;
13408 lx_ship_to_party_id NUMBER;
13409 lx_ship_to_siteuseid NUMBER;
13410
13411 lx_org_id NUMBER;
13412 lx_book_class_code VARCHAR2(30);
13413 lx_currency_conversion_type VARCHAR2(30);
13414 lx_currency_conversion_rate NUMBER;
13415 lx_currency_conversion_date DATE;
13416 lx_contract_start_date DATE;
13417
13418 tax_call_cnt NUMBER;
13419 k_pymnt_exist VARCHAR2(1);
13420 l_reported_yn VARCHAR2(1);
13421
13422 l_internal_organization_id NUMBER;
13423 l_application_id NUMBER;
13424 l_entity_code VARCHAR2(30);
13425 l_event_class_code VARCHAR2(30);
13426 k NUMBER;
13427 l_taxation_country VARCHAR2(2);
13428 ind NUMBER;
13429 l_delete_data BOOLEAN := FALSE;
13430
13431 l_event_type_code VARCHAR2(30);
13432
13433
13434 TYPE prev_tax_source_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
13435 TYPE prev_tx_trx_det_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
13436 TYPE k_asset_pymnts_tbl_type IS TABLE OF l_k_asset_pymnts_csr%ROWTYPE INDEX BY BINARY_INTEGER;
13437 TYPE finassets_tbl_type IS TABLE OF l_finassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
13438
13439 l_k_asset_pymnts_tbl k_asset_pymnts_tbl_type;
13440 l_prev_tax_source_tbl prev_tax_source_tbl_type;
13441 lp_hdr_params_rec hdr_params_rec_type;
13442 l_transaction_rec transaction_rec_type;
13443 lp_tax_src_params_rec tax_src_params_rec_type;
13444 lx_line_params_tbl line_params_tbl_type;
13445 l_pb_asset_level_det_tbl asset_level_det_tbl_type;
13446 lx_tax_sources_tbl tax_sources_tbl_type;
13447 l_finassets_tbl finassets_tbl_type;
13448
13449 BEGIN
13450
13451 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13452 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax','Begin(+)');
13453 END IF;
13454
13455 --Print Input Variables
13456 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13457 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13458 'p_init_msg_list :'||p_init_msg_list);
13459 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13460 'p_source_trx_id :'||p_source_trx_id);
13461 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13462 'p_source_trx_name :'||p_source_trx_name);
13463 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13464 'p_source_table :'||p_source_table);
13465
13466 END IF;
13467
13468 x_return_status := OKL_API.G_RET_STS_SUCCESS;
13469
13470 IF (p_source_trx_name = 'Booking') THEN
13471 -- validate the source trx id
13472
13473 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
13474 FETCH l_trxcontracts_csr INTO l_bk_trx_type_id_det, l_khr_id, l_legal_entity_id;
13475 -- At this point, l_bk_trx_type_id_det will be the id of Booking trx type
13476 IF l_trxcontracts_csr%NOTFOUND THEN
13477 -- source trx id is invalid
13478 OKC_API.set_message( p_app_name => 'OKC',
13479 p_msg_name => G_INVALID_VALUE,
13480 p_token1 => G_COL_NAME_TOKEN,
13481 p_token1_value => 'SOURCE_TRX_ID');
13482 RAISE OKL_API.G_EXCEPTION_ERROR;
13483 END IF;
13484 CLOSE l_trxcontracts_csr;
13485
13486 ELSIF (p_source_trx_name = 'Rebook') THEN
13487 -- validate the source trx id
13488 OPEN l_trxcontracts_rbk_csr(p_source_trx_id, p_source_trx_name);
13489 FETCH l_trxcontracts_rbk_csr INTO l_khr_id, l_legal_entity_id;
13490 -- At this point, l_bk_trx_type_id_det will be the id of Booking trx type
13491 IF l_trxcontracts_rbk_csr%NOTFOUND THEN
13492 -- source trx id is invalid
13493 OKC_API.set_message( p_app_name => 'OKC',
13494 p_msg_name => G_INVALID_VALUE,
13495 p_token1 => G_COL_NAME_TOKEN,
13496 p_token1_value => 'SOURCE_TRX_ID');
13497 RAISE OKL_API.G_EXCEPTION_ERROR;
13498 END IF;
13499 CLOSE l_trxcontracts_rbk_csr;
13500
13501 OPEN l_bookingtrxtypeid_csr;
13502 FETCH l_bookingtrxtypeid_csr INTO l_bk_trx_type_id_det;
13503 CLOSE l_bookingtrxtypeid_csr;
13504
13505 END IF;
13506
13507 l_tax_call_type := upper(p_tax_call_type);
13508
13509 IF (l_tax_call_type IS NOT NULL AND
13510 l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE)) THEN
13511 OKC_API.set_message( p_app_name => 'OKC',
13512 p_msg_name => G_INVALID_VALUE,
13513 p_token1 => G_COL_NAME_TOKEN,
13514 p_token1_value => 'TAX_CALL_TYPE');
13515 RAISE OKL_API.G_EXCEPTION_ERROR;
13516 END IF;
13517
13518 IF (l_tax_call_type = G_ESTIMATED_CALL_TYPE) THEN
13519
13520 l_event_class_code := G_BOOKING_EVENT_CLASS_CODE;
13521 l_event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
13522
13523 -- Fetch info from tax sources
13524 OPEN l_tax_src_info_csr(l_khr_id, p_source_trx_id);
13525 FETCH l_tax_src_info_csr INTO l_internal_organization_id, l_application_id,
13526 l_entity_code, l_event_class_code;
13527 CLOSE l_tax_src_info_csr;
13528
13529 -- Check if estimated Booking tax lines already exist for p_source_trx_id
13530 -- This may happen if contract is validated multiple times prior to activation
13531 -- Bulk delete Previous Booking tax sources
13532 OPEN l_prev_taxsources_csr(l_khr_id, p_source_trx_id);
13533 LOOP
13534 l_prev_tax_source_tbl.DELETE;
13535 FETCH l_prev_taxsources_csr BULK COLLECT INTO l_prev_tax_source_tbl LIMIT l_fetch_size;
13536 IF l_prev_tax_source_tbl.COUNT > 0 THEN
13537 l_delete_data := TRUE;
13538 BEGIN
13539 FORALL i IN l_prev_tax_source_tbl.FIRST..l_prev_tax_source_tbl.LAST
13540 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prev_tax_source_tbl(i);
13541
13542 EXCEPTION
13543 WHEN OTHERS THEN
13544 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
13545 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
13546 OKL_API.set_message(p_app_name => 'OKL',
13547 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
13548 p_token1 => 'TABLE_NAME',
13549 p_token1_value => 'OKL_TAX_SOURCES',
13550 p_token2 => 'ERROR_CODE',
13551 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
13552 p_token3 => 'ITERATION',
13553 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
13554 END LOOP;
13555 RAISE OKL_API.G_EXCEPTION_ERROR;
13556 END IF;
13557 END;
13558 END IF;
13559 EXIT WHEN l_prev_taxsources_csr%NOTFOUND;
13560 END LOOP;
13561 CLOSE l_prev_taxsources_csr;
13562 -- deletion from tax sources -- end
13563
13564 -- delete booking tax lines from zx_lines -- start
13565 IF (l_delete_data) THEN
13566
13567 l_transaction_rec.internal_organization_id := l_internal_organization_id;
13568 l_transaction_rec.application_id := l_application_id;
13569 l_transaction_rec.entity_code := l_entity_code;
13570 l_transaction_rec.event_class_code := l_event_class_code;
13571 l_transaction_rec.event_type_code := G_BOOK_DEL_EVENT_CODE;
13572
13573 l_transaction_rec.trx_id := p_source_trx_id;
13574
13575 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13576 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13577 'OKL_TAX_INTERFACE_PVT.update_document');
13578 END IF;
13579
13580 OKL_TAX_INTERFACE_PVT.update_document(p_api_version => p_api_version,
13581 p_init_msg_list => p_init_msg_list,
13582 x_return_status => x_return_status,
13583 x_msg_count => x_msg_count,
13584 x_msg_data => x_msg_data,
13585 p_transaction_rec => l_transaction_rec);
13586
13587 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13588 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13589 'Return Status' || x_return_status);
13590 END IF;
13591
13592 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13593 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13594 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13595 RAISE OKL_API.G_EXCEPTION_ERROR;
13596 END IF;
13597 END IF;
13598 -- delete booking tax lines from zx_lines -- end
13599
13600 -- Fetch the Ledger info
13601 l_ledger_id := okl_accounting_util.get_set_of_books_id;
13602 l_reported_yn := 'N';
13603
13604 -- Fetch the Tax country
13605 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
13606 x_msg_count => x_msg_count,
13607 x_msg_data => x_msg_data,
13608 p_legal_entity_id => l_legal_entity_id);
13609 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13610 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13611 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13612 RAISE OKL_API.G_EXCEPTION_ERROR;
13613 END IF;
13614
13615 -- Check if taxable basis override applies to Estimated Booking / Booking transaction
13616 OPEN l_txbasisoverride_csr(l_bk_trx_type_id_det);
13617 FETCH l_txbasisoverride_csr INTO l_fma_id;
13618 CLOSE l_txbasisoverride_csr;
13619
13620 IF l_fma_id IS NOT NULL THEN
13621 OPEN l_formulae_csr(l_fma_id);
13622 FETCH l_formulae_csr INTO l_formula_name;
13623 IF l_formulae_csr%NOTFOUND THEN
13624 OKC_API.set_message( p_app_name => 'OKC',
13625 p_msg_name => G_INVALID_VALUE,
13626 p_token1 => G_COL_NAME_TOKEN,
13627 p_token1_value => 'FMA_ID');
13628 RAISE OKL_API.G_EXCEPTION_ERROR;
13629 END IF;
13630 CLOSE l_formulae_csr;
13631
13632 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13633 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13634 'l_formula_name '||l_formula_name );
13635 END IF;
13636 END IF;
13637
13638 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13640 'l_khr_id '||l_khr_id );
13641 END IF;
13642 -- Get contract header info
13643 get_k_hdr_tax_params(
13644 p_api_version => p_api_version,
13645 p_init_msg_list => p_init_msg_list,
13646 x_return_status => x_return_status,
13647 x_msg_count => x_msg_count,
13648 x_msg_data => x_msg_data,
13649 p_khr_id => l_khr_id,
13650 p_source_trx_name => p_source_trx_name,
13651 p_source_table => p_source_table,
13652 x_cust_acct_id => lx_cust_acct_id,
13653 x_bill_to_siteuseid => lx_bill_to_siteuseid,
13654 x_currency_code => lx_currency_code,
13655 x_cust_trx_type_id => lx_cust_trx_type_id,
13656 x_precision => lx_precision,
13657 x_minimum_accountable_unit => lx_minimum_accountable_unit,
13658 x_prch_opt_det => lx_pb_prch_opt_det,
13659 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
13660 x_int_disclosed_det => lx_pb_int_disclosed_det,
13661 x_org_id => lx_org_id,
13662 x_book_class_code => lx_book_class_code,
13663 x_bill_to_party_site_id => lx_bill_to_party_site_id,
13664 x_bill_to_party_id => lx_bill_to_party_id,
13665 x_bill_to_location_id => lx_bill_to_location_id,
13666 x_currency_conversion_type => lx_currency_conversion_type,
13667 x_currency_conversion_rate => lx_currency_conversion_rate,
13668 x_currency_conversion_date => lx_currency_conversion_date,
13669 x_contract_start_date => lx_contract_start_date);
13670
13671 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13672 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13673 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13674 RAISE OKL_API.G_EXCEPTION_ERROR;
13675 END IF;
13676
13677 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13678 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13679 'l_cust_acct_id '||lx_cust_acct_id );
13680 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13681 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
13682 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13683 'lx_currency_code '||lx_currency_code );
13684 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13685 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
13686 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13687 'lx_precision '||lx_precision );
13688 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13689 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
13690 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13691 'lx_pb_prch_opt_det '||lx_pb_prch_opt_det );
13692 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13693 'lx_pb_fin_prod_id_det '||lx_pb_fin_prod_id_det );
13694 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13695 'lx_pb_int_disclosed_det '||lx_pb_int_disclosed_det );
13696 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13697 'lx_org_id '||lx_org_id );
13698 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13699 'lx_book_class_code '||lx_book_class_code );
13700 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13701 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
13702 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13703 'lx_bill_to_party_id '||lx_bill_to_party_id );
13704 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13705 'lx_bill_to_location_id '||lx_bill_to_location_id );
13706 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13707 'lx_currency_conversion_type '||lx_currency_conversion_type );
13708 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13709 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
13710 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13711 'lx_currency_conversion_date '||lx_currency_conversion_date );
13712 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13713 'lx_contract_start_date '||lx_contract_start_date );
13714 END IF;
13715
13716 -- Tax call will be made at the contract and asset line level, even if no payments exist at any of these levels
13717 i := 0;
13718
13719 OPEN l_finassets_csr(l_khr_id);
13720 LOOP
13721 l_finassets_tbl.DELETE;
13722 FETCH l_finassets_csr BULK COLLECT INTO l_finassets_tbl LIMIT l_fetch_size;
13723
13724 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13725 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13726 'l_finassets_tbl.COUNT '||l_finassets_tbl.COUNT );
13727 END IF;
13728
13729 IF l_finassets_tbl.COUNT > 0 THEN
13730
13731 FOR K IN l_finassets_tbl.FIRST..l_finassets_tbl.LAST LOOP
13732
13733 l_pb_transfer_of_title := null;
13734 l_pb_sale_lease_back := null;
13735 l_pb_purchase_of_lease := null;
13736 l_pb_usage_of_equipment := null;
13737 l_pb_age_of_equipment := null;
13738 l_pb_vendor_site_id := null;
13739
13740 lx_bill_to_party_site_id := null;
13741 lx_bill_to_location_id := null;
13742 lx_bill_to_party_id := null;
13743 lx_bill_to_siteuseid := null;
13744 lx_ship_to_party_site_id := null;
13745 lx_ship_to_location_id := null;
13746 lx_ship_to_party_id := null;
13747 lx_ship_to_siteuseid := null;
13748
13749 -- Get financial asset line level tax determinants --
13750 get_asset_tax_params(
13751 p_api_version => p_api_version,
13752 p_init_msg_list => OKC_API.G_FALSE,
13753 x_return_status => x_return_status,
13754 x_msg_count => x_msg_count,
13755 x_msg_data => x_msg_data,
13756 p_khr_id => l_khr_id,
13757 p_kle_id => l_finassets_tbl(k).fin_asset_id,
13758 p_source_trx_name => p_source_trx_name,
13759 p_source_table => p_source_table,
13760 x_transfer_of_title => l_pb_transfer_of_title,
13761 x_sale_lease_back => l_pb_sale_lease_back,
13762 x_purchase_of_lease => l_pb_purchase_of_lease,
13763 x_usage_of_equipment => l_pb_usage_of_equipment,
13764 x_age_of_equipment => l_pb_age_of_equipment,
13765 x_vendor_site_id => l_pb_vendor_site_id);
13766
13767 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13768 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13769 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13770 RAISE OKL_API.G_EXCEPTION_ERROR;
13771 END IF;
13772
13773 -- Equipment Type(inventory item id)
13774 -- get the inventory item id
13775 OPEN l_invitem_csr(l_finassets_tbl(k).fin_asset_id);
13776 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
13777 IF l_invitem_csr%NOTFOUND THEN
13778 OKL_API.set_message(
13779 p_app_name => 'OKL',
13780 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
13781 p_token1 => 'ASSET_NUMBER',
13782 p_token1_value => l_finassets_tbl(k).asset_number);
13783
13784 RAISE OKL_API.G_EXCEPTION_ERROR;
13785 END IF;
13786 CLOSE l_invitem_csr;
13787
13788 -- get the Location Party ID's
13789 get_location_party_ids(
13790 p_api_version => p_api_version,
13791 p_init_msg_list => OKC_API.G_FALSE,
13792 x_return_status => x_return_status,
13793 x_msg_count => x_msg_count,
13794 x_msg_data => x_msg_data,
13795 p_cust_acct_id => lx_cust_acct_id,
13796 p_fin_asset_id => l_finassets_tbl(k).fin_asset_id,
13797 p_khr_id => l_khr_id,
13798 x_bill_to_party_site_id => lx_bill_to_party_site_id,
13799 x_bill_to_location_id => lx_bill_to_location_id,
13800 x_bill_to_party_id => lx_bill_to_party_id,
13801 x_bill_to_site_use_id => lx_bill_to_siteuseid,
13802 x_ship_to_party_site_id => lx_ship_to_party_site_id,
13803 x_ship_to_location_id => lx_ship_to_location_id,
13804 x_ship_to_party_id => lx_ship_to_party_id,
13805 x_ship_to_site_use_id => lx_ship_to_siteuseid);
13806
13807 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13808 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13809 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13810 RAISE OKL_API.G_EXCEPTION_ERROR;
13811 END IF;
13812
13813 l_pb_asset_level_det_tbl(i).fin_asset_id := l_finassets_tbl(k).fin_asset_id;
13814 l_pb_asset_level_det_tbl(i).asset_number := l_finassets_tbl(k).asset_number;
13815 l_pb_asset_level_det_tbl(i).transfer_of_title := l_pb_transfer_of_title;
13816 l_pb_asset_level_det_tbl(i).sale_lease_back := l_pb_sale_lease_back;
13817 l_pb_asset_level_det_tbl(i).purchase_of_lease := l_pb_purchase_of_lease;
13818 l_pb_asset_level_det_tbl(i).usage_of_equipment := l_pb_usage_of_equipment;
13819 l_pb_asset_level_det_tbl(i).vendor_site_id := l_pb_vendor_site_id;
13820 l_pb_asset_level_det_tbl(i).age_of_equipment := l_pb_age_of_equipment;
13821
13822 -- tax engine parameters
13823 l_pb_asset_level_det_tbl(i).inv_item_id := l_inv_item_id;
13824 l_pb_asset_level_det_tbl(i).inv_org_id := l_inv_item_org_id;
13825
13826 -- Party, location identifiers
13827 l_pb_asset_level_det_tbl(i).ship_to_site_use_id := lx_ship_to_siteuseid;
13828 l_pb_asset_level_det_tbl(i).ship_to_party_site_id := lx_ship_to_party_site_id;
13829 l_pb_asset_level_det_tbl(i).ship_to_location_id := lx_ship_to_location_id;
13830 l_pb_asset_level_det_tbl(i).ship_to_party_id := lx_ship_to_party_id;
13831
13832 l_pb_asset_level_det_tbl(i).bill_to_party_site_id := lx_bill_to_party_site_id;
13833 l_pb_asset_level_det_tbl(i).bill_to_location_id := lx_bill_to_location_id;
13834 l_pb_asset_level_det_tbl(i).bill_to_party_id := lx_bill_to_party_id;
13835 l_pb_asset_level_det_tbl(i).bill_to_site_use_id := lx_bill_to_siteuseid;
13836
13837 l_pb_asset_level_det_tbl(i).asset_pymnt_exist := 'N';
13838
13839 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13840 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.', 'i '||i );
13841 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13842 'fin_asset_id '||l_finassets_tbl(k).fin_asset_id );
13843 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13844 'asset_number '||l_finassets_tbl(k).asset_number );
13845 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13846 'l_pb_transfer_of_title '||l_pb_transfer_of_title );
13847 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13848 'l_pb_sale_lease_back '||l_pb_sale_lease_back );
13849 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13850 'l_pb_purchase_of_lease '||l_pb_purchase_of_lease );
13851 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13852 'l_pb_usage_of_equipment '||l_pb_usage_of_equipment );
13853 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13854 'l_pb_vendor_site_id '||l_pb_vendor_site_id );
13855 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13856 'l_pb_age_of_equipment '||l_pb_age_of_equipment );
13857 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13858 'l_inv_item_id '||l_inv_item_id );
13859 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13860 'l_inv_item_org_id '||l_inv_item_org_id );
13861 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13862 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid );
13863 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13864 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
13865 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13866 'lx_ship_to_location_id '||lx_ship_to_location_id );
13867 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13868 'lx_ship_to_party_id '||lx_ship_to_party_id );
13869 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13870 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
13871 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13872 'lx_bill_to_location_id '||lx_bill_to_location_id );
13873 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13874 'lx_bill_to_party_id '||lx_bill_to_party_id );
13875 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13876 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
13877 END IF;
13878
13879 i := i+1;
13880 END LOOP;
13881 END IF;
13882 EXIT WHEN l_finassets_csr%NOTFOUND;
13883 END LOOP;
13884 CLOSE l_finassets_csr;
13885
13886 -- Get TBC at payment level (for each unique combination of K/Asset Line and payment) --
13887 k_pymnt_exist := 'N';
13888
13889 i := 1;
13890 OPEN l_k_asset_pymnts_csr(l_khr_id);
13891 LOOP
13892 l_k_asset_pymnts_tbl.DELETE;
13893 FETCH l_k_asset_pymnts_csr BULK COLLECT INTO l_k_asset_pymnts_tbl LIMIT l_fetch_size;
13894
13895 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13896 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13897 'l_k_asset_pymnts_tbl.count '||l_k_asset_pymnts_tbl.count||' i = '||i );
13898 END IF;
13899
13900 IF l_k_asset_pymnts_tbl.count = 0 AND i = 1 THEN
13901 -- No payments exist
13902 -- tax call will still be made at the K hdr and each fin asset line level
13903 tax_call_cnt := 1;
13904
13905 -- contract level call begin
13906 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13907 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13908 'No payments exist, tax_call_cnt = '||tax_call_cnt);
13909 END IF;
13910
13911 -- Populate tax sources record -- start
13912 lp_tax_src_params_rec.kle_id := null;
13913 lp_tax_src_params_rec.asset_number := null;
13914 lp_tax_src_params_rec.line_name := null;
13915
13916 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
13917 lp_tax_src_params_rec.ship_to_party_site_id := null;
13918 lp_tax_src_params_rec.ship_to_party_id := null;
13919 lp_tax_src_params_rec.ship_to_location_id := null;
13920
13921 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
13922 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
13923 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
13924 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
13925
13926 lp_tax_src_params_rec.inventory_item_id := null;
13927 lp_tax_src_params_rec.sty_id := null;
13928 lp_tax_src_params_rec.khr_id := l_khr_id;
13929 lp_tax_src_params_rec.trx_id := p_source_trx_id;
13930 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
13931 lp_tax_src_params_rec.event_class_code := l_event_class_code;
13932 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
13933 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
13934 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
13935 lp_tax_src_params_rec.reported_yn := l_reported_yn;
13936 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
13937 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
13938 lp_tax_src_params_rec.line_intended_use := null;
13939 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
13940 lp_tax_src_params_rec.org_id := lx_org_id;
13941 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
13942 lp_tax_src_params_rec.line_amt := 0;
13943 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
13944
13945 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
13946 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
13947 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
13948 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
13949 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
13950 lp_tax_src_params_rec.adjusted_doc_number := null;
13951 lp_tax_src_params_rec.adjusted_doc_date := null;
13952 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
13953 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
13954
13955 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
13956 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
13957 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
13958 -- Populate tax sources record -- end
13959
13960 populate_tax_info(
13961 p_api_version => p_api_version,
13962 p_init_msg_list => OKC_API.G_FALSE,
13963 x_return_status => x_return_status,
13964 x_msg_count => x_msg_count,
13965 x_msg_data => x_msg_data,
13966 p_prch_opt_det => lx_pb_prch_opt_det,
13967 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
13968 p_int_disclosed_det => lx_pb_int_disclosed_det,
13969 -- asset level begin
13970 p_title_trnsfr_code => null,
13971 p_sale_lease_back_code => null,
13972 p_lease_purchased_code => null,
13973 p_equip_usage_code => null,
13974 p_vendor_site_id => null,
13975 p_age_of_equip => null,
13976 p_source_trx_name => p_source_trx_name,
13977 p_cust_trx_type_id => lx_cust_trx_type_id,
13978 p_book_class_code => lx_book_class_code,
13979 p_tax_call_cnt => tax_call_cnt,
13980 p_fma_id => l_fma_id,
13981 p_formula_name => l_formula_name,
13982 p_minimum_accountable_unit => lx_minimum_accountable_unit,
13983 p_precision => lx_precision,
13984 p_sales_quote_id => null,
13985 p_event_type_code => l_event_type_code,
13986 p_ledger_id => l_ledger_id,
13987 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
13988 p_tax_src_params_rec => lp_tax_src_params_rec,
13989 p_quote_flag => 'N',
13990 p_rounding_ship_to_party_id => null,
13991 p_rounding_bill_to_party_id => lx_bill_to_party_id,
13992 p_line_amt_includes_tax_flag => 'N',
13993 p_term_quote_type_code => null,
13994 p_term_quote_reason_code => null,
13995 px_tax_sources_tbl => lx_tax_sources_tbl,
13996 px_line_params_tbl => lx_line_params_tbl );
13997
13998 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13999 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14000 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14001 RAISE OKL_API.G_EXCEPTION_ERROR;
14002 END IF;
14003
14004 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14005 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14006 'lx_tax_sources_tbl.count '|| lx_tax_sources_tbl.COUNT );
14007 END IF;
14008 -- contract level call end
14009
14010 tax_call_cnt := tax_call_cnt + 1;
14011
14012 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14013 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14014 'tax_call_cnt '||tax_call_cnt);
14015 END IF;
14016
14017 -- Fin asset level call begin
14018 IF l_pb_asset_level_det_tbl.COUNT > 0 THEN
14019 FOR asset_cnt IN l_pb_asset_level_det_tbl.FIRST .. l_pb_asset_level_det_tbl.LAST LOOP
14020
14021 -- Populate tax sources record -- start
14022 lp_tax_src_params_rec.kle_id := l_pb_asset_level_det_tbl(asset_cnt).fin_asset_id;
14023 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(asset_cnt).asset_number;
14024 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(asset_cnt).asset_number;
14025
14026 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_site_use_id;
14027 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_site_id;
14028 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_id;
14029 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_location_id;
14030
14031 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_site_id;
14032 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_id;
14033 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_location_id;
14034 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_site_use_id;
14035
14036 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(asset_cnt).inv_item_id;
14037 lp_tax_src_params_rec.sty_id := null;
14038 lp_tax_src_params_rec.khr_id := l_khr_id;
14039 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14040 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14041 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14042 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14043 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14044 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14045 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14046 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14047 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14048 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(asset_cnt).usage_of_equipment;
14049 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14050 lp_tax_src_params_rec.org_id := lx_org_id;
14051 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14052 lp_tax_src_params_rec.line_amt := 0;
14053 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14054
14055 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14056 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14057 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14058 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14059 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14060 lp_tax_src_params_rec.adjusted_doc_number := null;
14061 lp_tax_src_params_rec.adjusted_doc_date := null;
14062 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14063 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14064
14065 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14066 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14067 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14068 -- Populate tax sources record -- end
14069
14070 -- asset level call begin
14071 populate_tax_info(
14072 p_api_version => p_api_version,
14073 p_init_msg_list => OKC_API.G_FALSE,
14074 x_return_status => x_return_status,
14075 x_msg_count => x_msg_count,
14076 x_msg_data => x_msg_data,
14077 p_prch_opt_det => lx_pb_prch_opt_det,
14078 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14079 p_int_disclosed_det => lx_pb_int_disclosed_det,
14080 -- asset level begin
14081 p_title_trnsfr_code => l_pb_asset_level_det_tbl(asset_cnt).transfer_of_title,
14082 p_sale_lease_back_code => l_pb_asset_level_det_tbl(asset_cnt).sale_lease_back,
14083 p_lease_purchased_code => l_pb_asset_level_det_tbl(asset_cnt).purchase_of_lease,
14084 p_equip_usage_code => l_pb_asset_level_det_tbl(asset_cnt).usage_of_equipment,
14085 p_vendor_site_id => l_pb_asset_level_det_tbl(asset_cnt).vendor_site_id,
14086 p_age_of_equip => l_pb_asset_level_det_tbl(asset_cnt).age_of_equipment,
14087 p_source_trx_name => p_source_trx_name,
14088 p_cust_trx_type_id => lx_cust_trx_type_id,
14089 p_book_class_code => lx_book_class_code,
14090 p_tax_call_cnt => tax_call_cnt,
14091 p_fma_id => l_fma_id,
14092 p_formula_name => l_formula_name,
14093 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14094 p_precision => lx_precision,
14095 p_sales_quote_id => null,
14096 p_event_type_code => l_event_type_code,
14097 p_ledger_id => l_ledger_id,
14098 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14099 p_tax_src_params_rec => lp_tax_src_params_rec,
14100 p_quote_flag => 'N',
14101 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_id,
14102 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_id,
14103 p_line_amt_includes_tax_flag => 'N',
14104 p_term_quote_type_code => null,
14105 p_term_quote_reason_code => null,
14106 px_tax_sources_tbl => lx_tax_sources_tbl,
14107 px_line_params_tbl => lx_line_params_tbl );
14108
14109 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14110 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14111 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14112 RAISE OKL_API.G_EXCEPTION_ERROR;
14113 END IF;
14114 -- asset level call end
14115
14116 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14117 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14118 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14119 END IF;
14120
14121 tax_call_cnt := tax_call_cnt + 1;
14122 END LOOP;
14123 END IF;
14124 -- Fin asset level call end
14125 -- No payments exist - end
14126 ELSIF l_k_asset_pymnts_tbl.COUNT > 0 THEN
14127 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14128 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14129 'payments exist ');
14130 END IF;
14131
14132 FOR K IN l_k_asset_pymnts_tbl.FIRST..l_k_asset_pymnts_tbl.LAST LOOP
14133 tax_call_cnt := i;
14134
14135 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14136 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14137 'tax_call_cnt '||tax_call_cnt);
14138 END IF;
14139
14140 IF l_k_asset_pymnts_tbl(k).line_id IS NULL THEN
14141 -- K level payment
14142 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14143 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14144 'K level payment ');
14145 END IF;
14146
14147 -- Populate tax sources record -- start
14148 lp_tax_src_params_rec.kle_id := null;
14149 lp_tax_src_params_rec.asset_number := null;
14150 lp_tax_src_params_rec.line_name := null;
14151
14152 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
14153 lp_tax_src_params_rec.ship_to_party_site_id := null;
14154 lp_tax_src_params_rec.ship_to_party_id := null;
14155 lp_tax_src_params_rec.ship_to_location_id := null;
14156
14157 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
14158 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
14159 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
14160 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
14161
14162 lp_tax_src_params_rec.inventory_item_id := null;
14163 lp_tax_src_params_rec.sty_id := l_k_asset_pymnts_tbl(k).stream_type_id;
14164 lp_tax_src_params_rec.khr_id := l_khr_id;
14165 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14166 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14167 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14168 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14169 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14170 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14171 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14172 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14173 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14174 lp_tax_src_params_rec.line_intended_use := null;
14175 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14176 lp_tax_src_params_rec.org_id := lx_org_id;
14177 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14178 lp_tax_src_params_rec.line_amt := l_k_asset_pymnts_tbl(k).line_amt;
14179 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14180
14181 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14182 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14183 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14184 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14185 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14186 lp_tax_src_params_rec.adjusted_doc_number := null;
14187 lp_tax_src_params_rec.adjusted_doc_date := null;
14188 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14189 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14190
14191 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14192 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14193 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14194 -- Populate tax sources record -- end
14195
14196 populate_tax_info(
14197 p_api_version => p_api_version,
14198 p_init_msg_list => OKC_API.G_FALSE,
14199 x_return_status => x_return_status,
14200 x_msg_count => x_msg_count,
14201 x_msg_data => x_msg_data,
14202 p_prch_opt_det => lx_pb_prch_opt_det,
14203 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14204 p_int_disclosed_det => lx_pb_int_disclosed_det,
14205 -- asset level begin
14206 p_title_trnsfr_code => null,
14207 p_sale_lease_back_code => null,
14208 p_lease_purchased_code => null,
14209 p_equip_usage_code => null,
14210 p_vendor_site_id => null,
14211 p_age_of_equip => null,
14212 p_source_trx_name => p_source_trx_name,
14213 p_cust_trx_type_id => lx_cust_trx_type_id,
14214 p_book_class_code => lx_book_class_code,
14215 p_tax_call_cnt => tax_call_cnt,
14216 p_fma_id => l_fma_id,
14217 p_formula_name => l_formula_name,
14218 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14219 p_precision => lx_precision,
14220 p_sales_quote_id => null,
14221 p_event_type_code => l_event_type_code,
14222 p_ledger_id => l_ledger_id,
14223 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14224 p_tax_src_params_rec => lp_tax_src_params_rec,
14225 p_quote_flag => 'N',
14226 p_rounding_ship_to_party_id => null,
14227 p_rounding_bill_to_party_id => lx_bill_to_party_id,
14228 p_line_amt_includes_tax_flag => 'N',
14229 p_term_quote_type_code => null,
14230 p_term_quote_reason_code => null,
14231 px_tax_sources_tbl => lx_tax_sources_tbl,
14232 px_line_params_tbl => lx_line_params_tbl );
14233
14234 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14235 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14236 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14237 RAISE OKL_API.G_EXCEPTION_ERROR;
14238 END IF;
14239
14240 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14241 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14242 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14243 END IF;
14244
14245 k_pymnt_exist := 'Y';
14246
14247 ELSE -- asset line level payment
14248
14249 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14250 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14251 'asset line level payment ');
14252 END IF;
14253
14254 IF l_pb_asset_level_det_tbl.count > 0 THEN
14255 ind := l_pb_asset_level_det_tbl.FIRST;
14256 LOOP
14257 IF l_pb_asset_level_det_tbl(ind).fin_asset_id = l_k_asset_pymnts_tbl(k).line_id THEN
14258 -- get the determinants and get TBC
14259 l_pb_asset_level_det_tbl(ind).asset_pymnt_exist := 'Y';
14260
14261 -- Populate tax sources record -- start
14262 lp_tax_src_params_rec.kle_id := l_k_asset_pymnts_tbl(k).line_id;
14263 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(ind).asset_number;
14264 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(ind).asset_number;
14265
14266 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(ind).ship_to_site_use_id;
14267 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(ind).ship_to_party_site_id;
14268 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(ind).ship_to_party_id;
14269 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(ind).ship_to_location_id;
14270
14271 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(ind).bill_to_party_site_id;
14272 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(ind).bill_to_party_id;
14273 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(ind).bill_to_location_id;
14274 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(ind).bill_to_site_use_id;
14275
14276 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(ind).inv_item_id;
14277 lp_tax_src_params_rec.sty_id := l_k_asset_pymnts_tbl(k).stream_type_id;
14278 lp_tax_src_params_rec.khr_id := l_khr_id;
14279 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14280 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14281 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14282 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14283 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14284 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14285 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14286 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14287 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14288 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(ind).usage_of_equipment;
14289 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14290 lp_tax_src_params_rec.org_id := lx_org_id;
14291 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14292 lp_tax_src_params_rec.line_amt := l_k_asset_pymnts_tbl(k).line_amt;
14293 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14294
14295 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14296 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14297 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14298 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14299 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14300 lp_tax_src_params_rec.adjusted_doc_number := null;
14301 lp_tax_src_params_rec.adjusted_doc_date := null;
14302 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14303 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14304
14305 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14306 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14307 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14308 -- Populate tax sources record -- end
14309
14310 -- asset level call begin
14311 populate_tax_info(
14312 p_api_version => p_api_version,
14313 p_init_msg_list => OKC_API.G_FALSE,
14314 x_return_status => x_return_status,
14315 x_msg_count => x_msg_count,
14316 x_msg_data => x_msg_data,
14317 p_prch_opt_det => lx_pb_prch_opt_det,
14318 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14319 p_int_disclosed_det => lx_pb_int_disclosed_det,
14320 -- asset level begin
14321 p_title_trnsfr_code => l_pb_asset_level_det_tbl(ind).transfer_of_title,
14322 p_sale_lease_back_code => l_pb_asset_level_det_tbl(ind).sale_lease_back,
14323 p_lease_purchased_code => l_pb_asset_level_det_tbl(ind).purchase_of_lease,
14324 p_equip_usage_code => l_pb_asset_level_det_tbl(ind).usage_of_equipment,
14325 p_vendor_site_id => l_pb_asset_level_det_tbl(ind).vendor_site_id,
14326 p_age_of_equip => l_pb_asset_level_det_tbl(ind).age_of_equipment,
14327 p_source_trx_name => p_source_trx_name,
14328 p_cust_trx_type_id => lx_cust_trx_type_id,
14329 p_book_class_code => lx_book_class_code,
14330 p_tax_call_cnt => tax_call_cnt,
14331 p_fma_id => l_fma_id,
14332 p_formula_name => l_formula_name,
14333 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14334 p_precision => lx_precision,
14335 p_sales_quote_id => null,
14336 p_event_type_code => l_event_type_code,
14337 p_ledger_id => l_ledger_id,
14338 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14339 p_tax_src_params_rec => lp_tax_src_params_rec,
14340 p_quote_flag => 'N',
14341 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(ind).ship_to_party_id,
14342 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(ind).bill_to_party_id,
14343 p_line_amt_includes_tax_flag => 'N',
14344 p_term_quote_type_code => null,
14345 p_term_quote_reason_code => null,
14346 px_tax_sources_tbl => lx_tax_sources_tbl,
14347 px_line_params_tbl => lx_line_params_tbl );
14348
14349 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14350 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14351 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14352 RAISE OKL_API.G_EXCEPTION_ERROR;
14353 END IF;
14354
14355 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14356 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14357 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14358 END IF;
14359 -- asset level call end
14360 EXIT;
14361 END IF;
14362 EXIT WHEN (ind = l_pb_asset_level_det_tbl.LAST);
14363 ind := l_pb_asset_level_det_tbl.NEXT(ind);
14364 END LOOP;
14365 END IF;
14366 END IF;
14367 i := i + 1;
14368 END LOOP;
14369 END IF;
14370 EXIT WHEN l_k_asset_pymnts_csr%NOTFOUND;
14371 END LOOP;
14372 CLOSE l_k_asset_pymnts_csr;
14373
14374 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14375 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.', 'i '||i);
14376 END IF;
14377
14378 IF i > 1 THEN -- some payments exist
14379 tax_call_cnt := i; -- pick the last index
14380
14381 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14382 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14383 'some payments exist, tax_call_cnt= '||tax_call_cnt);
14384 END IF;
14385
14386 IF k_pymnt_exist = 'N' THEN -- K level payment does not exist
14387
14388 -- contract level call begin
14389 --tax_call_cnt := i; -- pick the last index
14390 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14391 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14392 'K level payment does not exist ');
14393 END IF;
14394
14395 -- Populate tax sources record -- start
14396 lp_tax_src_params_rec.kle_id := null;
14397 lp_tax_src_params_rec.asset_number := null;
14398 lp_tax_src_params_rec.line_name := null;
14399
14400 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
14401 lp_tax_src_params_rec.ship_to_party_site_id := null;
14402 lp_tax_src_params_rec.ship_to_party_id := null;
14403 lp_tax_src_params_rec.ship_to_location_id := null;
14404
14405 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
14406 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
14407 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
14408 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
14409
14410 lp_tax_src_params_rec.inventory_item_id := null;
14411 lp_tax_src_params_rec.sty_id := null;
14412 lp_tax_src_params_rec.khr_id := l_khr_id;
14413 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14414 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14415 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14416 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14417 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14418 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14419 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14420 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14421 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14422 lp_tax_src_params_rec.line_intended_use := null;
14423 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14424 lp_tax_src_params_rec.org_id := lx_org_id;
14425 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14426 lp_tax_src_params_rec.line_amt := 0;
14427 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14428
14429 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14430 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14431 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14432 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14433 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14434 lp_tax_src_params_rec.adjusted_doc_number := null;
14435 lp_tax_src_params_rec.adjusted_doc_date := null;
14436 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14437 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14438
14439 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14440 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14441 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14442 -- Populate tax sources record -- end
14443
14444 populate_tax_info(
14445 p_api_version => p_api_version,
14446 p_init_msg_list => OKC_API.G_FALSE,
14447 x_return_status => x_return_status,
14448 x_msg_count => x_msg_count,
14449 x_msg_data => x_msg_data,
14450 p_prch_opt_det => lx_pb_prch_opt_det,
14451 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14452 p_int_disclosed_det => lx_pb_int_disclosed_det,
14453 -- asset level begin
14454 p_title_trnsfr_code => null,
14455 p_sale_lease_back_code => null,
14456 p_lease_purchased_code => null,
14457 p_equip_usage_code => null,
14458 p_vendor_site_id => null,
14459 p_age_of_equip => null,
14460 p_source_trx_name => p_source_trx_name,
14461 p_cust_trx_type_id => lx_cust_trx_type_id,
14462 p_book_class_code => lx_book_class_code,
14463 p_tax_call_cnt => tax_call_cnt,
14464 p_fma_id => l_fma_id,
14465 p_formula_name => l_formula_name,
14466 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14467 p_precision => lx_precision,
14468 p_sales_quote_id => null,
14469 p_event_type_code => l_event_type_code,
14470 p_ledger_id => l_ledger_id,
14471 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14472 p_tax_src_params_rec => lp_tax_src_params_rec,
14473 p_quote_flag => 'N',
14474 p_rounding_ship_to_party_id => null,
14475 p_rounding_bill_to_party_id => lx_bill_to_party_id,
14476 p_line_amt_includes_tax_flag => 'N',
14477 p_term_quote_type_code => null,
14478 p_term_quote_reason_code => null,
14479 px_tax_sources_tbl => lx_tax_sources_tbl,
14480 px_line_params_tbl => lx_line_params_tbl );
14481
14482 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14483 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14484 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14485 RAISE OKL_API.G_EXCEPTION_ERROR;
14486 END IF;
14487
14488 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14489 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14490 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14491 END IF;
14492 -- contract level call end
14493 tax_call_cnt := tax_call_cnt + 1;
14494 END IF;
14495
14496 -- this table will have one record for each asset
14497 -- check if payment does not exist for any of the assets
14498 FOR k IN l_pb_asset_level_det_tbl.FIRST .. l_pb_asset_level_det_tbl.LAST LOOP
14499 IF l_pb_asset_level_det_tbl(k).asset_pymnt_exist = 'N' THEN -- asset level payment does not exist
14500 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14501 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14502 'tax_call_cnt '||tax_call_cnt||'asset_pymnt_exist = N ' );
14503 END IF;
14504
14505 -- asset level call begin
14506 -- Populate tax sources record -- start
14507 lp_tax_src_params_rec.kle_id := l_pb_asset_level_det_tbl(k).fin_asset_id;
14508 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(k).asset_number;
14509 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(k).asset_number;
14510
14511 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(k).ship_to_site_use_id;
14512 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(k).ship_to_party_site_id;
14513 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(k).ship_to_party_id;
14514 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(k).ship_to_location_id;
14515 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(k).bill_to_party_site_id;
14516 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(k).bill_to_party_id;
14517 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(k).bill_to_location_id;
14518 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(k).bill_to_site_use_id;
14519 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(ind).inv_item_id;
14520 lp_tax_src_params_rec.sty_id := null;
14521 lp_tax_src_params_rec.khr_id := l_khr_id;
14522 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14523 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14524 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14525 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14526 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14527 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14528 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14529 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14530 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14531 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(k).usage_of_equipment;
14532 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14533 lp_tax_src_params_rec.org_id := lx_org_id;
14534 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14535 lp_tax_src_params_rec.line_amt := 0;
14536 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14537
14538 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14539 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14540 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14541 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14542 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14543 lp_tax_src_params_rec.adjusted_doc_number := null;
14544 lp_tax_src_params_rec.adjusted_doc_date := null;
14545 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14546 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14547 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14548 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14549 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14550 -- Populate tax sources record -- end
14551
14552 -- asset level call begin
14553 populate_tax_info(
14554 p_api_version => p_api_version,
14555 p_init_msg_list => OKC_API.G_FALSE,
14556 x_return_status => x_return_status,
14557 x_msg_count => x_msg_count,
14558 x_msg_data => x_msg_data,
14559 p_prch_opt_det => lx_pb_prch_opt_det,
14560 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14561 p_int_disclosed_det => lx_pb_int_disclosed_det,
14562 -- asset level begin
14563 p_title_trnsfr_code => l_pb_asset_level_det_tbl(k).transfer_of_title,
14564 p_sale_lease_back_code => l_pb_asset_level_det_tbl(k).sale_lease_back,
14565 p_lease_purchased_code => l_pb_asset_level_det_tbl(k).purchase_of_lease,
14566 p_equip_usage_code => l_pb_asset_level_det_tbl(k).usage_of_equipment,
14567 p_vendor_site_id => l_pb_asset_level_det_tbl(k).vendor_site_id,
14568 p_age_of_equip => l_pb_asset_level_det_tbl(k).age_of_equipment,
14569 p_source_trx_name => p_source_trx_name,
14570 p_cust_trx_type_id => lx_cust_trx_type_id,
14571 p_book_class_code => lx_book_class_code,
14572 p_tax_call_cnt => tax_call_cnt,
14573 p_fma_id => l_fma_id,
14574 p_formula_name => l_formula_name,
14575 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14576 p_precision => lx_precision,
14577 p_sales_quote_id => null,
14578 p_event_type_code => l_event_type_code,
14579 p_ledger_id => l_ledger_id,
14580 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14581 p_tax_src_params_rec => lp_tax_src_params_rec,
14582 p_quote_flag => 'N',
14583 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(k).ship_to_party_id,
14584 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(k).bill_to_party_id,
14585 p_line_amt_includes_tax_flag => 'N',
14586 p_term_quote_type_code => null,
14587 p_term_quote_reason_code => null,
14588 px_tax_sources_tbl => lx_tax_sources_tbl,
14589 px_line_params_tbl => lx_line_params_tbl );
14590
14591 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14592 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14593 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14594 RAISE OKL_API.G_EXCEPTION_ERROR;
14595 END IF;
14596 -- asset level call end
14597 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14598 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14599 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14600 END IF;
14601
14602 tax_call_cnt := tax_call_cnt + 1;
14603 END IF;
14604 END LOOP;
14605 END IF;
14606
14607 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14608 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14609 'lx_tax_sources_tbl.COUNT '||lx_tax_sources_tbl.COUNT);
14610 END IF;
14611
14612 -- insert into okl_tax_sources
14613 BEGIN
14614 IF lx_tax_sources_tbl.COUNT > 0 THEN
14615 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
14616 -- SAVE EXCEPTIONS
14617 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
14618 END IF;
14619 EXCEPTION
14620 WHEN OTHERS THEN
14621 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
14622 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
14623 OKL_API.set_message(
14624 p_app_name => 'OKL',
14625 p_msg_name => 'OKL_TX_TRX_INS_ERR',
14626 p_token1 => 'TABLE_NAME',
14627 p_token1_value => 'OKL_TAX_SOURCES',
14628 p_token2 => 'ERROR_CODE',
14629 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
14630 p_token3 => 'ITERATION',
14631 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
14632 END LOOP;
14633 RAISE OKL_API.G_EXCEPTION_ERROR;
14634 END IF;
14635 END;
14636 -- Insert into okl_tax_sources end --
14637
14638 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14640 'Insert into okl_tax_sources ');
14641 END IF;
14642
14643 IF lx_line_params_tbl.COUNT > 0 THEN
14644 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14646 'Before tax engine call '||x_return_status);
14647 END IF;
14648
14649 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
14650 lp_hdr_params_rec.trx_id := p_source_trx_id;
14651 lp_hdr_params_rec.internal_organization_id := lx_org_id;
14652 lp_hdr_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14653 lp_hdr_params_rec.event_class_code := l_event_class_code;
14654 lp_hdr_params_rec.event_type_code := l_event_type_code;
14655 lp_hdr_params_rec.quote_flag := 'N';
14656
14657 OKL_TAX_INTERFACE_PVT.calculate_tax(
14658 p_api_version => p_api_version,
14659 p_init_msg_list => p_init_msg_list,
14660 x_return_status => x_return_status,
14661 x_msg_count => x_msg_count,
14662 x_msg_data => x_msg_data,
14663 p_hdr_params_rec => lp_hdr_params_rec,
14664 p_line_params_tbl => lx_line_params_tbl);
14665
14666 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14667 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14668 'After tax engine call '||x_return_status);
14669 END IF;
14670
14671 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14672 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14673 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14674 RAISE OKL_API.G_EXCEPTION_ERROR;
14675 END IF;
14676 END IF;
14677
14678 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14679 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14680 'Calling "update_tax_sources_total" .. ');
14681 END IF;
14682
14683 update_tax_sources_total(p_api_version => p_api_version,
14684 p_init_msg_list => p_init_msg_list,
14685 x_return_status => x_return_status,
14686 x_msg_count => x_msg_count,
14687 x_msg_data => x_msg_data,
14688 p_source_trx_id => p_source_trx_id);
14689
14690 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14691 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14692 'Return Status' || x_return_status);
14693 END IF;
14694
14695 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14696 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14697 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14698 RAISE OKL_API.G_EXCEPTION_ERROR;
14699 END IF;
14700
14701 ELSIF (l_tax_call_type = G_ACTUAL_CALL_TYPE) THEN
14702
14703 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14704 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14705 'process_final_upfront_tax');
14706 END IF;
14707
14708 -- Call ebtax procedure to flip the reportable flag from N to Y
14709 process_final_upfront_tax( p_api_version => p_api_version,
14710 p_init_msg_list => p_init_msg_list,
14711 x_return_status => x_return_status,
14712 x_msg_count => x_msg_count,
14713 x_msg_data => x_msg_data,
14714 p_trx_id => p_source_trx_id,
14715 p_application_id => G_OKL_APPLICATION_ID,
14716 p_entity_code => G_CONTRACTS_ENTITY_CODE,
14717 p_event_class_code => G_BOOKING_EVENT_CLASS_CODE);
14718
14719 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14720 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14721 'Return Status' || x_return_status);
14722 END IF;
14723
14724 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14725 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14726 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14727 RAISE OKL_API.G_EXCEPTION_ERROR;
14728 END IF;
14729
14730 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14731 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14732 'Calling "make_tax_sources_reportable" .. ');
14733 END IF;
14734
14735 make_tax_sources_reportable(p_api_version => p_api_version,
14736 p_init_msg_list => p_init_msg_list,
14737 x_return_status => x_return_status,
14738 x_msg_count => x_msg_count,
14739 x_msg_data => x_msg_data,
14740 p_source_trx_id => p_source_trx_id);
14741
14742 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14743 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14744 'Return Status' || x_return_status);
14745 END IF;
14746
14747 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14748 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14749 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14750 RAISE OKL_API.G_EXCEPTION_ERROR;
14751 END IF;
14752
14753 END IF;
14754
14755 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14756 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ','End(-)');
14757 END IF;
14758 EXCEPTION
14759 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14760 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14761 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14762 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
14763 END IF;
14764
14765 IF l_trxcontracts_csr%ISOPEN THEN
14766 CLOSE l_trxcontracts_csr;
14767 END IF;
14768
14769 IF l_tax_src_info_csr%ISOPEN THEN
14770 CLOSE l_tax_src_info_csr;
14771 END IF;
14772
14773 IF l_prev_taxsources_csr%ISOPEN THEN
14774 CLOSE l_prev_taxsources_csr;
14775 END IF;
14776
14777 IF l_finassets_csr%ISOPEN THEN
14778 CLOSE l_finassets_csr;
14779 END IF;
14780
14781 IF l_k_asset_pymnts_csr%ISOPEN THEN
14782 CLOSE l_k_asset_pymnts_csr;
14783 END IF;
14784
14785 IF l_invitem_csr%ISOPEN THEN
14786 CLOSE l_invitem_csr;
14787 END IF;
14788
14789 IF l_txbasisoverride_csr%ISOPEN THEN
14790 CLOSE l_txbasisoverride_csr;
14791 END IF;
14792
14793 IF l_formulae_csr%ISOPEN THEN
14794 CLOSE l_formulae_csr;
14795 END IF;
14796
14797 x_return_status := OKL_API.G_RET_STS_ERROR;
14798 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14799 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14800 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14801 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
14802 END IF;
14803
14804 IF l_trxcontracts_csr%ISOPEN THEN
14805 CLOSE l_trxcontracts_csr;
14806 END IF;
14807
14808 IF l_tax_src_info_csr%ISOPEN THEN
14809 CLOSE l_tax_src_info_csr;
14810 END IF;
14811
14812 IF l_prev_taxsources_csr%ISOPEN THEN
14813 CLOSE l_prev_taxsources_csr;
14814 END IF;
14815
14816 IF l_finassets_csr%ISOPEN THEN
14817 CLOSE l_finassets_csr;
14818 END IF;
14819
14820 IF l_k_asset_pymnts_csr%ISOPEN THEN
14821 CLOSE l_k_asset_pymnts_csr;
14822 END IF;
14823
14824 IF l_invitem_csr%ISOPEN THEN
14825 CLOSE l_invitem_csr;
14826 END IF;
14827
14828 IF l_txbasisoverride_csr%ISOPEN THEN
14829 CLOSE l_txbasisoverride_csr;
14830 END IF;
14831
14832 IF l_formulae_csr%ISOPEN THEN
14833 CLOSE l_formulae_csr;
14834 END IF;
14835
14836 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14837
14838 WHEN OTHERS THEN
14839 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14840 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14841 'EXCEPTION :'||sqlerrm);
14842 END IF;
14843
14844 IF l_trxcontracts_csr%ISOPEN THEN
14845 CLOSE l_trxcontracts_csr;
14846 END IF;
14847
14848 IF l_tax_src_info_csr%ISOPEN THEN
14849 CLOSE l_tax_src_info_csr;
14850 END IF;
14851
14852 IF l_prev_taxsources_csr%ISOPEN THEN
14853 CLOSE l_prev_taxsources_csr;
14854 END IF;
14855
14856 IF l_finassets_csr%ISOPEN THEN
14857 CLOSE l_finassets_csr;
14858 END IF;
14859
14860 IF l_k_asset_pymnts_csr%ISOPEN THEN
14861 CLOSE l_k_asset_pymnts_csr;
14862 END IF;
14863
14864 IF l_invitem_csr%ISOPEN THEN
14865 CLOSE l_invitem_csr;
14866 END IF;
14867
14868 IF l_txbasisoverride_csr%ISOPEN THEN
14869 CLOSE l_txbasisoverride_csr;
14870 END IF;
14871
14872 IF l_formulae_csr%ISOPEN THEN
14873 CLOSE l_formulae_csr;
14874 END IF;
14875
14876 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14877 -- unexpected error
14878 OKL_API.set_message(p_app_name => g_app_name,
14879 p_msg_name => g_unexpected_error,
14880 p_token1 => g_sqlcode_token,
14881 p_token1_value => sqlcode,
14882 p_token2 => g_sqlerrm_token,
14883 p_token2_value => sqlerrm);
14884
14885 END process_booking_upfront_tax;
14886
14887 /*========================================================================
14888 | PRIVATE PROCEDURE process_pre_rbk_upfront_tax
14889 |
14890 | DESCRIPTION
14891 | This procedure is called from calculate_sales_tax procedure to calculate
14892 | Upfront tax during Pre Rebooking
14893 |
14894 | CALLED FROM calculate_sales_tax()
14895 |
14896 |
14897 | CALLS PROCEDURES/FUNCTIONS
14898 | process_booking_upfront_tax()
14899 |
14900 | PARAMETERS
14901 | p_source_trx_id -- Source transaction ID
14902 | p_source_trx_name -- Source transaction Name
14903 | p_source_table -- Source table
14904 |
14905 | KNOWN ISSUES
14906 |
14907 | NOTES
14908 |
14909 |
14910 | MODIFICATION HISTORY
14911 | Date Author Description of Changes
14912 | 08-APR-05 SECHAWLA Created
14913 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Pre-Rebook trx type
14914 | setups into 'Booking'
14915 |
14916 *=======================================================================*/
14917 PROCEDURE process_pre_rbk_upfront_tax(
14918 p_api_version IN NUMBER,
14919 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14920 x_return_status OUT NOCOPY VARCHAR2,
14921 x_msg_count OUT NOCOPY NUMBER,
14922 x_msg_data OUT NOCOPY VARCHAR2,
14923 p_source_trx_id IN NUMBER,
14924 p_source_trx_name IN VARCHAR2,
14925 p_source_table IN VARCHAR2,
14926 p_tax_call_type IN VARCHAR2) IS
14927
14928 -------------Pre Rebook --------------
14929 --p_source_trx_id ---> okl_trx_contracts.id
14930 --p_source_trx_name ---> 'Rebook'
14931 --p_source_table ---> 'OKL_TRX_CONTRACTS'
14932 --p_tax_call_type ---> 'ESTIMATED'
14933 --------------------------------------------------
14934
14935 BEGIN
14936
14937 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14938 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax','Begin(+)');
14939 END IF;
14940
14941 --Print Input Variables
14942 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14943 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14944 'p_init_msg_list :'||p_init_msg_list);
14945 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14946 'p_source_trx_id :'||p_source_trx_id);
14947 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14948 'p_source_trx_name :'||p_source_trx_name);
14949 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14950 'p_source_table :'||p_source_table);
14951 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14952 'p_tax_call_type :'||p_tax_call_type);
14953 END IF;
14954
14955 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14956
14957 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14958 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14959 'Calling process_booking_upfront_tax');
14960 END IF;
14961
14962 process_booking_upfront_tax(p_api_version => p_api_version,
14963 p_init_msg_list => p_init_msg_list,
14964 x_return_status => x_return_status,
14965 x_msg_count => x_msg_count,
14966 x_msg_data => x_msg_data,
14967 p_source_trx_id => p_source_trx_id,
14968 p_source_trx_name => p_source_trx_name,
14969 p_source_table => p_source_table,
14970 p_tax_call_type => p_tax_call_type);
14971
14972 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14973 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14974 'Finished process_booking_upfront_tax '|| x_return_status);
14975 END IF;
14976
14977 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14978 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14979 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14980 RAISE OKL_API.G_EXCEPTION_ERROR;
14981 END IF;
14982
14983 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14984 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ','End(-)');
14985 END IF;
14986
14987 EXCEPTION
14988 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14989 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14990 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
14991 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
14992 END IF;
14993
14994 x_return_status := OKL_API.G_RET_STS_ERROR;
14995
14996 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14997 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14998 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
14999 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
15000 END IF;
15001
15002 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15003
15004 WHEN OTHERS THEN
15005 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15006 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
15007 'EXCEPTION :'||sqlerrm);
15008 END IF;
15009
15010 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15011 -- unexpected error
15012 OKL_API.set_message(p_app_name => g_app_name,
15013 p_msg_name => g_unexpected_error,
15014 p_token1 => g_sqlcode_token,
15015 p_token1_value => sqlcode,
15016 p_token2 => g_sqlerrm_token,
15017 p_token2_value => sqlerrm);
15018 END process_pre_rbk_upfront_tax;
15019
15020 /*========================================================================
15021 | PRIVATE PROCEDURE process_rebook_upfront_tax
15022 |
15023 | DESCRIPTION
15024 | This procedure is called from calculate_sales_tax procedure to calculate
15025 | Upfront tax during Rebook
15026 |
15027 | CALLED FROM calculate_sales_tax()
15028 |
15029 |
15030 | CALLS PROCEDURES/FUNCTIONS
15031 | OKL_TAX_INTERFACE_PVT.reverse_document()
15032 | update_tax_sources_total()
15033 | okl_tax_sources_pub.update_tax_sources()
15034 | process_final_upfront_tax()
15035 |
15036 |
15037 | PARAMETERS
15038 | p_source_trx_id -- Source transaction ID
15039 | p_source_trx_name -- Source transaction Name
15040 | p_source_table -- Source table
15041 |
15042 | KNOWN ISSUES
15043 |
15044 | NOTES
15045 |
15046 |
15047 | MODIFICATION HISTORY
15048 | Date Author Description of Changes
15049 | 08-APR-05 SECHAWLA Created
15050 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Rebook trx type setups
15051 | into 'Booking' trx type
15052 |
15053 *=======================================================================*/
15054 PROCEDURE process_rebook_upfront_tax(
15055 p_api_version IN NUMBER,
15056 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
15057 x_return_status OUT NOCOPY VARCHAR2,
15058 x_msg_count OUT NOCOPY NUMBER,
15059 x_msg_data OUT NOCOPY VARCHAR2,
15060 p_source_trx_id IN NUMBER,
15061 p_source_trx_name IN VARCHAR2,
15062 p_source_table IN VARCHAR2) IS
15063
15064 -------------Rebook --------------
15065 --p_source_trx_id ---> okl_trx_contracts.id
15066 --p_source_trx_name ---> 'Rebook'
15067 --p_source_table ---> 'OKL_TRX_CONTRACTS'
15068 --------------------------------------------------
15069
15070 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
15071
15072 -- validate source trx id
15073 -- okl_trx_contracts.khr_id has original contract id
15074 -- okl_trx_contracts.khr_id_new has rebook copy contract id
15075 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
15076 SELECT a.try_id, a.khr_id, a.khr_id_new, a.date_transaction_occurred
15077 FROM okl_trx_contracts a , okl_trx_types_tl b
15078 WHERE a.id = cp_trx_id
15079 AND a.try_id = b.id
15080 AND b.name = cp_trx_type_name
15081 AND language = 'US';
15082
15083 -- Booking tax lines will be the only ACTIVE set of tax lines at the time K is being Reversed
15084 -- Contract can be reversed only if no other transactions have happened on the contract
15085 -- this cursor selects existing active upfront taxable lines for a contract that is being reversed
15086 CURSOR l_prevtaxsources_csr(cp_khr_id IN NUMBER) IS
15087 SELECT id, khr_id, kle_id, asset_number, trx_id, trx_line_id, entity_code,
15088 event_class_code, trx_level_type, tax_call_type_code, sty_id,
15089 trx_business_category, tax_line_status_code, sel_id, reported_yn,
15090 line_name, application_id, tax_reporting_flag, default_taxation_country,
15091 product_category, user_defined_fisc_class, line_intended_use,
15092 tax_classification_code, inventory_item_id, bill_to_cust_acct_id,
15093 org_id, legal_entity_id, line_amt, assessable_value, total_tax,
15094 product_type, product_fisc_classification, trx_date, provnl_tax_determination_date,
15095 try_id, ship_to_location_id, ship_to_party_site_id, ship_to_party_id,
15096 bill_to_party_site_id, bill_to_location_id, bill_to_party_id,
15097 ship_to_cust_acct_site_use_id, bill_to_cust_acct_site_use_id,
15098 trx_currency_code, currency_conversion_date, currency_conversion_rate,
15099 currency_conversion_type
15100 FROM okl_tax_sources
15101 WHERE khr_id = cp_khr_id
15102 AND tax_call_type_code = G_UPFRONT_TAX
15103 AND tax_line_status_code = G_ACTIVE_STATUS
15104 AND application_id = G_OKL_APPLICATION_ID
15105 AND trx_level_type = G_TRX_LEVEL_TYPE
15106 AND ADJUSTED_DOC_TRX_ID IS NULL
15107 AND ADJUSTED_DOC_TRX_LINE_ID IS NULL;
15108
15109 CURSOR l_rbk_taxablelines_csr(cp_trx_id IN NUMBER, cp_khr_id IN NUMBER) IS
15110 SELECT id, kle_id
15111 FROM okl_tax_sources
15112 WHERE trx_id = cp_trx_id
15113 AND khr_id = cp_khr_id
15114 AND tax_call_type_code = G_UPFRONT_TAX
15115 AND tax_line_status_code = G_ACTIVE_STATUS;
15116
15117 CURSOR l_orig_kle_id(cp_kle_id IN NUMBER) IS
15118 SELECT orig_system_id1
15119 FROM okc_k_lines_b
15120 WHERE id = cp_kle_id;
15121
15122 CURSOR l_new_line_id(cp_orig_system_id IN NUMBER) IS
15123 SELECT id
15124 FROM okc_k_lines_b
15125 WHERE orig_system_id1 = cp_orig_system_id;
15126
15127 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15128 TYPE prev_tx_src_tbl_type IS TABLE OF l_prevtaxsources_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15129
15130 l_prevtaxsources_tbl prev_tx_src_tbl_type;
15131 l_tax_src_tbl tax_src_tbl_type;
15132 l_tax_sources_tbl tax_sources_tbl_type;
15133 rev_trx_lines_tbl zx_trx_lines_tbl_type;
15134 rev_trx_hdr_rec line_params_rec_type;
15135 l_txsv_tbl txsv_tbl_type;
15136 lx_txsv_tbl txsv_tbl_type;
15137
15138 l_fetch_size NUMBER := 10000;
15139 i NUMBER;
15140 j NUMBER;
15141
15142 l_trx_date DATE;
15143 l_trx_level_type VARCHAR2(30);
15144 l_org_id NUMBER;
15145 l_legal_entity_id NUMBER;
15146 l_reversed_trx_id NUMBER;
15147 l_rbk_khr_id NUMBER;
15148 l_rbk_trx_type_id_det NUMBER;
15149 l_khr_id NUMBER;
15150 l_kle_id NUMBER;
15151 l_sync_kle_id NUMBER;
15152 l_booking_tax_exists BOOLEAN := FALSE;
15153
15154 BEGIN
15155
15156
15157 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15158 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax','Begin(+)');
15159 END IF;
15160
15161 --Print Input Variables
15162 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15163 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15164 'p_init_msg_list :'||p_init_msg_list);
15165 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15166 'p_source_trx_id :'||p_source_trx_id);
15167 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15168 'p_source_trx_name :'||p_source_trx_name);
15169 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15170 'p_source_table :'||p_source_table);
15171 END IF;
15172
15173 x_return_status := OKL_API.G_RET_STS_SUCCESS;
15174
15175 -- Validate the source trx id
15176 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
15177 FETCH l_trxcontracts_csr INTO l_rbk_trx_type_id_det, l_khr_id, l_rbk_khr_id, l_trx_date; -- l_khr_id has original contract id
15178 -- At this point l_rbk_trx_type_id_det has the id of the Rebook trx type
15179 IF l_trxcontracts_csr%NOTFOUND THEN
15180 -- source trx id is invalid
15181 OKC_API.set_message( p_app_name => 'OKC',
15182 p_msg_name => G_INVALID_VALUE,
15183 p_token1 => G_COL_NAME_TOKEN,
15184 p_token1_value => 'SOURCE_TRX_ID');
15185 RAISE OKL_API.G_EXCEPTION_ERROR;
15186 END IF;
15187 CLOSE l_trxcontracts_csr;
15188
15189 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15190 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15191 'l_rbk_trx_type_id_det '||l_rbk_trx_type_id_det );
15192 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15193 'l_khr_id '||l_khr_id );
15194 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15195 'l_rbk_khr_id '||l_rbk_khr_id );
15196 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15197 'l_trx_date '||l_trx_date );
15198 END IF;
15199
15200 --Create negative tax lines for the previously active upfront tax lines
15201 i := 1;
15202 j := 1;
15203 l_tax_sources_tbl.DELETE;
15204 l_tax_src_tbl.DELETE;
15205
15206 OPEN l_prevtaxsources_csr(l_khr_id);
15207 LOOP
15208 l_prevtaxsources_tbl.DELETE;
15209 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsources_tbl LIMIT l_fetch_size;
15210 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15211 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15212 'l_prevtaxsources_tbl.COUNT '||l_prevtaxsources_tbl.COUNT );
15213 END IF;
15214
15215 IF l_prevtaxsources_tbl.COUNT > 0 THEN
15216 l_booking_tax_exists := TRUE;
15217 FOR k IN l_prevtaxsources_tbl.FIRST..l_prevtaxsources_tbl.LAST LOOP
15218
15219 IF i = 1 THEN
15220 l_org_id := l_prevtaxsources_tbl(k).org_id;
15221 l_trx_level_type := l_prevtaxsources_tbl(k).trx_level_type;
15222 l_legal_entity_id := l_prevtaxsources_tbl(k).legal_entity_id;
15223 l_reversed_trx_id := l_prevtaxsources_tbl(k).trx_id;
15224 END IF;
15225
15226 -- Create adjusting tax source transaction for the previous active tax lines
15227 l_tax_sources_tbl(i).id := get_seq_id;
15228 l_tax_sources_tbl(i).khr_id := l_prevtaxsources_tbl(k).khr_id;
15229 l_tax_sources_tbl(i).kle_id := l_prevtaxsources_tbl(k).kle_id;
15230 l_tax_sources_tbl(i).asset_number := l_prevtaxsources_tbl(k).asset_number;
15231 l_tax_sources_tbl(i).trx_id := p_source_trx_id;
15232 l_tax_sources_tbl(i).trx_line_id := l_tax_sources_tbl(i).id;
15233 l_tax_sources_tbl(i).entity_code := G_CONTRACTS_ENTITY_CODE;
15234 l_tax_sources_tbl(i).event_class_code := G_REBOOK_EVENT_CLASS_CODE;
15235 l_tax_sources_tbl(i).trx_level_type := G_TRX_LEVEL_TYPE;
15236 l_tax_sources_tbl(i).adjusted_doc_entity_code := l_prevtaxsources_tbl(k).entity_code;
15237 l_tax_sources_tbl(i).adjusted_doc_event_class_code := l_prevtaxsources_tbl(k).event_class_code;
15238 l_tax_sources_tbl(i).adjusted_doc_trx_id := l_prevtaxsources_tbl(k).trx_id;
15239 l_tax_sources_tbl(i).adjusted_doc_trx_line_id := l_prevtaxsources_tbl(k).trx_line_id;
15240 l_tax_sources_tbl(i).adjusted_doc_trx_level_type := l_prevtaxsources_tbl(k).trx_level_type;
15241 l_tax_sources_tbl(i).adjusted_doc_number := NULL;
15242 l_tax_sources_tbl(i).adjusted_doc_date := NULL;
15243 l_tax_sources_tbl(i).tax_call_type_code := G_UPFRONT_TAX;
15244 l_tax_sources_tbl(i).sty_id := l_prevtaxsources_tbl(k).sty_id;
15245 l_tax_sources_tbl(i).trx_business_category := l_prevtaxsources_tbl(k).trx_business_category;
15246 l_tax_sources_tbl(i).tax_line_status_code := G_INACTIVE_STATUS;
15247
15248 l_tax_sources_tbl(i).sel_id := l_prevtaxsources_tbl(k).sel_id;
15249 l_tax_sources_tbl(i).reported_yn := l_prevtaxsources_tbl(k).reported_yn;
15250 l_tax_sources_tbl(i).tax_reporting_flag := l_prevtaxsources_tbl(k).tax_reporting_flag;
15251 l_tax_sources_tbl(i).program_id := NULL;
15252 l_tax_sources_tbl(i).request_id := NULL;
15253 l_tax_sources_tbl(i).program_application_id := NULL;
15254 l_tax_sources_tbl(i).program_update_date := NULL;
15255 l_tax_sources_tbl(i).attribute_category := NULL;
15256
15257 l_tax_sources_tbl(i).attribute1 := NULL;
15258 l_tax_sources_tbl(i).attribute2 := NULL;
15259 l_tax_sources_tbl(i).attribute3 := NULL;
15260 l_tax_sources_tbl(i).attribute4 := NULL;
15261 l_tax_sources_tbl(i).attribute5 := NULL;
15262 l_tax_sources_tbl(i).attribute6 := NULL;
15263 l_tax_sources_tbl(i).attribute7 := NULL;
15264 l_tax_sources_tbl(i).attribute8 := NULL;
15265 l_tax_sources_tbl(i).attribute9 := NULL;
15266 l_tax_sources_tbl(i).attribute10 := NULL;
15267 l_tax_sources_tbl(i).attribute11 := NULL;
15268 l_tax_sources_tbl(i).attribute12 := NULL;
15269 l_tax_sources_tbl(i).attribute13 := NULL;
15270 l_tax_sources_tbl(i).attribute14 := NULL;
15271 l_tax_sources_tbl(i).attribute15 := NULL;
15272 l_tax_sources_tbl(i).created_by := G_USER_ID;
15273 l_tax_sources_tbl(i).creation_date := SYSDATE;
15274 l_tax_sources_tbl(i).last_updated_by := G_USER_ID;
15275 l_tax_sources_tbl(i).last_update_date := SYSDATE;
15276 l_tax_sources_tbl(i).last_update_login := G_LOGIN_ID;
15277 l_tax_sources_tbl(i).object_version_number := NULL;
15278
15279 l_tax_sources_tbl(i).line_name := l_prevtaxsources_tbl(k).line_name;
15280 l_tax_sources_tbl(i).application_id := l_prevtaxsources_tbl(k).application_id;
15281 l_tax_sources_tbl(i).default_taxation_country := l_prevtaxsources_tbl(k).default_taxation_country;
15282 l_tax_sources_tbl(i).product_category := l_prevtaxsources_tbl(k).product_category;
15283 l_tax_sources_tbl(i).user_defined_fisc_class := l_prevtaxsources_tbl(k).user_defined_fisc_class;
15284 l_tax_sources_tbl(i).line_intended_use := l_prevtaxsources_tbl(k).line_intended_use;
15285 l_tax_sources_tbl(i).tax_classification_code := l_prevtaxsources_tbl(k).tax_classification_code;
15286 l_tax_sources_tbl(i).inventory_item_id := l_prevtaxsources_tbl(k).inventory_item_id;
15287 l_tax_sources_tbl(i).bill_to_cust_acct_id := l_prevtaxsources_tbl(k).bill_to_cust_acct_id;
15288 l_tax_sources_tbl(i).org_id := l_prevtaxsources_tbl(k).org_id;
15289 l_tax_sources_tbl(i).legal_entity_id := l_prevtaxsources_tbl(k).legal_entity_id;
15290 l_tax_sources_tbl(i).line_amt := -l_prevtaxsources_tbl(k).line_amt;
15291 l_tax_sources_tbl(i).assessable_value := -l_prevtaxsources_tbl(k).assessable_value;
15292
15293 l_tax_sources_tbl(i).total_tax := null; -- this col will be populated after reverse doc API is called
15294 l_tax_sources_tbl(i).trx_date := l_trx_date;
15295 l_tax_sources_tbl(i).try_id := l_rbk_trx_type_id_det;
15296
15297 l_tax_sources_tbl(i).product_type := l_prevtaxsources_tbl(k).product_type;
15298 l_tax_sources_tbl(i).product_fisc_classification := l_prevtaxsources_tbl(k).product_fisc_classification;
15299 l_tax_sources_tbl(i).provnl_tax_determination_date := null;
15300 l_tax_sources_tbl(i).ship_to_location_id := l_prevtaxsources_tbl(k).ship_to_location_id;
15301 l_tax_sources_tbl(i).ship_to_party_site_id := l_prevtaxsources_tbl(k).ship_to_party_site_id;
15302 l_tax_sources_tbl(i).ship_to_party_id := l_prevtaxsources_tbl(k).ship_to_party_id;
15303 l_tax_sources_tbl(i).bill_to_party_site_id := l_prevtaxsources_tbl(k).bill_to_party_site_id;
15304 l_tax_sources_tbl(i).bill_to_location_id := l_prevtaxsources_tbl(k).bill_to_location_id;
15305 l_tax_sources_tbl(i).bill_to_party_id := l_prevtaxsources_tbl(k).bill_to_party_id;
15306 l_tax_sources_tbl(i).ship_to_cust_acct_site_use_id := l_prevtaxsources_tbl(k).ship_to_cust_acct_site_use_id;
15307 l_tax_sources_tbl(i).bill_to_cust_acct_site_use_id := l_prevtaxsources_tbl(k).bill_to_cust_acct_site_use_id;
15308 l_tax_sources_tbl(i).trx_currency_code := l_prevtaxsources_tbl(k).trx_currency_code;
15309 l_tax_sources_tbl(i).currency_conversion_type := l_prevtaxsources_tbl(k).currency_conversion_type;
15310 l_tax_sources_tbl(i).currency_conversion_rate := l_prevtaxsources_tbl(k).currency_conversion_rate;
15311 l_tax_sources_tbl(i).currency_conversion_date := l_prevtaxsources_tbl(k).currency_conversion_date;
15312
15313 -- Store the tax source IDs in a table
15314 l_tax_src_tbl(i) := l_prevtaxsources_tbl(k).id;
15315
15316 -- Populate the ZX reverse transaction lines table for tax call
15317 rev_trx_lines_tbl(i).internal_organization_id := l_org_id;
15318 rev_trx_lines_tbl(i).reversing_appln_id := G_OKL_APPLICATION_ID;
15319 rev_trx_lines_tbl(i).reversing_entity_code := G_CONTRACTS_ENTITY_CODE;
15320 rev_trx_lines_tbl(i).reversing_evnt_cls_code := G_REBOOK_EVENT_CLASS_CODE;
15321 rev_trx_lines_tbl(i).reversing_trx_id := p_source_trx_id;
15322 rev_trx_lines_tbl(i).reversing_trx_level_type := l_trx_level_type;
15323 rev_trx_lines_tbl(i).reversing_trx_line_id := l_tax_sources_tbl(i).trx_line_id;
15324
15325 rev_trx_lines_tbl(i).reversed_appln_id := G_OKL_APPLICATION_ID;
15326 rev_trx_lines_tbl(i).reversed_entity_code := l_prevtaxsources_tbl(k).entity_code;
15327 rev_trx_lines_tbl(i).reversed_evnt_cls_code := l_prevtaxsources_tbl(k).event_class_code;
15328 rev_trx_lines_tbl(i).reversed_trx_id := l_tax_sources_tbl(i).adjusted_doc_trx_id;
15329 rev_trx_lines_tbl(i).reversed_trx_level_type := l_trx_level_type;
15330 rev_trx_lines_tbl(i).reversed_trx_line_id := l_tax_sources_tbl(i).adjusted_doc_trx_line_id;
15331
15332 i := i + 1;
15333 END LOOP;
15334 END IF;
15335 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
15336 END LOOP;
15337 CLOSE l_prevtaxsources_csr;
15338
15339 -- Inactivate the previous ACTIVE tax lines - begin
15340 IF l_tax_src_tbl.COUNT > 0 THEN
15341 BEGIN
15342 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
15343 UPDATE OKL_TAX_SOURCES SET TAX_LINE_STATUS_CODE = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
15344 EXCEPTION
15345 WHEN OTHERS THEN
15346 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
15347 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
15348 OKL_API.set_message(
15349 p_app_name => 'OKL',
15350 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
15351 p_token1 => 'TABLE_NAME',
15352 p_token1_value => 'OKL_TAX_SOURCES',
15353 p_token2 => 'ERROR_CODE',
15354 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
15355 p_token3 => 'ITERATION',
15356 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
15357 END LOOP;
15358 RAISE OKL_API.G_EXCEPTION_ERROR;
15359 END IF;
15360 END;
15361
15362 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15363 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15364 'Inactivated the previous active upfront tax lines ' );
15365 END IF;
15366 END IF;
15367 -- Inactivate the previous ACTIVE tax lines - end
15368
15369 -- Push the negative tax lines populated before for original contract into
15370 -- tax sources
15371 -- bulk insert into okl_tax_sources -- start
15372 BEGIN
15373 IF l_tax_sources_tbl.COUNT > 0 THEN
15374 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
15375 -- SAVE EXCEPTIONS
15376 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
15377 END IF;
15378 EXCEPTION
15379 WHEN OTHERS THEN
15380 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
15381 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
15382 OKL_API.set_message(p_app_name => 'OKL',
15383 p_msg_name => 'OKL_TX_TRX_INS_ERR',
15384 p_token1 => 'TABLE_NAME',
15385 p_token1_value => 'OKL_TAX_SOURCES',
15386 p_token2 => 'ERROR_CODE',
15387 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
15388 p_token3 => 'ITERATION',
15389 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
15390 END LOOP;
15391 RAISE OKL_API.G_EXCEPTION_ERROR;
15392 END IF;
15393 END;
15394 -- bulk insert into okl_tax_sources -- end
15395
15396 -- Reverse document call for the reversal of original contract tax sources
15397 -- Populate ZX reverse transaction tables
15398 IF (l_booking_tax_exists) THEN -- Perform reversal only if the booking tax exists
15399 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15400 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15401 'Calling OKL_TAX_INTERFACE_PVT.reverse_document');
15402 END IF;
15403
15404 rev_trx_hdr_rec.internal_organization_id := l_org_id;
15405 rev_trx_hdr_rec.application_id := G_OKL_APPLICATION_ID;
15406 rev_trx_hdr_rec.trx_id := p_source_trx_id;
15407 rev_trx_hdr_rec.legal_entity_id := l_legal_entity_id;
15408 rev_trx_hdr_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
15409 rev_trx_hdr_rec.event_class_code := G_REBOOK_EVENT_CLASS_CODE;
15410
15411 OKL_TAX_INTERFACE_PVT.reverse_document (
15412 p_api_version => p_api_version,
15413 p_init_msg_list => p_init_msg_list,
15414 x_return_status => x_return_status,
15415 x_msg_count => x_msg_count,
15416 x_msg_data => x_msg_data,
15417 p_rev_trx_hdr_rec => rev_trx_hdr_rec,
15418 p_rev_trx_lines_tbl => rev_trx_lines_tbl);
15419
15420 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15421 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15422 'Return Status' || x_return_status);
15423 END IF;
15424
15425 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15426 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15427 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15428 RAISE OKL_API.G_EXCEPTION_ERROR;
15429 END IF;
15430
15431 -- Get the total tax amount corresponding to 'Reverse' transaction initiated
15432 -- for the 'Rebook' transaction and update total_tax in okl_tax_sources
15433 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15434 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15435 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
15436 END IF;
15437
15438 update_tax_sources_total(p_api_version => p_api_version,
15439 p_init_msg_list => p_init_msg_list,
15440 x_return_status => x_return_status,
15441 x_msg_count => x_msg_count,
15442 x_msg_data => x_msg_data,
15443 p_source_trx_id => p_source_trx_id,
15444 p_source_trx_name => p_source_trx_name);
15445
15446 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15447 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15448 'Return Status' || x_return_status);
15449 END IF;
15450
15451 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15452 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15453 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15454 RAISE OKL_API.G_EXCEPTION_ERROR;
15455 END IF;
15456
15457 END IF; -- Perform reversal only if the booking tax exists
15458
15459 -- Sync rebook tax sources with original contract info
15460 i := 1;
15461 FOR l_rbk_taxablelines_rec IN l_rbk_taxablelines_csr(cp_trx_id => p_source_trx_id,
15462 cp_khr_id => l_rbk_khr_id ) LOOP
15463 l_sync_kle_id := null;
15464
15465 l_txsv_tbl(i).id := l_rbk_taxablelines_rec.id;
15466 l_txsv_tbl(i).khr_id := l_khr_id; -- sync the parent contract id
15467
15468 l_kle_id := l_rbk_taxablelines_rec.kle_id;
15469
15470 IF (l_kle_id IS NOT NULL) THEN -- Asset Line, else Contract level tax line
15471
15472 -- Sync rebook tax sources with original contract line ids (for existing assets)
15473 -- and new contract line id (for new assets)
15474 -- Sync the parent contract kle_id's
15475 OPEN l_orig_kle_id(cp_kle_id => l_kle_id);
15476 FETCH l_orig_kle_id INTO l_sync_kle_id;
15477 IF l_orig_kle_id%NOTFOUND THEN
15478 OKC_API.set_message( p_app_name => 'OKC',
15479 p_msg_name => G_INVALID_VALUE,
15480 p_token1 => G_COL_NAME_TOKEN,
15481 p_token1_value => 'SOURCE_TRX_ID');
15482 RAISE OKL_API.G_EXCEPTION_ERROR;
15483 END IF;
15484 CLOSE l_orig_kle_id;
15485
15486 IF (l_sync_kle_id IS NOT NULL) THEN
15487 l_txsv_tbl(i).kle_id := l_sync_kle_id;
15488 ELSE
15489 -- This means the asset is newly created during Rebook process, so fetch
15490 -- the id of okc_k_lines_b where the orig_system_id1 is the kle_id of
15491 -- l_rbk_taxablelines_rec
15492 OPEN l_new_line_id(cp_orig_system_id => l_kle_id);
15493 FETCH l_new_line_id INTO l_sync_kle_id;
15494 IF l_new_line_id%NOTFOUND THEN
15495 OKC_API.set_message( p_app_name => 'OKC',
15496 p_msg_name => G_INVALID_VALUE,
15497 p_token1 => G_COL_NAME_TOKEN,
15498 p_token1_value => 'SOURCE_TRX_ID');
15499 RAISE OKL_API.G_EXCEPTION_ERROR;
15500 END IF;
15501 CLOSE l_new_line_id;
15502
15503 l_txsv_tbl(i).kle_id := l_sync_kle_id;
15504 END IF;
15505
15506 END IF;
15507
15508 i := i+1;
15509
15510 END LOOP;
15511
15512 IF (l_txsv_tbl.COUNT > 0) THEN
15513
15514 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15515 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax',
15516 'Calling okl_tax_sources_pub.update_tax_sources for synching back original contract info for all Lines in Tax Sources');
15517 END IF;
15518
15519 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
15520 ,p_init_msg_list => p_init_msg_list
15521 ,x_return_status => x_return_status
15522 ,x_msg_count => x_msg_count
15523 ,x_msg_data => x_msg_data
15524 ,p_txsv_tbl => l_txsv_tbl
15525 ,x_txsv_tbl => lx_txsv_tbl);
15526
15527 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15528 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax',
15529 'Return Status' || x_return_status);
15530 END IF;
15531
15532 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15533 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15534 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15535 RAISE OKL_API.G_EXCEPTION_ERROR;
15536 END IF;
15537 END IF;
15538 -- End Sync rebook tax sources with original contract info
15539
15540 -- Change the reportable flag after synching back the rebook copy contract
15541 -- with the original contract
15542 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15543 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15544 'process_final_upfront_tax');
15545 END IF;
15546
15547 -- Call ebtax procedure to flip the reportable flag from N to Y
15548 process_final_upfront_tax( p_api_version => p_api_version,
15549 p_init_msg_list => p_init_msg_list,
15550 x_return_status => x_return_status,
15551 x_msg_count => x_msg_count,
15552 x_msg_data => x_msg_data,
15553 p_trx_id => p_source_trx_id,
15554 p_application_id => G_OKL_APPLICATION_ID,
15555 p_entity_code => G_CONTRACTS_ENTITY_CODE,
15556 p_event_class_code => G_BOOKING_EVENT_CLASS_CODE);
15557
15558 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15559 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15560 'Return Status' || x_return_status);
15561 END IF;
15562
15563 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15564 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15565 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15566 RAISE OKL_API.G_EXCEPTION_ERROR;
15567 END IF;
15568
15569 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15570 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15571 'Calling "make_tax_sources_reportable" .. ');
15572 END IF;
15573
15574 make_tax_sources_reportable(p_api_version => p_api_version,
15575 p_init_msg_list => p_init_msg_list,
15576 x_return_status => x_return_status,
15577 x_msg_count => x_msg_count,
15578 x_msg_data => x_msg_data,
15579 p_source_trx_id => p_source_trx_id);
15580
15581 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15582 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15583 'Return Status' || x_return_status);
15584 END IF;
15585
15586 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15587 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15588 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15589 RAISE OKL_API.G_EXCEPTION_ERROR;
15590 END IF;
15591
15592 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15593 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ','End(-)');
15594 END IF;
15595
15596 EXCEPTION
15597 WHEN OKL_API.G_EXCEPTION_ERROR THEN
15598 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15599 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15600 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
15601 END IF;
15602
15603 IF l_trxcontracts_csr%ISOPEN THEN
15604 CLOSE l_trxcontracts_csr;
15605 END IF;
15606
15607 IF l_prevtaxsources_csr%ISOPEN THEN
15608 CLOSE l_prevtaxsources_csr;
15609 END IF;
15610
15611 IF l_rbk_taxablelines_csr%ISOPEN THEN
15612 CLOSE l_rbk_taxablelines_csr;
15613 END IF;
15614
15615 IF l_orig_kle_id%ISOPEN THEN
15616 CLOSE l_orig_kle_id;
15617 END IF;
15618
15619 IF l_new_line_id%ISOPEN THEN
15620 CLOSE l_new_line_id;
15621 END IF;
15622
15623 x_return_status := OKL_API.G_RET_STS_ERROR;
15624
15625 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15626 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15627 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15628 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
15629 END IF;
15630
15631 IF l_trxcontracts_csr%ISOPEN THEN
15632 CLOSE l_trxcontracts_csr;
15633 END IF;
15634
15635 IF l_prevtaxsources_csr%ISOPEN THEN
15636 CLOSE l_prevtaxsources_csr;
15637 END IF;
15638
15639 IF l_rbk_taxablelines_csr%ISOPEN THEN
15640 CLOSE l_rbk_taxablelines_csr;
15641 END IF;
15642
15643 IF l_orig_kle_id%ISOPEN THEN
15644 CLOSE l_orig_kle_id;
15645 END IF;
15646
15647 IF l_new_line_id%ISOPEN THEN
15648 CLOSE l_new_line_id;
15649 END IF;
15650
15651 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15652
15653 WHEN OTHERS THEN
15654 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15655 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15656 'EXCEPTION :'||sqlerrm);
15657 END IF;
15658
15659 IF l_trxcontracts_csr%ISOPEN THEN
15660 CLOSE l_trxcontracts_csr;
15661 END IF;
15662
15663 IF l_prevtaxsources_csr%ISOPEN THEN
15664 CLOSE l_prevtaxsources_csr;
15665 END IF;
15666
15667 IF l_rbk_taxablelines_csr%ISOPEN THEN
15668 CLOSE l_rbk_taxablelines_csr;
15669 END IF;
15670
15671 IF l_orig_kle_id%ISOPEN THEN
15672 CLOSE l_orig_kle_id;
15673 END IF;
15674
15675 IF l_new_line_id%ISOPEN THEN
15676 CLOSE l_new_line_id;
15677 END IF;
15678
15679 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15680 -- unexpected error
15681 OKL_API.set_message(p_app_name => g_app_name,
15682 p_msg_name => g_unexpected_error,
15683 p_token1 => g_sqlcode_token,
15684 p_token1_value => sqlcode,
15685 p_token2 => g_sqlerrm_token,
15686 p_token2_value => sqlerrm);
15687
15688 END process_rebook_upfront_tax;
15689
15690 /*========================================================================
15691 | PRIVATE PROCEDURE process_quoting_upfront_tax
15692 |
15693 | DESCRIPTION
15694 | This procedure is called from calculate_sales_tax procedure to calculate
15695 | Upfront tax for a sales quote
15696 |
15697 | CALLED FROM calculate_sales_tax()
15698 |
15699 |
15700 | CALLS PROCEDURES/FUNCTIONS
15701 | populate_tax_info()
15702 | OKL_TAX_INTERFACE_PVT.calculate_tax()
15703 |
15704 |
15705 | PARAMETERS
15706 | p_source_trx_id -- Source transaction ID
15707 | p_source_trx_name -- Source transaction Name
15708 | p_source_table -- Source table
15709 |
15710 | KNOWN ISSUES
15711 |
15712 | NOTES
15713 |
15714 |
15715 | MODIFICATION HISTORY
15716 | Date Author Description of Changes
15717 | 08-APR-05 SECHAWLA Created
15718 | 12-DEC-05 SECHAWLA 4690074 - modified cursor l_get_location_id to map
15719 | Install site id of the assets to
15720 | PARTY_SITE_USE_ID in hz_party_site_uses
15721 |
15722 *=======================================================================*/
15723 PROCEDURE process_quoting_upfront_tax(
15724 p_api_version IN NUMBER,
15725 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
15726 x_return_status OUT NOCOPY VARCHAR2,
15727 x_msg_count OUT NOCOPY NUMBER,
15728 x_msg_data OUT NOCOPY VARCHAR2,
15729 p_source_trx_id IN NUMBER,
15730 p_source_trx_name IN VARCHAR2,
15731 p_source_table IN VARCHAR2) IS
15732
15733 ---------------------Sales Quote / Lease Application ----------------
15734 --p_source_trx_id ---> okl_lease_quotes_b.id (sales quote ID)
15735 --p_source_trx_name ---> 'Sales Quote'
15736 --p_source_table ---> 'OKL_LEASE_QUOTES_B'
15737 -- 'Sales Quote' is not going to store/add try_id in okl_lease_quotes_b,
15738 -- as it will be the same for all the rows
15739 ----------------------------------------------------------------------
15740
15741 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
15742
15743 -- Validate source trx id
15744 CURSOR l_leasequotes_csr(cp_trx_id IN NUMBER) IS
15745 SELECT expected_start_date, product_id, interest_disclosed,
15746 transfer_of_title, sale_and_lease_back, purchase_of_lease, usage_category,
15747 age_of_equipment, parent_object_code , parent_object_id, legal_entity_id
15748 FROM okl_lease_quotes_b
15749 WHERE id = cp_trx_id;
15750
15751 -- Get the transaction type id
15752 CURSOR l_trxtypes_csr IS
15753 SELECT id
15754 FROM okl_trx_types_tl
15755 WHERE name = 'Sales Quote'
15756 AND language = 'US';
15757
15758 -- Get Currency code and cust a/c for lease opportunity
15759 CURSOR l_leaseopp_csr(cp_id IN NUMBER) IS
15760 SELECT lop.currency_code, lop.cust_acct_id, lop.prospect_id, --> (party id)
15761 lop.org_id, lsq.expected_start_date, lop.currency_conversion_type,
15762 lop.currency_conversion_rate, lop.currency_conversion_date, lsq.line_intended_use,
15763 pdt.name
15764 FROM okl_lease_opportunities_b lop, okl_lease_quotes_b lsq, okl_products pdt
15765 WHERE lsq.parent_object_id = lop.id
15766 AND lsq.parent_object_code = 'LEASEOPP'
15767 AND lsq.product_id = pdt.id
15768 AND lsq.id = cp_id;
15769
15770 -- Get Currency code and cust a/c for lease application
15771 CURSOR l_leaseapp_csr(cp_id IN NUMBER) IS
15772 SELECT lap.currency_code, lap.cust_acct_id, lap.prospect_id, --> (party id)
15773 lap.org_id, lsq.expected_start_date, lap.currency_conversion_type,
15774 lap.currency_conversion_rate, lap.currency_conversion_date, lsq.line_intended_use,
15775 pdt.name
15776 FROM okl_lease_applications_b lap, okl_lease_quotes_b lsq, okl_products pdt
15777 WHERE lsq.parent_object_id = lap.id
15778 AND lsq.parent_object_code = 'LEASEAPP'
15779 AND lsq.primary_quote = 'Y'
15780 AND lsq.product_id = pdt.id
15781 AND lsq.id = cp_id;
15782
15783 -- Check if quoting tax was already calculated for this quote. If so, first
15784 -- delete the quoting tax source transaction and tax details
15785 CURSOR l_prevtaxsources_csr(cp_trx_id IN NUMBER) IS
15786 SELECT id
15787 FROM okl_tax_sources
15788 WHERE tax_call_type_code = G_UPFRONT_TAX
15789 AND trx_id = cp_trx_id;
15790
15791 -- Get the previous tax trx details
15792 CURSOR l_prevtaxtrxdet_csr(cp_txs_id IN NUMBER) IS
15793 SELECT ID
15794 FROM okl_tax_trx_details
15795 WHERE txs_id = cp_txs_id;
15796
15797 -- Get all the assets of the sales quote
15798 CURSOR l_quoteassets_csr(cp_quote_id IN NUMBER) IS
15799 SELECT AST.ID asset_id, asset_number, install_site_id
15800 FROM OKL_ASSETS_B AST
15801 WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
15802 AND AST.PARENT_OBJECT_ID = cp_quote_id;
15803
15804 -- Get Inv item and supplier
15805 CURSOR l_assetcomponent_csr(cp_asset_id IN NUMBER) IS
15806 SELECT inv_item_id, supplier_id
15807 FROM okl_asset_components_b
15808 WHERE asset_id = cp_asset_id
15809 AND primary_component = 'Y';
15810
15811 -- Get the quote and asset level cash flows for a sales quote
15812 CURSOR l_q_asset_cashflows_csr(cp_quote_id IN NUMBER) IS
15813 SELECT cfo.source_id , ast.asset_number, caf.sty_id,
15814 sum(nvl((cfl.amount * cfl.number_of_periods),0) + nvl(cfl.stub_amount,0)) taxable_basis
15815 FROM OKL_ASSETS_B ast, okl_cash_flow_objects cfo, okl_cash_flows caf, okl_cash_flow_levels cfl
15816 WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
15817 AND AST.PARENT_OBJECT_ID = cp_quote_id
15818 AND ast.id = cfo.source_id
15819 AND cfo.oty_code = 'QUOTED_ASSET'
15820 AND cfo.source_table = 'OKL_ASSETS_B'
15821 AND cfo.id = caf.cfo_id
15822 AND caf.cft_code = 'PAYMENT_SCHEDULE'
15823 AND caf.sts_code IN ('CURRENT', 'WORK')
15824 AND caf.id = cfl.caf_id
15825 GROUP BY cfo.source_id , ast.asset_number, caf.sty_id
15826 UNION
15827 SELECT cfo.source_id , null, caf.sty_id,
15828 sum(nvl((cfl.amount * cfl.number_of_periods),0) + nvl(cfl.stub_amount,0)) taxable_basis
15829 FROM okl_cash_flow_objects cfo, okl_cash_flows caf, okl_cash_flow_levels cfl
15830 WHERE cfo.oty_code = 'LEASE_QUOTE'
15831 AND cfo.source_table = 'OKL_LEASE_QUOTES_B'
15832 AND cfo.source_id = cp_quote_id
15833 AND cfo.id = caf.cfo_id
15834 AND caf.cft_code = 'PAYMENT_SCHEDULE'
15835 AND caf.sts_code IN ('CURRENT', 'WORK')
15836 AND caf.id = cfl.caf_id
15837 GROUP BY cfo.source_id , null, caf.sty_id;
15838
15839 -- Get 'BILL_TO' identifiers for the quote party
15840 CURSOR l_billtosite_csr(cp_party_id IN NUMBER) IS
15841 SELECT
15842 b.site_use_id,
15843 c.party_site_id,
15844 c.party_id,
15845 c.location_id
15846 FROM hz_cust_acct_sites_all a,
15847 hz_cust_site_uses_all b,
15848 hz_party_sites c,
15849 hz_parties d
15850 WHERE
15851 a.cust_acct_site_id = b.cust_acct_site_id
15852 AND b.site_use_code = 'BILL_TO'
15853 AND d.party_id = cp_party_id
15854 AND a.party_site_id = c.party_site_id
15855 AND c.party_id = d.party_id;
15856
15857 -- Get 'SHIP_TO' identifiers for the quote party
15858 CURSOR l_shiptosite_csr(cp_party_id IN NUMBER) IS
15859 SELECT
15860 b.site_use_id,
15861 c.party_site_id,
15862 c.party_id,
15863 c.location_id
15864 FROM hz_cust_acct_sites_all a,
15865 hz_cust_site_uses_all b,
15866 hz_party_sites c,
15867 hz_parties d
15868 WHERE
15869 a.cust_acct_site_id = b.cust_acct_site_id
15870 AND b.site_use_code = 'SHIP_TO'
15871 AND d.party_id = cp_party_id
15872 AND a.party_site_id = c.party_site_id
15873 AND c.party_id = d.party_id;
15874
15875 -- Check if tax basis override formula exists
15876 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
15877 SELECT fma_id
15878 FROM okl_tax_basis_override
15879 WHERE try_id = cp_try_id
15880 AND org_id = MO_GLOBAL.get_current_org_id;
15881
15882 -- GET FORMULA NAME
15883 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
15884 SELECT name
15885 FROM Okl_formulae_b
15886 WHERE id = cp_fma_id;
15887
15888 -- Get the AR customer transaction type used by OKL
15889 CURSOR l_racusttrxtypes_csr IS
15890 SELECT cust_trx_type_id
15891 FROM ra_cust_trx_types_all
15892 WHERE name = 'Invoice-OKL';
15893
15894 -- Get currency attributes
15895 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
15896 SELECT precision, minimum_accountable_unit
15897 FROM fnd_currencies
15898 WHERE currency_code = cp_currency_code
15899 AND enabled_flag = 'Y'
15900 AND NVL(start_date_active, sysdate) <= sysdate
15901 AND NVL(end_date_active, sysdate) >= sysdate;
15902
15903 -- Get the primary pay vendor location for the vendor
15904 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
15905 SELECT vendor_site_id
15906 FROM po_vendor_sites
15907 WHERE vendor_id = cp_vendor_id
15908 AND primary_pay_site_flag = 'Y';
15909
15910 -- Cursor to get the corresponding hz_location id for the install location id
15911 CURSOR l_get_location_id(cp_party_site_id IN NUMBER) IS
15912 -- SECHAWLA 12-DEC-05 4690074
15913 SELECT hzp.location_id
15914 FROM HZ_PARTY_SITES hzp, hz_party_site_uses hsu
15915 WHERE hsu.PARTY_SITE_USE_ID = cp_party_site_id
15916 AND hzp.party_Site_id = hsu.party_site_id;
15917
15918 -- Cursor to get the ship_to_site_use_id corresponding to the install_location_id of the asset
15919 CURSOR l_get_shiptositeid(cp_cust_acct_id IN NUMBER, cp_inst_loc_id IN NUMBER,cp_loc_id IN NUMBER) IS
15920 SELECT b.site_use_id, c.party_site_id, c.party_id, c.location_id
15921 FROM hz_cust_acct_sites_all a,
15922 hz_cust_site_uses_all b,
15923 hz_party_sites c
15924 WHERE a.cust_acct_site_id = b.cust_acct_site_id
15925 AND b.site_use_code = 'SHIP_TO'
15926 AND a.party_site_id = c.party_site_id
15927 AND a.cust_account_id = cp_cust_acct_id
15928 AND a.org_id = MO_GLOBAL.get_current_org_id
15929 AND c.party_site_id = cp_inst_loc_id
15930 AND c.location_id = cp_loc_id;
15931
15932 TYPE asset_level_det_rec_type IS RECORD
15933 (asset_id NUMBER,
15934 asset_number VARCHAR2(150),
15935 vendor_site_id NUMBER,
15936 inv_item_id NUMBER,
15937 ship_to_site_use_id NUMBER,
15938 asset_pymnt_exist VARCHAR2(1));
15939
15940 TYPE prev_tx_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15941 TYPE prev_tx_trx_det_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15942 TYPE quoteassets_tbl_type IS TABLE OF l_quoteassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15943 TYPE asset_level_det_tbl_type IS TABLE OF asset_level_det_rec_type INDEX BY BINARY_INTEGER;
15944 TYPE q_asset_cashflows_tbl_type IS TABLE OF l_q_asset_cashflows_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15945
15946 l_q_asset_cashflows_tbl q_asset_cashflows_tbl_type;
15947 l_sq_asset_level_det_tbl asset_level_det_tbl_type;
15948 l_quoteassets_tbl quoteassets_tbl_type;
15949 l_prevtaxsources_tbl prev_tx_src_tbl_type;
15950 l_prevtaxtrxdet_tbl prev_tx_trx_det_tbl_type;
15951 lp_tax_src_params_rec tax_src_params_rec_type;
15952
15953 lx_line_params_tbl line_params_tbl_type;
15954 lx_tax_sources_tbl tax_sources_tbl_type;
15955 lp_hdr_params_rec hdr_params_rec_type;
15956
15957 l_sq_trx_type_id NUMBER;
15958 l_parent_object_code VARCHAR2(30);
15959 l_parent_object_id NUMBER;
15960 l_legal_entity_id NUMBER;
15961 l_inv_item_id NUMBER;
15962 l_supplier_id NUMBER;
15963
15964 l_reported_yn VARCHAR2(1);
15965 l_ledger_id NUMBER;
15966 l_taxation_country VARCHAR2(2);
15967
15968 l_k_start_date DATE;
15969 l_sq_fin_prod_id NUMBER;
15970 l_sq_int_disclosed VARCHAR2(30);
15971 l_sq_transfer_of_title VARCHAR2(30);
15972 l_sq_sale_lease_back VARCHAR2(30);
15973 l_sq_purchase_of_lease VARCHAR2(30);
15974 l_sq_usage_of_equipment VARCHAR2(450);
15975 l_sq_age_of_equipment NUMBER;
15976
15977 l_inv_item_org_id NUMBER;
15978
15979 l_fetch_size NUMBER := 10000;
15980 i NUMBER;
15981 l_fma_id NUMBER;
15982 l_formula_name VARCHAR2(150);
15983
15984 l_cust_acct_id NUMBER;
15985 l_bill_to_siteuseid NUMBER;
15986 l_bill_to_party_site_id NUMBER;
15987 l_bill_to_party_id NUMBER;
15988 l_bill_to_location_id NUMBER;
15989 l_currency_code VARCHAR2(15);
15990 l_precision NUMBER;
15991 l_minimum_accountable_unit NUMBER;
15992 l_cust_trx_type_id NUMBER;
15993 l_party_id NUMBER;
15994 l_vendor_site_id NUMBER;
15995 l_loc_id NUMBER;
15996 l_ship_to_siteuseid NUMBER;
15997 l_ship_to_party_site_id NUMBER;
15998 l_ship_to_party_id NUMBER;
15999 l_ship_to_location_id NUMBER;
16000 l_org_id NUMBER;
16001 l_start_date DATE;
16002 l_currency_conversion_type VARCHAR2(30);
16003 l_currency_conversion_rate NUMBER;
16004 l_currency_conversion_date DATE;
16005 l_line_intended_use VARCHAR2(240);
16006 l_deal_type VARCHAR2(30);
16007
16008 tax_call_cnt NUMBER;
16009 Q_pymnt_exist VARCHAR2(1);
16010 ind NUMBER;
16011
16012 BEGIN
16013
16014 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16015 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax','Begin(+)');
16016 END IF;
16017
16018 --Print Input Variables
16019 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16020 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16021 'p_init_msg_list :'||p_init_msg_list);
16022 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16023 'p_source_trx_id :'||p_source_trx_id);
16024 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16025 'p_source_trx_name :'||p_source_trx_name);
16026 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16027 'p_source_table :'||p_source_table);
16028 END IF;
16029
16030 x_return_status := OKL_API.G_RET_STS_SUCCESS;
16031
16032 -- Validate the source trx id
16033 OPEN l_leasequotes_csr(p_source_trx_id);
16034 FETCH l_leasequotes_csr INTO l_k_start_date, l_sq_fin_prod_id, l_sq_int_disclosed,
16035 l_sq_transfer_of_title, l_sq_sale_lease_back, l_sq_purchase_of_lease, l_sq_usage_of_equipment,
16036 l_sq_age_of_equipment, l_parent_object_code, l_parent_object_id, l_legal_entity_id;
16037
16038 IF l_leasequotes_csr%NOTFOUND THEN
16039 -- Source trx id is invalid
16040 OKC_API.set_message( p_app_name => 'OKC',
16041 p_msg_name => G_INVALID_VALUE,
16042 p_token1 => G_COL_NAME_TOKEN,
16043 p_token1_value => 'SOURCE_TRX_ID');
16044 RAISE OKL_API.G_EXCEPTION_ERROR;
16045 END IF;
16046 CLOSE l_leasequotes_csr;
16047
16048 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16049 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16050 'l_k_start_date '||l_k_start_date );
16051 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16052 'l_sq_fin_prod_id '||l_sq_fin_prod_id );
16053 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16054 'l_sq_int_disclosed '||l_sq_int_disclosed );
16055 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16056 'l_sq_transfer_of_title '||l_sq_transfer_of_title );
16057 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16058 'l_sq_sale_lease_back '||l_sq_sale_lease_back );
16059 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16060 'l_sq_purchase_of_lease '||l_sq_purchase_of_lease );
16061 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16062 'l_sq_usage_of_equipment '||l_sq_usage_of_equipment );
16063 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16064 'l_sq_age_of_equipment '||l_sq_age_of_equipment );
16065 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16066 'l_parent_object_code '||l_parent_object_code );
16067 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16068 'l_parent_object_id '||l_parent_object_id );
16069 END IF;
16070
16071 -- Check if Quoting tax lines already exist for this quote
16072 OPEN l_prevtaxsources_csr(p_source_trx_id);
16073 LOOP
16074 l_prevtaxsources_tbl.DELETE;
16075 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsources_tbl LIMIT l_fetch_size;
16076 IF l_prevtaxsources_tbl.COUNT > 0 THEN
16077 i := 0;
16078 l_prevtaxtrxdet_tbl.DELETE;
16079
16080 FOR k IN l_prevtaxsources_tbl.FIRST .. l_prevtaxsources_tbl.LAST LOOP
16081 -- Get the corresponding tax trx details
16082 FOR l_prevtaxtrxdet_rec IN l_prevtaxtrxdet_csr(l_prevtaxsources_tbl(k)) LOOP
16083 i := i + 1;
16084 l_prevtaxtrxdet_tbl(i):= l_prevtaxtrxdet_rec.id;
16085
16086 END LOOP;
16087 END LOOP;
16088
16089 -- Delete from both the tables.
16090 BEGIN
16091 IF l_prevtaxtrxdet_tbl.COUNT > 0 THEN
16092 FORALL i IN l_prevtaxtrxdet_tbl.FIRST..l_prevtaxtrxdet_tbl.LAST
16093 DELETE FROM OKL_TAX_TRX_DETAILS WHERE id = l_prevtaxtrxdet_tbl(i);
16094
16095 END IF;
16096 EXCEPTION
16097 WHEN OTHERS THEN
16098 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
16099 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
16100 OKL_API.set_message( p_app_name => 'OKL',
16101 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
16102 p_token1 => 'TABLE_NAME',
16103 p_token1_value => 'OKL_TAX_TRX_DETAILS',
16104 p_token2 => 'ERROR_CODE',
16105 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
16106 p_token3 => 'ITERATION',
16107 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
16108 END LOOP;
16109 RAISE OKL_API.G_EXCEPTION_ERROR;
16110 END IF;
16111 END;
16112
16113 BEGIN
16114 FORALL i IN l_prevtaxsources_tbl.FIRST..l_prevtaxsources_tbl.LAST
16115 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prevtaxsources_tbl(i);
16116 EXCEPTION
16117 WHEN OTHERS THEN
16118 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
16119 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
16120 OKL_API.set_message( p_app_name => 'OKL',
16121 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
16122 p_token1 => 'TABLE_NAME',
16123 p_token1_value => 'OKL_TAX_SOURCES',
16124 p_token2 => 'ERROR_CODE',
16125 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
16126 p_token3 => 'ITERATION',
16127 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
16128 END LOOP;
16129 RAISE OKL_API.G_EXCEPTION_ERROR;
16130 END IF;
16131 END;
16132
16133 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16134 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16135 'Deleted prev tax sources and lines for this sales quote ' );
16136 END IF;
16137
16138 END IF;
16139 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
16140 END LOOP;
16141 CLOSE l_prevtaxsources_csr;
16142
16143 -- Fetch the Ledger info
16144 l_ledger_id := okl_accounting_util.get_set_of_books_id;
16145 l_reported_yn := 'N';
16146
16147 -- Fetch the Tax country
16148 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
16149 x_msg_count => x_msg_count,
16150 x_msg_data => x_msg_data,
16151 p_legal_entity_id => l_legal_entity_id);
16152 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16153 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16154 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16155 RAISE OKL_API.G_EXCEPTION_ERROR;
16156 END IF;
16157
16158 -- Fetch 'Sales Quote' Trx type ID
16159 OPEN l_trxtypes_csr;
16160 FETCH l_trxtypes_csr INTO l_sq_trx_type_id;
16161 CLOSE l_trxtypes_csr;
16162
16163 -- Check if taxable basis override applies to 'Sales Quote' transaction
16164 OPEN l_txbasisoverride_csr(cp_try_id => l_sq_trx_type_id);
16165 FETCH l_txbasisoverride_csr INTO l_fma_id;
16166 CLOSE l_txbasisoverride_csr;
16167
16168 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16169 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16170 'Sales Quote Trx Type ID '||l_sq_trx_type_id );
16171 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16172 'Formula ID '||l_fma_id );
16173 END IF;
16174
16175 IF l_fma_id IS NOT NULL THEN
16176 OPEN l_formulae_csr(l_fma_id);
16177 FETCH l_formulae_csr INTO l_formula_name;
16178 IF l_formulae_csr%NOTFOUND THEN
16179 OKC_API.set_message( p_app_name => 'OKC',
16180 p_msg_name => G_INVALID_VALUE,
16181 p_token1 => G_COL_NAME_TOKEN,
16182 p_token1_value => 'FMA_ID');
16183 RAISE OKL_API.G_EXCEPTION_ERROR;
16184 END IF;
16185 CLOSE l_formulae_csr;
16186
16187 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16188 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16189 'l_formula_name '||l_formula_name );
16190 END IF;
16191 END IF;
16192
16193 -- Get the AR cust trx type ID
16194 OPEN l_racusttrxtypes_csr;
16195 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
16196 IF l_racusttrxtypes_csr%NOTFOUND THEN
16197 -- Cust trx type id is required
16198 OKC_API.set_message( p_app_name => 'OKC',
16199 p_msg_name => G_REQUIRED_VALUE,
16200 p_token1 => G_COL_NAME_TOKEN,
16201 p_token1_value => 'CUST_TRX_TYPE_ID');
16202 RAISE OKL_API.G_EXCEPTION_ERROR;
16203 END IF;
16204 CLOSE l_racusttrxtypes_csr;
16205
16206 -- Fetch parent object values
16207 IF l_parent_object_code ='LEASEOPP' THEN
16208 OPEN l_leaseopp_csr(p_source_trx_id);
16209 FETCH l_leaseopp_csr INTO l_currency_code, l_cust_acct_id, l_party_id, -- l_cust_acct_id may be null
16210 l_org_id, l_start_date, l_currency_conversion_type,
16211 l_currency_conversion_rate, l_currency_conversion_date,
16212 l_line_intended_use,l_deal_type;
16213 IF l_leaseopp_csr%NOTFOUND THEN
16214 OKC_API.set_message( p_app_name => 'OKC',
16215 p_msg_name => G_REQUIRED_VALUE,
16216 p_token1 => G_COL_NAME_TOKEN,
16217 p_token1_value => 'CURRENCY_CODE');
16218 RAISE OKL_API.G_EXCEPTION_ERROR;
16219 END IF;
16220 CLOSE l_leaseopp_csr;
16221 ELSIF l_parent_object_code ='LEASEAPP' THEN
16222 OPEN l_leaseapp_csr(p_source_trx_id);
16223 FETCH l_leaseapp_csr INTO l_currency_code, l_cust_acct_id, l_party_id, -- l_cust_acct_id may be null
16224 l_org_id, l_start_date, l_currency_conversion_type,
16225 l_currency_conversion_rate, l_currency_conversion_date,
16226 l_line_intended_use, l_deal_type;
16227 IF l_leaseapp_csr%NOTFOUND THEN
16228 OKC_API.set_message( p_app_name => 'OKC',
16229 p_msg_name => G_REQUIRED_VALUE,
16230 p_token1 => G_COL_NAME_TOKEN,
16231 p_token1_value => 'CURRENCY_CODE');
16232 RAISE OKL_API.G_EXCEPTION_ERROR;
16233 END IF;
16234 CLOSE l_leaseapp_csr;
16235 END IF;
16236
16237 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16239 'l_currency_code '||l_currency_code );
16240 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16241 'l_cust_acct_id '||l_cust_acct_id );
16242 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16243 'l_party_id '||l_party_id );
16244 END IF;
16245
16246 -- Get Bill to Site Use ID from TCA
16247 -- This cursor may return more than one Bill To sites for a party
16248 -- Select the first bill to returned by the cursor
16249 -- Bill To is not captured on a sales quote. So we get it from TCA
16250 -- There may not be any Bill To site defined for a party
16251 OPEN l_billtosite_csr(l_party_id);
16252 FETCH l_billtosite_csr INTO l_bill_to_siteuseid, l_bill_to_party_site_id,
16253 l_bill_to_party_id, l_bill_to_location_id;
16254 IF l_billtosite_csr%NOTFOUND THEN
16255 OKC_API.set_message( p_app_name => 'OKL',
16256 p_msg_name => 'OKL_TX_NO_SQ_BILL_TO');
16257 RAISE OKL_API.G_EXCEPTION_ERROR;
16258 END IF;
16259 CLOSE l_billtosite_csr ;
16260
16261 -- Fetch precision, minimum accountable unit
16262 OPEN l_fndcurrency_csr(l_currency_code);
16263 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit;
16264 IF l_fndcurrency_csr%NOTFOUND THEN
16265 -- Currency code is invalid
16266 OKC_API.set_message( p_app_name => 'OKC',
16267 p_msg_name => G_INVALID_VALUE,
16268 p_token1 => G_COL_NAME_TOKEN,
16269 p_token1_value => 'CURRENCY_CODE');
16270 RAISE OKL_API.G_EXCEPTION_ERROR;
16271 END IF;
16272 CLOSE l_fndcurrency_csr;
16273
16274 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16275 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16276 'l_bill_to_siteuseid '||l_bill_to_siteuseid );
16277 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16278 'l_precision '||l_precision );
16279 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16280 'l_minimum_accountable_unit '||l_minimum_accountable_unit );
16281 END IF;
16282
16283 -- Sales Quoting is not capturing Purchase Option as of now.
16284 -- So this determinant will be null for Sales Quote
16285
16286 -- Get all the assets belonging to a quote
16287 -------------- Populate asset level TBC Determinants ---------------
16288 i := 0;
16289
16290 OPEN l_quoteassets_csr(p_source_trx_id);
16291 LOOP
16292 l_quoteassets_tbl.DELETE;
16293 FETCH l_quoteassets_csr BULK COLLECT INTO l_quoteassets_tbl LIMIT l_fetch_size;
16294
16295 IF l_quoteassets_tbl.COUNT > 0 THEN
16296 FOR K IN l_quoteassets_tbl.FIRST..l_quoteassets_tbl.LAST LOOP
16297
16298 OPEN l_assetcomponent_csr(l_quoteassets_tbl(k).asset_id);
16299 FETCH l_assetcomponent_csr INTO l_inv_item_id, l_supplier_id;
16300 CLOSE l_assetcomponent_csr;
16301
16302 IF l_supplier_id IS NOT NULL THEN
16303 OPEN l_povendorsites_csr(l_supplier_id);
16304 FETCH l_povendorsites_csr INTO l_vendor_site_id; -- will be null if none of the sites are checked as primary
16305 CLOSE l_povendorsites_csr;
16306 END IF;
16307
16308 -- get the location ID
16309 OPEN l_get_location_id(l_quoteassets_tbl(k).install_site_id);
16310 FETCH l_get_location_id INTO l_loc_id;
16311 CLOSE l_get_location_id;
16312
16313 IF l_loc_id IS NULL THEN
16314 -- Install Location id is required
16315 OKL_API.set_message( p_app_name => 'OKC',
16316 p_msg_name => G_REQUIRED_VALUE,
16317 p_token1 => G_COL_NAME_TOKEN,
16318 p_token1_value => 'INSTALL_LOCATION_ID');
16319 RAISE OKL_API.G_EXCEPTION_ERROR;
16320 END IF;
16321
16322 IF l_cust_acct_id IS NOT NULL THEN
16323 -- Get the ship to site use id of the asset
16324 OPEN l_get_shiptositeid(l_cust_acct_id,l_quoteassets_tbl(k).install_site_id,l_loc_id);
16325 FETCH l_get_shiptositeid INTO l_ship_to_siteuseid, l_ship_to_party_site_id,
16326 l_ship_to_party_id, l_ship_to_location_id;
16327 CLOSE l_get_shiptositeid;
16328 ELSE
16329 OPEN l_shiptosite_csr(l_party_id);
16330 FETCH l_shiptosite_csr INTO l_ship_to_siteuseid, l_ship_to_party_site_id,
16331 l_ship_to_party_id, l_ship_to_location_id;
16332 CLOSE l_shiptosite_csr;
16333 END IF;
16334
16335 l_sq_asset_level_det_tbl(i).asset_id := l_quoteassets_tbl(k).asset_id;
16336 l_sq_asset_level_det_tbl(i).asset_number := l_quoteassets_tbl(k).asset_number;
16337 l_sq_asset_level_det_tbl(i).vendor_site_id := l_vendor_site_id;
16338 l_sq_asset_level_det_tbl(i).inv_item_id := l_inv_item_id;
16339 l_sq_asset_level_det_tbl(i).ship_to_site_use_id := l_ship_to_siteuseid;
16340
16341 l_sq_asset_level_det_tbl(i).asset_pymnt_exist := 'N';
16342
16343 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16344 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16345 'i '||i );
16346 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16347 'asset_id '||l_sq_asset_level_det_tbl(i).asset_id );
16348 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16349 'asset_number '||l_sq_asset_level_det_tbl(i).asset_number );
16350 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16351 'vendor_site_id '||l_sq_asset_level_det_tbl(i).vendor_site_id );
16352 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16353 'inv_item_id '||l_sq_asset_level_det_tbl(i).inv_item_id );
16354 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16355 'ship_to_site_use_id '||l_sq_asset_level_det_tbl(i).ship_to_site_use_id );
16356 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16357 'asset_pymnt_exist '||l_sq_asset_level_det_tbl(i).asset_pymnt_exist );
16358 END IF;
16359
16360 i := i+1;
16361 END LOOP;
16362 END IF;
16363 EXIT WHEN l_quoteassets_csr%NOTFOUND;
16364 END LOOP;
16365 CLOSE l_quoteassets_csr;
16366
16367 -- Populate tax info
16368 Q_pymnt_exist := 'N';
16369
16370 i := 1;
16371 OPEN l_q_asset_cashflows_csr(p_source_trx_id);
16372 LOOP
16373 l_q_asset_cashflows_tbl.DELETE;
16374 FETCH l_q_asset_cashflows_csr BULK COLLECT INTO l_q_asset_cashflows_tbl LIMIT l_fetch_size;
16375
16376 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16377 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16378 'l_q_asset_cashflows_tbl.count '||l_q_asset_cashflows_tbl.count||' i = '||i );
16379 END IF;
16380
16381 IF l_q_asset_cashflows_tbl.count = 0 AND i = 1 THEN
16382 -- No payments exist
16383 -- Tax call will still be made at the Q hdr and each asset level
16384
16385 tax_call_cnt := 1;
16386
16387 -- Quote level call begin
16388
16389 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16390 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16391 'tax_call_cnt '||tax_call_cnt );
16392 END IF;
16393
16394 -- Populate tax sources record -- start
16395 lp_tax_src_params_rec.kle_id := null;
16396 lp_tax_src_params_rec.asset_number := null;
16397 lp_tax_src_params_rec.line_name := null;
16398
16399 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16400 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16401 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16402 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16403
16404 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16405 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16406 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16407 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16408
16409 lp_tax_src_params_rec.inventory_item_id := null;
16410 lp_tax_src_params_rec.sty_id := null;
16411 lp_tax_src_params_rec.khr_id := null;
16412 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16413 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16414 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16415 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16416 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16417 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16418 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16419 lp_tax_src_params_rec.trx_date := l_start_date;
16420 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16421 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16422 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16423 lp_tax_src_params_rec.org_id := l_org_id;
16424 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16425 lp_tax_src_params_rec.line_amt := 0;
16426 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16427
16428 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16429 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16430 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16431 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16432 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16433 lp_tax_src_params_rec.adjusted_doc_number := null;
16434 lp_tax_src_params_rec.adjusted_doc_date := null;
16435 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16436 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16437
16438 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16439 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16440 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16441 -- Populate tax sources record -- end
16442
16443 populate_tax_info(
16444 p_api_version => p_api_version,
16445 p_init_msg_list => OKC_API.G_FALSE,
16446 x_return_status => x_return_status,
16447 x_msg_count => x_msg_count,
16448 x_msg_data => x_msg_data,
16449 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16450 p_fin_prod_id_det => l_sq_fin_prod_id,
16451 p_int_disclosed_det => l_sq_int_disclosed,
16452 p_title_trnsfr_code => null,
16453 p_sale_lease_back_code => null,
16454 p_lease_purchased_code => null,
16455 p_equip_usage_code => null,
16456 p_vendor_site_id => null,
16457 p_age_of_equip => null,
16458 p_source_trx_name => p_source_trx_name,
16459 p_cust_trx_type_id => l_cust_trx_type_id,
16460 p_book_class_code => l_deal_type,
16461 p_tax_call_cnt => tax_call_cnt,
16462 p_fma_id => l_fma_id,
16463 p_formula_name => l_formula_name,
16464 p_minimum_accountable_unit => l_minimum_accountable_unit,
16465 p_precision => l_precision,
16466 p_sales_quote_id => p_source_trx_id,
16467 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16468 p_ledger_id => l_ledger_id,
16469 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16470 p_tax_src_params_rec => lp_tax_src_params_rec,
16471 p_quote_flag => 'Y',
16472 p_rounding_ship_to_party_id => null,
16473 p_rounding_bill_to_party_id => l_bill_to_party_id,
16474 p_line_amt_includes_tax_flag => 'N',
16475 p_term_quote_type_code => null,
16476 p_term_quote_reason_code => null,
16477 px_tax_sources_tbl => lx_tax_sources_tbl,
16478 px_line_params_tbl => lx_line_params_tbl );
16479
16480 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16481 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16482 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16483 RAISE OKL_API.G_EXCEPTION_ERROR;
16484 END IF;
16485
16486 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16487 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16488 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16489 END IF;
16490 -- quote level call end
16491
16492 tax_call_cnt := tax_call_cnt + 1;
16493
16494 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16495 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16496 'tax_call_cnt '||tax_call_cnt );
16497 END IF;
16498
16499 -- Asset level call begin
16500 IF l_sq_asset_level_det_tbl.COUNT > 0 THEN
16501
16502 FOR asset_cnt IN l_sq_asset_level_det_tbl.FIRST .. l_sq_asset_level_det_tbl.LAST LOOP
16503
16504 -- Populate tax sources record -- start
16505 lp_tax_src_params_rec.kle_id := null;
16506 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(asset_cnt).asset_number;
16507 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(asset_cnt).asset_number;
16508
16509 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_sq_asset_level_det_tbl(asset_cnt).ship_to_site_use_id;
16510 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16511 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16512 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16513
16514 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16515 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16516 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16517 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16518
16519 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(asset_cnt).inv_item_id;
16520 lp_tax_src_params_rec.sty_id := null;
16521 lp_tax_src_params_rec.khr_id := null;
16522 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16523 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16524 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16525 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16526 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16527 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16528 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16529 lp_tax_src_params_rec.trx_date := l_start_date;
16530 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16531 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16532 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16533 lp_tax_src_params_rec.org_id := l_org_id;
16534 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16535 lp_tax_src_params_rec.line_amt := 0;
16536 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16537
16538 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16539 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16540 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16541 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16542 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16543 lp_tax_src_params_rec.adjusted_doc_number := null;
16544 lp_tax_src_params_rec.adjusted_doc_date := null;
16545 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16546 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16547
16548 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16549 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16550 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16551 -- Populate tax sources record -- end
16552
16553 -- asset level call begin
16554 populate_tax_info(
16555 p_api_version => p_api_version,
16556 p_init_msg_list => OKC_API.G_FALSE,
16557 x_return_status => x_return_status,
16558 x_msg_count => x_msg_count,
16559 x_msg_data => x_msg_data,
16560 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16561 p_fin_prod_id_det => l_sq_fin_prod_id,
16562 p_int_disclosed_det => l_sq_int_disclosed,
16563 p_title_trnsfr_code => l_sq_transfer_of_title,
16564 p_sale_lease_back_code => l_sq_sale_lease_back,
16565 p_lease_purchased_code => l_sq_purchase_of_lease,
16566 p_equip_usage_code => l_sq_usage_of_equipment,
16567 p_vendor_site_id => l_sq_asset_level_det_tbl(asset_cnt).vendor_site_id,
16568 p_age_of_equip => l_sq_age_of_equipment,
16569 p_source_trx_name => p_source_trx_name,
16570 p_cust_trx_type_id => l_cust_trx_type_id,
16571 p_book_class_code => l_deal_type,
16572 p_tax_call_cnt => tax_call_cnt,
16573 p_fma_id => l_fma_id,
16574 p_formula_name => l_formula_name,
16575 p_minimum_accountable_unit => l_minimum_accountable_unit,
16576 p_precision => l_precision,
16577 p_sales_quote_id => p_source_trx_id,
16578 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16579 p_ledger_id => l_ledger_id,
16580 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16581 p_tax_src_params_rec => lp_tax_src_params_rec,
16582 p_quote_flag => 'Y',
16583 p_rounding_ship_to_party_id => null,
16584 p_rounding_bill_to_party_id => l_bill_to_party_id,
16585 p_line_amt_includes_tax_flag => 'N',
16586 p_term_quote_type_code => null,
16587 p_term_quote_reason_code => null,
16588 px_tax_sources_tbl => lx_tax_sources_tbl,
16589 px_line_params_tbl => lx_line_params_tbl );
16590
16591 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16592 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16593 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16594 RAISE OKL_API.G_EXCEPTION_ERROR;
16595 END IF;
16596 -- asset level call end
16597
16598 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16599 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16600 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16601 END IF;
16602 tax_call_cnt := tax_call_cnt + 1;
16603 END LOOP;
16604 END IF;
16605 -- Asset level call end
16606 -- No payments exist - end
16607
16608 ELSIF l_q_asset_cashflows_tbl.COUNT > 0 THEN
16609 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16610 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16611 'payments exist ');
16612 END IF;
16613
16614 FOR K IN l_q_asset_cashflows_tbl.FIRST..l_q_asset_cashflows_tbl.LAST LOOP
16615
16616 tax_call_cnt := i;
16617
16618 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16619 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16620 'tax_call_cnt '||tax_call_cnt);
16621 END IF;
16622
16623 IF l_q_asset_cashflows_tbl(k).asset_number IS NULL THEN
16624 -- Q level payment
16625
16626 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16627 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16628 'Quote level payment ');
16629 END IF;
16630
16631 -- Populate tax sources record -- start
16632 lp_tax_src_params_rec.kle_id := null;
16633 lp_tax_src_params_rec.asset_number := null;
16634 lp_tax_src_params_rec.line_name := null;
16635
16636 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16637 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16638 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16639 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16640
16641 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16642 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16643 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16644 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16645
16646 lp_tax_src_params_rec.inventory_item_id := null;
16647 lp_tax_src_params_rec.sty_id := l_q_asset_cashflows_tbl(k).sty_id;
16648 lp_tax_src_params_rec.khr_id := null;
16649 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16650 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16651 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16652 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16653 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16654 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16655 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16656 lp_tax_src_params_rec.trx_date := l_start_date;
16657 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16658 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16659 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16660 lp_tax_src_params_rec.org_id := l_org_id;
16661 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16662 lp_tax_src_params_rec.line_amt := l_q_asset_cashflows_tbl(k).taxable_basis;
16663 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16664
16665 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16666 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16667 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16668 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16669 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16670 lp_tax_src_params_rec.adjusted_doc_number := null;
16671 lp_tax_src_params_rec.adjusted_doc_date := null;
16672 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16673 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16674
16675 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16676 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16677 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16678 -- Populate tax sources record -- end
16679
16680 populate_tax_info(
16681 p_api_version => p_api_version,
16682 p_init_msg_list => OKC_API.G_FALSE,
16683 x_return_status => x_return_status,
16684 x_msg_count => x_msg_count,
16685 x_msg_data => x_msg_data,
16686 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16687 p_fin_prod_id_det => l_sq_fin_prod_id,
16688 p_int_disclosed_det => l_sq_int_disclosed,
16689 p_title_trnsfr_code => null,
16690 p_sale_lease_back_code => null,
16691 p_lease_purchased_code => null,
16692 p_equip_usage_code => null,
16693 p_vendor_site_id => null,
16694 p_age_of_equip => null,
16695 p_source_trx_name => p_source_trx_name,
16696 p_cust_trx_type_id => l_cust_trx_type_id,
16697 p_book_class_code => l_deal_type,
16698 p_tax_call_cnt => tax_call_cnt,
16699 p_fma_id => l_fma_id,
16700 p_formula_name => l_formula_name,
16701 p_minimum_accountable_unit => l_minimum_accountable_unit,
16702 p_precision => l_precision,
16703 p_sales_quote_id => p_source_trx_id,
16704 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16705 p_ledger_id => l_ledger_id,
16706 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16707 p_tax_src_params_rec => lp_tax_src_params_rec,
16708 p_quote_flag => 'Y',
16709 p_rounding_ship_to_party_id => null,
16710 p_rounding_bill_to_party_id => l_bill_to_party_id,
16711 p_line_amt_includes_tax_flag => 'N',
16712 p_term_quote_type_code => null,
16713 p_term_quote_reason_code => null,
16714 px_tax_sources_tbl => lx_tax_sources_tbl,
16715 px_line_params_tbl => lx_line_params_tbl );
16716
16717 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16718 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16719 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16720 RAISE OKL_API.G_EXCEPTION_ERROR;
16721 END IF;
16722
16723 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16724 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16725 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16726 END IF;
16727
16728 Q_pymnt_exist := 'Y';
16729
16730 ELSE -- asset line level payment
16731 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16732 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16733 'Asset level payment ');
16734 END IF;
16735
16736 IF l_sq_asset_level_det_tbl.count > 0 THEN
16737 ind := l_sq_asset_level_det_tbl.FIRST;
16738 LOOP
16739 IF l_sq_asset_level_det_tbl(ind).asset_number = l_q_asset_cashflows_tbl(k).asset_number THEN
16740 l_sq_asset_level_det_tbl(ind).asset_pymnt_exist := 'Y';
16741
16742 -- asset level call begin
16743 -- Populate tax sources record -- start
16744 lp_tax_src_params_rec.kle_id := null;
16745 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(ind).asset_number;
16746 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(ind).asset_number;
16747
16748 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_sq_asset_level_det_tbl(ind).ship_to_site_use_id;
16749 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16750 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16751 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16752
16753 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16754 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16755 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16756 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16757
16758 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(ind).inv_item_id;
16759 lp_tax_src_params_rec.sty_id := l_q_asset_cashflows_tbl(k).sty_id;
16760 lp_tax_src_params_rec.khr_id := null;
16761 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16762 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16763 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16764 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16765 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16766 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16767 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16768 lp_tax_src_params_rec.trx_date := l_start_date;
16769 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16770 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16771 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16772 lp_tax_src_params_rec.org_id := l_org_id;
16773 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16774 lp_tax_src_params_rec.line_amt := l_q_asset_cashflows_tbl(k).taxable_basis;
16775 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16776
16777 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16778 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16779 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16780 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16781 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16782 lp_tax_src_params_rec.adjusted_doc_number := null;
16783 lp_tax_src_params_rec.adjusted_doc_date := null;
16784 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16785 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16786
16787 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16788 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16789 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16790 -- Populate tax sources record -- end
16791
16792 -- asset level call begin
16793 populate_tax_info(
16794 p_api_version => p_api_version,
16795 p_init_msg_list => OKC_API.G_FALSE,
16796 x_return_status => x_return_status,
16797 x_msg_count => x_msg_count,
16798 x_msg_data => x_msg_data,
16799 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16800 p_fin_prod_id_det => l_sq_fin_prod_id,
16801 p_int_disclosed_det => l_sq_int_disclosed,
16802 p_title_trnsfr_code => l_sq_transfer_of_title,
16803 p_sale_lease_back_code => l_sq_sale_lease_back,
16804 p_lease_purchased_code => l_sq_purchase_of_lease,
16805 p_equip_usage_code => l_sq_usage_of_equipment,
16806 p_vendor_site_id => l_sq_asset_level_det_tbl(ind).vendor_site_id,
16807 p_age_of_equip => l_sq_age_of_equipment,
16808 p_source_trx_name => p_source_trx_name,
16809 p_cust_trx_type_id => l_cust_trx_type_id,
16810 p_book_class_code => l_deal_type,
16811 p_tax_call_cnt => tax_call_cnt,
16812 p_fma_id => l_fma_id,
16813 p_formula_name => l_formula_name,
16814 p_minimum_accountable_unit => l_minimum_accountable_unit,
16815 p_precision => l_precision,
16816 p_sales_quote_id => p_source_trx_id,
16817 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16818 p_ledger_id => l_ledger_id,
16819 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16820 p_tax_src_params_rec => lp_tax_src_params_rec,
16821 p_quote_flag => 'Y',
16822 p_rounding_ship_to_party_id => null,
16823 p_rounding_bill_to_party_id => l_bill_to_party_id,
16824 p_line_amt_includes_tax_flag => 'N',
16825 p_term_quote_type_code => null,
16826 p_term_quote_reason_code => null,
16827 px_tax_sources_tbl => lx_tax_sources_tbl,
16828 px_line_params_tbl => lx_line_params_tbl );
16829
16830 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16831 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16832 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16833 RAISE OKL_API.G_EXCEPTION_ERROR;
16834 END IF;
16835
16836 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16837 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16838 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16839 END IF;
16840 -- asset level call end
16841 EXIT;
16842 END IF;
16843 EXIT WHEN (ind = l_sq_asset_level_det_tbl.LAST);
16844 ind := l_sq_asset_level_det_tbl.NEXT(ind);
16845 END LOOP;
16846 END IF;
16847 END IF;
16848 i := i + 1;
16849 END LOOP;
16850 END IF;
16851 EXIT WHEN l_q_asset_cashflows_csr%NOTFOUND;
16852 END LOOP;
16853 CLOSE l_q_asset_cashflows_csr;
16854
16855 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16856 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16857 'i '||i);
16858 END IF;
16859
16860 IF i > 1 THEN -- some payments exist
16861 tax_call_cnt := i; -- pick the last index
16862
16863 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16864 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16865 'some payments exist, tax_call_cnt= '||tax_call_cnt);
16866 END IF;
16867
16868 IF Q_pymnt_exist = 'N' THEN -- Q level payment does not exist
16869 -- Quote level call begin
16870
16871 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16872 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16873 'Q level payment does not exist ');
16874 END IF;
16875
16876 -- Populate tax sources record -- start
16877 lp_tax_src_params_rec.kle_id := null;
16878 lp_tax_src_params_rec.asset_number := null;
16879 lp_tax_src_params_rec.line_name := null;
16880
16881 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16882 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16883 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16884 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16885
16886 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16887 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16888 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16889 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16890
16891 lp_tax_src_params_rec.inventory_item_id := null;
16892 lp_tax_src_params_rec.sty_id := null;
16893 lp_tax_src_params_rec.khr_id := null;
16894 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16895 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16896 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16897 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16898 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16899 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16900 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16901 lp_tax_src_params_rec.trx_date := l_start_date;
16902 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16903 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16904 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16905 lp_tax_src_params_rec.org_id := l_org_id;
16906 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16907 lp_tax_src_params_rec.line_amt := 0;
16908 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16909
16910 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16911 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16912 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16913 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16914 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16915 lp_tax_src_params_rec.adjusted_doc_number := null;
16916 lp_tax_src_params_rec.adjusted_doc_date := null;
16917 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16918 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16919
16920 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16921 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16922 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16923 -- Populate tax sources record -- end
16924
16925 populate_tax_info(
16926 p_api_version => p_api_version,
16927 p_init_msg_list => OKC_API.G_FALSE,
16928 x_return_status => x_return_status,
16929 x_msg_count => x_msg_count,
16930 x_msg_data => x_msg_data,
16931 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16932 p_fin_prod_id_det => l_sq_fin_prod_id,
16933 p_int_disclosed_det => l_sq_int_disclosed,
16934 p_title_trnsfr_code => null,
16935 p_sale_lease_back_code => null,
16936 p_lease_purchased_code => null,
16937 p_equip_usage_code => null,
16938 p_vendor_site_id => null,
16939 p_age_of_equip => null,
16940 p_source_trx_name => p_source_trx_name,
16941 p_cust_trx_type_id => l_cust_trx_type_id,
16942 p_book_class_code => l_deal_type,
16943 p_tax_call_cnt => tax_call_cnt,
16944 p_fma_id => l_fma_id,
16945 p_formula_name => l_formula_name,
16946 p_minimum_accountable_unit => l_minimum_accountable_unit,
16947 p_precision => l_precision,
16948 p_sales_quote_id => p_source_trx_id,
16949 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16950 p_ledger_id => l_ledger_id,
16951 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16952 p_tax_src_params_rec => lp_tax_src_params_rec,
16953 p_quote_flag => 'Y',
16954 p_rounding_ship_to_party_id => null,
16955 p_rounding_bill_to_party_id => l_bill_to_party_id,
16956 p_line_amt_includes_tax_flag => 'N',
16957 p_term_quote_type_code => null,
16958 p_term_quote_reason_code => null,
16959 px_tax_sources_tbl => lx_tax_sources_tbl,
16960 px_line_params_tbl => lx_line_params_tbl );
16961
16962 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16963 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16964 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16965 RAISE OKL_API.G_EXCEPTION_ERROR;
16966 END IF;
16967
16968 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16969 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16970 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16971 END IF;
16972 -- quote level call end
16973 tax_call_cnt := tax_call_cnt + 1;
16974 END IF;
16975
16976 -- this table will have one record for each asset
16977 -- check if payment does not exist for any of the assets
16978 FOR k IN l_sq_asset_level_det_tbl.FIRST .. l_sq_asset_level_det_tbl.LAST LOOP
16979 IF l_sq_asset_level_det_tbl(k).asset_pymnt_exist = 'N' THEN -- aset level payment does not exist
16980
16981 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16982 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16983 'tax_call_cnt '||tax_call_cnt||'asset_pymnt_exist = N ' );
16984 END IF;
16985
16986 -- Populate tax sources record -- start
16987 lp_tax_src_params_rec.kle_id := null;
16988 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(k).asset_number;
16989 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(k).asset_number;
16990
16991 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_sq_asset_level_det_tbl(k).ship_to_site_use_id;
16992 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16993 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16994 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16995
16996 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16997 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16998 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16999 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
17000
17001 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(k).inv_item_id;
17002 lp_tax_src_params_rec.sty_id := null;
17003 lp_tax_src_params_rec.khr_id := null;
17004 lp_tax_src_params_rec.trx_id := p_source_trx_id;
17005 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
17006 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
17007 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
17008 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
17009 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
17010 lp_tax_src_params_rec.reported_yn := l_reported_yn;
17011 lp_tax_src_params_rec.trx_date := l_start_date;
17012 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
17013 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
17014 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
17015 lp_tax_src_params_rec.org_id := l_org_id;
17016 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
17017 lp_tax_src_params_rec.line_amt := 0;
17018 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
17019
17020 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
17021 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
17022 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
17023 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
17024 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
17025 lp_tax_src_params_rec.adjusted_doc_number := null;
17026 lp_tax_src_params_rec.adjusted_doc_date := null;
17027 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
17028 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
17029
17030 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
17031 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
17032 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
17033 -- Populate tax sources record -- end
17034
17035 -- asset level call begin
17036 populate_tax_info(
17037 p_api_version => p_api_version,
17038 p_init_msg_list => OKC_API.G_FALSE,
17039 x_return_status => x_return_status,
17040 x_msg_count => x_msg_count,
17041 x_msg_data => x_msg_data,
17042 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
17043 p_fin_prod_id_det => l_sq_fin_prod_id,
17044 p_int_disclosed_det => l_sq_int_disclosed,
17045 p_title_trnsfr_code => l_sq_transfer_of_title,
17046 p_sale_lease_back_code => l_sq_sale_lease_back,
17047 p_lease_purchased_code => l_sq_purchase_of_lease,
17048 p_equip_usage_code => l_sq_usage_of_equipment,
17049 p_vendor_site_id => l_sq_asset_level_det_tbl(k).vendor_site_id,
17050 p_age_of_equip => l_sq_age_of_equipment,
17051 p_source_trx_name => p_source_trx_name,
17052 p_cust_trx_type_id => l_cust_trx_type_id,
17053 p_book_class_code => l_deal_type,
17054 p_tax_call_cnt => tax_call_cnt,
17055 p_fma_id => l_fma_id,
17056 p_formula_name => l_formula_name,
17057 p_minimum_accountable_unit => l_minimum_accountable_unit,
17058 p_precision => l_precision,
17059 p_sales_quote_id => p_source_trx_id,
17060 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
17061 p_ledger_id => l_ledger_id,
17062 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
17063 p_tax_src_params_rec => lp_tax_src_params_rec,
17064 p_quote_flag => 'Y',
17065 p_rounding_ship_to_party_id => null,
17066 p_rounding_bill_to_party_id => l_bill_to_party_id,
17067 p_line_amt_includes_tax_flag => 'N',
17068 p_term_quote_type_code => null,
17069 p_term_quote_reason_code => null,
17070 px_tax_sources_tbl => lx_tax_sources_tbl,
17071 px_line_params_tbl => lx_line_params_tbl );
17072
17073 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17074 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17075 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17076 RAISE OKL_API.G_EXCEPTION_ERROR;
17077 END IF;
17078 -- asset level call end
17079
17080 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17081 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17082 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
17083 END IF;
17084
17085 tax_call_cnt := tax_call_cnt + 1;
17086
17087 END IF;
17088 END LOOP;
17089 END IF;
17090
17091 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17092 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17093 'lx_tax_sources_tbl.COUNT '||lx_tax_sources_tbl.COUNT);
17094 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17095 'lx_line_params_tbl.COUNT '||lx_line_params_tbl.COUNT);
17096 END IF;
17097
17098 -- Insert into okl_tax_sources
17099 BEGIN
17100 IF lx_tax_sources_tbl.COUNT > 0 THEN
17101 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
17102 -- SAVE EXCEPTIONS
17103 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
17104 END IF;
17105 EXCEPTION
17106 WHEN OTHERS THEN
17107 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
17108 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
17109 OKL_API.set_message( p_app_name => 'OKL',
17110 p_msg_name => 'OKL_TX_TRX_INS_ERR',
17111 p_token1 => 'TABLE_NAME',
17112 p_token1_value => 'OKL_TAX_SOURCES',
17113 p_token2 => 'ERROR_CODE',
17114 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
17115 p_token3 => 'ITERATION',
17116 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
17117 END LOOP;
17118 RAISE OKL_API.G_EXCEPTION_ERROR;
17119 END IF;
17120 END;
17121
17122 ---- Insert into okl_tax_sources end -----
17123 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17124 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17125 'Insert into okl_tax_sources ');
17126 END IF;
17127
17128 IF lx_line_params_tbl.COUNT > 0 THEN
17129 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17130 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17131 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
17132 END IF;
17133
17134 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
17135 lp_hdr_params_rec.trx_id := p_source_trx_id;
17136 lp_hdr_params_rec.internal_organization_id := l_org_id;
17137 lp_hdr_params_rec.entity_code := G_SQ_ENTITY_CODE;
17138 lp_hdr_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
17139 lp_hdr_params_rec.event_type_code := G_SQ_CRE_EVT_TYPE_CODE;
17140 lp_hdr_params_rec.quote_flag := 'Y';
17141
17142 OKL_TAX_INTERFACE_PVT.calculate_tax(
17143 p_api_version => p_api_version,
17144 p_init_msg_list => p_init_msg_list,
17145 x_return_status => x_return_status,
17146 x_msg_count => x_msg_count,
17147 x_msg_data => x_msg_data,
17148 p_hdr_params_rec => lp_hdr_params_rec,
17149 p_line_params_tbl => lx_line_params_tbl);
17150
17151 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17152 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17153 'After tax engine call '||x_return_status);
17154 END IF;
17155
17156 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17157 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17158 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17159 RAISE OKL_API.G_EXCEPTION_ERROR;
17160 END IF;
17161 END IF;
17162
17163 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17164 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17165 'Calling "update_tax_sources_total" .. ');
17166 END IF;
17167
17168 update_tax_sources_total(p_api_version => p_api_version,
17169 p_init_msg_list => p_init_msg_list,
17170 x_return_status => x_return_status,
17171 x_msg_count => x_msg_count,
17172 x_msg_data => x_msg_data,
17173 p_source_trx_id => p_source_trx_id,
17174 p_source_trx_name => p_source_trx_name );
17175
17176 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17177 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17178 'Return Status' || x_return_status);
17179 END IF;
17180
17181 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17182 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17183 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17184 RAISE OKL_API.G_EXCEPTION_ERROR;
17185 END IF;
17186
17187 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17188 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17189 'Calling "copy_tax_trx_data" .. ');
17190 END IF;
17191
17192 copy_tax_trx_data ( p_api_version => p_api_version,
17193 p_init_msg_list => p_init_msg_list,
17194 x_return_status => x_return_status,
17195 x_msg_count => x_msg_count,
17196 x_msg_data => x_msg_data,
17197 p_trx_id => p_source_trx_id,
17198 p_entity_code => G_SQ_ENTITY_CODE,
17199 p_event_class_code => G_SQ_EVENT_CLASS_CODE,
17200 p_source_trx_name => p_source_trx_name);
17201
17202
17203 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17204 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17205 'Return Status' || x_return_status);
17206 END IF;
17207
17208 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17209 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17210 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17211 RAISE OKL_API.G_EXCEPTION_ERROR;
17212 END IF;
17213
17214 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17215 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ','End(-)');
17216 END IF;
17217
17218 EXCEPTION
17219 WHEN OKL_API.G_EXCEPTION_ERROR THEN
17220 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17221 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17222 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
17223 END IF;
17224
17225 IF l_leasequotes_csr%ISOPEN THEN
17226 CLOSE l_leasequotes_csr;
17227 END IF;
17228
17229 IF l_leaseopp_csr%ISOPEN THEN
17230 CLOSE l_leaseopp_csr;
17231 END IF;
17232
17233 IF l_leaseapp_csr%ISOPEN THEN
17234 CLOSE l_leaseapp_csr;
17235 END IF;
17236
17237 IF l_prevtaxsources_csr%ISOPEN THEN
17238 CLOSE l_prevtaxsources_csr;
17239 END IF;
17240
17241 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17242 CLOSE l_prevtaxtrxdet_csr;
17243 END IF;
17244
17245 IF l_quoteassets_csr%ISOPEN THEN
17246 CLOSE l_quoteassets_csr;
17247 END IF;
17248
17249 IF l_assetcomponent_csr%ISOPEN THEN
17250 CLOSE l_assetcomponent_csr;
17251 END IF;
17252
17253 IF l_q_asset_cashflows_csr%ISOPEN THEN
17254 CLOSE l_q_asset_cashflows_csr;
17255 END IF;
17256
17257 IF l_billtosite_csr%ISOPEN THEN
17258 CLOSE l_billtosite_csr;
17259 END IF;
17260
17261 IF l_shiptosite_csr%ISOPEN THEN
17262 CLOSE l_shiptosite_csr;
17263 END IF;
17264
17265 IF l_trxtypes_csr%ISOPEN THEN
17266 CLOSE l_trxtypes_csr;
17267 END IF;
17268
17269 IF l_txbasisoverride_csr%ISOPEN THEN
17270 CLOSE l_txbasisoverride_csr;
17271 END IF;
17272
17273 IF l_formulae_csr%ISOPEN THEN
17274 CLOSE l_formulae_csr;
17275 END IF;
17276
17277 IF l_racusttrxtypes_csr%ISOPEN THEN
17278 CLOSE l_racusttrxtypes_csr;
17279 END IF;
17280
17281 IF l_fndcurrency_csr%ISOPEN THEN
17282 CLOSE l_fndcurrency_csr;
17283 END IF;
17284
17285 IF l_povendorsites_csr%ISOPEN THEN
17286 CLOSE l_povendorsites_csr;
17287 END IF;
17288
17289 IF l_get_location_id%ISOPEN THEN
17290 CLOSE l_get_location_id;
17291 END IF;
17292
17293 IF l_get_shiptositeid%ISOPEN THEN
17294 CLOSE l_get_shiptositeid;
17295 END IF;
17296
17297 x_return_status := OKL_API.G_RET_STS_ERROR;
17298
17299 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17300 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17301 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17302 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
17303 END IF;
17304
17305 IF l_leasequotes_csr%ISOPEN THEN
17306 CLOSE l_leasequotes_csr;
17307 END IF;
17308
17309 IF l_leaseopp_csr%ISOPEN THEN
17310 CLOSE l_leaseopp_csr;
17311 END IF;
17312
17313 IF l_leaseapp_csr%ISOPEN THEN
17314 CLOSE l_leaseapp_csr;
17315 END IF;
17316
17317 IF l_prevtaxsources_csr%ISOPEN THEN
17318 CLOSE l_prevtaxsources_csr;
17319 END IF;
17320
17321 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17322 CLOSE l_prevtaxtrxdet_csr;
17323 END IF;
17324
17325 IF l_quoteassets_csr%ISOPEN THEN
17326 CLOSE l_quoteassets_csr;
17327 END IF;
17328
17329 IF l_assetcomponent_csr%ISOPEN THEN
17330 CLOSE l_assetcomponent_csr;
17331 END IF;
17332
17333 IF l_q_asset_cashflows_csr%ISOPEN THEN
17334 CLOSE l_q_asset_cashflows_csr;
17335 END IF;
17336
17337 IF l_billtosite_csr%ISOPEN THEN
17338 CLOSE l_billtosite_csr;
17339 END IF;
17340
17341 IF l_shiptosite_csr%ISOPEN THEN
17342 CLOSE l_shiptosite_csr;
17343 END IF;
17344
17345 IF l_trxtypes_csr%ISOPEN THEN
17346 CLOSE l_trxtypes_csr;
17347 END IF;
17348
17349 IF l_txbasisoverride_csr%ISOPEN THEN
17350 CLOSE l_txbasisoverride_csr;
17351 END IF;
17352
17353 IF l_formulae_csr%ISOPEN THEN
17354 CLOSE l_formulae_csr;
17355 END IF;
17356
17357 IF l_racusttrxtypes_csr%ISOPEN THEN
17358 CLOSE l_racusttrxtypes_csr;
17359 END IF;
17360
17361 IF l_fndcurrency_csr%ISOPEN THEN
17362 CLOSE l_fndcurrency_csr;
17363 END IF;
17364
17365 IF l_povendorsites_csr%ISOPEN THEN
17366 CLOSE l_povendorsites_csr;
17367 END IF;
17368
17369 IF l_get_location_id%ISOPEN THEN
17370 CLOSE l_get_location_id;
17371 END IF;
17372
17373 IF l_get_shiptositeid%ISOPEN THEN
17374 CLOSE l_get_shiptositeid;
17375 END IF;
17376
17377 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
17378
17379 WHEN OTHERS THEN
17380 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17381 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17382 'EXCEPTION :'||sqlerrm);
17383 END IF;
17384
17385 IF l_leasequotes_csr%ISOPEN THEN
17386 CLOSE l_leasequotes_csr;
17387 END IF;
17388
17389 IF l_leaseopp_csr%ISOPEN THEN
17390 CLOSE l_leaseopp_csr;
17391 END IF;
17392
17393 IF l_leaseapp_csr%ISOPEN THEN
17394 CLOSE l_leaseapp_csr;
17395 END IF;
17396
17397 IF l_prevtaxsources_csr%ISOPEN THEN
17398 CLOSE l_prevtaxsources_csr;
17399 END IF;
17400
17401 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17402 CLOSE l_prevtaxtrxdet_csr;
17403 END IF;
17404
17405 IF l_quoteassets_csr%ISOPEN THEN
17406 CLOSE l_quoteassets_csr;
17407 END IF;
17408
17409 IF l_assetcomponent_csr%ISOPEN THEN
17410 CLOSE l_assetcomponent_csr;
17411 END IF;
17412
17413 IF l_q_asset_cashflows_csr%ISOPEN THEN
17414 CLOSE l_q_asset_cashflows_csr;
17415 END IF;
17416
17417 IF l_billtosite_csr%ISOPEN THEN
17418 CLOSE l_billtosite_csr;
17419 END IF;
17420
17421 IF l_shiptosite_csr%ISOPEN THEN
17422 CLOSE l_shiptosite_csr;
17423 END IF;
17424
17425 IF l_trxtypes_csr%ISOPEN THEN
17426 CLOSE l_trxtypes_csr;
17427 END IF;
17428
17429 IF l_txbasisoverride_csr%ISOPEN THEN
17430 CLOSE l_txbasisoverride_csr;
17431 END IF;
17432
17433 IF l_formulae_csr%ISOPEN THEN
17434 CLOSE l_formulae_csr;
17435 END IF;
17436
17437 IF l_racusttrxtypes_csr%ISOPEN THEN
17438 CLOSE l_racusttrxtypes_csr;
17439 END IF;
17440
17441 IF l_fndcurrency_csr%ISOPEN THEN
17442 CLOSE l_fndcurrency_csr;
17443 END IF;
17444
17445 IF l_povendorsites_csr%ISOPEN THEN
17446 CLOSE l_povendorsites_csr;
17447 END IF;
17448
17449 IF l_get_location_id%ISOPEN THEN
17450 CLOSE l_get_location_id;
17451 END IF;
17452
17453 IF l_get_shiptositeid%ISOPEN THEN
17454 CLOSE l_get_shiptositeid;
17455 END IF;
17456
17457 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
17458 -- unexpected error
17459 OKL_API.set_message(p_app_name => g_app_name,
17460 p_msg_name => g_unexpected_error,
17461 p_token1 => g_sqlcode_token,
17462 p_token1_value => sqlcode,
17463 p_token2 => g_sqlerrm_token,
17464 p_token2_value => sqlerrm);
17465 END process_quoting_upfront_tax;
17466
17467 /*========================================================================
17468 | PUBLIC PROCEDURE calculate_sales_tax
17469 |
17470 | DESCRIPTION
17471 | This procedure is called by OLM tax events to calculate tax
17472 |
17473 | CALLED FROM OLM Tax Events
17474 |
17475 |
17476 | CALLS PROCEDURES/FUNCTIONS
17477 | process_tax_schedule_tax()
17478 | process_quote_tax()
17479 | process_asset_loc_tax()
17480 | process_split_asset_tax()
17481 | process_booking_upfront_tax()
17482 | process_pre_rbk_upfront_tax()
17483 | process_rebook_upfront_tax()
17484 |
17485 |
17486 | PARAMETERS
17487 | p_source_trx_id -- Source transaction ID
17488 | p_source_trx_name -- Source transaction Name
17489 | p_source_table -- Source table
17490 | p_tax_call_type -- Tax call type (applies to Booking, Rebook, Asset Location Change)
17491 | p_serialized_asset -- Serialized asset Y/N flag (applies to Asset Location Change)
17492 | p_request_id -- ID of Okl_Trx_Requests (applies to Asset Location Change)
17493 |
17494 | KNOWN ISSUES
17495 |
17496 | NOTES
17497 |
17498 |
17499 | MODIFICATION HISTORY
17500 | Date Author Description of Changes
17501 | 08-APR-05 SECHAWLA Created
17502 | 12-DEC-05 SECHAWLA 4690074 set a message if OU does not allow
17503 | tax calculation
17504 | 23-MAR-10 SMADHAVA 9327076 Calculate Upfront tax only if prior upfront tax calculation done
17505 *=======================================================================*/
17506 PROCEDURE calculate_sales_tax(
17507 p_api_version IN NUMBER,
17508 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
17509 x_return_status OUT NOCOPY VARCHAR2,
17510 x_msg_count OUT NOCOPY NUMBER,
17511 x_msg_data OUT NOCOPY VARCHAR2,
17512 p_source_trx_id IN NUMBER,
17513 p_source_trx_name IN VARCHAR2,
17514 p_source_table IN VARCHAR2,
17515 p_tax_call_type IN VARCHAR2 DEFAULT NULL,
17516 p_serialized_asset IN VARCHAR2 DEFAULT NULL,
17517 p_request_id IN NUMBER DEFAULT NULL,
17518 p_alc_final_call IN VARCHAR2 DEFAULT NULL)IS
17519
17520 --------------- CS Tax Schedule ------------------
17521 --p_source_trx_id ---> okl_trx_requests.id
17522 --p_source_trx_name ---> 'Tax Schedule'
17523 --p_source_table ---> 'OKL_TRX_REQUESTS'
17524 --------------------------------------------------
17525
17526 --------------- Booking ------------------
17527 --p_source_trx_id ---> okl_trx_contracts.id
17528 --p_source_trx_name ---> 'Booking'
17529 --p_source_table ---> 'OKL_TRX_CONTRACTS'
17530 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL' call type
17531 --------------------------------------------------
17532
17533 --------------- Rebook ------------------
17534 --p_source_trx_id ---> okl_trx_contracts.id
17535 --p_source_trx_name ---> 'Rebook'
17536 --p_source_table ---> 'OKL_TRX_CONTRACTS'
17537 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL' call type
17538 --------------------------------------------------
17539
17540 -------------- Split Asset ------------------
17541 --p_source_trx_id ---> okl_trx_assets.id
17542 --p_source_trx_name ---> 'Split Asset'
17543 --p_source_table ---> 'OKL_TRX_ASSETS'
17544 --------------------------------------------------
17545
17546 -------------- Reverse ------------------
17547 --p_source_trx_id ---> okl_trx_assets.id
17548 --p_source_trx_name ---> 'Reverse'
17549 --p_source_table ---> 'OKL_TRX_ASSETS'
17550 --------------------------------------------------
17551
17552 ---- Termination/Repurchase Quote Creation -------
17553 --p_source_trx_id ---> okl_trx_quotes_b.id
17554 --p_source_trx_name ---> 'Estimated Billing'
17555 --p_source_table ---> 'OKL_TRX_QUOTES_B'
17556 --------------------------------------------------
17557
17558 /*-----------------------------------------------------------------------+
17559 | Cursor Declarations |
17560 +-----------------------------------------------------------------------*/
17561 -- Get the OU tax options
17562 CURSOR l_systemparams_csr(cp_org_id IN NUMBER) IS
17563 SELECT tax_upfront_yn, tax_invoice_yn
17564 FROM OKL_SYSTEM_PARAMS_ALL
17565 WHERE org_id = cp_org_id;
17566
17567 CURSOR l_tax_schedule_csr(cp_trx_id IN NUMBER) IS
17568 SELECT rul.rule_information5
17569 FROM okc_rules_b rul,
17570 okc_rule_groups_b rgp,
17571 okl_trx_requests trx
17572 WHERE rgp.dnz_chr_id = trx.dnz_khr_id
17573 AND rul.rgp_id = rgp.id
17574 AND rgp.rgd_code = 'LAHDTX'
17575 AND rul.rule_information_category = 'LASTPR'
17576 AND trx.id = cp_trx_id
17577 AND trx.request_type_code = 'TAX_SCHEDULES';
17578
17579 -- ER#9327076
17580 CURSOR get_ast_reloc_khr(p_trx_id okl_trx_assets.ID%TYPE) IS
17581 SELECT cle.dnz_chr_id
17582 FROM okl_trx_assets trx,
17583 okl_txl_itm_insts inst,
17584 okc_k_lines_b cle
17585 WHERE trx.tas_type = 'ALG'
17586 AND inst.tas_id = trx.ID
17587 AND cle.ID = inst.kle_id
17588 AND trx.id = p_trx_id;
17589
17590 CURSOR get_rbk_act_khr(p_trx_id okl_trx_contracts.ID%TYPE) IS
17591 SELECT chr.ID
17592 FROM okl_trx_contracts trx,
17593 okc_k_headers_b chr
17594 WHERE chr.ID = trx.khr_id
17595 AND trx.ID = p_trx_id ;
17596
17597 -- 16522428 15/03/13
17598 -- added a new cursor to get the rebook contract id
17599 CURSOR get_rbk_khr_id(p_chr_id okc_k_headers_b.ID%TYPE) IS
17600 SELECT chr.ID
17601 FROM okc_k_headers_b chr
17602 WHERE chr.orig_system_id1 = p_chr_id
17603 AND chr.sts_code <> 'ABANDONED';
17604 -- 16522428 15/03/13
17605
17606 /*-----------------------------------------------------------------------+
17607 | Local Variable Declarations and initializations |
17608 +-----------------------------------------------------------------------*/
17609 l_api_version CONSTANT NUMBER := 1;
17610 l_api_name CONSTANT VARCHAR2(30) := 'calculate_sales_tax';
17611 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
17612
17613 l_ou_tax_upfront_yn VARCHAR2(1);
17614 l_ou_tax_invoice_yn VARCHAR2(1);
17615 l_k_tax_schedule_yn VARCHAR2(1);
17616
17617 l_source_table VARCHAR2(30);
17618
17619 l_tax_call_type VARCHAR2(30);
17620 l_org_id NUMBER;
17621 l_quote_object_code VARCHAR2(30);
17622 l_quote_object_id NUMBER;
17623 l_chr_id OKC_K_HEADERS_B.ID%TYPE; --ER# 9327076
17624 l_rbk_chr_id OKC_K_HEADERS_B.ID%TYPE; --16522428
17625
17626 BEGIN
17627
17628
17629 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17630 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax','Begin(+)');
17631 END IF;
17632
17633 --Print Input Variables
17634 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17636 'p_init_msg_list :'||p_init_msg_list);
17637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17638 'p_source_trx_id :'||to_char(p_source_trx_id));
17639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17640 'p_source_trx_name :'||p_source_trx_name);
17641 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17642 'p_source_table :'||p_source_table);
17643 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17644 'p_tax_call_type :'||p_tax_call_type);
17645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17646 'p_serialized_asset :'||p_serialized_asset);
17647 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17648 'p_request_id :'||p_request_id);
17649 END IF;
17650
17651 --Check API version, initialize message list and create savepoint.
17652 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
17653 G_PKG_NAME,
17654 p_init_msg_list,
17655 l_api_version,
17656 p_api_version,
17657 '_PVT',
17658 x_return_status);
17659 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17660 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17661 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
17662 RAISE OKL_API.G_EXCEPTION_ERROR;
17663 END IF;
17664
17665 l_source_table := upper(p_source_table);
17666 l_org_id := mo_global.get_current_org_id;
17667
17668 -- Get the OU Tax options
17669 OPEN l_systemparams_csr(cp_org_id => l_org_id);
17670 FETCH l_systemparams_csr INTO l_ou_tax_upfront_yn, l_ou_tax_invoice_yn;
17671 IF l_systemparams_csr%NOTFOUND THEN
17672 -- Tax options are not setup for this operating unit.
17673 OKL_API.set_message( p_app_name => 'OKL',
17674 p_msg_name => 'OKL_TX_NO_TAX_SETUP');
17675 RAISE OKL_API.G_EXCEPTION_ERROR;
17676 END IF;
17677 CLOSE l_systemparams_csr;
17678
17679 IF p_source_trx_name = 'Tax Schedule' THEN
17680
17681 OPEN l_tax_schedule_csr(cp_trx_id => p_source_trx_id);
17682 FETCH l_tax_schedule_csr INTO l_k_tax_schedule_yn ;
17683 CLOSE l_tax_schedule_csr;
17684
17685 IF l_k_tax_schedule_yn = 'Y' THEN -- OU allows Tax schedule type of call
17686 process_tax_schedule_tax(
17687 p_api_version => p_api_version,
17688 p_init_msg_list => OKL_API.G_FALSE,
17689 x_return_status => x_return_status,
17690 x_msg_count => x_msg_count,
17691 x_msg_data => x_msg_data,
17692 p_source_trx_id => p_source_trx_id,
17693 p_source_trx_name => p_source_trx_name,
17694 p_source_table => l_source_table);
17695
17696 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17697 OKL_API.set_message( p_app_name => 'OKL',
17698 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17699 p_token1 => 'TRX_TYPE',
17700 p_token1_value => p_source_trx_name);
17701
17702 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17703 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17704 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17705 RAISE OKL_API.G_EXCEPTION_ERROR;
17706 END IF;
17707 END IF;
17708 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17709 OKL_API.set_message( p_app_name => 'OKL',
17710 p_msg_name => 'OKL_TAX_SCH_FLAG_NOT_SET');
17711 END IF;
17712
17713 ELSIF p_source_trx_name = 'Estimated Billing' AND l_source_table = 'OKL_TRX_QUOTES_B' THEN -- AM Quote creation
17714 process_quote_tax( p_api_version => p_api_version,
17715 p_init_msg_list => OKL_API.G_FALSE,
17716 x_return_status => x_return_status,
17717 x_msg_count => x_msg_count,
17718 x_msg_data => x_msg_data,
17719 p_source_trx_id => p_source_trx_id,
17720 p_source_trx_name => p_source_trx_name,
17721 p_source_table => l_source_table);
17722
17723 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17724 OKL_API.set_message( p_app_name => 'OKL',
17725 p_msg_name => 'OKL_TX_QUOTE_TAX_ERR');
17726 END IF;
17727
17728 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17729 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17730 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17731 RAISE OKL_API.G_EXCEPTION_ERROR;
17732 END IF;
17733
17734 ELSIF (p_source_trx_name = 'Asset Relocation') THEN
17735
17736 -- Commented for ER# 9327076 - Asset relocation upfront tax to be calculated only if
17737 -- prior upfront tax transactions exist. The tax decision will not be decided by l_ou_tax_upfront_yn
17738 -- anymore.
17739 -- IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17740 OPEN get_ast_reloc_khr(p_source_trx_id);
17741 FETCH get_ast_reloc_khr INTO l_chr_id;
17742 CLOSE get_ast_reloc_khr;
17743
17744 IF (OKL_LA_SALES_TAX_PVT.check_prior_upfront_tax(l_chr_id)) THEN
17745
17746 IF p_tax_call_type IS NULL THEN
17747 OKC_API.set_message( p_app_name => 'OKC',
17748 p_msg_name => G_REQUIRED_VALUE,
17749 p_token1 => G_COL_NAME_TOKEN,
17750 p_token1_value => 'Tax Call Type');
17751 RAISE OKL_API.G_EXCEPTION_ERROR;
17752 ELSE
17753 l_tax_call_type := upper(p_tax_call_type);
17754 IF l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE) THEN
17755 OKC_API.set_message( p_app_name => 'OKC',
17756 p_msg_name => G_INVALID_VALUE,
17757 p_token1 => G_COL_NAME_TOKEN,
17758 p_token1_value => 'Tax Call Type');
17759 RAISE OKL_API.G_EXCEPTION_ERROR;
17760 END IF;
17761 END IF;
17762
17763 process_asset_loc_tax(p_api_version => p_api_version,
17764 p_init_msg_list => OKL_API.G_FALSE,
17765 x_return_status => x_return_status,
17766 x_msg_count => x_msg_count,
17767 x_msg_data => x_msg_data,
17768 p_source_trx_id => p_source_trx_id,
17769 p_source_trx_name => p_source_trx_name,
17770 p_source_table => l_source_table,
17771 p_tax_call_type => p_tax_call_type,
17772 p_serialized_asset => p_serialized_asset,
17773 p_request_id => p_request_id,
17774 p_alc_final_call => p_alc_final_call);
17775
17776 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17777 OKL_API.set_message( p_app_name => 'OKL',
17778 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17779 p_token1 => 'TRX_TYPE',
17780 p_token1_value => p_source_trx_name);
17781
17782 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17783 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17784 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17785 RAISE OKL_API.G_EXCEPTION_ERROR;
17786 END IF;
17787 END IF;
17788
17789 -- ER# 9327076
17790 -- ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17791 -- OKL_API.set_message( p_app_name => 'OKL',
17792 -- p_msg_name => 'OKL_TX_OU_NO_TAX',
17793 -- p_token1 => 'TAX_CALL_TYPE',
17794 -- p_token1_value => 'Upfront Tax');
17795 END IF;
17796 ELSIF p_source_trx_name = 'Split Asset' THEN
17797 process_split_asset_tax(p_api_version => p_api_version,
17798 p_init_msg_list => OKL_API.G_FALSE,
17799 x_return_status => x_return_status,
17800 x_msg_count => x_msg_count,
17801 x_msg_data => x_msg_data,
17802 p_source_trx_id => p_source_trx_id,
17803 p_source_trx_name => p_source_trx_name,
17804 p_source_table => l_source_table);
17805
17806 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17807 OKL_API.set_message( p_app_name => 'OKL',
17808 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17809 p_token1 => 'TRX_TYPE',
17810 p_token1_value => p_source_trx_name);
17811
17812 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17813 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17814 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17815 RAISE OKL_API.G_EXCEPTION_ERROR;
17816 END IF;
17817 END IF;
17818
17819 ELSIF ( p_source_trx_name = 'Booking') THEN
17820 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17821 IF p_tax_call_type IS NULL THEN
17822 OKC_API.set_message( p_app_name => 'OKC',
17823 p_msg_name => G_REQUIRED_VALUE,
17824 p_token1 => G_COL_NAME_TOKEN,
17825 p_token1_value => 'Tax Call Type');
17826 RAISE OKL_API.G_EXCEPTION_ERROR;
17827 ELSE
17828 l_tax_call_type := upper(p_tax_call_type);
17829 IF l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE) THEN
17830 OKC_API.set_message( p_app_name => 'OKC',
17831 p_msg_name => G_INVALID_VALUE,
17832 p_token1 => G_COL_NAME_TOKEN,
17833 p_token1_value => 'Tax Call Type');
17834 RAISE OKL_API.G_EXCEPTION_ERROR;
17835 END IF;
17836 END IF;
17837
17838 process_booking_upfront_tax(
17839 p_api_version => p_api_version,
17840 p_init_msg_list => OKL_API.G_FALSE,
17841 x_return_status => x_return_status,
17842 x_msg_count => x_msg_count,
17843 x_msg_data => x_msg_data,
17844 p_source_trx_id => p_source_trx_id,
17845 p_source_trx_name => p_source_trx_name,
17846 p_source_table => l_source_table,
17847 p_tax_call_type => p_tax_call_type);
17848
17849 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17850 OKL_API.set_message(p_app_name => 'OKL',
17851 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17852 p_token1 => 'TRX_TYPE',
17853 p_token1_value => p_source_trx_name);
17854
17855 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17858 RAISE OKL_API.G_EXCEPTION_ERROR;
17859 END IF;
17860 END IF;
17861
17862 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17863 OKL_API.set_message( p_app_name => 'OKL',
17864 p_msg_name => 'OKL_TX_OU_NO_TAX',
17865 p_token1 => 'TAX_CALL_TYPE',
17866 p_token1_value => 'Upfront Tax');
17867 END IF;
17868 -- Authoring will create a CS request during Booking (no tax schedule call during pre-booking) for Tax Schedule
17869 -- and then make the Tax Schedule call directly using that trx
17870
17871 ELSIF p_source_trx_name = 'Rebook' AND p_tax_call_type = G_ESTIMATED_CALL_TYPE THEN
17872
17873
17874 -- Commented for ER# 9327076 - Pre-Rebook upfront tax to be calculated only if
17875 -- prior upfront tax transactions exist. The tax decision will not be decided by l_ou_tax_upfront_yn
17876 -- anymore.
17877 --IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17878 OPEN get_rbk_act_khr(p_source_trx_id);
17879 FETCH get_rbk_act_khr INTO l_chr_id;
17880 CLOSE get_rbk_act_khr;
17881
17882 -- 16522428 15/03/13
17883 -- getting rebbok contract id
17884 OPEN get_rbk_khr_id(l_chr_id);
17885 FETCH get_rbk_khr_id INTO l_rbk_chr_id;
17886 CLOSE get_rbk_khr_id;
17887 -- 16522428 15/03/13
17888
17889 IF (OKL_LA_SALES_TAX_PVT.check_prior_upfront_tax(l_chr_id)
17890 OR OKL_LA_SALES_TAX_PVT.check_rel_mxd_ctr(l_rbk_chr_id)) THEN -- 16522428 14/03/13 - additional condition
17891
17892
17893 process_pre_rbk_upfront_tax(
17894 p_api_version => p_api_version,
17895 p_init_msg_list => OKL_API.G_FALSE,
17896 x_return_status => x_return_status,
17897 x_msg_count => x_msg_count,
17898 x_msg_data => x_msg_data,
17899 p_source_trx_id => p_source_trx_id,
17900 p_source_trx_name => p_source_trx_name,
17901 p_source_table => l_source_table,
17902 p_tax_call_type => p_tax_call_type);
17903
17904 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17905 OKL_API.set_message( p_app_name => 'OKL',
17906 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17907 p_token1 => 'TRX_TYPE',
17908 p_token1_value => p_source_trx_name);
17909
17910 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17911 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17912 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17913 RAISE OKL_API.G_EXCEPTION_ERROR;
17914 END IF;
17915 END IF;
17916 --ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17917 -- OKL_API.set_message( p_app_name => 'OKL',
17918 -- p_msg_name => 'OKL_TX_OU_NO_TAX',
17919 -- p_token1 => 'TAX_CALL_TYPE',
17920 -- p_token1_value => 'Upfront Tax');
17921 END IF;
17922
17923 ELSIF p_source_trx_name = 'Rebook' AND p_tax_call_type = G_ACTUAL_CALL_TYPE THEN
17924
17925 -- Commented for ER# 9327076 - Rebook activation upfront tax to be calculated only if
17926 -- prior upfront tax transactions exist. The tax decision will not be decided by l_ou_tax_upfront_yn
17927 -- anymore.
17928 --IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17929 OPEN get_rbk_act_khr(p_source_trx_id);
17930 FETCH get_rbk_act_khr INTO l_chr_id;
17931 CLOSE get_rbk_act_khr;
17932
17933 -- 16522428 15/03/13
17934 -- getting rebbok contract id
17935 OPEN get_rbk_khr_id(l_chr_id);
17936 FETCH get_rbk_khr_id INTO l_rbk_chr_id;
17937 CLOSE get_rbk_khr_id;
17938 -- 16522428 15/03/13
17939
17940 IF (OKL_LA_SALES_TAX_PVT.check_prior_upfront_tax(l_chr_id)
17941 OR OKL_LA_SALES_TAX_PVT.check_prior_upfront_tax(l_rbk_chr_id)) THEN -- 16522428 15-03-13 - additional condition
17942
17943 process_rebook_upfront_tax(
17944 p_api_version => p_api_version,
17945 p_init_msg_list => OKL_API.G_FALSE,
17946 x_return_status => x_return_status,
17947 x_msg_count => x_msg_count,
17948 x_msg_data => x_msg_data,
17949 p_source_trx_id => p_source_trx_id,
17950 p_source_trx_name => p_source_trx_name,
17951 p_source_table => l_source_table);
17952
17953 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17954 OKL_API.set_message( p_app_name => 'OKL',
17955 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17956 p_token1 => 'TRX_TYPE',
17957 p_token1_value => p_source_trx_name);
17958
17959 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17960 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17961 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17962 RAISE OKL_API.G_EXCEPTION_ERROR;
17963 END IF;
17964 END IF;
17965
17966 --ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17967 -- OKL_API.set_message( p_app_name => 'OKL',
17968 -- p_msg_name => 'OKL_TX_OU_NO_TAX',
17969 -- p_token1 => 'TAX_CALL_TYPE',
17970 -- p_token1_value => 'Upfront Tax');
17971 END IF;
17972
17973 ELSIF p_source_trx_name = 'Reverse' THEN
17974 -- No need to check "tax_upfront_yn" flag in case of contract reversal
17975 process_contract_reversal_tax(
17976 p_api_version => p_api_version,
17977 p_init_msg_list => OKL_API.G_FALSE,
17978 x_return_status => x_return_status,
17979 x_msg_count => x_msg_count,
17980 x_msg_data => x_msg_data,
17981 p_source_trx_id => p_source_trx_id,
17982 p_source_trx_name => p_source_trx_name,
17983 p_source_table => l_source_table);
17984
17985 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17986 OKL_API.set_message( p_app_name => 'OKL',
17987 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17988 p_token1 => 'TRX_TYPE',
17989 p_token1_value => p_source_trx_name);
17990
17991 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17992 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17993 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17994 RAISE OKL_API.G_EXCEPTION_ERROR;
17995 END IF;
17996 END IF;
17997
17998 ELSIF p_source_trx_name = 'Sales Quote' THEN
17999 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
18000 process_quoting_upfront_tax(
18001 p_api_version => p_api_version,
18002 p_init_msg_list => OKL_API.G_FALSE,
18003 x_return_status => x_return_status,
18004 x_msg_count => x_msg_count,
18005 x_msg_data => x_msg_data,
18006 p_source_trx_id => p_source_trx_id,
18007 p_source_trx_name => p_source_trx_name,
18008 p_source_table => l_source_table);
18009
18010 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
18011 OKL_API.set_message( p_app_name => 'OKL',
18012 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
18013 p_token1 => 'TRX_TYPE',
18014 p_token1_value => p_source_trx_name);
18015
18016 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18017 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18018 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18019 RAISE OKL_API.G_EXCEPTION_ERROR;
18020 END IF;
18021 END IF;
18022 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
18023 OKL_API.set_message( p_app_name => 'OKL',
18024 p_msg_name => 'OKL_TX_OU_NO_TAX',
18025 p_token1 => 'TAX_CALL_TYPE',
18026 p_token1_value => 'Upfront Tax');
18027 END IF;
18028
18029 ELSE
18030 OKC_API.set_message( p_app_name => 'OKC',
18031 p_msg_name => G_INVALID_VALUE,
18032 p_token1 => G_COL_NAME_TOKEN,
18033 p_token1_value => 'Transaction Type');
18034 RAISE OKL_API.G_EXCEPTION_ERROR;
18035 END IF;
18036
18037 x_return_status := l_return_status; -- added for 12.0 since the above code that sets
18038 -- x_return_status is commented
18039 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18040 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ','End(-)');
18041 END IF;
18042
18043 -- End the transaction
18044 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18045
18046 EXCEPTION
18047 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18048
18049 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18050 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
18051 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18052 END IF;
18053
18054 IF l_systemparams_csr%ISOPEN THEN
18055 CLOSE l_systemparams_csr;
18056 END IF;
18057
18058 IF l_tax_schedule_csr%ISOPEN THEN
18059 CLOSE l_tax_schedule_csr;
18060 END IF;
18061
18062 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18063 (
18064 l_api_name,
18065 G_PKG_NAME,
18066 'OKL_API.G_RET_STS_ERROR',
18067 x_msg_count,
18068 x_msg_data,
18069 '_PVT'
18070 );
18071 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18072 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18073 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
18074 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18075 END IF;
18076
18077 IF l_systemparams_csr%ISOPEN THEN
18078 CLOSE l_systemparams_csr;
18079 END IF;
18080
18081 IF l_tax_schedule_csr%ISOPEN THEN
18082 CLOSE l_tax_schedule_csr;
18083 END IF;
18084
18085 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18086 (
18087 l_api_name,
18088 G_PKG_NAME,
18089 'OKL_API.G_RET_STS_UNEXP_ERROR',
18090 x_msg_count,
18091 x_msg_data,
18092 '_PVT'
18093 );
18094 WHEN OTHERS THEN
18095
18096 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18097 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
18098 'EXCEPTION :'||sqlerrm);
18099 END IF;
18100
18101 IF l_systemparams_csr%ISOPEN THEN
18102 CLOSE l_systemparams_csr;
18103 END IF;
18104
18105 IF l_tax_schedule_csr%ISOPEN THEN
18106 CLOSE l_tax_schedule_csr;
18107 END IF;
18108
18109 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18110 (
18111 l_api_name,
18112 G_PKG_NAME,
18113 'OTHERS',
18114 x_msg_count,
18115 x_msg_data,
18116 '_PVT'
18117 );
18118
18119 x_return_status := l_return_status; -- added for 12.0 since the above code that sets
18120 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18121 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ','End(-)');
18122 END IF;
18123
18124 -- end the transaction
18125 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18126
18127 END calculate_sales_tax;
18128
18129 /*========================================================================
18130 | PUBLIC PROCEDURE set_tax_security_context
18131 |
18132 | DESCRIPTION
18133 | This procedure is called by update tax common components for setting the
18134 | tax security context before invoking Tax Determinant Lov's
18135 |
18136 | CALLED FROM Tax Common components
18137 |
18138 |
18139 | CALLS PROCEDURES/FUNCTIONS
18140 | OKL_TAX_INTERFACE_PVT.set_tax_security_context
18141 |
18142 |
18143 | PARAMETERS
18144 | p_internal_org_id -- Operatng Unit Identifier
18145 | p_legal_entity_id -- Legal Entity Identifier
18146 | p_transaction_date -- Transaction Date
18147 |
18148 | KNOWN ISSUES
18149 |
18150 | NOTES
18151 |
18152 |
18153 | MODIFICATION HISTORY
18154 | Date Author Description of Changes
18155 | 24-JAN-07 RRAVIKIR Created
18156 *=======================================================================*/
18157 PROCEDURE set_tax_security_context(
18158 p_api_version IN NUMBER,
18159 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18160 x_return_status OUT NOCOPY VARCHAR2,
18161 x_msg_count OUT NOCOPY NUMBER,
18162 x_msg_data OUT NOCOPY VARCHAR2,
18163 p_internal_org_id IN NUMBER,
18164 p_legal_entity_id IN NUMBER,
18165 p_transaction_date IN DATE) IS
18166
18167 l_api_version CONSTANT NUMBER := 1;
18168 l_api_name CONSTANT VARCHAR2(30) := 'set_tax_security_context';
18169 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18170
18171 x_effective_date DATE;
18172
18173 BEGIN
18174
18175 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18176 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context','Begin(+)');
18177 END IF;
18178
18179 --Print Input Variables
18180 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18181 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18182 'p_init_msg_list :'||p_init_msg_list);
18183 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18184 'p_internal_org_id :'||to_char(p_internal_org_id));
18185 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18186 'p_legal_entity_id :'||p_legal_entity_id);
18187 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18188 'p_transaction_date :'||p_transaction_date);
18189 END IF;
18190
18191 --Check API version, initialize message list and create savepoint.
18192 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18193 G_PKG_NAME,
18194 p_init_msg_list,
18195 l_api_version,
18196 p_api_version,
18197 '_PVT',
18198 x_return_status);
18199
18200 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18201 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18202 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18203 RAISE OKL_API.G_EXCEPTION_ERROR;
18204 END IF;
18205
18206 -- Required Values
18207 IF p_internal_org_id IS NULL THEN
18208 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18209 p_token1 => G_COL_NAME_TOKEN,
18210 p_token1_value => 'INTERNAL_ORG_ID');
18211 RAISE OKL_API.G_EXCEPTION_ERROR;
18212 END IF;
18213
18214 IF p_legal_entity_id IS NULL THEN
18215 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18216 p_token1 => G_COL_NAME_TOKEN,
18217 p_token1_value => 'LEGAL_ENTITY_ID');
18218 RAISE OKL_API.G_EXCEPTION_ERROR;
18219 END IF;
18220
18221 IF p_transaction_date IS NULL THEN
18222 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18223 p_token1 => G_COL_NAME_TOKEN,
18224 p_token1_value => 'TRANSACTION_DATE');
18225 RAISE OKL_API.G_EXCEPTION_ERROR;
18226 END IF;
18227
18228 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18229 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18230 'Calling OKL_TAX_INTERFACE_PVT.set_tax_security_context');
18231 END IF;
18232
18233 -- Set Tax Security Context
18234 OKL_TAX_INTERFACE_PVT.set_tax_security_context(p_api_version => p_api_version,
18235 p_init_msg_list => p_init_msg_list,
18236 x_return_status => l_return_status,
18237 x_msg_count => x_msg_count,
18238 x_msg_data => x_msg_data,
18239 p_internal_org_id => p_internal_org_id,
18240 p_legal_entity_id => p_legal_entity_id,
18241 p_transaction_date => p_transaction_date);
18242
18243 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18244 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18245 'Return Status' || l_return_status);
18246 END IF;
18247
18248 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18249 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18250 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18251 RAISE OKL_API.G_EXCEPTION_ERROR;
18252 END IF;
18253
18254 x_return_status := l_return_status;
18255
18256 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18257 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ','End(-)');
18258 END IF;
18259
18260 -- end the transaction
18261 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18262
18263
18264 EXCEPTION
18265 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18266
18267 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18268 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18269 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18270 END IF;
18271
18272 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18273 (
18274 l_api_name,
18275 G_PKG_NAME,
18276 'OKL_API.G_RET_STS_ERROR',
18277 x_msg_count,
18278 x_msg_data,
18279 '_PVT'
18280 );
18281 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18282 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18283 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18284 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18285 END IF;
18286
18287 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18288 (
18289 l_api_name,
18290 G_PKG_NAME,
18291 'OKL_API.G_RET_STS_UNEXP_ERROR',
18292 x_msg_count,
18293 x_msg_data,
18294 '_PVT'
18295 );
18296 WHEN OTHERS THEN
18297
18298 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18299 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18300 'EXCEPTION :'||sqlerrm);
18301 END IF;
18302
18303 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18304 (
18305 l_api_name,
18306 G_PKG_NAME,
18307 'OTHERS',
18308 x_msg_count,
18309 x_msg_data,
18310 '_PVT'
18311 );
18312 END set_tax_security_context;
18313
18314 /*========================================================================
18315 | PUBLIC PROCEDURE process_tax_determ_override
18316 |
18317 | DESCRIPTION
18318 | This procedure is called by 'BOOKING', 'REBOOK' and 'ASSET LOCATION
18319 | CHANGE' transactions to override tax determinants
18320 |
18321 | CALLED FROM OLM Tax Events
18322 |
18323 |
18324 | CALLS PROCEDURES/FUNCTIONS
18325 |
18326 |
18327 | PARAMETERS
18328 | p_trx_id -- Transaction Identifier
18329 | p_tax_sources_id -- Tax Sources table unique Identifier
18330 | p_trx_business_category -- Transaction Business Category (Tax Determinant)
18331 | p_product_category -- Product Category (Tax Determinant)
18332 | p_user_defined_fisc_class -- User defined fiscal class (Tax Determinant)
18333 | p_line_intended_use -- Line intended use (Tax Determinant)
18334 |
18335 | KNOWN ISSUES
18336 |
18337 | NOTES
18338 |
18339 |
18340 | MODIFICATION HISTORY
18341 | Date Author Description of Changes
18342 | 01-FEB-07 RRAVIKIR Created
18343 | 05-Jun-08 SECHAWLA 6844953 : Added nvl to the IF condition that
18344 | checks whether determinants need
18345 | to be modified
18346 |
18347 *=======================================================================*/
18348 PROCEDURE process_tax_determ_override(
18349 p_api_version IN NUMBER,
18350 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18351 x_return_status OUT NOCOPY VARCHAR2,
18352 x_msg_count OUT NOCOPY NUMBER,
18353 x_msg_data OUT NOCOPY VARCHAR2,
18354 p_trx_id IN NUMBER,
18355 p_tax_sources_id IN NUMBER,
18356 p_trx_business_category IN VARCHAR2,
18357 p_product_category IN VARCHAR2,
18358 p_user_defined_fisc_class IN VARCHAR2,
18359 p_line_intended_use IN VARCHAR2,
18360 p_request_id IN NUMBER DEFAULT NULL,
18361 p_asset_id IN NUMBER DEFAULT NULL) IS
18362
18363 -- Local variables
18364 l_api_version CONSTANT NUMBER := 1;
18365 l_api_name CONSTANT VARCHAR2(30) := 'process_tax_determ';
18366 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18367 lx_doc_level_recalc_flag VARCHAR2(1);
18368 l_total_tax_amount NUMBER;
18369
18370 -- Local data structure
18371 l_txsv_rec txsv_rec_type;
18372 lx_txsv_rec txsv_rec_type;
18373
18374 l_transaction_rec transaction_rec_type;
18375
18376 -- Cursors
18377 CURSOR l_taxsources_csr(cp_tax_sources_id IN NUMBER) IS
18378 SELECT org_id, trx_line_id, application_id, event_class_code,
18379 entity_code, trx_level_type, khr_id, product_category, user_defined_fisc_class,
18380 trx_business_category, line_intended_use, alc_serialized_yn
18381 FROM okl_tax_sources
18382 WHERE id = cp_tax_sources_id;
18383
18384 CURSOR l_zxlinestotaltax_csr(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER,
18385 cp_application_id IN NUMBER, cp_event_class_code IN VARCHAR2,
18386 cp_entity_code IN VARCHAR2, cp_trx_level_type IN VARCHAR2) IS
18387 SELECT SUM(zx_lines.tax_amt) total_tax
18388 FROM zx_lines
18389 WHERE trx_id = cp_trx_id
18390 AND trx_line_id = cp_trx_line_id
18391 AND application_id = cp_application_id
18392 AND event_class_code = cp_event_class_code
18393 AND entity_code = cp_entity_code
18394 AND trx_level_type = cp_trx_level_type
18395 AND nvl(cancel_flag, 'N') <> 'Y';
18396
18397 -- Cursor Records
18398 l_taxsources_rec l_taxsources_csr%ROWTYPE;
18399
18400 l_values_changed BOOLEAN := FALSE;
18401 l_alc_event BOOLEAN := FALSE;
18402
18403 BEGIN
18404 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18405 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override','Begin(+)');
18406 END IF;
18407
18408 --Print Input Variables
18409 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18410 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18411 'p_init_msg_list :'||p_init_msg_list);
18412 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18413 'p_trx_id :'||p_trx_id);
18414 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18415 'p_tax_sources_id :'||p_tax_sources_id);
18416 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18417 'p_trx_business_category :'||p_trx_business_category);
18418 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18419 'p_product_category :'||p_product_category);
18420 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18421 'p_user_defined_fisc_class :'||p_user_defined_fisc_class);
18422 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18423 'p_line_intended_use :'||p_line_intended_use);
18424 END IF;
18425
18426 --Check API version, initialize message list and create savepoint.
18427 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18428 G_PKG_NAME,
18429 p_init_msg_list,
18430 l_api_version,
18431 p_api_version,
18432 '_PVT',
18433 x_return_status);
18434
18435 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18436 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18437 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18438 RAISE OKL_API.G_EXCEPTION_ERROR;
18439 END IF;
18440
18441 -- Required Values
18442 IF p_tax_sources_id IS NULL THEN
18443 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18444 p_token1 => G_COL_NAME_TOKEN,
18445 p_token1_value => 'TAX_SOURCES_ID');
18446 RAISE OKL_API.G_EXCEPTION_ERROR;
18447 END IF;
18448
18449 IF p_trx_business_category IS NULL THEN
18450 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18451 p_token1 => G_COL_NAME_TOKEN,
18452 p_token1_value => 'TRX_BUSINESS_CATEGORY');
18453 RAISE OKL_API.G_EXCEPTION_ERROR;
18454 END IF;
18455
18456 IF p_trx_id IS NULL THEN
18457 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18458 p_token1 => G_COL_NAME_TOKEN,
18459 p_token1_value => 'TRX_ID');
18460 RAISE OKL_API.G_EXCEPTION_ERROR;
18461 END IF;
18462 -- End required values
18463
18464 -- Fetch Tax Sources details
18465 OPEN l_taxsources_csr(cp_tax_sources_id => p_tax_sources_id);
18466 FETCH l_taxsources_csr INTO l_taxsources_rec;
18467 CLOSE l_taxsources_csr;
18468
18469 -- Check if the tax determinant values are changed
18470 -- SECHAWLA 05-Jun-08 6844953 : Added nvl
18471 IF (nvl(l_taxsources_rec.trx_business_category,'XYZ') <> nvl(p_trx_business_category,'XYZ') OR
18472 nvl(l_taxsources_rec.product_category,'XYZ') <> nvl(p_product_category,'XYZ') OR
18473 nvl(l_taxsources_rec.user_defined_fisc_class,'XYZ') <> nvl(p_user_defined_fisc_class,'XYZ') OR
18474 nvl(l_taxsources_rec.line_intended_use,'XYZ') <> nvl(p_line_intended_use,'XYZ')) THEN
18475 l_values_changed := TRUE;
18476 END IF;
18477
18478 IF (l_values_changed) THEN
18479 -- Populate Tax Sources data structure and update tax determinants
18480 l_txsv_rec.id := p_tax_sources_id;
18481 l_txsv_rec.trx_business_category := p_trx_business_category;
18482 l_txsv_rec.product_category := p_product_category;
18483 l_txsv_rec.user_defined_fisc_class := p_user_defined_fisc_class;
18484 l_txsv_rec.line_intended_use := p_line_intended_use;
18485
18486 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18487 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18488 'Calling okl_tax_sources_pub.update_tax_sources for Updating Tax determinants');
18489 END IF;
18490
18491 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
18492 ,p_init_msg_list => p_init_msg_list
18493 ,x_return_status => l_return_status
18494 ,x_msg_count => x_msg_count
18495 ,x_msg_data => x_msg_data
18496 ,p_txsv_rec => l_txsv_rec
18497 ,x_txsv_rec => lx_txsv_rec);
18498
18499 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18500 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18501 'Return Status' || l_return_status);
18502 END IF;
18503
18504 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18505 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18506 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18507 RAISE OKL_API.G_EXCEPTION_ERROR;
18508 END IF;
18509 -- End tax determinants update
18510
18511 -- Recalculate Tax based on modified determinants
18512 -- Populate transaction record
18513 l_transaction_rec.trx_id := p_trx_id;
18514 l_transaction_rec.application_id := l_taxsources_rec.application_id;
18515 l_transaction_rec.internal_organization_id := l_taxsources_rec.org_id;
18516 l_transaction_rec.entity_code := l_taxsources_rec.entity_code ;
18517 l_transaction_rec.event_class_code := l_taxsources_rec.event_class_code ;
18518
18519 IF l_taxsources_rec.event_class_code = 'BOOKING' THEN
18520 l_transaction_rec.event_type_code := G_BOOK_UPD_EVENT_CODE;
18521 ELSIF l_taxsources_rec.event_class_code = 'ASSET_RELOCATION' THEN
18522 l_transaction_rec.event_type_code := G_ALC_UPD_EVENT_CODE;
18523 l_alc_event := TRUE;
18524 END IF;
18525
18526 -- Recalculate tax with new determinants
18527 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18528 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18529 'Calling OKL_TAX_INTERFACE_PVT.process_tax_determ_override');
18530 END IF;
18531
18532 OKL_TAX_INTERFACE_PVT.process_tax_determ_override(p_api_version => p_api_version,
18533 p_init_msg_list => p_init_msg_list,
18534 x_return_status => l_return_status,
18535 x_msg_count => x_msg_count,
18536 x_msg_data => x_msg_data,
18537 p_trx_id => p_trx_id,
18538 p_tax_sources_id => p_tax_sources_id,
18539 p_trx_business_category => p_trx_business_category,
18540 p_product_category => p_product_category,
18541 p_user_defined_fisc_class => p_user_defined_fisc_class,
18542 p_line_intended_use => p_line_intended_use,
18543 p_transaction_rec => l_transaction_rec,
18544 x_doc_level_recalc_flag => lx_doc_level_recalc_flag);
18545
18546 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18547 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18548 'Return Status' || l_return_status);
18549 END IF;
18550
18551 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18552 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18553 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18554 RAISE OKL_API.G_EXCEPTION_ERROR;
18555 END IF;
18556
18557 -- Action based on return status
18558 IF (lx_doc_level_recalc_flag = 'Y') THEN
18559 -- Recalculation of tax for this particular taxable line has changed the tax
18560 -- for other taxable lines as well, so update the total_tax column for all
18561 -- the transaction lines including the one for which tax call was made
18562
18563 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18564 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18565 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
18566 END IF;
18567
18568 IF (l_alc_event) THEN
18569 update_tax_sources_total(p_api_version => p_api_version,
18570 p_init_msg_list => p_init_msg_list,
18571 x_return_status => l_return_status,
18572 x_msg_count => x_msg_count,
18573 x_msg_data => x_msg_data,
18574 p_source_trx_id => p_trx_id,
18575 p_source_trx_name => 'Asset Relocation');
18576
18577 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18578 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18579 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18580 RAISE OKL_API.G_EXCEPTION_ERROR;
18581 END IF;
18582
18583 ELSE
18584 update_tax_sources_total(p_api_version => p_api_version,
18585 p_init_msg_list => p_init_msg_list,
18586 x_return_status => l_return_status,
18587 x_msg_count => x_msg_count,
18588 x_msg_data => x_msg_data,
18589 p_source_trx_id => p_trx_id);
18590 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18591 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18592 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18593 RAISE OKL_API.G_EXCEPTION_ERROR;
18594 END IF;
18595
18596 END IF;
18597
18598 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18599 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18600 'Return Status' || l_return_status);
18601 END IF;
18602
18603 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18604 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18605 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18606 RAISE OKL_API.G_EXCEPTION_ERROR;
18607 END IF;
18608
18609 ELSIF (lx_doc_level_recalc_flag = 'N') THEN
18610
18611 -- Recalculation of tax for this particular taxable line has not changed the
18612 -- tax for other taxable lines, so update the total_tax column for this
18613 -- transaction line only
18614 OPEN l_zxlinestotaltax_csr(cp_trx_id => p_trx_id,
18615 cp_trx_line_id => l_taxsources_rec.trx_line_id,
18616 cp_application_id => l_taxsources_rec.application_id,
18617 cp_event_class_code => l_taxsources_rec.event_class_code,
18618 cp_entity_code => l_taxsources_rec.entity_code,
18619 cp_trx_level_type => l_taxsources_rec.trx_level_type);
18620 FETCH l_zxlinestotaltax_csr INTO l_total_tax_amount;
18621 CLOSE l_zxlinestotaltax_csr;
18622
18623 -- Populate Tax Sources data structure and update total tax
18624 l_txsv_rec.id := p_tax_sources_id;
18625 l_txsv_rec.total_tax := l_total_tax_amount;
18626
18627 IF (l_alc_event) THEN
18628 l_txsv_rec.alc_serialized_total_tax := l_total_tax_amount;
18629 END IF;
18630
18631 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18632 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18633 'Calling okl_tax_sources_pub.update_tax_sources for updating Total Tax for current line in Tax Sources');
18634 END IF;
18635
18636 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
18637 ,p_init_msg_list => p_init_msg_list
18638 ,x_return_status => l_return_status
18639 ,x_msg_count => x_msg_count
18640 ,x_msg_data => x_msg_data
18641 ,p_txsv_rec => l_txsv_rec
18642 ,x_txsv_rec => lx_txsv_rec);
18643
18644 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18646 'Return Status' || l_return_status);
18647 END IF;
18648
18649 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18650 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18651 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18652 RAISE OKL_API.G_EXCEPTION_ERROR;
18653 END IF;
18654 END IF;
18655 -- End actions based on return status
18656 -- End Recalculate tax
18657
18658 -- Condition to populate 'ALC_SERIALIZED_TOTAL_TAX' column of tax sources
18659 IF (l_alc_event AND l_taxsources_rec.alc_serialized_yn = 'Y') THEN
18660 populate_alc_total_tax(p_api_version => p_api_version,
18661 p_init_msg_list => p_init_msg_list,
18662 x_return_status => l_return_status,
18663 x_msg_count => x_msg_count,
18664 x_msg_data => x_msg_data,
18665 p_asset_id => p_asset_id,
18666 p_request_id => p_request_id);
18667
18668 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18669 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18670 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18671 RAISE OKL_API.G_EXCEPTION_ERROR;
18672 END IF;
18673 END IF;
18674
18675 -- Call Authoring package to sync tax values for 'BOOKING' and 'REBOOK' transactions
18676 IF (l_taxsources_rec.event_class_code = 'BOOKING' OR
18677 l_taxsources_rec.event_class_code = 'REBOOK') THEN
18678 OKL_LA_SALES_TAX_PVT.process_tax_override(
18679 p_api_version => p_api_version,
18680 p_init_msg_list => p_init_msg_list,
18681 p_chr_id => l_taxsources_rec.khr_id,
18682 p_transaction_id => p_trx_id,
18683 x_return_status => l_return_status,
18684 x_msg_count => x_msg_count,
18685 x_msg_data => x_msg_data );
18686 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18687 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18688 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18689 RAISE OKL_API.G_EXCEPTION_ERROR;
18690 END IF;
18691 END IF;
18692 -- End call to Authoring package
18693
18694 END IF;
18695
18696 x_return_status := l_return_status;
18697
18698 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18699 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ','End(-)');
18700 END IF;
18701
18702 -- end the transaction
18703 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18704
18705 EXCEPTION
18706
18707 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18708
18709 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18710 CLOSE l_zxlinestotaltax_csr;
18711 END IF;
18712
18713 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18714 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18715 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18716 END IF;
18717
18718 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18719 (
18720 l_api_name,
18721 G_PKG_NAME,
18722 'OKL_API.G_RET_STS_ERROR',
18723 x_msg_count,
18724 x_msg_data,
18725 '_PVT'
18726 );
18727 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18728
18729 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18730 CLOSE l_zxlinestotaltax_csr;
18731 END IF;
18732
18733 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18734 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18735 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18736 END IF;
18737
18738 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18739 (
18740 l_api_name,
18741 G_PKG_NAME,
18742 'OKL_API.G_RET_STS_UNEXP_ERROR',
18743 x_msg_count,
18744 x_msg_data,
18745 '_PVT'
18746 );
18747 WHEN OTHERS THEN
18748
18749 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18750 CLOSE l_zxlinestotaltax_csr;
18751 END IF;
18752
18753 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18754 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18755 'EXCEPTION :'||sqlerrm);
18756 END IF;
18757
18758 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18759 (
18760 l_api_name,
18761 G_PKG_NAME,
18762 'OTHERS',
18763 x_msg_count,
18764 x_msg_data,
18765 '_PVT'
18766 );
18767 END process_tax_determ_override;
18768
18769 /*========================================================================
18770 | PUBLIC PROCEDURE process_tax_details_override
18771 |
18772 | DESCRIPTION
18773 | This procedure is called by 'BOOKING', 'REBOOK' and 'ASSET LOCATION
18774 | CHANGE' transactions to override tax details
18775 |
18776 | CALLED FROM OLM Tax Events
18777 |
18778 |
18779 | CALLS PROCEDURES/FUNCTIONS
18780 |
18781 |
18782 | PARAMETERS
18783 | p_event_id -- Tax Lines window will return an event id
18784 | when there are any user overrides. It is
18785 | this event id value that needs to be passed
18786 | by OA Tax Override and Forms Tax Override Uis,
18787 | to this API
18788 | p_internal_organization_id -- Organization Identifier
18789 | p_trx_id -- Transaction Identifier
18790 | p_application_id -- Application Identifier
18791 | p_entity_code -- Entity code
18792 | p_event_class_code -- Event class code
18793 |
18794 | KNOWN ISSUES
18795 |
18796 | NOTES
18797 |
18798 |
18799 | MODIFICATION HISTORY
18800 | Date Author Description of Changes
18801 | 22-FEB-07 RRAVIKIR Created
18802 |
18803 *=======================================================================*/
18804 PROCEDURE process_tax_details_override(
18805 p_api_version IN NUMBER,
18806 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18807 x_return_status OUT NOCOPY VARCHAR2,
18808 x_msg_count OUT NOCOPY NUMBER,
18809 x_msg_data OUT NOCOPY VARCHAR2,
18810 p_event_id IN NUMBER,
18811 p_internal_organization_id IN NUMBER,
18812 p_trx_id IN NUMBER,
18813 p_application_id IN NUMBER,
18814 p_entity_code IN VARCHAR2,
18815 p_event_class_code IN VARCHAR2) IS
18816
18817 -- Local variables
18818 l_api_version CONSTANT NUMBER := 1;
18819 l_api_name CONSTANT VARCHAR2(30) := 'process_tax_details';
18820 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18821 l_total_tax_amount NUMBER;
18822
18823 -- Local data structure
18824 l_txsv_rec txsv_rec_type;
18825 lx_txsv_rec txsv_rec_type;
18826 l_transaction_rec transaction_rec_type;
18827
18828 -- Cursors
18829 BEGIN
18830
18831 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18832 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override','Begin(+)');
18833 END IF;
18834
18835 --Print Input Variables
18836 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18837 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18838 'p_init_msg_list :'||p_init_msg_list);
18839 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18840 'p_trx_id :'||p_trx_id);
18841 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18842 'p_event_id :'||p_event_id);
18843 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18844 'p_internal_organization_id :'||p_internal_organization_id);
18845 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18846 'p_application_id :'||p_application_id);
18847 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18848 'p_entity_code :'||p_entity_code);
18849 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18850 'p_event_class_code :'||p_event_class_code);
18851 END IF;
18852
18853 --Check API version, initialize message list and create savepoint.
18854 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18855 G_PKG_NAME,
18856 p_init_msg_list,
18857 l_api_version,
18858 p_api_version,
18859 '_PVT',
18860 x_return_status);
18861
18862 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18863 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18864 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18865 RAISE OKL_API.G_EXCEPTION_ERROR;
18866 END IF;
18867
18868 -- Required Values
18869 IF p_application_id IS NULL THEN
18870 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18871 p_token1 => G_COL_NAME_TOKEN,
18872 p_token1_value => 'APPLICATION_ID');
18873 RAISE OKL_API.G_EXCEPTION_ERROR;
18874 END IF;
18875
18876 IF p_entity_code IS NULL THEN
18877 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18878 p_token1 => G_COL_NAME_TOKEN,
18879 p_token1_value => 'ENTITY_CODE');
18880 RAISE OKL_API.G_EXCEPTION_ERROR;
18881 END IF;
18882
18883 IF p_event_class_code IS NULL THEN
18884 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18885 p_token1 => G_COL_NAME_TOKEN,
18886 p_token1_value => 'EVENT_CLASS_CODE');
18887 RAISE OKL_API.G_EXCEPTION_ERROR;
18888 END IF;
18889
18890 IF p_internal_organization_id IS NULL THEN
18891 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18892 p_token1 => G_COL_NAME_TOKEN,
18893 p_token1_value => 'INTERNAL_ORGANIZATION_ID');
18894 RAISE OKL_API.G_EXCEPTION_ERROR;
18895 END IF;
18896
18897 IF p_trx_id IS NULL THEN
18898 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18899 p_token1 => G_COL_NAME_TOKEN,
18900 p_token1_value => 'TRX_ID');
18901 RAISE OKL_API.G_EXCEPTION_ERROR;
18902 END IF;
18903 -- End required values
18904
18905 -- Populate Transaction record
18906 l_transaction_rec.application_id := p_application_id;
18907 l_transaction_rec.entity_code := p_entity_code;
18908 l_transaction_rec.event_class_code := p_event_class_code;
18909
18910 IF p_event_class_code = 'BOOKING' THEN
18911 l_transaction_rec.event_type_code := G_BOOK_OVERRIDE_EVENT;
18912 ELSIF p_event_class_code = 'ASSET_RELOCATION' THEN
18913 l_transaction_rec.event_type_code := G_ALC_OVERRIDE_EVENT;
18914 END IF;
18915
18916 l_transaction_rec.trx_id := p_trx_id;
18917 l_transaction_rec.internal_organization_id := p_internal_organization_id;
18918
18919 -- Override tax with new values
18920 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18921 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18922 'Calling OKL_TAX_INTERFACE_PVT.process_tax_details_override');
18923 END IF;
18924
18925 OKL_TAX_INTERFACE_PVT.process_tax_details_override
18926 (p_api_version => p_api_version,
18927 p_init_msg_list => p_init_msg_list,
18928 x_return_status => l_return_status,
18929 x_msg_count => x_msg_count,
18930 x_msg_data => x_msg_data,
18931 p_transaction_rec => l_transaction_rec,
18932 p_override_level => G_OVERRIDE_LEVEL,
18933 p_event_id => p_event_id);
18934
18935 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18936 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18937 'Return Status' || l_return_status);
18938 END IF;
18939
18940 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18941 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18942 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18943 RAISE OKL_API.G_EXCEPTION_ERROR;
18944 END IF;
18945
18946 -- Overriding a tax line can impact the tax lines of other transaction lines
18947 -- Get the modified tax lines from zx_lines, sum up the total tax amount
18948 -- and store in total_tax column of okl_tax_sources
18949
18950 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18951 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18952 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
18953 END IF;
18954
18955 update_tax_sources_total(p_api_version => p_api_version,
18956 p_init_msg_list => p_init_msg_list,
18957 x_return_status => l_return_status,
18958 x_msg_count => x_msg_count,
18959 x_msg_data => x_msg_data,
18960 p_source_trx_id => p_trx_id);
18961
18962 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18963 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18964 'Return Status' || l_return_status);
18965 END IF;
18966
18967 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18968 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18969 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18970 RAISE OKL_API.G_EXCEPTION_ERROR;
18971 END IF;
18972
18973 x_return_status := l_return_status;
18974
18975 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18976 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ','End(-)');
18977 END IF;
18978
18979 -- end the transaction
18980 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18981
18982 EXCEPTION
18983 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18984
18985 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18986 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
18987 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18988 END IF;
18989
18990 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18991 (
18992 l_api_name,
18993 G_PKG_NAME,
18994 'OKL_API.G_RET_STS_ERROR',
18995 x_msg_count,
18996 x_msg_data,
18997 '_PVT'
18998 );
18999 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19000 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19001 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
19002 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
19003 END IF;
19004
19005 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
19006 (
19007 l_api_name,
19008 G_PKG_NAME,
19009 'OKL_API.G_RET_STS_UNEXP_ERROR',
19010 x_msg_count,
19011 x_msg_data,
19012 '_PVT'
19013 );
19014 WHEN OTHERS THEN
19015
19016 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19017 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
19018 'EXCEPTION :'||sqlerrm);
19019 END IF;
19020
19021 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
19022 (
19023 l_api_name,
19024 G_PKG_NAME,
19025 'OTHERS',
19026 x_msg_count,
19027 x_msg_data,
19028 '_PVT'
19029 );
19030 END process_tax_details_override;
19031
19032 /*========================================================================
19033 | PUBLIC PROCEDURE get_tax_determinants
19034 |
19035 | DESCRIPTION
19036 | This procedure will be called by Billing and P2P transactions to derive
19037 | tax determinants. Billing - Invoice tax is to be reported from AR. Pass
19038 | reporting flag as 'Y' in autoinvoice interface P2P - PRODUCT_CATEGORY,
19039 | LINE_INTENDED_USE, USER_DEFINED_FISC_CLASS are not applicable in case of
19040 | P2P, hence the out parameters will be null in this case. Tax reporting
19041 | flag not in AP interface table - Not applicable
19042 |
19043 | CALLED FROM OLM Billing and Disbursement Modules
19044 |
19045 |
19046 | CALLS PROCEDURES/FUNCTIONS
19047 | okl_am_util_pvt.get_formula_value()
19048 |
19049 | PARAMETERS
19050 | - Billing
19051 | p_source_trx_id -- OKL_TXD_AR_LN_DTLS_B.ID
19052 | p_source_trx_name -- Billing / Credit Memo transaction
19053 | p_source_table -- OKL_TXD_AR_LN_DTLS_B
19054 | - P2P
19055 | p_source_trx_id -- OKL_TXL_AP_INV_LNS_ALL_B.ID
19056 | p_source_trx_name -- Funding / Disbursements transaction
19057 | p_source_table -- OKL_TXL_AP_INV_LNS_ALL_B
19058 |
19059 | KNOWN ISSUES
19060 |
19061 | NOTES
19062 |
19063 |
19064 | MODIFICATION HISTORY
19065 | Date Author Description of Changes
19066 | 01-MAR-07 RRAVIKIR Created
19067 | 04-Jan-08 SECHAWLA 6651621 Added 3 additional parameters to taxable basis override formula -
19068 | 'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
19069 |
19070 *=======================================================================*/
19071 PROCEDURE get_tax_determinants(
19072 p_api_version IN NUMBER,
19073 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
19074 x_return_status OUT NOCOPY VARCHAR2,
19075 x_msg_count OUT NOCOPY NUMBER,
19076 x_msg_data OUT NOCOPY VARCHAR2,
19077 p_source_trx_id IN NUMBER,
19078 p_source_trx_name IN VARCHAR2,
19079 p_source_table IN VARCHAR2,
19080 x_tax_det_rec OUT NOCOPY tax_det_rec_type) IS
19081
19082 -- Billing / Credit Memo Cursors
19083 -- Get the billing details
19084 CURSOR l_billingdtls_csr(cp_det_line_id IN NUMBER) IS
19085 SELECT hdr.id hdr_id, hdr.khr_id, hdr.date_invoiced, hdr.try_id try_id,
19086 hdr.qte_id, hdr.ibt_id , hdr.legal_entity_id, line.id line_id, line.kle_id,
19087 line.isl_id, det.sty_id, det.amount
19088 FROM okl_trx_ar_invoices_b hdr, okl_txl_ar_inv_lns_b line,
19089 okl_txd_ar_ln_dtls_b det
19090 WHERE det.id = cp_det_line_id
19091 AND det.til_id_details = line.id
19092 AND line.tai_id = hdr.id;
19093
19094 --13-Jun-11 sechawla 12653340 : added : begin
19095 CURSOR l_trxtypename_csr(cp_try_id IN NUMBER) IS
19096 SELECT name
19097 FROM okl_trx_types_v
19098 WHERE id = cp_try_id;
19099
19100 CURSOR l_trxtypeid_csr(cp_trx_type_name IN VARCHAR2) IS
19101 SELECT id
19102 FROM okl_trx_types_v
19103 WHERE name = cp_trx_type_name;
19104
19105 l_trx_type_name VARCHAR2(150);
19106 l_trx_type_id NUMBER;
19107 --13-Jun-11 sechawla 12653340 : added : end
19108
19109
19110 -- Get the quote details
19111 CURSOR l_trxquotes_csr(cp_qte_id IN NUMBER) IS
19112 SELECT qtp_code, qrs_code, early_termination_yn
19113 FROM okl_trx_quotes_b
19114 WHERE id = cp_qte_id;
19115
19116 -- Get stream type purpose for a given stream type id
19117 CURSOR l_strmtype_csr(cp_sty_id IN NUMBER) IS
19118 SELECT stream_type_purpose
19119 FROM okl_strm_type_b
19120 WHERE id = cp_sty_id;
19121
19122 -- Get the line type
19123 CURSOR l_okclinestyle_csr(cp_kle_id IN NUMBER) IS
19124 SELECT lse.lty_code
19125 FROM okc_k_lines_b line, okc_line_styles_b lse
19126 WHERE line.lse_id = lse.id
19127 AND line.id = cp_kle_id;
19128
19129 -- Get line name
19130 CURSOR l_okclines_csr(cp_line_id IN NUMBER) IS
19131 SELECT name
19132 FROM okc_k_lines_v
19133 WHERE id = cp_line_id;
19134
19135 -- Get the financial asset associated with a given subline
19136 CURSOR l_finasset_csr(cp_fee_serviced_asset_line_id IN NUMBER, cp_line_type IN VARCHAR2) IS
19137 SELECT cim.object1_id1
19138 FROM okc_k_lines_b cle, okc_line_styles_b lse, okc_k_items cim
19139 WHERE cle.lse_id = lse.id
19140 AND lse.lty_code = cp_line_type
19141 AND cim.cle_id = cle.id
19142 AND cle.id = cp_fee_serviced_asset_line_id;
19143
19144 -- get the inventory item from the sales order
19145 CURSOR l_oeorderlines_csr(cp_line_id IN NUMBER) IS
19146 SELECT inventory_item_id, ship_from_org_id, ship_to_org_id
19147 FROM oe_order_lines_all
19148 WHERE line_id = cp_line_id;
19149
19150 -- get the inventory item id and inventory item org for a financial asset
19151 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
19152 SELECT cim_model.object1_id1,
19153 cim_model.object1_id2
19154 FROM okc_k_items cim_model,
19155 okc_k_lines_b cleb_model,
19156 okc_line_styles_b lseb_model
19157 WHERE cim_model.cle_id = cleb_model.id
19158 AND cleb_model.cle_id = cp_fin_asset_id
19159 AND lseb_model.id = cleb_model.lse_id
19160 AND lseb_model.lty_code = 'ITEM';
19161
19162 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
19163 SELECT set_of_books_id
19164 FROM ar_system_parameters_all
19165 WHERE org_id = cp_org_id;
19166
19167 -- Check if tax basis override formula exists
19168 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
19169 SELECT fma_id
19170 FROM okl_tax_basis_override
19171 WHERE try_id = cp_try_id
19172 AND org_id = MO_GLOBAL.get_current_org_id;
19173
19174 -- get formula name
19175 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
19176 SELECT name
19177 FROM okl_formulae_b
19178 WHERE id = cp_fma_id;
19179
19180 -- Funding / Debit Memo / Disbursement Cursors
19181 CURSOR l_disbdtls_csr(cp_line_id IN NUMBER) IS
19182 SELECT hdr.id hdr_id, line.khr_id, hdr.date_invoiced, hdr.try_id try_id,
19183 hdr.qte_id, hdr.legal_entity_id, line.id line_id, line.kle_id,
19184 line.sty_id, line.amount, hdr.ipvs_id
19185 FROM okl_trx_ap_invoices_b hdr, okl_txl_ap_inv_lns_b line
19186 WHERE line.id = cp_line_id
19187 AND line.tap_id = hdr.id;
19188
19189 CURSOR l_get_vendor_csr(cp_vendor_site_id IN NUMBER) IS
19190 SELECT vendor_id
19191 FROM po_vendor_sites
19192 WHERE vendor_site_id = cp_vendor_site_id;
19193
19194 -- Record types
19195 l_billingdtls_rec l_billingdtls_csr%ROWTYPE;
19196 l_disbdtls_rec l_disbdtls_csr%ROWTYPE;
19197 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
19198
19199 -- Local variables
19200 l_api_version CONSTANT NUMBER := 1;
19201 l_api_name CONSTANT VARCHAR2(30) := 'get_tax_determinants';
19202
19203 l_qtp_code okl_trx_quotes_b.qtp_code%TYPE;
19204 l_qte_reason okl_trx_quotes_b.qrs_code%TYPE;
19205 l_early_term_yn okl_trx_quotes_b.early_termination_yn%TYPE;
19206 l_purpose_code okl_strm_type_b.stream_type_purpose%TYPE;
19207 l_product_type VARCHAR2(30);
19208 l_def_tax_country VARCHAR2(2);
19209 l_reporting_flag VARCHAR2(1);
19210
19211 lx_cust_acct_id NUMBER;
19212 lx_currency_code VARCHAR2(15);
19213 lx_precision NUMBER;
19214 lx_minimum_accountable_unit NUMBER;
19215 lx_cust_trx_type_id NUMBER;
19216
19217 lx_pb_prch_opt_det VARCHAR2(450);
19218 lx_pb_fin_prod_id_det NUMBER;
19219 lx_pb_int_disclosed_det VARCHAR2(30);
19220 lx_bill_to_party_site_id NUMBER;
19221 lx_bill_to_location_id NUMBER;
19222 lx_bill_to_party_id NUMBER;
19223 lx_bill_to_siteuseid NUMBER;
19224 lx_ship_to_party_site_id NUMBER;
19225 lx_ship_to_location_id NUMBER;
19226 lx_ship_to_party_id NUMBER;
19227 lx_ship_to_siteuseid NUMBER;
19228
19229 lx_org_id NUMBER;
19230 lx_book_class_code VARCHAR2(30);
19231 lx_currency_conversion_type VARCHAR2(30);
19232 lx_currency_conversion_rate NUMBER;
19233 lx_currency_conversion_date DATE;
19234 lx_contract_start_date DATE;
19235 lx_transfer_of_title VARCHAR2(30);
19236 lx_sale_lease_back VARCHAR2(30);
19237 lx_purchase_of_lease VARCHAR2(30);
19238 lx_usage_of_equipment VARCHAR2(450);
19239 lx_age_of_equipment NUMBER;
19240 lx_vendor_site_id NUMBER;
19241 lx_tbc_code VARCHAR2(240);
19242 lx_pc_code VARCHAR2(240);
19243 lx_ufc_code VARCHAR2(240);
19244 lx_tax_classification_code VARCHAR2(50);
19245 lx_assessable_value NUMBER;
19246
19247 l_line_type VARCHAR2(100);
19248 l_fin_asset_id NUMBER;
19249 l_inv_item_id NUMBER;
19250 l_inv_item_org_id NUMBER;
19251 l_name VARCHAR2(30);
19252 l_set_of_books_id NUMBER;
19253 l_fma_id NUMBER;
19254 l_formula_name VARCHAR2(150);
19255 l_event_class_code VARCHAR2(30);
19256 l_asset_exists BOOLEAN := FALSE;
19257 l_vendor_id NUMBER;
19258 lx_tax_valid_code VARCHAR2(1);
19259
19260 BEGIN
19261
19262 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19263 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants','Begin(+)');
19264 END IF;
19265
19266 --Print Input Variables
19267 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19268 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19269 'p_init_msg_list :'||p_init_msg_list);
19270 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19271 'p_source_trx_id :'||p_source_trx_id);
19272 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19273 'p_source_trx_name :'||p_source_trx_name);
19274 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19275 'p_source_table :'||p_source_table);
19276 END IF;
19277
19278 --Check API version, initialize message list and create savepoint.
19279 x_return_status := OKL_API.START_ACTIVITY(l_api_name,
19280 G_PKG_NAME,
19281 p_init_msg_list,
19282 l_api_version,
19283 p_api_version,
19284 '_PVT',
19285 x_return_status);
19286 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19287 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19288 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19289 RAISE OKL_API.G_EXCEPTION_ERROR;
19290 END IF;
19291
19292 IF p_source_trx_name IN ('Billing', 'Credit Memo', 'Rollover Billing',
19293 'Rollover Credit Memo', 'Release Billing',
19294 'Release Credit Memo') THEN
19295
19296 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19297 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19298 'Call to (Billing, Credit Memo, Rollover Billing, Rollover Credit Memo,
19299 Release Billing, Release Credit Memo) .. ');
19300 END IF;
19301
19302 -- Validate source trx id
19303 OPEN l_billingdtls_csr(p_source_trx_id);
19304 FETCH l_billingdtls_csr INTO l_billingdtls_rec;
19305 IF l_billingdtls_csr %NOTFOUND THEN
19306 OKC_API.set_message( p_app_name => 'OKC',
19307 p_msg_name => G_INVALID_VALUE,
19308 p_token1 => G_COL_NAME_TOKEN,
19309 p_token1_value => 'SOURCE_TRX_ID');
19310 RAISE OKL_API.G_EXCEPTION_ERROR;
19311 END IF;
19312 CLOSE l_billingdtls_csr;
19313
19314 --13-Jun-11 sechawla 12653340 : begin
19315 --Use 'Billing' transaction type to fetch tax determinants for 'Evergreen' Billing
19316 OPEN l_trxtypename_csr(l_billingdtls_rec.try_id);
19317 FETCH l_trxtypename_csr into l_trx_type_name;
19318 CLOSE l_trxtypename_csr;
19319
19320 IF l_trx_type_name = 'Evergreen' THEN
19321 OPEN l_trxtypeid_csr('Billing');
19322 FETCH l_trxtypeid_csr into l_trx_type_id;
19323 IF l_trxtypeid_csr%FOUND THEN
19324 l_billingdtls_rec.try_id := l_trx_type_id;
19325 END IF;
19326 CLOSE l_trxtypeid_csr;
19327 END IF;
19328 --13-Jun-11 sechawla 12653340 : end
19329
19330 IF l_billingdtls_rec.qte_id IS NOT NULL THEN -- Invoice created for a quote
19331 OPEN l_trxquotes_csr(l_billingdtls_rec.qte_id);
19332 FETCH l_trxquotes_csr INTO l_qtp_code, l_qte_reason, l_early_term_yn;
19333 CLOSE l_trxquotes_csr;
19334 END IF;
19335
19336 IF l_billingdtls_rec.sty_id IS NOT NULL THEN
19337 OPEN l_strmtype_csr(l_billingdtls_rec.sty_id);
19338 FETCH l_strmtype_csr INTO l_purpose_code;
19339 CLOSE l_strmtype_csr;
19340 END IF;
19341
19342 l_product_type := G_SERVICES;
19343 l_def_tax_country := get_default_taxation_country(x_return_status => x_return_status,
19344 x_msg_count => x_msg_count,
19345 x_msg_data => x_msg_data,
19346 p_legal_entity_id => l_billingdtls_rec.legal_entity_id);
19347 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19348 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19349 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19350 RAISE OKL_API.G_EXCEPTION_ERROR;
19351 END IF;
19352
19353 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19354 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19355 ' l_qtp_code :'||l_qtp_code);
19356 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19357 ' l_qte_reason :'||l_qte_reason);
19358 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19359 ' l_early_term_yn :'||l_early_term_yn);
19360 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19361 ' l_purpose_code :'||l_purpose_code);
19362 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19363 ' l_def_tax_country :'||l_def_tax_country);
19364 END IF;
19365
19366 l_reporting_flag := 'Y';
19367
19368 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19369 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19370 'Call to (Billing, Credit Memo, Rollover Billing, Rollover Credit Memo,
19371 Release Billing, Release Credit Memo) .. ');
19372 END IF;
19373 -- get header level tax parameters
19374 get_k_hdr_tax_params( p_api_version => p_api_version,
19375 p_init_msg_list => p_init_msg_list,
19376 x_return_status => x_return_status,
19377 x_msg_count => x_msg_count,
19378 x_msg_data => x_msg_data,
19379 p_khr_id => l_billingdtls_rec.khr_id,
19380 p_source_trx_name => p_source_trx_name,
19381 p_source_table => p_source_table,
19382 x_cust_acct_id => lx_cust_acct_id,
19383 x_bill_to_siteuseid => lx_bill_to_siteuseid,
19384 x_currency_code => lx_currency_code,
19385 x_cust_trx_type_id => lx_cust_trx_type_id,
19386 x_precision => lx_precision,
19387 x_minimum_accountable_unit => lx_minimum_accountable_unit,
19388 x_prch_opt_det => lx_pb_prch_opt_det,
19389 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
19390 x_int_disclosed_det => lx_pb_int_disclosed_det,
19391 x_org_id => lx_org_id,
19392 x_book_class_code => lx_book_class_code,
19393 x_bill_to_party_site_id => lx_bill_to_party_site_id,
19394 x_bill_to_party_id => lx_bill_to_party_id,
19395 x_bill_to_location_id => lx_bill_to_location_id,
19396 x_currency_conversion_type => lx_currency_conversion_type,
19397 x_currency_conversion_rate => lx_currency_conversion_rate,
19398 x_currency_conversion_date => lx_currency_conversion_date,
19399 x_contract_start_date => lx_contract_start_date);
19400 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19401 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19402 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19403 RAISE OKL_API.G_EXCEPTION_ERROR;
19404 END IF;
19405
19406 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19407 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19408 ' l_billingdtls_rec.khr_id :'||l_billingdtls_rec.khr_id);
19409 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19410 ' lx_cust_acct_id :'||lx_cust_acct_id);
19411 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19412 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
19413 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19414 ' lx_currency_code :'||lx_currency_code);
19415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19416 ' lx_cust_trx_type_id :'||lx_cust_trx_type_id);
19417 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19418 ' lx_precision :'||lx_precision);
19419 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19420 ' lx_minimum_accountable_unit :'||lx_minimum_accountable_unit);
19421 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19422 ' lx_pb_prch_opt_det :'||lx_pb_prch_opt_det);
19423 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19424 ' lx_pb_fin_prod_id_det :'||lx_pb_fin_prod_id_det);
19425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19426 ' lx_pb_int_disclosed_det :'||lx_pb_int_disclosed_det);
19427 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19428 ' lx_org_id :'||lx_org_id);
19429 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19430 ' lx_book_class_code :'||lx_book_class_code);
19431 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19432 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
19433 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19434 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
19435 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19436 ' lx_bill_to_location_id :'||l_def_tax_country);
19437 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19438 ' lx_currency_conversion_type :'||lx_currency_conversion_type);
19439 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19440 ' lx_currency_conversion_rate :'||lx_currency_conversion_rate);
19441 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19442 ' lx_currency_conversion_date :'||lx_currency_conversion_date);
19443 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19444 ' lx_contract_start_date :'||lx_contract_start_date);
19445 END IF;
19446
19447 -- Line level Invoice
19448 IF l_billingdtls_rec.kle_id IS NOT NULL THEN
19449
19450 OPEN l_okclinestyle_csr(l_billingdtls_rec.kle_id);
19451 FETCH l_okclinestyle_csr INTO l_line_type;
19452 CLOSE l_okclinestyle_csr;
19453
19454 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19455 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants',
19456 'line level inv '||' l_line_type = '||l_line_type);
19457 END IF;
19458
19459 IF l_line_type IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
19460
19461 l_asset_exists := TRUE;
19462
19463 -- For regular stream billing, l_line_type can have any of the above 3 values
19464 -- For transaction billing, l_line_type can only be FREE_FORM1
19465 OPEN l_okclines_csr(l_billingdtls_rec.kle_id);
19466 FETCH l_okclines_csr INTO l_name;
19467 CLOSE l_okclines_csr;
19468
19469 IF l_line_type = 'FREE_FORM1' THEN
19470 l_fin_asset_id := l_billingdtls_rec.kle_id;
19471 ELSE
19472 -- If subline level, get the attached fin asset id
19473 OPEN l_finasset_csr(l_billingdtls_rec.kle_id, l_line_type);
19474 FETCH l_finasset_csr INTO l_fin_asset_id;
19475 CLOSE l_finasset_csr;
19476 END IF;
19477
19478 -- Get the asset level determinants
19479 get_asset_tax_params(
19480 p_api_version => p_api_version,
19481 p_init_msg_list => p_init_msg_list,
19482 x_return_status => x_return_status,
19483 x_msg_count => x_msg_count,
19484 x_msg_data => x_msg_data,
19485 p_khr_id => l_billingdtls_rec.khr_id,
19486 p_kle_id => l_fin_asset_id,
19487 p_source_trx_name => p_source_trx_name,
19488 p_source_table => p_source_table,
19489 p_qtp_code => l_qtp_code,
19490 p_purpose_code => l_purpose_code,
19491 x_transfer_of_title => lx_transfer_of_title,
19492 x_sale_lease_back => lx_sale_lease_back,
19493 x_purchase_of_lease => lx_purchase_of_lease,
19494 x_usage_of_equipment => lx_usage_of_equipment,
19495 x_age_of_equipment => lx_age_of_equipment,
19496 x_vendor_site_id => lx_vendor_site_id);
19497 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19498 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19499 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19500 RAISE OKL_API.G_EXCEPTION_ERROR;
19501 END IF;
19502
19503 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19504 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19505 ' l_fin_asset_id :'||l_fin_asset_id);
19506 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19507 ' lx_transfer_of_title :'||lx_transfer_of_title);
19508 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19509 ' lx_sale_lease_back :'||lx_sale_lease_back);
19510 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19511 ' lx_purchase_of_lease :'||lx_purchase_of_lease);
19512 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19513 ' lx_usage_of_equipment :'||lx_usage_of_equipment);
19514 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19515 ' lx_age_of_equipment :'||lx_age_of_equipment);
19516 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19517 ' lx_vendor_site_id :'||lx_vendor_site_id);
19518 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19519 ' l_billingdtls_rec.qte_id :'||l_billingdtls_rec.qte_id);
19520 END IF;
19521
19522 -- Equipment Type(inventory item id)
19523 -- Get the inventory item id
19524 IF l_billingdtls_rec.qte_id IS NULL AND l_purpose_code = 'AMBSPR' THEN -- Remarketing billing
19525 l_product_type := G_GOODS;
19526
19527 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19528 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19529 ' AMBSPR ');
19530 END IF;
19531
19532 OPEN l_oeorderlines_csr(l_billingdtls_rec.isl_id);
19533 FETCH l_oeorderlines_csr INTO l_inv_item_id, l_inv_item_org_id, lx_ship_to_siteuseid;
19534 -- ship_to_org_id from oe_order_lines_all is the site_use_id value from hz_cust_site_uses_all
19535 -- which is the ship_to_site_use_id
19536 IF l_oeorderlines_csr%NOTFOUND THEN
19537 OKC_API.set_message( p_app_name => 'OKC',
19538 p_msg_name => G_INVALID_VALUE,
19539 p_token1 => G_COL_NAME_TOKEN,
19540 p_token1_value => 'ISL_ID');
19541 RAISE OKL_API.G_EXCEPTION_ERROR;
19542 END IF;
19543 CLOSE l_oeorderlines_csr;
19544
19545 ELSIF l_purpose_code = 'CURE' THEN -- vendor cure billing
19546
19547 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19548 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19549 ' CURE ');
19550 END IF;
19551
19552 l_inv_item_id := NULL;
19553 l_inv_item_org_id := NULL;
19554
19555 ELSE
19556 OPEN l_invitem_csr(l_fin_asset_id);
19557 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
19558 IF l_invitem_csr%NOTFOUND THEN
19559 OKL_API.set_message(
19560 p_app_name => 'OKL',
19561 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
19562 p_token1 => 'ASSET_NUMBER',
19563 p_token1_value => l_name);
19564
19565 RAISE OKL_API.G_EXCEPTION_ERROR;
19566 END IF;
19567 CLOSE l_invitem_csr;
19568 END IF;
19569
19570 -- At this point l_bill_to_siteuseid has Bill To of the K (derived in
19571 -- call to get_k_hdr_tax_params above)
19572 -- l_bill_to_siteuseid will be overridden below depending upon the
19573 -- type of invoice
19574 IF l_qtp_code LIKE 'REP%' OR l_purpose_code IN ('CURE','REPAIR_CHARGE') THEN
19575 -- Ship to is not applicable for Repurchase quote billing, vendor
19576 -- cure billing and asset repair billing
19577 lx_ship_to_siteuseid := NULL;
19578 IF l_qtp_code LIKE 'REP%' OR l_purpose_code = 'CURE' THEN
19579 IF l_billingdtls_rec.ibt_id IS NULL THEN
19580 OKL_API.set_message( p_app_name => 'OKL',
19581 p_msg_name => 'OKL_TX_NO_INV_BILL_TO');
19582
19583 RAISE OKL_API.G_EXCEPTION_ERROR;
19584
19585 ELSE
19586 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19587 END IF;
19588 ELSE -- asset repair invoice
19589 IF l_billingdtls_rec.ibt_id IS NOT NULL THEN
19590 -- ibt_id is populated if asset repair is billed to vendor
19591 -- If billed to lessee, ibt_id will be null. So use bill to from K
19592 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19593 END IF;
19594 END IF;
19595
19596 ELSIF l_purpose_code = 'AMBSPR' THEN -- Remarketing billing
19597 IF l_billingdtls_rec.ibt_id IS NULL THEN
19598 OKL_API.set_message( p_app_name => 'OKL',
19599 p_msg_name => 'OKL_TX_NO_INV_BILL_TO');
19600
19601 RAISE OKL_API.G_EXCEPTION_ERROR;
19602 ELSE
19603 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19604 END IF;
19605 --ship to (lx_ship_to_siteuseid) is already derived above for Remarketing billing
19606
19607 ELSE
19608
19609 -- get the Location Party ID's
19610 get_location_party_ids(
19611 p_api_version => p_api_version,
19612 p_init_msg_list => p_init_msg_list,
19613 x_return_status => x_return_status,
19614 x_msg_count => x_msg_count,
19615 x_msg_data => x_msg_data,
19616 p_cust_acct_id => lx_cust_acct_id,
19617 p_fin_asset_id => l_fin_asset_id,
19618 p_khr_id => l_billingdtls_rec.khr_id,
19619 x_bill_to_party_site_id => lx_bill_to_party_site_id,
19620 x_bill_to_location_id => lx_bill_to_location_id,
19621 x_bill_to_party_id => lx_bill_to_party_id,
19622 x_bill_to_site_use_id => lx_bill_to_siteuseid,
19623 x_ship_to_party_site_id => lx_ship_to_party_site_id,
19624 x_ship_to_location_id => lx_ship_to_location_id,
19625 x_ship_to_party_id => lx_ship_to_party_id,
19626 x_ship_to_site_use_id => lx_ship_to_siteuseid);
19627
19628 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19629 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19630 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19631 RAISE OKL_API.G_EXCEPTION_ERROR;
19632 END IF;
19633
19634 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19636 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
19637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19638 ' lx_bill_to_location_id :'||lx_bill_to_location_id);
19639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19640 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
19641 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19642 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
19643 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19644 ' lx_ship_to_party_site_id :'||lx_ship_to_party_site_id);
19645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19646 ' lx_ship_to_location_id :'||lx_ship_to_location_id);
19647 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19648 ' lx_ship_to_party_id :'||lx_ship_to_party_id);
19649 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19650 ' lx_ship_to_siteuseid :'||lx_ship_to_siteuseid);
19651 END IF;
19652
19653 END IF;
19654
19655 END IF;
19656 END IF;
19657
19658 -- Asset doesn't exist
19659 IF (NOT l_asset_exists) THEN
19660 lx_transfer_of_title := null;
19661 lx_sale_lease_back := null;
19662 lx_purchase_of_lease := null;
19663 lx_usage_of_equipment := null;
19664 lx_age_of_equipment := null;
19665 lx_vendor_site_id := null;
19666 lx_ship_to_party_site_id := null;
19667 lx_ship_to_location_id := null;
19668 lx_ship_to_party_id := null;
19669 lx_ship_to_siteuseid := null;
19670 l_inv_item_id := null;
19671 l_inv_item_org_id := null;
19672 l_fin_asset_id := null;
19673 END IF;
19674
19675 -- Get TBC code
19676 get_tbc_code(p_api_version => p_api_version,
19677 p_init_msg_list => p_init_msg_list,
19678 x_return_status => x_return_status,
19679 x_msg_count => x_msg_count,
19680 x_msg_data => x_msg_data,
19681 p_sty_id => l_billingdtls_rec.sty_id,
19682 p_try_id => l_billingdtls_rec.try_id,
19683 p_book_class_code => lx_book_class_code,
19684 p_tax_country_code => l_def_tax_country,
19685 x_tbc_code => lx_tbc_code);
19686
19687 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19688 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19689 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19690 RAISE OKL_API.G_EXCEPTION_ERROR;
19691 END IF;
19692
19693 -- Validate TBC Code
19694 IF lx_tbc_code IS NOT NULL THEN
19695 validate_tax_code(
19696 p_api_version => p_api_version,
19697 p_init_msg_list => p_init_msg_list,
19698 x_return_status => x_return_status,
19699 x_msg_count => x_msg_count,
19700 x_msg_data => x_msg_data,
19701 p_trx_date => l_billingdtls_rec.date_invoiced,
19702 p_tbc_code => lx_tbc_code,
19703 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19704
19705 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19706 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19707 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19708 RAISE OKL_API.G_EXCEPTION_ERROR;
19709 END IF;
19710 END IF;
19711
19712 IF (lx_tbc_code IS NULL OR lx_tax_valid_code = 'F') THEN
19713 lx_tbc_code := 'SALES_TRANSACTION';
19714 END IF;
19715
19716 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19717 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19718 'lx_tbc_code '||lx_tbc_code);
19719 END IF;
19720
19721 -- Get PC code
19722 get_pc_code(p_api_version => p_api_version,
19723 p_init_msg_list => p_init_msg_list,
19724 x_return_status => x_return_status,
19725 x_msg_count => x_msg_count,
19726 x_msg_data => x_msg_data,
19727 p_sty_id => l_billingdtls_rec.sty_id,
19728 p_purchase_option_code => lx_pb_prch_opt_det,
19729 p_int_disclosed_code => lx_pb_int_disclosed_det,
19730 p_title_trnsfr_code => lx_transfer_of_title,
19731 p_sale_lease_back_code => lx_sale_lease_back,
19732 p_lease_purchased_code => lx_purchase_of_lease,
19733 p_tax_country_code => l_def_tax_country,
19734 x_pc_code => lx_pc_code);
19735 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19736 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19737 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19738 RAISE OKL_API.G_EXCEPTION_ERROR;
19739 END IF;
19740
19741 -- Validate PC Code
19742 IF lx_pc_code IS NOT NULL THEN
19743 validate_tax_code(
19744 p_api_version => p_api_version,
19745 p_init_msg_list => p_init_msg_list,
19746 x_return_status => x_return_status,
19747 x_msg_count => x_msg_count,
19748 x_msg_data => x_msg_data,
19749 p_trx_date => l_billingdtls_rec.date_invoiced,
19750 p_pc_code => lx_pc_code,
19751 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19752
19753 IF (lx_tax_valid_code = 'F') THEN
19754 lx_pc_code := null;
19755 END IF;
19756
19757 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19758 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19759 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19760 RAISE OKL_API.G_EXCEPTION_ERROR;
19761 END IF;
19762 END IF;
19763
19764 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19765 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19766 'lx_pc_code '||lx_pc_code);
19767 END IF;
19768
19769 -- Get UFC code
19770 get_ufc_code(p_api_version => p_api_version,
19771 p_init_msg_list => p_init_msg_list,
19772 x_return_status => x_return_status,
19773 x_msg_count => x_msg_count,
19774 x_msg_data => x_msg_data,
19775 p_purchase_option => lx_pb_prch_opt_det,
19776 p_fin_product_id => lx_pb_fin_prod_id_det,
19777 p_try_id => l_billingdtls_rec.try_id,
19778 p_sty_id => l_billingdtls_rec.sty_id,
19779 p_int_disclosed_code => lx_pb_int_disclosed_det,
19780 p_title_trnsfr_code => lx_transfer_of_title,
19781 p_sale_lease_back_code => lx_sale_lease_back,
19782 p_lease_purchased_code => lx_purchase_of_lease,
19783 p_equip_usage_code => lx_usage_of_equipment ,
19784 p_vendor_site_id => lx_vendor_site_id,
19785 p_age_of_equip => lx_age_of_equipment,
19786 p_term_quote_type_code => null,
19787 p_term_quote_reason_code => null,
19788 p_tax_country_code => l_def_tax_country,
19789 x_ufc_code => lx_ufc_code);
19790 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19791 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19792 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19793 RAISE OKL_API.G_EXCEPTION_ERROR;
19794 END IF;
19795
19796 -- Validate UFC Code
19797 IF lx_ufc_code IS NOT NULL THEN
19798 validate_tax_code(
19799 p_api_version => p_api_version,
19800 p_init_msg_list => p_init_msg_list,
19801 x_return_status => x_return_status,
19802 x_msg_count => x_msg_count,
19803 x_msg_data => x_msg_data,
19804 p_trx_date => l_billingdtls_rec.date_invoiced,
19805 p_ufc_code => lx_ufc_code,
19806 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19807
19808 IF (lx_tax_valid_code = 'F') THEN
19809 lx_ufc_code := null;
19810 END IF;
19811
19812 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19813 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19814 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19815 RAISE OKL_API.G_EXCEPTION_ERROR;
19816 END IF;
19817 END IF;
19818
19819 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19820 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19821 'lx_ufc_code '||lx_ufc_code);
19822 END IF;
19823
19824 -- Get the tax classification code
19825 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19826 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19827 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
19828 END IF;
19829
19830 -- Get Set of Books ID
19831 OPEN c_get_set_of_books_id(cp_org_id => lx_org_id);
19832 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
19833 CLOSE c_get_set_of_books_id;
19834
19835 IF p_source_trx_name IN ('Billing', 'Rollover Billing', 'Release Billing') THEN
19836 l_event_class_code := G_INVOICE_EVENT_CLASS_CODE;
19837 ELSIF p_source_trx_name IN ('Credit Memo', 'Rollover Credit Memo', 'Release Credit Memo') THEN
19838 l_event_class_code := G_CRE_MEM_EVENT_CLASS_CODE;
19839 END IF;
19840
19841 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
19842 x_return_status => x_return_status,
19843 p_ship_to_site_use_id => lx_ship_to_siteuseid,
19844 p_bill_to_site_use_id => lx_bill_to_siteuseid,
19845 p_inventory_item_id => l_inv_item_id,
19846 p_organization_id => lx_org_id,
19847 p_set_of_books_id => l_set_of_books_id,
19848 p_trx_date => l_billingdtls_rec.date_invoiced,
19849 p_trx_type_id => null,
19850 p_entity_code => G_AR_ENTITY_CODE,
19851 p_event_class_code => l_event_class_code,
19852 p_application_id => G_AR_APPLICATION_ID,
19853 p_internal_organization_id => lx_org_id,
19854 x_tax_classification_code => lx_tax_classification_code );
19855
19856 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19857 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19858 'Return Status '|| x_return_status);
19859
19860 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19861 'lx_tax_classification_code '|| lx_tax_classification_code);
19862 END IF;
19863
19864 -- Check if taxable basis override applies to Billing / Credit Memo
19865 OPEN l_txbasisoverride_csr(l_billingdtls_rec.try_id);
19866 FETCH l_txbasisoverride_csr INTO l_fma_id;
19867 CLOSE l_txbasisoverride_csr;
19868
19869 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19870 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19871 ' l_fma_id :'||l_fma_id);
19872 END IF;
19873
19874 IF l_fma_id IS NOT NULL THEN
19875 OPEN l_formulae_csr(l_fma_id);
19876 FETCH l_formulae_csr INTO l_formula_name;
19877
19878 IF l_formulae_csr%NOTFOUND THEN
19879 OKC_API.set_message( p_app_name => 'OKC',
19880 p_msg_name => G_INVALID_VALUE,
19881 p_token1 => G_COL_NAME_TOKEN,
19882 p_token1_value => 'FMA_ID');
19883 RAISE OKL_API.G_EXCEPTION_ERROR;
19884 END IF;
19885 CLOSE l_formulae_csr;
19886
19887 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19888 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19889 'l_formula_name '||l_formula_name );
19890 END IF;
19891
19892 -- execute tax basis override formula, pass tax determinants
19893 l_add_params(1).name := 'PURCHASE_OPTION';
19894 l_add_params(1).value := lx_pb_prch_opt_det;
19895
19896 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
19897 l_add_params(2).value := lx_pb_fin_prod_id_det;
19898
19899 l_add_params(3).name := 'TRX_TYPE_ID';
19900 l_add_params(3).value := l_billingdtls_rec.try_id;
19901
19902 l_add_params(4).name := 'STREAM_TYPE_ID';
19903 l_add_params(4).value := l_billingdtls_rec.sty_id;
19904
19905 l_add_params(5).name := 'INTEREST_DISCLOSED';
19906 l_add_params(5).value := lx_pb_int_disclosed_det;
19907
19908 l_add_params(6).name := 'TRANSFER_OF_TITLE';
19909 l_add_params(6).value := lx_transfer_of_title;
19910
19911 l_add_params(7).name := 'SALE_LEASE_BACK';
19912 l_add_params(7).value := lx_sale_lease_back;
19913
19914 l_add_params(8).name := 'PURCHASE_OF_LEASE';
19915 l_add_params(8).value := lx_purchase_of_lease;
19916
19917 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
19918 l_add_params(9).value := lx_usage_of_equipment;
19919
19920 l_add_params(10).name := 'VENDOR_SITE_ID';
19921 l_add_params(10).value := lx_vendor_site_id;
19922
19923 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
19924 l_add_params(11).value := lx_age_of_equipment;
19925
19926 l_add_params(12).name := 'BOOK_CLASS';
19927 l_add_params(12).value := lx_book_class_code;
19928
19929 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
19930 l_add_params(13).value := lx_bill_to_party_site_id;
19931
19932 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
19933 l_add_params(14).value := lx_bill_to_location_id;
19934
19935 l_add_params(15).name := 'BILL_TO_PARTY_ID';
19936 l_add_params(15).value := lx_bill_to_party_id;
19937
19938 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
19939 l_add_params(16).value := null;
19940
19941 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
19942 l_add_params(17).value := null;
19943
19944 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
19945 l_add_params(18).value := null;
19946
19947 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
19948 l_add_params(19).value := lx_bill_to_siteuseid;
19949
19950 l_add_params(20).name := 'INVENTORY_ITEM_ID';
19951 l_add_params(20).value := l_inv_item_id;
19952
19953 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
19954 l_add_params(21).value := lx_ship_to_siteuseid;
19955
19956 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
19957 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
19958 l_add_params(22).name := 'LINE_NAME';
19959 l_add_params(22).value := Null; -- Line name is not relevant for billing and disbursement type of calls
19960
19961 l_add_params(23).name := 'SOURCE_TRX_NAME';
19962 l_add_params(23).value := p_source_trx_name;
19963
19964 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
19965 l_add_params(24).value := l_billingdtls_rec.amount;
19966 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
19967
19968 okl_am_util_pvt.get_formula_value( p_formula_name => l_formula_name,
19969 p_chr_id => l_billingdtls_rec.khr_id,
19970 p_cle_id => l_fin_asset_id,
19971 p_additional_parameters => l_add_params,
19972 x_formula_value => lx_assessable_value,
19973 x_return_status => x_return_status);
19974
19975 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
19976 OKL_API.init_msg_list('T');
19977 OKL_API.set_message(p_app_name => 'OKL',
19978 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
19979 p_token1 => 'FMA_NAME',
19980 p_token1_value => l_formula_name,
19981 p_token2 => 'TRX_NAME ',
19982 p_token2_value => p_source_trx_name);
19983 RAISE OKL_API.G_EXCEPTION_ERROR;
19984 END IF;
19985
19986 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19987 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19988 'calculated l_assessable_value '||lx_assessable_value);
19989 END IF;
19990
19991 ELSE
19992 lx_assessable_value := l_billingdtls_rec.amount;
19993 END IF; --IF l_fma_id IS NOT NULL THEN
19994
19995 x_tax_det_rec.x_tax_code := lx_tax_classification_code;
19996 x_tax_det_rec.x_trx_business_category := lx_tbc_code;
19997 x_tax_det_rec.x_product_category := lx_pc_code;
19998 x_tax_det_rec.x_product_type := l_product_type;
19999 x_tax_det_rec.x_line_intended_use := lx_usage_of_equipment;
20000 x_tax_det_rec.x_user_defined_fisc_class := lx_ufc_code;
20001 x_tax_det_rec.x_assessable_value := lx_assessable_value;
20002 x_tax_det_rec.x_default_taxation_country := l_def_tax_country;
20003 x_tax_det_rec.x_upstream_trx_reported_flag := l_reporting_flag;
20004
20005 ELSIF p_source_trx_name IN ('Funding', 'Disbursement', 'Debit Memo') THEN
20006
20007 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20008 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20009 'Call to (Funding, Disbursement, Debit Memo) .. ');
20010 END IF;
20011
20012 -- Validate source trx id
20013 OPEN l_disbdtls_csr(p_source_trx_id);
20014 FETCH l_disbdtls_csr INTO l_disbdtls_rec;
20015 IF l_disbdtls_csr %NOTFOUND THEN
20016 OKC_API.set_message( p_app_name => 'OKC',
20017 p_msg_name => G_INVALID_VALUE,
20018 p_token1 => G_COL_NAME_TOKEN,
20019 p_token1_value => 'SOURCE_TRX_ID');
20020 RAISE OKL_API.G_EXCEPTION_ERROR;
20021 END IF;
20022 CLOSE l_disbdtls_csr;
20023
20024 IF (l_disbdtls_rec.ipvs_id IS NOT NULL) THEN
20025 OPEN l_get_vendor_csr(l_disbdtls_rec.ipvs_id);
20026 FETCH l_get_vendor_csr INTO l_vendor_id;
20027 CLOSE l_get_vendor_csr;
20028 END IF;
20029
20030 IF l_disbdtls_rec.qte_id IS NOT NULL THEN -- Invoice created for a quote
20031 OPEN l_trxquotes_csr(l_disbdtls_rec.qte_id);
20032 FETCH l_trxquotes_csr INTO l_qtp_code, l_qte_reason, l_early_term_yn;
20033 CLOSE l_trxquotes_csr;
20034 END IF;
20035
20036 IF l_disbdtls_rec.sty_id IS NOT NULL THEN
20037 OPEN l_strmtype_csr(l_disbdtls_rec.sty_id);
20038 FETCH l_strmtype_csr INTO l_purpose_code;
20039 CLOSE l_strmtype_csr;
20040 END IF;
20041
20042 l_product_type := G_SERVICES;
20043 l_def_tax_country := get_default_taxation_country(x_return_status => x_return_status,
20044 x_msg_count => x_msg_count,
20045 x_msg_data => x_msg_data,
20046 p_legal_entity_id => l_disbdtls_rec.legal_entity_id);
20047 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20048 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20049 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20050 RAISE OKL_API.G_EXCEPTION_ERROR;
20051 END IF;
20052
20053 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20054 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20055 ' l_qtp_code :'||l_qtp_code);
20056 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20057 ' l_qte_reason :'||l_qte_reason);
20058 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20059 ' l_early_term_yn :'||l_early_term_yn);
20060 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20061 ' l_purpose_code :'||l_purpose_code);
20062 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20063 ' l_def_tax_country :'||l_def_tax_country);
20064 END IF;
20065
20066 -- get header level tax parameters
20067 get_k_hdr_tax_params( p_api_version => p_api_version,
20068 p_init_msg_list => p_init_msg_list,
20069 x_return_status => x_return_status,
20070 x_msg_count => x_msg_count,
20071 x_msg_data => x_msg_data,
20072 p_khr_id => l_disbdtls_rec.khr_id,
20073 p_source_trx_name => p_source_trx_name,
20074 p_source_table => p_source_table,
20075 x_cust_acct_id => lx_cust_acct_id,
20076 x_bill_to_siteuseid => lx_bill_to_siteuseid,
20077 x_currency_code => lx_currency_code,
20078 x_cust_trx_type_id => lx_cust_trx_type_id,
20079 x_precision => lx_precision,
20080 x_minimum_accountable_unit => lx_minimum_accountable_unit,
20081 x_prch_opt_det => lx_pb_prch_opt_det,
20082 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
20083 x_int_disclosed_det => lx_pb_int_disclosed_det,
20084 x_org_id => lx_org_id,
20085 x_book_class_code => lx_book_class_code,
20086 x_bill_to_party_site_id => lx_bill_to_party_site_id,
20087 x_bill_to_party_id => lx_bill_to_party_id,
20088 x_bill_to_location_id => lx_bill_to_location_id,
20089 x_currency_conversion_type => lx_currency_conversion_type,
20090 x_currency_conversion_rate => lx_currency_conversion_rate,
20091 x_currency_conversion_date => lx_currency_conversion_date,
20092 x_contract_start_date => lx_contract_start_date);
20093 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20094 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20095 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20096 RAISE OKL_API.G_EXCEPTION_ERROR;
20097 END IF;
20098
20099 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20100 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20101 ' l_billingdtls_rec.khr_id :'||l_billingdtls_rec.khr_id);
20102 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20103 ' lx_cust_acct_id :'||lx_cust_acct_id);
20104 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20105 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
20106 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20107 ' lx_currency_code :'||lx_currency_code);
20108 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20109 ' lx_cust_trx_type_id :'||lx_cust_trx_type_id);
20110 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20111 ' lx_precision :'||lx_precision);
20112 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20113 ' lx_minimum_accountable_unit :'||lx_minimum_accountable_unit);
20114 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20115 ' lx_pb_prch_opt_det :'||lx_pb_prch_opt_det);
20116 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20117 ' lx_pb_fin_prod_id_det :'||lx_pb_fin_prod_id_det);
20118 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20119 ' lx_pb_int_disclosed_det :'||lx_pb_int_disclosed_det);
20120 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20121 ' lx_org_id :'||lx_org_id);
20122 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20123 ' lx_book_class_code :'||lx_book_class_code);
20124 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20125 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
20126 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20127 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
20128 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20129 ' lx_bill_to_location_id :'||l_def_tax_country);
20130 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20131 ' lx_currency_conversion_type :'||lx_currency_conversion_type);
20132 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20133 ' lx_currency_conversion_rate :'||lx_currency_conversion_rate);
20134 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20135 ' lx_currency_conversion_date :'||lx_currency_conversion_date);
20136 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20137 ' lx_contract_start_date :'||lx_contract_start_date);
20138 END IF;
20139
20140 -- Line level Invoice
20141 IF l_disbdtls_rec.kle_id IS NOT NULL THEN
20142
20143 OPEN l_okclinestyle_csr(l_disbdtls_rec.kle_id);
20144 FETCH l_okclinestyle_csr INTO l_line_type;
20145 CLOSE l_okclinestyle_csr;
20146
20147 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20148 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants',
20149 'line level inv '||' l_line_type = '||l_line_type);
20150 END IF;
20151
20152 IF l_line_type IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
20153
20154 l_asset_exists := TRUE;
20155
20156 -- For regular stream billing, l_line_type can have any of the above 3 values
20157 -- For transaction billing, l_line_type can only be FREE_FORM1
20158 OPEN l_okclines_csr(l_disbdtls_rec.kle_id);
20159 FETCH l_okclines_csr INTO l_name;
20160 CLOSE l_okclines_csr;
20161
20162 IF l_line_type = 'FREE_FORM1' THEN
20163 l_fin_asset_id := l_disbdtls_rec.kle_id;
20164 ELSE
20165 -- If subline level, get the attached fin asset id
20166 OPEN l_finasset_csr(l_disbdtls_rec.kle_id, l_line_type);
20167 FETCH l_finasset_csr INTO l_fin_asset_id;
20168 CLOSE l_finasset_csr;
20169 END IF;
20170
20171 -- Get the asset level determinants
20172 get_asset_tax_params(
20173 p_api_version => p_api_version,
20174 p_init_msg_list => p_init_msg_list,
20175 x_return_status => x_return_status,
20176 x_msg_count => x_msg_count,
20177 x_msg_data => x_msg_data,
20178 p_khr_id => l_disbdtls_rec.khr_id,
20179 p_kle_id => l_fin_asset_id,
20180 p_source_trx_name => p_source_trx_name,
20181 p_source_table => p_source_table,
20182 p_qtp_code => l_qtp_code,
20183 p_purpose_code => l_purpose_code,
20184 x_transfer_of_title => lx_transfer_of_title,
20185 x_sale_lease_back => lx_sale_lease_back,
20186 x_purchase_of_lease => lx_purchase_of_lease,
20187 x_usage_of_equipment => lx_usage_of_equipment,
20188 x_age_of_equipment => lx_age_of_equipment,
20189 x_vendor_site_id => lx_vendor_site_id);
20190 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20191 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20192 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20193 RAISE OKL_API.G_EXCEPTION_ERROR;
20194 END IF;
20195
20196 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20197 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20198 ' l_fin_asset_id :'||l_fin_asset_id);
20199 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20200 ' lx_transfer_of_title :'||lx_transfer_of_title);
20201 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20202 ' lx_sale_lease_back :'||lx_sale_lease_back);
20203 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20204 ' lx_purchase_of_lease :'||lx_purchase_of_lease);
20205 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20206 ' lx_usage_of_equipment :'||lx_usage_of_equipment);
20207 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20208 ' lx_age_of_equipment :'||lx_age_of_equipment);
20209 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20210 ' lx_vendor_site_id :'||lx_vendor_site_id);
20211 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20212 ' l_billingdtls_rec.qte_id :'||l_billingdtls_rec.qte_id);
20213 END IF;
20214
20215 -- Get the inventory item id
20216 OPEN l_invitem_csr(l_fin_asset_id);
20217 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
20218 IF l_invitem_csr%NOTFOUND THEN
20219 OKL_API.set_message(
20220 p_app_name => 'OKL',
20221 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
20222 p_token1 => 'ASSET_NUMBER',
20223 p_token1_value => l_name);
20224
20225 RAISE OKL_API.G_EXCEPTION_ERROR;
20226 END IF;
20227 CLOSE l_invitem_csr;
20228
20229 END IF;
20230 END IF;
20231
20232 -- Asset doesn't exist
20233 IF (NOT l_asset_exists) THEN
20234 lx_transfer_of_title := null;
20235 lx_sale_lease_back := null;
20236 lx_purchase_of_lease := null;
20237 lx_usage_of_equipment := null;
20238 lx_age_of_equipment := null;
20239 lx_vendor_site_id := null;
20240 lx_ship_to_party_site_id := null;
20241 lx_ship_to_location_id := null;
20242 lx_ship_to_party_id := null;
20243 lx_ship_to_siteuseid := null;
20244 l_inv_item_id := null;
20245 l_inv_item_org_id := null;
20246 l_fin_asset_id := null;
20247 END IF;
20248
20249 -- Get TBC code
20250 get_tbc_code(p_api_version => p_api_version,
20251 p_init_msg_list => p_init_msg_list,
20252 x_return_status => x_return_status,
20253 x_msg_count => x_msg_count,
20254 x_msg_data => x_msg_data,
20255 p_sty_id => l_disbdtls_rec.sty_id,
20256 p_try_id => l_disbdtls_rec.try_id,
20257 p_book_class_code => lx_book_class_code,
20258 p_tax_country_code => l_def_tax_country,
20259 x_tbc_code => lx_tbc_code);
20260
20261 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20262 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20263 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20264 RAISE OKL_API.G_EXCEPTION_ERROR;
20265 END IF;
20266
20267 -- Validate TBC Code
20268 IF lx_tbc_code IS NOT NULL THEN
20269 validate_tax_code(
20270 p_api_version => p_api_version,
20271 p_init_msg_list => p_init_msg_list,
20272 x_return_status => x_return_status,
20273 x_msg_count => x_msg_count,
20274 x_msg_data => x_msg_data,
20275 p_trx_date => l_disbdtls_rec.date_invoiced,
20276 p_tbc_code => lx_tbc_code,
20277 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
20278
20279 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20280 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20281 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20282 RAISE OKL_API.G_EXCEPTION_ERROR;
20283 END IF;
20284 END IF;
20285
20286 IF (lx_tbc_code IS NULL OR lx_tax_valid_code = 'F') THEN
20287 lx_tbc_code := 'PURCHASE_TRANSACTION';
20288 END IF;
20289
20290 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20291 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20292 'lx_tbc_code '||lx_tbc_code);
20293 END IF;
20294
20295 -- Get the tax classification code
20296 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20297 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20298 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
20299 END IF;
20300
20301 -- Get Set of Books ID
20302 OPEN c_get_set_of_books_id(cp_org_id => lx_org_id);
20303 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
20304 CLOSE c_get_set_of_books_id;
20305
20306 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
20307 x_return_status => x_return_status,
20308 p_ship_to_site_use_id => lx_ship_to_siteuseid,
20309 p_bill_to_site_use_id => lx_bill_to_siteuseid,
20310 p_inventory_item_id => l_inv_item_id,
20311 p_organization_id => lx_org_id,
20312 p_set_of_books_id => l_set_of_books_id,
20313 p_trx_date => l_disbdtls_rec.date_invoiced,
20314 p_trx_type_id => null,
20315 p_entity_code => G_AP_ENTITY_CODE,
20316 p_event_class_code => G_AP_EVENT_CLASS_CODE,
20317 p_application_id => G_AP_APPLICATION_ID,
20318 p_internal_organization_id => lx_org_id,
20319 p_vendor_id => l_vendor_id,
20320 p_vendor_site_id => l_disbdtls_rec.ipvs_id,
20321 x_tax_classification_code => lx_tax_classification_code );
20322
20323 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20324 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20325 'Return Status '|| x_return_status);
20326 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20327 'lx_tax_classification_code = '|| lx_tax_classification_code);
20328 END IF;
20329
20330 OPEN l_txbasisoverride_csr(l_disbdtls_rec.try_id);
20331 FETCH l_txbasisoverride_csr INTO l_fma_id;
20332 CLOSE l_txbasisoverride_csr;
20333
20334 IF l_fma_id IS NOT NULL THEN
20335 OPEN l_formulae_csr(l_fma_id);
20336 FETCH l_formulae_csr INTO l_formula_name;
20337
20338 IF l_formulae_csr%NOTFOUND THEN
20339 OKC_API.set_message( p_app_name => 'OKC',
20340 p_msg_name => G_INVALID_VALUE,
20341 p_token1 => G_COL_NAME_TOKEN,
20342 p_token1_value => 'FMA_ID');
20343 RAISE OKL_API.G_EXCEPTION_ERROR;
20344 END IF;
20345 CLOSE l_formulae_csr;
20346
20347 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20348 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20349 'l_formula_name '||l_formula_name );
20350 END IF;
20351
20352 -- execute tax basis override formula, pass tax determinants
20353 l_add_params(1).name := 'PURCHASE_OPTION';
20354 l_add_params(1).value := lx_pb_prch_opt_det;
20355
20356 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
20357 l_add_params(2).value := lx_pb_fin_prod_id_det;
20358
20359 l_add_params(3).name := 'TRX_TYPE_ID';
20360 l_add_params(3).value := l_disbdtls_rec.try_id;
20361
20362 l_add_params(4).name := 'STREAM_TYPE_ID';
20363 l_add_params(4).value := l_disbdtls_rec.sty_id;
20364
20365 l_add_params(5).name := 'INTEREST_DISCLOSED';
20366 l_add_params(5).value := lx_pb_int_disclosed_det;
20367
20368 l_add_params(6).name := 'TRANSFER_OF_TITLE';
20369 l_add_params(6).value := lx_transfer_of_title;
20370
20371 l_add_params(7).name := 'SALE_LEASE_BACK';
20372 l_add_params(7).value := lx_sale_lease_back;
20373
20374 l_add_params(8).name := 'PURCHASE_OF_LEASE';
20375 l_add_params(8).value := lx_purchase_of_lease;
20376
20377 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
20378 l_add_params(9).value := lx_usage_of_equipment;
20379
20380 l_add_params(10).name := 'VENDOR_SITE_ID';
20381 l_add_params(10).value := lx_vendor_site_id;
20382
20383 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
20384 l_add_params(11).value := lx_age_of_equipment;
20385
20386 l_add_params(12).name := 'BOOK_CLASS';
20387 l_add_params(12).value := lx_book_class_code;
20388
20389 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
20390 l_add_params(13).value := lx_bill_to_party_site_id;
20391
20392 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
20393 l_add_params(14).value := lx_bill_to_location_id;
20394
20395 l_add_params(15).name := 'BILL_TO_PARTY_ID';
20396 l_add_params(15).value := lx_bill_to_party_id;
20397
20398 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
20399 l_add_params(16).value := null;
20400
20401 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
20402 l_add_params(17).value := null;
20403
20404 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
20405 l_add_params(18).value := null;
20406
20407 -- Directly Mapped
20408 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
20409 l_add_params(19).value := lx_bill_to_siteuseid;
20410
20411 l_add_params(20).name := 'INVENTORY_ITEM_ID';
20412 l_add_params(20).value := l_inv_item_id;
20413
20414 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
20415 l_add_params(21).value := lx_ship_to_siteuseid;
20416
20417 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
20418 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
20419 l_add_params(22).name := 'LINE_NAME';
20420 l_add_params(22).value := Null; -- Line name is not relevant for billing and disbursement type of calls
20421
20422 l_add_params(23).name := 'SOURCE_TRX_NAME';
20423 l_add_params(23).value := p_source_trx_name;
20424
20425 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
20426 l_add_params(24).value := l_disbdtls_rec.amount;
20427 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
20428
20429
20430 okl_am_util_pvt.get_formula_value( p_formula_name => l_formula_name,
20431 p_chr_id => l_disbdtls_rec.khr_id,
20432 p_cle_id => l_fin_asset_id,
20433 p_additional_parameters => l_add_params,
20434 x_formula_value => lx_assessable_value,
20435 x_return_status => x_return_status);
20436
20437 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
20438 OKL_API.init_msg_list('T');
20439 OKL_API.set_message(p_app_name => 'OKL',
20440 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
20441 p_token1 => 'FMA_NAME',
20442 p_token1_value => l_formula_name,
20443 p_token2 => 'TRX_NAME ',
20444 p_token2_value => p_source_trx_name);
20445 RAISE OKL_API.G_EXCEPTION_ERROR;
20446 END IF;
20447
20448 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20449 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20450 'calculated l_assessable_value '||lx_assessable_value);
20451 END IF;
20452
20453 ELSE
20454 lx_assessable_value := l_disbdtls_rec.amount;
20455 END IF; --IF l_fma_id IS NOT NULL THEN
20456
20457 x_tax_det_rec.x_tax_code := lx_tax_classification_code;
20458 x_tax_det_rec.x_trx_business_category := lx_tbc_code;
20459 x_tax_det_rec.x_product_type := l_product_type;
20460 x_tax_det_rec.x_assessable_value := lx_assessable_value;
20461 x_tax_det_rec.x_default_taxation_country := l_def_tax_country;
20462 x_tax_det_rec.x_product_category := null;
20463 x_tax_det_rec.x_line_intended_use := null;
20464 x_tax_det_rec.x_user_defined_fisc_class := null;
20465 x_tax_det_rec.x_upstream_trx_reported_flag := null;
20466
20467 ELSE
20468 OKC_API.set_message( p_app_name => 'OKC',
20469 p_msg_name => G_INVALID_VALUE,
20470 p_token1 => G_COL_NAME_TOKEN,
20471 p_token1_value => 'SOURCE_TRX_NAME');
20472 RAISE OKL_API.G_EXCEPTION_ERROR;
20473 END IF;
20474
20475 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20476 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ','End(-)');
20477 END IF;
20478
20479 -- End the transaction
20480 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
20481
20482 EXCEPTION
20483 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20484
20485 IF (l_billingdtls_csr%ISOPEN) THEN
20486 CLOSE l_billingdtls_csr;
20487 END IF;
20488
20489 IF (l_trxquotes_csr%ISOPEN) THEN
20490 CLOSE l_trxquotes_csr;
20491 END IF;
20492
20493 IF (l_strmtype_csr%ISOPEN) THEN
20494 CLOSE l_strmtype_csr;
20495 END IF;
20496
20497 IF (l_okclinestyle_csr%ISOPEN) THEN
20498 CLOSE l_okclinestyle_csr;
20499 END IF;
20500
20501 IF (l_okclines_csr%ISOPEN) THEN
20502 CLOSE l_okclines_csr;
20503 END IF;
20504
20505 IF (l_finasset_csr%ISOPEN) THEN
20506 CLOSE l_finasset_csr;
20507 END IF;
20508
20509 IF (l_oeorderlines_csr%ISOPEN) THEN
20510 CLOSE l_oeorderlines_csr;
20511 END IF;
20512
20513 IF (l_invitem_csr%ISOPEN) THEN
20514 CLOSE l_invitem_csr;
20515 END IF;
20516
20517 IF (c_get_set_of_books_id%ISOPEN) THEN
20518 CLOSE c_get_set_of_books_id;
20519 END IF;
20520
20521 IF (l_txbasisoverride_csr%ISOPEN) THEN
20522 CLOSE l_txbasisoverride_csr;
20523 END IF;
20524
20525 IF (l_formulae_csr%ISOPEN) THEN
20526 CLOSE l_formulae_csr;
20527 END IF;
20528
20529 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20530 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20531 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20532 END IF;
20533
20534 x_return_status := OKL_API.HANDLE_EXCEPTIONS
20535 (
20536 l_api_name,
20537 G_PKG_NAME,
20538 'OKL_API.G_RET_STS_ERROR',
20539 x_msg_count,
20540 x_msg_data,
20541 '_PVT');
20542
20543 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20544
20545 IF (l_billingdtls_csr%ISOPEN) THEN
20546 CLOSE l_billingdtls_csr;
20547 END IF;
20548
20549 IF (l_trxquotes_csr%ISOPEN) THEN
20550 CLOSE l_trxquotes_csr;
20551 END IF;
20552
20553 IF (l_strmtype_csr%ISOPEN) THEN
20554 CLOSE l_strmtype_csr;
20555 END IF;
20556
20557 IF (l_okclinestyle_csr%ISOPEN) THEN
20558 CLOSE l_okclinestyle_csr;
20559 END IF;
20560
20561 IF (l_okclines_csr%ISOPEN) THEN
20562 CLOSE l_okclines_csr;
20563 END IF;
20564
20565 IF (l_finasset_csr%ISOPEN) THEN
20566 CLOSE l_finasset_csr;
20567 END IF;
20568
20569 IF (l_oeorderlines_csr%ISOPEN) THEN
20570 CLOSE l_oeorderlines_csr;
20571 END IF;
20572
20573 IF (l_invitem_csr%ISOPEN) THEN
20574 CLOSE l_invitem_csr;
20575 END IF;
20576
20577 IF (c_get_set_of_books_id%ISOPEN) THEN
20578 CLOSE c_get_set_of_books_id;
20579 END IF;
20580
20581 IF (l_txbasisoverride_csr%ISOPEN) THEN
20582 CLOSE l_txbasisoverride_csr;
20583 END IF;
20584
20585 IF (l_formulae_csr%ISOPEN) THEN
20586 CLOSE l_formulae_csr;
20587 END IF;
20588
20589 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20590 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20591 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20592 END IF;
20593
20594 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
20595 (
20596 l_api_name,
20597 G_PKG_NAME,
20598 'OKL_API.G_RET_STS_UNEXP_ERROR',
20599 x_msg_count,
20600 x_msg_data,
20601 '_PVT');
20602
20603 WHEN OTHERS THEN
20604
20605 IF (l_billingdtls_csr%ISOPEN) THEN
20606 CLOSE l_billingdtls_csr;
20607 END IF;
20608
20609 IF (l_trxquotes_csr%ISOPEN) THEN
20610 CLOSE l_trxquotes_csr;
20611 END IF;
20612
20613 IF (l_strmtype_csr%ISOPEN) THEN
20614 CLOSE l_strmtype_csr;
20615 END IF;
20616
20617 IF (l_okclinestyle_csr%ISOPEN) THEN
20618 CLOSE l_okclinestyle_csr;
20619 END IF;
20620
20621 IF (l_okclines_csr%ISOPEN) THEN
20622 CLOSE l_okclines_csr;
20623 END IF;
20624
20625 IF (l_finasset_csr%ISOPEN) THEN
20626 CLOSE l_finasset_csr;
20627 END IF;
20628
20629 IF (l_oeorderlines_csr%ISOPEN) THEN
20630 CLOSE l_oeorderlines_csr;
20631 END IF;
20632
20633 IF (l_invitem_csr%ISOPEN) THEN
20634 CLOSE l_invitem_csr;
20635 END IF;
20636
20637 IF (c_get_set_of_books_id%ISOPEN) THEN
20638 CLOSE c_get_set_of_books_id;
20639 END IF;
20640
20641 IF (l_txbasisoverride_csr%ISOPEN) THEN
20642 CLOSE l_txbasisoverride_csr;
20643 END IF;
20644
20645 IF (l_formulae_csr%ISOPEN) THEN
20646 CLOSE l_formulae_csr;
20647 END IF;
20648
20649 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20650 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20651 'EXCEPTION :'||sqlerrm);
20652 END IF;
20653
20654 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
20655 (
20656 l_api_name,
20657 G_PKG_NAME,
20658 'OTHERS',
20659 x_msg_count,
20660 x_msg_data,
20661 '_PVT');
20662
20663 -- End the transaction
20664 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
20665
20666 END get_tax_determinants;
20667
20668 /*========================================================================
20669 | PUBLIC FUNCTION get_default_taxation_country
20670 |
20671 | DESCRIPTION
20672 | This function is called by Tax component consumers to derive the default
20673 | taxation country based on legal entity
20674 |
20675 | CALLED FROM Tax consumers (Booking, Sales etc.,)
20676 |
20677 |
20678 | CALLS PROCEDURES/FUNCTIONS
20679 |
20680 |
20681 | PARAMETERS
20682 | p_legal_entity_id -- Legal Entity Identifier
20683 |
20684 | KNOWN ISSUES
20685 |
20686 | NOTES
20687 |
20688 |
20689 | MODIFICATION HISTORY
20690 | Date Author Description of Changes
20691 | 05-MAR-07 RRAVIKIR Created
20692 |
20693 *=======================================================================*/
20694 FUNCTION get_default_taxation_country(x_return_status OUT NOCOPY VARCHAR2,
20695 x_msg_count OUT NOCOPY NUMBER,
20696 x_msg_data OUT NOCOPY VARCHAR2,
20697 p_legal_entity_id IN NUMBER)
20698 RETURN VARCHAR2 IS
20699
20700 -- Local variables
20701 l_api_name CONSTANT VARCHAR2(30) := 'get_default_taxation_country';
20702 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
20703
20704 -- Local data structure
20705 lx_legal_entity_rec legal_entity_rec_type;
20706
20707 BEGIN
20708 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20709 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country','Begin(+)');
20710 END IF;
20711
20712 --Print Input Variables
20713 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20714 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country.',
20715 'p_legal_entity_id :'||p_legal_entity_id);
20716 END IF;
20717
20718 xle_utilities_grp.get_legalentity_info(x_return_status => l_return_status,
20719 x_msg_count => x_msg_count,
20720 x_msg_data => x_msg_data,
20721 p_party_id => null,
20722 p_legalentity_id => p_legal_entity_id,
20723 x_legalentity_info => lx_legal_entity_rec);
20724 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20725 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20726 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20727 RAISE OKL_API.G_EXCEPTION_ERROR;
20728 END IF;
20729
20730 x_return_status := l_return_status;
20731
20732 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20733 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ','End(-)');
20734 END IF;
20735
20736 RETURN lx_legal_entity_rec.country;
20737
20738 EXCEPTION
20739 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20740
20741 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20742 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20743 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20744 END IF;
20745
20746 x_return_status := OKL_API.G_RET_STS_ERROR;
20747
20748 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20749 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20750 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20751 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20752 END IF;
20753
20754 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
20755
20756 WHEN OTHERS THEN
20757
20758 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20759 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20760 'EXCEPTION :'||sqlerrm);
20761 END IF;
20762
20763 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
20764 -- unexpected error
20765 OKL_API.set_message(p_app_name => g_app_name,
20766 p_msg_name => g_unexpected_error,
20767 p_token1 => g_sqlcode_token,
20768 p_token1_value => sqlcode,
20769 p_token2 => g_sqlerrm_token,
20770 p_token2_value => sqlerrm);
20771
20772 END get_default_taxation_country;
20773
20774 /*========================================================================
20775 | PUBLIC FUNCTION get_line_intended_use_name
20776 |
20777 | DESCRIPTION
20778 | This function derives the line intended use name basing on the code
20779 |
20780 | CALLED FROM Sales objects
20781 |
20782 |
20783 | CALLS PROCEDURES/FUNCTIONS
20784 |
20785 |
20786 | PARAMETERS
20787 | p_intend_use_code -- Intended use for tax code
20788 |
20789 | KNOWN ISSUES
20790 |
20791 | NOTES
20792 |
20793 |
20794 | MODIFICATION HISTORY
20795 | Date Author Description of Changes
20796 | 05-MAR-07 RRAVIKIR Created
20797 |
20798 *=======================================================================*/
20799 FUNCTION get_line_intended_use_name(p_intend_use_code IN VARCHAR2)
20800 RETURN VARCHAR2 IS
20801
20802 -- Local variables
20803 l_intend_use_name VARCHAR2(240);
20804
20805 -- Cursors
20806 CURSOR l_get_intend_use_name_csr IS
20807 SELECT classification_name
20808 FROM zx_fc_intended_use_v
20809 WHERE classification_code = p_intend_use_code;
20810 BEGIN
20811 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20812 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name','Begin(+)');
20813 END IF;
20814
20815 --Print Input Variables
20816 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20817 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name.',
20818 'p_intend_use_code :'||p_intend_use_code);
20819 END IF;
20820
20821 OPEN l_get_intend_use_name_csr;
20822 FETCH l_get_intend_use_name_csr INTO l_intend_use_name;
20823 CLOSE l_get_intend_use_name_csr;
20824
20825 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20826 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ','End(-)');
20827 END IF;
20828
20829 RETURN l_intend_use_name;
20830
20831 EXCEPTION
20832 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20833
20834 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20835 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20836 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20837 END IF;
20838
20839 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20840 CLOSE l_get_intend_use_name_csr;
20841 END IF;
20842
20843 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20844 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20845 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20846 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20847 END IF;
20848
20849 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20850 CLOSE l_get_intend_use_name_csr;
20851 END IF;
20852
20853 WHEN OTHERS THEN
20854
20855 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20856 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20857 'EXCEPTION :'||sqlerrm);
20858 END IF;
20859
20860 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20861 CLOSE l_get_intend_use_name_csr;
20862 END IF;
20863
20864 END get_line_intended_use_name;
20865
20866 /*========================================================================
20867 | PUBLIC PROCEDURE cancel_document_tax
20868 |
20869 | DESCRIPTION
20870 | This procedure is called by 'Pre-Rebook' and 'Rebook' processes to cancel
20871 | the tax
20872 |
20873 | CALLED FROM OLM Rebook Module
20874 |
20875 |
20876 | CALLS PROCEDURES/FUNCTIONS
20877 |
20878 |
20879 | PARAMETERS
20880 | p_source_trx_id -- OKL_TRX_CONTRACTS.ID (ID of Pre-Rebook or Rebook transaction)
20881 | p_source_trx_name -- Pre-Rebook (used for upgrade) or Rebook
20882 | p_source_table -- OKL_TRX_CONTRACTS
20883 |
20884 | KNOWN ISSUES
20885 |
20886 | NOTES
20887 |
20888 |
20889 | MODIFICATION HISTORY
20890 | Date Author Description of Changes
20891 | 01-MAR-07 RRAVIKIR Created
20892 |
20893 *=======================================================================*/
20894 PROCEDURE cancel_document_tax (
20895 p_api_version IN NUMBER,
20896 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
20897 x_return_status OUT NOCOPY VARCHAR2,
20898 x_msg_count OUT NOCOPY NUMBER,
20899 x_msg_data OUT NOCOPY VARCHAR2,
20900 p_source_trx_id IN NUMBER,
20901 p_source_trx_name IN VARCHAR2,
20902 p_source_table IN VARCHAR2) IS
20903
20904 -- Local variables
20905 l_api_version CONSTANT NUMBER := 1;
20906 l_api_name CONSTANT VARCHAR2(30) := 'cancel_document_tax';
20907 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
20908
20909 l_internal_org_id NUMBER;
20910 l_application_id NUMBER;
20911 l_entity_code VARCHAR2(30);
20912 l_event_class_code VARCHAR2(30);
20913 i NUMBER;
20914
20915 -- Local record structure
20916 l_txsv_tbl txsv_tbl_type;
20917 lx_txsv_tbl txsv_tbl_type;
20918 l_transaction_rec transaction_rec_type;
20919
20920 -- Cursor
20921 -- This cursor wll pick all the tax sources coresponding to the Rebook validate transaction
20922 -- Rebook can be abandoned only prior to Rebook activation. Hence tax sources
20923 -- picked by this cursor will --be the ones created at the time of validation
20924 CURSOR l_taxsources_csr(cp_trx_id IN NUMBER) IS
20925 SELECT id, org_id, application_id, entity_code, event_class_code
20926 FROM okl_tax_sources
20927 WHERE trx_id = cp_trx_id
20928 AND application_id = G_OKL_APPLICATION_ID
20929 AND TAX_CALL_TYPE_CODE = G_UPFRONT_TAX
20930 AND TAX_LINE_STATUS_CODE = G_ACTIVE_STATUS;
20931
20932 CURSOR l_taxsources_prbk_csr(cp_trx_id IN NUMBER) IS
20933 SELECT id, org_id, entity_code, event_class_code
20934 FROM okl_tax_sources
20935 WHERE trx_id = cp_trx_id
20936 AND TAX_CALL_TYPE_CODE = G_UPFRONT_TAX
20937 AND TAX_LINE_STATUS_CODE = G_ACTIVE_STATUS;
20938
20939 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
20940 SELECT '1'
20941 FROM okl_trx_contracts a , okl_trx_types_tl b
20942 WHERE a.id = cp_trx_id
20943 AND a.try_id = b.id
20944 AND b.name = cp_trx_type_name
20945 AND language = 'US';
20946
20947 CURSOR l_trxcontracts_base_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
20948 SELECT '1'
20949 FROM okl_trx_contracts_all a , okl_trx_types_tl b
20950 WHERE a.id = cp_trx_id
20951 AND a.try_id = b.id
20952 AND b.name = cp_trx_type_name
20953 AND language = 'US';
20954
20955 BEGIN
20956 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20957 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax','Begin(+)');
20958 END IF;
20959
20960 --Print Input Variables
20961 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20962 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20963 'p_init_msg_list :'||p_init_msg_list);
20964 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20965 'p_source_trx_id :'||p_source_trx_id);
20966 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20967 'p_source_trx_name :'||p_source_trx_name);
20968 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20969 'p_source_table :'||p_source_table);
20970 END IF;
20971
20972 --Check API version, initialize message list and create savepoint.
20973 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
20974 G_PKG_NAME,
20975 p_init_msg_list,
20976 l_api_version,
20977 p_api_version,
20978 '_PVT',
20979 x_return_status);
20980
20981 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20982 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20983 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20984 RAISE OKL_API.G_EXCEPTION_ERROR;
20985 END IF;
20986
20987 -- Required Values
20988 IF p_source_trx_id IS NULL THEN
20989 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
20990 p_token1 => G_COL_NAME_TOKEN,
20991 p_token1_value => 'SOURCE_TRX_ID');
20992 RAISE OKL_API.G_EXCEPTION_ERROR;
20993 END IF;
20994
20995 -- validate the source trx id
20996 IF (p_source_trx_name = 'Pre-Rebook') THEN
20997 OPEN l_trxcontracts_base_csr(p_source_trx_id, p_source_trx_name);
20998 IF l_trxcontracts_base_csr%NOTFOUND THEN
20999 -- source trx id is invalid
21000 OKC_API.set_message( p_app_name => 'OKC',
21001 p_msg_name => G_INVALID_VALUE,
21002 p_token1 => G_COL_NAME_TOKEN,
21003 p_token1_value => 'SOURCE_TRX_ID');
21004 RAISE OKL_API.G_EXCEPTION_ERROR;
21005 END IF;
21006 CLOSE l_trxcontracts_base_csr;
21007 ELSIF (p_source_trx_name = 'Rebook') THEN
21008 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
21009 IF l_trxcontracts_csr%NOTFOUND THEN
21010 -- source trx id is invalid
21011 OKC_API.set_message( p_app_name => 'OKC',
21012 p_msg_name => G_INVALID_VALUE,
21013 p_token1 => G_COL_NAME_TOKEN,
21014 p_token1_value => 'SOURCE_TRX_ID');
21015 RAISE OKL_API.G_EXCEPTION_ERROR;
21016 END IF;
21017 CLOSE l_trxcontracts_csr;
21018 END IF;
21019
21020 IF (p_source_trx_name IN ('Pre-Rebook','Rebook')) THEN -- Main condition
21021 -- 'Pre-Rebook' condition is called as part of upgrade, to cancel pending
21022 -- rebook transactions cancel tax lines in OKL schema
21023
21024 -- 'Rebook' condition is called after the upgrade to cancel tax lines,
21025 -- when a rebook is abandoned cancel tax lines in OKL and ebTax schema
21026 -- Rebook validation tax call would have been made using transaction type
21027 -- 'Rebook' and event class 'BOOKING'
21028
21029 i := 1;
21030 IF (p_source_trx_name = 'Pre-Rebook') THEN
21031
21032 FOR l_taxsources_prbk_rec in l_taxsources_prbk_csr(cp_trx_id => p_source_trx_id) LOOP
21033
21034 UPDATE okl_tax_sources SET tax_line_status_code = G_CANCELLED_STATUS
21035 WHERE id = l_taxsources_prbk_rec.id;
21036
21037 END LOOP;
21038
21039 ELSIF (p_source_trx_name = 'Rebook') THEN
21040
21041 FOR l_taxsources_rec in l_taxsources_csr(cp_trx_id => p_source_trx_id) LOOP
21042
21043 l_txsv_tbl(i).id := l_taxsources_rec.id;
21044 l_txsv_tbl(i).tax_line_status_code := G_CANCELLED_STATUS;
21045
21046 IF (i = 1) THEN
21047 l_internal_org_id := l_taxsources_rec.org_id;
21048 l_application_id := l_taxsources_rec.application_id;
21049 l_entity_code := l_taxsources_rec.entity_code;
21050 l_event_class_code := l_taxsources_rec.event_class_code;
21051 END IF;
21052
21053 i := i + 1;
21054
21055 END LOOP;
21056
21057 END IF;
21058
21059 IF (i > 1 AND p_source_trx_name = 'Rebook') THEN -- Update Tax Sources
21060
21061 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21062 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
21063 'Calling OKL_TAX_SOURCES_PUB.update_tax_sources ');
21064 END IF;
21065
21066 OKL_TAX_SOURCES_PUB.update_tax_sources(p_api_version => p_api_version
21067 ,p_init_msg_list => p_init_msg_list
21068 ,x_return_status => l_return_status
21069 ,x_msg_count => x_msg_count
21070 ,x_msg_data => x_msg_data
21071 ,p_txsv_tbl => l_txsv_tbl
21072 ,x_txsv_tbl => lx_txsv_tbl);
21073
21074 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21075 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
21076 'Return Status' || l_return_status);
21077 END IF;
21078
21079 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21080 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21081 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21082 RAISE OKL_API.G_EXCEPTION_ERROR;
21083 END IF;
21084
21085 -- 'Rebook' specific condition to cancel tax lines in ebTax schema
21086 l_transaction_rec.internal_organization_id := l_internal_org_id;
21087 l_transaction_rec.application_id := l_application_id;
21088 l_transaction_rec.entity_code := l_entity_code;
21089 l_transaction_rec.event_class_code := l_event_class_code;
21090 l_transaction_rec.event_type_code := G_BOOKING_CANCEL;
21091 l_transaction_rec.trx_id := p_source_trx_id;
21092
21093 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21094 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
21095 'Calling OKL_TAX_INTERFACE_PVT.cancel_document_tax ');
21096 END IF;
21097
21098 OKL_TAX_INTERFACE_PVT.update_document(p_api_version => p_api_version,
21099 p_init_msg_list => p_init_msg_list,
21100 x_return_status => l_return_status,
21101 x_msg_count => x_msg_count,
21102 x_msg_data => x_msg_data,
21103 p_transaction_rec => l_transaction_rec);
21104
21105 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21106 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
21107 'Return Status' || l_return_status);
21108 END IF;
21109
21110 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21111 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21112 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21113 RAISE OKL_API.G_EXCEPTION_ERROR;
21114 END IF;
21115
21116 END IF; -- Update Tax Sources
21117
21118 END IF; -- Main condition
21119
21120 x_return_status := l_return_status;
21121
21122 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21123 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ','End(-)');
21124 END IF;
21125
21126 -- end the transaction
21127 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
21128 EXCEPTION
21129 WHEN OKL_API.G_EXCEPTION_ERROR THEN
21130
21131 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21132 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
21133 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
21134 END IF;
21135
21136 IF (l_taxsources_csr%ISOPEN) THEN
21137 CLOSE l_taxsources_csr;
21138 END IF;
21139
21140 IF (l_trxcontracts_csr%ISOPEN) THEN
21141 CLOSE l_trxcontracts_csr;
21142 END IF;
21143
21144 IF (l_trxcontracts_base_csr%ISOPEN) THEN
21145 CLOSE l_trxcontracts_base_csr;
21146 END IF;
21147
21148 IF (l_taxsources_prbk_csr%ISOPEN) THEN
21149 CLOSE l_taxsources_prbk_csr;
21150 END IF;
21151
21152 x_return_status := OKL_API.HANDLE_EXCEPTIONS
21153 ( l_api_name,
21154 G_PKG_NAME,
21155 'OKL_API.G_RET_STS_ERROR',
21156 x_msg_count,
21157 x_msg_data,
21158 '_PVT');
21159 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
21160
21161 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21162 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
21163 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
21164 END IF;
21165
21166 IF (l_taxsources_csr%ISOPEN) THEN
21167 CLOSE l_taxsources_csr;
21168 END IF;
21169
21170 IF (l_trxcontracts_csr%ISOPEN) THEN
21171 CLOSE l_trxcontracts_csr;
21172 END IF;
21173
21174 IF (l_trxcontracts_base_csr%ISOPEN) THEN
21175 CLOSE l_trxcontracts_base_csr;
21176 END IF;
21177
21178 IF (l_taxsources_prbk_csr%ISOPEN) THEN
21179 CLOSE l_taxsources_prbk_csr;
21180 END IF;
21181
21182 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21183 ( l_api_name,
21184 G_PKG_NAME,
21185 'OKL_API.G_RET_STS_UNEXP_ERROR',
21186 x_msg_count,
21187 x_msg_data,
21188 '_PVT');
21189 WHEN OTHERS THEN
21190
21191 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21192 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
21193 'EXCEPTION :'||sqlerrm);
21194 END IF;
21195
21196 IF (l_taxsources_csr%ISOPEN) THEN
21197 CLOSE l_taxsources_csr;
21198 END IF;
21199
21200 IF (l_trxcontracts_csr%ISOPEN) THEN
21201 CLOSE l_trxcontracts_csr;
21202 END IF;
21203
21204 IF (l_trxcontracts_base_csr%ISOPEN) THEN
21205 CLOSE l_trxcontracts_base_csr;
21206 END IF;
21207
21208 IF (l_taxsources_prbk_csr%ISOPEN) THEN
21209 CLOSE l_taxsources_prbk_csr;
21210 END IF;
21211
21212 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21213 ( l_api_name,
21214 G_PKG_NAME,
21215 'OTHERS',
21216 x_msg_count,
21217 x_msg_data,
21218 '_PVT');
21219 END cancel_document_tax;
21220
21221 /*========================================================================
21222 | PUBLIC PROCEDURE copy_global_tax_data
21223 |
21224 | DESCRIPTION
21225 | This procedure is called by tax module to populate tax data into ZX global
21226 | session table. eBtax uses this table to show the tax data for Quote
21227 | objects (Sales Quote, Lease Application and Termination Quote)
21228 |
21229 | CALLED FROM OLM Tax Module
21230 |
21231 |
21232 | CALLS PROCEDURES/FUNCTIONS
21233 | OKL_TAX_INTERFACE_PVT.copy_global_tax_data
21234 |
21235 | PARAMETERS
21236 | p_trx_id -- Transaction Identifier
21237 | p_trx_line_id -- Transaction Line Identifier
21238 | p_application_id -- Application Identifier
21239 | p_trx_level_type -- Transaction level type
21240 | p_entity_code -- Entity code
21241 | p_event_class_code -- Event class code
21242 |
21243 | KNOWN ISSUES
21244 |
21245 | NOTES
21246 |
21247 |
21248 | MODIFICATION HISTORY
21249 | Date Author Description of Changes
21250 | 04-APR-07 RRAVIKIR Created
21251 |
21252 *=======================================================================*/
21253 PROCEDURE copy_global_tax_data (
21254 p_api_version IN NUMBER,
21255 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
21256 x_return_status OUT NOCOPY VARCHAR2,
21257 x_msg_count OUT NOCOPY NUMBER,
21258 x_msg_data OUT NOCOPY VARCHAR2,
21259 p_trx_id IN NUMBER,
21260 p_trx_line_id IN NUMBER,
21261 p_application_id IN NUMBER,
21262 p_trx_level_type IN VARCHAR2,
21263 p_entity_code IN VARCHAR2,
21264 p_event_class_code IN VARCHAR2) IS
21265
21266 -- Local variables
21267 l_api_version CONSTANT NUMBER := 1;
21268 l_api_name CONSTANT VARCHAR2(30) := 'copy_global_tax_data';
21269 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
21270
21271 BEGIN
21272 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21273 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data','Begin(+)');
21274 END IF;
21275
21276 --Print Input Variables
21277 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21278 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21279 'p_init_msg_list :'||p_init_msg_list);
21280 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21281 'p_trx_id :'||p_trx_id);
21282 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21283 'p_trx_line_id :'||p_trx_line_id);
21284 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21285 'p_application_id :'||p_application_id);
21286 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21287 'p_trx_level_type :'||p_trx_level_type);
21288 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21289 'p_entity_code :'||p_entity_code);
21290 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21291 'p_event_class_code :'||p_event_class_code);
21292 END IF;
21293
21294 --Check API version, initialize message list and create savepoint.
21295 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
21296 G_PKG_NAME,
21297 p_init_msg_list,
21298 l_api_version,
21299 p_api_version,
21300 '_PVT',
21301 x_return_status);
21302
21303 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21304 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21305 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21306 RAISE OKL_API.G_EXCEPTION_ERROR;
21307 END IF;
21308
21309 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21310 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21311 'Calling OKL_TAX_INTERFACE_PVT.copy_global_tax_data');
21312 END IF;
21313
21314 OKL_TAX_INTERFACE_PVT.copy_global_tax_data(p_api_version => p_api_version,
21315 p_init_msg_list => p_init_msg_list,
21316 x_return_status => l_return_status,
21317 x_msg_count => x_msg_count,
21318 x_msg_data => x_msg_data,
21319 p_trx_id => p_trx_id,
21320 p_trx_line_id => p_trx_line_id,
21321 p_application_id => p_application_id,
21322 p_trx_level_type => p_trx_level_type,
21323 p_entity_code => p_entity_code,
21324 p_event_class_code => p_event_class_code);
21325
21326 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21327 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21328 'After calling OKL_TAX_INTERFACE_PVT.copy_global_tax_data - Return Status ' || l_return_status);
21329 END IF;
21330
21331 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21332 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21333 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21334 RAISE OKL_API.G_EXCEPTION_ERROR;
21335 END IF;
21336
21337 x_return_status := l_return_status;
21338
21339 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21340 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ','End(-)');
21341 END IF;
21342
21343 -- end the transaction
21344 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
21345 EXCEPTION
21346 WHEN OKL_API.G_EXCEPTION_ERROR THEN
21347
21348 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21349 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ',
21350 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
21351 END IF;
21352
21353 x_return_status := OKL_API.HANDLE_EXCEPTIONS
21354 (
21355 l_api_name,
21356 G_PKG_NAME,
21357 'OKL_API.G_RET_STS_ERROR',
21358 x_msg_count,
21359 x_msg_data,
21360 '_PVT'
21361 );
21362 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
21363 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21364 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ',
21365 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
21366 END IF;
21367
21368 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21369 (
21370 l_api_name,
21371 G_PKG_NAME,
21372 'OKL_API.G_RET_STS_UNEXP_ERROR',
21373 x_msg_count,
21374 x_msg_data,
21375 '_PVT'
21376 );
21377 WHEN OTHERS THEN
21378
21379 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21380 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ',
21381 'EXCEPTION :'||sqlerrm);
21382 END IF;
21383
21384 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21385 (
21386 l_api_name,
21387 G_PKG_NAME,
21388 'OTHERS',
21389 x_msg_count,
21390 x_msg_data,
21391 '_PVT'
21392 );
21393 END copy_global_tax_data;
21394
21395 END OKL_PROCESS_SALES_TAX_PVT;