[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.56 2008/06/06 06:53:06 sechawla noship $ */
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 = NVL(TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10)),-99)
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 VARCHAR2(30);
3399 selected_count NUMBER;
3400 det_match_cnt NUMBER;
3401 l_selected_tbc_pos NUMBER;
3402
3403 BEGIN
3404
3405 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3406 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code','Begin(+)');
3407 END IF;
3408
3409 --Print Input Variables
3410 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3411 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3412 'p_init_msg_list :'||p_init_msg_list);
3413 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3414 'p_sty_id :'||p_sty_id);
3415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3416 'p_try_id :'||p_try_id);
3417 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3418 'p_book_class_code :'||p_book_class_code);
3419 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3420 'p_tax_country_code :'||p_tax_country_code);
3421 END IF;
3422
3423
3424 OPEN l_tbcdef_csr(p_try_id);
3425 FETCH l_tbcdef_csr BULK COLLECT INTO l_tbcdefs_tbl;
3426 CLOSE l_tbcdef_csr;
3427
3428 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3429 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3430 'l_tbcdefs_tbl.COUNT '||l_tbcdefs_tbl.COUNT);
3431 END IF;
3432
3433 IF l_tbcdefs_tbl.COUNT > 0 THEN -- MAIN END IF
3434 k := 1;
3435 FOR i IN 1 .. 3 LOOP -- determinant loop
3436 tbc_set_count := 0;
3437
3438 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3439 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.', 'i '||i);
3440 END IF;
3441
3442 FOR j IN l_tbcdefs_tbl.FIRST .. l_tbcdefs_tbl.LAST LOOP
3443 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3444 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3445 'j '||j||' l_tbcdefs_tbl(j).select_yn '||l_tbcdefs_tbl(j).select_yn );
3446 END IF;
3447
3448 IF l_tbcdefs_tbl(j).select_yn = 'Y' THEN
3449 IF i = 1 THEN -- stream type
3450 IF p_sty_id IS NULL THEN
3451 IF l_tbcdefs_tbl(j).sty_id IS NULL THEN
3452 tbc_set_count := tbc_set_count + 1;
3453 ELSE
3454 l_tbcdefs_tbl(j).select_yn := 'N';
3455 END IF;
3456 ELSE
3457 IF l_tbcdefs_tbl(j).sty_id IS NULL OR l_tbcdefs_tbl(j).sty_id = p_sty_id THEN
3458 tbc_set_count := tbc_set_count + 1;
3459 ELSE
3460 l_tbcdefs_tbl(j).select_yn := 'N';
3461 END IF;
3462 END IF
3463 ;
3464 ELSIF i = 2 THEN -- book class code
3465 IF p_book_class_code IS NULL THEN
3466 IF l_tbcdefs_tbl(j).book_class_code IS NULL THEN
3467 tbc_set_count := tbc_set_count + 1;
3468 ELSE
3469 l_tbcdefs_tbl(j).select_yn := 'N';
3470 END IF;
3471 ELSE
3472 IF l_tbcdefs_tbl(j).book_class_code IS NULL OR l_tbcdefs_tbl(j).book_class_code = p_book_class_code THEN
3473 tbc_set_count := tbc_set_count + 1;
3474 ELSE
3475 l_tbcdefs_tbl(j).select_yn := 'N';
3476 END IF;
3477 END IF;
3478
3479 ELSIF i = 3 THEN -- tax country (last determinant)
3480 IF p_tax_country_code IS NULL THEN
3481 IF l_tbcdefs_tbl(j).tax_country_code IS NULL THEN
3482 tbc_set_count := tbc_set_count + 1;
3483 l_tbcdefs_selected_tbl(k) := j;
3484 ELSE
3485 l_tbcdefs_tbl(j).select_yn := 'N';
3486 END IF;
3487 ELSE
3488 IF l_tbcdefs_tbl(j).tax_country_code IS NULL OR l_tbcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
3489 tbc_set_count := tbc_set_count + 1;
3490 l_tbcdefs_selected_tbl(k) := j;
3491 ELSE
3492 l_tbcdefs_tbl(j).select_yn := 'N';
3493 END IF;
3494 END IF;
3495
3496 k := k + 1;
3497 END IF;
3498
3499 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3500 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3501 'tbc_set_count '||tbc_set_count);
3502 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3503 'l_tbcdefs_tbl(j).select_yn '||l_tbcdefs_tbl(j).select_yn);
3504 END IF;
3505 END IF;
3506 END LOOP;
3507
3508 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3509 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3510 'tbc_set_count '||tbc_set_count);
3511 END IF;
3512
3513 IF tbc_set_count = 0 THEN
3514 EXIT;
3515 END IF;
3516 END LOOP; -- determinant loop
3517
3518 -- At this point l_tbcdefs_tbl has been scanned for all the determinants.
3519 -- select_yn flag in this table is set to 'Y' for TBCs that have either Null
3520 -- determinant value or value matching with the transaction. Table l_tbcdefs_selected_tbl
3521 -- holds those indexes of original table l_tbcdefs_tbl, that have seleted TBCs.
3522 -- At this point this table may contain more than 1 TBCs. If so, we need to further filter
3523 -- out TBCs from this table based upon the priority of the determinants.
3524 -- Following priority order is used :
3525 -- 1. Transaction Type
3526 -- 2. Stream Type
3527 -- 3. Book Class
3528 -- 4. Tax Country
3529
3530 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3531 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3532 'tbc_set_count outside first loop'||tbc_set_count);
3533 END IF;
3534
3535 IF tbc_set_count = 1 THEN
3536 l_tbc_code := l_tbcdefs_tbl(l_tbcdefs_selected_tbl(1)).tbc_code;
3537 ELSIF tbc_set_count > 1 THEN
3538 -- There can be more than one selected TBCs at this point
3539 -- apply determinant priority logic to select 1 TBC
3540 selected_count := tbc_set_count;
3541
3542 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3543 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3544 'l_tbcdefs_selected_tbl.count '||l_tbcdefs_selected_tbl.count );
3545 END IF;
3546
3547 FOR i IN 1 .. 4 LOOP -- determinant loop
3548
3549 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3550 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3551 'i '||i||' selected_count '||selected_count );
3552 END IF;
3553
3554 j := 1;
3555 det_match_cnt := 0;
3556 l_det_null_tbl.DELETE;
3557
3558 IF selected_count > 1 THEN
3559 FOR k IN l_tbcdefs_selected_tbl.FIRST .. l_tbcdefs_selected_tbl.LAST LOOP -- finally selected indexes
3560 -- At this point all the selecetd TBCs will either have Null determinant
3561 -- value or determinant value matching with the calling transaction
3562 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3563 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.', 'k '||k);
3564 END IF;
3565
3566 IF i = 1 THEN -- transaction type
3567 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).try_id IS NULL THEN
3568 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3569 j := j + 1;
3570 ELSE
3571 det_match_cnt := det_match_cnt + 1;
3572 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3573 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3574 -- when only one TBC is left
3575 END IF;
3576
3577 IF k = tbc_set_count THEN -- last record
3578 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3579 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3580 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3581 END IF;
3582
3583 IF det_match_cnt = selected_count THEN --k THEN
3584 NULL; -- all records have matching values, do nothing
3585 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3586 NULL; -- keep all records selected. Don't exclude yet.
3587 ELSIF det_match_cnt = 1 THEN
3588 selected_count := 1;
3589 ELSE -- more than one but less than total selected records have matching values
3590 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3591 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3592 selected_count := selected_count - 1;
3593 END LOOP;
3594 END IF;
3595 END IF;
3596
3597 ELSIF i = 2 THEN -- stream type
3598 IF p_sty_id IS NOT NULL THEN
3599 -- IF p_sty_id is null then l_tbcdefs_tbl will have more than 1 TBCs with
3600 -- only NULL values for sty_id. So no need to filter further, move on to next determinant
3601 -- When system is processing a determinant, there will always be more than one selected TBCS
3602 -- This is because, at the end of processing each determinant, we check the selected count
3603 -- If selected count = 1 then we do not process next determinant and exit
3604 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3605 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).sty_id IS NULL THEN
3606 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3607 j := j + 1;
3608 ELSE
3609 det_match_cnt := det_match_cnt + 1;
3610 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3611 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3612 -- when only one TBC is left
3613 END IF;
3614 END IF;
3615
3616 IF k = tbc_set_count THEN -- last record
3617 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3618 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3619 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3620 END IF;
3621
3622 IF det_match_cnt = selected_count THEN --k THEN
3623 NULL; -- all records have matching values, do nothing
3624 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3625 NULL; -- keep all records selected. Don't exclude yet.
3626 ELSIF det_match_cnt = 1 THEN
3627 selected_count := 1;
3628 ELSE -- more than one but less than total selected records have matching values
3629 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3630 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3631 selected_count := selected_count - 1;
3632 END LOOP;
3633 END IF;
3634 END IF;
3635 END IF;
3636
3637 ELSIF i = 3 THEN -- book class
3638 IF p_book_class_code IS NOT NULL THEN
3639 -- IF p_book_class_code is null then l_tbcdefs_tbl will have more than 1 TBCs with
3640 -- only NULL values for book_class_code. So no need to filter further, move on to next determinant
3641 -- When system is processing a determinant, there will always be more than one selected TBCS
3642 -- This is because, at the end of processing each determinant, we check the selected count
3643 -- If selected count = 1 then we do not process next determinant and exit
3644 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3645 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).book_class_code IS NULL THEN
3646 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3647 j := j + 1;
3648 ELSE
3649 det_match_cnt := det_match_cnt + 1;
3650 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3651 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3652 -- when only one TBC is left
3653 END IF;
3654 END IF;
3655
3656 IF k = tbc_set_count THEN -- last record
3657 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3658 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3659 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3660 END IF;
3661
3662 IF det_match_cnt = selected_count THEN --k THEN
3663 NULL; -- all records have matching values, do nothing
3664 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3665 NULL; -- keep all records selected. Don't exclude yet.
3666 ELSIF det_match_cnt = 1 THEN
3667 selected_count := 1;
3668 ELSE -- more than one but less than total selected records have matching values
3669 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3670 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3671 selected_count := selected_count - 1;
3672 END LOOP;
3673 END IF;
3674 END IF;
3675 END IF;
3676
3677 ELSIF i = 4 THEN -- tax country
3678 IF p_tax_country_code IS NOT NULL THEN
3679 -- IF p_tax_country_code is null then l_tbcdefs_tbl will have more than 1 TBCs with
3680 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
3681 -- When system is processing a determinant, there will always be more than one selected TBCS
3682 -- This is because, at the end of processing each determinant, we check the selected count
3683 -- If selected count = 1 then we do not process next determinant and exit
3684 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
3685 IF l_tbcdefs_tbl(l_tbcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
3686 l_det_null_tbl(j) := l_tbcdefs_selected_tbl(k);
3687 j := j + 1;
3688 ELSE
3689 det_match_cnt := det_match_cnt + 1;
3690 l_selected_tbc_pos := l_tbcdefs_selected_tbl(k);
3691 -- l_selected_tbc_pos will be used as the index of the selected TBC,
3692 -- when only one TBC is left
3693 END IF;
3694 END IF;
3695
3696 IF k = tbc_set_count THEN -- last record
3697 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3698 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3699 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
3700 END IF;
3701
3702 IF det_match_cnt = selected_count THEN --k THEN
3703 NULL; -- all records have matching values, do nothing
3704 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
3705 NULL; -- keep all records selected. Don't exclude yet.
3706 ELSIF det_match_cnt = 1 THEN
3707 selected_count := 1;
3708 ELSE -- more than one but less than total selected records have matching values
3709 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
3710 l_tbcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
3711 selected_count := selected_count - 1;
3712 END LOOP;
3713 END IF;
3714 END IF;
3715 END IF;
3716 END IF;
3717 END LOOP;
3718 ELSIF selected_count = 1 THEN
3719 EXIT;
3720 END IF;
3721 END LOOP; -- determinant loop
3722
3723 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3724 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3725 'selected_count outside 2nd loop '||selected_count);
3726 END IF;
3727
3728 IF selected_count = 1 THEN
3729 l_tbc_code := l_tbcdefs_tbl(l_selected_tbc_pos).tbc_code;
3730 ELSIF selected_count > 1 THEN -- still more than one TBCs are selected
3731 l_tbc_code := NULL;
3732 END IF;
3733
3734 ELSIF tbc_set_count = 0 THEN
3735 l_tbc_code := NULL;
3736 END IF;
3737
3738 END IF; -- MAIN END IF ends
3739
3740 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3741 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code.',
3742 'l_tbc_code '||l_tbc_code);
3743 END IF;
3744
3745 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3746
3747 -- TBC can be NULL
3748 x_tbc_code := l_tbc_code;
3749
3750 EXCEPTION
3751 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3752
3753 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3754 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3755 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
3756 END IF;
3757
3758 IF l_tbcdef_csr%ISOPEN THEN
3759 CLOSE l_tbcdef_csr;
3760 END IF;
3761
3762 x_return_status := OKL_API.G_RET_STS_ERROR;
3763 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3764
3765 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3766 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3767 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
3768 END IF;
3769
3770 IF l_tbcdef_csr%ISOPEN THEN
3771 CLOSE l_tbcdef_csr;
3772 END IF;
3773
3774 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3775
3776 WHEN OTHERS THEN
3777 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3778 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tbc_code ',
3779 'EXCEPTION :'||sqlerrm);
3780 END IF;
3781
3782 IF l_tbcdef_csr%ISOPEN THEN
3783 CLOSE l_tbcdef_csr;
3784 END IF;
3785
3786 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3787 -- unexpected error
3788 OKL_API.set_message(p_app_name => g_app_name,
3789 p_msg_name => g_unexpected_error,
3790 p_token1 => g_sqlcode_token,
3791 p_token1_value => sqlcode,
3792 p_token2 => g_sqlerrm_token,
3793 p_token2_value => sqlerrm);
3794
3795 END get_tbc_code;
3796
3797 /*========================================================================
3798 | PRIVATE PROCEDURE get_pc_code
3799 |
3800 | DESCRIPTION
3801 | This procedure retrieves PC (Product Category) for tax call, based upon the
3802 | contract and line level tax determinats
3803 |
3804 | CALLED FROM
3805 |
3806 |
3807 | CALLS PROCEDURES/FUNCTIONS
3808 |
3809 |
3810 | PARAMETERS
3811 | Input Parameters
3812 | p_sty_id -- Stream Type ID
3813 | p_purchase_option_code -- Purchase option code
3814 | p_int_disclosed_code -- Interest disclosed code
3815 | p_title_trnsfr_code -- Transfer Of Title
3816 | p_sale_lease_back_code -- Sale and Lease Back
3817 | p_lease_purchased_code -- Purchase of Lease
3818 | p_tax_country_code -- Tax country code
3819 | Output Parameters
3820 | x_pc_code -- PC Code
3821 |
3822 | KNOWN ISSUES
3823 |
3824 | NOTES
3825 |
3826 |
3827 | MODIFICATION HISTORY
3828 | Date Author Description of Changes
3829 | 17-APR-07 RRAVIKIR Created
3830 |
3831 *=======================================================================*/
3832 PROCEDURE get_pc_code(
3833 p_api_version IN NUMBER,
3834 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3835 x_return_status OUT NOCOPY VARCHAR2,
3836 x_msg_count OUT NOCOPY NUMBER,
3837 x_msg_data OUT NOCOPY VARCHAR2,
3838 p_sty_id IN NUMBER,
3839 p_purchase_option_code IN VARCHAR2,
3840 p_int_disclosed_code IN VARCHAR2,
3841 p_title_trnsfr_code IN VARCHAR2,
3842 p_sale_lease_back_code IN VARCHAR2,
3843 p_lease_purchased_code in varchar2,
3844 p_tax_country_code IN VARCHAR2,
3845 x_pc_code OUT NOCOPY VARCHAR2) IS
3846
3847 -- Get all the PC definitions
3848 CURSOR l_pcdef_csr IS
3849 SELECT result_code pc_code,
3850 sty_id,
3851 purchase_option_code,
3852 int_disclosed_code,
3853 title_trnsfr_code,
3854 sale_lease_back_code,
3855 lease_purchased_code,
3856 tax_country_code,
3857 'Y' select_yn -- All PCs returned by this cursor are selected initially
3858 FROM okl_tax_attr_definitions
3859 WHERE (sty_id = p_sty_id OR sty_id IS NULL)
3860 AND result_type_code = 'PC_CODE'
3861 AND NVL(expire_flag, 'N') = 'N';
3862
3863 TYPE pcdefs_tbl_type IS TABLE OF l_pcdef_csr%ROWTYPE INDEX BY BINARY_INTEGER;
3864 TYPE pcdefs_selected_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3865 TYPE det_null_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
3866
3867 l_pcdefs_tbl pcdefs_tbl_type;
3868 l_det_null_tbl det_null_tbl_type;
3869 l_pcdefs_selected_tbl pcdefs_selected_tbl_type;
3870
3871 i NUMBER;
3872 j NUMBER;
3873 k NUMBER;
3874 pc_set_count NUMBER;
3875 l_pc_code VARCHAR2(30);
3876 selected_count NUMBER;
3877 det_match_cnt NUMBER;
3878 l_selected_pc_pos NUMBER;
3879
3880 BEGIN
3881
3882 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3883 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code','Begin(+)');
3884 END IF;
3885
3886 --Print Input Variables
3887 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3888 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3889 'p_init_msg_list :'||p_init_msg_list);
3890 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3891 'p_sty_id :'||p_sty_id);
3892 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3893 'p_purchase_option_code :'||p_purchase_option_code);
3894 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3895 'p_int_disclosed_code :'||p_int_disclosed_code);
3896 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3897 'p_title_trnsfr_code :'||p_title_trnsfr_code);
3898 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3899 'p_sale_lease_back_code :'||p_sale_lease_back_code);
3900 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3901 'p_lease_purchased_code :'||p_lease_purchased_code);
3902 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3903 'p_tax_country_code :'||p_tax_country_code);
3904 END IF;
3905
3906 OPEN l_pcdef_csr;
3907 FETCH l_pcdef_csr BULK COLLECT INTO l_pcdefs_tbl;
3908 CLOSE l_pcdef_csr;
3909
3910 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3911 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3912 'l_pcdefs_tbl.COUNT '||l_pcdefs_tbl.COUNT);
3913 END IF;
3914
3915 IF l_pcdefs_tbl.COUNT > 0 THEN -- MAIN IF
3916 k := 1;
3917 FOR i IN 1 .. 6 LOOP -- determinant loop
3918 pc_set_count := 0;
3919
3920 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3921 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.', 'i '||i);
3922 END IF;
3923
3924 FOR j IN l_pcdefs_tbl.FIRST .. l_pcdefs_tbl.LAST LOOP
3925 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
3926 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
3927 'j '||j||' l_pcdefs_tbl(j).select_yn '||l_pcdefs_tbl(j).select_yn );
3928 END IF;
3929
3930 IF l_pcdefs_tbl(j).select_yn = 'Y' THEN
3931 IF i = 1 THEN -- purchase option
3932 IF p_purchase_option_code IS NULL THEN
3933 IF l_pcdefs_tbl(j).purchase_option_code IS NULL THEN
3934 pc_set_count := pc_set_count + 1;
3935 ELSE
3936 l_pcdefs_tbl(j).select_yn := 'N';
3937 END IF;
3938 ELSE
3939 IF l_pcdefs_tbl(j).purchase_option_code IS NULL OR l_pcdefs_tbl(j).purchase_option_code = p_purchase_option_code THEN
3940 pc_set_count := pc_set_count + 1;
3941 ELSE
3942 l_pcdefs_tbl(j).select_yn := 'N';
3943 END IF;
3944 END IF;
3945
3946 ELSIF i = 2 THEN -- Interest disclosed code
3947 IF p_int_disclosed_code IS NULL OR p_int_disclosed_code = 'N' THEN
3948 IF l_pcdefs_tbl(j).int_disclosed_code = 'N' THEN -- INT_DISCLOSED_CODE can not be null on DB
3949 pc_set_count := pc_set_count + 1;
3950 ELSE
3951 l_pcdefs_tbl(j).select_yn := 'N';
3952 END IF;
3953 ELSE
3954 pc_set_count := pc_set_count + 1;
3955 END IF;
3956
3957 ELSIF i = 3 THEN -- Title transfer code
3958 IF p_title_trnsfr_code IS NULL OR p_title_trnsfr_code = 'N' THEN
3959 IF l_pcdefs_tbl(j).title_trnsfr_code = 'N' THEN -- TITLE_TRNSFR_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 = 4 THEN -- Sale lease back code
3969 IF p_sale_lease_back_code IS NULL OR p_sale_lease_back_code = 'N' THEN
3970 IF l_pcdefs_tbl(j).sale_lease_back_code = 'N' THEN --SALE_LEASE_BACK_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 = 5 THEN -- Lease purchased code
3980 IF p_lease_purchased_code IS NULL OR p_lease_purchased_code = 'N' THEN
3981 IF l_pcdefs_tbl(j).lease_purchased_code = 'N' THEN --LEASE_PURCHASED_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 = 6 THEN -- tax country (last determinant)
3991 IF p_tax_country_code IS NULL THEN
3992 IF l_pcdefs_tbl(j).tax_country_code IS NULL THEN
3993 pc_set_count := pc_set_count + 1;
3994 l_pcdefs_selected_tbl(k) := j;
3995 ELSE
3996 l_pcdefs_tbl(j).select_yn := 'N';
3997 END IF;
3998 ELSE
3999 IF l_pcdefs_tbl(j).tax_country_code IS NULL OR l_pcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
4000 pc_set_count := pc_set_count + 1;
4001 l_pcdefs_selected_tbl(k) := j;
4002 ELSE
4003 l_pcdefs_tbl(j).select_yn := 'N';
4004 END IF;
4005 END IF;
4006
4007 k := k + 1;
4008 END IF;
4009
4010 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4011 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4012 'pc_set_count '||pc_set_count);
4013 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4014 'l_pcdefs_tbl(j).select_yn '||l_pcdefs_tbl(j).select_yn);
4015 END IF;
4016 END IF;
4017 END LOOP;
4018
4019 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4020 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4021 'pc_set_count '||pc_set_count);
4022 END IF;
4023
4024 IF pc_set_count = 0 THEN
4025 EXIT;
4026 END IF;
4027 END LOOP; -- determinant loop
4028
4029 -- At this point l_pcdefs_tbl has been scanned for all the determinants.
4030 -- select_yn flag in this table is set to 'Y' for PCs that have either Null
4031 -- determinnt value or value matching with the transaction. Table l_pcdefs_selected_tbl
4032 -- holds those indexes of original table l_pcdefs_tbl, that have seleted PCs.
4033 -- At this point this table may contain more than 1 PCs. If so, we need to further filter
4034 -- out PCs from this table based upon the priority of the determinants.
4035 -- Following priority order is used :
4036 -- 1. Stream Type
4037 -- 2. Purchase option
4038 -- 3. Interest disclosed code
4039 -- 4. Title transfer code
4040 -- 5. Sale Lease back code
4041 -- 6. Lease purchased code
4042 -- 7. Tax Country
4043
4044 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4045 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4046 'pc_set_count outside first loop'||pc_set_count);
4047 END IF;
4048
4049 IF pc_set_count = 1 THEN
4050 l_pc_code := l_pcdefs_tbl(l_pcdefs_selected_tbl(1)).pc_code;
4051 ELSIF pc_set_count > 1 THEN
4052 -- There can be more than one selected PCs at this point
4053 -- apply determinant priority logic to select 1 PC
4054 selected_count := pc_set_count;
4055
4056 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4057 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4058 'l_pcdefs_selected_tbl.count '||l_pcdefs_selected_tbl.count );
4059 END IF;
4060
4061 FOR i IN 1 .. 7 LOOP -- determinant loop
4062
4063 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4064 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4065 'i '||i||' selected_count '||selected_count );
4066 END IF;
4067
4068 j := 1;
4069 det_match_cnt := 0;
4070 l_det_null_tbl.DELETE;
4071
4072 IF selected_count > 1 THEN
4073 FOR k IN l_pcdefs_selected_tbl.FIRST .. l_pcdefs_selected_tbl.LAST LOOP -- finally selected indexes
4074 -- At this point all the selecetd PCs will either have Null determinant value or determinant value matching with the calling transaction
4075 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4076 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.', 'k '||k);
4077 END IF;
4078
4079 IF i = 1 THEN -- Stream Type
4080 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).sty_id IS NULL THEN
4081 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4082 j := j + 1;
4083 ELSE
4084 det_match_cnt := det_match_cnt + 1;
4085 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4086 -- l_selected_pc_pos will be used as the index of the selected PC,
4087 -- when only one PC is left
4088 END IF;
4089
4090 IF k = pc_set_count THEN -- last record
4091 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4092 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4093 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4094 END IF;
4095
4096 IF det_match_cnt = selected_count THEN --k THEN
4097 NULL; -- all records have matching values, do nothing
4098 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4099 NULL; -- keep all records selected. Don't exclude yet.
4100 ELSIF det_match_cnt = 1 THEN
4101 selected_count := 1;
4102 ELSE -- more than one but less than total selected records have matching values
4103 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4104 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4105 selected_count := selected_count - 1;
4106 END LOOP;
4107 END IF;
4108 END IF;
4109
4110 ELSIF i = 2 THEN -- Purchase option
4111 IF p_purchase_option_code IS NOT NULL THEN
4112 -- IF p_purchase_option_code is null then l_pcdefs_tbl will have more than 1 PCs with
4113 -- only NULL values for purchase_option_code. So no need to filter further, move on to next determinant
4114 -- When system is processing a determinant, there will always be more than one selected PCS
4115 -- This is because, at the end of processing each determinant, we check the selected count
4116 -- If selected count = 1 then we do not process next determinant and exit
4117 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4118 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).purchase_option_code IS NULL THEN
4119 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4120 j := j + 1;
4121 ELSE
4122 det_match_cnt := det_match_cnt + 1;
4123 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4124 -- l_selected_pc_pos will be used as the index of the selected PC,
4125 -- when only one PC is left
4126 END IF;
4127 END IF;
4128
4129 IF k = pc_set_count THEN -- last record
4130 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4131 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4132 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4133 END IF;
4134
4135 IF det_match_cnt = selected_count THEN --k THEN
4136 NULL; -- all records have matching values, do nothing
4137 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4138 NULL; -- keep all records selected. Don't exclude yet.
4139 ELSIF det_match_cnt = 1 THEN
4140 selected_count := 1;
4141 ELSE -- more than one but less than total selected records have matching values
4142 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4143 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4144 selected_count := selected_count - 1;
4145 END LOOP;
4146 END IF;
4147 END IF;
4148 END IF;
4149
4150 ELSIF i = 3 THEN -- Interest disclosed code
4151 IF p_int_disclosed_code = 'Y' THEN
4152 -- IF p_int_disclosed_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4153 -- INT_DISCLOSED_CODE. So no need to filter further
4154 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4155 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).int_disclosed_code = 'N' THEN
4156 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4157 j := j + 1;
4158 ELSE
4159 det_match_cnt := det_match_cnt + 1;
4160 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4161 -- l_selected_pc_pos will be used as the index of the selected PC,
4162 -- when only one PC is left
4163 END IF;
4164 END IF;
4165
4166 IF k = pc_set_count THEN -- last record
4167 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4168 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4169 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4170 END IF;
4171
4172 IF det_match_cnt = selected_count THEN --k THEN
4173 NULL; -- all records have matching values, do nothing
4174 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4175 NULL; -- keep all records selected. Don't exclude yet.
4176 ELSIF det_match_cnt = 1 THEN
4177 selected_count := 1;
4178 ELSE -- more than one but less than total selected records have matching values
4179 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4180 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4181 selected_count := selected_count - 1;
4182 END LOOP;
4183 END IF;
4184 END IF;
4185 END IF;
4186
4187 ELSIF i = 4 THEN -- Title transfer code
4188 IF p_title_trnsfr_code = 'Y' THEN
4189 -- IF p_title_trnsfr_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4190 -- title_trnsfr_code. So no need to filter further
4191 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4192 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).title_trnsfr_code = 'N' THEN
4193 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4194 j := j + 1;
4195 ELSE
4196 det_match_cnt := det_match_cnt + 1;
4197 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4198 -- l_selected_pc_pos will be used as the index of the selected PC,
4199 -- when only one PC is left
4200 END IF;
4201 END IF;
4202
4203 IF k = pc_set_count THEN -- last record
4204 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4205 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4206 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4207 END IF;
4208
4209 IF det_match_cnt = selected_count THEN --k THEN
4210 NULL; -- all records have matching values, do nothing
4211 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4212 NULL; -- keep all records selected. Don't exclude yet.
4213 ELSIF det_match_cnt = 1 THEN
4214 selected_count := 1;
4215 ELSE -- more than one but less than total selected records have matching values
4216 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4217 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4218 selected_count := selected_count - 1;
4219 END LOOP;
4220 END IF;
4221 END IF;
4222 END IF;
4223
4224 ELSIF i = 5 THEN -- Sale Lease back code
4225 IF p_sale_lease_back_code = 'Y' THEN
4226 -- IF p_sale_lease_back_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4227 -- sale_lease_back_code. So no need to filter further
4228 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4229 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).sale_lease_back_code = 'N' THEN
4230 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4231 j := j + 1;
4232 ELSE
4233 det_match_cnt := det_match_cnt + 1;
4234 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4235 -- l_selected_pc_pos will be used as the index of the selected PC,
4236 -- when only one PC is left
4237 END IF;
4238 END IF;
4239
4240 IF k = pc_set_count THEN -- last record
4241 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4242 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4243 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4244 END IF;
4245
4246 IF det_match_cnt = selected_count THEN --k THEN
4247 NULL; -- all records have matching values, do nothing
4248 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4249 NULL; -- keep all records selected. Don't exclude yet.
4250 ELSIF det_match_cnt = 1 THEN
4251 selected_count := 1;
4252 ELSE -- more than one but less than total selected records have matching values
4253 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4254 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4255 selected_count := selected_count - 1;
4256 END LOOP;
4257 END IF;
4258 END IF;
4259 END IF;
4260
4261 ELSIF i = 6 THEN -- Lease purchased code
4262 IF p_lease_purchased_code = 'Y' THEN
4263 -- IF p_lease_purchased_code is null or 'N' then l_ufcdefs_tbl will have only 'N' values for
4264 -- lease_purchased_code. So no need to filter further
4265 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4266 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).lease_purchased_code = 'N' THEN
4267 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4268 j := j + 1;
4269 ELSE
4270 det_match_cnt := det_match_cnt + 1;
4271 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4272 -- l_selected_pc_pos will be used as the index of the selected PC,
4273 -- when only one PC is left
4274 END IF;
4275 END IF;
4276
4277 IF k = pc_set_count THEN -- last record
4278 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4279 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4280 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4281 END IF;
4282
4283 IF det_match_cnt = selected_count THEN --k THEN
4284 NULL; -- all records have matching values, do nothing
4285 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4286 NULL; -- keep all records selected. Don't exclude yet.
4287 ELSIF det_match_cnt = 1 THEN
4288 selected_count := 1;
4289 ELSE -- more than one but less than total selected records have matching values
4290 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4291 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4292 selected_count := selected_count - 1;
4293 END LOOP;
4294 END IF;
4295 END IF;
4296 END IF;
4297
4298 ELSIF i = 7 THEN -- Tax Country
4299 IF p_tax_country_code IS NOT NULL THEN
4300 -- IF p_tax_country_code is null then l_pcdefs_tbl will have more than 1 PCs with
4301 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
4302 -- When system is processing a determinant, there will always be more than one selected PCS
4303 -- This is because, at the end of processing each determinant, we check the selected count
4304 -- If selected count = 1 then we do not process next determinant and exit
4305 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4306 IF l_pcdefs_tbl(l_pcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
4307 l_det_null_tbl(j) := l_pcdefs_selected_tbl(k);
4308 j := j + 1;
4309 ELSE
4310 det_match_cnt := det_match_cnt + 1;
4311 l_selected_pc_pos := l_pcdefs_selected_tbl(k);
4312 -- l_selected_pc_pos will be used as the index of the selected PC,
4313 -- when only one PC is left
4314 END IF;
4315 END IF;
4316
4317 IF k = pc_set_count THEN -- last record
4318 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4319 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4320 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4321 END IF;
4322
4323 IF det_match_cnt = selected_count THEN --k THEN
4324 NULL; -- all records have matching values, do nothing
4325 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4326 NULL; -- keep all records selected. Don't exclude yet.
4327 ELSIF det_match_cnt = 1 THEN
4328 selected_count := 1;
4329 ELSE -- more than one but less than total selected records have matching values
4330 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4331 l_pcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4332 selected_count := selected_count - 1;
4333 END LOOP;
4334 END IF;
4335 END IF;
4336
4337 END IF;
4338 END IF;
4339 END LOOP;
4340 ELSIF selected_count = 1 THEN
4341 EXIT;
4342 END IF;
4343 END LOOP; -- determinant loop
4344
4345 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4346 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4347 'selected_count outside 2nd loop '||selected_count);
4348 END IF;
4349
4350 IF selected_count = 1 THEN
4351 l_pc_code := l_pcdefs_tbl(l_selected_pc_pos).pc_code;
4352 ELSIF selected_count > 1 THEN -- still more than one PCs are selected
4353 l_pc_code := NULL;
4354 END IF;
4355 ELSIF pc_set_count = 0 THEN
4356 l_pc_code := NULL;
4357 END IF;
4358
4359 END IF; -- MAIN IF ends
4360
4361 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4362 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code.',
4363 'l_pc_code '||l_pc_code);
4364 END IF;
4365
4366 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4367
4368 -- PC can be null
4369 x_pc_code := l_pc_code;
4370
4371 EXCEPTION
4372 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4373
4374 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4375 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4376 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
4377 END IF;
4378
4379 IF l_pcdef_csr%ISOPEN THEN
4380 CLOSE l_pcdef_csr;
4381 END IF;
4382
4383 x_return_status := OKL_API.G_RET_STS_ERROR;
4384 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4385
4386 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4387 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4388 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
4389 END IF;
4390
4391 IF l_pcdef_csr%ISOPEN THEN
4392 CLOSE l_pcdef_csr;
4393 END IF;
4394
4395 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4396
4397 WHEN OTHERS THEN
4398 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4399 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_pc_code ',
4400 'EXCEPTION :'||sqlerrm);
4401 END IF;
4402
4403 IF l_pcdef_csr%ISOPEN THEN
4404 CLOSE l_pcdef_csr;
4405 END IF;
4406
4407 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4408 -- unexpected error
4409 OKL_API.set_message(p_app_name => g_app_name,
4410 p_msg_name => g_unexpected_error,
4411 p_token1 => g_sqlcode_token,
4412 p_token1_value => sqlcode,
4413 p_token2 => g_sqlerrm_token,
4414 p_token2_value => sqlerrm);
4415
4416 END get_pc_code;
4417
4418 /*========================================================================
4419 | PRIVATE PROCEDURE get_ufc_code
4420 |
4421 | DESCRIPTION
4422 | This procedure retrieves UFC (User Fiscal Classification) for tax call,
4423 | based upon the contract and line level tax determinats
4424 |
4425 | CALLED FROM
4426 |
4427 |
4428 | CALLS PROCEDURES/FUNCTIONS
4429 |
4430 |
4431 | PARAMETERS
4432 | Input Parameters
4433 | p_purchase_option -- Purchase option
4434 | p_fin_product_id -- Financial Product
4435 | p_try_id -- Transaction Type ID
4436 | p_sty_id -- Stream Type ID
4437 | p_int_disclosed_code -- Interest Disclosed
4438 | p_title_trnsfr_code -- Transfer Of Title
4439 | p_sale_lease_back_code -- Sale and Lease Back
4440 | p_lease_purchased_code -- Purchase of Lease
4441 | p_equip_usage_code -- Usage of Equipment
4442 | p_vendor_site_id -- Vendor Site ID
4443 | p_age_of_equip -- Age of Equipment
4444 | p_term_quote_type_code -- Termination quote type code
4445 | p_term_quote_reason_code -- Termination quote reason code
4446 | p_tax_country_code -- Tax country code
4447 | Output Parameters
4448 | x_ufc_code -- UFC Code
4449 |
4450 | KNOWN ISSUES
4451 |
4452 | NOTES
4453 |
4454 |
4455 | MODIFICATION HISTORY
4456 | Date Author Description of Changes
4457 | 08-APR-05 SECHAWLA Created
4458 | 20-APR-07 RRAVIKIR Modified
4459 |
4460 *=======================================================================*/
4461
4462 PROCEDURE get_ufc_code(
4463 p_api_version IN NUMBER,
4464 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4465 x_return_status OUT NOCOPY VARCHAR2,
4466 x_msg_count OUT NOCOPY NUMBER,
4467 x_msg_data OUT NOCOPY VARCHAR2,
4468 p_purchase_option IN VARCHAR2,
4469 p_fin_product_id IN VARCHAR2,
4470 p_try_id IN NUMBER,
4471 p_sty_id IN NUMBER,
4472 p_int_disclosed_code IN VARCHAR2,
4473 p_title_trnsfr_code IN VARCHAR2,
4474 p_sale_lease_back_code IN VARCHAR2,
4475 p_lease_purchased_code IN VARCHAR2,
4476 p_equip_usage_code IN VARCHAR2,
4477 p_vendor_site_id IN NUMBER,
4478 p_age_of_equip IN NUMBER,
4479 p_term_quote_type_code IN VARCHAR2 DEFAULT NULL,
4480 p_term_quote_reason_code IN VARCHAR2 DEFAULT NULL,
4481 p_tax_country_code IN VARCHAR2,
4482 x_ufc_code OUT NOCOPY VARCHAR2) IS
4483
4484 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4485
4486 -- Get all the UFC definitions applicable to a transaction type
4487 CURSOR l_ufcdef_csr(cp_try_id IN NUMBER) IS
4488 SELECT result_code ufc_code,
4489 try_id,
4490 sty_id ,
4491 purchase_option_code,
4492 equip_usage_code,
4493 vendor_site_id,
4494 age_of_equip_from,
4495 age_of_equip_to,
4496 pdt_id,
4497 int_disclosed_code ,
4498 title_trnsfr_code,
4499 sale_lease_back_code,
4500 lease_purchased_code,
4501 term_quote_type_code,
4502 term_quote_reason_code,
4503 tax_country_code,
4504 'Y' select_yn -- all ufcs returned by this cursor are selected initially
4505 FROM okl_tax_attr_definitions
4506 WHERE (try_id = cp_try_id OR try_id IS NULL)
4507 AND RESULT_TYPE_CODE = 'UFC_CODE'
4508 AND NVL(expire_flag, 'N') = 'N';
4509
4510
4511 TYPE ufcdefs_tbl_type IS TABLE OF l_ufcdef_csr%ROWTYPE INDEX BY BINARY_INTEGER;
4512 TYPE ufcdefs_selected_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
4513 TYPE det_null_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
4514
4515 l_ufcdefs_tbl ufcdefs_tbl_type;
4516 l_det_null_tbl det_null_tbl_type;
4517 l_ufcdefs_selected_tbl ufcdefs_selected_tbl_type;
4518
4519 i NUMBER;
4520 j NUMBER;
4521 k NUMBER;
4522 ufc_set_count NUMBER;
4523 l_ufc_code VARCHAR2(30);
4524 selected_count NUMBER;
4525 det_match_cnt NUMBER;
4526 l_selected_ufc_pos NUMBER;
4527 BEGIN
4528
4529 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4530 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code','Begin(+)');
4531 END IF;
4532
4533 -- Print Input Variables
4534 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4535 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4536 'p_init_msg_list :'||p_init_msg_list);
4537 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4538 'p_purchase_option :'||p_purchase_option);
4539 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4540 'p_fin_product_id :'||p_fin_product_id);
4541 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4542 'p_try_id :'||p_try_id);
4543 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4544 'p_sty_id :'||p_sty_id);
4545 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4546 'p_int_disclosed_code :'||p_int_disclosed_code);
4547 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4548 'p_title_trnsfr_code :'||p_title_trnsfr_code);
4549 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4550 'p_sale_lease_back_code :'||p_sale_lease_back_code);
4551 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4552 'p_lease_purchased_code :'||p_lease_purchased_code);
4553 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4554 'p_equip_usage_code :'||p_equip_usage_code);
4555 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4556 'p_vendor_site_id :'||p_vendor_site_id);
4557 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4558 'p_age_of_equip :'||p_age_of_equip);
4559 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4560 'term_quote_type_code :'|| p_term_quote_type_code);
4561 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4562 'term_quote_reason_code :'|| p_term_quote_reason_code);
4563 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4564 'p_tax_country_code :'|| p_tax_country_code);
4565 END IF;
4566
4567 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4568
4569 OPEN l_ufcdef_csr(p_try_id);
4570 FETCH l_ufcdef_csr BULK COLLECT INTO l_ufcdefs_tbl;
4571 CLOSE l_ufcdef_csr;
4572
4573 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4574 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4575 'l_ufcdefs_tbl.COUNT '||l_ufcdefs_tbl.COUNT);
4576 END IF;
4577
4578 IF l_ufcdefs_tbl.COUNT > 0 THEN -- MAIN IF
4579 k := 1;
4580 FOR i IN 1 .. 13 LOOP -- determinant loop
4581 ufc_set_count := 0;
4582
4583 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4584 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4585 'i '||i);
4586 END IF;
4587
4588 FOR j IN l_ufcdefs_tbl.FIRST .. l_ufcdefs_tbl.LAST LOOP
4589
4590 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4591 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4592 'j '||j||' l_ufcdefs_tbl(j).select_yn '||l_ufcdefs_tbl(j).select_yn );
4593 END IF;
4594
4595 IF l_ufcdefs_tbl(j).select_yn = 'Y' THEN
4596 IF i = 1 THEN -- stream type
4597 IF p_sty_id IS NULL THEN
4598 IF l_ufcdefs_tbl(j).sty_id IS NULL THEN
4599 ufc_set_count := ufc_set_count + 1;
4600 ELSE
4601 l_ufcdefs_tbl(j).select_yn := 'N';
4602 END IF;
4603 ELSE
4604 IF l_ufcdefs_tbl(j).sty_id IS NULL OR l_ufcdefs_tbl(j).sty_id = p_sty_id THEN
4605 ufc_set_count := ufc_set_count + 1;
4606 ELSE
4607 l_ufcdefs_tbl(j).select_yn := 'N';
4608 END IF;
4609 END IF;
4610
4611 ELSIF i = 2 THEN -- term quote type
4612 IF p_term_quote_type_code IS NULL THEN
4613 IF l_ufcdefs_tbl(j).term_quote_type_code IS NULL THEN
4614 ufc_set_count := ufc_set_count + 1;
4615 ELSE
4616 l_ufcdefs_tbl(j).select_yn := 'N';
4617 END IF;
4618 ELSE
4619 IF l_ufcdefs_tbl(j).term_quote_type_code IS NULL OR
4620 l_ufcdefs_tbl(j).term_quote_type_code = p_term_quote_type_code THEN
4621 ufc_set_count := ufc_set_count + 1;
4622 ELSE
4623 l_ufcdefs_tbl(j).select_yn := 'N';
4624 END IF;
4625 END IF;
4626
4627 ELSIF i = 3 THEN -- term quote reason
4628 IF p_term_quote_reason_code IS NULL THEN
4629 IF l_ufcdefs_tbl(j).term_quote_reason_code IS NULL THEN
4630 ufc_set_count := ufc_set_count + 1;
4631 ELSE
4632 l_ufcdefs_tbl(j).select_yn := 'N';
4633 END IF;
4634 ELSE
4635 IF l_ufcdefs_tbl(j).term_quote_reason_code IS NULL OR
4636 l_ufcdefs_tbl(j).term_quote_reason_code = p_term_quote_reason_code THEN
4637 ufc_set_count := ufc_set_count + 1;
4638 ELSE
4639 l_ufcdefs_tbl(j).select_yn := 'N';
4640 END IF;
4641 END IF;
4642
4643 ELSIF i = 4 THEN -- purchase option
4644 IF p_purchase_option IS NULL THEN
4645 IF l_ufcdefs_tbl(j).purchase_option_code IS NULL THEN
4646 ufc_set_count := ufc_set_count + 1;
4647 ELSE
4648 l_ufcdefs_tbl(j).select_yn := 'N';
4649 END IF;
4650 ELSE
4651 IF l_ufcdefs_tbl(j).purchase_option_code IS NULL OR l_ufcdefs_tbl(j).purchase_option_code = p_purchase_option THEN
4652 ufc_set_count := ufc_set_count + 1;
4653 ELSE
4654 l_ufcdefs_tbl(j).select_yn := 'N';
4655 END IF;
4656 END IF;
4657
4658 ELSIF i = 5 THEN -- usage of equipment
4659 IF p_equip_usage_code IS NULL THEN
4660 IF l_ufcdefs_tbl(j).equip_usage_code IS NULL THEN
4661 ufc_set_count := ufc_set_count + 1;
4662 ELSE
4663 l_ufcdefs_tbl(j).select_yn := 'N';
4664 END IF;
4665 ELSE -- 22-NOV-05 SECHAWLA 4742539 : fixed the parameter name in the following comparison
4666 IF l_ufcdefs_tbl(j).equip_usage_code IS NULL OR l_ufcdefs_tbl(j).equip_usage_code = p_equip_usage_code THEN
4667 ufc_set_count := ufc_set_count + 1;
4668 ELSE
4669 l_ufcdefs_tbl(j).select_yn := 'N';
4670 END IF;
4671 END IF;
4672
4673 ELSIF i = 6 THEN -- vendor location
4674 IF p_VENDOR_SITE_ID IS NULL THEN
4675 IF l_ufcdefs_tbl(j).VENDOR_SITE_ID IS NULL THEN
4676 ufc_set_count := ufc_set_count + 1;
4677 ELSE
4678 l_ufcdefs_tbl(j).select_yn := 'N';
4679 END IF;
4680 ELSE -- 22-NOV-05 SECHAWLA 4742539 : fixed the parameter name in the following comparison
4681 IF l_ufcdefs_tbl(j).VENDOR_SITE_ID IS NULL OR l_ufcdefs_tbl(j).VENDOR_SITE_ID = p_VENDOR_SITE_ID THEN
4682 ufc_set_count := ufc_set_count + 1;
4683 ELSE
4684 l_ufcdefs_tbl(j).select_yn := 'N';
4685 END IF;
4686 END IF;
4687
4688 ELSIF i = 7 THEN -- age of equipment
4689 IF p_age_of_equip IS NULL THEN
4690 IF l_ufcdefs_tbl(j).age_of_equip_from IS NULL AND l_ufcdefs_tbl(j).age_of_equip_to IS NULL THEN
4691 ufc_set_count := ufc_set_count + 1;
4692 ELSE
4693 l_ufcdefs_tbl(j).select_yn := 'N';
4694 END IF;
4695 ELSE
4696 IF ( (l_ufcdefs_tbl(j).age_of_equip_from IS NULL AND l_ufcdefs_tbl(j).age_of_equip_to IS NULL) OR
4697 ( (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
4698 ( l_ufcdefs_tbl(j).age_of_equip_to IS NULL AND l_ufcdefs_tbl(j).age_of_equip_from <= p_age_of_equip)
4699 ) THEN
4700 ufc_set_count := ufc_set_count + 1;
4701 ELSE
4702 l_ufcdefs_tbl(j).select_yn := 'N';
4703 END IF;
4704 END IF;
4705
4706 ELSIF i = 8 THEN -- financial product
4707 IF p_fin_product_id IS NULL THEN
4708 IF l_ufcdefs_tbl(j).pdt_id IS NULL THEN
4709 ufc_set_count := ufc_set_count + 1;
4710 ELSE
4711 l_ufcdefs_tbl(j).select_yn := 'N';
4712 END IF;
4713 ELSE
4714 IF l_ufcdefs_tbl(j).pdt_id IS NULL OR l_ufcdefs_tbl(j).pdt_id = p_fin_product_id THEN
4715 ufc_set_count := ufc_set_count + 1;
4716 ELSE
4717 l_ufcdefs_tbl(j).select_yn := 'N';
4718 END IF;
4719 END IF;
4720
4721 ELSIF i = 9 THEN -- interest disclosed
4722 IF p_int_disclosed_code IS NULL OR p_int_disclosed_code = 'N' THEN
4723 IF l_ufcdefs_tbl(j).int_disclosed_code = 'N' THEN -- INT_DISCLOSED_CODE can not be null on DB
4724 ufc_set_count := ufc_set_count + 1;
4725 ELSE
4726 l_ufcdefs_tbl(j).select_yn := 'N';
4727 END IF;
4728 ELSE
4729 ufc_set_count := ufc_set_count + 1;
4730 END IF;
4731
4732 ELSIF i = 10 THEN -- transfer of Title
4733 IF p_title_trnsfr_code IS NULL OR p_title_trnsfr_code = 'N' THEN
4734 IF l_ufcdefs_tbl(j).title_trnsfr_code = 'N' THEN -- TITLE_TRNSFR_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 = 11 THEN -- sale and lease back
4744 IF p_sale_lease_back_code IS NULL OR p_sale_lease_back_code = 'N' THEN
4745 IF l_ufcdefs_tbl(j).sale_lease_back_code = 'N' THEN --SALE_LEASE_BACK_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 = 12 THEN -- purchase of lease
4755 IF p_lease_purchased_code IS NULL OR p_lease_purchased_code = 'N' THEN
4756 IF l_ufcdefs_tbl(j).lease_purchased_code = 'N' THEN --LEASE_PURCHASED_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 = 13 THEN --taxation country (last determinant)
4766 IF p_tax_country_code IS NULL THEN
4767 IF l_ufcdefs_tbl(j).tax_country_code IS NULL THEN
4768 ufc_set_count := ufc_set_count + 1;
4769 l_ufcdefs_selected_tbl(k) := j;
4770 ELSE
4771 l_ufcdefs_tbl(j).select_yn := 'N';
4772 END IF;
4773 ELSE
4774 IF l_ufcdefs_tbl(j).tax_country_code IS NULL OR
4775 l_ufcdefs_tbl(j).tax_country_code = p_tax_country_code THEN
4776 ufc_set_count := ufc_set_count + 1;
4777 l_ufcdefs_selected_tbl(k) := j;
4778 ELSE
4779 l_ufcdefs_tbl(j).select_yn := 'N';
4780 END IF;
4781 END IF;
4782
4783 /*IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4784 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4785 'k '||k||' l_ufcdefs_selected_tbl(k) '||l_ufcdefs_selected_tbl(k));
4786 END IF;*/
4787 k := k + 1;
4788 END IF;
4789
4790 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4791 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4792 'ufc_set_count '||ufc_set_count);
4793 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4794 'l_ufcdefs_tbl(j).select_yn '||l_ufcdefs_tbl(j).select_yn);
4795 END IF;
4796 END IF;
4797 END LOOP;
4798
4799 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4801 'ufc_set_count '||ufc_set_count);
4802 END IF;
4803
4804 IF ufc_set_count = 0 THEN
4805 EXIT;
4806 END IF;
4807 END LOOP;
4808
4809 -- At this point l_ufcdefs_tbl has been scanned for all the determinants.
4810 -- select_yn flag in this table is set to 'Y' for ufcs that have either Null
4811 -- determinnt value or value matching with the transaction. Table l_ufcdefs_selected_tbl
4812 -- holds those indexes of original table l_ufcdefs_tbl, that have seleted ufcs.
4813 -- At this point this table may contain more than 1 ufcs. If so, we need to further filter
4814 -- out ufcs from this table based upon the priority of the determinants.
4815 -- Following priority order is used :
4816 -- 1. Transaction Type
4817 -- 2. Stream Type
4818 -- 3. Purchase Option
4819 -- 4. Usage Of Equipment
4820 -- 5. Vendor Location
4821 -- 6. Age of Equipment
4822 -- 7. Financial Product
4823 -- 8. Interest Disclosed
4824 -- 9. Transfer Of Title
4825 -- 10. Sale and Lease back
4826 -- 11. Purchase of Lease
4827
4828 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4829 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4830 'ufc_set_count outside first loop'||ufc_set_count);
4831 END IF;
4832
4833 IF ufc_set_count = 1 THEN
4834 l_ufc_code := l_ufcdefs_tbl(l_ufcdefs_selected_tbl(1)).ufc_code;
4835
4836 ELSIF ufc_set_count > 1 THEN
4837 -- There can be more than one selected ufcs at this point
4838 -- apply determinant priority logic to select 1 ufc
4839
4840 selected_count := ufc_set_count;
4841
4842 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4843 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4844 'l_ufcdefs_selected_tbl.count '||l_ufcdefs_selected_tbl.count );
4845 END IF;
4846
4847 FOR i IN 1..14 LOOP -- determinant loop
4848
4849 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4850 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4851 'i '||i||' selected_count '||selected_count );
4852 END IF;
4853
4854 j := 1;
4855 det_match_cnt := 0;
4856 l_det_null_tbl.DELETE;
4857
4858 IF selected_count > 1 THEN
4859 FOR k IN l_ufcdefs_selected_tbl.FIRST .. l_ufcdefs_selected_tbl.LAST LOOP -- finally selected indexes
4860 -- At this point all the selecetd ufcs will either have Null determinant value or determinant value matching with the calling transaction
4861 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4862 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.','k '||k);
4863 END IF;
4864
4865 IF i = 1 THEN -- transaction type
4866 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).try_id IS NULL THEN
4867
4868 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4869 j := j + 1;
4870 ELSE
4871 det_match_cnt := det_match_cnt + 1;
4872 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4873 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4874 -- when only one UFC is left
4875 END IF;
4876
4877 IF k = ufc_set_count THEN -- last record
4878 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4879 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4880 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4881 END IF;
4882
4883 IF det_match_cnt = selected_count THEN --k THEN
4884 NULL; -- all records have matching values, do nothing
4885 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4886 NULL; -- keep all records selected. Don't exclude yet.
4887 ELSIF det_match_cnt = 1 THEN
4888 selected_count := 1;
4889 ELSE -- more than one but less than total selected records have matching values
4890 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4891 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4892 selected_count := selected_count - 1;
4893 END LOOP;
4894 END IF;
4895 END IF;
4896
4897 ELSIF i = 2 THEN -- stream type
4898 IF p_sty_id IS NOT NULL THEN
4899 -- IF p_sty_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
4900 -- only NULL values for sty_id. So no need to filter further, move on to next determinant
4901 -- When system is processing a determinant, there will always be more than one selected ufcS
4902 -- This is because, at the end of processing each determinant, we check the selected count
4903 -- If selected count = 1 then we do not process next determinant and exit
4904 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4905 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).sty_id IS NULL THEN
4906 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4907 j := j + 1;
4908 ELSE
4909 det_match_cnt := det_match_cnt + 1;
4910 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4911 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4912 -- when only one UFC is left
4913 END IF;
4914 END IF;
4915
4916 IF k = ufc_set_count THEN -- last record
4917 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4918 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4919 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4920 END IF;
4921
4922 IF det_match_cnt = selected_count THEN --k THEN
4923 NULL; -- all records have matching values, do nothing
4924 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4925 NULL; -- keep all records selected. Don't exclude yet.
4926 ELSIF det_match_cnt = 1 THEN
4927 selected_count := 1;
4928 ELSE -- more than one but less than total selected records have matching values
4929 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4930 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4931 selected_count := selected_count - 1;
4932 END LOOP;
4933 END IF;
4934 END IF;
4935 END IF;
4936
4937 ELSIF i = 3 THEN -- termination quote type
4938 IF p_term_quote_type_code IS NOT NULL THEN
4939 -- IF p_term_quote_type_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
4940 -- only NULL values for term_quote_type_code. So no need to filter further, move on to next determinant
4941 -- When system is processing a determinant, there will always be more than one selected ufcS
4942 -- This is because, at the end of processing each determinant, we check the selected count
4943 -- If selected count = 1 then we do not process next determinant and exit
4944 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4945 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).term_quote_type_code IS NULL THEN
4946 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4947 j := j + 1;
4948 ELSE
4949 det_match_cnt := det_match_cnt + 1;
4950 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4951 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4952 -- when only one UFC is left
4953 END IF;
4954 END IF;
4955
4956 IF k = ufc_set_count THEN -- last record
4957 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4958 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4959 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
4960 END IF;
4961
4962 IF det_match_cnt = selected_count THEN --k THEN
4963 NULL; -- all records have matching values, do nothing
4964 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
4965 NULL; -- keep all records selected. Don't exclude yet.
4966 ELSIF det_match_cnt = 1 THEN
4967 selected_count := 1;
4968 ELSE -- more than one but less than total selected records have matching values
4969 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
4970 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
4971 selected_count := selected_count - 1;
4972 END LOOP;
4973 END IF;
4974 END IF;
4975 END IF;
4976
4977 ELSIF i = 4 THEN -- termination quote reason
4978 IF p_term_quote_reason_code IS NOT NULL THEN
4979 -- IF p_term_quote_reason_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
4980 -- only NULL values for term_quote_reason_code. So no need to filter further, move on to next determinant
4981 -- When system is processing a determinant, there will always be more than one selected ufcS
4982 -- This is because, at the end of processing each determinant, we check the selected count
4983 -- If selected count = 1 then we do not process next determinant and exit
4984 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
4985 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).term_quote_reason_code IS NULL THEN
4986 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
4987 j := j + 1;
4988 ELSE
4989 det_match_cnt := det_match_cnt + 1;
4990 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
4991 -- l_selected_ufc_pos will be used as the index of the selected ufc,
4992 -- when only one UFC is left
4993 END IF;
4994 END IF;
4995
4996 IF k = ufc_set_count THEN -- last record
4997 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
4998 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
4999 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5000 END IF;
5001
5002 IF det_match_cnt = selected_count THEN --k THEN
5003 NULL; -- all records have matching values, do nothing
5004 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5005 NULL; -- keep all records selected. Don't exclude yet.
5006 ELSIF det_match_cnt = 1 THEN
5007 selected_count := 1;
5008 ELSE -- more than one but less than total selected records have matching values
5009 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5010 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5011 selected_count := selected_count - 1;
5012 END LOOP;
5013 END IF;
5014 END IF;
5015 END IF;
5016
5017 ELSIF i = 5 THEN -- purchase option
5018 IF p_purchase_option IS NOT NULL THEN
5019 -- IF p_purchase_option is null then l_ufcdefs_tbl will have more than 1 ufcs with
5020 -- only NULL values for purchase_option. So no need to filter further, move on to next determinant
5021 -- When system is processing a determinant, there will always be more than one selected ufcS
5022 -- This is because, at the end of processing each determinant, we check the selected count
5023 -- If selected count = 1 then we do not process next determinant and exit
5024 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5025 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).purchase_option_code IS NULL THEN
5026 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5027 j := j + 1;
5028 ELSE
5029 det_match_cnt := det_match_cnt + 1;
5030 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5031 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5032 -- when only one UFC is left
5033 END IF;
5034 END IF;
5035
5036 IF k = ufc_set_count THEN -- last record
5037 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5038 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5039 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5040 END IF;
5041
5042 IF det_match_cnt = selected_count THEN --k THEN
5043 NULL; -- all records have matching values, do nothing
5044 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5045 NULL; -- keep all records selected. Don't exclude yet.
5046 ELSIF det_match_cnt = 1 THEN
5047 selected_count := 1;
5048 ELSE -- more than one but less than total selected records have matching values
5049 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5050 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5051 selected_count := selected_count - 1;
5052 END LOOP;
5053 END IF;
5054 END IF;
5055 END IF;
5056
5057 ELSIF i = 6 THEN -- usage of equipment
5058 IF p_equip_usage_code IS NOT NULL THEN
5059 -- IF p_equip_usage_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
5060 -- only NULL values for equip_usage_code. So no need to filter further, move on to next determinant
5061 -- When system is processing a determinant, there will always be more than one selected ufcS
5062 -- This is because, at the end of processing each determinant, we check the selected count
5063 -- If selected count = 1 then we do not process next determinant and exit
5064 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5065 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).equip_usage_code IS NULL THEN
5066 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5067 j := j + 1;
5068 ELSE
5069 det_match_cnt := det_match_cnt + 1;
5070 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5071 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5072 -- when only one UFC is left
5073 END IF;
5074 END IF;
5075
5076 IF k = ufc_set_count THEN -- last record
5077 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5078 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5079 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5080 END IF;
5081
5082 IF det_match_cnt = selected_count THEN --k THEN
5083 NULL; -- all records have matching values, do nothing
5084 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5085 NULL; -- keep all records selected. Don't exclude yet.
5086 ELSIF det_match_cnt = 1 THEN
5087 selected_count := 1;
5088 ELSE -- more than one but less than total selected records have matching values
5089 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5090 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5091 selected_count := selected_count - 1;
5092 END LOOP;
5093 END IF;
5094 END IF;
5095 END IF;
5096
5097 ELSIF i = 7 THEN -- vendor location
5098 IF p_vendor_site_id IS NOT NULL THEN
5099 -- IF p_vendor_site_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
5100 -- only NULL values for vendor_site_id. So no need to filter further, move on to next determinant
5101 -- When system is processing a determinant, there will always be more than one selected ufcS
5102 -- This is because, at the end of processing each determinant, we check the selected count
5103 -- If selected count = 1 then we do not process next determinant and exit
5104 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5105 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).vendor_site_id IS NULL THEN
5106 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5107 j := j + 1;
5108 ELSE
5109 det_match_cnt := det_match_cnt + 1;
5110 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5111 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5112 -- when only one UFC is left
5113 END IF;
5114 END IF;
5115
5116 IF k = ufc_set_count THEN -- last record
5117 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5118 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5119 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5120 END IF;
5121
5122 IF det_match_cnt = selected_count THEN --k THEN
5123 NULL; -- all records have matching values, do nothing
5124 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5125 NULL; -- keep all records selected. Don't exclude yet.
5126 ELSIF det_match_cnt = 1 THEN
5127 selected_count := 1;
5128 ELSE -- more than one but less than total selected records have matching values
5129 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5130 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5131 selected_count := selected_count - 1;
5132 END LOOP;
5133 END IF;
5134 END IF;
5135 END IF;
5136
5137 ELSIF i = 8 THEN -- age of equipment
5138 IF p_age_of_equip IS NOT NULL THEN
5139 -- IF p_age_of_equip is null then l_ufcdefs_tbl will have more than 1 ufcs with
5140 -- only NULL values for age_of_equip. So no need to filter further, move on to next determinant
5141 -- When system is processing a determinant, there will always be more than one selected ufcS
5142 -- This is because, at the end of processing each determinant, we check the selected count
5143 -- If selected count = 1 then we do not process next determinant and exit
5144 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5145 IF (l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).age_of_equip_from IS NULL AND
5146 l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).age_of_equip_to IS NULL) THEN
5147 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5148 j := j + 1;
5149 ELSE
5150 det_match_cnt := det_match_cnt + 1;
5151 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5152 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5153 -- when only one UFC is left
5154 END IF;
5155 END IF;
5156
5157 IF k = ufc_set_count THEN -- last record
5158 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5159 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5160 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5161 END IF;
5162
5163 IF det_match_cnt = selected_count THEN --k THEN
5164 NULL; -- all records have matching values, do nothing
5165 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5166 NULL; -- keep all records selected. Don't exclude yet.
5167 ELSIF det_match_cnt = 1 THEN
5168 selected_count := 1;
5169 ELSE -- more than one but less than total selected records have matching values
5170 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5171 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5172 selected_count := selected_count - 1;
5173 END LOOP;
5174 END IF;
5175 END IF;
5176 END IF;
5177
5178 ELSIF i = 9 THEN -- financial product
5179 IF p_fin_product_id IS NOT NULL THEN
5180 -- IF p_fin_product_id is null then l_ufcdefs_tbl will have more than 1 ufcs with
5181 -- only NULL values for fin_product_id. So no need to filter further, move on to next determinant
5182 -- When system is processing a determinant, there will always be more than one selected ufcS
5183 -- This is because, at the end of processing each determinant, we check the selected count
5184 -- If selected count = 1 then we do not process next determinant and exit
5185 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5186 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).pdt_id IS NULL THEN
5187 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5188 j := j + 1;
5189 ELSE
5190 det_match_cnt := det_match_cnt + 1;
5191 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5192 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5193 -- when only one UFC is left
5194 END IF;
5195 END IF;
5196
5197 IF k = ufc_set_count THEN -- last record
5198 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5199 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5200 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5201 END IF;
5202
5203 IF det_match_cnt = selected_count THEN --k THEN
5204 NULL; -- all records have matching values, do nothing
5205 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5206 NULL; -- keep all records selected. Don't exclude yet.
5207 ELSIF det_match_cnt = 1 THEN
5208 selected_count := 1;
5209 ELSE -- more than one but less than total selected records have matching values
5210 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5211 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5212 selected_count := selected_count - 1;
5213 END LOOP;
5214 END IF;
5215 END IF;
5216 END IF;
5217
5218 ELSIF i = 10 THEN -- interest disclosed
5219 IF p_int_disclosed_code = 'Y' THEN
5220 -- IF p_int_disclosed_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5221 -- only NULL values for int_disclosed_code. So no need to filter further, move on to next determinant
5222 -- When system is processing a determinant, there will always be more than one selected ufcS
5223 -- This is because, at the end of processing each determinant, we check the selected count
5224 -- If selected count = 1 then we do not process next determinant and exit
5225 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5226 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).int_disclosed_code = 'N' THEN
5227 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5228 j := j + 1;
5229 ELSE
5230 det_match_cnt := det_match_cnt + 1;
5231 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5232 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5233 -- when only one UFC is left
5234 END IF;
5235 END IF;
5236
5237 IF k = ufc_set_count THEN -- last record
5238 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5239 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5240 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5241 END IF;
5242
5243 IF det_match_cnt = selected_count THEN --k THEN
5244 NULL; -- all records have matching values, do nothing
5245 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5246 NULL; -- keep all records selected. Don't exclude yet.
5247 ELSIF det_match_cnt = 1 THEN
5248 selected_count := 1;
5249 ELSE -- more than one but less than total selected records have matching values
5250 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5251 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5252 selected_count := selected_count - 1;
5253 END LOOP;
5254 END IF;
5255 END IF;
5256 END IF;
5257
5258 ELSIF i = 11 THEN -- transfer of title
5259 IF p_title_trnsfr_code = 'Y' THEN
5260 -- IF p_title_trnsfr_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5261 -- only NULL values for title_trnsfr_code. So no need to filter further, move on to next determinant
5262 -- When system is processing a determinant, there will always be more than one selected ufcS
5263 -- This is because, at the end of processing each determinant, we check the selected count
5264 -- If selected count = 1 then we do not process next determinant and exit
5265 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5266 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).title_trnsfr_code = 'N' THEN
5267 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5268 j := j + 1;
5269 ELSE
5270 det_match_cnt := det_match_cnt + 1;
5271 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5272 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5273 -- when only one UFC is left
5274 END IF;
5275 END IF;
5276
5277 IF k = ufc_set_count THEN -- last record
5278 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5279 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5280 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5281 END IF;
5282
5283 IF det_match_cnt = selected_count THEN --k THEN
5284 NULL; -- all records have matching values, do nothing
5285 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5286 NULL; -- keep all records selected. Don't exclude yet.
5287 ELSIF det_match_cnt = 1 THEN
5288 selected_count := 1;
5289 ELSE -- more than one but less than total selected records have matching values
5290 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5291 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5292 selected_count := selected_count - 1;
5293 END LOOP;
5294 END IF;
5295 END IF;
5296 END IF;
5297
5298 ELSIF i = 12 THEN -- sale and lease back
5299 IF p_sale_lease_back_code = 'Y' THEN
5300 -- IF p_sale_lease_back_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5301 -- only NULL values for sale_lease_back_code. So no need to filter further, move on to next determinant
5302 -- When system is processing a determinant, there will always be more than one selected ufcS
5303 -- This is because, at the end of processing each determinant, we check the selected count
5304 -- If selected count = 1 then we do not process next determinant and exit
5305 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5306 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).sale_lease_back_code = 'N' THEN
5307 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5308 j := j + 1;
5309 ELSE
5310 det_match_cnt := det_match_cnt + 1;
5311 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5312 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5313 -- when only one UFC is left
5314 END IF;
5315 END IF;
5316
5317 IF k = ufc_set_count THEN -- last record
5318 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5319 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5320 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5321 END IF;
5322
5323 IF det_match_cnt = selected_count THEN --k THEN
5324 NULL; -- all records have matching values, do nothing
5325 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5326 NULL; -- keep all records selected. Don't exclude yet.
5327 ELSIF det_match_cnt = 1 THEN
5328 selected_count := 1;
5329 ELSE -- more than one but less than total selected records have matching values
5330 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5331 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5332 selected_count := selected_count - 1;
5333 END LOOP;
5334 END IF;
5335 END IF;
5336 END IF;
5337
5338 ELSIF i = 13 THEN -- purchase of lease
5339 IF p_lease_purchased_code = 'Y' THEN
5340 -- IF p_lease_purchased_code is 'Y' then l_ufcdefs_tbl will have more than 1 ufcs with
5341 -- only NULL values for lease_purchased_code. So no need to filter further, move on to next determinant
5342 -- When system is processing a determinant, there will always be more than one selected ufcS
5343 -- This is because, at the end of processing each determinant, we check the selected count
5344 -- If selected count = 1 then we do not process next determinant and exit
5345 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5346 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).lease_purchased_code = 'N' THEN
5347 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5348 j := j + 1;
5349 ELSE
5350 det_match_cnt := det_match_cnt + 1;
5351 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5352 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5353 -- when only one UFC is left
5354 END IF;
5355 END IF;
5356
5357 IF k = ufc_set_count THEN -- last record
5358 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5359 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5360 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5361 END IF;
5362
5363 IF det_match_cnt = selected_count THEN --k THEN
5364 NULL; -- all records have matching values, do nothing
5365 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5366 NULL; -- keep all records selected. Don't exclude yet.
5367 ELSIF det_match_cnt = 1 THEN
5368 selected_count := 1;
5369 ELSE -- more than one but less than total selected records have matching values
5370 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5371 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5372 selected_count := selected_count - 1;
5373 END LOOP;
5374 END IF;
5375 END IF;
5376 END IF;
5377
5378 ELSIF i = 14 THEN -- tax country
5379 IF p_tax_country_code IS NOT NULL THEN
5380 -- IF p_tax_country_code is null then l_ufcdefs_tbl will have more than 1 ufcs with
5381 -- only NULL values for tax_country_code. So no need to filter further, move on to next determinant
5382 -- When system is processing a determinant, there will always be more than one selected ufcS
5383 -- This is because, at the end of processing each determinant, we check the selected count
5384 -- If selected count = 1 then we do not process next determinant and exit
5385 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).select_yn = 'Y' THEN -- if still selected
5386 IF l_ufcdefs_tbl(l_ufcdefs_selected_tbl(k)).tax_country_code IS NULL THEN
5387 l_det_null_tbl(j) := l_ufcdefs_selected_tbl(k);
5388 j := j + 1;
5389 ELSE
5390 det_match_cnt := det_match_cnt + 1;
5391 l_selected_ufc_pos := l_ufcdefs_selected_tbl(k);
5392 -- l_selected_ufc_pos will be used as the index of the selected ufc,
5393 -- when only one UFC is left
5394 END IF;
5395 END IF;
5396
5397 IF k = ufc_set_count THEN -- last record
5398 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5399 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5400 'det_match_cnt '||det_match_cnt||' l_det_null_tbl.count '||l_det_null_tbl.count);
5401 END IF;
5402
5403 IF det_match_cnt = selected_count THEN --k THEN
5404 NULL; -- all records have matching values, do nothing
5405 ELSIF det_match_cnt = 0 THEN -- ALL records have NULL try_id
5406 NULL; -- keep all records selected. Don't exclude yet.
5407 ELSIF det_match_cnt = 1 THEN
5408 selected_count := 1;
5409 ELSE -- more than one but less than total selected records have matching values
5410 FOR p IN l_det_null_tbl.FIRST .. l_det_null_tbl.LAST LOOP
5411 l_ufcdefs_tbl(l_det_null_tbl(p)).select_yn := 'N';
5412 selected_count := selected_count - 1;
5413 END LOOP;
5414 END IF;
5415 END IF;
5416 END IF;
5417 END IF;
5418 END LOOP;
5419 ELSIF selected_count = 1 THEN
5420 EXIT;
5421 END IF;
5422 END LOOP; -- determinant loop
5423
5424 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5426 'selected_count outside 2nd loop '||selected_count);
5427 END IF;
5428
5429 IF selected_count = 1 THEN
5430 l_ufc_code := l_ufcdefs_tbl(l_selected_ufc_pos).ufc_code;
5431 ELSIF selected_count > 1 THEN -- still more than one ufcs are selected
5432 l_ufc_code := NULL;
5433 END IF;
5434
5435 ELSIF ufc_set_count = 0 THEN
5436 l_ufc_code := NULL;
5437 END IF;
5438 END IF; -- MAIN IF Ends
5439
5440 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5441 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code.',
5442 'l_ufc_code '||l_ufc_code);
5443 END IF;
5444
5445 -- UFC can be NULL
5446 x_ufc_code := l_ufc_code;
5447
5448 EXCEPTION
5449 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5450
5451 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5452 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5453 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
5454 END IF;
5455
5456 IF l_ufcdef_csr%ISOPEN THEN
5457 CLOSE l_ufcdef_csr;
5458 END IF;
5459
5460 x_return_status := OKL_API.G_RET_STS_ERROR;
5461 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5462
5463 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5464 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5465 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
5466 END IF;
5467
5468 IF l_ufcdef_csr%ISOPEN THEN
5469 CLOSE l_ufcdef_csr;
5470 END IF;
5471
5472 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
5473
5474 WHEN OTHERS THEN
5475 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5476 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_ufc_code ',
5477 'EXCEPTION :'||sqlerrm);
5478 END IF;
5479
5480 IF l_ufcdef_csr%ISOPEN THEN
5481 CLOSE l_ufcdef_csr;
5482 END IF;
5483
5484
5485 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
5486 -- unexpected error
5487 OKL_API.set_message(p_app_name => g_app_name,
5488 p_msg_name => g_unexpected_error,
5489 p_token1 => g_sqlcode_token,
5490 p_token1_value => sqlcode,
5491 p_token2 => g_sqlerrm_token,
5492 p_token2_value => sqlerrm);
5493
5494 END get_ufc_code;
5495
5496 /*========================================================================
5497 | PRIVATE PROCEDURE populate_tax_info
5498 |
5499 | DESCRIPTION
5500 | This procedure derives the tax sources and tax details to populate ZX tables
5501 |
5502 | CALLED FROM
5503 | process_booking_upfront_tax
5504 | process_quote_tax
5505 | process_asset_loc_tax
5506 | process_quoting_upfront_tax
5507 |
5508 |
5509 | CALLS PROCEDURES/FUNCTIONS
5510 | get_ufc_code()
5511 | okl_am_util_pvt.get_formula_value()
5512 |
5513 | PARAMETERS
5514 | p_prch_opt_det -- Purchase Option
5515 | p_fin_prod_id_det -- Financial product
5516 | p_int_disclosed_det -- Interest Disclosed
5517 | -- asset level begin
5518 | p_TITLE_TRNSFR_CODE -- Transfer of Title
5519 | p_SALE_LEASE_BACK_CODE -- Sale and Lease Back
5520 | p_LEASE_PURCHASED_CODE -- Purchase of Lease
5521 | p_EQUIP_USAGE_CODE -- Usage Of Equipment
5522 | p_VENDOR_SITE_ID -- Vendor Site ID
5523 | p_AGE_OF_EQUIP -- Age of Equipment
5524 | p_kle_id -- Kle ID
5525 | p_asset_number -- Asset Number
5526 | p_ship_to_site_use_id -- Ship to Site Use ID
5527 | p_inventory_item_id -- Inventory Item ID
5528 | --asset level end
5529 | p_sty_id -- Stream Type ID
5530 | p_taxable_basis -- Taxable Basis Amount
5531 | p_tax_call_cnt -- counter
5532 | px_tax_sources_tbl -- table used to store tax source transactions
5533 | p_khr_id -- contract ID
5534 | p_source_trx_id -- Source Trx ID
5535 | p_source_table -- Source Table
5536 | p_reported_yn -- reportable y/n
5537 | p_fma_id -- formula ID
5538 | p_formula_name -- formula name
5539 | p_bill_to_siteuseid -- Bill to site use id
5540 | lx_trx_rec_tbl -- table used to store input data for the TAx Engine call
5541 | p_k_start_date -- contract start date
5542 | p_currency_code -- Currency Code
5543 | p_cust_trx_type_id -- AR customer trx type
5544 | p_minimum_accountable_unit -- Minimum accountable unit for currency
5545 | p_precision -- currency precision
5546 |
5547 | KNOWN ISSUES
5548 |
5549 | NOTES
5550 |
5551 |
5552 | MODIFICATION HISTORY
5553 | Date Author Description of Changes
5554 | 08-APR-05 SECHAWLA Created
5555 | 05-DEC-05 SECHAWLA Use a different index p_trx_rec_tbl_cnt
5556 | to populate p_trx_rec_tbl. This happens
5557 | only for the 'Rebook' transaction
5558 | 04-Jan-08 SECHAWLA 6651621 Added 3 additional parameters to taxable basis override formula -
5559 | 'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
5560 |
5561 *=======================================================================*/
5562
5563 PROCEDURE populate_tax_info(
5564 p_api_version IN NUMBER,
5565 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5566 x_return_status OUT NOCOPY VARCHAR2,
5567 x_msg_count OUT NOCOPY NUMBER,
5568 x_msg_data OUT NOCOPY VARCHAR2,
5569 p_prch_opt_det IN VARCHAR2,
5570 p_fin_prod_id_det IN NUMBER,
5571 p_int_disclosed_det IN VARCHAR2,
5572 p_title_trnsfr_code IN VARCHAR2,
5573 p_sale_lease_back_code IN VARCHAR2,
5574 p_lease_purchased_code IN VARCHAR2,
5575 p_equip_usage_code IN VARCHAR2,
5576 p_vendor_site_id IN NUMBER,
5577 p_age_of_equip IN NUMBER,
5578 p_source_trx_name IN VARCHAR2,
5579 p_cust_trx_type_id IN NUMBER,
5580 p_book_class_code IN VARCHAR2,
5581 p_tax_call_cnt IN NUMBER,
5582 p_line_params_tbl_cnt IN NUMBER DEFAULT NULL,
5583 p_fma_id IN NUMBER,
5584 p_formula_name IN VARCHAR2,
5585 p_minimum_accountable_unit IN NUMBER,
5586 p_precision IN NUMBER,
5587 p_sales_quote_id IN NUMBER, -- Used only for Sales Quote tax call
5588 p_event_type_code IN VARCHAR2,
5589 p_ledger_id IN NUMBER,
5590 p_line_level_action IN VARCHAR2,
5591 p_tax_src_params_rec IN tax_src_params_rec_type,
5592 p_quote_flag IN VARCHAR2,
5593 p_rounding_ship_to_party_id IN NUMBER,
5594 p_rounding_bill_to_party_id IN NUMBER,
5595 p_line_amt_includes_tax_flag IN VARCHAR2,
5596 p_term_quote_type_code IN VARCHAR2,
5597 p_term_quote_reason_code IN VARCHAR2,
5598 p_alc_ser_def_code IN VARCHAR2 DEFAULT NULL,
5599 px_tax_sources_tbl IN OUT NOCOPY tax_sources_tbl_type,
5600 px_line_params_tbl IN OUT NOCOPY line_params_tbl_type) IS
5601
5602 lx_tbc_code VARCHAR2(30);
5603 lx_ufc_code VARCHAR2(30);
5604 lx_pc_code VARCHAR2(30);
5605 lx_tax_classification_code VARCHAR2(50);
5606 l_assessable_value NUMBER;
5607 l_line_amt NUMBER;
5608 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
5609 l_set_of_books_id NUMBER;
5610 l_alc_fetch_code BOOLEAN := FALSE;
5611
5612 lx_tax_valid_code VARCHAR2(1);
5613
5614 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
5615 SELECT set_of_books_id
5616 FROM ar_system_parameters_all
5617 WHERE org_id = cp_org_id;
5618
5619 l_next_index NUMBER;
5620
5621 BEGIN
5622
5623 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5624 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info','Begin(+)');
5625 END IF;
5626
5627 --Print Input Variables
5628 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5629 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5630 'p_init_msg_list :'||p_init_msg_list);
5631 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5632 'p_prch_opt_det :'||p_prch_opt_det);
5633 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5634 'p_prch_opt_det :'||p_prch_opt_det);
5635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5636 'p_fin_prod_id_det :'||p_fin_prod_id_det);
5637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5638 'p_int_disclosed_det :'||p_int_disclosed_det);
5639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5640 'p_title_trnsfr_code :'||p_title_trnsfr_code);
5641 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5642 'p_sale_lease_back_code :'||p_sale_lease_back_code);
5643 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5644 'p_lease_purchased_code :'||p_lease_purchased_code);
5645 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5646 'p_equip_usage_code :'||p_equip_usage_code);
5647 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5648 'p_vendor_site_id :'||p_vendor_site_id);
5649 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5650 'p_age_of_equip :'||p_age_of_equip);
5651 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5652 'p_tax_call_cnt :'||p_tax_call_cnt);
5653 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5654 'px_tax_sources_tbl.count :'||px_tax_sources_tbl.count);
5655 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5656 'p_fma_id :'||p_fma_id);
5657 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5658 'p_formula_name :'||p_formula_name);
5659 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5660 'p_cust_trx_type_id :'||p_cust_trx_type_id);
5661 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5662 'p_minimum_accountable_unit :'||p_minimum_accountable_unit);
5663 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5664 'p_precision :'||p_precision);
5665 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5666 'p_sales_quote_id :'||p_sales_quote_id);
5667 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5668 'p_event_type_code :'||p_event_type_code);
5669 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5670 'p_ledger_id :'||p_ledger_id);
5671 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5672 'p_quote_flag :'||p_quote_flag);
5673 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5674 'p_line_level_action :'||p_line_level_action);
5675 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5676 'p_rounding_ship_to_party_id :'||p_rounding_ship_to_party_id);
5677 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5678 'p_rounding_bill_to_party_id :'||p_rounding_bill_to_party_id);
5679 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5680 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5681 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5682 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5683 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5684 'p_line_amt_includes_tax_flag :'||p_line_amt_includes_tax_flag);
5685 END IF;
5686
5687 IF (p_source_trx_name = 'Asset Relocation' AND
5688 p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L') AND
5689 p_alc_ser_def_code IN ('A', 'F')) THEN
5690 l_alc_fetch_code := TRUE;
5691 ELSIF (p_source_trx_name = 'Asset Relocation' AND
5692 (p_tax_src_params_rec.alc_serialized_yn IS NULL OR
5693 p_tax_src_params_rec.alc_serialized_yn = 'N')) THEN
5694 l_alc_fetch_code := TRUE;
5695 END IF;
5696
5697 IF (l_alc_fetch_code OR p_source_trx_name <> 'Asset Relocation') THEN
5698 -- This processing will be done only once for Asset Relocation transaction for
5699 -- the Serialized/Non-Serialized asset. It will be processed as needed for
5700 -- other transactions
5701 -- Get TBC code
5702 get_tbc_code(p_api_version => p_api_version,
5703 p_init_msg_list => OKC_API.G_FALSE,
5704 x_return_status => x_return_status,
5705 x_msg_count => x_msg_count,
5706 x_msg_data => x_msg_data,
5707 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5708 p_try_id => p_tax_src_params_rec.try_id,
5709 p_book_class_code => p_book_class_code,
5710 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5711 x_tbc_code => lx_tbc_code);
5712
5713 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5714 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5715 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5716 RAISE OKL_API.G_EXCEPTION_ERROR;
5717 END IF;
5718
5719 -- Validate TBC Code
5720 IF lx_tbc_code IS NOT NULL THEN
5721 validate_tax_code(
5722 p_api_version => p_api_version,
5723 p_init_msg_list => p_init_msg_list,
5724 x_return_status => x_return_status,
5725 x_msg_count => x_msg_count,
5726 x_msg_data => x_msg_data,
5727 p_trx_date => p_tax_src_params_rec.trx_date,
5728 p_tbc_code => lx_tbc_code,
5729 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5730
5731 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5732 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5733 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5734 RAISE OKL_API.G_EXCEPTION_ERROR;
5735 END IF;
5736 END IF;
5737
5738 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5739 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5740 'lx_tbc_code'||lx_tbc_code);
5741 END IF;
5742
5743 -- Get the first level determinant for TBC basing on transaction, if the value is null
5744 IF lx_tbc_code IS NULL OR lx_tax_valid_code = 'F' THEN
5745 IF p_source_trx_name IN ('Tax Schedule', 'Estimated Billing') THEN
5746 lx_tbc_code := 'SALES_TRANSACTION';
5747 ELSE
5748 lx_tbc_code := 'BOOKING';
5749 END IF;
5750 END IF;
5751
5752 IF (p_source_trx_name = 'Asset Relocation' AND
5753 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5754 p_alc_ser_def_code = 'F') THEN
5755 G_TBC_CODE := lx_tbc_code;
5756 END IF;
5757
5758 -- Get PC code
5759 get_pc_code(p_api_version => p_api_version,
5760 p_init_msg_list => OKC_API.G_FALSE,
5761 x_return_status => x_return_status,
5762 x_msg_count => x_msg_count,
5763 x_msg_data => x_msg_data,
5764 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5765 p_purchase_option_code => p_prch_opt_det,
5766 p_int_disclosed_code => p_int_disclosed_det,
5767 p_title_trnsfr_code => p_title_trnsfr_code,
5768 p_sale_lease_back_code => p_sale_lease_back_code,
5769 p_lease_purchased_code => p_lease_purchased_code,
5770 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5771 x_pc_code => lx_pc_code);
5772
5773 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5774 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5775 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5776 RAISE OKL_API.G_EXCEPTION_ERROR;
5777 END IF;
5778
5779 -- Validate PC Code
5780 IF lx_pc_code IS NOT NULL THEN
5781 validate_tax_code(
5782 p_api_version => p_api_version,
5783 p_init_msg_list => p_init_msg_list,
5784 x_return_status => x_return_status,
5785 x_msg_count => x_msg_count,
5786 x_msg_data => x_msg_data,
5787 p_trx_date => p_tax_src_params_rec.trx_date,
5788 p_pc_code => lx_pc_code,
5789 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5790
5791 IF (lx_tax_valid_code = 'F') THEN
5792 lx_pc_code := null;
5793 END IF;
5794
5795 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5796 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5797 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5798 RAISE OKL_API.G_EXCEPTION_ERROR;
5799 END IF;
5800 END IF;
5801
5802 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5803 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5804 'lx_pc_code'||lx_pc_code);
5805 END IF;
5806
5807 IF (p_source_trx_name = 'Asset Relocation' AND
5808 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5809 p_alc_ser_def_code = 'F') THEN
5810 G_PC_CODE := lx_pc_code;
5811 END IF;
5812
5813 -- contract level call begin
5814 -- Get UFC code
5815 get_ufc_code(p_api_version => p_api_version,
5816 p_init_msg_list => OKC_API.G_FALSE,
5817 x_return_status => x_return_status,
5818 x_msg_count => x_msg_count,
5819 x_msg_data => x_msg_data,
5820 p_purchase_option => p_prch_opt_det,
5821 p_fin_product_id => p_fin_prod_id_det,
5822 p_try_id => p_tax_src_params_rec.try_id,
5823 p_sty_id => p_tax_src_params_rec.sty_id, -- used if pymnts exist
5824 p_int_disclosed_code => p_int_disclosed_det,
5825 p_title_trnsfr_code => p_title_trnsfr_code, -- asset level
5826 p_sale_lease_back_code => p_sale_lease_back_code, -- asset level
5827 p_lease_purchased_code => p_lease_purchased_code, -- asset level
5828 p_equip_usage_code => p_equip_usage_code ,-- asset level
5829 p_vendor_site_id => p_vendor_site_id, -- asset level
5830 p_age_of_equip => p_age_of_equip, -- asset level
5831 p_term_quote_type_code => p_term_quote_type_code,
5832 p_term_quote_reason_code => p_term_quote_reason_code,
5833 p_tax_country_code => p_tax_src_params_rec.default_taxation_country,
5834 x_ufc_code => lx_ufc_code);
5835
5836 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5837 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5838 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5839 RAISE OKL_API.G_EXCEPTION_ERROR;
5840 END IF;
5841
5842 -- Validate UFC Code
5843 IF lx_ufc_code IS NOT NULL THEN
5844 validate_tax_code(
5845 p_api_version => p_api_version,
5846 p_init_msg_list => p_init_msg_list,
5847 x_return_status => x_return_status,
5848 x_msg_count => x_msg_count,
5849 x_msg_data => x_msg_data,
5850 p_trx_date => p_tax_src_params_rec.trx_date,
5851 p_ufc_code => lx_ufc_code,
5852 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
5853
5854 IF (lx_tax_valid_code = 'F') THEN
5855 lx_ufc_code := null;
5856 END IF;
5857
5858 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5859 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5860 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5861 RAISE OKL_API.G_EXCEPTION_ERROR;
5862 END IF;
5863 END IF;
5864
5865 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5866 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5867 'lx_ufc_code'||lx_ufc_code);
5868 END IF;
5869
5870 IF (p_source_trx_name = 'Asset Relocation' AND
5871 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
5872 p_alc_ser_def_code = 'F') THEN
5873 G_UFC_CODE := lx_ufc_code;
5874 END IF;
5875
5876 END IF;
5877
5878 -- Check if taxable basis override applies
5879 IF p_fma_id IS NOT NULL THEN
5880 -- execute tax basis override formula, pass tax determinants
5881 l_add_params(1).name := 'PURCHASE_OPTION';
5882 l_add_params(1).value := p_prch_opt_det;
5883
5884 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
5885 l_add_params(2).value := p_fin_prod_id_det;
5886
5887 l_add_params(3).name := 'TRX_TYPE_ID';
5888 l_add_params(3).value := p_tax_src_params_rec.try_id;
5889
5890 l_add_params(4).name := 'STREAM_TYPE_ID';
5891 l_add_params(4).value := p_tax_src_params_rec.sty_id;
5892
5893 l_add_params(5).name := 'INTEREST_DISCLOSED';
5894 l_add_params(5).value := p_int_disclosed_det;
5895
5896 l_add_params(6).name := 'TRANSFER_OF_TITLE';
5897 l_add_params(6).value := p_title_trnsfr_code;
5898
5899 l_add_params(7).name := 'SALE_LEASE_BACK';
5900 l_add_params(7).value := p_sale_lease_back_code;
5901
5902 l_add_params(8).name := 'PURCHASE_OF_LEASE';
5903 l_add_params(8).value := p_lease_purchased_code;
5904
5905 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
5906 l_add_params(9).value := p_equip_usage_code;
5907
5908 l_add_params(10).name := 'VENDOR_SITE_ID';
5909 l_add_params(10).value := p_vendor_site_id;
5910
5911 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
5912 l_add_params(11).value := p_age_of_equip;
5913
5914 l_add_params(12).name := 'BOOK_CLASS';
5915 l_add_params(12).value := p_book_class_code;
5916
5917 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
5918 l_add_params(13).value := p_tax_src_params_rec.bill_to_party_site_id;
5919
5920 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
5921 l_add_params(14).value := p_tax_src_params_rec.bill_to_location_id;
5922
5923 l_add_params(15).name := 'BILL_TO_PARTY_ID';
5924 l_add_params(15).value := p_tax_src_params_rec.bill_to_party_id;
5925
5926 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
5927 l_add_params(16).value := p_tax_src_params_rec.ship_to_party_site_id;
5928
5929 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
5930 l_add_params(17).value := p_tax_src_params_rec.ship_to_location_id;
5931
5932 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
5933 l_add_params(18).value := p_tax_src_params_rec.ship_to_party_id;
5934
5935 -- Directly Mapped
5936 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
5937 l_add_params(19).value := p_tax_src_params_rec.bill_to_cust_acct_site_use_id;
5938
5939 l_add_params(20).name := 'INVENTORY_ITEM_ID';
5940 l_add_params(20).value := p_tax_src_params_rec.inventory_item_id;
5941
5942 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
5943 l_add_params(21).value := p_tax_src_params_rec.ship_to_cust_acct_site_use_id;
5944
5945 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
5946 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
5947 l_add_params(22).name := 'LINE_NAME';
5948 l_add_params(22).value := p_tax_src_params_rec.line_name;
5949
5950 l_add_params(23).name := 'SOURCE_TRX_NAME';
5951 l_add_params(23).value := p_source_trx_name;
5952
5953 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
5954 l_add_params(24).value := p_tax_src_params_rec.line_amt;
5955 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
5956
5957 l_next_index := 25; --SECHAWLA 04-Jan-08 6651621 - Added
5958
5959 IF p_sales_quote_id IS NOT NULL THEN
5960 l_add_params(l_next_index).name := 'SALES_QUOTE_ID'; --SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5961 l_add_params(l_next_index).value := p_sales_quote_id;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5962 l_next_index := l_next_index + 1;
5963 END IF;
5964
5965 IF (p_source_trx_name = 'Estimated Billing') THEN
5966 l_add_params(l_next_index).name := 'TERM_QUOTE_TYPE_CODE';--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5967 l_add_params(l_next_index).value := p_term_quote_type_code;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5968
5969 l_next_index := l_next_index + 1; --SECHAWLA 04-Jan-08 6651621 - Added
5970
5971 l_add_params(l_next_index).name := 'TERM_QUOTE_REASON_CODE';--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5972 l_add_params(l_next_index).value := p_term_quote_reason_code;--SECHAWLA 04-Jan-08 6651621 Use l_next_index for conditional assignments
5973 END IF;
5974
5975 okl_am_util_pvt.get_formula_value(
5976 p_formula_name => p_formula_name,
5977 p_chr_id => p_tax_src_params_rec.khr_id, -- will be NULL for sales Quote tax call
5978 p_cle_id => p_tax_src_params_rec.kle_id, -- will be NULL for sales Quote tax call
5979 p_additional_parameters => l_add_params,
5980 x_formula_value => l_assessable_value, --OVERRIDEN TAXABLE BASIS
5981 x_return_status => x_return_status);
5982
5983 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
5984 OKL_API.init_msg_list('T');
5985 OKL_API.set_message(p_app_name => 'OKL',
5986 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
5987 p_token1 => 'FMA_NAME',
5988 p_token1_value => p_formula_name,
5989 p_token2 => 'TRX_NAME ',
5990 p_token2_value => p_source_trx_name);
5991 RAISE OKL_API.G_EXCEPTION_ERROR;
5992 END IF;
5993
5994 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
5995 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
5996 'calculated l_assessable_value '||l_assessable_value);
5997 END IF;
5998 END IF;
5999
6000 -- Populate the line_amt in l_assessable_value if null
6001 IF l_assessable_value IS NULL THEN
6002 l_assessable_value := p_tax_src_params_rec.line_amt;
6003 l_line_amt := p_tax_src_params_rec.line_amt;
6004 ELSE
6005 l_line_amt := l_assessable_value;
6006 END IF;
6007
6008 -- Get Set of Books ID
6009 OPEN c_get_set_of_books_id(cp_org_id => p_tax_src_params_rec.org_id);
6010 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
6011 CLOSE c_get_set_of_books_id;
6012
6013 -- Get the tax classification code
6014 IF (l_alc_fetch_code OR p_source_trx_name <> 'Asset Relocation') THEN
6015 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6016 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6017 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
6018 END IF;
6019
6020 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
6021 x_return_status => x_return_status,
6022 p_ship_to_site_use_id => p_tax_src_params_rec.ship_to_cust_acct_site_use_id,
6023 p_bill_to_site_use_id => p_tax_src_params_rec.bill_to_cust_acct_site_use_id,
6024 p_inventory_item_id => p_tax_src_params_rec.inventory_item_id,
6025 p_organization_id => p_tax_src_params_rec.org_id,
6026 p_set_of_books_id => l_set_of_books_id,
6027 p_trx_date => p_tax_src_params_rec.trx_date,
6028 p_trx_type_id => null,
6029 p_entity_code => G_AR_ENTITY_CODE,
6030 p_event_class_code => G_INVOICE_EVENT_CLASS_CODE,
6031 p_application_id => G_AR_APPLICATION_ID,
6032 p_internal_organization_id => p_tax_src_params_rec.org_id,
6033 x_tax_classification_code => lx_tax_classification_code );
6034
6035 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6036 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6037 'Return Status '|| x_return_status);
6038 END IF;
6039
6040 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6041 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6042 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6043 RAISE OKL_API.G_EXCEPTION_ERROR;
6044 END IF;
6045
6046 IF (p_source_trx_name = 'Asset Relocation' AND
6047 p_tax_src_params_rec.alc_serialized_yn = 'Y' AND
6048 p_alc_ser_def_code = 'F') THEN
6049 G_TAX_CLASS_CODE := lx_tax_classification_code;
6050 END IF;
6051
6052 END IF;
6053
6054 IF (p_source_trx_name = 'Asset Relocation' AND
6055 p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L') AND
6056 p_alc_ser_def_code = 'N') THEN
6057 lx_ufc_code := G_UFC_CODE;
6058 lx_tbc_code := G_TBC_CODE;
6059 lx_pc_code := G_PC_CODE;
6060 lx_tax_classification_code := G_TAX_CLASS_CODE;
6061 END IF;
6062
6063 -- populate okl_tax_sources pl/sql table
6064 px_tax_sources_tbl(p_tax_call_cnt).id := get_seq_id;
6065 px_tax_sources_tbl(p_tax_call_cnt).khr_id := p_tax_src_params_rec.khr_id;
6066 px_tax_sources_tbl(p_tax_call_cnt).kle_id := p_tax_src_params_rec.kle_id;
6067 px_tax_sources_tbl(p_tax_call_cnt).sty_id := p_tax_src_params_rec.sty_id;
6068 px_tax_sources_tbl(p_tax_call_cnt).inventory_item_id := p_tax_src_params_rec.inventory_item_id;
6069 px_tax_sources_tbl(p_tax_call_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6070 px_tax_sources_tbl(p_tax_call_cnt).line_amt := l_line_amt;
6071 px_tax_sources_tbl(p_tax_call_cnt).line_name := p_tax_src_params_rec.line_name;
6072 px_tax_sources_tbl(p_tax_call_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6073 px_tax_sources_tbl(p_tax_call_cnt).org_id := p_tax_src_params_rec.org_id;
6074 px_tax_sources_tbl(p_tax_call_cnt).product_type := G_DEFAULT_PRODUCT_TYPE;
6075 px_tax_sources_tbl(p_tax_call_cnt).assessable_value := l_assessable_value;
6076 px_tax_sources_tbl(p_tax_call_cnt).asset_number := p_tax_src_params_rec.asset_number;
6077 px_tax_sources_tbl(p_tax_call_cnt).reported_yn := p_tax_src_params_rec.reported_yn;
6078
6079 px_tax_sources_tbl(p_tax_call_cnt).trx_id := p_tax_src_params_rec.trx_id;
6080
6081 IF (p_source_trx_name = 'Estimated Billing') THEN
6082 px_tax_sources_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6083 ELSE
6084 px_tax_sources_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6085 END IF;
6086
6087 px_tax_sources_tbl(p_tax_call_cnt).trx_level_type := G_TRX_LEVEL_TYPE;
6088 px_tax_sources_tbl(p_tax_call_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6089 px_tax_sources_tbl(p_tax_call_cnt).trx_date := p_tax_src_params_rec.trx_date;
6090 px_tax_sources_tbl(p_tax_call_cnt).try_id := p_tax_src_params_rec.try_id;
6091
6092 px_tax_sources_tbl(p_tax_call_cnt).entity_code := p_tax_src_params_rec.entity_code;
6093 px_tax_sources_tbl(p_tax_call_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6094 px_tax_sources_tbl(p_tax_call_cnt).application_id := G_OKL_APPLICATION_ID;
6095 px_tax_sources_tbl(p_tax_call_cnt).request_id := null;
6096
6097 px_tax_sources_tbl(p_tax_call_cnt).program_id := null;
6098 px_tax_sources_tbl(p_tax_call_cnt).program_application_id := null;
6099 px_tax_sources_tbl(p_tax_call_cnt).program_update_date := null;
6100
6101 px_tax_sources_tbl(p_tax_call_cnt).attribute_category := null;
6102 px_tax_sources_tbl(p_tax_call_cnt).attribute1 := null;
6103 px_tax_sources_tbl(p_tax_call_cnt).attribute2 := null;
6104 px_tax_sources_tbl(p_tax_call_cnt).attribute3 := null;
6105 px_tax_sources_tbl(p_tax_call_cnt).attribute4 := null;
6106 px_tax_sources_tbl(p_tax_call_cnt).attribute5 := null;
6107 px_tax_sources_tbl(p_tax_call_cnt).attribute6 := null;
6108 px_tax_sources_tbl(p_tax_call_cnt).attribute7 := null;
6109 px_tax_sources_tbl(p_tax_call_cnt).attribute8 := null;
6110 px_tax_sources_tbl(p_tax_call_cnt).attribute9 := null;
6111 px_tax_sources_tbl(p_tax_call_cnt).attribute10 := null;
6112 px_tax_sources_tbl(p_tax_call_cnt).attribute11 := null;
6113 px_tax_sources_tbl(p_tax_call_cnt).attribute12 := null;
6114 px_tax_sources_tbl(p_tax_call_cnt).attribute13 := null;
6115 px_tax_sources_tbl(p_tax_call_cnt).attribute14 := null;
6116 px_tax_sources_tbl(p_tax_call_cnt).attribute15 := null;
6117 px_tax_sources_tbl(p_tax_call_cnt).created_by := G_USER_ID;
6118 px_tax_sources_tbl(p_tax_call_cnt).creation_date := SYSDATE;
6119 px_tax_sources_tbl(p_tax_call_cnt).last_updated_by := G_USER_ID;
6120 px_tax_sources_tbl(p_tax_call_cnt).last_update_date := SYSDATE;
6121 px_tax_sources_tbl(p_tax_call_cnt).last_update_login := G_LOGIN_ID;
6122 px_tax_sources_tbl(p_tax_call_cnt).object_version_number := null;
6123
6124 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6125 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6126 px_tax_sources_tbl(p_tax_call_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6127
6128 px_tax_sources_tbl(p_tax_call_cnt).product_fisc_classification := null;
6129 px_tax_sources_tbl(p_tax_call_cnt).product_category := lx_pc_code;
6130 px_tax_sources_tbl(p_tax_call_cnt).user_defined_fisc_class := lx_ufc_code;
6131 px_tax_sources_tbl(p_tax_call_cnt).tax_classification_code := lx_tax_classification_code;
6132 px_tax_sources_tbl(p_tax_call_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6133 px_tax_sources_tbl(p_tax_call_cnt).provnl_tax_determination_date := null;
6134 px_tax_sources_tbl(p_tax_call_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6135 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6136 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6137 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6138 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6139 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6140 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6141 px_tax_sources_tbl(p_tax_call_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6142 px_tax_sources_tbl(p_tax_call_cnt).tax_call_type_code := p_tax_src_params_rec.tax_call_type_code;
6143 px_tax_sources_tbl(p_tax_call_cnt).trx_business_category := lx_tbc_code;
6144 px_tax_sources_tbl(p_tax_call_cnt).tax_line_status_code := p_tax_src_params_rec.tax_line_status_code;
6145
6146 px_tax_sources_tbl(p_tax_call_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6147 px_tax_sources_tbl(p_tax_call_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6148 px_tax_sources_tbl(p_tax_call_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6149 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;
6150 px_tax_sources_tbl(p_tax_call_cnt).bill_to_cust_acct_id := p_tax_src_params_rec.bill_to_cust_acct_id;
6151 px_tax_sources_tbl(p_tax_call_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6152 px_tax_sources_tbl(p_tax_call_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6153 px_tax_sources_tbl(p_tax_call_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6154 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;
6155
6156 -- Populate ALC_SERIALIZED_YN for ALC transaction
6157 IF (p_source_trx_name = 'Asset Relocation') THEN
6158 IF (p_tax_src_params_rec.alc_serialized_yn IN ('Y', 'L')) THEN
6159 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_yn := p_tax_src_params_rec.alc_serialized_yn;
6160 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_total_line_amt := p_tax_src_params_rec.alc_serialized_total_line_amt;
6161 ELSE
6162 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_yn := 'N';
6163 px_tax_sources_tbl(p_tax_call_cnt).alc_serialized_total_line_amt := p_tax_src_params_rec.alc_serialized_total_line_amt;
6164 END IF;
6165 END IF;
6166
6167 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6168 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info.',
6169 'POPULATED px_tax_sources_tbl ');
6170 END IF;
6171
6172 IF (p_line_params_tbl_cnt IS NULL) THEN
6173 px_line_params_tbl(p_tax_call_cnt).application_id := G_OKL_APPLICATION_ID;
6174 px_line_params_tbl(p_tax_call_cnt).trx_id := p_tax_src_params_rec.trx_id;
6175 px_line_params_tbl(p_tax_call_cnt).internal_organization_id := p_tax_src_params_rec.org_id;
6176 px_line_params_tbl(p_tax_call_cnt).entity_code := p_tax_src_params_rec.entity_code;
6177 px_line_params_tbl(p_tax_call_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6178 px_line_params_tbl(p_tax_call_cnt).event_type_code := p_event_type_code;
6179 px_line_params_tbl(p_tax_call_cnt).trx_date := p_tax_src_params_rec.trx_date;
6180 px_line_params_tbl(p_tax_call_cnt).ledger_id := p_ledger_id;
6181 px_line_params_tbl(p_tax_call_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6182 px_line_params_tbl(p_tax_call_cnt).trx_level_type := p_tax_src_params_rec.trx_level_type;
6183 px_line_params_tbl(p_tax_call_cnt).line_level_action := p_line_level_action;
6184
6185 IF (p_source_trx_name = 'Estimated Billing') THEN
6186 px_line_params_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6187 ELSE
6188 px_line_params_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6189 END IF;
6190
6191 px_line_params_tbl(p_tax_call_cnt).line_amt := l_line_amt;
6192 px_line_params_tbl(p_tax_call_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6193 px_line_params_tbl(p_tax_call_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6194 px_line_params_tbl(p_tax_call_cnt).product_type := p_tax_src_params_rec.product_type;
6195 px_line_params_tbl(p_tax_call_cnt).output_tax_classification_code := p_tax_src_params_rec.tax_classification_code;
6196 px_line_params_tbl(p_tax_call_cnt).assessable_value := l_assessable_value;
6197 px_line_params_tbl(p_tax_call_cnt).receivables_trx_type_id := p_cust_trx_type_id;
6198 px_line_params_tbl(p_tax_call_cnt).product_id := p_tax_src_params_rec.inventory_item_id;
6199 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6200 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6201 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6202 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6203 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6204 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6205 px_line_params_tbl(p_tax_call_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6206 px_line_params_tbl(p_tax_call_cnt).line_amt_includes_tax_flag := p_line_amt_includes_tax_flag;
6207
6208 px_line_params_tbl(p_tax_call_cnt).trx_business_category := lx_tbc_code;
6209 px_line_params_tbl(p_tax_call_cnt).product_category := lx_pc_code;
6210 px_line_params_tbl(p_tax_call_cnt).user_defined_fisc_class := lx_ufc_code;
6211 px_line_params_tbl(p_tax_call_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6212 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;
6213 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;
6214 px_line_params_tbl(p_tax_call_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6215 px_line_params_tbl(p_tax_call_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6216 px_line_params_tbl(p_tax_call_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6217 px_line_params_tbl(p_tax_call_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6218 px_line_params_tbl(p_tax_call_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6219 px_line_params_tbl(p_tax_call_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6220 px_line_params_tbl(p_tax_call_cnt).rounding_ship_to_party_id := p_rounding_ship_to_party_id;
6221 px_line_params_tbl(p_tax_call_cnt).rounding_bill_to_party_id := p_rounding_bill_to_party_id;
6222 px_line_params_tbl(p_tax_call_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6223 px_line_params_tbl(p_tax_call_cnt).precision := p_precision;
6224 px_line_params_tbl(p_tax_call_cnt).minimum_accountable_unit := p_minimum_accountable_unit;
6225 px_line_params_tbl(p_tax_call_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6226 px_line_params_tbl(p_tax_call_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6227 px_line_params_tbl(p_tax_call_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6228 ELSE -- Applicable for 'Rebook' transaction only
6229 px_line_params_tbl(p_line_params_tbl_cnt).application_id := G_OKL_APPLICATION_ID;
6230 px_line_params_tbl(p_line_params_tbl_cnt).trx_id := p_tax_src_params_rec.trx_id;
6231 px_line_params_tbl(p_line_params_tbl_cnt).internal_organization_id := p_tax_src_params_rec.org_id;
6232 px_line_params_tbl(p_line_params_tbl_cnt).entity_code := p_tax_src_params_rec.entity_code;
6233 px_line_params_tbl(p_line_params_tbl_cnt).event_class_code := p_tax_src_params_rec.event_class_code;
6234 px_line_params_tbl(p_line_params_tbl_cnt).event_type_code := p_event_type_code;
6235 px_line_params_tbl(p_line_params_tbl_cnt).trx_date := p_tax_src_params_rec.trx_date;
6236 px_line_params_tbl(p_line_params_tbl_cnt).ledger_id := p_ledger_id;
6237 px_line_params_tbl(p_line_params_tbl_cnt).legal_entity_id := p_tax_src_params_rec.legal_entity_id;
6238 px_line_params_tbl(p_line_params_tbl_cnt).trx_level_type := p_tax_src_params_rec.trx_level_type;
6239 px_line_params_tbl(p_line_params_tbl_cnt).line_level_action := p_line_level_action;
6240
6241 IF (p_source_trx_name = 'Estimated Billing') THEN
6242 px_line_params_tbl(p_tax_call_cnt).trx_line_id := p_tax_src_params_rec.trx_line_id;
6243 ELSE
6244 px_line_params_tbl(p_tax_call_cnt).trx_line_id := px_tax_sources_tbl(p_tax_call_cnt).id;
6245 END IF;
6246
6247 px_line_params_tbl(p_line_params_tbl_cnt).line_amt := l_line_amt;
6248 px_line_params_tbl(p_line_params_tbl_cnt).tax_reporting_flag := p_tax_src_params_rec.tax_reporting_flag;
6249 px_line_params_tbl(p_line_params_tbl_cnt).default_taxation_country := p_tax_src_params_rec.default_taxation_country;
6250 px_line_params_tbl(p_line_params_tbl_cnt).product_type := p_tax_src_params_rec.product_type;
6251 px_line_params_tbl(p_line_params_tbl_cnt).output_tax_classification_code := p_tax_src_params_rec.tax_classification_code;
6252 px_line_params_tbl(p_line_params_tbl_cnt).assessable_value := l_assessable_value;
6253 px_line_params_tbl(p_line_params_tbl_cnt).receivables_trx_type_id := p_cust_trx_type_id;
6254 px_line_params_tbl(p_line_params_tbl_cnt).product_id := p_tax_src_params_rec.inventory_item_id;
6255 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_entity_code := p_tax_src_params_rec.adjusted_doc_entity_code;
6256 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_event_class_code := p_tax_src_params_rec.adjusted_doc_event_class_code;
6257 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_trx_id := p_tax_src_params_rec.adjusted_doc_trx_id;
6258 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_line_id := p_tax_src_params_rec.adjusted_doc_trx_line_id;
6259 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_trx_level_type := p_tax_src_params_rec.adjusted_doc_trx_level_type;
6260 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_number := p_tax_src_params_rec.adjusted_doc_number;
6261 px_line_params_tbl(p_line_params_tbl_cnt).adjusted_doc_date := p_tax_src_params_rec.adjusted_doc_date;
6262 px_line_params_tbl(p_line_params_tbl_cnt).line_amt_includes_tax_flag := p_line_amt_includes_tax_flag;
6263
6264 px_line_params_tbl(p_line_params_tbl_cnt).trx_business_category := lx_tbc_code;
6265 px_line_params_tbl(p_line_params_tbl_cnt).product_category := lx_pc_code;
6266 px_line_params_tbl(p_line_params_tbl_cnt).user_defined_fisc_class := lx_ufc_code;
6267 px_line_params_tbl(p_line_params_tbl_cnt).line_intended_use := p_tax_src_params_rec.line_intended_use;
6268 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;
6269 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;
6270 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_party_site_id := p_tax_src_params_rec.bill_to_party_site_id;
6271 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_location_id := p_tax_src_params_rec.bill_to_location_id;
6272 px_line_params_tbl(p_line_params_tbl_cnt).bill_to_party_id := p_tax_src_params_rec.bill_to_party_id;
6273 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_party_site_id := p_tax_src_params_rec.ship_to_party_site_id;
6274 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_location_id := p_tax_src_params_rec.ship_to_location_id;
6275 px_line_params_tbl(p_line_params_tbl_cnt).ship_to_party_id := p_tax_src_params_rec.ship_to_party_id;
6276 px_line_params_tbl(p_line_params_tbl_cnt).rounding_ship_to_party_id := p_rounding_ship_to_party_id;
6277 px_line_params_tbl(p_line_params_tbl_cnt).rounding_bill_to_party_id := p_rounding_bill_to_party_id;
6278 px_line_params_tbl(p_line_params_tbl_cnt).trx_currency_code := p_tax_src_params_rec.trx_currency_code;
6279 px_line_params_tbl(p_line_params_tbl_cnt).precision := p_precision;
6280 px_line_params_tbl(p_line_params_tbl_cnt).minimum_accountable_unit := p_minimum_accountable_unit;
6281 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_date := p_tax_src_params_rec.currency_conversion_date;
6282 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_rate := p_tax_src_params_rec.currency_conversion_rate;
6283 px_line_params_tbl(p_line_params_tbl_cnt).currency_conversion_type := p_tax_src_params_rec.currency_conversion_type;
6284 END IF;
6285
6286 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6287 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ','End(-)');
6288 END IF;
6289
6290 EXCEPTION
6291 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6292 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6293 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6294 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6295 END IF;
6296
6297 IF (c_get_set_of_books_id%ISOPEN) THEN
6298 CLOSE c_get_set_of_books_id;
6299 END IF;
6300
6301 x_return_status := OKL_API.G_RET_STS_ERROR;
6302 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6303 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6304 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6305 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6306 END IF;
6307
6308 IF (c_get_set_of_books_id%ISOPEN) THEN
6309 CLOSE c_get_set_of_books_id;
6310 END IF;
6311
6312 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6313
6314 WHEN OTHERS THEN
6315 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6316 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_info ',
6317 'EXCEPTION :'||sqlerrm);
6318 END IF;
6319
6320 IF (c_get_set_of_books_id%ISOPEN) THEN
6321 CLOSE c_get_set_of_books_id;
6322 END IF;
6323
6324 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6325 -- unexpected error
6326 OKL_API.set_message(p_app_name => g_app_name,
6327 p_msg_name => g_unexpected_error,
6328 p_token1 => g_sqlcode_token,
6329 p_token1_value => sqlcode,
6330 p_token2 => g_sqlerrm_token,
6331 p_token2_value => sqlerrm);
6332
6333 END populate_tax_info;
6334
6335 /*========================================================================
6336 | PRIVATE PROCEDURE populate_tax_codes
6337 |
6338 | DESCRIPTION
6339 | This procedure derives the tax codes
6340 |
6341 | CALLED FROM
6342 | process_tax_schedule_tax
6343 |
6344 |
6345 | CALLS PROCEDURES/FUNCTIONS
6346 | get_ufc_code()
6347 |
6348 | PARAMETERS
6349 |
6350 | KNOWN ISSUES
6351 |
6352 | NOTES
6353 |
6354 |
6355 | MODIFICATION HISTORY
6356 | Date Author Description of Changes
6357 | 22-AUG-07 RRAVIKIR Created
6358 *=======================================================================*/
6359 PROCEDURE populate_tax_codes(
6360 p_api_version IN NUMBER,
6361 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6362 x_return_status OUT NOCOPY VARCHAR2,
6363 x_msg_count OUT NOCOPY NUMBER,
6364 x_msg_data OUT NOCOPY VARCHAR2,
6365 p_prch_opt_det IN VARCHAR2,
6366 p_fin_prod_id_det IN NUMBER,
6367 p_int_disclosed_det IN VARCHAR2,
6368 p_title_trnsfr_code IN VARCHAR2,
6369 p_sale_lease_back_code IN VARCHAR2,
6370 p_lease_purchased_code IN VARCHAR2,
6371 p_equip_usage_code IN VARCHAR2,
6372 p_vendor_site_id IN NUMBER,
6373 p_age_of_equip IN NUMBER,
6374 p_source_trx_name IN VARCHAR2,
6375 p_book_class_code IN VARCHAR2,
6376 p_tax_code_cnt IN NUMBER,
6377 p_sty_id IN NUMBER,
6378 p_try_id IN NUMBER,
6379 p_tax_country_code IN VARCHAR2,
6380 p_khr_id IN NUMBER,
6381 p_kle_id IN NUMBER,
6382 p_bill_to_party_site_id IN NUMBER,
6383 p_bill_to_location_id IN NUMBER,
6384 p_bill_to_party_id IN NUMBER,
6385 p_bill_to_cust_acct_site_id IN NUMBER,
6386 p_ship_to_party_site_id IN NUMBER DEFAULT NULL,
6387 p_ship_to_location_id IN NUMBER DEFAULT NULL,
6388 p_ship_to_party_id IN NUMBER DEFAULT NULL,
6389 p_ship_to_cust_acct_site_id IN NUMBER DEFAULT NULL,
6390 p_inventory_item_id IN NUMBER DEFAULT NULL,
6391 p_org_id IN NUMBER,
6392 p_trx_date IN DATE,
6393 px_tax_codes_tbl IN OUT NOCOPY tax_codes_tbl_type) IS
6394
6395 lx_tbc_code VARCHAR2(30);
6396 lx_ufc_code VARCHAR2(30);
6397 lx_pc_code VARCHAR2(30);
6398 lx_tax_classification_code VARCHAR2(50);
6399 l_set_of_books_id NUMBER;
6400 lx_tax_valid_code VARCHAR2(1);
6401
6402 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
6403 SELECT set_of_books_id
6404 FROM ar_system_parameters_all
6405 WHERE org_id = cp_org_id;
6406
6407 BEGIN
6408
6409 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6410 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes','Begin(+)');
6411 END IF;
6412
6413 --Print Input Variables
6414 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6416 'p_init_msg_list :'||p_init_msg_list);
6417 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6418 'p_prch_opt_det :'||p_prch_opt_det);
6419 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6420 'p_prch_opt_det :'||p_prch_opt_det);
6421 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6422 'p_fin_prod_id_det :'||p_fin_prod_id_det);
6423 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6424 'p_int_disclosed_det :'||p_int_disclosed_det);
6425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6426 'p_title_trnsfr_code :'||p_title_trnsfr_code);
6427 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6428 'p_sale_lease_back_code :'||p_sale_lease_back_code);
6429 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6430 'p_lease_purchased_code :'||p_lease_purchased_code);
6431 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6432 'p_equip_usage_code :'||p_equip_usage_code);
6433 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6434 'p_vendor_site_id :'||p_vendor_site_id);
6435 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6436 'p_age_of_equip :'||p_age_of_equip);
6437 END IF;
6438
6439 -- Get TBC code
6440 get_tbc_code(p_api_version => p_api_version,
6441 p_init_msg_list => OKC_API.G_FALSE,
6442 x_return_status => x_return_status,
6443 x_msg_count => x_msg_count,
6444 x_msg_data => x_msg_data,
6445 p_sty_id => p_sty_id, -- used if pymnts exist
6446 p_try_id => p_try_id,
6447 p_book_class_code => p_book_class_code,
6448 p_tax_country_code => p_tax_country_code,
6449 x_tbc_code => lx_tbc_code);
6450
6451 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6452 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6453 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6454 RAISE OKL_API.G_EXCEPTION_ERROR;
6455 END IF;
6456
6457 -- Validate TBC Code
6458 IF lx_tbc_code IS NOT NULL THEN
6459 validate_tax_code(
6460 p_api_version => p_api_version,
6461 p_init_msg_list => p_init_msg_list,
6462 x_return_status => x_return_status,
6463 x_msg_count => x_msg_count,
6464 x_msg_data => x_msg_data,
6465 p_trx_date => p_trx_date,
6466 p_tbc_code => lx_tbc_code,
6467 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6468
6469 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6470 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6471 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6472 RAISE OKL_API.G_EXCEPTION_ERROR;
6473 END IF;
6474 END IF;
6475
6476 -- Get the first level determinant for TBC basing on transaction, if the value is null
6477 IF ((lx_tbc_code IS NULL OR lx_tax_valid_code = 'F')AND p_source_trx_name = 'Tax Schedule') THEN
6478 lx_tbc_code := 'SALES_TRANSACTION';
6479 END IF;
6480
6481 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6482 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6483 'lx_tbc_code'||lx_tbc_code);
6484 END IF;
6485
6486 -- Get PC code
6487 get_pc_code(p_api_version => p_api_version,
6488 p_init_msg_list => OKC_API.G_FALSE,
6489 x_return_status => x_return_status,
6490 x_msg_count => x_msg_count,
6491 x_msg_data => x_msg_data,
6492 p_sty_id => p_sty_id,
6493 p_purchase_option_code => p_prch_opt_det,
6494 p_int_disclosed_code => p_int_disclosed_det,
6495 p_title_trnsfr_code => p_title_trnsfr_code,
6496 p_sale_lease_back_code => p_sale_lease_back_code,
6497 p_lease_purchased_code => p_lease_purchased_code,
6498 p_tax_country_code => p_tax_country_code,
6499 x_pc_code => lx_pc_code);
6500
6501 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6502 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6503 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6504 RAISE OKL_API.G_EXCEPTION_ERROR;
6505 END IF;
6506
6507 -- Validate PC Code
6508 IF lx_pc_code IS NOT NULL THEN
6509 validate_tax_code(
6510 p_api_version => p_api_version,
6511 p_init_msg_list => p_init_msg_list,
6512 x_return_status => x_return_status,
6513 x_msg_count => x_msg_count,
6514 x_msg_data => x_msg_data,
6515 p_trx_date => p_trx_date,
6516 p_pc_code => lx_pc_code,
6517 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6518
6519 IF (lx_tax_valid_code = 'F') THEN
6520 lx_pc_code := null;
6521 END IF;
6522
6523 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6524 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6525 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6526 RAISE OKL_API.G_EXCEPTION_ERROR;
6527 END IF;
6528 END IF;
6529
6530 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6531 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6532 'lx_pc_code'||lx_pc_code);
6533 END IF;
6534
6535 -- Get UFC code
6536 get_ufc_code(p_api_version => p_api_version,
6537 p_init_msg_list => OKC_API.G_FALSE,
6538 x_return_status => x_return_status,
6539 x_msg_count => x_msg_count,
6540 x_msg_data => x_msg_data,
6541 p_purchase_option => p_prch_opt_det,
6542 p_fin_product_id => p_fin_prod_id_det,
6543 p_try_id => p_try_id,
6544 p_sty_id => p_sty_id, -- used if pymnts exist
6545 p_int_disclosed_code => p_int_disclosed_det,
6546 p_title_trnsfr_code => p_title_trnsfr_code, -- asset level
6547 p_sale_lease_back_code => p_sale_lease_back_code, -- asset level
6548 p_lease_purchased_code => p_lease_purchased_code, -- asset level
6549 p_equip_usage_code => p_equip_usage_code ,-- asset level
6550 p_vendor_site_id => p_vendor_site_id, -- asset level
6551 p_age_of_equip => p_age_of_equip, -- asset level
6552 p_term_quote_type_code => null,
6553 p_term_quote_reason_code => null,
6554 p_tax_country_code => p_tax_country_code,
6555 x_ufc_code => lx_ufc_code);
6556
6557 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6558 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6559 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6560 RAISE OKL_API.G_EXCEPTION_ERROR;
6561 END IF;
6562
6563 -- Validate UFC Code
6564 IF lx_ufc_code IS NOT NULL THEN
6565 validate_tax_code(
6566 p_api_version => p_api_version,
6567 p_init_msg_list => p_init_msg_list,
6568 x_return_status => x_return_status,
6569 x_msg_count => x_msg_count,
6570 x_msg_data => x_msg_data,
6571 p_trx_date => p_trx_date,
6572 p_ufc_code => lx_ufc_code,
6573 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
6574
6575 IF (lx_tax_valid_code = 'F') THEN
6576 lx_ufc_code := null;
6577 END IF;
6578
6579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6582 RAISE OKL_API.G_EXCEPTION_ERROR;
6583 END IF;
6584 END IF;
6585
6586 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6587 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6588 'lx_ufc_code'||lx_ufc_code);
6589 END IF;
6590
6591 -- Get Set of Books ID
6592 OPEN c_get_set_of_books_id(cp_org_id => p_org_id);
6593 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
6594 CLOSE c_get_set_of_books_id;
6595
6596 -- Get the tax classification code
6597 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6598 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6599 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
6600 END IF;
6601
6602 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
6603 x_return_status => x_return_status,
6604 p_ship_to_site_use_id => p_ship_to_cust_acct_site_id,
6605 p_bill_to_site_use_id => p_bill_to_cust_acct_site_id,
6606 p_inventory_item_id => p_inventory_item_id,
6607 p_organization_id => p_org_id,
6608 p_set_of_books_id => l_set_of_books_id,
6609 p_trx_date => p_trx_date,
6610 p_trx_type_id => null,
6611 p_entity_code => G_AR_ENTITY_CODE,
6612 p_event_class_code => G_INVOICE_EVENT_CLASS_CODE,
6613 p_application_id => G_AR_APPLICATION_ID,
6614 p_internal_organization_id => p_org_id,
6615 x_tax_classification_code => lx_tax_classification_code );
6616
6617 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6618 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes.',
6619 'Return Status '|| x_return_status);
6620 END IF;
6621
6622 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6623 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6624 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6625 RAISE OKL_API.G_EXCEPTION_ERROR;
6626 END IF;
6627
6628 px_tax_codes_tbl(p_tax_code_cnt).khr_id := p_khr_id;
6629 px_tax_codes_tbl(p_tax_code_cnt).kle_id := p_kle_id;
6630 px_tax_codes_tbl(p_tax_code_cnt).sty_id := p_sty_id;
6631 px_tax_codes_tbl(p_tax_code_cnt).tbc_code := lx_tbc_code;
6632 px_tax_codes_tbl(p_tax_code_cnt).pc_code := lx_pc_code;
6633 px_tax_codes_tbl(p_tax_code_cnt).ufc_code := lx_ufc_code;
6634 px_tax_codes_tbl(p_tax_code_cnt).tax_class_code := lx_tax_classification_code;
6635
6636 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6637 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ','End(-)');
6638 END IF;
6639
6640 EXCEPTION
6641 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6642 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6643 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6644 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6645 END IF;
6646
6647 IF (c_get_set_of_books_id%ISOPEN) THEN
6648 CLOSE c_get_set_of_books_id;
6649 END IF;
6650
6651 x_return_status := OKL_API.G_RET_STS_ERROR;
6652
6653 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6654 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6655 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6656 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6657 END IF;
6658
6659 IF (c_get_set_of_books_id%ISOPEN) THEN
6660 CLOSE c_get_set_of_books_id;
6661 END IF;
6662
6663 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6664
6665 WHEN OTHERS THEN
6666
6667 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6668 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.populate_tax_codes ',
6669 'EXCEPTION :'||sqlerrm);
6670 END IF;
6671
6672 IF (c_get_set_of_books_id%ISOPEN) THEN
6673 CLOSE c_get_set_of_books_id;
6674 END IF;
6675
6676 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6677
6678 OKL_API.set_message(p_app_name => g_app_name,
6679 p_msg_name => g_unexpected_error,
6680 p_token1 => g_sqlcode_token,
6681 p_token1_value => sqlcode,
6682 p_token2 => g_sqlerrm_token,
6683 p_token2_value => sqlerrm);
6684
6685 END populate_tax_codes;
6686
6687 /*========================================================================
6688 | PUBLIC PROCEDURE get_billing_stream_types
6689 |
6690 | DESCRIPTION
6691 | This procedure is called by the Tax Calculation Setup Screen to derive
6692 | List of Values for the screen LOV field "Stream Type For Billing"
6693 |
6694 | CALLED FROM
6695 | Tax Calculation Setup Screen
6696 |
6697 | CALLS PROCEDURES/FUNCTIONS
6698 |
6699 |
6700 | PARAMETERS
6701 | Input Parameters
6702 | p_org_id -- org ID
6703 | p_sty_code -- Stream Type Code
6704 | Output Parameters
6705 | x_sty_id_tbl -- Table of Billing Stream Types
6706 |
6707 | KNOWN ISSUES
6708 |
6709 | NOTES
6710 |
6711 |
6712 | MODIFICATION HISTORY
6713 | Date Author Description of Changes
6714 | 08-APR-05 SECHAWLA Created
6715 |
6716 *=======================================================================*/
6717
6718
6719 PROCEDURE get_billing_stream_types(
6720 p_api_version IN NUMBER,
6721 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6722 x_return_status OUT NOCOPY VARCHAR2,
6723 x_msg_count OUT NOCOPY NUMBER,
6724 x_msg_data OUT NOCOPY VARCHAR2,
6725 p_org_id IN NUMBER,
6726 p_sty_code IN VARCHAR2,
6727 x_sty_id_tbl OUT NOCOPY sty_id_tbl_type) IS
6728
6729 -- get all the Billable, enabled streams of purpose FEE_PAYMENT
6730 CURSOR l_strmtype_csr(cp_sty_code IN VARCHAR2) IS
6731 SELECT a.id, a.code, a.stream_type_purpose, b.meaning
6732 FROM okl_strm_type_b a, fnd_lookups b
6733 WHERE a.stream_type_purpose = 'FEE_PAYMENT'
6734 AND a.billable_yn = 'Y'
6735 AND a.stream_type_purpose = b.lookup_code
6736 AND b.lookup_type = 'OKL_STREAM_TYPE_PURPOSE'
6737 AND b.enabled_flag = 'Y'
6738 AND upper(a.code) like decode(cp_sty_code, NULL, a.code, '%', a.code, upper(cp_sty_code)||'%');
6739
6740 -- get all the SGT sets for a given OU
6741 CURSOR l_stgentmptsets_csr(cp_org_id IN NUMBER) IS
6742 SELECT id
6743 FROM okl_st_gen_tmpt_sets
6744 WHERE org_id = cp_org_id
6745 --asawanka bug fix 4659674 start
6746 AND product_type = 'FINANCIAL';
6747 --asawanka bug fix 4659674 end
6748
6749 -- Get all SGTs for a given SGT Set
6750 CURSOR l_stgentemplates_csr(cp_gts_id IN NUMBER) IS
6751 SELECT id
6752 FROM okl_st_gen_templates
6753 WHERE gts_id = cp_gts_id
6754 AND tmpt_status = G_ACTIVE_STATUS;
6755
6756 -- Get all the SGT Lines for a given SGT
6757 CURSOR l_stgentmptlns_csr(cp_gtt_id IN NUMBER) IS
6758 SELECT primary_sty_id
6759 FROM okl_st_gen_tmpt_lns
6760 WHERE gtt_id = cp_gtt_id
6761 AND primary_yn = 'Y';
6762
6763 l_sty_id_tbl sty_id_tbl_type;
6764
6765 l_stream_type_found VARCHAR2(1);
6766 sty_id_tbl_cnt NUMBER := 0;
6767 l_sgt_set_found VARCHAR2(1) := 'N';
6768 l_strm_type_cnt NUMBER := 0;
6769 l_any_active_sgt_found VARCHAR2(1);
6770 l_active_sgt_found VARCHAR2(1);
6771 l_id NUMBER;
6772
6773 BEGIN
6774
6775 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6776 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types','Begin(+)');
6777 END IF;
6778
6779 --Print Input Variables
6780 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6781 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6782 'p_init_msg_list :'||p_init_msg_list);
6783 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6784 'p_org_id :'||p_org_id);
6785 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6786 'p_sty_code :'||p_sty_code);
6787 END IF;
6788
6789 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6790
6791 -- Check if any stream generation template set exists for this OU
6792 OPEN l_stgentmptsets_csr(p_org_id);
6793 FETCH l_stgentmptsets_csr INTO l_id;
6794 IF l_stgentmptsets_csr%FOUND THEN
6795 l_sgt_set_found := 'Y';
6796 END IF;
6797 CLOSE l_stgentmptsets_csr;
6798
6799 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6801 'l_sgt_set_found'||l_sgt_set_found);
6802 END IF;
6803
6804 l_any_active_sgt_found := 'N'; -- Flag to indicate if any ACTIVE SGT exists across all SGT Sets
6805
6806 FOR l_strmtype_rec IN l_strmtype_csr(p_sty_code) LOOP -- All/User selected billable stream types of purpose 'FEE_PAYMENT'
6807 l_strm_type_cnt := l_strm_type_cnt + 1;
6808
6809 IF l_sgt_set_found = 'Y' THEN -- If there are any SGT sets for this OU
6810
6811 l_stream_type_found := 'N';
6812
6813 IF l_strm_type_cnt = 1 OR l_any_active_sgt_found = 'Y' THEN
6814
6815
6816
6817 -- When the following piece of code is executed for the first stream type, it sets the flag
6818 -- l_any_active_sgt_found (along with other processing logic) to 'Y' if any ACTIVE SGT
6819 -- is found across all SGT sets. If there are no ACTIVE SGTs across all the SGT sets, then
6820 -- this piece of code is not executed for the remaining stream types
6821 FOR l_stgentmptsets_rec IN l_stgentmptsets_csr(p_org_id) LOOP -- all SGT sets for a given org
6822
6823
6824 l_active_sgt_found := 'N';
6825 FOR l_stgentemplates_rec IN l_stgentemplates_csr(l_stgentmptsets_rec.id) LOOP -- all ACTIVE versions of a given SGT
6826 l_active_sgt_found := 'Y';
6827 l_any_active_sgt_found := 'Y';
6828 FOR l_stgentmptlns_rec IN l_stgentmptlns_csr(l_stgentemplates_rec.id) LOOP -- all lines (stream types) in a given version
6829 IF l_stgentmptlns_rec.primary_sty_id = l_strmtype_rec.id THEN
6830 l_stream_type_found := 'Y';
6831 EXIT;
6832 ELSE
6833 l_stream_type_found := 'N';
6834 END IF;
6835 END LOOP;
6836 --IF l_stream_type_found = 'N' THEN
6837 --dcshanmu bug 6667098 start
6838 IF l_stream_type_found = 'Y' THEN
6839 --dcshanmu bug 6667098 end
6840 EXIT;
6841 END IF;
6842 END LOOP;
6843 --IF l_active_sgt_found = 'Y' AND l_stream_type_found = 'N' THEN
6844 --dcshanmu bug 6667098 start
6845 IF l_active_sgt_found = 'Y' AND l_stream_type_found = 'Y' THEN
6846 --dcshanmu bug 6667098 end
6847 EXIT;
6848 END IF;
6849 END LOOP;
6850
6851 END IF; -- IF l_strm_type_cnt = 1 OR l_any_active_sgt_found = 'Y' THEN
6852
6853
6854 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6855 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6856 'l_any_active_sgt_found'||l_any_active_sgt_found);
6857 END IF;
6858
6859 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6860 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6861 'l_stream_type_found'||l_stream_type_found);
6862 END IF;
6863
6864 -- If there are no ACTIVE SGTs across all SGT sets OR stream type found under ACTIVE SGTs,
6865 -- then consider stream type for the LOV
6866 IF l_any_active_sgt_found = 'N' OR l_stream_type_found = 'Y' THEN
6867 sty_id_tbl_cnt := sty_id_tbl_cnt + 1;
6868
6869 l_sty_id_tbl(sty_id_tbl_cnt).sty_id := l_strmtype_rec.id;
6870 l_sty_id_tbl(sty_id_tbl_cnt).sty_code := l_strmtype_rec.code;
6871 l_sty_id_tbl(sty_id_tbl_cnt).sty_purpose := l_strmtype_rec.meaning;
6872
6873 END IF;
6874
6875
6876 ELSE -- there are no SGT sets existing for this OU, so consider stream type for the LOV
6877
6878 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6879 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types.',
6880 'There are no SGT sets existing for this OU');
6881 END IF;
6882
6883 sty_id_tbl_cnt := sty_id_tbl_cnt + 1;
6884
6885 l_sty_id_tbl(sty_id_tbl_cnt).sty_id := l_strmtype_rec.id;
6886 l_sty_id_tbl(sty_id_tbl_cnt).sty_code := l_strmtype_rec.code;
6887 l_sty_id_tbl(sty_id_tbl_cnt).sty_purpose := l_strmtype_rec.meaning;
6888
6889 END IF;
6890 END LOOP;
6891
6892 x_sty_id_tbl := l_sty_id_tbl;
6893
6894
6895 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6896 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ','End(-)');
6897 END IF;
6898
6899
6900 EXCEPTION
6901 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6902 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6903 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6904 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
6905 END IF;
6906
6907
6908 IF l_strmtype_csr%ISOPEN THEN
6909 CLOSE l_strmtype_csr;
6910 END IF;
6911
6912 IF l_stgentmptsets_csr%ISOPEN THEN
6913 CLOSE l_stgentmptsets_csr;
6914 END IF;
6915
6916 IF l_stgentemplates_csr%ISOPEN THEN
6917 CLOSE l_stgentemplates_csr;
6918 END IF;
6919
6920 IF l_stgentmptlns_csr%ISOPEN THEN
6921 CLOSE l_stgentmptlns_csr;
6922 END IF;
6923
6924 x_return_status := OKL_API.G_RET_STS_ERROR;
6925 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6926 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6927 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6928 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
6929 END IF;
6930
6931 IF l_strmtype_csr%ISOPEN THEN
6932 CLOSE l_strmtype_csr;
6933 END IF;
6934
6935 IF l_stgentmptsets_csr%ISOPEN THEN
6936 CLOSE l_stgentmptsets_csr;
6937 END IF;
6938
6939 IF l_stgentemplates_csr%ISOPEN THEN
6940 CLOSE l_stgentemplates_csr;
6941 END IF;
6942
6943 IF l_stgentmptlns_csr%ISOPEN THEN
6944 CLOSE l_stgentmptlns_csr;
6945 END IF;
6946
6947 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6948
6949 WHEN OTHERS THEN
6950 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
6951 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_billing_stream_types ',
6952 'EXCEPTION :'||sqlerrm);
6953 END IF;
6954
6955 IF l_strmtype_csr%ISOPEN THEN
6956 CLOSE l_strmtype_csr;
6957 END IF;
6958
6959 IF l_stgentmptsets_csr%ISOPEN THEN
6960 CLOSE l_stgentmptsets_csr;
6961 END IF;
6962
6963 IF l_stgentemplates_csr%ISOPEN THEN
6964 CLOSE l_stgentemplates_csr;
6965 END IF;
6966
6967 IF l_stgentmptlns_csr%ISOPEN THEN
6968 CLOSE l_stgentmptlns_csr;
6969 END IF;
6970
6971 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6972 -- unexpected error
6973 OKL_API.set_message(p_app_name => g_app_name,
6974 p_msg_name => g_unexpected_error,
6975 p_token1 => g_sqlcode_token,
6976 p_token1_value => sqlcode,
6977 p_token2 => g_sqlerrm_token,
6978 p_token2_value => sqlerrm);
6979
6980 END get_billing_stream_types;
6981
6982 /*========================================================================
6983 | PRIVATE PROCEDURE get_k_hdr_tax_params
6984 |
6985 | DESCRIPTION
6986 | This procedure is called by other procedures in this API to derive
6987 | contract level tax determinats
6988 |
6989 | CALLED FROM
6990 |
6991 |
6992 | CALLS PROCEDURES/FUNCTIONS
6993 | okl_am_util_pvt.get_rule_record
6994 |
6995 |
6996 | PARAMETERS
6997 | Input parameters
6998 | p_khr_id -- Contract ID
6999 | p_source_trx_name -- Source Transaction
7000 | p_source_table -- Source Trx Table
7001 | p_qtp_code -- Quote Type (Termination / Repurchase)
7002 | p_early_term_yn -- Early termination yn
7003 | p_purpose_code -- Stream Type purpose
7004 | Output Parameters
7005 | x_cust_acct_id -- Customer A/c ID
7006 | x_bill_to_siteuseid -- Bill To Site Use ID
7007 | x_currency_code -- Curency Code
7008 | x_cust_trx_type_id -- Customer Trx Type ID
7009 | x_precision -- Currency Precision
7010 | x_minimum_accountable_unit -- Currncy Min accountable unit
7011 | x_prch_opt_det -- Purchase Option
7012 | x_fin_prod_id_det -- Financial Product ID
7013 | x_int_disclosed_det -- Interest Disclosed
7014 |
7015 | KNOWN ISSUES
7016 |
7017 | NOTES
7018 |
7019 |
7020 | MODIFICATION HISTORY
7021 | Date Author Description of Changes
7022 | 08-APR-05 SECHAWLA Created
7023 | 23-NOV-05 SECHAWLA 4742539 System picking wrong TBC
7024 |
7025 *=======================================================================*/
7026
7027 PROCEDURE get_k_hdr_tax_params(
7028 p_api_version IN NUMBER,
7029 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7030 x_return_status OUT NOCOPY VARCHAR2,
7031 x_msg_count OUT NOCOPY NUMBER,
7032 x_msg_data OUT NOCOPY VARCHAR2,
7033 p_khr_id IN NUMBER,
7034 p_source_trx_name IN VARCHAR2,
7035 p_source_table IN VARCHAR2,
7036 p_qtp_code IN VARCHAR2 DEFAULT NULL, -- Used only for termination/repurchase quote
7037 p_early_term_yn IN VARCHAR2 DEFAULT NULL, -- Used only for termination/repurchase quote
7038 p_purpose_code IN VARCHAR2 DEFAULT NULL, -- Used only in process_invoice_tax to identify remk,asset repair,vendor cure invoices
7039 x_cust_acct_id OUT NOCOPY NUMBER,
7040 x_bill_to_siteuseid OUT NOCOPY NUMBER,
7041 x_currency_code OUT NOCOPY VARCHAR2,
7042 x_cust_trx_type_id OUT NOCOPY NUMBER,
7043 x_precision OUT NOCOPY NUMBER,
7044 x_minimum_accountable_unit OUT NOCOPY NUMBER,
7045 x_prch_opt_det OUT NOCOPY VARCHAR2,
7046 x_fin_prod_id_det OUT NOCOPY NUMBER,
7047 x_int_disclosed_det OUT NOCOPY VARCHAR2,
7048 x_org_id OUT NOCOPY NUMBER,
7049 x_book_class_code OUT NOCOPY VARCHAR2,
7050 x_bill_to_party_site_id OUT NOCOPY NUMBER,
7051 x_bill_to_party_id OUT NOCOPY NUMBER,
7052 x_bill_to_location_id OUT NOCOPY NUMBER,
7053 x_currency_conversion_type OUT NOCOPY VARCHAR2,
7054 x_currency_conversion_rate OUT NOCOPY NUMBER,
7055 x_currency_conversion_date OUT NOCOPY DATE,
7056 x_contract_start_date OUT NOCOPY DATE ) IS
7057
7058 --Cursor to get the customer_account_id for the customer
7059 CURSOR c_get_contractinfo_csr(cp_khr_id IN NUMBER) IS
7060 SELECT cust_acct_id, bill_to_site_use_id, currency_code, org_id,
7061 conversion_type, conversion_rate, conversion_rate_date, start_date
7062 FROM okc_k_headers_b
7063 WHERE id = cp_khr_id;
7064
7065 --get currency attributes
7066 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
7067 SELECT precision, minimum_accountable_unit
7068 FROM fnd_currencies
7069 WHERE currency_code = cp_currency_code
7070 AND enabled_flag = 'Y'
7071 AND NVL(start_date_active, sysdate) <= sysdate
7072 AND NVL(end_date_active, sysdate) >= sysdate;
7073
7074 --Get the AR customer transaction type used by OKL
7075 CURSOR l_racusttrxtypes_csr IS
7076 SELECT cust_trx_type_id
7077 FROM ra_cust_trx_types_all
7078 WHERE name = 'Invoice-OKL';
7079
7080 -- get the financial product
7081 CURSOR l_oklkheaders_csr(cp_khr_id IN NUMBER) IS
7082 SELECT pdt_id, deal_type
7083 FROM okl_k_headers
7084 WHERE id = cp_khr_id;
7085
7086 l_cust_trx_type_id NUMBER;
7087
7088 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7089 l_precision NUMBER;
7090 l_minimum_accountable_unit NUMBER;
7091
7092 l_rulv_rec okl_rule_pub.rulv_rec_type;
7093 l_rulv_empty_rec okl_rule_pub.rulv_rec_type;
7094
7095 l_prch_opt_det VARCHAR2(450);
7096 l_fin_prod_id_det NUMBER;
7097 l_int_disclosed_det VARCHAR2(30);
7098 l_purpose_code VARCHAR2(30);
7099 l_book_class_code VARCHAR2(30);
7100
7101 lx_bill_to_party_site_id NUMBER;
7102 lx_bill_to_location_id NUMBER;
7103 lx_bill_to_party_id NUMBER;
7104 lx_bill_to_siteuseid NUMBER;
7105 lx_ship_to_party_site_id NUMBER;
7106 lx_ship_to_location_id NUMBER;
7107 lx_ship_to_party_id NUMBER;
7108 lx_ship_to_siteuseid NUMBER;
7109
7110 l_get_contractinfo_rec c_get_contractinfo_csr%ROWTYPE;
7111
7112 BEGIN
7113
7114 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7115 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params','Begin(+)');
7116 END IF;
7117
7118 --Print Input Variables
7119 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7120 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7121 'p_init_msg_list :'||p_init_msg_list);
7122 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7123 'p_khr_id :'||p_khr_id);
7124 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7125 'p_source_trx_name :'||p_source_trx_name);
7126 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7127 'p_source_table :'||p_source_table);
7128 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7129 'p_qtp_code :'||p_qtp_code);
7130 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7131 'p_early_term_yn :'||p_early_term_yn);
7132 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7133 'p_purpose_code :'||p_purpose_code);
7134 END IF;
7135
7136 OPEN c_get_contractinfo_csr(p_khr_id);
7137 FETCH c_get_contractinfo_csr INTO l_get_contractinfo_rec;
7138 IF c_get_contractinfo_csr%NOTFOUND THEN
7139 -- KHR ID is invalid
7140 OKC_API.set_message( p_app_name => 'OKC',
7141 p_msg_name => G_INVALID_VALUE,
7142 p_token1 => G_COL_NAME_TOKEN,
7143 p_token1_value => 'KHR_ID');
7144 RAISE OKL_API.G_EXCEPTION_ERROR;
7145 END IF;
7146 CLOSE c_get_contractinfo_csr;
7147
7148 IF l_get_contractinfo_rec.currency_code IS NULL THEN
7149 OKC_API.set_message( p_app_name => 'OKC',
7150 p_msg_name => G_REQUIRED_VALUE,
7151 p_token1 => G_COL_NAME_TOKEN,
7152 p_token1_value => 'CURRENCY_CODE');
7153
7154 RAISE OKL_API.G_EXCEPTION_ERROR;
7155 END IF;
7156
7157 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7158 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7159 'l_get_custacctid_rec.cust_acct_id'||l_get_contractinfo_rec.cust_acct_id);
7160
7161 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7162 'l_get_custacctid_rec.bill_to_site_use_id'||l_get_contractinfo_rec.bill_to_site_use_id);
7163
7164 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7165 'l_get_custacctid_rec.currency_code'||l_get_contractinfo_rec.currency_code);
7166 END IF;
7167
7168
7169 OPEN l_fndcurrency_csr(l_get_contractinfo_rec.currency_code);
7170 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit; -- l_minimum_accountable_unit is optional in fnd_currencies
7171 -- but mandatory for tax team
7172 -- check with Nilesh
7173 IF l_fndcurrency_csr%NOTFOUND THEN
7174 -- currency code is invalid
7175 OKC_API.set_message( p_app_name => 'OKC',
7176 p_msg_name => G_INVALID_VALUE,
7177 p_token1 => G_COL_NAME_TOKEN,
7178 p_token1_value => 'CURRENCY_CODE');
7179
7180 RAISE OKL_API.G_EXCEPTION_ERROR;
7181 END IF;
7182 CLOSE l_fndcurrency_csr;
7183
7184 -- get the AR cust trx type ID
7185 OPEN l_racusttrxtypes_csr;
7186 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
7187 IF l_racusttrxtypes_csr%NOTFOUND THEN
7188 -- cust trx tyep id is required
7189 OKC_API.set_message( p_app_name => 'OKC',
7190 p_msg_name => G_REQUIRED_VALUE,
7191 p_token1 => G_COL_NAME_TOKEN,
7192 p_token1_value => 'CUST_TRX_TYPE_ID');
7193
7194 RAISE OKL_API.G_EXCEPTION_ERROR;
7195 END IF;
7196 CLOSE l_racusttrxtypes_csr;
7197
7198
7199
7200 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7201 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7202 'l_precision'||l_precision);
7203
7204 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7205 'l_minimum_accountable_unit'||l_minimum_accountable_unit);
7206
7207 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7208 'l_cust_trx_type_id'||l_cust_trx_type_id);
7209
7210
7211 END IF;
7212 ----------- Identify the determinants : TBC and directly mapped START ---------------------
7213
7214 -- Financial Product - K level
7215 OPEN l_oklkheaders_csr(p_khr_id);
7216 FETCH l_oklkheaders_csr INTO l_fin_prod_id_det, l_book_class_code;
7217 CLOSE l_oklkheaders_csr;
7218
7219 IF l_fin_prod_id_det IS NULL THEN -- financial product is mandatory on the contract
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 => 'Financial Product');
7224 RAISE OKL_API.G_EXCEPTION_ERROR;
7225 END IF;
7226
7227 IF p_source_trx_name = 'Estimated Billing' AND p_source_table = 'OKL_TRX_QUOTES_B' THEN -- Termination/Repurchase quote creation/updation
7228 IF p_qtp_code LIKE 'TER%' THEN
7229 IF p_early_term_yn = 'Y' THEN
7230 -- get Early term purchase option - K level
7231
7232 l_rulv_rec := l_rulv_empty_rec ;
7233 okl_am_util_pvt.get_rule_record(
7234 p_rgd_code => 'AMTEOC'
7235 ,p_rdf_code => 'AMBPOC'
7236 ,p_chr_id => p_khr_id
7237 ,p_cle_id => NULL
7238 ,p_message_yn => FALSE
7239 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7240 ,x_return_status => x_return_status
7241 ,x_msg_count => x_msg_count
7242 ,x_msg_data => x_msg_data);
7243
7244 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7245 -- Rule instance is found
7246 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7247
7248 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7249
7250 END IF;
7251
7252
7253 END IF;
7254 ---
7255 ELSE
7256 -- EOT Purchase Option - K level
7257 l_rulv_rec := l_rulv_empty_rec ;
7258 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7259 ,p_rdf_code => 'AMBPOC'
7260 ,p_chr_id => p_khr_id
7261 ,p_cle_id => NULL
7262 ,p_message_yn => FALSE
7263 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7264 ,x_return_status => x_return_status
7265 ,x_msg_count => x_msg_count
7266 ,x_msg_data => x_msg_data);
7267
7268 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7269 -- Rule instance is found
7270 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7271
7272 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7273
7274 END IF;
7275
7276 END IF;
7277
7278 -----
7279 END IF;
7280
7281 -- Interest Disclosed - K Level
7282 l_rulv_rec := l_rulv_empty_rec ;
7283 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7284 ,p_rdf_code => 'LASTCL'
7285 ,p_chr_id => p_khr_id
7286 ,p_cle_id => NULL
7287 ,p_message_yn => FALSE
7288 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7289 ,x_return_status => x_return_status
7290 ,x_msg_count => x_msg_count
7291 ,x_msg_data => x_msg_data);
7292
7293 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7294 -- Rule instance is found
7295 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7296
7297 l_int_disclosed_det := l_rulv_rec.rule_information2;
7298 ELSE -- interest diclosed is optional on the contract
7299
7300 l_int_disclosed_det := 'N';
7301 END IF;
7302
7303 ELSE -- interest diclosed is optional on the contract
7304
7305 l_int_disclosed_det := 'N';
7306 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7307 END IF;
7308 ----
7309
7310 ELSE -- repurchase quote creation / updation
7311 l_prch_opt_det := NULL; -- Purchase option is not applicable for Repurcsae Quote creation, updation
7312 l_fin_prod_id_det := NULL; -- financial product is NA for repurchase quote creation, updation
7313 l_int_disclosed_det := 'N';
7314 END IF;
7315 ELSIF ( (p_source_trx_name = 'Billing' OR p_source_trx_name = 'Credit Memo')
7316 AND p_source_table = 'OKL_TXD_AR_LN_DTLS_B'
7317 ) THEN -- Billing from other transactions (not stream biling)
7318 IF p_qtp_code LIKE 'TER%' THEN -- termination quote billing
7319 IF p_early_term_yn = 'Y' THEN
7320 -- get Early term purchase option
7321 l_rulv_rec := l_rulv_empty_rec ;
7322 okl_am_util_pvt.get_rule_record(
7323 p_rgd_code => 'AMTEOC'
7324 ,p_rdf_code => 'AMBPOC'
7325 ,p_chr_id => p_khr_id
7326 ,p_cle_id => NULL
7327 ,p_message_yn => FALSE
7328 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7329 ,x_return_status => x_return_status
7330 ,x_msg_count => x_msg_count
7331 ,x_msg_data => x_msg_data);
7332
7333 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7334 -- Rule instance is found
7335 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7336
7337 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7338
7339 END IF;
7340
7341 END IF;
7342 ---
7343 ELSE
7344 -- get EOT purchase option
7345 l_rulv_rec := l_rulv_empty_rec ;
7346 okl_am_util_pvt.get_rule_record(
7347 p_rgd_code => 'AMTFOC'
7348 ,p_rdf_code => 'AMBPOC'
7349 ,p_chr_id => p_khr_id
7350 ,p_cle_id => NULL
7351 ,p_message_yn => FALSE
7352 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7353 ,x_return_status => x_return_status
7354 ,x_msg_count => x_msg_count
7355 ,x_msg_data => x_msg_data);
7356
7357 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7358 -- Rule instance is found
7359 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7360
7361 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7362
7363 END IF;
7364
7365 END IF;
7366 ---
7367 END IF;
7368
7369 -- Interest Disclosed - K Level
7370 l_rulv_rec := l_rulv_empty_rec ;
7371 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7372 ,p_rdf_code => 'LASTCL'
7373 ,p_chr_id => p_khr_id
7374 ,p_cle_id => NULL
7375 ,p_message_yn => FALSE
7376 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7377 ,x_return_status => x_return_status
7378 ,x_msg_count => x_msg_count
7379 ,x_msg_data => x_msg_data);
7380
7381 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7382 -- Rule instance is found
7383 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7384
7385 l_int_disclosed_det := l_rulv_rec.rule_information2;
7386 ELSE -- interest diclosed is optional on the contract
7387
7388 l_int_disclosed_det := 'N';
7389 END IF;
7390
7391 ELSE -- interest diclosed is optional on the contract
7392
7393 l_int_disclosed_det := 'N';
7394 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7395 END IF;
7396 ----
7397 ELSIF p_qtp_code LIKE 'REP%' OR p_purpose_code IN ('AMBSPR','CURE','REPAIR_CHARGE') THEN
7398 -- Repurchase quote billing OR Remk,asset repair or vendor cure billing
7399
7400 l_prch_opt_det := NULL; -- Purchase option is not applicable for Repurcsae Quote billing
7401 l_fin_prod_id_det := NULL; -- Fin product is NA for repurchase quote billing
7402 l_int_disclosed_det := 'N';
7403
7404 -- SECHAWLA 23-NOV-05 4742539 : added the following piece of code : begin
7405 ELSE
7406 -- EOT Purchase Option - K level
7407 l_rulv_rec := l_rulv_empty_rec ;
7408 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7409 ,p_rdf_code => 'AMBPOC'
7410 ,p_chr_id => p_khr_id
7411 ,p_cle_id => NULL
7412 ,p_message_yn => FALSE
7413 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7414 ,x_return_status => x_return_status
7415 ,x_msg_count => x_msg_count
7416 ,x_msg_data => x_msg_data);
7417
7418 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7419 -- Rule instance is found
7420 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7421
7422 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7423
7424 END IF;
7425
7426 END IF;
7427
7428 -- Interest Disclosed - K Level
7429 l_rulv_rec := l_rulv_empty_rec ;
7430 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7431 ,p_rdf_code => 'LASTCL'
7432 ,p_chr_id => p_khr_id
7433 ,p_cle_id => NULL
7434 ,p_message_yn => FALSE
7435 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7436 ,x_return_status => x_return_status
7437 ,x_msg_count => x_msg_count
7438 ,x_msg_data => x_msg_data);
7439
7440 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7441 -- Rule instance is found
7442 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7443
7444 l_int_disclosed_det := l_rulv_rec.rule_information2;
7445 ELSE -- interest diclosed is optional on the contract
7446
7447 l_int_disclosed_det := 'N';
7448 END IF;
7449
7450 ELSE -- interest diclosed is optional on the contract
7451
7452 l_int_disclosed_det := 'N';
7453 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7454 END IF;
7455 -- SECHAWLA 23-NOV-05 4742539 : end
7456
7457 END IF;
7458
7459
7460 ELSE -- for all other cases, use EOT purchase option
7461
7462 -- EOT Purchase Option - K level
7463 l_rulv_rec := l_rulv_empty_rec ;
7464 okl_am_util_pvt.get_rule_record( p_rgd_code => 'AMTFOC'
7465 ,p_rdf_code => 'AMBPOC'
7466 ,p_chr_id => p_khr_id
7467 ,p_cle_id => NULL
7468 ,p_message_yn => FALSE
7469 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7470 ,x_return_status => x_return_status
7471 ,x_msg_count => x_msg_count
7472 ,x_msg_data => x_msg_data);
7473
7474 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7475 -- Rule instance is found
7476 IF (l_rulv_rec.rule_information11 IS NOT NULL) AND (l_rulv_rec.rule_information11 <> OKL_API.G_MISS_CHAR) THEN
7477
7478 l_prch_opt_det := l_rulv_rec.rule_information11; -- It can have a value 'NONE' which is OK
7479
7480 END IF;
7481
7482 END IF;
7483
7484 -- Interest Disclosed - K Level
7485 l_rulv_rec := l_rulv_empty_rec ;
7486 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAHDTX'
7487 ,p_rdf_code => 'LASTCL'
7488 ,p_chr_id => p_khr_id
7489 ,p_cle_id => NULL
7490 ,p_message_yn => FALSE
7491 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7492 ,x_return_status => x_return_status
7493 ,x_msg_count => x_msg_count
7494 ,x_msg_data => x_msg_data);
7495
7496 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7497 -- Rule instance is found
7498 IF (l_rulv_rec.rule_information2 IS NOT NULL) AND (l_rulv_rec.rule_information2 <> OKL_API.G_MISS_CHAR) THEN
7499
7500 l_int_disclosed_det := l_rulv_rec.rule_information2;
7501 ELSE -- interest diclosed is optional on the contract
7502
7503 l_int_disclosed_det := 'N';
7504 END IF;
7505
7506 ELSE -- interest diclosed is optional on the contract
7507
7508 l_int_disclosed_det := 'N';
7509 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7510 END IF;
7511 END IF;
7512
7513
7514 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7515 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7516 'l_prch_opt_det'||l_prch_opt_det);
7517 END IF;
7518
7519
7520 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7521 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7522 'l_int_disclosed_det'||l_int_disclosed_det);
7523 END IF;
7524
7525 -- get the 'bill_to' identifiers -- start
7526 IF p_source_trx_name NOT IN ('Funding', 'Disbursement', 'Debit Memo') THEN
7527 get_location_party_ids( p_api_version => p_api_version,
7528 p_init_msg_list => p_init_msg_list,
7529 x_return_status => x_return_status,
7530 x_msg_count => x_msg_count,
7531 x_msg_data => x_msg_data,
7532 p_cust_acct_id => l_get_contractinfo_rec.cust_acct_id,
7533 p_fin_asset_id => null,
7534 p_khr_id => p_khr_id,
7535 x_bill_to_party_site_id => lx_bill_to_party_site_id,
7536 x_bill_to_location_id => lx_bill_to_location_id,
7537 x_bill_to_party_id => lx_bill_to_party_id,
7538 x_bill_to_site_use_id => lx_bill_to_siteuseid,
7539 x_ship_to_party_site_id => lx_ship_to_party_site_id,
7540 x_ship_to_location_id => lx_ship_to_location_id,
7541 x_ship_to_party_id => lx_ship_to_party_id,
7542 x_ship_to_site_use_id => lx_ship_to_siteuseid);
7543 END IF;
7544
7545 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7546 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7548 RAISE OKL_API.G_EXCEPTION_ERROR;
7549 END IF;
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 'lx_bill_to_party_site_id'||lx_bill_to_party_site_id);
7554 END IF;
7555
7556 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7557 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7558 'lx_bill_to_location_id'||lx_bill_to_location_id);
7559 END IF;
7560
7561 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7562 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params.',
7563 'lx_bill_to_party_id'||lx_bill_to_party_id);
7564 END IF;
7565 -- get the 'bill_to' identifiers -- end
7566
7567 x_cust_acct_id := l_get_contractinfo_rec.cust_acct_id;
7568 x_bill_to_siteuseid := l_get_contractinfo_rec.bill_to_site_use_id;
7569 x_currency_code := l_get_contractinfo_rec.currency_code;
7570 x_org_id := l_get_contractinfo_rec.org_id;
7571 x_currency_conversion_type := l_get_contractinfo_rec.conversion_type;
7572 x_currency_conversion_rate := l_get_contractinfo_rec.conversion_rate;
7573 x_currency_conversion_date := l_get_contractinfo_rec.conversion_rate_date;
7574 x_contract_start_date := l_get_contractinfo_rec.start_date;
7575
7576 x_bill_to_party_site_id := lx_bill_to_party_site_id;
7577 x_bill_to_party_id := lx_bill_to_party_id;
7578 x_bill_to_location_id := lx_bill_to_location_id;
7579
7580 x_book_class_code := l_book_class_code;
7581 x_cust_trx_type_id := l_cust_trx_type_id;
7582 x_precision := l_precision;
7583 x_minimum_accountable_unit := l_minimum_accountable_unit;
7584 x_prch_opt_det := l_prch_opt_det;
7585 x_fin_prod_id_det := l_fin_prod_id_det;
7586 x_int_disclosed_det := l_int_disclosed_det;
7587
7588
7589 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7590 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ','End(-)');
7591 END IF;
7592
7593 EXCEPTION
7594 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7595 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7596 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7597 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
7598 END IF;
7599
7600 IF c_get_contractinfo_csr%ISOPEN THEN
7601 CLOSE c_get_contractinfo_csr;
7602 END IF;
7603
7604 IF l_fndcurrency_csr%ISOPEN THEN
7605 CLOSE l_fndcurrency_csr;
7606 END IF;
7607
7608 IF l_racusttrxtypes_csr%ISOPEN THEN
7609 CLOSE l_racusttrxtypes_csr;
7610 END IF;
7611
7612 IF l_oklkheaders_csr%ISOPEN THEN
7613 CLOSE l_oklkheaders_csr;
7614 END IF;
7615
7616 x_return_status := OKL_API.G_RET_STS_ERROR;
7617 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7618 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7619 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7620 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
7621 END IF;
7622
7623 IF c_get_contractinfo_csr%ISOPEN THEN
7624 CLOSE c_get_contractinfo_csr;
7625 END IF;
7626
7627 IF l_fndcurrency_csr%ISOPEN THEN
7628 CLOSE l_fndcurrency_csr;
7629 END IF;
7630
7631 IF l_racusttrxtypes_csr%ISOPEN THEN
7632 CLOSE l_racusttrxtypes_csr;
7633 END IF;
7634
7635 IF l_oklkheaders_csr%ISOPEN THEN
7636 CLOSE l_oklkheaders_csr;
7637 END IF;
7638
7639 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
7640
7641 WHEN OTHERS THEN
7642 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7643 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_k_hdr_tax_params ',
7644 'EXCEPTION :'||sqlerrm);
7645 END IF;
7646
7647 IF c_get_contractinfo_csr%ISOPEN THEN
7648 CLOSE c_get_contractinfo_csr;
7649 END IF;
7650
7651 IF l_fndcurrency_csr%ISOPEN THEN
7652 CLOSE l_fndcurrency_csr;
7653 END IF;
7654
7655 IF l_racusttrxtypes_csr%ISOPEN THEN
7656 CLOSE l_racusttrxtypes_csr;
7657 END IF;
7658
7659 IF l_oklkheaders_csr%ISOPEN THEN
7660 CLOSE l_oklkheaders_csr;
7661 END IF;
7662
7663 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
7664 -- unexpected error
7665 OKL_API.set_message(p_app_name => g_app_name,
7666 p_msg_name => g_unexpected_error,
7667 p_token1 => g_sqlcode_token,
7668 p_token1_value => sqlcode,
7669 p_token2 => g_sqlerrm_token,
7670 p_token2_value => sqlerrm);
7671
7672 END get_k_hdr_tax_params;
7673
7674 /*========================================================================
7675 | PRIVATE PROCEDURE get_asset_tax_params
7676 |
7677 | DESCRIPTION
7678 | This procedure is called by other procedures in this API to derive
7679 | asset level tax determinats
7680 |
7681 | CALLED FROM
7682 |
7683 |
7684 | CALLS PROCEDURES/FUNCTIONS
7685 | okl_am_util_pvt.get_rule_record
7686 |
7687 |
7688 | PARAMETERS
7689 | Input parameters
7690 | p_khr_id -- Contract ID
7691 | p_kle_id -- Financial Asset ID
7692 | p_source_trx_name -- Source Transaction Name
7693 | p_source_table -- Source Transaction Table
7694 | p_qtp_code -- Quote Type
7695 | p_purpose_code -- Stream Type Purpose
7696 | Output Parameters
7697 | x_transfer_of_title -- Transfer of Title
7698 | x_sale_lease_back -- Sale and Lease Back
7699 | x_purchase_of_lease -- Purchase of Lease
7700 | x_usage_of_equipment -- Usage of Equipment
7701 | x_age_of_equipment -- Age of Equipment
7702 | x_vendor_site_id -- Vendor Site ID
7703 |
7704 | KNOWN ISSUES
7705 |
7706 | NOTES
7707 |
7708 |
7709 | MODIFICATION HISTORY
7710 | Date Author Description of Changes
7711 | 08-APR-05 SECHAWLA Created
7712 |
7713 *=======================================================================*/
7714
7715 PROCEDURE get_asset_tax_params(
7716 p_api_version IN NUMBER,
7717 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
7718 x_return_status OUT NOCOPY VARCHAR2,
7719 x_msg_count OUT NOCOPY NUMBER,
7720 x_msg_data OUT NOCOPY VARCHAR2,
7721 p_khr_id IN NUMBER,
7722 p_kle_id IN NUMBER, -- financial asset id
7723 p_source_trx_name IN VARCHAR2,
7724 p_source_table IN VARCHAR2,
7725 p_qtp_code IN VARCHAR2 DEFAULT NULL, -- Used only for term / repurchase quote
7726 p_purpose_code IN VARCHAR2 DEFAULT NULL, -- Used only in process_invoice_tax to identify remk,asset repair,vendor cure invoices
7727 x_transfer_of_title OUT NOCOPY VARCHAR2,
7728 x_sale_lease_back OUT NOCOPY VARCHAR2,
7729 x_purchase_of_lease OUT NOCOPY VARCHAR2,
7730 x_usage_of_equipment OUT NOCOPY VARCHAR2,
7731 x_age_of_equipment OUT NOCOPY NUMBER,
7732 x_vendor_site_id OUT NOCOPY NUMBER
7733 ) IS
7734
7735 --get the asset number
7736 CURSOR l_okclines_csr(cp_fin_asset_id IN NUMBER) IS
7737 SELECT name
7738 FROM OKC_K_LINES_v
7739 WHERE id = cp_fin_asset_id;
7740
7741 -- get the model line id (ITEM) for a financial asset id
7742 CURSOR l_modelline_csr(cp_fin_asset_id IN NUMBER) IS
7743 SELECT id
7744 FROM okc_k_lines_b
7745 WHERE cle_id = cp_fin_asset_id
7746 AND lse_id = 34 ; -- model line LSE ID
7747
7748 -- Get the vendor for asset/service/fee line
7749 CURSOR l_partyroles_csr(cp_line_id IN NUMBER) IS
7750 SELECT object1_id1 --is fk to po_vendors.vendor_id
7751 FROM okc_k_party_roles_b
7752 WHERE cle_id = cp_line_id --fee/service top line id for fee and service, model line id for asset line
7753 AND rle_code = 'OKL_VENDOR';
7754
7755 -- get the primary pay vendor location for the vendor
7756 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
7757 SELECT vendor_site_id
7758 FROM po_vendor_sites
7759 WHERE vendor_id = cp_vendor_id
7760 AND primary_pay_site_flag = 'Y';
7761
7762
7763 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
7764
7765 l_rulv_rec okl_rule_pub.rulv_rec_type;
7766 l_rulv_empty_rec okl_rule_pub.rulv_rec_type;
7767 l_name VARCHAR2(150);
7768
7769 l_transfer_of_title VARCHAR2(30);
7770 l_sale_lease_back VARCHAR2(30);
7771 l_purchase_of_lease VARCHAR2(30);
7772 l_usage_of_equipment VARCHAR2(450);
7773 l_age_of_equipment NUMBER;
7774 l_vendor_site_id NUMBER;
7775 l_model_line_id NUMBER;
7776 l_vendor_id NUMBER;
7777 l_vndr_cnt NUMBER;
7778 l_purpose_code VARCHAR2(30);
7779
7780 BEGIN
7781
7782 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7783 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params','Begin(+)');
7784 END IF;
7785
7786 --Print Input Variables
7787 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7788 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7789 'p_init_msg_list :'||p_init_msg_list);
7790 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7791 'p_khr_id :'||to_char(p_khr_id));
7792 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7793 'p_kle_id :'||to_char(p_kle_id));
7794 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7795 'p_source_trx_name :'||p_source_trx_name);
7796 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7797 'p_source_table :'||p_source_table);
7798 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7799 'p_qtp_code :'||p_qtp_code);
7800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7801 'p_purpose_code :'||p_purpose_code);
7802
7803 END IF;
7804
7805
7806 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
7807 OR
7808 ( ( p_source_trx_name = 'Billing' OR p_source_trx_name = 'Credit Memo' )
7809 AND ( p_source_table = 'OKL_TXD_AR_LN_DTLS_B' )
7810 AND ( p_qtp_code LIKE 'REP%' OR p_purpose_code IN ('AMBSPR','CURE','REPAIR_CHARGE') )
7811 ) -- Repurchase quote billing OR Remk,asset repair or vendor cure billing
7812 ) THEN
7813
7814 l_transfer_of_title := 'N';
7815 l_sale_lease_back := 'N';
7816 l_purchase_of_lease := 'N';
7817 l_usage_of_equipment := NULL;
7818 l_age_of_equipment := NULL;
7819 l_vendor_site_id := NULL;
7820
7821 ELSE
7822 -- get transfer of title -- financial Asset level
7823 l_rulv_rec := l_rulv_empty_rec ;
7824 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7825 ,p_rdf_code => 'LAASTX'
7826 ,p_chr_id => p_khr_id
7827 ,p_cle_id => p_kle_id
7828 ,p_message_yn => FALSE
7829 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7830 ,x_return_status => x_return_status
7831 ,x_msg_count => x_msg_count
7832 ,x_msg_data => x_msg_data);
7833
7834 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7835 -- Rule instance is found
7836 IF (l_rulv_rec.rule_information6 IS NOT NULL) AND (l_rulv_rec.rule_information6 <> OKL_API.G_MISS_CHAR) THEN
7837
7838 l_transfer_of_title := l_rulv_rec.rule_information6;
7839 ELSE -- transfer of title is optional on the contract
7840
7841 l_transfer_of_title := 'N';
7842 END IF;
7843 ELSE -- transfer of title is optional on the contract
7844
7845 l_transfer_of_title := 'N';
7846 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7847 END IF;
7848 -- get transfer of title : end
7849
7850 -- get sale_lease_back -- financial Asset level
7851 l_rulv_rec := l_rulv_empty_rec ;
7852 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7853 ,p_rdf_code => 'LAASTX'
7854 ,p_chr_id => p_khr_id
7855 ,p_cle_id => p_kle_id
7856 ,p_message_yn => FALSE
7857 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7858 ,x_return_status => x_return_status
7859 ,x_msg_count => x_msg_count
7860 ,x_msg_data => x_msg_data);
7861
7862 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7863 -- Rule instance is found
7864 IF (l_rulv_rec.rule_information7 IS NOT NULL) AND (l_rulv_rec.rule_information7 <> OKL_API.G_MISS_CHAR) THEN
7865
7866 l_sale_lease_back := l_rulv_rec.rule_information7;
7867 ELSE -- sale and lease back is optional on the contract
7868
7869 l_sale_lease_back := 'N';
7870 END IF;
7871 ELSE -- sale and lease back is optional on the contract
7872
7873 l_sale_lease_back := 'N';
7874 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7875 END IF;
7876 -- get sale_lease_back : end
7877
7878
7879 -- get purchase_of_lease -- financial Asset level
7880 l_rulv_rec := l_rulv_empty_rec ;
7881 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7882 ,p_rdf_code => 'LAASTX'
7883 ,p_chr_id => p_khr_id
7884 ,p_cle_id => p_kle_id
7885 ,p_message_yn => FALSE
7886 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7887 ,x_return_status => x_return_status
7888 ,x_msg_count => x_msg_count
7889 ,x_msg_data => x_msg_data);
7890
7891 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7892 -- Rule instance is found
7893 IF (l_rulv_rec.rule_information8 IS NOT NULL) AND (l_rulv_rec.rule_information8 <> OKL_API.G_MISS_CHAR) THEN
7894
7895 l_purchase_of_lease := l_rulv_rec.rule_information8;
7896 ELSE -- purchase of lease is optional on the contract
7897
7898 l_purchase_of_lease := 'N';
7899 END IF;
7900 ELSE -- purchase of lease is optional on the contract
7901
7902 l_purchase_of_lease := 'N';
7903 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7904 END IF;
7905 -- get purchase_of_lease : end
7906
7907
7908 -- get usage_of_equipment -- financial Asset level
7909 l_rulv_rec := l_rulv_empty_rec ;
7910 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7911 ,p_rdf_code => 'LAASTX'
7912 ,p_chr_id => p_khr_id
7913 ,p_cle_id => p_kle_id
7914 ,p_message_yn => FALSE
7915 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7916 ,x_return_status => x_return_status
7917 ,x_msg_count => x_msg_count
7918 ,x_msg_data => x_msg_data);
7919
7920 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7921 -- Rule instance is found
7922 IF (l_rulv_rec.rule_information9 IS NOT NULL) AND (l_rulv_rec.rule_information9 <> OKL_API.G_MISS_CHAR) THEN
7923
7924 l_usage_of_equipment := l_rulv_rec.rule_information9;
7925
7926 END IF;
7927 ELSE
7928 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7929 END IF;
7930 -- get usage_of_equipment : end
7931
7932
7933 -- get age_of_equipment -- financial Asset level
7934 l_rulv_rec := l_rulv_empty_rec ;
7935 okl_am_util_pvt.get_rule_record( p_rgd_code => 'LAASTX'
7936 ,p_rdf_code => 'LAASTX'
7937 ,p_chr_id => p_khr_id
7938 ,p_cle_id => p_kle_id
7939 ,p_message_yn => FALSE
7940 ,x_rulv_rec => l_rulv_rec -- hold a rule instance from okc_rules_b
7941 ,x_return_status => x_return_status
7942 ,x_msg_count => x_msg_count
7943 ,x_msg_data => x_msg_data);
7944
7945 IF (x_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
7946 -- Rule instance is found
7947 IF (l_rulv_rec.rule_information10 IS NOT NULL) AND (l_rulv_rec.rule_information10 <> OKL_API.G_MISS_CHAR) THEN
7948
7949 l_age_of_equipment := to_number(l_rulv_rec.rule_information10);
7950
7951 END IF;
7952 ELSE
7953 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7954 END IF;
7955 -- get age_of_equipment : end
7956
7957
7958 -- get Vendor site
7959
7960 -- Get the Model line for the financial asset line
7961 OPEN l_modelline_csr(p_kle_id);
7962 FETCH l_modelline_csr INTO l_model_line_id;
7963 CLOSE l_modelline_csr;
7964
7965 -- get the asset line Vendor
7966 -- Check if multiple vendors exist. If so, vendor location is not a determinant
7967 l_vndr_cnt := 0;
7968 FOR l_partyroles_rec in l_partyroles_csr(l_model_line_id) LOOP
7969 l_vndr_cnt := l_vndr_cnt + 1;
7970 l_vendor_id := l_partyroles_rec.object1_id1; -- vendor is optional
7971 END LOOP;
7972
7973
7974 IF l_vndr_cnt = 1 AND l_vendor_id IS NOT NULL THEN
7975 -- get the primary vendor site (if defined) from AP
7976 -- vendor site is applicable for fin asset / service / fee lines / sublines
7977 OPEN l_povendorsites_csr(l_vendor_id);
7978 FETCH l_povendorsites_csr INTO l_vendor_site_id; -- will be null if none of the sites are checked as primary
7979 CLOSE l_povendorsites_csr;
7980
7981 END IF;
7982 -- get Vendor site : end
7983 END IF;
7984
7985 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
7986 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7987 'l_transfer_of_title'||l_transfer_of_title);
7988 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7989 'l_sale_lease_back'||l_sale_lease_back);
7990 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7991 'l_purchase_of_lease'||l_purchase_of_lease);
7992 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7993 'l_usage_of_equipment'||l_usage_of_equipment);
7994 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7995 'l_age_of_equipment'||l_age_of_equipment);
7996 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params.',
7997 'l_vendor_site_id'||l_vendor_site_id);
7998 END IF;
7999
8000 x_transfer_of_title := l_transfer_of_title;
8001 x_sale_lease_back := l_sale_lease_back;
8002 x_purchase_of_lease := l_purchase_of_lease;
8003 x_usage_of_equipment := l_usage_of_equipment;
8004 x_age_of_equipment := l_age_of_equipment;
8005 x_vendor_site_id := l_vendor_site_id;
8006
8007 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8008 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ','End(-)');
8009 END IF;
8010
8011 EXCEPTION
8012 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8013
8014 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8015 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8016 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
8017 END IF;
8018
8019 IF l_okclines_csr%ISOPEN THEN
8020 CLOSE l_okclines_csr;
8021 END IF;
8022
8023 IF l_modelline_csr%ISOPEN THEN
8024 CLOSE l_modelline_csr;
8025 END IF;
8026
8027 IF l_partyroles_csr%ISOPEN THEN
8028 CLOSE l_partyroles_csr;
8029 END IF;
8030
8031 IF l_povendorsites_csr%ISOPEN THEN
8032 CLOSE l_povendorsites_csr;
8033 END IF;
8034
8035 x_return_status := OKL_API.G_RET_STS_ERROR;
8036 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8037 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8038 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8039 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
8040 END IF;
8041
8042 IF l_okclines_csr%ISOPEN THEN
8043 CLOSE l_okclines_csr;
8044 END IF;
8045
8046 IF l_modelline_csr%ISOPEN THEN
8047 CLOSE l_modelline_csr;
8048 END IF;
8049
8050 IF l_partyroles_csr%ISOPEN THEN
8051 CLOSE l_partyroles_csr;
8052 END IF;
8053
8054 IF l_povendorsites_csr%ISOPEN THEN
8055 CLOSE l_povendorsites_csr;
8056 END IF;
8057
8058
8059 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8060
8061 WHEN OTHERS THEN
8062 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8063 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_asset_tax_params ',
8064 'EXCEPTION :'||sqlerrm);
8065 END IF;
8066
8067 IF l_okclines_csr%ISOPEN THEN
8068 CLOSE l_okclines_csr;
8069 END IF;
8070
8071 IF l_modelline_csr%ISOPEN THEN
8072 CLOSE l_modelline_csr;
8073 END IF;
8074
8075 IF l_partyroles_csr%ISOPEN THEN
8076 CLOSE l_partyroles_csr;
8077 END IF;
8078
8079 IF l_povendorsites_csr%ISOPEN THEN
8080 CLOSE l_povendorsites_csr;
8081 END IF;
8082
8083
8084 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
8085 -- unexpected error
8086 OKL_API.set_message(p_app_name => g_app_name,
8087 p_msg_name => g_unexpected_error,
8088 p_token1 => g_sqlcode_token,
8089 p_token1_value => sqlcode,
8090 p_token2 => g_sqlerrm_token,
8091 p_token2_value => sqlerrm);
8092
8093 END get_asset_tax_params;
8094
8095 /*========================================================================
8096 | PRIVATE PROCEDURE process_tax_schedule_tax
8097 |
8098 | DESCRIPTION
8099 | This procedure is called from calculate_sales_tax procedure to calculate
8100 | tax schedule for customer requests, booking and rebooking
8101 |
8102 | CALLED FROM calculate_sales_tax()
8103 |
8104 |
8105 | CALLS PROCEDURES/FUNCTIONS
8106 | get_k_hdr_tax_params()
8107 | get_asset_tax_params()
8108 | get_location_party_ids()
8109 | get_ufc_code()
8110 | OKL_TAX_INTERFACE_PVT.calculate_tax()
8111 |
8112 |
8113 | PARAMETERS
8114 | p_source_trx_id -- Source transaction ID
8115 | p_source_trx_name -- Source transaction Name
8116 | p_source_table -- Source table
8117 |
8118 | KNOWN ISSUES
8119 |
8120 | NOTES
8121 |
8122 |
8123 | MODIFICATION HISTORY
8124 | Date Author Description of Changes
8125 | 08-APR-05 SECHAWLA Created
8126 | 22-APR-08 SECHAWLA 6975983 Do not error out if there is no tax in eBTax for
8127 | the Billed stream elements. Create taxable line
8128 | in okl_tax_sources. There won't be aby tax lines
8129 | in okl_tax_trx_details.
8130 |
8131 *=======================================================================*/
8132 PROCEDURE process_tax_schedule_tax(
8133 p_api_version IN NUMBER,
8134 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8135 x_return_status OUT NOCOPY VARCHAR2,
8136 x_msg_count OUT NOCOPY NUMBER,
8137 x_msg_data OUT NOCOPY VARCHAR2,
8138 p_source_trx_id IN NUMBER,
8139 p_source_trx_name IN VARCHAR2,
8140 p_source_table IN VARCHAR2) IS
8141
8142 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
8143 i NUMBER;
8144
8145 -- get the tax schedule request details
8146 CURSOR l_trxrequests_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
8147 SELECT a.dnz_khr_id, a.start_date, a.end_date, a.try_id, a.legal_entity_id, a.org_id
8148 FROM okl_trx_requests a, okl_trx_types_tl b
8149 WHERE a.id = cp_trx_id
8150 AND a.try_id = b.id
8151 AND b.name = cp_trx_type_name
8152 AND language = 'US';
8153
8154 --Cursor to get all the streams / stream elements associated with the contract
8155 -- This cursor picks up the K, asset, service, fee , service subline, fee subline level payments
8156 -- We are excluding Insurance streams. Usage lines do not have payments / streams
8157 CURSOR c_k_unbilled_streams_csr(cp_contract_id IN NUMBER,
8158 cp_date_from IN DATE,
8159 cp_date_to IN DATE) IS
8160 SELECT strm.khr_id,
8161 strm.kle_id, -- can be null for K level streams
8162 lse.lty_code,
8163 NULL asset_number,
8164 NULL trx_id,
8165 NULL trx_line_id,
8166 NULL entity_code,
8167 NULL event_class_code,
8168 NULL trx_level_type,
8169 NULL adjusted_doc_entity_code,
8170 NULL adjusted_doc_event_class_code,
8171 NULL adjusted_doc_trx_id,
8172 NULL adjusted_doc_trx_line_id,
8173 NULL adjusted_doc_trx_level_type,
8174 NULL adjusted_doc_number,
8175 NULL adjusted_doc_date,
8176 G_TAX_SCHEDULE tax_call_type_code,
8177 strm.sty_id stream_type_id,
8178 NULL trx_business_category,
8179 'ACTIVE' tax_line_status_code,
8180 selm.id sel_id,
8181 'N' reported_yn,
8182 typ.code Stream_Type,
8183 typ.billable_yn Billable,
8184 strm.id stream_id,
8185 strm.transaction_number,
8186 selm.amount,
8187 selm.stream_element_date stream_element_date,
8188 NULL tax_sources_id,
8189 NULL asset_line_id,
8190 NULL ship_to_siteuseid,
8191 NULL inventory_item_id
8192 FROM okl_strm_type_b typ,
8193 okl_streams strm,
8194 okl_strm_elements selm,
8195 okc_k_lines_b lines,
8196 okc_line_styles_b lse
8197 WHERE strm.sty_id = typ.id
8198 AND strm.id = selm.stm_id
8199 AND typ.billable_yn = 'Y'
8200 AND strm.say_code ='CURR'
8201 AND strm.active_yn = 'Y'
8202 AND strm.purpose_code IS NULL
8203 AND strm.khr_id = cp_contract_id
8204 AND selm.stream_element_date BETWEEN cp_date_from AND cp_date_to
8205 AND strm.kle_id = lines.id(+)
8206 AND lines.lse_id = lse.id (+)
8207 AND lse.lty_code (+) <> 'INSURANCE'
8208 AND NOT EXISTS -- tax lines don't exist in AR ( This condition is added to pick up stream elements billed under
8209 -- old solution : date_billed may not be null but billing may not have been run completely, so tax
8210 -- may not have been calculated in AR
8211 (SELECT NULL
8212 FROM okl_bpd_tld_ar_lines_v cnsld
8213 WHERE cnsld.sel_id = selm.id)
8214 ORDER BY strm.kle_id, strm.sty_id;
8215
8216 -- get Billed stream elements
8217 CURSOR c_k_billed_streams_csr(cp_contract_id IN NUMBER,
8218 cp_date_from IN DATE,
8219 cp_date_to IN DATE) IS
8220 SELECT strm.khr_id,
8221 strm.kle_id, -- can be null for K level streams
8222 strm.sty_id stream_type_id,
8223 selm.id sel_id,
8224 selm.stream_element_date stream_element_date,
8225 cnsld.customer_trx_id,
8226 cnsld.customer_trx_line_id,
8227 selm.amount --SECHAWLA 22-APR-08 6975983 : added
8228 FROM okl_strm_type_b typ,
8229 okl_streams strm,
8230 okl_strm_elements selm,
8231 okc_k_lines_b lines,
8232 okc_line_styles_b lse,
8233 okl_bpd_tld_ar_lines_v cnsld
8234 WHERE strm.sty_id = typ.id
8235 AND strm.id = selm.stm_id
8236 AND typ.billable_yn = 'Y'
8237 AND strm.say_code ='CURR'
8238 AND strm.active_yn = 'Y'
8239 AND strm.purpose_code IS NULL
8240 AND strm.khr_id = cp_contract_id
8241 AND selm.stream_element_date BETWEEN cp_date_from AND cp_date_to
8242 AND selm.date_billed IS NOT NULL -- pick billed stream elements
8243 AND strm.kle_id = lines.id(+)
8244 AND lines.lse_id = lse.id (+)
8245 AND lse.lty_code (+) <> 'INSURANCE'
8246 AND cnsld.sel_id = selm.id
8247 AND cnsld.khr_id = strm.khr_id;
8248 -- ORDER BY strm.kle_id, strm.sty_id;
8249
8250 -- get the billing line details
8251 CURSOR l_txdarlndtls_csr(cp_sel_id IN NUMBER, cp_sty_id IN NUMBER) IS
8252 SELECT hdr.id trx_id, det.id trx_line_id
8253 FROM okl_trx_ar_invoices_b hdr, okl_txl_ar_inv_lns_b line, okl_txd_ar_ln_dtls_b det
8254 WHERE det.sel_id = cp_sel_id
8255 AND det.sty_id = cp_sty_id
8256 AND det.til_id_details = line.id
8257 AND line.tai_id = hdr.id;
8258
8259 -- get all the financial asset lines for the contract
8260 CURSOR l_finassets_csr(CP_KHR_ID IN NUMBER) IS
8261 SELECT DISTINCT strm.kle_id fin_asset_id -- is DISTINCT req ? can an asset line have more than one stream types ?
8262 FROM okl_strm_type_b typ,
8263 okl_streams strm,
8264 okc_k_lines_b lines,
8265 okc_line_styles_b sty
8266 WHERE strm.sty_id = typ.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_KHR_ID
8272 AND strm.kle_id = lines.id
8273 AND lines.lse_id = sty.id
8274 AND sty.lty_code = 'FREE_FORM1';
8275
8276 --get the asset number
8277 CURSOR l_okclines_csr(cp_fin_asset_id IN NUMBER) IS
8278 SELECT name, lse_id
8279 FROM OKC_K_LINES_v
8280 WHERE id = cp_fin_asset_id;
8281
8282 -- get contract/line stream types (K1-A1-ST1, K1-A1-ST2, K1-S1-ST3, K1-ST4...)
8283 CURSOR l_kstreamtypes_csr(cp_khr_id IN NUMBER) IS
8284 SELECT typ.code Stream_Type,
8285 strm.id stream_id,
8286 strm.kle_id line_id,
8287 strm.sty_id stream_type_id,
8288 sty.lty_code
8289 FROM okl_strm_type_b typ,
8290 okl_streams strm,
8291 okc_k_lines_b lines,
8292 okc_line_styles_b sty
8293 WHERE strm.sty_id = typ.id
8294 AND typ.billable_yn = 'Y'
8295 AND strm.say_code ='CURR'
8296 AND strm.active_yn = 'Y'
8297 AND strm.purpose_code IS NULL
8298 AND strm.khr_id = cp_khr_id
8299 AND strm.kle_id = lines.id(+)
8300 AND lines.lse_id = sty.id (+)
8301 AND sty.lty_code (+) <> 'INSURANCE';
8302
8303 -- Get the financial asset associated with a given subline
8304 CURSOR l_finasset_csr(cp_fee_serviced_asset_line_id IN NUMBER, cp_line_type IN VARCHAR2) IS
8305 SELECT cim.object1_id1
8306 FROM okc_k_lines_b cle, okc_line_styles_b lse, okc_k_items cim
8307 WHERE cle.lse_id = lse.id
8308 AND lse.lty_code = cp_line_type
8309 AND cim.cle_id = cle.id
8310 AND cle.id = cp_fee_serviced_asset_line_id;
8311
8312 -- get the inventory item id and inventory item org for a financial asset
8313 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
8314 SELECT cim_model.object1_id1,
8315 cim_model.object1_id2
8316 FROM okc_k_items cim_model,
8317 okc_k_lines_b cleb_model,
8318 okc_line_styles_b lseb_model
8319 WHERE cim_model.cle_id = cleb_model.id
8320 AND cleb_model.cle_id = cp_fin_asset_id
8321 AND lseb_model.id = cleb_model.lse_id
8322 AND lseb_model.lty_code = 'ITEM';
8323
8324 -- get the tax lines corresponding to billing tax source ID
8325 CURSOR l_taxtrxdetails_csr(cp_txs_id IN NUMBER) IS
8326 SELECT *
8327 FROM okl_tax_trx_details
8328 WHERE txs_id = cp_txs_id;
8329
8330 -- Get the vendor for asset/service/fee line
8331 CURSOR l_partyroles_csr(cp_line_id IN NUMBER) IS
8332 SELECT object1_id1 --is fk to po_vendors.vendor_id
8333 FROM okc_k_party_roles_b
8334 WHERE cle_id = cp_line_id --fee/service top line id for fee and service, model line id for asset line
8335 AND rle_code = 'OKL_VENDOR';
8336
8337 -- get the primary pay vendor location for the vendor
8338 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
8339 SELECT vendor_site_id
8340 FROM po_vendor_sites
8341 WHERE vendor_id = cp_vendor_id
8342 AND primary_pay_site_flag = 'Y';
8343
8344 -- check if stream element is billed in AR
8345 -- Get total tax for a taxable line
8346 CURSOR l_get_zx_total_tax(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8347 SELECT SUM(zx.tax_amt) tax_amt
8348 FROM zx_lines zx
8349 WHERE zx.trx_id = cp_trx_id
8350 AND zx.trx_line_id = cp_trx_line_id
8351 AND zx.entity_code = G_AR_ENTITY_CODE
8352 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8353 AND zx.application_id = G_AR_APPLICATION_ID;
8354
8355 -- Get tax values for a taxable line
8356 CURSOR l_get_zx_taxable_line_info(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8357 SELECT zx.line_amt,
8358 zx.taxable_amt,
8359 zx.trx_date,
8360 zx.tax_determine_date,
8361 zx.trx_currency_code,
8362 zx.currency_conversion_type,
8363 zx.currency_conversion_rate,
8364 zx.currency_conversion_date,
8365 zxdet.product_category,
8366 zxdet.trx_business_category,
8367 zxdet.product_fisc_classification,
8368 zxdet.user_defined_fisc_class,
8369 zxdet.product_type,
8370 zxdet.internal_organization_id,
8371 zxdet.input_tax_classification_code,
8372 zx.legal_entity_id,
8373 zxdet.line_intended_use
8374 FROM zx_lines zx,
8375 zx_lines_det_factors zxdet
8376 WHERE zx.trx_line_id = cp_trx_line_id
8377 AND zx.trx_id = cp_trx_id
8378 AND zx.internal_organization_id = MO_GLOBAL.get_current_org_id
8379 AND zx.entity_code = G_AR_ENTITY_CODE
8380 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8381 AND zx.application_id = G_AR_APPLICATION_ID
8382 AND zx.trx_line_id = zxdet.trx_line_id
8383 AND zx.trx_id = zxdet.trx_id
8384 AND zx.internal_organization_id = zxdet.internal_organization_id
8385 AND zx.entity_code = zxdet.entity_code
8386 AND zx.event_class_code = zxdet.event_class_code
8387 AND zx.application_id = zxdet.application_id
8388 AND ROWNUM = 1;
8389
8390 -- get tax lines from eBTax
8391 CURSOR l_get_zx_tax_lines(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER) IS
8392 SELECT zx.tax_rate_id,
8393 zx.tax_rate_code,
8394 zx.tax_exemption_id,
8395 zx.tax_rate,
8396 zx.tax_date,
8397 zx.line_amt,
8398 zx.internal_organization_id,
8399 zx.application_id,
8400 zx.entity_code,
8401 zx.event_class_code,
8402 zx.event_type_code,
8403 zx.trx_id,
8404 zx.trx_line_id,
8405 zx.trx_level_type,
8406 zx.trx_line_number,
8407 zx.tax_line_number,
8408 zx.tax_regime_id,
8409 zx.tax_regime_code,
8410 zx.tax_id,
8411 zx.tax,
8412 zx.tax_status_id,
8413 zx.tax_status_code,
8414 zx.tax_apportionment_line_number,
8415 zx.legal_entity_id,
8416 zx.trx_number,
8417 zx.trx_date,
8418 zx.tax_jurisdiction_id,
8419 zx.tax_jurisdiction_code,
8420 zx.tax_type_code,
8421 zx.tax_currency_code,
8422 zx.taxable_amt_tax_curr,
8423 zx.trx_currency_code,
8424 zx.minimum_accountable_unit,
8425 zx.precision,
8426 zx.currency_conversion_type,
8427 zx.currency_conversion_rate,
8428 zx.currency_conversion_date,
8429 zx.tax_determine_date,
8430 zx.taxable_amt,
8431 zx.tax_amt,
8432 zxdet.product_category,
8433 zxdet.trx_business_category,
8434 zxdet.product_fisc_classification,
8435 zxdet.user_defined_fisc_class,
8436 zxdet.product_type
8437 FROM zx_lines zx,
8438 zx_lines_det_factors zxdet
8439 WHERE zx.trx_id = cp_trx_id
8440 AND zx.trx_line_id = cp_trx_line_id
8441 AND zx.internal_organization_id = MO_GLOBAL.get_current_org_id
8442 AND zx.entity_code = G_AR_ENTITY_CODE
8443 AND zx.event_class_code = G_INVOICE_EVENT_CLASS_CODE
8444 AND zx.application_id = G_AR_APPLICATION_ID
8445 AND zx.trx_line_id = zxdet.trx_line_id
8446 AND zx.trx_id = zxdet.trx_id
8447 AND zx.internal_organization_id = zxdet.internal_organization_id
8448 AND zx.entity_code = zxdet.entity_code
8449 AND zx.event_class_code = zxdet.event_class_code
8450 AND zx.application_id = zxdet.application_id;
8451
8452 -- Local Record Structures
8453 TYPE contract_streams_rec_type IS RECORD (
8454 khr_id NUMBER,
8455 kle_id NUMBER,
8456 lty_code VARCHAR2(30),
8457 asset_number VARCHAR2(15),
8458 trx_id NUMBER,
8459 trx_line_id NUMBER,
8460 entity_code VARCHAR2(30),
8461 event_class_code VARCHAR2(30),
8462 trx_level_type VARCHAR2(30),
8463 adjusted_doc_entity_code VARCHAR2(30),
8464 adjusted_doc_event_class_code VARCHAR2(30),
8465 adjusted_doc_trx_id NUMBER,
8466 adjusted_doc_trx_line_id NUMBER,
8467 adjusted_doc_trx_level_type VARCHAR2(30),
8468 adjusted_doc_number VARCHAR2(150),
8469 adjusted_doc_date DATE,
8470 tax_call_type_code VARCHAR2(30),
8471 stream_type_id NUMBER,
8472 trx_business_category VARCHAR2(30),
8473 tax_line_status_code VARCHAR2(30),
8474 sel_id NUMBER,
8475 reported_yn VARCHAR2(1),
8476 Stream_Type VARCHAR2(150),
8477 Billable VARCHAR2(1),
8478 stream_id NUMBER,
8479 transaction_number NUMBER,
8480 amount NUMBER,
8481 stream_element_date DATE,
8482 tax_sources_id NUMBER,
8483 asset_line_id NUMBER,
8484 ship_to_siteuseid NUMBER,
8485 inventory_item_id NUMBER );
8486
8487 TYPE bill_ts_tx_src_rec_type IS RECORD (
8488 BILL_ID NUMBER,
8489 TS_KHR_ID NUMBER,
8490 TS_KLE_ID NUMBER,
8491 BILL_ASSET_NUMBER VARCHAR2(15),
8492 BILL_TRX_ID NUMBER ,
8493 BILL_TRX_LINE_ID NUMBER ,
8494 TS_TRX_ID NUMBER,
8495 TS_TRX_LINE_ID NUMBER,
8496 TS_STY_ID NUMBER,
8497 BILL_TRX_BUSINESS_CATEGORY VARCHAR2(30),
8498 TS_SEL_ID NUMBER,
8499 TS_SEL_DATE DATE);
8500
8501 TYPE asset_level_det_rec_type IS RECORD
8502 (fin_asset_id NUMBER,
8503 transfer_of_title VARCHAR2(30),
8504 sale_lease_back VARCHAR2(30),
8505 purchase_of_lease VARCHAR2(30),
8506 usage_of_equipment VARCHAR2(30),
8507 vendor_site_id NUMBER,
8508 age_of_equipment NUMBER);
8509
8510 TYPE k_billed_streams_rec_type IS RECORD (
8511 khr_id NUMBER,
8512 kle_id NUMBER,
8513 sty_id NUMBER,
8514 sel_id NUMBER,
8515 sel_date DATE,
8516 customer_trx_id NUMBER,
8517 customer_trx_line_id NUMBER,
8518 sel_amount NUMBER); --SECHAWLA 22-APR-08 6975983 : added;
8519
8520 TYPE contract_streams_tbl_type IS TABLE OF contract_streams_rec_type INDEX BY BINARY_INTEGER;
8521 TYPE bill_ts_tx_src_tbl_type IS TABLE OF bill_ts_tx_src_rec_type INDEX BY BINARY_INTEGER;
8522 TYPE asset_level_det_tbl_type IS TABLE OF asset_level_det_rec_type INDEX BY BINARY_INTEGER;
8523 TYPE finassets_tbl_type IS TABLE OF l_finassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
8524 TYPE kstreamtypes_tbl_type IS TABLE OF l_kstreamtypes_csr%ROWTYPE INDEX BY BINARY_INTEGER;
8525 TYPE k_billed_streams_tbl_type IS TABLE OF k_billed_streams_rec_type INDEX BY BINARY_INTEGER;
8526
8527 l_get_zx_taxable_line_info_rec l_get_zx_taxable_line_info%ROWTYPE;
8528 l_ts_asset_level_det_tbl asset_level_det_tbl_type;
8529 l_kstreamtypes_tbl kstreamtypes_tbl_type;
8530 l_finassets_tbl finassets_tbl_type;
8531 l_contract_streams_tbl contract_streams_tbl_type;
8532 l_tax_sources_tbl tax_sources_tbl_type;
8533 l_tax_trx_details_tbl tax_lines_tbl_type;
8534 l_K_unbilled_streams_rec contract_streams_rec_type;
8535 l_bill_ts_tx_src_tbl bill_ts_tx_src_tbl_type;
8536 l_k_billed_streams_tbl k_billed_streams_tbl_type;
8537 lx_tax_codes_tbl tax_codes_tbl_type;
8538 lx_line_params_tbl line_params_tbl_type;
8539 lp_hdr_params_rec hdr_params_rec_type;
8540
8541 l_fetch_size NUMBER := 10000;
8542
8543 l_ts_trx_type_id_det NUMBER;
8544 l_asset_number VARCHAR2(150);
8545
8546 l_tax_sources_id NUMBER;
8547
8548 l_ts_prch_opt_det VARCHAR2(450);
8549 l_ts_fin_prod_id_det NUMBER;
8550 l_ts_int_disclosed_det VARCHAR2(30);
8551
8552 l_ts_transfer_of_title VARCHAR2(30);
8553 l_ts_sale_lease_back VARCHAR2(30);
8554 l_ts_purchase_of_lease VARCHAR2(30);
8555 l_ts_usage_of_equipment VARCHAR2(450);
8556 l_ts_age_of_equipment NUMBER;
8557 l_ts_vendor_site_id NUMBER;
8558
8559 l_fin_asset_id NUMBER;
8560 ind NUMBER;
8561 l_asset_line_id NUMBER;
8562 l_inv_item_org_id NUMBER;
8563 l_contract_streams_tbc VARCHAR2(30);
8564 l_unbilled_strms_exist BOOLEAN := FALSE;
8565 l_bill_ts_tx_src_cnt NUMBER;
8566
8567 j NUMBER;
8568 l_cust_trx_type_id NUMBER;
8569 l_vendor_id NUMBER;
8570 l_vndr_cnt NUMBER;
8571 l_dummy VARCHAR2(1);
8572 l_ts_khr_id NUMBER;
8573 l_ts_start_date DATE;
8574 l_ts_end_date DATE;
8575
8576 l_cust_acct_id NUMBER;
8577 l_bill_to_siteuseid NUMBER;
8578 l_currency_code VARCHAR2(15);
8579 l_precision NUMBER;
8580 l_minimum_accountable_unit NUMBER;
8581
8582 lx_bill_to_party_site_id NUMBER;
8583 lx_bill_to_location_id NUMBER;
8584 lx_bill_to_party_id NUMBER;
8585 lx_bill_to_siteuseid NUMBER;
8586 lx_ship_to_party_site_id NUMBER;
8587 lx_ship_to_location_id NUMBER;
8588 lx_ship_to_party_id NUMBER;
8589 lx_ship_to_siteuseid NUMBER;
8590
8591 lx_org_id NUMBER;
8592 lx_book_class_code VARCHAR2(30);
8593 lx_currency_conversion_type VARCHAR2(30);
8594 lx_currency_conversion_rate NUMBER;
8595 lx_currency_conversion_date DATE;
8596 lx_contract_start_date DATE;
8597
8598 l_name VARCHAR2(150);
8599 l_lse_id NUMBER;
8600 l_tax_code_count NUMBER;
8601 l_taxation_country VARCHAR2(2);
8602 l_ledger_id NUMBER;
8603 l_legal_entity_id NUMBER;
8604 l_inv_item_id NUMBER;
8605 l_inv_org_id NUMBER;
8606 l_org_id NUMBER;
8607 l_value_fetched BOOLEAN;
8608
8609 l_tbc_code VARCHAR2(240);
8610 l_ufc_code VARCHAR2(240);
8611 l_pc_code VARCHAR2(240);
8612 l_tax_class_code VARCHAR2(50);
8613 l_total_tax NUMBER;
8614
8615 BEGIN
8616 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8617 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax','Begin(+)');
8618 END IF;
8619
8620 -- Print Input Variables
8621 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8622 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8623 'p_init_msg_list :'||p_init_msg_list);
8624 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8625 'p_source_trx_id :'||p_source_trx_id);
8626 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8627 'p_source_trx_name :'||p_source_trx_name);
8628 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8629 'p_source_table :'||p_source_table);
8630 END IF;
8631
8632 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8633
8634 OPEN l_trxrequests_csr(p_source_trx_id, p_source_trx_name);
8635 FETCH l_trxrequests_csr INTO l_ts_khr_id, l_ts_start_date, l_ts_end_date,
8636 l_ts_trx_type_id_det, l_legal_entity_id, l_org_id;
8637 IF l_trxrequests_csr%NOTFOUND THEN
8638 -- source trx id is invalid
8639 OKC_API.set_message( p_app_name => 'OKC',
8640 p_msg_name => G_INVALID_VALUE,
8641 p_token1 => G_COL_NAME_TOKEN,
8642 p_token1_value => 'SOURCE_TRX_ID');
8643 RAISE OKL_API.G_EXCEPTION_ERROR;
8644 END IF;
8645 CLOSE l_trxrequests_csr;
8646
8647 -- Fetch the Ledger info
8648 l_ledger_id := okl_accounting_util.get_set_of_books_id;
8649
8650 -- Fetch the Tax country
8651 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
8652 x_msg_count => x_msg_count,
8653 x_msg_data => x_msg_data,
8654 p_legal_entity_id => l_legal_entity_id);
8655
8656 -- Get K header level tax parameters
8657 get_k_hdr_tax_params(
8658 p_api_version => p_api_version,
8659 p_init_msg_list => OKC_API.G_FALSE,
8660 x_return_status => x_return_status,
8661 x_msg_count => x_msg_count,
8662 x_msg_data => x_msg_data,
8663 p_khr_id => l_ts_khr_id,
8664 p_source_trx_name => p_source_trx_name,
8665 p_source_table => p_source_table,
8666 x_cust_acct_id => l_cust_acct_id,
8667 x_bill_to_siteuseid => lx_bill_to_siteuseid,
8668 x_currency_code => l_currency_code,
8669 x_cust_trx_type_id => l_cust_trx_type_id,
8670 x_precision => l_precision,
8671 x_minimum_accountable_unit => l_minimum_accountable_unit,
8672 x_prch_opt_det => l_ts_prch_opt_det,
8673 x_fin_prod_id_det => l_ts_fin_prod_id_det,
8674 x_int_disclosed_det => l_ts_int_disclosed_det,
8675 x_org_id => lx_org_id,
8676 x_book_class_code => lx_book_class_code,
8677 x_bill_to_party_site_id => lx_bill_to_party_site_id,
8678 x_bill_to_party_id => lx_bill_to_party_id,
8679 x_bill_to_location_id => lx_bill_to_location_id,
8680 x_currency_conversion_type => lx_currency_conversion_type,
8681 x_currency_conversion_rate => lx_currency_conversion_rate,
8682 x_currency_conversion_date => lx_currency_conversion_date,
8683 x_contract_start_date => lx_contract_start_date);
8684
8685 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8686 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8687 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8688 RAISE OKL_API.G_EXCEPTION_ERROR;
8689 END IF;
8690
8691 --------------- Process Billed Stream elements - Start -------------------
8692
8693 -- Check if any of the stream elements between the given date range are
8694 -- billed (under old/new solution) If so, insert already calculated tax
8695 -- lines into tax sources and tax trx details with trx type of
8696 -- 'Tax Schedule' If Billed under new solution, then tax would have been
8697 -- calculated under 'Billing' transaction type and tax lines inserted into
8698 -- okl_tax_sources/okl_tax_trx_detials. Insert these tax lines back into tax
8699 -- sources/tax trx details with transaction type of 'Tax Schedule'
8700
8701 l_bill_ts_tx_src_cnt := 0;
8702 l_bill_ts_tx_src_tbl.DELETE;
8703 OPEN c_k_billed_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
8704 LOOP
8705 l_k_billed_streams_tbl.DELETE;
8706 FETCH c_k_billed_streams_csr BULK COLLECT INTO l_k_billed_streams_tbl LIMIT l_fetch_size;
8707
8708 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8709 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8710 'l_k_billed_streams_tbl.COUNT '||l_k_billed_streams_tbl.COUNT);
8711 END IF;
8712
8713 IF l_k_billed_streams_tbl.COUNT > 0 THEN
8714
8715 l_tax_sources_tbl.DELETE;
8716 l_tax_trx_details_tbl.DELETE;
8717 i := 1;
8718 FOR k IN l_k_billed_streams_tbl.FIRST..l_k_billed_streams_tbl.LAST LOOP
8719
8720 l_total_tax := 0;
8721
8722 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);
8723 FETCH l_get_zx_taxable_line_info INTO l_get_zx_taxable_line_info_rec;
8724 IF l_get_zx_taxable_line_info%NOTFOUND THEN -- data should exist in the billing tables
8725 --SECHAWLA 22-APR-08 6975983 : begin
8726 --SECHAWLA 22-APR-08 6975983 : shouldn't fail if no tax calculated in eBTax for AR Invoice
8727 /*
8728 OKL_API.set_message( p_app_name => 'OKL',
8729 p_msg_name => 'OKL_TX_NO_BILLING_INFO');
8730 RAISE OKL_API.G_EXCEPTION_ERROR;
8731 */
8732 -- In scenario where there is no tax in eBTax for billed AR invoices (stream elements),
8733 -- Tax determinants can not be derived. Tax determinants are passed to AR through Ar Interface
8734 -- But these are not stored in actual AR tables. When AR makes tax call to eBTax, these determinants
8735 -- are passed to ebTax and stored in eBTax. Since in this case, there is no data in eBTax tables,
8736 -- it is not possible to derive these values. Hence storing Null values
8737 l_get_zx_taxable_line_info_rec.trx_business_category := NULL;
8738 l_get_zx_taxable_line_info_rec.product_category := NULL;
8739 l_get_zx_taxable_line_info_rec.user_defined_fisc_class := NULL;
8740 l_get_zx_taxable_line_info_rec.line_intended_use := NULL;
8741 l_get_zx_taxable_line_info_rec.input_tax_classification_code := NULL;
8742 l_get_zx_taxable_line_info_rec.product_type := NULL;
8743 l_get_zx_taxable_line_info_rec.product_fisc_classification := NULL;
8744
8745
8746 l_get_zx_taxable_line_info_rec.internal_organization_id := l_org_id;
8747 l_get_zx_taxable_line_info_rec.legal_entity_id := l_legal_entity_id;
8748
8749 l_get_zx_taxable_line_info_rec.line_amt := l_k_billed_streams_tbl(k).sel_amount;
8750 l_get_zx_taxable_line_info_rec.taxable_amt := l_k_billed_streams_tbl(k).sel_amount;
8751
8752 l_get_zx_taxable_line_info_rec.trx_date := l_k_billed_streams_tbl(k).sel_date;
8753
8754 l_get_zx_taxable_line_info_rec.tax_determine_date := NULL;
8755
8756 l_get_zx_taxable_line_info_rec.trx_currency_code := l_currency_code;
8757 l_get_zx_taxable_line_info_rec.currency_conversion_type := NULL;
8758 l_get_zx_taxable_line_info_rec.currency_conversion_rate := NULL;
8759 l_get_zx_taxable_line_info_rec.currency_conversion_date := NULL;
8760 --SECHAWLA 22-APR-08 6975983 : end
8761 END IF;
8762 CLOSE l_get_zx_taxable_line_info;
8763
8764 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);
8765 FETCH l_get_zx_total_tax INTO l_total_tax;
8766 CLOSE l_get_zx_total_tax;
8767
8768 IF (l_k_billed_streams_tbl(k).kle_id IS NOT NULL) THEN
8769 OPEN l_okclines_csr(l_k_billed_streams_tbl(k).kle_id);
8770 FETCH l_okclines_csr INTO l_name, l_lse_id;
8771 CLOSE l_okclines_csr;
8772 END IF;
8773
8774 -- populate tax sources table with transaction type of 'Tax Schedule'
8775 l_tax_sources_tbl(k).id := get_seq_id;
8776 l_tax_sources_tbl(k).kle_id := l_k_billed_streams_tbl(k).kle_id;
8777 l_tax_sources_tbl(k).khr_id := l_ts_khr_id;
8778
8779 IF (l_lse_id = 33) THEN
8780 l_tax_sources_tbl(k).asset_number := l_name;
8781 END IF;
8782
8783 l_tax_sources_tbl(k).trx_id := p_source_trx_id;
8784 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
8785 l_tax_sources_tbl(k).entity_code := G_TAX_SCH_ENTITY_CODE;
8786 l_tax_sources_tbl(k).event_class_code := G_TAX_SCHEDULE;
8787 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
8788 l_tax_sources_tbl(k).adjusted_doc_entity_code := null;
8789 l_tax_sources_tbl(k).adjusted_doc_event_class_code := null;
8790 l_tax_sources_tbl(k).adjusted_doc_trx_id := null;
8791 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := null;
8792 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := null;
8793 l_tax_sources_tbl(k).adjusted_doc_number := null;
8794 l_tax_sources_tbl(k).adjusted_doc_date := null;
8795 l_tax_sources_tbl(k).tax_call_type_code := G_TAX_SCHEDULE;
8796 l_tax_sources_tbl(k).sty_id := l_k_billed_streams_tbl(k).sty_id;
8797 l_tax_sources_tbl(k).trx_business_category := l_get_zx_taxable_line_info_rec.trx_business_category;
8798 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
8799 l_tax_sources_tbl(k).sel_id := l_k_billed_streams_tbl(k).sel_id;
8800 l_tax_sources_tbl(k).reported_yn := 'Y';
8801 l_tax_sources_tbl(k).program_id := null;
8802 l_tax_sources_tbl(k).request_id := null;
8803 l_tax_sources_tbl(k).program_application_id := null;
8804 l_tax_sources_tbl(k).program_update_date := null;
8805 l_tax_sources_tbl(k).attribute_category := null;
8806
8807 l_tax_sources_tbl(k).attribute1 := null;
8808 l_tax_sources_tbl(k).attribute2 := null;
8809 l_tax_sources_tbl(k).attribute3 := null;
8810 l_tax_sources_tbl(k).attribute4 := null;
8811 l_tax_sources_tbl(k).attribute5 := null;
8812 l_tax_sources_tbl(k).attribute6 := null;
8813 l_tax_sources_tbl(k).attribute7 := null;
8814 l_tax_sources_tbl(k).attribute8 := null;
8815 l_tax_sources_tbl(k).attribute9 := null;
8816 l_tax_sources_tbl(k).attribute10 := null;
8817 l_tax_sources_tbl(k).attribute11 := null;
8818 l_tax_sources_tbl(k).attribute12 := null;
8819 l_tax_sources_tbl(k).attribute13 := null;
8820 l_tax_sources_tbl(k).attribute14 := null;
8821 l_tax_sources_tbl(k).attribute15 := null;
8822 l_tax_sources_tbl(k).created_by := G_USER_ID;
8823 l_tax_sources_tbl(k).creation_date := SYSDATE;
8824 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
8825 l_tax_sources_tbl(k).last_update_date := SYSDATE;
8826 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
8827 l_tax_sources_tbl(k).object_version_number := null;
8828
8829 l_tax_sources_tbl(k).line_name := l_name;
8830 l_tax_sources_tbl(k).application_id := G_OKL_APPLICATION_ID;
8831 l_tax_sources_tbl(k).tax_reporting_flag := 'Y';
8832 l_tax_sources_tbl(k).default_taxation_country := l_taxation_country;
8833 l_tax_sources_tbl(k).product_category := l_get_zx_taxable_line_info_rec.product_category;
8834 l_tax_sources_tbl(k).user_defined_fisc_class := l_get_zx_taxable_line_info_rec.user_defined_fisc_class;
8835 l_tax_sources_tbl(k).line_intended_use := l_get_zx_taxable_line_info_rec.line_intended_use;
8836 l_tax_sources_tbl(k).tax_classification_code := l_get_zx_taxable_line_info_rec.input_tax_classification_code;
8837 l_tax_sources_tbl(k).inventory_item_id := null;
8838 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_cust_acct_id;
8839 l_tax_sources_tbl(k).org_id := l_get_zx_taxable_line_info_rec.internal_organization_id;
8840 l_tax_sources_tbl(k).legal_entity_id := l_get_zx_taxable_line_info_rec.legal_entity_id;
8841 l_tax_sources_tbl(k).line_amt := l_get_zx_taxable_line_info_rec.line_amt;
8842 l_tax_sources_tbl(k).assessable_value := l_get_zx_taxable_line_info_rec.taxable_amt;
8843
8844 l_tax_sources_tbl(k).total_tax := l_total_tax;
8845 l_tax_sources_tbl(k).trx_date := l_get_zx_taxable_line_info_rec.trx_date;
8846 l_tax_sources_tbl(k).try_id := l_ts_trx_type_id_det ; --SECHAWLA 22-APR-08 6975983 --null;
8847
8848 l_tax_sources_tbl(k).product_type := l_get_zx_taxable_line_info_rec.product_type;
8849 l_tax_sources_tbl(k).product_fisc_classification := l_get_zx_taxable_line_info_rec.product_fisc_classification;
8850 l_tax_sources_tbl(k).provnl_tax_determination_date := l_get_zx_taxable_line_info_rec.tax_determine_date;
8851 l_tax_sources_tbl(k).ship_to_location_id := null;
8852 l_tax_sources_tbl(k).ship_to_party_site_id := null;
8853 l_tax_sources_tbl(k).ship_to_party_id := null;
8854 l_tax_sources_tbl(k).bill_to_party_site_id := null;
8855 l_tax_sources_tbl(k).bill_to_location_id := null;
8856 l_tax_sources_tbl(k).bill_to_party_id := null;
8857 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := null;
8858 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := null;
8859 l_tax_sources_tbl(k).trx_currency_code := l_get_zx_taxable_line_info_rec.trx_currency_code;
8860 l_tax_sources_tbl(k).currency_conversion_type := l_get_zx_taxable_line_info_rec.currency_conversion_type;
8861 l_tax_sources_tbl(k).currency_conversion_rate := l_get_zx_taxable_line_info_rec.currency_conversion_rate;
8862 l_tax_sources_tbl(k).currency_conversion_date := l_get_zx_taxable_line_info_rec.currency_conversion_date;
8863
8864 -- Populate Tax trx details for each tax source
8865 FOR l_get_zx_tax_lines_rec IN l_get_zx_tax_lines(l_k_billed_streams_tbl(k).customer_trx_id,
8866 l_k_billed_streams_tbl(k).customer_trx_line_id) LOOP
8867
8868 l_tax_trx_details_tbl(i).id := get_seq_id;
8869 l_tax_trx_details_tbl(i).txs_id := l_tax_sources_tbl(k).id;
8870 l_tax_trx_details_tbl(i).tax_determination_date := l_get_zx_tax_lines_rec.tax_determine_date;
8871 l_tax_trx_details_tbl(i).tax_rate_id := l_get_zx_tax_lines_rec.tax_rate_id;
8872 l_tax_trx_details_tbl(i).tax_rate_code := l_get_zx_tax_lines_rec.tax_rate_code;
8873 l_tax_trx_details_tbl(i).taxable_amount := l_get_zx_tax_lines_rec.taxable_amt;
8874 l_tax_trx_details_tbl(i).tax_exemption_id := l_get_zx_tax_lines_rec.tax_exemption_id;
8875 l_tax_trx_details_tbl(i).tax_rate := l_get_zx_tax_lines_rec.tax_rate;
8876 l_tax_trx_details_tbl(i).tax_amount := l_get_zx_tax_lines_rec.tax_amt;
8877
8878 l_tax_trx_details_tbl(i).tax_date := l_get_zx_tax_lines_rec.tax_date;
8879 l_tax_trx_details_tbl(i).line_amt := l_get_zx_tax_lines_rec.line_amt;
8880 l_tax_trx_details_tbl(i).internal_organization_id := l_get_zx_tax_lines_rec.internal_organization_id;
8881 l_tax_trx_details_tbl(i).application_id := l_get_zx_tax_lines_rec.application_id;
8882 l_tax_trx_details_tbl(i).entity_code := l_get_zx_tax_lines_rec.entity_code;
8883 l_tax_trx_details_tbl(i).event_class_code := l_get_zx_tax_lines_rec.event_class_code;
8884 l_tax_trx_details_tbl(i).event_type_code := l_get_zx_tax_lines_rec.event_type_code;
8885 l_tax_trx_details_tbl(i).trx_id := l_tax_sources_tbl(k).trx_id;
8886 l_tax_trx_details_tbl(i).trx_line_id := l_tax_sources_tbl(k).trx_line_id;
8887 l_tax_trx_details_tbl(i).trx_level_type := l_get_zx_tax_lines_rec.trx_level_type;
8888 l_tax_trx_details_tbl(i).trx_line_number := l_get_zx_tax_lines_rec.trx_line_number;
8889 l_tax_trx_details_tbl(i).tax_line_number := l_get_zx_tax_lines_rec.tax_line_number;
8890 l_tax_trx_details_tbl(i).tax_regime_id := l_get_zx_tax_lines_rec.tax_regime_id;
8891 l_tax_trx_details_tbl(i).tax_regime_code := l_get_zx_tax_lines_rec.tax_regime_code;
8892 l_tax_trx_details_tbl(i).tax_id := l_get_zx_tax_lines_rec.tax_id;
8893 l_tax_trx_details_tbl(i).tax := l_get_zx_tax_lines_rec.tax;
8894 l_tax_trx_details_tbl(i).tax_status_id := l_get_zx_tax_lines_rec.tax_status_id;
8895 l_tax_trx_details_tbl(i).tax_status_code := l_get_zx_tax_lines_rec.tax_status_code;
8896 l_tax_trx_details_tbl(i).tax_apportionment_line_number := l_get_zx_tax_lines_rec.tax_apportionment_line_number;
8897 l_tax_trx_details_tbl(i).legal_entity_id := l_get_zx_tax_lines_rec.legal_entity_id;
8898 l_tax_trx_details_tbl(i).trx_number := l_get_zx_tax_lines_rec.trx_number;
8899 l_tax_trx_details_tbl(i).trx_date := l_get_zx_tax_lines_rec.trx_date;
8900 l_tax_trx_details_tbl(i).tax_jurisdiction_id := l_get_zx_tax_lines_rec.tax_jurisdiction_id;
8901 l_tax_trx_details_tbl(i).tax_jurisdiction_code := l_get_zx_tax_lines_rec.tax_jurisdiction_code;
8902 l_tax_trx_details_tbl(i).tax_type_code := l_get_zx_tax_lines_rec.tax_type_code;
8903 l_tax_trx_details_tbl(i).tax_currency_code := l_get_zx_tax_lines_rec.tax_currency_code;
8904 l_tax_trx_details_tbl(i).taxable_amt_tax_curr := l_get_zx_tax_lines_rec.taxable_amt_tax_curr;
8905 l_tax_trx_details_tbl(i).trx_currency_code := l_get_zx_tax_lines_rec.trx_currency_code;
8906 l_tax_trx_details_tbl(i).minimum_accountable_unit := l_get_zx_tax_lines_rec.minimum_accountable_unit;
8907 l_tax_trx_details_tbl(i).precision := l_get_zx_tax_lines_rec.precision;
8908 l_tax_trx_details_tbl(i).currency_conversion_type := l_get_zx_tax_lines_rec.currency_conversion_type;
8909 l_tax_trx_details_tbl(i).currency_conversion_rate := l_get_zx_tax_lines_rec.currency_conversion_rate;
8910 l_tax_trx_details_tbl(i).currency_conversion_date := l_get_zx_tax_lines_rec.currency_conversion_date;
8911
8912 -- columns for backward compatibility
8913 l_tax_trx_details_tbl(i).tax_determine_date := l_get_zx_tax_lines_rec.tax_determine_date;
8914 l_tax_trx_details_tbl(i).taxable_amt := l_get_zx_tax_lines_rec.taxable_amt;
8915 l_tax_trx_details_tbl(i).tax_amt := l_get_zx_tax_lines_rec.tax_amt;
8916 l_tax_trx_details_tbl(i).billed_yn := 'Y'; -- tax lines calculated by tax engine are not billed
8917 l_tax_trx_details_tbl(i).tax_call_type_code := G_TAX_SCHEDULE;
8918
8919 l_tax_trx_details_tbl(i).program_id := null;
8920 l_tax_trx_details_tbl(i).request_id := null;
8921 l_tax_trx_details_tbl(i).program_application_id := null;
8922 l_tax_trx_details_tbl(i).program_update_date := null;
8923 l_tax_trx_details_tbl(i).attribute_category := null;
8924 l_tax_trx_details_tbl(i).attribute1 := null;
8925 l_tax_trx_details_tbl(i).attribute2 := null;
8926 l_tax_trx_details_tbl(i).attribute3 := null;
8927 l_tax_trx_details_tbl(i).attribute4 := null;
8928 l_tax_trx_details_tbl(i).attribute5 := null;
8929 l_tax_trx_details_tbl(i).attribute6 := null;
8930 l_tax_trx_details_tbl(i).attribute7 := null;
8931 l_tax_trx_details_tbl(i).attribute8 := null;
8932 l_tax_trx_details_tbl(i).attribute9 := null;
8933 l_tax_trx_details_tbl(i).attribute10 := null;
8934 l_tax_trx_details_tbl(i).attribute11 := null;
8935 l_tax_trx_details_tbl(i).attribute12 := null;
8936 l_tax_trx_details_tbl(i).attribute13 := null;
8937 l_tax_trx_details_tbl(i).attribute14 := null;
8938 l_tax_trx_details_tbl(i).attribute15 := null;
8939 l_tax_trx_details_tbl(i).created_by := G_USER_ID;
8940 l_tax_trx_details_tbl(i).creation_date := SYSDATE;
8941 l_tax_trx_details_tbl(i).last_updated_by := G_USER_ID;
8942 l_tax_trx_details_tbl(i).last_update_date := SYSDATE;
8943 l_tax_trx_details_tbl(i).last_update_login := G_LOGIN_ID;
8944 l_tax_trx_details_tbl(i).object_version_number := null;
8945
8946 i := i + 1;
8947 END LOOP;
8948
8949 END LOOP;
8950 END IF;
8951 EXIT WHEN c_k_billed_streams_csr%NOTFOUND;
8952 END LOOP;
8953 CLOSE c_k_billed_streams_csr;
8954
8955 -- At this point l_tax_sources_tbl and l_tax_trx_details_tbl tables have
8956 -- all the data for the billed stream elements
8957
8958 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8959 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8960 'before Insert into okl_tax_sources ');
8961 END IF;
8962
8963 ---- Insert into okl_tax_sources begin -----
8964 BEGIN
8965 IF l_tax_sources_tbl.COUNT > 0 THEN
8966 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
8967 -- SAVE EXCEPTIONS
8968 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
8969 END IF;
8970 EXCEPTION
8971 WHEN OTHERS THEN
8972 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
8973 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
8974 OKL_API.set_message(p_app_name => 'OKL',
8975 p_msg_name => 'OKL_TX_TRX_INS_ERR',
8976 p_token1 => 'TABLE_NAME',
8977 p_token1_value => 'OKL_TAX_SOURCES',
8978 p_token2 => 'ERROR_CODE',
8979 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
8980 p_token3 => 'ITERATION',
8981 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
8982 END LOOP;
8983 RAISE OKL_API.G_EXCEPTION_ERROR;
8984 END IF;
8985 END;
8986 ---- Insert into okl_tax_sources end -----
8987
8988 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
8989 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
8990 'before Insert into okl_tax_trx_details ');
8991 END IF;
8992
8993 ---- Insert into okl_tax_trx_details begin -----
8994 BEGIN
8995 IF l_tax_trx_details_tbl.COUNT > 0 THEN
8996 FORALL indx IN l_tax_trx_details_tbl.FIRST..l_tax_trx_details_tbl.LAST
8997 -- SAVE EXCEPTIONS
8998 INSERT INTO okl_tax_trx_details VALUES l_tax_trx_details_tbl(indx);
8999 END IF;
9000 EXCEPTION
9001 WHEN OTHERS THEN
9002 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
9003 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
9004 OKL_API.set_message(p_app_name => 'OKL',
9005 p_msg_name => 'OKL_TX_TRX_INS_ERR',
9006 p_token1 => 'TABLE_NAME',
9007 p_token1_value => 'OKL_TAX_TRX_DETAILS',
9008 p_token2 => 'ERROR_CODE',
9009 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
9010 p_token3 => 'ITERATION',
9011 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
9012 END LOOP;
9013 RAISE OKL_API.G_EXCEPTION_ERROR;
9014 END IF;
9015 END;
9016
9017 ---- Insert into okl_tax_trx_details end -----
9018
9019 -- At this point tax sources and tax trx details have been created for the already billed
9020 -- and taxed stream elements under transaction type 'Tax Schedule'
9021
9022 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9023 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9024 'Process Billed Stream elements end ');
9025 END IF;
9026 --------------- Process Billed Stream elements - End -------------------
9027
9028 -----------------Process Unbilled Stream elements - Start --------------
9029 OPEN c_k_unbilled_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
9030 FETCH c_k_unbilled_streams_csr INTO l_K_unbilled_streams_rec;
9031 IF c_k_unbilled_streams_csr%FOUND THEN
9032 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9033 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9034 'l_unbilled_strms_exist = TRUE ');
9035 END IF;
9036
9037 l_unbilled_strms_exist := TRUE;
9038 END IF;
9039 CLOSE c_k_unbilled_streams_csr;
9040
9041 IF (l_unbilled_strms_exist) THEN -- Processing for Unbilled streams - Start
9042
9043 -------------- Get financial asset line level TBC Determinants ---------------
9044 i := 0;
9045 OPEN l_finassets_csr(l_ts_khr_id);
9046 LOOP
9047 l_finassets_tbl.DELETE;
9048 FETCH l_finassets_csr BULK COLLECT INTO l_finassets_tbl LIMIT l_fetch_size;
9049
9050 IF l_finassets_tbl.COUNT > 0 THEN
9051 FOR K IN l_finassets_tbl.FIRST..l_finassets_tbl.LAST LOOP
9052
9053 get_asset_tax_params(
9054 p_api_version => p_api_version,
9055 p_init_msg_list => OKC_API.G_FALSE,
9056 x_return_status => x_return_status,
9057 x_msg_count => x_msg_count,
9058 x_msg_data => x_msg_data,
9059 p_khr_id => l_ts_khr_id,
9060 p_kle_id => l_finassets_tbl(k).fin_asset_id,
9061 p_source_trx_name => p_source_trx_name,
9062 p_source_table => p_source_table,
9063 x_transfer_of_title => l_ts_transfer_of_title,
9064 x_sale_lease_back => l_ts_sale_lease_back,
9065 x_purchase_of_lease => l_ts_purchase_of_lease,
9066 x_usage_of_equipment => l_ts_usage_of_equipment,
9067 x_age_of_equipment => l_ts_age_of_equipment,
9068 x_vendor_site_id => l_ts_vendor_site_id);
9069
9070 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9071 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9072 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9073 RAISE OKL_API.G_EXCEPTION_ERROR;
9074 END IF;
9075
9076 l_ts_asset_level_det_tbl(i).fin_asset_id := l_finassets_tbl(k).fin_asset_id;
9077 l_ts_asset_level_det_tbl(i).transfer_of_title := l_ts_transfer_of_title;
9078 l_ts_asset_level_det_tbl(i).sale_lease_back := l_ts_sale_lease_back;
9079 l_ts_asset_level_det_tbl(i).purchase_of_lease := l_ts_purchase_of_lease;
9080 l_ts_asset_level_det_tbl(i).usage_of_equipment := l_ts_usage_of_equipment;
9081 l_ts_asset_level_det_tbl(i).vendor_site_id := l_ts_vendor_site_id;
9082 l_ts_asset_level_det_tbl(i).age_of_equipment := l_ts_age_of_equipment;
9083
9084 i := i + 1;
9085 END LOOP;
9086 END IF;
9087 EXIT WHEN l_finassets_csr%NOTFOUND;
9088 END LOOP;
9089 CLOSE l_finassets_csr;
9090
9091 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9092 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9093 'after hdr level and asset level determinant fetch ');
9094 END IF;
9095
9096 -------- Get all codes at stream type level (for each unique combination of K/Line and stream type) -----------
9097
9098 OPEN l_kstreamtypes_csr(l_ts_khr_id);
9099 LOOP
9100 l_kstreamtypes_tbl.DELETE;
9101 FETCH l_kstreamtypes_csr BULK COLLECT INTO l_kstreamtypes_tbl LIMIT l_fetch_size;
9102
9103 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9104 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9105 'l_kstreamtypes_tbl.COUNT '||l_kstreamtypes_tbl.COUNT);
9106 END IF;
9107
9108 IF l_kstreamtypes_tbl.COUNT > 0 THEN
9109
9110 l_tax_code_count := 1;
9111 lx_tax_codes_tbl.DELETE;
9112 FOR K IN l_kstreamtypes_tbl.FIRST..l_kstreamtypes_tbl.LAST LOOP
9113
9114 IF (l_kstreamtypes_tbl(k).line_id IS NULL OR
9115 l_kstreamtypes_tbl(k).lty_code IN ('SOLD_SERVICE', 'FEE')) THEN
9116
9117 -- K level stream or service/fee line level stream
9118 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9119 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9120 'hdr level OR Service/Fee Line level ');
9121 END IF;
9122
9123 l_vendor_id := NULL;
9124 l_ts_vendor_site_id := NULL;
9125
9126 -- Vendor site is applicable for fin asset / service / fee lines / sublines
9127 -- Vendor site is not applicable at the K level
9128 IF l_kstreamtypes_tbl(k).line_id IS NOT NULL THEN -- service or fee line
9129 -- Check if multiple vendors exist. If so, vendor location is
9130 -- not a determinant, get the service / fee line Vendor
9131 l_vndr_cnt := 0;
9132
9133 FOR l_partyroles_rec IN l_partyroles_csr(l_kstreamtypes_tbl(k).line_id) LOOP -- pass top service/fee line id
9134 l_vndr_cnt := l_vndr_cnt + 1;
9135 l_vendor_id := l_partyroles_rec.object1_id1; -- vendor is optional
9136 END LOOP;
9137
9138 IF l_vndr_cnt = 1 AND l_vendor_id IS NOT NULL THEN
9139 -- get the primary pay vendor site (if defined) from AP
9140 OPEN l_povendorsites_csr(l_vendor_id);
9141 FETCH l_povendorsites_csr INTO l_ts_vendor_site_id; -- will be null if none of the sites are checked as primary
9142 CLOSE l_povendorsites_csr;
9143 END IF;
9144 END IF;
9145
9146 populate_tax_codes( p_api_version => p_api_version,
9147 p_init_msg_list => OKC_API.G_FALSE,
9148 x_return_status => x_return_status,
9149 x_msg_count => x_msg_count,
9150 x_msg_data => x_msg_data,
9151 p_prch_opt_det => l_ts_prch_opt_det,
9152 p_fin_prod_id_det => l_ts_fin_prod_id_det,
9153 p_int_disclosed_det => l_ts_int_disclosed_det,
9154 p_title_trnsfr_code => null,
9155 p_sale_lease_back_code => null,
9156 p_lease_purchased_code => null,
9157 p_equip_usage_code => null,
9158 p_vendor_site_id => l_ts_vendor_site_id,
9159 p_age_of_equip => null,
9160 p_source_trx_name => p_source_trx_name,
9161 p_book_class_code => lx_book_class_code,
9162 p_tax_code_cnt => l_tax_code_count,
9163 p_sty_id => l_kstreamtypes_tbl(k).stream_type_id,
9164 p_try_id => l_ts_trx_type_id_det,
9165 p_tax_country_code => l_taxation_country,
9166 p_khr_id => l_ts_khr_id,
9167 p_kle_id => l_kstreamtypes_tbl(k).line_id,
9168 p_bill_to_party_site_id => lx_bill_to_party_site_id,
9169 p_bill_to_location_id => lx_bill_to_location_id,
9170 p_bill_to_party_id => lx_bill_to_party_id,
9171 p_bill_to_cust_acct_site_id => lx_bill_to_siteuseid,
9172 p_org_id => l_org_id,
9173 p_trx_date => l_ts_start_date,
9174 px_tax_codes_tbl => lx_tax_codes_tbl);
9175
9176 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9177 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9178 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9179 RAISE OKL_API.G_EXCEPTION_ERROR;
9180 END IF;
9181
9182 l_tax_code_count := l_tax_code_count + 1;
9183
9184 ELSIF l_kstreamtypes_tbl(k).lty_code IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
9185 -- Asset level stream or service/fee sub line level stream
9186
9187 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9188 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9189 'asset / service subline / fee subline level ');
9190 END IF;
9191
9192 IF l_kstreamtypes_tbl(k).lty_code = 'FREE_FORM1' THEN
9193 l_fin_asset_id := l_kstreamtypes_tbl(k).line_id;
9194 ELSE
9195 -- If subline level, get the attached fin asset id
9196 OPEN l_finasset_csr(l_kstreamtypes_tbl(k).line_id, l_kstreamtypes_tbl(k).lty_code);
9197 FETCH l_finasset_csr INTO l_fin_asset_id;
9198 CLOSE l_finasset_csr;
9199 END IF;
9200
9201 IF l_ts_asset_level_det_tbl.count > 0 THEN
9202 ind := l_ts_asset_level_det_tbl.FIRST;
9203 LOOP
9204
9205 IF l_ts_asset_level_det_tbl(ind).fin_asset_id = l_fin_asset_id THEN
9206
9207 -- Equipment Type(inventory item id)
9208 -- get the inventory item id
9209 OPEN l_invitem_csr(l_fin_asset_id);
9210 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_org_id;
9211 IF l_invitem_csr%NOTFOUND THEN
9212 OKL_API.set_message(
9213 p_app_name => 'OKL',
9214 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
9215 p_token1 => 'ASSET_NUMBER',
9216 p_token1_value => 'FIN_ASSET_ID');
9217
9218 RAISE OKL_API.G_EXCEPTION_ERROR;
9219 END IF;
9220 CLOSE l_invitem_csr;
9221
9222 -- get the Location Party ID's
9223 get_location_party_ids(
9224 p_api_version => p_api_version,
9225 p_init_msg_list => OKC_API.G_FALSE,
9226 x_return_status => x_return_status,
9227 x_msg_count => x_msg_count,
9228 x_msg_data => x_msg_data,
9229 p_cust_acct_id => l_cust_acct_id,
9230 p_fin_asset_id => l_fin_asset_id,
9231 p_khr_id => l_ts_khr_id,
9232 x_bill_to_party_site_id => lx_bill_to_party_site_id,
9233 x_bill_to_location_id => lx_bill_to_location_id,
9234 x_bill_to_party_id => lx_bill_to_party_id,
9235 x_bill_to_site_use_id => lx_bill_to_siteuseid,
9236 x_ship_to_party_site_id => lx_ship_to_party_site_id,
9237 x_ship_to_location_id => lx_ship_to_location_id,
9238 x_ship_to_party_id => lx_ship_to_party_id,
9239 x_ship_to_site_use_id => lx_ship_to_siteuseid);
9240
9241 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9242 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9243 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9244 RAISE OKL_API.G_EXCEPTION_ERROR;
9245 END IF;
9246
9247 populate_tax_codes( p_api_version => p_api_version,
9248 p_init_msg_list => OKC_API.G_FALSE,
9249 x_return_status => x_return_status,
9250 x_msg_count => x_msg_count,
9251 x_msg_data => x_msg_data,
9252 p_prch_opt_det => l_ts_prch_opt_det,
9253 p_fin_prod_id_det => l_ts_fin_prod_id_det,
9254 p_int_disclosed_det => l_ts_int_disclosed_det,
9255 p_title_trnsfr_code => l_ts_asset_level_det_tbl(ind).transfer_of_title,
9256 p_sale_lease_back_code => l_ts_asset_level_det_tbl(ind).sale_lease_back,
9257 p_lease_purchased_code => l_ts_asset_level_det_tbl(ind).purchase_of_lease,
9258 p_equip_usage_code => l_ts_asset_level_det_tbl(ind).usage_of_equipment,
9259 p_vendor_site_id => l_ts_asset_level_det_tbl(ind).vendor_site_id,
9260 p_age_of_equip => l_ts_asset_level_det_tbl(ind).age_of_equipment,
9261 p_source_trx_name => p_source_trx_name,
9262 p_book_class_code => lx_book_class_code,
9263 p_tax_code_cnt => l_tax_code_count,
9264 p_sty_id => l_kstreamtypes_tbl(k).stream_type_id,
9265 p_try_id => l_ts_trx_type_id_det,
9266 p_tax_country_code => l_taxation_country,
9267 p_khr_id => l_ts_khr_id,
9268 p_kle_id => l_fin_asset_id,
9269 p_bill_to_party_site_id => lx_bill_to_party_site_id,
9270 p_bill_to_location_id => lx_bill_to_location_id,
9271 p_bill_to_party_id => lx_bill_to_party_id,
9272 p_bill_to_cust_acct_site_id => lx_bill_to_siteuseid,
9273 p_ship_to_party_site_id => lx_ship_to_party_site_id,
9274 p_ship_to_location_id => lx_ship_to_location_id,
9275 p_ship_to_party_id => lx_ship_to_party_id,
9276 p_ship_to_cust_acct_site_id => lx_ship_to_siteuseid,
9277 p_inventory_item_id => l_inv_item_id,
9278 p_org_id => l_org_id,
9279 p_trx_date => l_ts_start_date,
9280 px_tax_codes_tbl => lx_tax_codes_tbl);
9281
9282 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9283 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9284 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9285 RAISE OKL_API.G_EXCEPTION_ERROR;
9286 END IF;
9287
9288 l_tax_code_count := l_tax_code_count + 1;
9289
9290 EXIT;
9291 END IF;
9292
9293 EXIT WHEN (ind = l_ts_asset_level_det_tbl.LAST);
9294 ind := l_ts_asset_level_det_tbl.NEXT(ind);
9295 END LOOP;
9296 END IF;
9297 END IF;
9298
9299 END LOOP;
9300 END IF;
9301 EXIT WHEN l_kstreamtypes_csr%NOTFOUND;
9302 END LOOP;
9303 CLOSE l_kstreamtypes_csr;
9304
9305 -- Taxable Basis Override not allowed for Tax Schedule type of calls
9306
9307 l_tax_sources_tbl.DELETE;
9308 OPEN c_k_unbilled_streams_csr(l_ts_khr_id, l_ts_start_date, l_ts_end_date);
9309 LOOP
9310 l_contract_streams_tbl.DELETE;
9311 FETCH c_k_unbilled_streams_csr BULK COLLECT INTO l_contract_streams_tbl LIMIT l_fetch_size;
9312
9313 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9314 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9315 'l_contract_streams_tbl.COUNT '||l_contract_streams_tbl.COUNT );
9316 END IF;
9317
9318 IF l_contract_streams_tbl.COUNT > 0 THEN
9319 -- insert each row into tax sources
9320 -- fill in the missing values IN l_contract_streams_tbl
9321 FOR K IN l_contract_streams_tbl.FIRST..l_contract_streams_tbl.LAST LOOP
9322
9323 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9324 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9325 'l_contract_streams_tbl(k).lty_code '||l_contract_streams_tbl(k).lty_code );
9326 END IF;
9327
9328 -- populate asset number for fin asset line / sublines
9329 IF l_contract_streams_tbl(k).lty_code IN ('FREE_FORM1','LINK_SERV_ASSET', 'LINK_FEE_ASSET') THEN
9330
9331 IF l_contract_streams_tbl(k).lty_code = 'FREE_FORM1' THEN
9332 l_asset_line_id := l_contract_streams_tbl(k).kle_id;
9333 ELSE -- Service subline or Fee subline
9334 --get the financial asset associated with the subline
9335
9336 -- see if pervious fetch fro aaatched asset id can be stored and used here instead of curosr fetch
9337 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
9338 FETCH l_finasset_csr INTO l_asset_line_id;
9339 CLOSE l_finasset_csr;
9340 END IF;
9341
9342 l_contract_streams_tbl(k).asset_line_id := l_asset_line_id; -- populate asset id for subline as well
9343
9344 OPEN l_okclines_csr(l_asset_line_id);
9345 FETCH l_okclines_csr INTO l_name, l_lse_id;
9346 CLOSE l_okclines_csr;
9347
9348 l_contract_streams_tbl(k).asset_number := l_name;-- populate asset num for subline as well
9349
9350 get_location_party_ids(
9351 p_api_version => p_api_version,
9352 p_init_msg_list => OKC_API.G_FALSE,
9353 x_return_status => x_return_status,
9354 x_msg_count => x_msg_count,
9355 x_msg_data => x_msg_data,
9356 p_cust_acct_id => l_cust_acct_id,
9357 p_fin_asset_id => l_asset_line_id,
9358 p_khr_id => l_ts_khr_id,
9359 x_bill_to_party_site_id => lx_bill_to_party_site_id,
9360 x_bill_to_location_id => lx_bill_to_location_id,
9361 x_bill_to_party_id => lx_bill_to_party_id,
9362 x_bill_to_site_use_id => lx_bill_to_siteuseid,
9363 x_ship_to_party_site_id => lx_ship_to_party_site_id,
9364 x_ship_to_location_id => lx_ship_to_location_id,
9365 x_ship_to_party_id => lx_ship_to_party_id,
9366 x_ship_to_site_use_id => lx_ship_to_siteuseid);
9367
9368 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9369 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9370 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9371 RAISE OKL_API.G_EXCEPTION_ERROR;
9372 END IF;
9373
9374 l_contract_streams_tbl(k).ship_to_siteuseid := lx_ship_to_siteuseid;
9375
9376 -- get the inventory item id
9377 OPEN l_invitem_csr(l_asset_line_id);
9378 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
9379 IF l_invitem_csr%NOTFOUND THEN
9380 OKL_API.set_message(p_app_name => 'OKL',
9381 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
9382 p_token1 => 'ASSET_NUMBER',
9383 p_token1_value => l_asset_number);
9384 RAISE OKL_API.G_EXCEPTION_ERROR;
9385 END IF;
9386 CLOSE l_invitem_csr;
9387
9388 l_contract_streams_tbl(k).inventory_item_id := l_inv_item_id;
9389
9390 ELSE
9391 OPEN l_okclines_csr(l_contract_streams_tbl(k).kle_id);
9392 FETCH l_okclines_csr INTO l_name, l_lse_id;
9393 CLOSE l_okclines_csr;
9394 END IF;
9395
9396 -- Populate tax sources table with transaction type of 'Tax Schedule'
9397 l_tax_sources_tbl(k).id := get_seq_id;
9398 l_tax_sources_tbl(k).kle_id := l_contract_streams_tbl(k).kle_id;
9399 l_tax_sources_tbl(k).khr_id := l_ts_khr_id;
9400 l_tax_sources_tbl(k).asset_number := l_contract_streams_tbl(k).asset_number;
9401
9402 l_tax_sources_tbl(k).trx_id := p_source_trx_id;
9403 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
9404 l_tax_sources_tbl(k).entity_code := G_TAX_SCH_ENTITY_CODE;
9405 l_tax_sources_tbl(k).event_class_code := G_TAX_SCHEDULE;
9406 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
9407 l_tax_sources_tbl(k).adjusted_doc_entity_code := null;
9408 l_tax_sources_tbl(k).adjusted_doc_event_class_code := null;
9409 l_tax_sources_tbl(k).adjusted_doc_trx_id := null;
9410 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := null;
9411 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := null;
9412 l_tax_sources_tbl(k).adjusted_doc_number := null;
9413 l_tax_sources_tbl(k).adjusted_doc_date := null;
9414 l_tax_sources_tbl(k).tax_call_type_code := G_TAX_SCHEDULE;
9415 l_tax_sources_tbl(k).sty_id := l_contract_streams_tbl(k).stream_type_id;
9416
9417 l_value_fetched := FALSE;
9418 IF lx_tax_codes_tbl.COUNT > 0 THEN
9419 ind := lx_tax_codes_tbl.FIRST;
9420 LOOP
9421
9422 IF ((nvl(lx_tax_codes_tbl(ind).kle_id,-11) = nvl(l_contract_streams_tbl(k).kle_id,-11)) AND
9423 (lx_tax_codes_tbl(ind).sty_id = l_contract_streams_tbl(k).stream_type_id)) THEN
9424
9425 l_tbc_code := lx_tax_codes_tbl(ind).tbc_code;
9426 l_ufc_code := lx_tax_codes_tbl(ind).ufc_code;
9427 l_pc_code := lx_tax_codes_tbl(ind).pc_code;
9428 l_tax_class_code := lx_tax_codes_tbl(ind).tax_class_code;
9429
9430 EXIT;
9431 END IF;
9432
9433 EXIT WHEN (ind = lx_tax_codes_tbl.LAST);
9434 ind := lx_tax_codes_tbl.NEXT(ind);
9435 END LOOP;
9436 l_contract_streams_tbl(k).trx_business_category := l_contract_streams_tbc;
9437 END IF;
9438
9439 l_tax_sources_tbl(k).trx_business_category := l_tbc_code;
9440 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
9441 l_tax_sources_tbl(k).sel_id := l_contract_streams_tbl(k).sel_id;
9442 l_tax_sources_tbl(k).reported_yn := 'N';
9443 l_tax_sources_tbl(k).program_id := null;
9444 l_tax_sources_tbl(k).request_id := null;
9445 l_tax_sources_tbl(k).program_application_id := null;
9446 l_tax_sources_tbl(k).program_update_date := null;
9447 l_tax_sources_tbl(k).attribute_category := null;
9448
9449 l_tax_sources_tbl(k).attribute1 := null;
9450 l_tax_sources_tbl(k).attribute2 := null;
9451 l_tax_sources_tbl(k).attribute3 := null;
9452 l_tax_sources_tbl(k).attribute4 := null;
9453 l_tax_sources_tbl(k).attribute5 := null;
9454 l_tax_sources_tbl(k).attribute6 := null;
9455 l_tax_sources_tbl(k).attribute7 := null;
9456 l_tax_sources_tbl(k).attribute8 := null;
9457 l_tax_sources_tbl(k).attribute9 := null;
9458 l_tax_sources_tbl(k).attribute10 := null;
9459 l_tax_sources_tbl(k).attribute11 := null;
9460 l_tax_sources_tbl(k).attribute12 := null;
9461 l_tax_sources_tbl(k).attribute13 := null;
9462 l_tax_sources_tbl(k).attribute14 := null;
9463 l_tax_sources_tbl(k).attribute15 := null;
9464 l_tax_sources_tbl(k).created_by := G_USER_ID;
9465 l_tax_sources_tbl(k).creation_date := SYSDATE;
9466 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
9467 l_tax_sources_tbl(k).last_update_date := SYSDATE;
9468 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
9469 l_tax_sources_tbl(k).object_version_number := null;
9470
9471 l_tax_sources_tbl(k).line_name := l_name;
9472 l_tax_sources_tbl(k).application_id := G_OKL_APPLICATION_ID;
9473 l_tax_sources_tbl(k).tax_reporting_flag := 'N';
9474 l_tax_sources_tbl(k).default_taxation_country := l_taxation_country;
9475 l_tax_sources_tbl(k).product_category := l_pc_code;
9476 l_tax_sources_tbl(k).user_defined_fisc_class := l_ufc_code;
9477 l_tax_sources_tbl(k).line_intended_use := l_ts_age_of_equipment;
9478 l_tax_sources_tbl(k).tax_classification_code := l_tax_class_code;
9479 l_tax_sources_tbl(k).inventory_item_id := l_contract_streams_tbl(k).inventory_item_id;
9480 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_cust_acct_id;
9481 l_tax_sources_tbl(k).org_id := l_org_id;
9482 l_tax_sources_tbl(k).legal_entity_id := l_legal_entity_id;
9483 l_tax_sources_tbl(k).line_amt := l_contract_streams_tbl(k).amount;
9484 l_tax_sources_tbl(k).assessable_value := l_contract_streams_tbl(k).amount;
9485
9486 l_tax_sources_tbl(k).total_tax := null;
9487 l_tax_sources_tbl(k).trx_date := l_contract_streams_tbl(k).stream_element_date;
9488 l_tax_sources_tbl(k).try_id := l_ts_trx_type_id_det;
9489
9490 l_tax_sources_tbl(k).product_type := G_DEFAULT_PRODUCT_TYPE;
9491 l_tax_sources_tbl(k).product_fisc_classification := null;
9492 l_tax_sources_tbl(k).provnl_tax_determination_date := l_contract_streams_tbl(k).stream_element_date;
9493 l_tax_sources_tbl(k).ship_to_location_id := lx_ship_to_location_id;
9494 l_tax_sources_tbl(k).ship_to_party_site_id := lx_ship_to_party_site_id;
9495 l_tax_sources_tbl(k).ship_to_party_id := lx_ship_to_party_id;
9496 l_tax_sources_tbl(k).bill_to_party_site_id := lx_bill_to_party_site_id;
9497 l_tax_sources_tbl(k).bill_to_location_id := lx_bill_to_location_id;
9498 l_tax_sources_tbl(k).bill_to_party_id := lx_bill_to_party_id;
9499 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
9500 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
9501 l_tax_sources_tbl(k).trx_currency_code := l_currency_code;
9502 l_tax_sources_tbl(k).currency_conversion_type := lx_currency_conversion_type;
9503 l_tax_sources_tbl(k).currency_conversion_rate := lx_currency_conversion_rate;
9504 l_tax_sources_tbl(k).currency_conversion_date := lx_currency_conversion_date;
9505
9506 -- Populate Tax Trx Table to call 'calculate_tax'
9507 lx_line_params_tbl(k).application_id := G_OKL_APPLICATION_ID;
9508 lx_line_params_tbl(k).trx_id := p_source_trx_id;
9509 lx_line_params_tbl(k).internal_organization_id := l_org_id;
9510 lx_line_params_tbl(k).entity_code := l_tax_sources_tbl(k).entity_code;
9511 lx_line_params_tbl(k).event_class_code := l_tax_sources_tbl(k).event_class_code;
9512 lx_line_params_tbl(k).event_type_code := G_TAX_SCH_CRE_EVT_TYPE_CODE;
9513 lx_line_params_tbl(k).trx_date := l_tax_sources_tbl(k).trx_date;
9514 lx_line_params_tbl(k).ledger_id := l_ledger_id;
9515 lx_line_params_tbl(k).legal_entity_id := l_legal_entity_id;
9516 lx_line_params_tbl(k).trx_level_type := l_tax_sources_tbl(k).trx_level_type;
9517 lx_line_params_tbl(k).line_level_action := G_CREATE_LINE_LEVEL_ACTION;
9518
9519 lx_line_params_tbl(k).trx_line_id := l_tax_sources_tbl(k).trx_line_id;
9520
9521 lx_line_params_tbl(k).line_amt := l_tax_sources_tbl(k).line_amt;
9522 lx_line_params_tbl(k).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
9523 lx_line_params_tbl(k).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
9524 lx_line_params_tbl(k).product_type := l_tax_sources_tbl(k).product_type;
9525 lx_line_params_tbl(k).output_tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
9526 lx_line_params_tbl(k).assessable_value := l_tax_sources_tbl(k).line_amt;
9527 lx_line_params_tbl(k).receivables_trx_type_id := l_cust_trx_type_id;
9528 lx_line_params_tbl(k).product_id := l_tax_sources_tbl(k).inventory_item_id;
9529 lx_line_params_tbl(k).adjusted_doc_entity_code := null;
9530 lx_line_params_tbl(k).adjusted_doc_event_class_code := null;
9531 lx_line_params_tbl(k).adjusted_doc_trx_id := null;
9532 lx_line_params_tbl(k).adjusted_doc_line_id := null;
9533 lx_line_params_tbl(k).adjusted_doc_trx_level_type := null;
9534 lx_line_params_tbl(k).adjusted_doc_number := null;
9535 lx_line_params_tbl(k).adjusted_doc_date := null;
9536 lx_line_params_tbl(k).line_amt_includes_tax_flag := 'N';
9537
9538 lx_line_params_tbl(k).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
9539 lx_line_params_tbl(k).product_category := l_tax_sources_tbl(k).product_category;
9540 lx_line_params_tbl(k).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
9541 lx_line_params_tbl(k).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
9542 lx_line_params_tbl(k).ship_to_cust_acct_site_use_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
9543 lx_line_params_tbl(k).bill_to_cust_acct_site_use_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
9544 lx_line_params_tbl(k).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
9545 lx_line_params_tbl(k).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
9546 lx_line_params_tbl(k).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
9547 lx_line_params_tbl(k).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
9548 lx_line_params_tbl(k).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
9549 lx_line_params_tbl(k).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
9550 lx_line_params_tbl(k).rounding_ship_to_party_id := l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id;
9551 lx_line_params_tbl(k).rounding_bill_to_party_id := l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id;
9552 lx_line_params_tbl(k).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
9553 lx_line_params_tbl(k).precision := l_precision;
9554 lx_line_params_tbl(k).minimum_accountable_unit := l_minimum_accountable_unit;
9555 lx_line_params_tbl(k).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
9556 lx_line_params_tbl(k).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
9557 lx_line_params_tbl(k).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
9558
9559 END LOOP;
9560 END IF;
9561
9562 EXIT WHEN c_k_unbilled_streams_csr%NOTFOUND;
9563 END LOOP;
9564 CLOSE c_k_unbilled_streams_csr;
9565
9566 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9567 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9568 'before Insert into okl_tax_sources ');
9569 END IF;
9570
9571 ---- Insert into okl_tax_sources begin -----
9572 BEGIN
9573 IF l_tax_sources_tbl.COUNT > 0 THEN
9574 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
9575 -- SAVE EXCEPTIONS
9576 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
9577 END IF;
9578 EXCEPTION
9579 WHEN OTHERS THEN
9580 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
9581 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
9582 OKL_API.set_message(p_app_name => 'OKL',
9583 p_msg_name => 'OKL_TX_TRX_INS_ERR',
9584 p_token1 => 'TABLE_NAME',
9585 p_token1_value => 'OKL_TAX_SOURCES',
9586 p_token2 => 'ERROR_CODE',
9587 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
9588 p_token3 => 'ITERATION',
9589 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
9590 END LOOP;
9591 RAISE OKL_API.G_EXCEPTION_ERROR;
9592 END IF;
9593 END;
9594 ---- Insert into okl_tax_sources end -----
9595
9596 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9597 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9598 'lx_line_params_tbl.COUNT '||lx_line_params_tbl.COUNT);
9599 END IF;
9600
9601 IF lx_line_params_tbl.COUNT > 0 THEN
9602 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9603 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9604 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
9605 END IF;
9606
9607 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
9608 lp_hdr_params_rec.trx_id := p_source_trx_id;
9609 lp_hdr_params_rec.internal_organization_id := l_org_id;
9610 lp_hdr_params_rec.entity_code := G_TAX_SCH_ENTITY_CODE;
9611 lp_hdr_params_rec.event_class_code := G_TAX_SCHEDULE;
9612 lp_hdr_params_rec.event_type_code := G_TAX_SCH_CRE_EVT_TYPE_CODE;
9613 lp_hdr_params_rec.quote_flag := 'Y';
9614
9615 OKL_TAX_INTERFACE_PVT.calculate_tax(
9616 p_api_version => p_api_version,
9617 p_init_msg_list => p_init_msg_list,
9618 x_return_status => x_return_status,
9619 x_msg_count => x_msg_count,
9620 x_msg_data => x_msg_data,
9621 p_hdr_params_rec => lp_hdr_params_rec,
9622 p_line_params_tbl => lx_line_params_tbl);
9623
9624 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9625 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9626 'After tax engine call '||x_return_status);
9627 END IF;
9628
9629 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9630 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9631 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9632 RAISE OKL_API.G_EXCEPTION_ERROR;
9633 END IF;
9634 END IF;
9635
9636 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9638 'Calling "update_tax_sources_total" .. ');
9639 END IF;
9640
9641 update_tax_sources_total(p_api_version => p_api_version,
9642 p_init_msg_list => p_init_msg_list,
9643 x_return_status => x_return_status,
9644 x_msg_count => x_msg_count,
9645 x_msg_data => x_msg_data,
9646 p_source_trx_id => p_source_trx_id,
9647 p_source_trx_name => p_source_trx_name );
9648
9649 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9650 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9651 'Return Status' || x_return_status);
9652 END IF;
9653
9654 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9655 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9656 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9657 RAISE OKL_API.G_EXCEPTION_ERROR;
9658 END IF;
9659
9660 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9661 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9662 'Calling "copy_tax_trx_data" .. ');
9663 END IF;
9664
9665 copy_tax_trx_data ( p_api_version => p_api_version,
9666 p_init_msg_list => p_init_msg_list,
9667 x_return_status => x_return_status,
9668 x_msg_count => x_msg_count,
9669 x_msg_data => x_msg_data,
9670 p_trx_id => p_source_trx_id,
9671 p_entity_code => G_TAX_SCH_ENTITY_CODE,
9672 p_event_class_code => G_TAX_SCHEDULE,
9673 p_source_trx_name => p_source_trx_name);
9674
9675
9676 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9677 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax.',
9678 'Return Status' || x_return_status);
9679 END IF;
9680
9681 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9682 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9683 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9684 RAISE OKL_API.G_EXCEPTION_ERROR;
9685 END IF;
9686
9687 END IF; -- Processing for Unbilled streams - End
9688
9689 -----------------Process Unbilled Stream elements - End --------------
9690
9691 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9692 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ','End(-)');
9693 END IF;
9694
9695 EXCEPTION
9696 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9697 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9698 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9699 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
9700 END IF;
9701
9702 IF l_trxrequests_csr%ISOPEN THEN
9703 CLOSE l_trxrequests_csr;
9704 END IF;
9705
9706 IF c_k_unbilled_streams_csr%ISOPEN THEN
9707 CLOSE c_k_unbilled_streams_csr;
9708 END IF;
9709
9710 IF c_k_billed_streams_csr%ISOPEN THEN
9711 CLOSE c_k_billed_streams_csr;
9712 END IF;
9713
9714 IF l_txdarlndtls_csr%ISOPEN THEN
9715 CLOSE l_txdarlndtls_csr;
9716 END IF;
9717
9718 IF l_finassets_csr%ISOPEN THEN
9719 CLOSE l_finassets_csr;
9720 END IF;
9721
9722 IF l_okclines_csr%ISOPEN THEN
9723 CLOSE l_okclines_csr;
9724 END IF;
9725
9726 IF l_kstreamtypes_csr%ISOPEN THEN
9727 CLOSE l_kstreamtypes_csr;
9728 END IF;
9729
9730 IF l_finasset_csr%ISOPEN THEN
9731 CLOSE l_finasset_csr;
9732 END IF;
9733
9734 IF l_invitem_csr%ISOPEN THEN
9735 CLOSE l_invitem_csr;
9736 END IF;
9737
9738 IF l_partyroles_csr%ISOPEN THEN
9739 CLOSE l_partyroles_csr;
9740 END IF;
9741
9742 IF l_povendorsites_csr%ISOPEN THEN
9743 CLOSE l_povendorsites_csr;
9744 END IF;
9745
9746 IF l_get_zx_total_tax%ISOPEN THEN
9747 CLOSE l_get_zx_total_tax;
9748 END IF;
9749
9750 IF l_get_zx_taxable_line_info%ISOPEN THEN
9751 CLOSE l_get_zx_taxable_line_info;
9752 END IF;
9753
9754 IF l_get_zx_tax_lines%ISOPEN THEN
9755 CLOSE l_get_zx_tax_lines;
9756 END IF;
9757
9758 x_return_status := OKL_API.G_RET_STS_ERROR;
9759
9760 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9761 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9762 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9763 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
9764 END IF;
9765
9766 IF l_trxrequests_csr%ISOPEN THEN
9767 CLOSE l_trxrequests_csr;
9768 END IF;
9769
9770 IF c_k_unbilled_streams_csr%ISOPEN THEN
9771 CLOSE c_k_unbilled_streams_csr;
9772 END IF;
9773
9774 IF c_k_billed_streams_csr%ISOPEN THEN
9775 CLOSE c_k_billed_streams_csr;
9776 END IF;
9777
9778 IF l_txdarlndtls_csr%ISOPEN THEN
9779 CLOSE l_txdarlndtls_csr;
9780 END IF;
9781
9782 IF l_finassets_csr%ISOPEN THEN
9783 CLOSE l_finassets_csr;
9784 END IF;
9785
9786 IF l_okclines_csr%ISOPEN THEN
9787 CLOSE l_okclines_csr;
9788 END IF;
9789
9790 IF l_kstreamtypes_csr%ISOPEN THEN
9791 CLOSE l_kstreamtypes_csr;
9792 END IF;
9793
9794 IF l_finasset_csr%ISOPEN THEN
9795 CLOSE l_finasset_csr;
9796 END IF;
9797
9798 IF l_invitem_csr%ISOPEN THEN
9799 CLOSE l_invitem_csr;
9800 END IF;
9801
9802 IF l_partyroles_csr%ISOPEN THEN
9803 CLOSE l_partyroles_csr;
9804 END IF;
9805
9806 IF l_povendorsites_csr%ISOPEN THEN
9807 CLOSE l_povendorsites_csr;
9808 END IF;
9809
9810 IF l_get_zx_total_tax%ISOPEN THEN
9811 CLOSE l_get_zx_total_tax;
9812 END IF;
9813
9814 IF l_get_zx_taxable_line_info%ISOPEN THEN
9815 CLOSE l_get_zx_taxable_line_info;
9816 END IF;
9817
9818 IF l_get_zx_tax_lines%ISOPEN THEN
9819 CLOSE l_get_zx_tax_lines;
9820 END IF;
9821
9822 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9823
9824 WHEN OTHERS THEN
9825 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
9826 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_schedule_tax ',
9827 'EXCEPTION :'||sqlerrm);
9828 END IF;
9829
9830 IF l_trxrequests_csr%ISOPEN THEN
9831 CLOSE l_trxrequests_csr;
9832 END IF;
9833
9834 IF c_k_unbilled_streams_csr%ISOPEN THEN
9835 CLOSE c_k_unbilled_streams_csr;
9836 END IF;
9837
9838 IF c_k_billed_streams_csr%ISOPEN THEN
9839 CLOSE c_k_billed_streams_csr;
9840 END IF;
9841
9842 IF l_txdarlndtls_csr%ISOPEN THEN
9843 CLOSE l_txdarlndtls_csr;
9844 END IF;
9845
9846 IF l_finassets_csr%ISOPEN THEN
9847 CLOSE l_finassets_csr;
9848 END IF;
9849
9850 IF l_okclines_csr%ISOPEN THEN
9851 CLOSE l_okclines_csr;
9852 END IF;
9853
9854 IF l_kstreamtypes_csr%ISOPEN THEN
9855 CLOSE l_kstreamtypes_csr;
9856 END IF;
9857
9858 IF l_finasset_csr%ISOPEN THEN
9859 CLOSE l_finasset_csr;
9860 END IF;
9861
9862 IF l_invitem_csr%ISOPEN THEN
9863 CLOSE l_invitem_csr;
9864 END IF;
9865
9866 IF l_partyroles_csr%ISOPEN THEN
9867 CLOSE l_partyroles_csr;
9868 END IF;
9869
9870 IF l_povendorsites_csr%ISOPEN THEN
9871 CLOSE l_povendorsites_csr;
9872 END IF;
9873
9874 IF l_get_zx_total_tax%ISOPEN THEN
9875 CLOSE l_get_zx_total_tax;
9876 END IF;
9877
9878 IF l_get_zx_taxable_line_info%ISOPEN THEN
9879 CLOSE l_get_zx_taxable_line_info;
9880 END IF;
9881
9882 IF l_get_zx_tax_lines%ISOPEN THEN
9883 CLOSE l_get_zx_tax_lines;
9884 END IF;
9885
9886 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9887 -- unexpected error
9888 OKL_API.set_message(p_app_name => g_app_name,
9889 p_msg_name => g_unexpected_error,
9890 p_token1 => g_sqlcode_token,
9891 p_token1_value => sqlcode,
9892 p_token2 => g_sqlerrm_token,
9893 p_token2_value => sqlerrm);
9894
9895 END process_tax_schedule_tax;
9896
9897 /*========================================================================
9898 | PRIVATE PROCEDURE process_quote_tax
9899 |
9900 | DESCRIPTION
9901 | This procedure is called from calculate_sales_tax procedure to calculate
9902 | invoice tax for Termination / repurchase quote creation/updation/deletion
9903 |
9904 | CALLED FROM calculate_sales_tax()
9905 |
9906 |
9907 | CALLS PROCEDURES/FUNCTIONS
9908 | get_k_hdr_tax_params()
9909 | get_asset_tax_params()
9910 | get_location_party_ids()
9911 | get_ufc_code()
9912 | OKL_TAX_INTERFACE_PVT.calculate_tax()
9913 |
9914 |
9915 | PARAMETERS
9916 | p_source_trx_id -- Source transaction ID
9917 | p_source_trx_name -- Source transaction Name
9918 | p_source_table -- Source table
9919 |
9920 | KNOWN ISSUES
9921 |
9922 | NOTES
9923 |
9924 |
9925 | MODIFICATION HISTORY
9926 | Date Author Description of Changes
9927 | 08-APR-05 SECHAWLA Created
9928 |
9929 *=======================================================================*/
9930 PROCEDURE process_quote_tax(
9931 p_api_version IN NUMBER,
9932 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
9933 x_return_status OUT NOCOPY VARCHAR2,
9934 x_msg_count OUT NOCOPY NUMBER,
9935 x_msg_data OUT NOCOPY VARCHAR2,
9936 p_source_trx_id IN NUMBER,
9937 p_source_trx_name IN VARCHAR2,
9938 p_source_table IN VARCHAR2) IS
9939
9940 ---- Termination/Repurchase Quote Creation -------
9941 --p_source_trx_id ---> okl_trx_quotes_b.id
9942 --p_source_trx_name ---> 'Estimated Billing'
9943 --p_source_table ---> 'OKL_TRX_QUOTES_B'
9944 --------------------------------------------------
9945
9946 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
9947
9948 -- Get quote details
9949 CURSOR l_trxquotes_csr(cp_qte_id IN NUMBER) IS
9950 SELECT khr_id, date_effective_from, early_termination_yn, qtp_code,
9951 legal_entity_id, qrs_code
9952 FROM okl_trx_quotes_b
9953 WHERE id = cp_qte_id;
9954
9955 -- get the previous tax source transaction for this quote
9956 CURSOR l_prevtaxsources_csr(cp_trx_id IN NUMBER) IS
9957 SELECT id
9958 FROM okl_tax_sources
9959 WHERE trx_id = cp_trx_id;
9960
9961 -- get the previous tax trx details
9962 CURSOR l_prevtaxtrxdet_csr(cp_txs_id IN NUMBER) IS
9963 SELECT ID
9964 FROM okl_tax_trx_details
9965 WHERE txs_id = cp_txs_id;
9966
9967 -- get the tax eligible quote lines
9968 CURSOR l_txlquotelines_csr(cp_qte_id IN NUMBER) IS
9969 SELECT txl.id, txl.sty_id, txl.kle_id,
9970 txl.qlt_code, txl.amount, txl.try_id, cle.name
9971 FROM okl_txl_quote_lines_b txl, okc_k_lines_v cle
9972 WHERE qte_id = cp_qte_id
9973 AND qlt_code NOT IN ('AMCFIA', 'AMCTAX', 'AMYOUB', 'AMCSDD')
9974 AND txl.kle_id = cle.id (+);
9975
9976 -- AMYOUB - Outstanding bal : excluding as it is not invoiced So no tax will be calculated on it during acceptance
9977 -- AMCTAX - Tax/VAT : excluding for old quotes. New quotes wil not have this quote line
9978 -- AMCFIA - Used for internal purpose.
9979
9980 --get line name
9981 CURSOR l_okclines_csr(cp_line_id IN NUMBER) IS
9982 SELECT name, lse_id
9983 FROM okc_k_lines_v
9984 WHERE id = cp_line_id;
9985
9986 -- get the inventory item id and inventory item org for a financial asset
9987 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
9988 SELECT cim_model.object1_id1,
9989 cim_model.object1_id2
9990 FROM okc_k_items cim_model,
9991 okc_k_lines_b cleb_model,
9992 okc_line_styles_b lseb_model
9993 WHERE cim_model.cle_id = cleb_model.id
9994 AND cleb_model.cle_id = cp_fin_asset_id
9995 AND lseb_model.id = cleb_model.lse_id
9996 AND lseb_model.lty_code = 'ITEM';
9997
9998 -- Check if tax basis override formula exists
9999 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
10000 SELECT fma_id
10001 FROM okl_tax_basis_override
10002 WHERE try_id = cp_try_id
10003 AND org_id = MO_GLOBAL.get_current_org_id;
10004
10005 -- GET FORMULA NAME
10006 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
10007 SELECT name
10008 FROM okl_formulae_b
10009 WHERE id = cp_fma_id;
10010
10011 TYPE prevtaxsrc_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10012 TYPE prevtaxtrxdet_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10013 TYPE txlquotelines_tbl_type IS TABLE OF l_txlquotelines_csr%ROWTYPE INDEX BY BINARY_INTEGER;
10014
10015 l_qte_khr_id NUMBER;
10016 l_qte_dt_eff_from DATE;
10017
10018 l_prevtaxsrc_tbl prevtaxsrc_tbl_type;
10019 l_prevtaxtrxdet_tbl prevtaxtrxdet_tbl_type;
10020 l_txlquotelines_tbl txlquotelines_tbl_type;
10021 l_tax_sources_tbl tax_sources_tbl_type;
10022 lp_tax_src_params_rec tax_src_params_rec_type;
10023 lx_line_params_tbl line_params_tbl_type;
10024 lx_tax_sources_tbl tax_sources_tbl_type;
10025 lp_hdr_params_rec hdr_params_rec_type;
10026
10027 l_fetch_size NUMBER := 10000;
10028 i NUMBER;
10029 j NUMBER;
10030 k NUMBER;
10031
10032 l_cust_acct_id NUMBER;
10033 l_bill_to_siteuseid NUMBER;
10034 l_currency_code VARCHAR2(15);
10035 l_precision NUMBER;
10036 l_minimum_accountable_unit NUMBER;
10037 l_cust_trx_type_id NUMBER;
10038 l_legal_entity_id NUMBER;
10039
10040 l_qte_prch_opt_det VARCHAR2(450);
10041 l_qte_fin_prod_id_det NUMBER;
10042 l_qte_int_disclosed_det VARCHAR2(30);
10043
10044 l_name VARCHAR2(150);
10045 l_qte_transfer_of_title VARCHAR2(30);
10046 l_qte_sale_lease_back VARCHAR2(30);
10047 l_qte_purchase_of_lease VARCHAR2(30);
10048 l_qte_usage_of_equipment VARCHAR2(450);
10049 l_qte_age_of_equipment NUMBER;
10050 l_qte_vendor_site_id NUMBER;
10051 l_inv_item_id NUMBER;
10052 l_inv_item_org_id NUMBER;
10053 l_taxation_country VARCHAR2(2);
10054
10055 lx_bill_to_party_site_id NUMBER;
10056 lx_bill_to_location_id NUMBER;
10057 lx_bill_to_party_id NUMBER;
10058 lx_bill_to_siteuseid NUMBER;
10059 lx_ship_to_party_site_id NUMBER;
10060 lx_ship_to_location_id NUMBER;
10061 lx_ship_to_party_id NUMBER;
10062 lx_ship_to_siteuseid NUMBER;
10063 lx_tbc_code VARCHAR2(30);
10064 l_ledger_id NUMBER;
10065 l_lse_id NUMBER;
10066
10067 l_taxable_basis NUMBER;
10068 l_fma_id NUMBER;
10069 l_formula_name VARCHAR2(150);
10070 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
10071 lx_sty_id NUMBER;
10072 l_early_term_yn VARCHAR2(1);
10073 l_qtp_code VARCHAR2(30);
10074 asset_cnt NUMBER;
10075 tax_call_cnt NUMBER;
10076
10077 lx_org_id NUMBER;
10078 lx_book_class_code VARCHAR2(30);
10079 lx_currency_conversion_type VARCHAR2(30);
10080 lx_currency_conversion_rate NUMBER;
10081 lx_currency_conversion_date DATE;
10082 lx_contract_start_date DATE;
10083
10084 lx_cust_acct_id NUMBER;
10085 lx_currency_code VARCHAR2(15);
10086 lx_precision NUMBER;
10087 lx_minimum_accountable_unit NUMBER;
10088 lx_cust_trx_type_id NUMBER;
10089
10090 lx_pb_prch_opt_det VARCHAR2(450);
10091 lx_pb_fin_prod_id_det NUMBER;
10092 lx_pb_int_disclosed_det VARCHAR2(30);
10093
10094 l_qrs_code VARCHAR2(30);
10095
10096 BEGIN
10097
10098 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10099 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax','Begin(+)');
10100 END IF;
10101
10102 --Print Input Variables
10103 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10104 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10105 'p_init_msg_list :'||p_init_msg_list);
10106 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10107 'p_source_trx_id :'||p_source_trx_id);
10108 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10109 'p_source_trx_name :'||p_source_trx_name);
10110 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10111 'p_source_table :'||p_source_table);
10112 END IF;
10113
10114 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10115
10116 -- Validate soure trx id
10117 OPEN l_trxquotes_csr(p_source_trx_id);
10118 FETCH l_trxquotes_csr INTO l_qte_khr_id, l_qte_dt_eff_from,
10119 l_early_term_yn, l_qtp_code, l_legal_entity_id,
10120 l_qrs_code;
10121 IF l_trxquotes_csr%NOTFOUND THEN
10122 -- source trx id is invalid
10123 OKC_API.set_message( p_app_name => 'OKC',
10124 p_msg_name => G_INVALID_VALUE,
10125 p_token1 => G_COL_NAME_TOKEN,
10126 p_token1_value => 'SOURCE_TRX_ID');
10127 RAISE OKL_API.G_EXCEPTION_ERROR;
10128 END IF;
10129 CLOSE l_trxquotes_csr;
10130
10131 --Check if tax source transactions already exist for this quote. If so, delete the previous tax transcations and
10132 --recalculate tax
10133 OPEN l_prevtaxsources_csr(p_source_trx_id);
10134 LOOP
10135 l_prevtaxsrc_tbl.DELETE;
10136 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsrc_tbl LIMIT l_fetch_size;
10137 IF l_prevtaxsrc_tbl.COUNT > 0 THEN
10138
10139 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10140 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10141 'Deleteing prev tax source transactions for this quote ');
10142 END IF;
10143
10144 i := 0;
10145 l_prevtaxtrxdet_tbl.DELETE;
10146 FOR k IN l_prevtaxsrc_tbl.FIRST .. l_prevtaxsrc_tbl.LAST LOOP
10147 FOR l_prevtaxtrxdet_rec IN l_prevtaxtrxdet_csr(l_prevtaxsrc_tbl(k)) LOOP
10148 i := i + 1;
10149 l_prevtaxtrxdet_tbl(i):= l_prevtaxtrxdet_rec.id;
10150
10151 END LOOP;
10152 END LOOP;
10153
10154 -- delete from both the tables.
10155 BEGIN
10156 IF l_prevtaxtrxdet_tbl.COUNT > 0 THEN
10157 FORALL i IN l_prevtaxtrxdet_tbl.FIRST..l_prevtaxtrxdet_tbl.LAST
10158 DELETE FROM OKL_TAX_TRX_DETAILS WHERE id = l_prevtaxtrxdet_tbl(i);
10159 END IF;
10160 EXCEPTION
10161 WHEN OTHERS THEN
10162 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10163 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10164 OKL_API.set_message(
10165 p_app_name => 'OKL',
10166 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
10167 p_token1 => 'TABLE_NAME',
10168 p_token1_value => 'OKL_TAX_TRX_DETAILS',
10169 p_token2 => 'ERROR_CODE',
10170 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10171 p_token3 => 'ITERATION',
10172 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10173 END LOOP;
10174 RAISE OKL_API.G_EXCEPTION_ERROR;
10175 END IF;
10176 END;
10177
10178 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10179 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10180 'Deleted from okl_tax_trx_details... ');
10181 END IF;
10182
10183 BEGIN
10184 FORALL i IN l_prevtaxsrc_tbl.FIRST..l_prevtaxsrc_tbl.LAST
10185 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prevtaxsrc_tbl(i);
10186 EXCEPTION
10187 WHEN OTHERS THEN
10188 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10189 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10190 OKL_API.set_message(
10191 p_app_name => 'OKL',
10192 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
10193 p_token1 => 'TABLE_NAME',
10194 p_token1_value => 'OKL_TAX_SOURCES',
10195 p_token2 => 'ERROR_CODE',
10196 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10197 p_token3 => 'ITERATION',
10198 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10199 END LOOP;
10200 RAISE OKL_API.G_EXCEPTION_ERROR;
10201 END IF;
10202 END;
10203
10204 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10205 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10206 'Deleted from okl_tax_sources... ');
10207 END IF;
10208 END IF;
10209
10210 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
10211 END LOOP;
10212 CLOSE l_prevtaxsources_csr;
10213
10214 -- Get contract header info
10215 get_k_hdr_tax_params(
10216 p_api_version => p_api_version,
10217 p_init_msg_list => p_init_msg_list,
10218 x_return_status => x_return_status,
10219 x_msg_count => x_msg_count,
10220 x_msg_data => x_msg_data,
10221 p_khr_id => l_qte_khr_id,
10222 p_source_trx_name => p_source_trx_name,
10223 p_source_table => p_source_table,
10224 p_qtp_code => l_qtp_code,
10225 p_early_term_yn => l_early_term_yn,
10226 x_cust_acct_id => lx_cust_acct_id,
10227 x_bill_to_siteuseid => lx_bill_to_siteuseid,
10228 x_currency_code => lx_currency_code,
10229 x_cust_trx_type_id => lx_cust_trx_type_id,
10230 x_precision => lx_precision,
10231 x_minimum_accountable_unit => lx_minimum_accountable_unit,
10232 x_prch_opt_det => lx_pb_prch_opt_det,
10233 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
10234 x_int_disclosed_det => lx_pb_int_disclosed_det,
10235 x_org_id => lx_org_id,
10236 x_book_class_code => lx_book_class_code,
10237 x_bill_to_party_site_id => lx_bill_to_party_site_id,
10238 x_bill_to_party_id => lx_bill_to_party_id,
10239 x_bill_to_location_id => lx_bill_to_location_id,
10240 x_currency_conversion_type => lx_currency_conversion_type,
10241 x_currency_conversion_rate => lx_currency_conversion_rate,
10242 x_currency_conversion_date => lx_currency_conversion_date,
10243 x_contract_start_date => lx_contract_start_date);
10244
10245 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10246 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10247 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10248 RAISE OKL_API.G_EXCEPTION_ERROR;
10249 END IF;
10250
10251 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10252 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10253 'l_cust_acct_id '||lx_cust_acct_id );
10254 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10255 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
10256 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10257 'lx_currency_code '||lx_currency_code );
10258 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10259 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
10260 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10261 'lx_precision '||lx_precision );
10262 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10263 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
10264 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10265 'lx_pb_prch_opt_det '||lx_pb_prch_opt_det );
10266 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10267 'lx_pb_fin_prod_id_det '||lx_pb_fin_prod_id_det );
10268 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10269 'lx_pb_int_disclosed_det '||lx_pb_int_disclosed_det );
10270 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10271 'lx_org_id '||lx_org_id );
10272 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10273 'lx_book_class_code '||lx_book_class_code );
10274 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10275 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
10276 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10277 'lx_bill_to_party_id '||lx_bill_to_party_id );
10278 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10279 'lx_bill_to_location_id '||lx_bill_to_location_id );
10280 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10281 'lx_currency_conversion_type '||lx_currency_conversion_type );
10282 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10283 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
10284 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10285 'lx_currency_conversion_date '||lx_currency_conversion_date );
10286 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10287 'lx_contract_start_date '||lx_contract_start_date );
10288 END IF;
10289
10290 -- Fetch the Ledger info
10291 l_ledger_id := okl_accounting_util.get_set_of_books_id;
10292
10293 -- Fetch the Tax country
10294 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
10295 x_msg_count => x_msg_count,
10296 x_msg_data => x_msg_data,
10297 p_legal_entity_id => l_legal_entity_id);
10298 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10299 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10300 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10301 RAISE OKL_API.G_EXCEPTION_ERROR;
10302 END IF;
10303
10304 tax_call_cnt := 1;
10305 OPEN l_txlquotelines_csr(p_source_trx_id);
10306 LOOP
10307 l_txlquotelines_tbl.DELETE;
10308 l_tax_sources_tbl.DELETE;
10309 FETCH l_txlquotelines_csr BULK COLLECT INTO l_txlquotelines_tbl LIMIT l_fetch_size;
10310
10311 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10312 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10313 'l_txlquotelines_tbl.COUNT '||l_txlquotelines_tbl.COUNT);
10314 END IF;
10315
10316 IF l_txlquotelines_tbl.COUNT > 0 THEN
10317 FOR k IN l_txlquotelines_tbl.FIRST .. l_txlquotelines_tbl.LAST LOOP
10318
10319 IF l_txlquotelines_tbl(k).kle_id IS NOT NULL THEN -- asset level quote line
10320
10321 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10322 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10323 'asset level quote line ');
10324 END IF;
10325
10326 OPEN l_okclines_csr(l_txlquotelines_tbl(k).kle_id);
10327 FETCH l_okclines_csr INTO l_name, l_lse_id;
10328 CLOSE l_okclines_csr;
10329
10330 IF (l_lse_id = 33) THEN
10331 -- Get the financial asset level determinants
10332 get_asset_tax_params(
10333 p_api_version => p_api_version,
10334 p_init_msg_list => OKC_API.G_FALSE,
10335 x_return_status => x_return_status,
10336 x_msg_count => x_msg_count,
10337 x_msg_data => x_msg_data,
10338 p_khr_id => l_qte_khr_id,
10339 p_kle_id => l_txlquotelines_tbl(k).kle_id,
10340 p_source_trx_name => p_source_trx_name,
10341 p_source_table => p_source_table,
10342 p_qtp_code => l_qtp_code,
10343 x_transfer_of_title => l_qte_transfer_of_title,
10344 x_sale_lease_back => l_qte_sale_lease_back,
10345 x_purchase_of_lease => l_qte_purchase_of_lease,
10346 x_usage_of_equipment => l_qte_usage_of_equipment,
10347 x_age_of_equipment => l_qte_age_of_equipment,
10348 x_vendor_site_id => l_qte_vendor_site_id);
10349
10350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10353 RAISE OKL_API.G_EXCEPTION_ERROR;
10354 END IF;
10355
10356 -- Equipment Type(inventory item id)
10357 -- get the inventory item id
10358 OPEN l_invitem_csr(l_txlquotelines_tbl(k).kle_id);
10359 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
10360 IF l_invitem_csr%NOTFOUND THEN
10361 OKL_API.set_message(
10362 p_app_name => 'OKL',
10363 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
10364 p_token1 => 'ASSET_NUMBER',
10365 p_token1_value => l_name);
10366
10367 RAISE OKL_API.G_EXCEPTION_ERROR;
10368 END IF;
10369 CLOSE l_invitem_csr;
10370
10371 IF l_qtp_code LIKE 'TER%' THEN -- Ship to Location is not applicable for repurchase quote
10372 -- Get the ship_to and _bill_to identifiers
10373 get_location_party_ids(
10374 p_api_version => p_api_version,
10375 p_init_msg_list => OKC_API.G_FALSE,
10376 x_return_status => x_return_status,
10377 x_msg_count => x_msg_count,
10378 x_msg_data => x_msg_data,
10379 p_cust_acct_id => lx_cust_acct_id,
10380 p_fin_asset_id => l_txlquotelines_tbl(k).kle_id,
10381 p_khr_id => l_qte_khr_id,
10382 x_bill_to_party_site_id => lx_bill_to_party_site_id,
10383 x_bill_to_location_id => lx_bill_to_location_id,
10384 x_bill_to_party_id => lx_bill_to_party_id,
10385 x_bill_to_site_use_id => lx_bill_to_siteuseid,
10386 x_ship_to_party_site_id => lx_ship_to_party_site_id,
10387 x_ship_to_location_id => lx_ship_to_location_id,
10388 x_ship_to_party_id => lx_ship_to_party_id,
10389 x_ship_to_site_use_id => lx_ship_to_siteuseid);
10390
10391 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10392 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10393 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10394 RAISE OKL_API.G_EXCEPTION_ERROR;
10395 END IF;
10396 END IF;
10397
10398 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10399 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10400 'l_name '||l_name);
10401 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10402 'l_qte_khr_id '||l_qte_khr_id);
10403 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10404 'l_txlquotelines_tbl(k).kle_id '||l_txlquotelines_tbl(k).kle_id);
10405 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10406 'l_qte_transfer_of_title '||l_qte_transfer_of_title);
10407 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10408 'l_qte_sale_lease_back '||l_qte_sale_lease_back);
10409 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10410 'l_qte_purchase_of_lease '||l_qte_purchase_of_lease);
10411 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10412 'l_qte_usage_of_equipment '||l_qte_usage_of_equipment);
10413 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10414 'l_qte_age_of_equipment '||l_qte_age_of_equipment);
10415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10416 'l_qte_vendor_site_id '||l_qte_vendor_site_id);
10417 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10418 'l_inv_item_id '||l_inv_item_id);
10419 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10420 'l_inv_item_org_id '||l_inv_item_org_id);
10421 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10422 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
10423 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10424 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
10425 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10426 'lx_ship_to_location_id '||lx_ship_to_location_id );
10427 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10428 'lx_ship_to_party_id '||lx_ship_to_party_id );
10429 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10430 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
10431 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10432 'lx_bill_to_location_id '||lx_bill_to_location_id );
10433 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10434 'lx_bill_to_party_id '||lx_bill_to_party_id );
10435 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10436 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
10437 END IF;
10438 END IF;
10439 END IF; -- if asset level quote line
10440
10441 -- SECHAWLA 17-MAR-06 5022404 : For Billing adjustment quote line, get stream type from quote lines table
10442 IF l_txlquotelines_tbl(k).qlt_code = 'BILL_ADJST' THEN
10443 lx_sty_id := l_txlquotelines_tbl(k).sty_id;
10444 ELSE
10445 OKL_STREAMS_UTIL.get_primary_stream_type( p_khr_id => l_qte_khr_id,
10446 p_primary_sty_purpose => l_txlquotelines_tbl(k).qlt_code,
10447 x_return_status => x_return_status,
10448 x_primary_sty_id => lx_sty_id);
10449
10450 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10451 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10452 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10453 RAISE OKL_API.G_EXCEPTION_ERROR;
10454 END IF;
10455 END IF;
10456
10457 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10458 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10459 'stream type '||lx_sty_id);
10460 END IF;
10461
10462 IF (tax_call_cnt = 1) THEN
10463 -- Check if taxable bais override applies to Estimated Billing transaction
10464 OPEN l_txbasisoverride_csr(l_txlquotelines_tbl(k).try_id);
10465 FETCH l_txbasisoverride_csr INTO l_fma_id;
10466 CLOSE l_txbasisoverride_csr;
10467
10468 IF l_fma_id IS NOT NULL THEN
10469 OPEN l_formulae_csr(l_fma_id);
10470 FETCH l_formulae_csr INTO l_formula_name;
10471 IF l_formulae_csr%NOTFOUND THEN
10472 OKC_API.set_message( p_app_name => 'OKC',
10473 p_msg_name => G_INVALID_VALUE,
10474 p_token1 => G_COL_NAME_TOKEN,
10475 p_token1_value => 'FMA_ID');
10476 RAISE OKL_API.G_EXCEPTION_ERROR;
10477 END IF;
10478 CLOSE l_formulae_csr;
10479
10480 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10481 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10482 'l_formula_name '||l_formula_name);
10483 END IF;
10484 END IF;
10485 END IF;
10486
10487 -- Populate tax sources record -- start
10488 lp_tax_src_params_rec.kle_id := l_txlquotelines_tbl(k).kle_id;
10489
10490 IF (l_lse_id = 33) THEN
10491 lp_tax_src_params_rec.asset_number := l_txlquotelines_tbl(k).name;
10492 END IF;
10493
10494 lp_tax_src_params_rec.line_name := l_txlquotelines_tbl(k).name;
10495
10496 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
10497 lp_tax_src_params_rec.ship_to_party_site_id := lx_ship_to_party_site_id;
10498 lp_tax_src_params_rec.ship_to_party_id := lx_ship_to_party_id;
10499 lp_tax_src_params_rec.ship_to_location_id := lx_ship_to_location_id;
10500
10501 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
10502 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
10503 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
10504 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
10505
10506 lp_tax_src_params_rec.inventory_item_id := l_inv_item_id;
10507 lp_tax_src_params_rec.sty_id := lx_sty_id;
10508
10509 lp_tax_src_params_rec.khr_id := l_qte_khr_id;
10510 lp_tax_src_params_rec.trx_id := p_source_trx_id;
10511 lp_tax_src_params_rec.trx_line_id := l_txlquotelines_tbl(k).id;
10512 lp_tax_src_params_rec.entity_code := G_AM_QUOTES_ENTITY_CODE;
10513 lp_tax_src_params_rec.event_class_code := G_AM_QTE_EVENT_CLASS_CODE;
10514 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
10515 lp_tax_src_params_rec.tax_call_type_code := G_INVOICE_TAX;
10516 lp_tax_src_params_rec.tax_reporting_flag := 'N';
10517 lp_tax_src_params_rec.reported_yn := 'N';
10518 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
10519 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
10520 lp_tax_src_params_rec.line_intended_use := l_qte_usage_of_equipment;
10521 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
10522 lp_tax_src_params_rec.org_id := lx_org_id;
10523 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
10524 lp_tax_src_params_rec.line_amt := l_txlquotelines_tbl(k).amount;
10525 lp_tax_src_params_rec.try_id := l_txlquotelines_tbl(k).try_id;
10526
10527 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
10528 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
10529 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
10530 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
10531 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
10532 lp_tax_src_params_rec.adjusted_doc_number := null;
10533 lp_tax_src_params_rec.adjusted_doc_date := null;
10534 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
10535 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
10536
10537 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
10538 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
10539 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
10540 -- Populate tax sources record -- end
10541
10542 populate_tax_info(
10543 p_api_version => p_api_version,
10544 p_init_msg_list => OKC_API.G_FALSE,
10545 x_return_status => x_return_status,
10546 x_msg_count => x_msg_count,
10547 x_msg_data => x_msg_data,
10548 p_prch_opt_det => lx_pb_prch_opt_det,
10549 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
10550 p_int_disclosed_det => lx_pb_int_disclosed_det,
10551 p_title_trnsfr_code => l_qte_transfer_of_title,
10552 p_sale_lease_back_code => l_qte_sale_lease_back,
10553 p_lease_purchased_code => l_qte_purchase_of_lease,
10554 p_equip_usage_code => l_qte_usage_of_equipment,
10555 p_vendor_site_id => l_qte_vendor_site_id,
10556 p_age_of_equip => l_qte_age_of_equipment,
10557 p_source_trx_name => p_source_trx_name,
10558 p_cust_trx_type_id => lx_cust_trx_type_id,
10559 p_book_class_code => lx_book_class_code,
10560 p_tax_call_cnt => tax_call_cnt,
10561 p_fma_id => l_fma_id,
10562 p_formula_name => l_formula_name,
10563 p_minimum_accountable_unit => lx_minimum_accountable_unit,
10564 p_precision => lx_precision,
10565 p_sales_quote_id => null,
10566 p_event_type_code => G_AM_QTE_CRE_EVT_TYPE_CODE,
10567 p_ledger_id => l_ledger_id,
10568 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
10569 p_tax_src_params_rec => lp_tax_src_params_rec,
10570 p_quote_flag => 'Y',
10571 p_rounding_ship_to_party_id => lx_ship_to_party_id,
10572 p_rounding_bill_to_party_id => lx_bill_to_party_id,
10573 p_line_amt_includes_tax_flag => 'N',
10574 p_term_quote_type_code => l_qtp_code,
10575 p_term_quote_reason_code => l_qrs_code,
10576 px_tax_sources_tbl => lx_tax_sources_tbl,
10577 px_line_params_tbl => lx_line_params_tbl );
10578
10579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10582 RAISE OKL_API.G_EXCEPTION_ERROR;
10583 END IF;
10584
10585 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10586 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10587 'lx_tax_sources_tbl.count '|| lx_tax_sources_tbl.COUNT );
10588 END IF;
10589
10590 tax_call_cnt := tax_call_cnt + 1;
10591
10592 END LOOP;
10593 END IF;
10594 EXIT WHEN l_txlquotelines_csr%NOTFOUND;
10595 END LOOP;
10596 CLOSE l_txlquotelines_csr;
10597
10598 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10599 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10600 'tax_call_cnt '||tax_call_cnt);
10601 END IF;
10602
10603 -- Insert into okl_tax_sources
10604 BEGIN
10605 IF lx_tax_sources_tbl.COUNT > 0 THEN
10606 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
10607 -- SAVE EXCEPTIONS
10608 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
10609 END IF;
10610 EXCEPTION
10611 WHEN OTHERS THEN
10612 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
10613 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
10614 OKL_API.set_message( p_app_name => 'OKL',
10615 p_msg_name => 'OKL_TX_TRX_INS_ERR',
10616 p_token1 => 'TABLE_NAME',
10617 p_token1_value => 'OKL_TAX_SOURCES',
10618 p_token2 => 'ERROR_CODE',
10619 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
10620 p_token3 => 'ITERATION',
10621 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
10622 END LOOP;
10623 RAISE OKL_API.G_EXCEPTION_ERROR;
10624 END IF;
10625 END;
10626 -- Insert into okl_tax_sources end
10627
10628 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10629 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10630 'Insert into okl_tax_sources ');
10631 END IF;
10632
10633 IF lx_line_params_tbl.COUNT > 0 THEN
10634 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10636 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
10637 END IF;
10638
10639 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
10640 lp_hdr_params_rec.trx_id := p_source_trx_id;
10641 lp_hdr_params_rec.internal_organization_id := lx_org_id;
10642 lp_hdr_params_rec.entity_code := G_AM_QUOTES_ENTITY_CODE;
10643 lp_hdr_params_rec.event_class_code := G_AM_QTE_EVENT_CLASS_CODE;
10644 lp_hdr_params_rec.event_type_code := G_AM_QTE_CRE_EVT_TYPE_CODE;
10645 lp_hdr_params_rec.quote_flag := 'Y';
10646
10647 OKL_TAX_INTERFACE_PVT.calculate_tax(
10648 p_api_version => p_api_version,
10649 p_init_msg_list => p_init_msg_list,
10650 x_return_status => x_return_status,
10651 x_msg_count => x_msg_count,
10652 x_msg_data => x_msg_data,
10653 p_hdr_params_rec => lp_hdr_params_rec,
10654 p_line_params_tbl => lx_line_params_tbl);
10655
10656 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10657 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10658 'After tax engine call '||x_return_status);
10659 END IF;
10660
10661 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10662 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10663 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10664 RAISE OKL_API.G_EXCEPTION_ERROR;
10665 END IF;
10666 END IF;
10667
10668 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10669 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10670 'Calling "update_tax_sources_total" .. ');
10671 END IF;
10672
10673 update_tax_sources_total(p_api_version => p_api_version,
10674 p_init_msg_list => p_init_msg_list,
10675 x_return_status => x_return_status,
10676 x_msg_count => x_msg_count,
10677 x_msg_data => x_msg_data,
10678 p_source_trx_id => p_source_trx_id,
10679 p_source_trx_name => p_source_trx_name );
10680
10681 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10682 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10683 'Return Status' || x_return_status);
10684 END IF;
10685
10686 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10687 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10688 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10689 RAISE OKL_API.G_EXCEPTION_ERROR;
10690 END IF;
10691
10692 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10693 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10694 'Calling "copy_tax_trx_data" .. ');
10695 END IF;
10696
10697 copy_tax_trx_data ( p_api_version => p_api_version,
10698 p_init_msg_list => p_init_msg_list,
10699 x_return_status => x_return_status,
10700 x_msg_count => x_msg_count,
10701 x_msg_data => x_msg_data,
10702 p_trx_id => p_source_trx_id,
10703 p_entity_code => G_AM_QUOTES_ENTITY_CODE,
10704 p_event_class_code => G_AM_QTE_EVENT_CLASS_CODE,
10705 p_source_trx_name => p_source_trx_name);
10706
10707
10708 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10709 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax.',
10710 'Return Status' || x_return_status);
10711 END IF;
10712
10713 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10714 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10715 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10716 RAISE OKL_API.G_EXCEPTION_ERROR;
10717 END IF;
10718
10719 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10720 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ','End(-)');
10721 END IF;
10722
10723 EXCEPTION
10724 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10725 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10726 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10727 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
10728 END IF;
10729
10730 IF l_trxquotes_csr%ISOPEN THEN
10731 CLOSE l_trxquotes_csr;
10732 END IF;
10733
10734 IF l_prevtaxsources_csr%ISOPEN THEN
10735 CLOSE l_prevtaxsources_csr;
10736 END IF;
10737
10738 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10739 CLOSE l_prevtaxtrxdet_csr;
10740 END IF;
10741
10742 IF l_txlquotelines_csr%ISOPEN THEN
10743 CLOSE l_txlquotelines_csr;
10744 END IF;
10745
10746 IF l_okclines_csr%ISOPEN THEN
10747 CLOSE l_okclines_csr;
10748 END IF;
10749
10750 IF l_invitem_csr%ISOPEN THEN
10751 CLOSE l_invitem_csr;
10752 END IF;
10753
10754 IF l_txbasisoverride_csr%ISOPEN THEN
10755 CLOSE l_txbasisoverride_csr;
10756 END IF;
10757
10758 IF l_formulae_csr%ISOPEN THEN
10759 CLOSE l_formulae_csr;
10760 END IF;
10761
10762 x_return_status := OKL_API.G_RET_STS_ERROR;
10763 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10764 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10765 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10766 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
10767 END IF;
10768
10769 IF l_trxquotes_csr%ISOPEN THEN
10770 CLOSE l_trxquotes_csr;
10771 END IF;
10772
10773 IF l_prevtaxsources_csr%ISOPEN THEN
10774 CLOSE l_prevtaxsources_csr;
10775 END IF;
10776
10777 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10778 CLOSE l_prevtaxtrxdet_csr;
10779 END IF;
10780
10781 IF l_txlquotelines_csr%ISOPEN THEN
10782 CLOSE l_txlquotelines_csr;
10783 END IF;
10784
10785 IF l_okclines_csr%ISOPEN THEN
10786 CLOSE l_okclines_csr;
10787 END IF;
10788
10789 IF l_invitem_csr%ISOPEN THEN
10790 CLOSE l_invitem_csr;
10791 END IF;
10792
10793 IF l_txbasisoverride_csr%ISOPEN THEN
10794 CLOSE l_txbasisoverride_csr;
10795 END IF;
10796
10797 IF l_formulae_csr%ISOPEN THEN
10798 CLOSE l_formulae_csr;
10799 END IF;
10800
10801 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
10802
10803 WHEN OTHERS THEN
10804 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
10805 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quote_tax ',
10806 'EXCEPTION :'||sqlerrm);
10807 END IF;
10808
10809 IF l_trxquotes_csr%ISOPEN THEN
10810 CLOSE l_trxquotes_csr;
10811 END IF;
10812
10813 IF l_prevtaxsources_csr%ISOPEN THEN
10814 CLOSE l_prevtaxsources_csr;
10815 END IF;
10816
10817 IF l_prevtaxtrxdet_csr%ISOPEN THEN
10818 CLOSE l_prevtaxtrxdet_csr;
10819 END IF;
10820
10821 IF l_txlquotelines_csr%ISOPEN THEN
10822 CLOSE l_txlquotelines_csr;
10823 END IF;
10824
10825 IF l_okclines_csr%ISOPEN THEN
10826 CLOSE l_okclines_csr;
10827 END IF;
10828
10829 IF l_invitem_csr%ISOPEN THEN
10830 CLOSE l_invitem_csr;
10831 END IF;
10832
10833 IF l_txbasisoverride_csr%ISOPEN THEN
10834 CLOSE l_txbasisoverride_csr;
10835 END IF;
10836
10837 IF l_formulae_csr%ISOPEN THEN
10838 CLOSE l_formulae_csr;
10839 END IF;
10840
10841 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
10842 -- unexpected error
10843 OKL_API.set_message(p_app_name => g_app_name,
10844 p_msg_name => g_unexpected_error,
10845 p_token1 => g_sqlcode_token,
10846 p_token1_value => sqlcode,
10847 p_token2 => g_sqlerrm_token,
10848 p_token2_value => sqlerrm);
10849
10850 END process_quote_tax;
10851
10852 /*========================================================================
10853 | PRIVATE PROCEDURE process_asset_loc_tax
10854 |
10855 | DESCRIPTION
10856 | This procedure is called from calculate_sales_tax procedure to calculate
10857 | upfront tax for Asset location Change
10858 |
10859 | CALLED FROM calculate_sales_tax()
10860 |
10861 |
10862 | CALLS PROCEDURES/FUNCTIONS
10863 | OKL_TAX_SOURCES_PUB.update_tax_sources()
10864 | get_k_hdr_tax_params()
10865 | get_asset_tax_params()
10866 | get_location_party_ids()
10867 | get_ufc_code()
10868 | OKL_TAX_INTERFACE_PVT.calculate_tax()
10869 |
10870 |
10871 | PARAMETERS
10872 | p_source_trx_id -- Source transaction ID
10873 | p_source_trx_name -- Source transaction Name
10874 | p_source_table -- Source table
10875 | p_tax_call_type -- Tax call type (Values - 'ESTIMATED'/ 'ACTUAL')
10876 | p_serialized_asset -- Serialized Asset (Values - 'Y'/'N')
10877 | p_request_id -- Id of OKL_trx_Requests
10878 | p_alc_final_call -- Determines if the asset location change final
10879 | call is being made for the serialized asset
10880 | (Values - null/'N'/'Y')
10881 |
10882 | KNOWN ISSUES
10883 |
10884 | NOTES
10885 |
10886 |
10887 | MODIFICATION HISTORY
10888 | Date Author Description of Changes
10889 | 08-APR-05 SECHAWLA Created
10890 |
10891 *=======================================================================*/
10892 PROCEDURE process_asset_loc_tax(
10893 p_api_version IN NUMBER,
10894 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10895 x_return_status OUT NOCOPY VARCHAR2,
10896 x_msg_count OUT NOCOPY NUMBER,
10897 x_msg_data OUT NOCOPY VARCHAR2,
10898 p_source_trx_id IN NUMBER,
10899 p_source_trx_name IN VARCHAR2,
10900 p_source_table IN VARCHAR2,
10901 p_tax_call_type IN VARCHAR2,
10902 p_serialized_asset IN VARCHAR2,
10903 p_request_id IN NUMBER,
10904 p_alc_final_call IN VARCHAR2) IS
10905
10906 -------------Asset Location Change --------------
10907 --p_source_trx_id ---> okl_trx_assets.id
10908 --p_source_trx_name ---> 'Asset Relocation' (changed from Internal Asset Creation to Asset Relocation)
10909 --p_source_table ---> 'OKL_TRX_ASSETS'
10910 --p_tax_call_type ---> Tax call type
10911 --p_serialized_asset ---> Serialized Asset (Y/N)
10912 --p_request_id ---> Id of OKL_trx_Requests
10913 --------------------------------------------------
10914 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
10915
10916 -- validate source trx id
10917 CURSOR l_trxassets_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
10918 SELECT a.try_id, a.date_trans_occurred, a.legal_entity_id
10919 FROM okl_trx_assets a , okl_trx_types_tl b
10920 WHERE a.id = cp_trx_id
10921 AND a.try_id = b.id
10922 AND b.name = cp_trx_type_name
10923 AND language = 'US';
10924
10925 -- get the trx line details
10926 CURSOR l_txlitminsts_csr(cp_id IN NUMBER) IS
10927 SELECT kle_id, -- Id of INST_ITEM line
10928 OBJECT_ID1_NEW, -- ID of okx_party_site_uses_v
10929 DNZ_CLE_ID -- id of FREE_FORM1
10930 FROM okl_txl_itm_insts
10931 WHERE tas_id = cp_id;
10932
10933 -- get the new location id
10934 --asawanka modified for bug # 6612165
10935 CURSOR l_partysiteuses_csr(cp_id1 IN NUMBER) IS
10936 SELECT location_id, party_site_id
10937 FROM okx_party_site_uses_v
10938 WHERE id1 = cp_id1
10939 AND site_use_type = 'INSTALL_AT';
10940
10941 -- get the acive upfront tax sources for this asset
10942 -- k1 > A1 > RENT
10943 -- k1 > A1 > Estimated Property Tax
10944 CURSOR l_taxsources_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
10945 SELECT id, org_id, entity_code, event_class_code
10946 FROM okl_tax_sources
10947 WHERE khr_id = cp_khr_id
10948 AND kle_id = cp_kle_id
10949 AND tax_call_type_code = G_UPFRONT_TAX
10950 AND tax_line_status_code = G_ACTIVE_STATUS
10951 AND application_id = G_OKL_APPLICATION_ID
10952 AND trx_level_type = G_TRX_LEVEL_TYPE
10953 AND adjusted_doc_trx_id IS NULL
10954 AND adjusted_doc_trx_line_id IS NULL;
10955
10956 -- get the contract id
10957 CURSOR l_okcklines_csr(cp_kle_id IN NUMBER) IS
10958 SELECT chr_id, name
10959 FROM okc_k_lines_v
10960 WHERE id = cp_kle_id;
10961
10962 -- get the current, active, billable streams for the asset
10963 CURSOR l_assetstreams_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
10964 SELECT typ.code Stream_Type,
10965 strm.id stream_id,
10966 strm.kle_id line_id,
10967 strm.sty_id stream_type_id
10968 FROM okl_strm_type_b typ,
10969 okl_streams strm
10970 WHERE strm.sty_id = typ.id
10971 AND typ.billable_yn = 'Y'
10972 AND strm.say_code ='CURR'
10973 AND strm.active_yn = 'Y'
10974 AND strm.purpose_code IS NULL
10975 AND strm.khr_id = cp_khr_id
10976 AND strm.kle_id = cp_kle_id;
10977
10978 -- get the total stream amount
10979 CURSOR l_strmelements_csr(cp_stm_id IN NUMBER) IS
10980 SELECT sum(amount)
10981 FROM okl_strm_elements
10982 WHERE stm_id = cp_stm_id;
10983
10984 -- Chaeck if tax basis override formula exists
10985 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
10986 SELECT fma_id
10987 FROM okl_tax_basis_override
10988 WHERE try_id = cp_try_id
10989 AND org_id = MO_GLOBAL.get_current_org_id;
10990
10991 -- get the inventory item id and inventory item org for a financial asset
10992 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
10993 SELECT cim_model.object1_id1,
10994 cim_model.object1_id2
10995 FROM okc_k_items cim_model,
10996 okc_k_lines_b cleb_model,
10997 okc_line_styles_b lseb_model
10998 WHERE cim_model.cle_id = cleb_model.id
10999 AND cleb_model.cle_id = cp_fin_asset_id
11000 AND lseb_model.id = cleb_model.lse_id
11001 AND lseb_model.lty_code = 'ITEM';
11002
11003 -- GET FORMULA NAME
11004 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
11005 SELECT name
11006 FROM okl_formulae_b
11007 WHERE id = cp_fma_id;
11008
11009 CURSOR l_okltaxsources_csr(cp_app_id IN NUMBER, cp_trx_id IN NUMBER) IS
11010 SELECT entity_code, event_class_code
11011 FROM okl_tax_sources
11012 WHERE application_id = cp_app_id
11013 AND trx_id = cp_trx_id
11014 AND trx_level_type = G_TRX_LEVEL_TYPE
11015 AND tax_call_type_code = G_UPFRONT_TAX
11016 AND tax_line_status_code = G_ACTIVE_STATUS
11017 AND entity_code = G_ASSETS_ENTITY_CODE
11018 AND event_class_code = G_ALC_EVENT_CODE
11019 AND ROWNUM = 1;
11020
11021 CURSOR c_get_ast_instances(p_parent_line_id IN NUMBER) IS
11022 SELECT count(*)
11023 FROM okc_k_lines_v okcl,
11024 okc_line_styles_v lse
11025 WHERE okcl.cle_id = p_parent_line_id
11026 AND okcl.lse_id = lse.id
11027 AND lse.lty_code = 'FREE_FORM2';
11028
11029 CURSOR c_get_streams_count(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER) IS
11030 SELECT count(*)
11031 FROM okl_strm_type_b typ,
11032 okl_streams strm
11033 WHERE strm.sty_id = typ.id
11034 AND typ.billable_yn = 'Y'
11035 AND strm.say_code ='CURR'
11036 AND strm.active_yn = 'Y'
11037 AND strm.purpose_code IS NULL
11038 AND strm.khr_id = cp_khr_id
11039 AND strm.kle_id = cp_kle_id;
11040
11041 l_taxsources_rec l_okltaxsources_csr%ROWTYPE;
11042
11043 --asawanka added for bug #6612165
11044 --Cursor to get the ship_to_site_use_id corresponding to the install_location_id of the asset
11045 CURSOR l_get_shiptositeid(cp_cust_acct_id IN NUMBER, cp_inst_loc_id IN NUMBER,cp_loc_id IN NUMBER) IS
11046 SELECT b.site_use_id,
11047 c.party_site_id,
11048 c.party_id,
11049 c.location_id
11050 FROM hz_cust_acct_sites_all a,
11051 hz_cust_site_uses_all b,
11052 hz_party_sites c
11053 WHERE a.CUST_ACCT_SITE_ID = b.CUST_ACCT_SITE_ID
11054 AND b.site_use_code = 'SHIP_TO'
11055 AND a.party_site_id = c.party_site_id
11056 AND a.cust_account_id = cp_cust_acct_id
11057 AND a.org_id = MO_GLOBAL.get_current_org_id
11058 AND c.party_site_id = cp_inst_loc_id
11059 AND c.location_id = cp_loc_id;
11060
11061 SUBTYPE txsv_rec_type IS okl_txs_pvt.txsv_rec_type;
11062
11063 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11064
11065 l_tax_src_tbl tax_src_tbl_type;
11066 lp_tax_src_params_rec tax_src_params_rec_type;
11067 lx_line_params_tbl line_params_tbl_type;
11068 lx_tax_sources_tbl tax_sources_tbl_type;
11069 lp_hdr_params_rec hdr_params_rec_type;
11070
11071 l_alc_trx_type_id_det NUMBER;
11072 l_inst_item_line_id NUMBER;
11073 l_party_site_uses_id1 NUMBER;
11074 l_fin_asset_id NUMBER;
11075 l_new_location_id NUMBER;
11076 --asawanka added for bug# 6612165 start
11077 l_install_location_id NUMBER;
11078 --asawanka added for bug# 6612165 end
11079 l_chr_id NUMBER;
11080 l_name VARCHAR2(150);
11081 l_total_strm_tax NUMBER;
11082 l_total_prev_tax NUMBER;
11083 l_total_curr_tax NUMBER;
11084
11085 lx_cust_acct_id NUMBER;
11086 lx_currency_code VARCHAR2(15);
11087 lx_precision NUMBER;
11088 lx_minimum_accountable_unit NUMBER;
11089 lx_cust_trx_type_id NUMBER;
11090
11091 lx_alc_prch_opt_det VARCHAR2(450);
11092 lx_alc_fin_prod_id_det NUMBER;
11093 lx_alc_int_disclosed_det VARCHAR2(30);
11094
11095 lx_alc_transfer_of_title VARCHAR2(30);
11096 lx_alc_sale_lease_back VARCHAR2(30);
11097 lx_alc_purchase_of_lease VARCHAR2(30);
11098 lx_alc_usage_of_equipment VARCHAR2(450);
11099 lx_alc_age_of_equipment NUMBER;
11100 lx_alc_vendor_site_id NUMBER;
11101
11102 lp_txsv_rec txsv_rec_type;
11103 lp_txsv_rec_emp txsv_rec_type;
11104 lx_txsv_rec txsv_rec_type;
11105
11106 lx_tbc_code VARCHAR2(30);
11107 l_taxable_basis NUMBER;
11108 l_taxable_ser_basis NUMBER;
11109 l_fma_id NUMBER;
11110 l_inv_item_id NUMBER;
11111 l_inv_item_org_id NUMBER;
11112 l_legal_entity_id NUMBER;
11113 l_ledger_id NUMBER;
11114 l_taxation_country VARCHAR2(2);
11115
11116 lx_bill_to_party_site_id NUMBER;
11117 lx_bill_to_location_id NUMBER;
11118 lx_bill_to_party_id NUMBER;
11119 lx_bill_to_siteuseid NUMBER;
11120 lx_ship_to_party_site_id NUMBER;
11121 lx_ship_to_location_id NUMBER;
11122 lx_ship_to_party_id NUMBER;
11123 lx_ship_to_siteuseid NUMBER;
11124
11125 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
11126 l_formula_name VARCHAR2(150);
11127 l_trx_date DATE;
11128 l_tax_source_id NUMBER;
11129 k NUMBER;
11130 j NUMBER;
11131 next_tx_src_cnt NUMBER;
11132 tax_call_cnt NUMBER;
11133
11134 lx_org_id NUMBER;
11135 lx_book_class_code VARCHAR2(30);
11136 l_entity_code VARCHAR2(30);
11137 l_event_class_code VARCHAR2(30);
11138 lx_currency_conversion_type VARCHAR2(30);
11139 lx_currency_conversion_rate NUMBER;
11140 lx_currency_conversion_date DATE;
11141 lx_contract_start_date DATE;
11142 l_org_id NUMBER;
11143 l_asset_inst_count NUMBER;
11144 l_alc_ser_def_code VARCHAR2(1) := 'N';
11145 l_stream_count NUMBER;
11146
11147 BEGIN
11148
11149 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11150 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax','Begin(+)');
11151 END IF;
11152
11153 --Print Input Variables
11154 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11155 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11156 'p_init_msg_list :'||p_init_msg_list);
11157 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11158 'p_source_trx_id :'||p_source_trx_id);
11159 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11160 'p_source_trx_name :'||p_source_trx_name);
11161 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11162 'p_source_table :'||p_source_table);
11163 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11164 'p_tax_call_type :'||p_tax_call_type);
11165 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11166 'p_serialized_asset :'||p_serialized_asset);
11167 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11168 'p_request_id :'||p_request_id);
11169 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11170 'p_alc_final_call :'||p_alc_final_call);
11171 END IF;
11172
11173 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11174
11175 -- validate the source trx id
11176 OPEN l_trxassets_csr(p_source_trx_id, p_source_trx_name);
11177 FETCH l_trxassets_csr INTO l_alc_trx_type_id_det, l_trx_date, l_legal_entity_id;
11178 IF l_trxassets_csr%NOTFOUND THEN
11179 -- source trx id is invalid
11180 OKC_API.set_message( p_app_name => 'OKC',
11181 p_msg_name => G_INVALID_VALUE,
11182 p_token1 => G_COL_NAME_TOKEN,
11183 p_token1_value => 'SOURCE_TRX_ID');
11184 RAISE OKL_API.G_EXCEPTION_ERROR;
11185 END IF;
11186 CLOSE l_trxassets_csr;
11187
11188 IF p_tax_call_type = G_ESTIMATED_CALL_TYPE THEN
11189
11190 -- get trx line details
11191 OPEN l_txlitminsts_csr(p_source_trx_id);
11192 FETCH l_txlitminsts_csr INTO l_inst_item_line_id, l_party_site_uses_id1, l_fin_asset_id;
11193 IF l_txlitminsts_csr%NOTFOUND THEN
11194 OKC_API.set_message( p_app_name => 'OKC',
11195 p_msg_name => G_REQUIRED_VALUE,
11196 p_token1 => G_COL_NAME_TOKEN,
11197 p_token1_value => 'PARTY_SITE_USES_ID1');
11198 RAISE OKL_API.G_EXCEPTION_ERROR;
11199 END IF;
11200
11201 IF l_fin_asset_id IS NULL THEN
11202 OKC_API.set_message( p_app_name => 'OKC',
11203 p_msg_name => G_REQUIRED_VALUE,
11204 p_token1 => G_COL_NAME_TOKEN,
11205 p_token1_value => 'DNZ_CLE_ID');
11206 RAISE OKL_API.G_EXCEPTION_ERROR;
11207 END IF;
11208 CLOSE l_txlitminsts_csr;
11209
11210 OPEN l_okcklines_csr(l_fin_asset_id);
11211 FETCH l_okcklines_csr INTO l_chr_id, l_name;
11212 IF l_okcklines_csr%NOTFOUND THEN
11213 OKC_API.set_message( p_app_name => 'OKC',
11214 p_msg_name => G_INVALID_VALUE,
11215 p_token1 => G_COL_NAME_TOKEN,
11216 p_token1_value => 'DNZ_CLE_ID');
11217 RAISE OKL_API.G_EXCEPTION_ERROR;
11218 END IF;
11219 CLOSE l_okcklines_csr;
11220
11221 -- get the new location id
11222 OPEN l_partysiteuses_csr(l_party_site_uses_id1);
11223 FETCH l_partysiteuses_csr INTO l_new_location_id,l_install_location_id;
11224 IF l_partysiteuses_csr%NOTFOUND THEN
11225 OKC_API.set_message( p_app_name => 'OKC',
11226 p_msg_name => G_REQUIRED_VALUE,
11227 p_token1 => G_COL_NAME_TOKEN,
11228 p_token1_value => 'LOCATION_ID');
11229 RAISE OKL_API.G_EXCEPTION_ERROR;
11230 END IF;
11231 CLOSE l_partysiteuses_csr;
11232
11233 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11234 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11235 'l_inst_item_line_id'||l_inst_item_line_id);
11236 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11237 'l_party_site_uses_id1'||l_party_site_uses_id1);
11238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11239 'l_fin_asset_id'||l_fin_asset_id);
11240 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11241 'l_chr_id'||l_chr_id);
11242 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11243 'l_name'||l_name);
11244 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11245 'l_new_location_id'||l_new_location_id);
11246 END IF;
11247
11248 -- Populate tax sources id to deactivate existing upfront tax lines for this asset.
11249 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
11250 k := 1;
11251 l_tax_src_tbl.DELETE;
11252 -- This cursor will fetch only a few rows
11253 FOR l_taxsources_rec IN l_taxsources_csr(l_chr_id, l_fin_asset_id) LOOP
11254 -- K1 > A1 > RENT
11255 -- K2 > A1 > Estimated Property Tax
11256
11257 -- Store the tax source IDs in a table
11258 l_tax_src_tbl(k) := l_taxsources_rec.ID;
11259
11260 IF (k = 1) THEN
11261 l_org_id := l_taxsources_rec.org_id;
11262 l_entity_code := l_taxsources_rec.entity_code;
11263 l_event_class_code := l_taxsources_rec.event_class_code;
11264 END IF;
11265
11266 k := k + 1;
11267 END LOOP;
11268
11269 -- Inactivate the previous ACTIVE upfront tax lines - begin
11270 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11271 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11272 'l_tax_src_tbl.COUNT '||l_tax_src_tbl.COUNT );
11273 END IF;
11274
11275 IF l_tax_src_tbl.COUNT > 0 THEN
11276 BEGIN
11277 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
11278 UPDATE OKL_TAX_SOURCES SET TAX_LINE_STATUS_CODE = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
11279
11280 EXCEPTION
11281 WHEN OTHERS THEN
11282 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
11283 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
11284 OKL_API.set_message(
11285 p_app_name => 'OKL',
11286 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
11287 p_token1 => 'TABLE_NAME',
11288 p_token1_value => 'OKL_TAX_SOURCES',
11289 p_token2 => 'ERROR_CODE',
11290 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
11291 p_token3 => 'ITERATION',
11292 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
11293 END LOOP;
11294 RAISE OKL_API.G_EXCEPTION_ERROR;
11295 END IF;
11296 END;
11297
11298 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11299 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11300 'Inactivated the previous active upfront tax lines ' );
11301 END IF;
11302 END IF;
11303 -- Inactivate the previous ACTIVE upfront tax lines - end
11304
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 'Updated existing tax lines status to INACIVE');
11308 END IF;
11309
11310 END IF; -- Processing will be only once for the serialized asset
11311
11312 -- Get contract header info
11313 get_k_hdr_tax_params(
11314 p_api_version => p_api_version,
11315 p_init_msg_list => p_init_msg_list,
11316 x_return_status => x_return_status,
11317 x_msg_count => x_msg_count,
11318 x_msg_data => x_msg_data,
11319 p_khr_id => l_chr_id,
11320 p_source_trx_name => p_source_trx_name,
11321 p_source_table => p_source_table,
11322 x_cust_acct_id => lx_cust_acct_id,
11323 x_bill_to_siteuseid => lx_bill_to_siteuseid,
11324 x_currency_code => lx_currency_code,
11325 x_cust_trx_type_id => lx_cust_trx_type_id,
11326 x_precision => lx_precision,
11327 x_minimum_accountable_unit => lx_minimum_accountable_unit,
11328 x_prch_opt_det => lx_alc_prch_opt_det,
11329 x_fin_prod_id_det => lx_alc_fin_prod_id_det,
11330 x_int_disclosed_det => lx_alc_int_disclosed_det,
11331 x_org_id => lx_org_id,
11332 x_book_class_code => lx_book_class_code,
11333 x_bill_to_party_site_id => lx_bill_to_party_site_id,
11334 x_bill_to_party_id => lx_bill_to_party_id,
11335 x_bill_to_location_id => lx_bill_to_location_id,
11336 x_currency_conversion_type => lx_currency_conversion_type,
11337 x_currency_conversion_rate => lx_currency_conversion_rate,
11338 x_currency_conversion_date => lx_currency_conversion_date,
11339 x_contract_start_date => lx_contract_start_date);
11340
11341 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11342 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11343 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11344 RAISE OKL_API.G_EXCEPTION_ERROR;
11345 END IF;
11346
11347 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11348 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11349 'lx_cust_acct_id '||lx_cust_acct_id );
11350 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11351 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
11352 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11353 'lx_currency_code '||lx_currency_code );
11354 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11355 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
11356 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11357 'lx_precision '||lx_precision );
11358 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11359 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
11360 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11361 'lx_alc_prch_opt_det '||lx_alc_prch_opt_det );
11362 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11363 'lx_alc_fin_prod_id_det '||lx_alc_fin_prod_id_det );
11364 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11365 'lx_alc_int_disclosed_det '||lx_alc_int_disclosed_det );
11366 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11367 'lx_org_id '||lx_org_id );
11368 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11369 'lx_book_class_code '||lx_book_class_code );
11370 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11371 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
11372 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11373 'lx_bill_to_party_id '||lx_bill_to_party_id );
11374 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11375 'lx_bill_to_location_id '||lx_bill_to_location_id );
11376 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11377 'lx_currency_conversion_type '||lx_currency_conversion_type );
11378 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11379 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
11380 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11381 'lx_currency_conversion_date '||lx_currency_conversion_date );
11382 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11383 'lx_contract_start_date '||lx_contract_start_date );
11384 END IF;
11385
11386 -- get the asset level determinants
11387 get_asset_tax_params(
11388 p_api_version => p_api_version,
11389 p_init_msg_list => OKC_API.G_FALSE,
11390 x_return_status => x_return_status,
11391 x_msg_count => x_msg_count,
11392 x_msg_data => x_msg_data,
11393 p_khr_id => l_chr_id,
11394 p_kle_id => l_fin_asset_id,
11395 p_source_trx_name => p_source_trx_name,
11396 p_source_table => p_source_table,
11397 x_transfer_of_title => lx_alc_transfer_of_title,
11398 x_sale_lease_back => lx_alc_sale_lease_back,
11399 x_purchase_of_lease => lx_alc_purchase_of_lease,
11400 x_usage_of_equipment => lx_alc_usage_of_equipment,
11401 x_age_of_equipment => lx_alc_age_of_equipment,
11402 x_vendor_site_id => lx_alc_vendor_site_id);
11403
11404 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11405 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11406 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11407 RAISE OKL_API.G_EXCEPTION_ERROR;
11408 END IF;
11409
11410 -- Equipment Type(inventory item id)
11411 -- get the inventory item id
11412 OPEN l_invitem_csr(l_fin_asset_id);
11413 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
11414 IF l_invitem_csr%NOTFOUND THEN
11415 OKL_API.set_message( p_app_name => 'OKL',
11416 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
11417 p_token1 => 'ASSET_NUMBER',
11418 p_token1_value => l_name);
11419 RAISE OKL_API.G_EXCEPTION_ERROR;
11420 END IF;
11421 CLOSE l_invitem_csr;
11422
11423 -- get the Equipment Locationn (IB Loc)
11424 get_location_party_ids( p_api_version => p_api_version,
11425 p_init_msg_list => OKC_API.G_FALSE,
11426 x_return_status => x_return_status,
11427 x_msg_count => x_msg_count,
11428 x_msg_data => x_msg_data,
11429 p_cust_acct_id => lx_cust_acct_id,
11430 p_fin_asset_id => l_fin_asset_id,
11431 p_khr_id => l_chr_id,
11432 x_bill_to_party_site_id => lx_bill_to_party_site_id,
11433 x_bill_to_location_id => lx_bill_to_location_id,
11434 x_bill_to_party_id => lx_bill_to_party_id,
11435 x_bill_to_site_use_id => lx_bill_to_siteuseid,
11436 x_ship_to_party_site_id => lx_ship_to_party_site_id,
11437 x_ship_to_location_id => lx_ship_to_location_id,
11438 x_ship_to_party_id => lx_ship_to_party_id,
11439 x_ship_to_site_use_id => lx_ship_to_siteuseid);
11440
11441 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN -- will never be setting this to unexpecetd inside get_ufc_code ?
11442 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11443 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11444 RAISE OKL_API.G_EXCEPTION_ERROR;
11445 END IF;
11446
11447 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11448 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11449 'l_fin_asset_id '||l_fin_asset_id);
11450 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11451 'lx_alc_transfer_of_title '||lx_alc_transfer_of_title);
11452 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11453 'lx_alc_sale_lease_back '||lx_alc_sale_lease_back);
11454 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11455 'lx_alc_purchase_of_lease '||lx_alc_purchase_of_lease);
11456 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11457 'lx_alc_usage_of_equipment '||lx_alc_usage_of_equipment);
11458 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11459 'lx_alc_age_of_equipment '||lx_alc_age_of_equipment);
11460 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11461 'lx_alc_vendor_site_id '||lx_alc_vendor_site_id);
11462 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11463 'l_inv_item_id '||l_inv_item_id);
11464 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11465 'l_inv_item_org_id '||l_inv_item_org_id);
11466 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11467 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
11468 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11469 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
11470 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11471 'lx_ship_to_location_id '||lx_ship_to_location_id );
11472 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11473 'lx_ship_to_party_id '||lx_ship_to_party_id );
11474 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11475 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
11476 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11477 'lx_bill_to_location_id '||lx_bill_to_location_id );
11478 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11479 'lx_bill_to_party_id '||lx_bill_to_party_id );
11480 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11481 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
11482 END IF;
11483
11484 --asaawnka added for bug #6612165 start
11485 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11486 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11487 'lx_cust_acct_id '||lx_cust_acct_id);
11488 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11489 'l_install_location_id '||l_install_location_id);
11490 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11491 'l_new_location_id '||l_new_location_id);
11492 END IF;
11493 --get the ship to addresses for the new location specified during asset location change
11494 OPEN l_get_shiptositeid(lx_cust_acct_id,l_install_location_id,l_new_location_id);
11495 FETCH l_get_shiptositeid INTO lx_ship_to_siteuseid, lx_ship_to_party_site_id,
11496 lx_ship_to_party_id, lx_ship_to_location_id;
11497 CLOSE l_get_shiptositeid;
11498
11499 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11500 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11501 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid);
11502 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11503 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
11504 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11505 'lx_ship_to_location_id '||lx_ship_to_location_id );
11506 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11507 'lx_ship_to_party_id '||lx_ship_to_party_id );
11508 END IF;
11509 --asaawnka added for bug #6612165 end
11510
11511
11512 -- Check if taxable bais override applies to Asset location Change transaction
11513 OPEN l_txbasisoverride_csr(l_alc_trx_type_id_det);
11514 FETCH l_txbasisoverride_csr INTO l_fma_id;
11515 CLOSE l_txbasisoverride_csr;
11516
11517 IF l_fma_id IS NOT NULL THEN
11518
11519 OPEN l_formulae_csr(l_fma_id);
11520 FETCH l_formulae_csr INTO l_formula_name;
11521 IF l_formulae_csr%NOTFOUND THEN
11522 OKC_API.set_message( p_app_name => 'OKC',
11523 p_msg_name => G_INVALID_VALUE,
11524 p_token1 => G_COL_NAME_TOKEN,
11525 p_token1_value => 'FMA_ID');
11526 RAISE OKL_API.G_EXCEPTION_ERROR;
11527 END IF;
11528 CLOSE l_formulae_csr;
11529
11530 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11531 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11532 'l_formula_name '||l_formula_name);
11533 END IF;
11534 END IF;
11535
11536 -- Fetch the Ledger info
11537 l_ledger_id := okl_accounting_util.get_set_of_books_id;
11538
11539 -- Fetch the Tax country
11540 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
11541 x_msg_count => x_msg_count,
11542 x_msg_data => x_msg_data,
11543 p_legal_entity_id => l_legal_entity_id);
11544 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11545 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11546 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11547 RAISE OKL_API.G_EXCEPTION_ERROR;
11548 END IF;
11549
11550 OPEN c_get_streams_count(l_chr_id, l_fin_asset_id);
11551 FETCH c_get_streams_count INTO l_stream_count;
11552 CLOSE c_get_streams_count;
11553
11554
11555 -- If the asset is serialized, divide the taxable amount by number of instances count
11556 -- Fetch the number of instances of asset
11557 OPEN c_get_ast_instances(l_fin_asset_id);
11558 FETCH c_get_ast_instances INTO l_asset_inst_count;
11559 CLOSE c_get_ast_instances;
11560
11561 -- 'l_alc_ser_def_code' value is used in specific to derive the TBC, PC, UFC codes only once
11562 -- for serialized asset in order to prevent the same processing for all serial numbers
11563 IF (p_serialized_asset = 'Y' AND l_stream_count > 1) THEN
11564 l_alc_ser_def_code := 'A'; -- If there are multiple stream types, fetch the codes always
11565 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
11566 l_alc_ser_def_code := 'F'; -- If asset is serialized and asset is having only 1 unit , then fetch it
11567 ELSIF (p_serialized_asset = 'Y' AND p_alc_final_call IS NULL) THEN
11568 l_alc_ser_def_code := 'F'; -- If the asset is serialized and having multiple units, fetch only first time
11569 ELSIF (p_serialized_asset = 'Y' AND p_alc_final_call IN ('N', 'Y')) THEN
11570 l_alc_ser_def_code := 'N'; -- If the asset is serialized and having multiple units, fetch is already done in
11571 -- previous 'elsif' .. so don't fetch anymore, use the previous fetched values
11572 ELSIF (p_serialized_asset IS NULL OR p_serialized_asset = 'N') THEN
11573 l_alc_ser_def_code := 'A'; -- If the asset is not serialized fetch it
11574 END IF;
11575
11576 tax_call_cnt := 1;
11577
11578 -- This cursor will return only a few rows, typically 1 or 2
11579 -- For Non-Serialized asset
11580 -- A1 > Rent , A1 - Estimated Property tax etc
11581 -- For Serialized asset
11582 -- A1_ser1 > Rent , A1_ser1 - Estimated Property tax ( tax call)
11583 -- A1_ser2 > Rent , A1_ser2 - Estimated Property tax (2 tax call)
11584 -- A1_ser3 > Rent , A1_ser3 - Estimated Property tax (3 tax call)
11585 FOR l_assetstreams_rec IN l_assetstreams_csr(l_chr_id, l_fin_asset_id) LOOP
11586
11587 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11588 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11589 'Processing current payment '||l_assetstreams_rec.stream_type_id);
11590 END IF;
11591
11592 -- Get the default taxable basis amount
11593 OPEN l_strmelements_csr(l_assetstreams_rec.stream_id);
11594 FETCH l_strmelements_csr INTO l_taxable_basis;
11595 CLOSE l_strmelements_csr;
11596
11597 IF (p_serialized_asset = 'Y' AND l_asset_inst_count IS NOT NULL) THEN
11598 l_taxable_ser_basis := l_taxable_basis / l_asset_inst_count;
11599 END IF;
11600
11601 -- Populate tax sources record -- start
11602 lp_tax_src_params_rec.kle_id := l_fin_asset_id;
11603 lp_tax_src_params_rec.asset_number := l_name;
11604 lp_tax_src_params_rec.line_name := l_name;
11605
11606 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := lx_ship_to_siteuseid;
11607 lp_tax_src_params_rec.ship_to_party_site_id := lx_ship_to_party_site_id;
11608 lp_tax_src_params_rec.ship_to_party_id := lx_ship_to_party_id;
11609 lp_tax_src_params_rec.ship_to_location_id := lx_ship_to_location_id;
11610
11611 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
11612 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
11613 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
11614 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
11615
11616 lp_tax_src_params_rec.inventory_item_id := l_inv_item_id;
11617 lp_tax_src_params_rec.sty_id := l_assetstreams_rec.stream_type_id;
11618
11619 lp_tax_src_params_rec.khr_id := l_chr_id;
11620 lp_tax_src_params_rec.trx_id := p_source_trx_id;
11621 lp_tax_src_params_rec.entity_code := G_ASSETS_ENTITY_CODE;
11622 lp_tax_src_params_rec.event_class_code := G_ALC_EVENT_CODE;
11623 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
11624 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
11625 lp_tax_src_params_rec.tax_reporting_flag := 'N';
11626 lp_tax_src_params_rec.reported_yn := 'N';
11627 lp_tax_src_params_rec.trx_date := l_trx_date;
11628 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
11629 lp_tax_src_params_rec.line_intended_use := lx_alc_usage_of_equipment;
11630 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
11631 lp_tax_src_params_rec.org_id := lx_org_id;
11632 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
11633 lp_tax_src_params_rec.try_id := l_alc_trx_type_id_det;
11634
11635 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
11636 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
11637 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
11638 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
11639 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
11640 lp_tax_src_params_rec.adjusted_doc_number := null;
11641 lp_tax_src_params_rec.adjusted_doc_date := null;
11642
11643 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
11644
11645 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
11646 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
11647 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
11648
11649 IF (p_serialized_asset = 'Y') THEN
11650 lp_tax_src_params_rec.line_amt := l_taxable_ser_basis;
11651 lp_tax_src_params_rec.alc_serialized_total_line_amt := l_taxable_basis;
11652 lp_tax_src_params_rec.tax_line_status_code := G_INACTIVE_STATUS;
11653
11654 IF (p_alc_final_call = 'Y') THEN
11655 -- Indicates tax for last serial number. Also, used to display the
11656 -- HGrid data
11657 -- alc_serialized_yn is set at the stream type level. If A1 is
11658 -- serialized (3 units), with 2 stream types, okl_tax_sources will
11659 -- have 6 rows. Out of these 2 rows (last ones for each atream type)
11660 -- will have alc_serialized_yn set to 'L'
11661 lp_tax_src_params_rec.alc_serialized_yn := 'L';
11662 ELSE
11663 lp_tax_src_params_rec.alc_serialized_yn := p_serialized_asset;
11664 END IF;
11665
11666 ELSE
11667 lp_tax_src_params_rec.line_amt := l_taxable_basis;
11668 lp_tax_src_params_rec.alc_serialized_total_line_amt := l_taxable_basis;
11669 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
11670 END IF;
11671 -- Populate tax sources record -- end
11672
11673 populate_tax_info(
11674 p_api_version => p_api_version,
11675 p_init_msg_list => OKC_API.G_FALSE,
11676 x_return_status => x_return_status,
11677 x_msg_count => x_msg_count,
11678 x_msg_data => x_msg_data,
11679 p_prch_opt_det => lx_alc_prch_opt_det,
11680 p_fin_prod_id_det => lx_alc_fin_prod_id_det,
11681 p_int_disclosed_det => lx_alc_int_disclosed_det,
11682 p_title_trnsfr_code => lx_alc_transfer_of_title,
11683 p_sale_lease_back_code => lx_alc_sale_lease_back,
11684 p_lease_purchased_code => lx_alc_purchase_of_lease,
11685 p_equip_usage_code => lx_alc_usage_of_equipment,
11686 p_vendor_site_id => lx_alc_vendor_site_id,
11687 p_age_of_equip => lx_alc_age_of_equipment,
11688 p_source_trx_name => p_source_trx_name,
11689 p_cust_trx_type_id => lx_cust_trx_type_id,
11690 p_book_class_code => lx_book_class_code,
11691 p_tax_call_cnt => tax_call_cnt,
11692 p_fma_id => l_fma_id,
11693 p_formula_name => l_formula_name,
11694 p_minimum_accountable_unit => lx_minimum_accountable_unit,
11695 p_precision => lx_precision,
11696 p_sales_quote_id => null,
11697 p_event_type_code => G_ALC_CRE_EVENT_CODE,
11698 p_ledger_id => l_ledger_id,
11699 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
11700 p_tax_src_params_rec => lp_tax_src_params_rec,
11701 p_quote_flag => 'N',
11702 p_rounding_ship_to_party_id => lx_ship_to_party_id,
11703 p_rounding_bill_to_party_id => lx_bill_to_party_id,
11704 p_line_amt_includes_tax_flag => 'N',
11705 p_term_quote_type_code => null,
11706 p_term_quote_reason_code => null,
11707 p_alc_ser_def_code => l_alc_ser_def_code,
11708 px_tax_sources_tbl => lx_tax_sources_tbl,
11709 px_line_params_tbl => lx_line_params_tbl );
11710
11711 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11712 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11713 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11714 RAISE OKL_API.G_EXCEPTION_ERROR;
11715 END IF;
11716
11717 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11718 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11719 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
11720 END IF;
11721
11722 tax_call_cnt := tax_call_cnt + 1;
11723 END LOOP;
11724
11725 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11726 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11727 'prepared new tax sources ');
11728 END IF;
11729
11730 -- insert into okl_tax_sources
11731 BEGIN
11732 IF lx_tax_sources_tbl.COUNT > 0 THEN
11733 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
11734 -- SAVE EXCEPTIONS
11735 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
11736 END IF;
11737 EXCEPTION
11738 WHEN OTHERS THEN
11739 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
11740 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
11741 OKL_API.set_message(
11742 p_app_name => 'OKL',
11743 p_msg_name => 'OKL_TX_TRX_INS_ERR',
11744 p_token1 => 'TABLE_NAME',
11745 p_token1_value => 'OKL_TAX_SOURCES',
11746 p_token2 => 'ERROR_CODE',
11747 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
11748 p_token3 => 'ITERATION',
11749 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
11750 END LOOP;
11751 RAISE OKL_API.G_EXCEPTION_ERROR;
11752 END IF;
11753 END;
11754 -- Insert into okl_tax_sources end --
11755
11756 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11757 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11758 ' inserted into okl_tax_sources ' );
11759 END IF;
11760
11761 -- At this point tax sources for previous upfront tax have been Inactivated
11762 -- and tax sources for the current tax calculations have been inserted"
11763 -- Incase of a non serailzed asset, sample tax sources are -
11764 -- K1 > A1 > RENT
11765 -- K1 > A1 > Est Prop Tax
11766 -- Above Tax sources are created during the single call from ALC to OKl Tax Engine
11767 -- Incase of a serailzed asset (3 units) , sample tax sources after the
11768 -- first call to OKL Tax engine, for 1st serial no. are -
11769 -- K1 > A1 > Ser 1 > RENT
11770 -- K1 > A1 > Ser 1 > Est Prop Tax
11771 -- During subsequent calls (for each serial no.), following taxsources will be created
11772 -- K1 > A1 > Ser 2 > RENT
11773 -- K1 > A1 > Ser 2 > Est Prop Tax
11774 -- K1 > A1 > Ser 3 > RENT
11775 -- K1 > A1 > Ser 4 > Est Prop Tax
11776 -- Call tax engine to calculate new tax for the current asset location change transaction
11777 IF lx_line_params_tbl.COUNT > 0 THEN
11778 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11779 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11780 'Before tax engine call '||x_return_status);
11781 END IF;
11782
11783 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
11784 lp_hdr_params_rec.trx_id := p_source_trx_id;
11785 lp_hdr_params_rec.internal_organization_id := lx_org_id;
11786 lp_hdr_params_rec.entity_code := G_ASSETS_ENTITY_CODE;
11787 lp_hdr_params_rec.event_class_code := G_ALC_EVENT_CODE;
11788 lp_hdr_params_rec.event_type_code := G_ALC_CRE_EVENT_CODE;
11789 lp_hdr_params_rec.quote_flag := 'N';
11790
11791 OKL_TAX_INTERFACE_PVT.calculate_tax(
11792 p_api_version => p_api_version,
11793 p_init_msg_list => p_init_msg_list,
11794 x_return_status => x_return_status,
11795 x_msg_count => x_msg_count,
11796 x_msg_data => x_msg_data,
11797 p_hdr_params_rec => lp_hdr_params_rec,
11798 p_line_params_tbl => lx_line_params_tbl);
11799
11800 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11801 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11802 'After tax engine call '||x_return_status);
11803 END IF;
11804
11805 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11806 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11807 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11808 RAISE OKL_API.G_EXCEPTION_ERROR;
11809 END IF;
11810 END IF;
11811
11812 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11813 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11814 'Calling "update_tax_sources_total" .. ');
11815 END IF;
11816
11817 update_tax_sources_total(p_api_version => p_api_version,
11818 p_init_msg_list => p_init_msg_list,
11819 x_return_status => x_return_status,
11820 x_msg_count => x_msg_count,
11821 x_msg_data => x_msg_data,
11822 p_source_trx_id => p_source_trx_id,
11823 p_source_trx_name => p_source_trx_name,
11824 p_serialized_asset => p_serialized_asset);
11825
11826 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11827 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11828 'Return Status' || x_return_status);
11829 END IF;
11830
11831 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11832 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11833 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11834 RAISE OKL_API.G_EXCEPTION_ERROR;
11835 END IF;
11836
11837 IF (p_serialized_asset = 'Y' AND p_alc_final_call = 'Y') THEN
11838 G_UFC_CODE := null;
11839 G_TBC_CODE := null;
11840 G_PC_CODE := null;
11841 G_TAX_CLASS_CODE := null;
11842
11843 populate_alc_total_tax(p_api_version => p_api_version,
11844 p_init_msg_list => p_init_msg_list,
11845 x_return_status => l_return_status,
11846 x_msg_count => x_msg_count,
11847 x_msg_data => x_msg_data,
11848 p_asset_id => l_fin_asset_id,
11849 p_request_id => p_request_id,
11850 p_serialized_asset => p_serialized_asset);
11851
11852 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11853 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11854 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11855 RAISE OKL_API.G_EXCEPTION_ERROR;
11856 END IF;
11857 ELSE
11858 populate_alc_total_tax(p_api_version => p_api_version,
11859 p_init_msg_list => p_init_msg_list,
11860 x_return_status => l_return_status,
11861 x_msg_count => x_msg_count,
11862 x_msg_data => x_msg_data,
11863 p_asset_id => l_fin_asset_id,
11864 p_request_id => p_request_id);
11865
11866 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11867 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11868 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11869 RAISE OKL_API.G_EXCEPTION_ERROR;
11870 END IF;
11871 END IF;
11872
11873 ELSIF p_tax_call_type = G_ACTUAL_CALL_TYPE THEN
11874
11875 OPEN l_okltaxsources_csr(cp_app_id => G_OKL_APPLICATION_ID,
11876 cp_trx_id => p_source_trx_id);
11877 FETCH l_okltaxsources_csr into l_taxsources_rec;
11878 CLOSE l_okltaxsources_csr;
11879
11880
11881 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11882 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11883 'process_final_upfront_tax');
11884 END IF;
11885
11886 -- Call ebtax procedure to flip the reportable flag from N to Y
11887 process_final_upfront_tax( p_api_version => p_api_version,
11888 p_init_msg_list => p_init_msg_list,
11889 x_return_status => x_return_status,
11890 x_msg_count => x_msg_count,
11891 x_msg_data => x_msg_data,
11892 p_trx_id => p_source_trx_id,
11893 p_application_id => G_OKL_APPLICATION_ID,
11894 p_entity_code => l_taxsources_rec.entity_code,
11895 p_event_class_code => l_taxsources_rec.event_class_code);
11896
11897 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11898 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11899 'Return Status' || x_return_status);
11900 END IF;
11901
11902 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11903 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11904 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11905 RAISE OKL_API.G_EXCEPTION_ERROR;
11906 END IF;
11907
11908 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11909 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11910 'Calling "make_tax_sources_reportable" .. ');
11911 END IF;
11912
11913 make_tax_sources_reportable(p_api_version => p_api_version,
11914 p_init_msg_list => p_init_msg_list,
11915 x_return_status => x_return_status,
11916 x_msg_count => x_msg_count,
11917 x_msg_data => x_msg_data,
11918 p_source_trx_id => p_source_trx_id);
11919
11920 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11921 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax.',
11922 'Return Status' || x_return_status);
11923 END IF;
11924
11925 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11926 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11927 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11928 RAISE OKL_API.G_EXCEPTION_ERROR;
11929 END IF;
11930
11931 END IF;
11932
11933 -- CS will Call BPD API with ALC trx, to create tax only invoice.
11934
11935 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11936 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ','End(-)');
11937 END IF;
11938 EXCEPTION
11939 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11940 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11941 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
11942 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
11943 END IF;
11944
11945 IF l_trxassets_csr%ISOPEN THEN
11946 CLOSE l_trxassets_csr;
11947 END IF;
11948
11949 IF l_txlitminsts_csr%ISOPEN THEN
11950 CLOSE l_txlitminsts_csr;
11951 END IF;
11952
11953 IF l_partysiteuses_csr%ISOPEN THEN
11954 CLOSE l_partysiteuses_csr;
11955 END IF;
11956
11957 IF l_taxsources_csr%ISOPEN THEN
11958 CLOSE l_taxsources_csr;
11959 END IF;
11960
11961 IF l_okcklines_csr%ISOPEN THEN
11962 CLOSE l_okcklines_csr;
11963 END IF;
11964
11965 IF l_assetstreams_csr%ISOPEN THEN
11966 CLOSE l_assetstreams_csr;
11967 END IF;
11968
11969 IF l_strmelements_csr%ISOPEN THEN
11970 CLOSE l_strmelements_csr;
11971 END IF;
11972
11973 IF l_txbasisoverride_csr%ISOPEN THEN
11974 CLOSE l_txbasisoverride_csr;
11975 END IF;
11976
11977 IF l_invitem_csr%ISOPEN THEN
11978 CLOSE l_invitem_csr;
11979 END IF;
11980
11981 IF l_formulae_csr%ISOPEN THEN
11982 CLOSE l_formulae_csr;
11983 END IF;
11984
11985 IF c_get_streams_count%ISOPEN THEN
11986 CLOSE c_get_streams_count;
11987 END IF;
11988
11989 x_return_status := OKL_API.G_RET_STS_ERROR;
11990 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11991 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
11992 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
11993 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
11994 END IF;
11995
11996 IF l_trxassets_csr%ISOPEN THEN
11997 CLOSE l_trxassets_csr;
11998 END IF;
11999
12000 IF l_txlitminsts_csr%ISOPEN THEN
12001 CLOSE l_txlitminsts_csr;
12002 END IF;
12003
12004 IF l_partysiteuses_csr%ISOPEN THEN
12005 CLOSE l_partysiteuses_csr;
12006 END IF;
12007
12008 IF l_taxsources_csr%ISOPEN THEN
12009 CLOSE l_taxsources_csr;
12010 END IF;
12011
12012 IF l_okcklines_csr%ISOPEN THEN
12013 CLOSE l_okcklines_csr;
12014 END IF;
12015
12016 IF l_assetstreams_csr%ISOPEN THEN
12017 CLOSE l_assetstreams_csr;
12018 END IF;
12019
12020 IF l_strmelements_csr%ISOPEN THEN
12021 CLOSE l_strmelements_csr;
12022 END IF;
12023
12024 IF l_txbasisoverride_csr%ISOPEN THEN
12025 CLOSE l_txbasisoverride_csr;
12026 END IF;
12027
12028 IF l_invitem_csr%ISOPEN THEN
12029 CLOSE l_invitem_csr;
12030 END IF;
12031
12032 IF l_formulae_csr%ISOPEN THEN
12033 CLOSE l_formulae_csr;
12034 END IF;
12035
12036 IF c_get_streams_count%ISOPEN THEN
12037 CLOSE c_get_streams_count;
12038 END IF;
12039
12040 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12041
12042 WHEN OTHERS THEN
12043 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12044 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_asset_loc_tax ',
12045 'EXCEPTION :'||sqlerrm);
12046 END IF;
12047
12048 IF l_trxassets_csr%ISOPEN THEN
12049 CLOSE l_trxassets_csr;
12050 END IF;
12051
12052 IF l_txlitminsts_csr%ISOPEN THEN
12053 CLOSE l_txlitminsts_csr;
12054 END IF;
12055
12056 IF l_partysiteuses_csr%ISOPEN THEN
12057 CLOSE l_partysiteuses_csr;
12058 END IF;
12059
12060 IF l_taxsources_csr%ISOPEN THEN
12061 CLOSE l_taxsources_csr;
12062 END IF;
12063
12064 IF l_okcklines_csr%ISOPEN THEN
12065 CLOSE l_okcklines_csr;
12066 END IF;
12067
12068 IF l_assetstreams_csr%ISOPEN THEN
12069 CLOSE l_assetstreams_csr;
12070 END IF;
12071
12072 IF l_strmelements_csr%ISOPEN THEN
12073 CLOSE l_strmelements_csr;
12074 END IF;
12075
12076 IF l_txbasisoverride_csr%ISOPEN THEN
12077 CLOSE l_txbasisoverride_csr;
12078 END IF;
12079
12080 IF l_invitem_csr%ISOPEN THEN
12081 CLOSE l_invitem_csr;
12082 END IF;
12083
12084 IF l_formulae_csr%ISOPEN THEN
12085 CLOSE l_formulae_csr;
12086 END IF;
12087
12088 IF c_get_streams_count%ISOPEN THEN
12089 CLOSE c_get_streams_count;
12090 END IF;
12091
12092 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12093 -- unexpected error
12094 OKL_API.set_message(p_app_name => g_app_name,
12095 p_msg_name => g_unexpected_error,
12096 p_token1 => g_sqlcode_token,
12097 p_token1_value => sqlcode,
12098 p_token2 => g_sqlerrm_token,
12099 p_token2_value => sqlerrm);
12100
12101 END process_asset_loc_tax;
12102
12103 /*========================================================================
12104 | PRIVATE PROCEDURE process_split_asset_tax
12105 |
12106 | DESCRIPTION
12107 | This procedure is called from calculate_sales_tax procedure to Split
12108 | the currently active upfront tax lines for the asset being split
12109 |
12110 | CALLED FROM calculate_sales_tax()
12111 |
12112 |
12113 | CALLS PROCEDURES/FUNCTIONS
12114 | OKL_TAX_SOURCES_PUB.update_tax_sources()
12115 |
12116 |
12117 | PARAMETERS
12118 | p_source_trx_id -- Source transaction ID
12119 | p_source_trx_name -- Source transaction Name
12120 | p_source_table -- Source table
12121 |
12122 | KNOWN ISSUES
12123 |
12124 | NOTES
12125 |
12126 |
12127 | MODIFICATION HISTORY
12128 | Date Author Description of Changes
12129 | 08-APR-05 SECHAWLA Created
12130 |
12131 *=======================================================================*/
12132 PROCEDURE process_split_asset_tax(
12133 p_api_version IN NUMBER,
12134 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
12135 x_return_status OUT NOCOPY VARCHAR2,
12136 x_msg_count OUT NOCOPY NUMBER,
12137 x_msg_data OUT NOCOPY VARCHAR2,
12138 p_source_trx_id IN NUMBER,
12139 p_source_trx_name IN VARCHAR2,
12140 p_source_table IN VARCHAR2) IS
12141
12142 -------------Split Asset -------------------------
12143 --p_source_trx_id ---> okl_trx_assets.id
12144 --p_source_trx_name ---> 'Split Asset'
12145 --p_source_table ---> 'OKL_TRX_ASSETS'
12146 --------------------------------------------------
12147
12148 -- validate source trx id
12149 CURSOR l_trxassets_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
12150 SELECT a.try_id, a.date_trans_occurred
12151 FROM okl_trx_assets a, okl_trx_types_tl b
12152 WHERE a.id = cp_trx_id
12153 AND a.try_id = b.id
12154 AND b.name = cp_trx_type_name
12155 AND language = 'US';
12156
12157 -- get the trx line information
12158 CURSOR l_txlassets_csr(cp_id IN NUMBER) IS
12159 SELECT txl.id, okc.cle_id kle_id, -- financial asset to be split
12160 txl.dnz_khr_id,
12161 txl.asset_number,
12162 txl.current_units
12163 FROM okl_txl_assets_b txl,
12164 okc_k_lines_b okc
12165 WHERE txl.tas_id = cp_id
12166 AND txl.kle_id = okc.id
12167 AND txl.dnz_khr_id = okc.dnz_chr_id;
12168
12169 -- get the trx details information
12170 CURSOR l_txdassets_csr(cp_id IN NUMBER) IS
12171 SELECT txd.id, okc.cle_id target_kle_id, txd.asset_number, txd.split_percent, txd.quantity
12172 FROM okl_txd_assets_b txd,
12173 okc_k_lines_b okc
12174 WHERE tal_id = cp_id
12175 AND txd.target_kle_id = okc.id;
12176
12177
12178 -- get the current active upfront tax sources for this asset
12179 -- k1 > A1 > RENT
12180 -- k1 > A1 > Estimated Property Tax
12181 CURSOR l_taxsources_csr(cp_khr_id IN NUMBER, cp_kle_id IN NUMBER ) IS
12182 SELECT id, khr_id, kle_id, asset_number, trx_id, trx_line_id, entity_code, event_class_code,
12183 trx_level_type, tax_call_type_code, sty_id, trx_business_category, reported_yn,
12184 sel_id, line_name, application_id, tax_reporting_flag, default_taxation_country,
12185 product_category, user_defined_fisc_class, line_intended_use,
12186 tax_classification_code, inventory_item_id, bill_to_cust_acct_id, legal_entity_id,
12187 line_amt, assessable_value, total_tax, product_type,
12188 product_fisc_classification, trx_date, provnl_tax_determination_date,
12189 try_id, ship_to_location_id, ship_to_party_site_id, ship_to_party_id,
12190 bill_to_party_site_id, bill_to_location_id, bill_to_party_id,
12191 ship_to_cust_acct_site_use_id, bill_to_cust_acct_site_use_id,
12192 trx_currency_code, currency_conversion_type, currency_conversion_rate,
12193 currency_conversion_date, org_id, alc_serialized_yn
12194 FROM okl_tax_sources
12195 WHERE khr_id = cp_khr_id
12196 AND kle_id = cp_kle_id
12197 AND tax_call_type_code = G_UPFRONT_TAX
12198 AND tax_line_status_code = G_ACTIVE_STATUS
12199 AND ADJUSTED_DOC_TRX_ID IS NULL
12200 AND ADJUSTED_DOC_TRX_LINE_ID IS NULL;
12201
12202 -- get the tax lines corresponding to previous upfront tax source ID
12203 CURSOR l_taxtrxdetails_csr(cp_txs_id IN NUMBER) IS
12204 SELECT *
12205 FROM okl_tax_trx_details
12206 WHERE txs_id = cp_txs_id;
12207
12208 -- get the contract id
12209 CURSOR l_okcklines_csr(cp_kle_id IN NUMBER) IS
12210 SELECT dnz_chr_id, name
12211 FROM okc_k_lines_v
12212 WHERE id = cp_kle_id;
12213
12214 CURSOR l_racusttrxtypes_csr IS
12215 SELECT cust_trx_type_id
12216 FROM ra_cust_trx_types_all
12217 WHERE name = 'Invoice-OKL';
12218
12219 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
12220 SELECT precision, minimum_accountable_unit
12221 FROM fnd_currencies
12222 WHERE currency_code = cp_currency_code
12223 AND enabled_flag = 'Y'
12224 AND NVL(start_date_active, sysdate) <= sysdate
12225 AND NVL(end_date_active, sysdate) >= sysdate;
12226
12227 TYPE tax_sources_tbl_type IS TABLE OF OKL_TAX_SOURCES%ROWTYPE INDEX BY BINARY_INTEGER;
12228 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
12229
12230 l_tax_src_tbl tax_src_tbl_type;
12231 l_tax_sources_tbl tax_sources_tbl_type;
12232 rev_trx_lines_tbl zx_trx_lines_tbl_type;
12233 rev_trx_hdr_rec line_params_rec_type;
12234 l_line_params_tbl line_params_tbl_type;
12235 l_new_tax_sources_tbl tax_sources_tbl_type;
12236 lp_hdr_params_rec hdr_params_rec_type;
12237
12238 l_spl_trx_type_id NUMBER;
12239 l_trx_date DATE;
12240 l_fin_asset_id NUMBER;
12241 l_dnz_khr_id NUMBER;
12242 l_asset_number VARCHAR2(150);
12243 l_txl_id NUMBER;
12244 l_txd_id NUMBER;
12245 l_current_units NUMBER;
12246 l_dnz_chr_id NUMBER;
12247 l_name VARCHAR2(150);
12248 k NUMBER;
12249 j NUMBER;
12250 old_tx_src_cnt NUMBER;
12251 new_tax_count NUMBER;
12252 lp_txsv_rec txsv_rec_type;
12253 lp_txsv_rec_emp txsv_rec_type;
12254 lx_txsv_rec txsv_rec_type;
12255 l_split_ratio NUMBER;
12256 l_reverse BOOLEAN := FALSE;
12257 l_org_id NUMBER;
12258 l_legal_entity_id NUMBER;
12259
12260 l_cust_trx_type_id NUMBER;
12261 l_precision NUMBER;
12262 l_minimum_accountable_unit NUMBER;
12263 l_hdr_total_tax NUMBER := 0;
12264 l_trx_currency_code VARCHAR2(15);
12265 l_asset_ser_alc VARCHAR2(1);
12266
12267 BEGIN
12268
12269 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12270 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax','Begin(+)');
12271 END IF;
12272
12273 --Print Input Variables
12274 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12275 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12276 'p_init_msg_list :'||p_init_msg_list);
12277 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12278 'p_source_trx_id :'||p_source_trx_id);
12279 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12280 'p_source_trx_name :'||p_source_trx_name);
12281 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12282 'p_source_table :'||p_source_table);
12283 END IF;
12284
12285 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12286
12287 -- validate the source trx id
12288 OPEN l_trxassets_csr(p_source_trx_id, p_source_trx_name);
12289 FETCH l_trxassets_csr INTO l_spl_trx_type_id, l_trx_date;
12290 IF l_trxassets_csr%NOTFOUND THEN
12291 -- source trx id is invalid
12292 OKC_API.set_message( p_app_name => 'OKC',
12293 p_msg_name => G_INVALID_VALUE,
12294 p_token1 => G_COL_NAME_TOKEN,
12295 p_token1_value => 'SOURCE_TRX_ID');
12296 RAISE OKL_API.G_EXCEPTION_ERROR;
12297 END IF;
12298 CLOSE l_trxassets_csr;
12299
12300 -- get trx line information
12301 OPEN l_txlassets_csr(p_source_trx_id);
12302 FETCH l_txlassets_csr INTO l_txl_id, l_fin_asset_id, l_dnz_khr_id,
12303 l_asset_number, l_current_units;
12304 IF l_txlassets_csr%NOTFOUND THEN
12305 OKC_API.set_message( p_app_name => 'OKC',
12306 p_msg_name => G_REQUIRED_VALUE,
12307 p_token1 => G_COL_NAME_TOKEN,
12308 p_token1_value => 'Financial Asset');
12309 RAISE OKL_API.G_EXCEPTION_ERROR;
12310 END IF;
12311
12312 IF l_fin_asset_id IS NULL THEN
12313 OKC_API.set_message( p_app_name => 'OKC',
12314 p_msg_name => G_REQUIRED_VALUE,
12315 p_token1 => G_COL_NAME_TOKEN,
12316 p_token1_value => 'KLE_ID');
12317 RAISE OKL_API.G_EXCEPTION_ERROR;
12318 END IF;
12319
12320 IF l_current_units IS NULL THEN
12321 OKC_API.set_message( p_app_name => 'OKC',
12322 p_msg_name => G_REQUIRED_VALUE,
12323 p_token1 => G_COL_NAME_TOKEN,
12324 p_token1_value => 'CURRENT_UNITS');
12325 RAISE OKL_API.G_EXCEPTION_ERROR;
12326 END IF;
12327
12328 CLOSE l_txlassets_csr;
12329
12330 IF l_dnz_khr_id IS NULL OR l_asset_number IS NULL THEN
12331 OPEN l_okcklines_csr(l_fin_asset_id);
12332 FETCH l_okcklines_csr INTO l_dnz_chr_id, l_name;
12333 IF l_okcklines_csr%NOTFOUND THEN
12334 OKC_API.set_message( p_app_name => 'OKC',
12335 p_msg_name => G_INVALID_VALUE,
12336 p_token1 => G_COL_NAME_TOKEN,
12337 p_token1_value => 'KLE_ID');
12338 RAISE OKL_API.G_EXCEPTION_ERROR;
12339 END IF;
12340 CLOSE l_okcklines_csr;
12341
12342 IF l_dnz_khr_id IS NULL THEN
12343 l_dnz_khr_id := l_dnz_chr_id;
12344 END IF;
12345
12346 IF l_asset_number IS NULL THEN
12347 l_asset_number := l_name;
12348 IF l_asset_number IS NULL THEN
12349 OKC_API.set_message( p_app_name => 'OKC',
12350 p_msg_name => G_REQUIRED_VALUE,
12351 p_token1 => G_COL_NAME_TOKEN,
12352 p_token1_value => 'ASSET_NUMBER');
12353 RAISE OKL_API.G_EXCEPTION_ERROR;
12354 END IF;
12355 END IF;
12356 END IF;
12357
12358 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12359 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12360 'l_txl_id'||l_txl_id);
12361 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12362 'l_fin_asset_id'||l_fin_asset_id);
12363 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12364 'l_dnz_khr_id'||l_dnz_khr_id);
12365 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12366 'l_asset_number'||l_asset_number);
12367 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12368 'l_current_units'||l_current_units);
12369 END IF;
12370
12371
12372 -- Create adjusting tax source transaction for the previous active tax lines
12373 -- These tax lines could have resulted from an earlier booking / rebooking /
12374 -- asset location change / split asset transactions
12375 -- Deactivate existing upfront tax lines for this asset.
12376 k := 1;
12377 l_tax_sources_tbl.DELETE;
12378 l_tax_src_tbl.DELETE;
12379 -- This cursor will fetch only a few rows
12380 FOR l_taxsources_rec IN l_taxsources_csr(l_dnz_khr_id, l_fin_asset_id) LOOP
12381 -- K1 > A1 > RENT
12382 -- K2 > A1 > Estimated Property Tax
12383
12384 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12385 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12386 'creating -ve tax sources for prev ACTIVE upfront tax lines '||' k = '||k);
12387 END IF;
12388
12389 IF (k = 1) THEN
12390 l_reverse := TRUE;
12391 l_org_id := l_taxsources_rec.org_id;
12392 l_legal_entity_id := l_taxsources_rec.legal_entity_id;
12393 l_trx_currency_code := l_taxsources_rec.trx_currency_code;
12394 END IF;
12395
12396 l_hdr_total_tax := l_hdr_total_tax + l_taxsources_rec.total_tax;
12397
12398 -- Create adjusting tax source transaction for the previous active tax lines
12399 l_tax_sources_tbl(k).id := get_seq_id;
12400 l_tax_sources_tbl(k).khr_id := l_taxsources_rec.khr_id;
12401 l_tax_sources_tbl(k).kle_id := l_taxsources_rec.kle_id;
12402 l_tax_sources_tbl(k).asset_number := l_taxsources_rec.asset_number;
12403 l_tax_sources_tbl(k).trx_id := p_source_trx_id; -- split asset trx id
12404 l_tax_sources_tbl(k).trx_line_id := l_tax_sources_tbl(k).id;
12405 l_tax_sources_tbl(k).entity_code := G_CONTRACTS_ENTITY_CODE;
12406 l_tax_sources_tbl(k).event_class_code := G_REBOOK_EVENT_CLASS_CODE;
12407 l_tax_sources_tbl(k).trx_level_type := G_TRX_LEVEL_TYPE;
12408 l_tax_sources_tbl(k).adjusted_doc_entity_code := l_taxsources_rec.entity_code;
12409 l_tax_sources_tbl(k).adjusted_doc_event_class_code := l_taxsources_rec.event_class_code;
12410 l_tax_sources_tbl(k).adjusted_doc_trx_id := l_taxsources_rec.trx_id;
12411 l_tax_sources_tbl(k).adjusted_doc_trx_line_id := l_taxsources_rec.trx_line_id;
12412 l_tax_sources_tbl(k).adjusted_doc_trx_level_type := l_taxsources_rec.trx_level_type;
12413 l_tax_sources_tbl(k).adjusted_doc_number := NULL;
12414 l_tax_sources_tbl(k).adjusted_doc_date := NULL;
12415 l_tax_sources_tbl(k).tax_call_type_code := l_taxsources_rec.tax_call_type_code;
12416 l_tax_sources_tbl(k).sty_id := l_taxsources_rec.sty_id;
12417 l_tax_sources_tbl(k).trx_business_category := l_taxsources_rec.trx_business_category;
12418 l_tax_sources_tbl(k).tax_line_status_code := G_ACTIVE_STATUS;
12419
12420 l_tax_sources_tbl(k).sel_id := l_taxsources_rec.sel_id;
12421 l_tax_sources_tbl(k).line_name := l_taxsources_rec.line_name;
12422 l_tax_sources_tbl(k).application_id := l_taxsources_rec.application_id;
12423 l_tax_sources_tbl(k).tax_reporting_flag := l_taxsources_rec.tax_reporting_flag;
12424 l_tax_sources_tbl(k).default_taxation_country := l_taxsources_rec.default_taxation_country;
12425 l_tax_sources_tbl(k).product_category := l_taxsources_rec.product_category;
12426 l_tax_sources_tbl(k).user_defined_fisc_class := l_taxsources_rec.user_defined_fisc_class;
12427 l_tax_sources_tbl(k).line_intended_use := l_taxsources_rec.line_intended_use;
12428 l_tax_sources_tbl(k).tax_classification_code := l_taxsources_rec.tax_classification_code;
12429 l_tax_sources_tbl(k).inventory_item_id := l_taxsources_rec.inventory_item_id;
12430 l_tax_sources_tbl(k).bill_to_cust_acct_id := l_taxsources_rec.bill_to_cust_acct_id;
12431 l_tax_sources_tbl(k).org_id := l_taxsources_rec.org_id;
12432 l_tax_sources_tbl(k).legal_entity_id := l_taxsources_rec.legal_entity_id;
12433 l_tax_sources_tbl(k).line_amt := -l_taxsources_rec.line_amt;
12434 l_tax_sources_tbl(k).assessable_value := -l_taxsources_rec.assessable_value;
12435 l_tax_sources_tbl(k).total_tax := null; -- Populated after Reverse document ZX call
12436 l_tax_sources_tbl(k).product_type := l_taxsources_rec.product_type;
12437 l_tax_sources_tbl(k).product_fisc_classification := l_taxsources_rec.product_fisc_classification;
12438 l_tax_sources_tbl(k).trx_date := l_trx_date;
12439 l_tax_sources_tbl(k).provnl_tax_determination_date := l_taxsources_rec.trx_date;
12440 l_tax_sources_tbl(k).try_id := l_spl_trx_type_id;
12441 l_tax_sources_tbl(k).ship_to_location_id := l_taxsources_rec.ship_to_location_id;
12442 l_tax_sources_tbl(k).ship_to_party_site_id := l_taxsources_rec.ship_to_party_site_id;
12443 l_tax_sources_tbl(k).ship_to_party_id := l_taxsources_rec.ship_to_party_id;
12444 l_tax_sources_tbl(k).bill_to_party_site_id := l_taxsources_rec.bill_to_party_site_id;
12445 l_tax_sources_tbl(k).bill_to_location_id := l_taxsources_rec.bill_to_location_id;
12446 l_tax_sources_tbl(k).bill_to_party_id := l_taxsources_rec.bill_to_party_id;
12447 l_tax_sources_tbl(k).ship_to_cust_acct_site_use_id := l_taxsources_rec.ship_to_cust_acct_site_use_id;
12448 l_tax_sources_tbl(k).bill_to_cust_acct_site_use_id := l_taxsources_rec.bill_to_cust_acct_site_use_id;
12449 l_tax_sources_tbl(k).trx_currency_code := l_taxsources_rec.trx_currency_code;
12450 l_tax_sources_tbl(k).currency_conversion_type := l_taxsources_rec.currency_conversion_type;
12451 l_tax_sources_tbl(k).currency_conversion_rate := l_taxsources_rec.currency_conversion_rate;
12452 l_tax_sources_tbl(k).currency_conversion_date := l_taxsources_rec.currency_conversion_date;
12453 l_tax_sources_tbl(k).alc_serialized_yn := l_taxsources_rec.alc_serialized_yn;
12454
12455 l_tax_sources_tbl(k).reported_yn := l_taxsources_rec.reported_yn;
12456 l_tax_sources_tbl(k).program_id := NULL;
12457 l_tax_sources_tbl(k).request_id := NULL;
12458 l_tax_sources_tbl(k).program_application_id := NULL;
12459 l_tax_sources_tbl(k).program_update_date := NULL;
12460 l_tax_sources_tbl(k).attribute_category := NULL;
12461
12462 l_tax_sources_tbl(k).attribute1 := NULL;
12463 l_tax_sources_tbl(k).attribute2 := NULL;
12464 l_tax_sources_tbl(k).attribute3 := NULL;
12465 l_tax_sources_tbl(k).attribute4 := NULL;
12466 l_tax_sources_tbl(k).attribute5 := NULL;
12467 l_tax_sources_tbl(k).attribute6 := NULL;
12468 l_tax_sources_tbl(k).attribute7 := NULL;
12469 l_tax_sources_tbl(k).attribute8 := NULL;
12470 l_tax_sources_tbl(k).attribute9 := NULL;
12471 l_tax_sources_tbl(k).attribute10 := NULL;
12472 l_tax_sources_tbl(k).attribute11 := NULL;
12473 l_tax_sources_tbl(k).attribute12 := NULL;
12474 l_tax_sources_tbl(k).attribute13 := NULL;
12475 l_tax_sources_tbl(k).attribute14 := NULL;
12476 l_tax_sources_tbl(k).attribute15 := NULL;
12477 l_tax_sources_tbl(k).created_by := G_USER_ID;
12478 l_tax_sources_tbl(k).creation_date := SYSDATE;
12479 l_tax_sources_tbl(k).last_updated_by := G_USER_ID;
12480 l_tax_sources_tbl(k).last_update_date := SYSDATE;
12481 l_tax_sources_tbl(k).last_update_login := G_LOGIN_ID;
12482 l_tax_sources_tbl(k).object_version_number := NULL;
12483
12484 l_tax_src_tbl(k) := l_taxsources_rec.id;
12485
12486 -- Populate the ZX reverse transaction lines table for tax call
12487 rev_trx_lines_tbl(k).internal_organization_id := l_org_id;
12488 rev_trx_lines_tbl(k).reversing_appln_id := G_OKL_APPLICATION_ID;
12489 rev_trx_lines_tbl(k).reversing_entity_code := G_CONTRACTS_ENTITY_CODE;
12490 rev_trx_lines_tbl(k).reversing_evnt_cls_code := G_REBOOK_EVENT_CLASS_CODE;
12491 rev_trx_lines_tbl(k).reversing_trx_id := p_source_trx_id;
12492 rev_trx_lines_tbl(k).reversing_trx_level_type := l_taxsources_rec.trx_level_type;
12493 rev_trx_lines_tbl(k).reversing_trx_line_id := l_tax_sources_tbl(k).id;
12494
12495 rev_trx_lines_tbl(k).reversed_appln_id := G_OKL_APPLICATION_ID;
12496 rev_trx_lines_tbl(k).reversed_entity_code := l_taxsources_rec.entity_code;
12497 rev_trx_lines_tbl(k).reversed_evnt_cls_code := l_taxsources_rec.event_class_code;
12498 rev_trx_lines_tbl(k).reversed_trx_id := l_taxsources_rec.trx_id;
12499 rev_trx_lines_tbl(k).reversed_trx_level_type := l_taxsources_rec.trx_level_type;
12500 rev_trx_lines_tbl(k).reversed_trx_line_id := l_taxsources_rec.trx_line_id;
12501
12502 k := k + 1;
12503 END LOOP;
12504
12505 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12506 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12507 ' k = '||k);
12508 END IF;
12509
12510 -- Inactivate the previous ACTIVE tax lines - begin
12511 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12512 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12513 ' Inactivating the status of previous active upfront tax sources - Start ');
12514 END IF;
12515
12516 IF l_tax_src_tbl.COUNT > 0 THEN
12517 BEGIN
12518 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
12519 UPDATE okl_tax_sources SET tax_line_status_code = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
12520 EXCEPTION
12521 WHEN OTHERS THEN
12522 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12523 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12524 OKL_API.set_message(
12525 p_app_name => 'OKL',
12526 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
12527 p_token1 => 'TABLE_NAME',
12528 p_token1_value => 'OKL_TAX_SOURCES',
12529 p_token2 => 'ERROR_CODE',
12530 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12531 p_token3 => 'ITERATION',
12532 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12533 END LOOP;
12534 RAISE OKL_API.G_EXCEPTION_ERROR;
12535 END IF;
12536 END;
12537 END IF;
12538
12539 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12540 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12541 'Inactivating the status of previous active upfront tax sources - End ' );
12542 END IF;
12543 -- Inactivate the previous ACTIVE tax lines - end
12544
12545 -- bulk insert into okl_tax_sources -- start
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 ' Insert Adjusting tax sources - Start');
12549 END IF;
12550
12551 BEGIN
12552 IF l_tax_sources_tbl.COUNT > 0 THEN
12553 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
12554 -- SAVE EXCEPTIONS
12555 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
12556 END IF;
12557 EXCEPTION
12558 WHEN OTHERS THEN
12559 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12560 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12561 OKL_API.set_message(p_app_name => 'OKL',
12562 p_msg_name => 'OKL_TX_TRX_INS_ERR',
12563 p_token1 => 'TABLE_NAME',
12564 p_token1_value => 'OKL_TAX_SOURCES',
12565 p_token2 => 'ERROR_CODE',
12566 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12567 p_token3 => 'ITERATION',
12568 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12569 END LOOP;
12570 RAISE OKL_API.G_EXCEPTION_ERROR;
12571 END IF;
12572 END;
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 ' Insert Adjusting tax sources - End');
12577 END IF;
12578 -- bulk insert into okl_tax_sources -- end
12579
12580 -- Reverse document call
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 'Calling OKL_TAX_INTERFACE_PVT.reverse_document');
12584 END IF;
12585
12586 IF (l_reverse) THEN -- Process Reversal only if the tax is created for the contract
12587
12588 rev_trx_hdr_rec.internal_organization_id := l_org_id;
12589 rev_trx_hdr_rec.application_id := G_OKL_APPLICATION_ID;
12590 rev_trx_hdr_rec.trx_id := p_source_trx_id;
12591 rev_trx_hdr_rec.legal_entity_id := l_legal_entity_id;
12592 rev_trx_hdr_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
12593 rev_trx_hdr_rec.event_class_code := G_REBOOK_EVENT_CLASS_CODE;
12594
12595 OKL_TAX_INTERFACE_PVT.reverse_document (
12596 p_api_version => p_api_version,
12597 p_init_msg_list => p_init_msg_list,
12598 x_return_status => x_return_status,
12599 x_msg_count => x_msg_count,
12600 x_msg_data => x_msg_data,
12601 p_rev_trx_hdr_rec => rev_trx_hdr_rec,
12602 p_rev_trx_lines_tbl => rev_trx_lines_tbl);
12603
12604 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12605 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12606 'Return Status' || x_return_status);
12607 END IF;
12608
12609 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12610 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12611 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12612 RAISE OKL_API.G_EXCEPTION_ERROR;
12613 END IF;
12614
12615 -- Get the total tax amount corresponding to 'Reverse' transaction from
12616 -- zx_lines and update total_tax on okl_tax_sources
12617 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12618 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12619 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
12620 END IF;
12621
12622 update_tax_sources_total(p_api_version => p_api_version,
12623 p_init_msg_list => p_init_msg_list,
12624 x_return_status => x_return_status,
12625 x_msg_count => x_msg_count,
12626 x_msg_data => x_msg_data,
12627 p_source_trx_id => p_source_trx_id,
12628 p_source_trx_name => p_source_trx_name);
12629
12630 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12631 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12632 'Return Status' || x_return_status);
12633 END IF;
12634
12635 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12636 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12637 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12638 RAISE OKL_API.G_EXCEPTION_ERROR;
12639 END IF;
12640
12641 END IF;
12642
12643 -- get the AR cust trx type ID
12644 OPEN l_racusttrxtypes_csr;
12645 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
12646 IF l_racusttrxtypes_csr%NOTFOUND THEN
12647 -- cust trx tyep id is required
12648 OKC_API.set_message( p_app_name => 'OKC',
12649 p_msg_name => G_REQUIRED_VALUE,
12650 p_token1 => G_COL_NAME_TOKEN,
12651 p_token1_value => 'CUST_TRX_TYPE_ID');
12652 RAISE OKL_API.G_EXCEPTION_ERROR;
12653 END IF;
12654 CLOSE l_racusttrxtypes_csr;
12655
12656 OPEN l_fndcurrency_csr(l_trx_currency_code);
12657 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit; -- l_minimum_accountable_unit is optional in fnd_currencies
12658 -- but mandatory for tax team
12659 -- check with Nilesh
12660 IF l_fndcurrency_csr%NOTFOUND THEN
12661 OKC_API.set_message( p_app_name => 'OKC',
12662 p_msg_name => G_INVALID_VALUE,
12663 p_token1 => G_COL_NAME_TOKEN,
12664 p_token1_value => 'CURRENCY_CODE');
12665 RAISE OKL_API.G_EXCEPTION_ERROR;
12666 END IF;
12667 CLOSE l_fndcurrency_csr;
12668
12669 IF k > 1 THEN -- if there are any existing ACTIVE upfront tax lines
12670 old_tx_src_cnt := k - 1; -- tax source trx count for the original asset
12671
12672 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12673 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12674 'old_tx_src_cnt '||old_tx_src_cnt );
12675 END IF;
12676
12677 l_asset_ser_alc := is_serialized_and_alc(l_dnz_khr_id);
12678
12679 -- create tax sources for assets after split
12680 l_new_tax_sources_tbl.DELETE;
12681 new_tax_count := 1;
12682 FOR l_txdassets_rec IN l_txdassets_csr(l_txl_id) LOOP -- for each new asset
12683
12684 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12685 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12686 'asset after split '||l_txdassets_rec.asset_number );
12687 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12688 'split_percent '||l_txdassets_rec.split_percent );
12689 END IF;
12690
12691 IF l_txdassets_rec.split_percent IS NOT NULL THEN
12692 l_split_ratio := l_txdassets_rec.split_percent / 100;
12693 ELSE
12694 l_split_ratio := l_txdassets_rec.quantity / l_current_units;
12695 END IF;
12696
12697 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12698 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12699 'l_split_ratio '||l_split_ratio );
12700 END IF;
12701
12702 -- for each new asset, create as many tax source transactions as the original asset
12703 FOR k IN 1..old_tx_src_cnt LOOP
12704
12705 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12706 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12707 'Creating tax src for the new asset, k = '||k);
12708 END IF;
12709
12710 -- Create new tax sources for split transaction
12711 l_new_tax_sources_tbl(new_tax_count).id := get_seq_id;
12712 l_new_tax_sources_tbl(new_tax_count).khr_id := l_dnz_khr_id;
12713 l_new_tax_sources_tbl(new_tax_count).kle_id := l_txdassets_rec.target_kle_id;
12714 l_new_tax_sources_tbl(new_tax_count).asset_number := l_txdassets_rec.asset_number;
12715 l_new_tax_sources_tbl(new_tax_count).trx_id := p_source_trx_id; -- split asset trx id
12716 l_new_tax_sources_tbl(new_tax_count).trx_line_id := l_new_tax_sources_tbl(new_tax_count).id;
12717 l_new_tax_sources_tbl(new_tax_count).entity_code := G_CONTRACTS_ENTITY_CODE;
12718 l_new_tax_sources_tbl(new_tax_count).event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12719 l_new_tax_sources_tbl(new_tax_count).trx_level_type := G_TRX_LEVEL_TYPE;
12720 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_entity_code := NULL;
12721 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_event_class_code := NULL;
12722 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_id := NULL;
12723 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_line_id := NULL;
12724 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_trx_level_type := NULL;
12725 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_number := NULL;
12726 l_new_tax_sources_tbl(new_tax_count).adjusted_doc_date := NULL;
12727 l_new_tax_sources_tbl(new_tax_count).tax_call_type_code := G_UPFRONT_TAX;
12728 l_new_tax_sources_tbl(new_tax_count).sty_id := l_tax_sources_tbl(k).sty_id;
12729 l_new_tax_sources_tbl(new_tax_count).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
12730 l_new_tax_sources_tbl(new_tax_count).tax_line_status_code := G_ACTIVE_STATUS;
12731
12732 l_new_tax_sources_tbl(new_tax_count).sel_id := l_tax_sources_tbl(k).sel_id;
12733 l_new_tax_sources_tbl(new_tax_count).line_name := l_txdassets_rec.asset_number;
12734 l_new_tax_sources_tbl(new_tax_count).application_id := G_OKL_APPLICATION_ID;
12735 l_new_tax_sources_tbl(new_tax_count).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
12736 l_new_tax_sources_tbl(new_tax_count).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
12737 l_new_tax_sources_tbl(new_tax_count).product_category := l_tax_sources_tbl(k).product_category;
12738 l_new_tax_sources_tbl(new_tax_count).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
12739 l_new_tax_sources_tbl(new_tax_count).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
12740 l_new_tax_sources_tbl(new_tax_count).tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
12741 l_new_tax_sources_tbl(new_tax_count).inventory_item_id := l_tax_sources_tbl(k).inventory_item_id;
12742 l_new_tax_sources_tbl(new_tax_count).bill_to_cust_acct_id := l_tax_sources_tbl(k).bill_to_cust_acct_id;
12743 l_new_tax_sources_tbl(new_tax_count).org_id := l_tax_sources_tbl(k).org_id;
12744 l_new_tax_sources_tbl(new_tax_count).legal_entity_id := l_tax_sources_tbl(k).legal_entity_id;
12745 l_new_tax_sources_tbl(new_tax_count).line_amt := -l_tax_sources_tbl(k).line_amt * l_split_ratio;
12746 l_new_tax_sources_tbl(new_tax_count).assessable_value := -l_tax_sources_tbl(k).assessable_value * l_split_ratio;
12747 l_new_tax_sources_tbl(new_tax_count).total_tax := null; -- Populated after tax call
12748 l_new_tax_sources_tbl(new_tax_count).product_type := l_tax_sources_tbl(k).product_type;
12749 l_new_tax_sources_tbl(new_tax_count).product_fisc_classification := l_tax_sources_tbl(k).product_fisc_classification;
12750 l_new_tax_sources_tbl(new_tax_count).trx_date := l_tax_sources_tbl(k).trx_date;
12751 l_new_tax_sources_tbl(new_tax_count).provnl_tax_determination_date := l_tax_sources_tbl(k).provnl_tax_determination_date;
12752 l_new_tax_sources_tbl(new_tax_count).try_id := l_spl_trx_type_id;
12753 l_new_tax_sources_tbl(new_tax_count).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
12754 l_new_tax_sources_tbl(new_tax_count).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
12755 l_new_tax_sources_tbl(new_tax_count).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12756 l_new_tax_sources_tbl(new_tax_count).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
12757 l_new_tax_sources_tbl(new_tax_count).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
12758 l_new_tax_sources_tbl(new_tax_count).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12759 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;
12760 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;
12761 l_new_tax_sources_tbl(new_tax_count).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
12762 l_new_tax_sources_tbl(new_tax_count).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
12763 l_new_tax_sources_tbl(new_tax_count).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
12764 l_new_tax_sources_tbl(new_tax_count).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
12765 l_new_tax_sources_tbl(new_tax_count).alc_serialized_yn := l_tax_sources_tbl(k).alc_serialized_yn;
12766
12767 l_new_tax_sources_tbl(new_tax_count).reported_yn := l_tax_sources_tbl(k).reported_yn;
12768 l_new_tax_sources_tbl(new_tax_count).program_id := NULL;
12769 l_new_tax_sources_tbl(new_tax_count).request_id := NULL;
12770 l_new_tax_sources_tbl(new_tax_count).program_application_id := NULL;
12771 l_new_tax_sources_tbl(new_tax_count).program_update_date := NULL;
12772 l_new_tax_sources_tbl(new_tax_count).attribute_category := NULL;
12773
12774 l_new_tax_sources_tbl(new_tax_count).attribute1 := NULL;
12775 l_new_tax_sources_tbl(new_tax_count).attribute2 := NULL;
12776 l_new_tax_sources_tbl(new_tax_count).attribute3 := NULL;
12777 l_new_tax_sources_tbl(new_tax_count).attribute4 := NULL;
12778 l_new_tax_sources_tbl(new_tax_count).attribute5 := NULL;
12779 l_new_tax_sources_tbl(new_tax_count).attribute6 := NULL;
12780 l_new_tax_sources_tbl(new_tax_count).attribute7 := NULL;
12781 l_new_tax_sources_tbl(new_tax_count).attribute8 := NULL;
12782 l_new_tax_sources_tbl(new_tax_count).attribute9 := NULL;
12783 l_new_tax_sources_tbl(new_tax_count).attribute10 := NULL;
12784 l_new_tax_sources_tbl(new_tax_count).attribute11 := NULL;
12785 l_new_tax_sources_tbl(new_tax_count).attribute12 := NULL;
12786 l_new_tax_sources_tbl(new_tax_count).attribute13 := NULL;
12787 l_new_tax_sources_tbl(new_tax_count).attribute14 := NULL;
12788 l_new_tax_sources_tbl(new_tax_count).attribute15 := NULL;
12789 l_new_tax_sources_tbl(new_tax_count).created_by := G_USER_ID;
12790 l_new_tax_sources_tbl(new_tax_count).creation_date := SYSDATE;
12791 l_new_tax_sources_tbl(new_tax_count).last_updated_by := G_USER_ID;
12792 l_new_tax_sources_tbl(new_tax_count).last_update_date := SYSDATE;
12793 l_new_tax_sources_tbl(new_tax_count).last_update_login := G_LOGIN_ID;
12794 l_new_tax_sources_tbl(new_tax_count).object_version_number := NULL;
12795
12796 -- Populate line params table for tax calculation
12797 l_line_params_tbl(new_tax_count).application_id := G_OKL_APPLICATION_ID;
12798 l_line_params_tbl(new_tax_count).trx_id := p_source_trx_id;
12799 l_line_params_tbl(new_tax_count).internal_organization_id := l_tax_sources_tbl(k).org_id;
12800 l_line_params_tbl(new_tax_count).entity_code := G_CONTRACTS_ENTITY_CODE;
12801 l_line_params_tbl(new_tax_count).event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12802 l_line_params_tbl(new_tax_count).event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
12803 l_line_params_tbl(new_tax_count).trx_date := l_tax_sources_tbl(k).trx_date;
12804 l_line_params_tbl(new_tax_count).ledger_id := okl_accounting_util.get_set_of_books_id;
12805 l_line_params_tbl(new_tax_count).legal_entity_id := l_tax_sources_tbl(k).legal_entity_id;
12806 l_line_params_tbl(new_tax_count).trx_level_type := G_TRX_LEVEL_TYPE;
12807 l_line_params_tbl(new_tax_count).line_level_action := G_CREATE_LINE_LEVEL_ACTION;
12808 l_line_params_tbl(new_tax_count).trx_line_id := l_new_tax_sources_tbl(new_tax_count).id;
12809 l_line_params_tbl(new_tax_count).line_amt := -l_tax_sources_tbl(k).line_amt * l_split_ratio;
12810 l_line_params_tbl(new_tax_count).tax_reporting_flag := l_tax_sources_tbl(k).tax_reporting_flag;
12811 l_line_params_tbl(new_tax_count).default_taxation_country := l_tax_sources_tbl(k).default_taxation_country;
12812 l_line_params_tbl(new_tax_count).product_type := l_tax_sources_tbl(k).product_type;
12813 l_line_params_tbl(new_tax_count).output_tax_classification_code := l_tax_sources_tbl(k).tax_classification_code;
12814 l_line_params_tbl(new_tax_count).assessable_value := -l_tax_sources_tbl(k).assessable_value * l_split_ratio;
12815 l_line_params_tbl(new_tax_count).receivables_trx_type_id := l_cust_trx_type_id;
12816 l_line_params_tbl(new_tax_count).product_id := l_tax_sources_tbl(k).inventory_item_id;
12817 l_line_params_tbl(new_tax_count).adjusted_doc_entity_code := NULL;
12818 l_line_params_tbl(new_tax_count).adjusted_doc_event_class_code := NULL;
12819 l_line_params_tbl(new_tax_count).adjusted_doc_trx_id := NULL;
12820 l_line_params_tbl(new_tax_count).adjusted_doc_line_id := NULL;
12821 l_line_params_tbl(new_tax_count).adjusted_doc_trx_level_type := NULL;
12822 l_line_params_tbl(new_tax_count).adjusted_doc_number := NULL;
12823 l_line_params_tbl(new_tax_count).adjusted_doc_date := NULL;
12824 l_line_params_tbl(new_tax_count).line_amt_includes_tax_flag := 'N';
12825 l_line_params_tbl(new_tax_count).trx_business_category := l_tax_sources_tbl(k).trx_business_category;
12826 l_line_params_tbl(new_tax_count).product_category := l_tax_sources_tbl(k).product_category;
12827 l_line_params_tbl(new_tax_count).user_defined_fisc_class := l_tax_sources_tbl(k).user_defined_fisc_class;
12828 l_line_params_tbl(new_tax_count).line_intended_use := l_tax_sources_tbl(k).line_intended_use;
12829 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;
12830 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;
12831 l_line_params_tbl(new_tax_count).bill_to_party_site_id := l_tax_sources_tbl(k).bill_to_party_site_id;
12832 l_line_params_tbl(new_tax_count).bill_to_location_id := l_tax_sources_tbl(k).bill_to_location_id;
12833 l_line_params_tbl(new_tax_count).bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12834 l_line_params_tbl(new_tax_count).ship_to_party_site_id := l_tax_sources_tbl(k).ship_to_party_site_id;
12835 l_line_params_tbl(new_tax_count).ship_to_location_id := l_tax_sources_tbl(k).ship_to_location_id;
12836 l_line_params_tbl(new_tax_count).ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12837 l_line_params_tbl(new_tax_count).rounding_ship_to_party_id := l_tax_sources_tbl(k).ship_to_party_id;
12838 l_line_params_tbl(new_tax_count).rounding_bill_to_party_id := l_tax_sources_tbl(k).bill_to_party_id;
12839 l_line_params_tbl(new_tax_count).trx_currency_code := l_tax_sources_tbl(k).trx_currency_code;
12840 l_line_params_tbl(new_tax_count).precision := l_precision;
12841 l_line_params_tbl(new_tax_count).minimum_accountable_unit := l_minimum_accountable_unit;
12842 l_line_params_tbl(new_tax_count).currency_conversion_date := l_tax_sources_tbl(k).currency_conversion_date;
12843 l_line_params_tbl(new_tax_count).currency_conversion_rate := l_tax_sources_tbl(k).currency_conversion_rate;
12844 l_line_params_tbl(new_tax_count).currency_conversion_type := l_tax_sources_tbl(k).currency_conversion_type;
12845 l_line_params_tbl(new_tax_count).provnl_tax_determination_date := l_tax_sources_tbl(k).provnl_tax_determination_date;
12846 l_line_params_tbl(new_tax_count).ctrl_total_hdr_tax_amt := l_hdr_total_tax;
12847
12848 new_tax_count := new_tax_count + 1;
12849
12850 END LOOP;
12851
12852 END LOOP;
12853
12854 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12855 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12856 'l_line_params_tbl.COUNT '||l_line_params_tbl.COUNT);
12857 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12858 'l_new_tax_sources_tbl.COUNT '||l_new_tax_sources_tbl.COUNT);
12859 END IF;
12860
12861 -- bulk insert into okl_tax_sources -- start
12862 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12863 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12864 ' Insert Split asset tax sources - Start');
12865 END IF;
12866
12867 BEGIN
12868 IF l_new_tax_sources_tbl.COUNT > 0 THEN
12869 FORALL indx in l_new_tax_sources_tbl.FIRST..l_new_tax_sources_tbl.LAST
12870 -- SAVE EXCEPTIONS
12871 INSERT INTO okl_tax_sources VALUES l_new_tax_sources_tbl(indx);
12872 END IF;
12873 EXCEPTION
12874 WHEN OTHERS THEN
12875 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
12876 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
12877 OKL_API.set_message(p_app_name => 'OKL',
12878 p_msg_name => 'OKL_TX_TRX_INS_ERR',
12879 p_token1 => 'TABLE_NAME',
12880 p_token1_value => 'OKL_TAX_SOURCES',
12881 p_token2 => 'ERROR_CODE',
12882 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
12883 p_token3 => 'ITERATION',
12884 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
12885 END LOOP;
12886 RAISE OKL_API.G_EXCEPTION_ERROR;
12887 END IF;
12888 END;
12889
12890 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12891 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12892 ' Insert Split asset tax sources - End');
12893 END IF;
12894 -- bulk insert into okl_tax_sources -- end
12895
12896
12897 IF l_line_params_tbl.COUNT > 0 THEN
12898 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12899 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12900 'Before tax engine call '||x_return_status);
12901 END IF;
12902
12903 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
12904 lp_hdr_params_rec.trx_id := p_source_trx_id;
12905 lp_hdr_params_rec.internal_organization_id := l_org_id;
12906 lp_hdr_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
12907 lp_hdr_params_rec.event_class_code := G_BOOKING_EVENT_CLASS_CODE;
12908 lp_hdr_params_rec.event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
12909 lp_hdr_params_rec.quote_flag := 'N';
12910
12911 OKL_TAX_INTERFACE_PVT.calculate_tax(
12912 p_api_version => p_api_version,
12913 p_init_msg_list => p_init_msg_list,
12914 x_return_status => x_return_status,
12915 x_msg_count => x_msg_count,
12916 x_msg_data => x_msg_data,
12917 p_hdr_params_rec => lp_hdr_params_rec,
12918 p_line_params_tbl => l_line_params_tbl);
12919
12920 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12921 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12922 'After tax engine call '||x_return_status);
12923 END IF;
12924
12925 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12926 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12927 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12928 RAISE OKL_API.G_EXCEPTION_ERROR;
12929 END IF;
12930 END IF;
12931
12932 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12933 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12934 'Calling "update_tax_sources_total" .. ');
12935 END IF;
12936
12937 update_tax_sources_total(p_api_version => p_api_version,
12938 p_init_msg_list => p_init_msg_list,
12939 x_return_status => x_return_status,
12940 x_msg_count => x_msg_count,
12941 x_msg_data => x_msg_data,
12942 p_source_trx_id => p_source_trx_id);
12943
12944 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12945 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax.',
12946 'Return Status' || x_return_status);
12947 END IF;
12948
12949 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12950 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12951 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12952 RAISE OKL_API.G_EXCEPTION_ERROR;
12953 END IF;
12954
12955 -- Populate Serialized Asset total tax, if the ALC happened on the asset
12956 -- before the Split process
12957 IF (l_asset_ser_alc = 'Y') THEN
12958 FOR l_txdassets_rec IN l_txdassets_csr(l_txl_id) LOOP
12959 populate_ser_split_total_tax(p_api_version => p_api_version,
12960 p_init_msg_list => p_init_msg_list,
12961 x_return_status => x_return_status,
12962 x_msg_count => x_msg_count,
12963 x_msg_data => x_msg_data,
12964 p_asset_id => l_txdassets_rec.target_kle_id,
12965 p_serialized_asset => l_asset_ser_alc);
12966
12967 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12968 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12969 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12970 RAISE OKL_API.G_EXCEPTION_ERROR;
12971 END IF;
12972 END LOOP;
12973 END IF;
12974
12975 END IF; -- if there are any existing ACTIVE upfront tax lines
12976
12977 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12978 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ','End(-)');
12979 END IF;
12980
12981 EXCEPTION
12982 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12983 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
12984 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
12985 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
12986 END IF;
12987
12988 IF l_trxassets_csr%ISOPEN THEN
12989 CLOSE l_trxassets_csr;
12990 END IF;
12991
12992 IF l_txlassets_csr%ISOPEN THEN
12993 CLOSE l_txlassets_csr;
12994 END IF;
12995
12996 IF l_txdassets_csr%ISOPEN THEN
12997 CLOSE l_txdassets_csr;
12998 END IF;
12999
13000 IF l_taxsources_csr%ISOPEN THEN
13001 CLOSE l_taxsources_csr;
13002 END IF;
13003
13004 IF l_taxtrxdetails_csr%ISOPEN THEN
13005 CLOSE l_taxtrxdetails_csr;
13006 END IF;
13007
13008 IF l_okcklines_csr%ISOPEN THEN
13009 CLOSE l_okcklines_csr;
13010 END IF;
13011
13012 IF l_racusttrxtypes_csr%ISOPEN THEN
13013 CLOSE l_racusttrxtypes_csr;
13014 END IF;
13015
13016 IF l_fndcurrency_csr%ISOPEN THEN
13017 CLOSE l_fndcurrency_csr;
13018 END IF;
13019
13020 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13021 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13022 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
13023 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
13024 END IF;
13025
13026 IF l_trxassets_csr%ISOPEN THEN
13027 CLOSE l_trxassets_csr;
13028 END IF;
13029
13030 IF l_txlassets_csr%ISOPEN THEN
13031 CLOSE l_txlassets_csr;
13032 END IF;
13033
13034 IF l_txdassets_csr%ISOPEN THEN
13035 CLOSE l_txdassets_csr;
13036 END IF;
13037
13038 IF l_taxsources_csr%ISOPEN THEN
13039 CLOSE l_taxsources_csr;
13040 END IF;
13041
13042 IF l_taxtrxdetails_csr%ISOPEN THEN
13043 CLOSE l_taxtrxdetails_csr;
13044 END IF;
13045
13046 IF l_okcklines_csr%ISOPEN THEN
13047 CLOSE l_okcklines_csr;
13048 END IF;
13049
13050 IF l_racusttrxtypes_csr%ISOPEN THEN
13051 CLOSE l_racusttrxtypes_csr;
13052 END IF;
13053
13054 IF l_fndcurrency_csr%ISOPEN THEN
13055 CLOSE l_fndcurrency_csr;
13056 END IF;
13057
13058 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
13059
13060 WHEN OTHERS THEN
13061 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13062 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_split_asset_tax ',
13063 'EXCEPTION :'||sqlerrm);
13064 END IF;
13065
13066 IF l_trxassets_csr%ISOPEN THEN
13067 CLOSE l_trxassets_csr;
13068 END IF;
13069
13070 IF l_txlassets_csr%ISOPEN THEN
13071 CLOSE l_txlassets_csr;
13072 END IF;
13073
13074 IF l_txdassets_csr%ISOPEN THEN
13075 CLOSE l_txdassets_csr;
13076 END IF;
13077
13078 IF l_taxsources_csr%ISOPEN THEN
13079 CLOSE l_taxsources_csr;
13080 END IF;
13081
13082 IF l_taxtrxdetails_csr%ISOPEN THEN
13083 CLOSE l_taxtrxdetails_csr;
13084 END IF;
13085
13086 IF l_okcklines_csr%ISOPEN THEN
13087 CLOSE l_okcklines_csr;
13088 END IF;
13089
13090 IF l_racusttrxtypes_csr%ISOPEN THEN
13091 CLOSE l_racusttrxtypes_csr;
13092 END IF;
13093
13094 IF l_fndcurrency_csr%ISOPEN THEN
13095 CLOSE l_fndcurrency_csr;
13096 END IF;
13097
13098 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
13099 -- unexpected error
13100 OKL_API.set_message(p_app_name => g_app_name,
13101 p_msg_name => g_unexpected_error,
13102 p_token1 => g_sqlcode_token,
13103 p_token1_value => sqlcode,
13104 p_token2 => g_sqlerrm_token,
13105 p_token2_value => sqlerrm);
13106
13107 END process_split_asset_tax;
13108
13109 /*========================================================================
13110 | PRIVATE PROCEDURE process_booking_upfront_tax
13111 |
13112 | DESCRIPTION
13113 | This procedure is called from calculate_sales_tax procedure to calculate
13114 | Upfront tax during Pre Booking and Booking
13115 |
13116 | CALLED FROM calculate_sales_tax()
13117 |
13118 |
13119 | CALLS PROCEDURES/FUNCTIONS
13120 | get_k_hdr_tax_params()
13121 | get_asset_tax_params()
13122 | get_location_party_ids()
13123 | populate_tax_info()
13124 | OKL_TAX_INTERFACE_PVT.calculate_tax()
13125 |
13126 |
13127 | PARAMETERS
13128 | p_source_trx_id -- Source transaction ID
13129 | p_source_trx_name -- Source transaction Name
13130 | p_source_table -- Source table
13131 | p_tax_call_type -- 'ESTIMATED'/'ACTUAL'
13132 |
13133 | KNOWN ISSUES
13134 |
13135 | NOTES
13136 |
13137 |
13138 | MODIFICATION HISTORY
13139 | Date Author Description of Changes
13140 | 08-APR-05 SECHAWLA Created
13141 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Pre-Booking and Booking
13142 | setups into 'Booking'
13143 |
13144 *=======================================================================*/
13145 PROCEDURE process_booking_upfront_tax(
13146 p_api_version IN NUMBER,
13147 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
13148 x_return_status OUT NOCOPY VARCHAR2,
13149 x_msg_count OUT NOCOPY NUMBER,
13150 x_msg_data OUT NOCOPY VARCHAR2,
13151 p_source_trx_id IN NUMBER,
13152 p_source_trx_name IN VARCHAR2,
13153 p_source_table IN VARCHAR2,
13154 p_tax_call_type IN VARCHAR2) IS
13155
13156 -------------Booking --------------
13157 --p_source_trx_id ---> okl_trx_contracts.id
13158 --p_source_trx_name ---> 'Booking'
13159 --p_source_table ---> 'OKL_TRX_CONTRACTS'
13160 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL'
13161 --------------------------------------------------
13162 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
13163
13164 -- validate source trx id (Booking)
13165 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
13166 SELECT a.try_id, a.khr_id, a.legal_entity_id
13167 FROM okl_trx_contracts a , okl_trx_types_tl b
13168 WHERE a.id = cp_trx_id
13169 AND a.try_id = b.id
13170 AND b.name = cp_trx_type_name
13171 AND language = 'US';
13172
13173 -- validate source trx id (Rebook)
13174 -- okl_trx_contracts.khr_id has original contract id
13175 -- okl_trx_contracts.khr_id_new has rebook copy contract id
13176 CURSOR l_trxcontracts_rbk_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
13177 SELECT a.khr_id_new, a.legal_entity_id
13178 FROM okl_trx_contracts a , okl_trx_types_tl b
13179 WHERE a.id = cp_trx_id
13180 AND a.try_id = b.id
13181 AND b.name = cp_trx_type_name
13182 AND language = 'US';
13183
13184 CURSOR l_bookingtrxtypeid_csr IS
13185 SELECT id
13186 FROM okl_trx_types_v
13187 WHERE NAME = 'Booking';
13188
13189 CURSOR l_tax_src_info_csr(cp_khr_id IN NUMBER, cp_trx_id IN NUMBER) IS
13190 SELECT org_id, application_id, entity_code, event_class_code
13191 FROM okl_tax_sources
13192 WHERE khr_id = cp_khr_id
13193 AND tax_call_type_code = G_UPFRONT_TAX
13194 AND tax_line_status_code = G_ACTIVE_STATUS
13195 AND application_id = G_OKL_APPLICATION_ID
13196 AND trx_id = cp_trx_id
13197 AND trx_level_type = G_TRX_LEVEL_TYPE
13198 AND ROWNUM = 1;
13199
13200 CURSOR l_prev_taxsources_csr(cp_khr_id IN NUMBER, cp_trx_id IN NUMBER) IS
13201 SELECT id
13202 FROM okl_tax_sources
13203 WHERE khr_id = cp_khr_id
13204 AND tax_call_type_code = G_UPFRONT_TAX
13205 AND tax_line_status_code = G_ACTIVE_STATUS
13206 AND application_id = G_OKL_APPLICATION_ID
13207 AND trx_id = cp_trx_id
13208 AND trx_level_type = G_TRX_LEVEL_TYPE;
13209
13210 --delete the pre-booking tax source transaction and tax details
13211 -- This cursor is used during Booking. It will pick up the Pre-booking tax lines
13212 -- Pre-Booking tax lines will be the only ACTIVE set of tax lines at the time K is being Booked
13213 CURSOR l_prevtaxsourcesbk_csr(cp_khr_id IN NUMBER) IS
13214 SELECT id
13215 FROM okl_tax_sources
13216 WHERE khr_id = cp_khr_id
13217 AND tax_call_type_code = G_UPFRONT_TAX
13218 AND tax_line_status_code = G_ACTIVE_STATUS
13219 AND application_id = G_OKL_APPLICATION_ID
13220 AND trx_level_type = G_TRX_LEVEL_TYPE;
13221
13222 -- Get all the asset lines of the contract
13223 CURSOR l_finassets_csr(cp_chr_id IN NUMBER) IS
13224 SELECT cle.id fin_asset_id, cle.name asset_number
13225 FROM okc_k_lines_v cle
13226 WHERE cle.chr_id = cp_chr_id
13227 AND cle.lse_id = 33
13228 AND sts_code NOT IN ('ABANDONED', 'EXPIRED', 'REVERSED', 'TERMINATED');
13229
13230 -- get the current contract and asset line level payments
13231 CURSOR l_k_asset_pymnts_csr(cp_chr_id IN NUMBER) IS
13232 SELECT rgpb.cle_id line_id,
13233 styb.id stream_type_id,
13234 styb.CODE stream_type_code,
13235 sum(nvl((rulb2.RULE_INFORMATION3 * rulb2.RULE_INFORMATION6),0) + nvl(rulb2.RULE_INFORMATION8,0)) line_amt
13236 FROM
13237 okc_rule_groups_b rgpb,
13238 okc_rules_b rulb,
13239 okc_rules_b rulb2,
13240 okl_strm_type_b styb
13241 WHERE rgpb.dnz_chr_id = cp_chr_id
13242 AND rgpb.chr_id = cp_chr_id
13243 AND rgpb.cle_id IS NULL
13244 AND rgpb.rgd_code = 'LALEVL'
13245 AND rulb.rgp_id = rgpb.id
13246 AND rulb.rule_information_category = 'LASLH'
13247 AND rulb.dnz_chr_id = cp_chr_id
13248 AND styb.id = rulb.object1_id1
13249 AND rulb2.object2_id1 = rulb.id
13250 AND rulb2.rgp_id = rgpb.id
13251 AND rulb2.rule_information_category = 'LASLL'
13252 GROUP BY rgpb.cle_id, styb.id, styb.CODE, rulb2.RULE_INFORMATION6
13253 UNION
13254 SELECT rgpb.cle_id line_id,
13255 styb.id stream_type_id,
13256 styb.CODE stream_type_code,
13257 sum(nvl((rulb2.RULE_INFORMATION3 * rulb2.RULE_INFORMATION6),0) + nvl(rulb2.RULE_INFORMATION8,0)) line_amt
13258 FROM okc_k_lines_b cleb,
13259 okc_rule_groups_b rgpb,
13260 okc_rules_b rulb,
13261 okc_rules_b rulb2,
13262 okl_strm_type_b styb
13263 WHERE rgpb.dnz_chr_id = cp_chr_id
13264 AND rgpb.chr_id IS NULL
13265 AND rgpb.cle_id = cleb.id
13266 AND cleb.dnz_chr_id = cp_chr_id
13267 AND cleb.lse_id = 33
13268 AND cleb.sts_code NOT IN ('ABANDONED', 'EXPIRED', 'REVERSED', 'TERMINATED')
13269 AND rgpb.rgd_code = 'LALEVL'
13270 AND rulb.rgp_id = rgpb.id
13271 AND rulb.rule_information_category = 'LASLH'
13272 AND rulb.dnz_chr_id = cp_chr_id
13273 AND styb.id = rulb.object1_id1
13274 AND rulb2.object2_id1 = rulb.id
13275 AND rulb2.rgp_id = rgpb.id
13276 AND rulb2.rule_information_category = 'LASLL'
13277 GROUP BY rgpb.cle_id, styb.id, styb.CODE, rulb2.RULE_INFORMATION6;
13278
13279 -- get the inventory item id and inventory item org for a financial asset
13280 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
13281 SELECT cim_model.object1_id1,
13282 cim_model.object1_id2
13283 FROM okc_k_items cim_model,
13284 okc_k_lines_b cleb_model,
13285 okc_line_styles_b lseb_model
13286 WHERE cim_model.cle_id = cleb_model.id
13287 AND cleb_model.cle_id = cp_fin_asset_id
13288 AND lseb_model.id = cleb_model.lse_id
13289 AND lseb_model.lty_code = 'ITEM';
13290
13291 -- Check if tax basis override formula exists
13292 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
13293 SELECT fma_id
13294 FROM okl_tax_basis_override
13295 WHERE try_id = cp_try_id
13296 AND org_id = MO_GLOBAL.get_current_org_id;
13297
13298 -- GET FORMULA NAME
13299 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
13300 SELECT name
13301 FROM Okl_formulae_b
13302 WHERE id = cp_fma_id;
13303
13304 l_fetch_size NUMBER := 10000;
13305 l_bk_trx_type_id_det NUMBER;
13306 l_khr_id NUMBER;
13307 l_legal_entity_id NUMBER;
13308 i NUMBER;
13309 l_fma_id NUMBER;
13310 l_formula_name VARCHAR2(150);
13311 l_ledger_id NUMBER;
13312
13313 lx_cust_acct_id NUMBER;
13314 lx_currency_code VARCHAR2(15);
13315 lx_precision NUMBER;
13316 lx_minimum_accountable_unit NUMBER;
13317 lx_cust_trx_type_id NUMBER;
13318
13319 lx_pb_prch_opt_det VARCHAR2(450);
13320 lx_pb_fin_prod_id_det NUMBER;
13321 lx_pb_int_disclosed_det VARCHAR2(30);
13322 l_tax_call_type VARCHAR2(30);
13323
13324 l_pb_transfer_of_title VARCHAR2(30);
13325 l_pb_sale_lease_back VARCHAR2(30);
13326 l_pb_purchase_of_lease VARCHAR2(30);
13327 l_pb_usage_of_equipment VARCHAR2(450);
13328 l_pb_age_of_equipment NUMBER;
13329 l_pb_vendor_site_id NUMBER;
13330 l_inv_item_id NUMBER;
13331 l_inv_item_org_id NUMBER;
13332
13333 lx_bill_to_party_site_id NUMBER;
13334 lx_bill_to_location_id NUMBER;
13335 lx_bill_to_party_id NUMBER;
13336 lx_bill_to_siteuseid NUMBER;
13337 lx_ship_to_party_site_id NUMBER;
13338 lx_ship_to_location_id NUMBER;
13339 lx_ship_to_party_id NUMBER;
13340 lx_ship_to_siteuseid NUMBER;
13341
13342 lx_org_id NUMBER;
13343 lx_book_class_code VARCHAR2(30);
13344 lx_currency_conversion_type VARCHAR2(30);
13345 lx_currency_conversion_rate NUMBER;
13346 lx_currency_conversion_date DATE;
13347 lx_contract_start_date DATE;
13348
13349 tax_call_cnt NUMBER;
13350 k_pymnt_exist VARCHAR2(1);
13351 l_reported_yn VARCHAR2(1);
13352
13353 l_internal_organization_id NUMBER;
13354 l_application_id NUMBER;
13355 l_entity_code VARCHAR2(30);
13356 l_event_class_code VARCHAR2(30);
13357 k NUMBER;
13358 l_taxation_country VARCHAR2(2);
13359 ind NUMBER;
13360 l_delete_data BOOLEAN := FALSE;
13361
13362 l_event_type_code VARCHAR2(30);
13363
13364
13365 TYPE prev_tax_source_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
13366 TYPE prev_tx_trx_det_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
13367 TYPE k_asset_pymnts_tbl_type IS TABLE OF l_k_asset_pymnts_csr%ROWTYPE INDEX BY BINARY_INTEGER;
13368 TYPE finassets_tbl_type IS TABLE OF l_finassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
13369
13370 l_k_asset_pymnts_tbl k_asset_pymnts_tbl_type;
13371 l_prev_tax_source_tbl prev_tax_source_tbl_type;
13372 lp_hdr_params_rec hdr_params_rec_type;
13373 l_transaction_rec transaction_rec_type;
13374 lp_tax_src_params_rec tax_src_params_rec_type;
13375 lx_line_params_tbl line_params_tbl_type;
13376 l_pb_asset_level_det_tbl asset_level_det_tbl_type;
13377 lx_tax_sources_tbl tax_sources_tbl_type;
13378 l_finassets_tbl finassets_tbl_type;
13379
13380 BEGIN
13381
13382 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13383 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax','Begin(+)');
13384 END IF;
13385
13386 --Print Input Variables
13387 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13388 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13389 'p_init_msg_list :'||p_init_msg_list);
13390 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13391 'p_source_trx_id :'||p_source_trx_id);
13392 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13393 'p_source_trx_name :'||p_source_trx_name);
13394 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13395 'p_source_table :'||p_source_table);
13396
13397 END IF;
13398
13399 x_return_status := OKL_API.G_RET_STS_SUCCESS;
13400
13401 IF (p_source_trx_name = 'Booking') THEN
13402 -- validate the source trx id
13403 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
13404 FETCH l_trxcontracts_csr INTO l_bk_trx_type_id_det, l_khr_id, l_legal_entity_id;
13405 -- At this point, l_bk_trx_type_id_det will be the id of Booking trx type
13406 IF l_trxcontracts_csr%NOTFOUND THEN
13407 -- source trx id is invalid
13408 OKC_API.set_message( p_app_name => 'OKC',
13409 p_msg_name => G_INVALID_VALUE,
13410 p_token1 => G_COL_NAME_TOKEN,
13411 p_token1_value => 'SOURCE_TRX_ID');
13412 RAISE OKL_API.G_EXCEPTION_ERROR;
13413 END IF;
13414 CLOSE l_trxcontracts_csr;
13415 ELSIF (p_source_trx_name = 'Rebook') THEN
13416 -- validate the source trx id
13417 OPEN l_trxcontracts_rbk_csr(p_source_trx_id, p_source_trx_name);
13418 FETCH l_trxcontracts_rbk_csr INTO l_khr_id, l_legal_entity_id;
13419 -- At this point, l_bk_trx_type_id_det will be the id of Booking trx type
13420 IF l_trxcontracts_rbk_csr%NOTFOUND THEN
13421 -- source trx id is invalid
13422 OKC_API.set_message( p_app_name => 'OKC',
13423 p_msg_name => G_INVALID_VALUE,
13424 p_token1 => G_COL_NAME_TOKEN,
13425 p_token1_value => 'SOURCE_TRX_ID');
13426 RAISE OKL_API.G_EXCEPTION_ERROR;
13427 END IF;
13428 CLOSE l_trxcontracts_rbk_csr;
13429
13430 OPEN l_bookingtrxtypeid_csr;
13431 FETCH l_bookingtrxtypeid_csr INTO l_bk_trx_type_id_det;
13432 CLOSE l_bookingtrxtypeid_csr;
13433
13434 END IF;
13435
13436 l_tax_call_type := upper(p_tax_call_type);
13437
13438 IF (l_tax_call_type IS NOT NULL AND
13439 l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE)) THEN
13440 OKC_API.set_message( p_app_name => 'OKC',
13441 p_msg_name => G_INVALID_VALUE,
13442 p_token1 => G_COL_NAME_TOKEN,
13443 p_token1_value => 'TAX_CALL_TYPE');
13444 RAISE OKL_API.G_EXCEPTION_ERROR;
13445 END IF;
13446
13447 IF (l_tax_call_type = G_ESTIMATED_CALL_TYPE) THEN
13448
13449 l_event_class_code := G_BOOKING_EVENT_CLASS_CODE;
13450 l_event_type_code := G_BOOKING_CRE_EVT_TYPE_CODE;
13451
13452 -- Fetch info from tax sources
13453 OPEN l_tax_src_info_csr(l_khr_id, p_source_trx_id);
13454 FETCH l_tax_src_info_csr INTO l_internal_organization_id, l_application_id,
13455 l_entity_code, l_event_class_code;
13456 CLOSE l_tax_src_info_csr;
13457
13458 -- Check if estimated Booking tax lines already exist for p_source_trx_id
13459 -- This may happen if contract is validated multiple times prior to activation
13460 -- Bulk delete Previous Booking tax sources
13461 OPEN l_prev_taxsources_csr(l_khr_id, p_source_trx_id);
13462 LOOP
13463 l_prev_tax_source_tbl.DELETE;
13464 FETCH l_prev_taxsources_csr BULK COLLECT INTO l_prev_tax_source_tbl LIMIT l_fetch_size;
13465 IF l_prev_tax_source_tbl.COUNT > 0 THEN
13466 l_delete_data := TRUE;
13467 BEGIN
13468 FORALL i IN l_prev_tax_source_tbl.FIRST..l_prev_tax_source_tbl.LAST
13469 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prev_tax_source_tbl(i);
13470
13471 EXCEPTION
13472 WHEN OTHERS THEN
13473 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
13474 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
13475 OKL_API.set_message(p_app_name => 'OKL',
13476 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
13477 p_token1 => 'TABLE_NAME',
13478 p_token1_value => 'OKL_TAX_SOURCES',
13479 p_token2 => 'ERROR_CODE',
13480 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
13481 p_token3 => 'ITERATION',
13482 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
13483 END LOOP;
13484 RAISE OKL_API.G_EXCEPTION_ERROR;
13485 END IF;
13486 END;
13487 END IF;
13488 EXIT WHEN l_prev_taxsources_csr%NOTFOUND;
13489 END LOOP;
13490 CLOSE l_prev_taxsources_csr;
13491 -- deletion from tax sources -- end
13492
13493 -- delete booking tax lines from zx_lines -- start
13494 IF (l_delete_data) THEN
13495
13496 l_transaction_rec.internal_organization_id := l_internal_organization_id;
13497 l_transaction_rec.application_id := l_application_id;
13498 l_transaction_rec.entity_code := l_entity_code;
13499 l_transaction_rec.event_class_code := l_event_class_code;
13500 l_transaction_rec.event_type_code := G_BOOK_DEL_EVENT_CODE;
13501
13502 l_transaction_rec.trx_id := p_source_trx_id;
13503
13504 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13505 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13506 'OKL_TAX_INTERFACE_PVT.update_document');
13507 END IF;
13508
13509 OKL_TAX_INTERFACE_PVT.update_document(p_api_version => p_api_version,
13510 p_init_msg_list => p_init_msg_list,
13511 x_return_status => x_return_status,
13512 x_msg_count => x_msg_count,
13513 x_msg_data => x_msg_data,
13514 p_transaction_rec => l_transaction_rec);
13515
13516 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13517 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13518 'Return Status' || x_return_status);
13519 END IF;
13520
13521 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13522 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13523 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13524 RAISE OKL_API.G_EXCEPTION_ERROR;
13525 END IF;
13526 END IF;
13527 -- delete booking tax lines from zx_lines -- end
13528
13529 -- Fetch the Ledger info
13530 l_ledger_id := okl_accounting_util.get_set_of_books_id;
13531 l_reported_yn := 'N';
13532
13533 -- Fetch the Tax country
13534 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
13535 x_msg_count => x_msg_count,
13536 x_msg_data => x_msg_data,
13537 p_legal_entity_id => l_legal_entity_id);
13538 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13539 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13540 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13541 RAISE OKL_API.G_EXCEPTION_ERROR;
13542 END IF;
13543
13544 -- Check if taxable basis override applies to Estimated Booking / Booking transaction
13545 OPEN l_txbasisoverride_csr(l_bk_trx_type_id_det);
13546 FETCH l_txbasisoverride_csr INTO l_fma_id;
13547 CLOSE l_txbasisoverride_csr;
13548
13549 IF l_fma_id IS NOT NULL THEN
13550 OPEN l_formulae_csr(l_fma_id);
13551 FETCH l_formulae_csr INTO l_formula_name;
13552 IF l_formulae_csr%NOTFOUND THEN
13553 OKC_API.set_message( p_app_name => 'OKC',
13554 p_msg_name => G_INVALID_VALUE,
13555 p_token1 => G_COL_NAME_TOKEN,
13556 p_token1_value => 'FMA_ID');
13557 RAISE OKL_API.G_EXCEPTION_ERROR;
13558 END IF;
13559 CLOSE l_formulae_csr;
13560
13561 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13562 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13563 'l_formula_name '||l_formula_name );
13564 END IF;
13565 END IF;
13566
13567 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13568 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13569 'l_khr_id '||l_khr_id );
13570 END IF;
13571 -- Get contract header info
13572 get_k_hdr_tax_params(
13573 p_api_version => p_api_version,
13574 p_init_msg_list => p_init_msg_list,
13575 x_return_status => x_return_status,
13576 x_msg_count => x_msg_count,
13577 x_msg_data => x_msg_data,
13578 p_khr_id => l_khr_id,
13579 p_source_trx_name => p_source_trx_name,
13580 p_source_table => p_source_table,
13581 x_cust_acct_id => lx_cust_acct_id,
13582 x_bill_to_siteuseid => lx_bill_to_siteuseid,
13583 x_currency_code => lx_currency_code,
13584 x_cust_trx_type_id => lx_cust_trx_type_id,
13585 x_precision => lx_precision,
13586 x_minimum_accountable_unit => lx_minimum_accountable_unit,
13587 x_prch_opt_det => lx_pb_prch_opt_det,
13588 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
13589 x_int_disclosed_det => lx_pb_int_disclosed_det,
13590 x_org_id => lx_org_id,
13591 x_book_class_code => lx_book_class_code,
13592 x_bill_to_party_site_id => lx_bill_to_party_site_id,
13593 x_bill_to_party_id => lx_bill_to_party_id,
13594 x_bill_to_location_id => lx_bill_to_location_id,
13595 x_currency_conversion_type => lx_currency_conversion_type,
13596 x_currency_conversion_rate => lx_currency_conversion_rate,
13597 x_currency_conversion_date => lx_currency_conversion_date,
13598 x_contract_start_date => lx_contract_start_date);
13599
13600 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13601 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13602 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13603 RAISE OKL_API.G_EXCEPTION_ERROR;
13604 END IF;
13605
13606 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13607 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13608 'l_cust_acct_id '||lx_cust_acct_id );
13609 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13610 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
13611 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13612 'lx_currency_code '||lx_currency_code );
13613 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13614 'lx_cust_trx_type_id '||lx_cust_trx_type_id );
13615 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13616 'lx_precision '||lx_precision );
13617 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13618 'lx_minimum_accountable_unit '||lx_minimum_accountable_unit );
13619 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13620 'lx_pb_prch_opt_det '||lx_pb_prch_opt_det );
13621 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13622 'lx_pb_fin_prod_id_det '||lx_pb_fin_prod_id_det );
13623 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13624 'lx_pb_int_disclosed_det '||lx_pb_int_disclosed_det );
13625 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13626 'lx_org_id '||lx_org_id );
13627 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13628 'lx_book_class_code '||lx_book_class_code );
13629 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13630 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
13631 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13632 'lx_bill_to_party_id '||lx_bill_to_party_id );
13633 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13634 'lx_bill_to_location_id '||lx_bill_to_location_id );
13635 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13636 'lx_currency_conversion_type '||lx_currency_conversion_type );
13637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13638 'lx_currency_conversion_rate '||lx_currency_conversion_rate );
13639 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13640 'lx_currency_conversion_date '||lx_currency_conversion_date );
13641 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13642 'lx_contract_start_date '||lx_contract_start_date );
13643 END IF;
13644
13645 -- Tax call will be made at the contract and asset line level, even if no payments exist at any of these levels
13646 i := 0;
13647
13648 OPEN l_finassets_csr(l_khr_id);
13649 LOOP
13650 l_finassets_tbl.DELETE;
13651 FETCH l_finassets_csr BULK COLLECT INTO l_finassets_tbl LIMIT l_fetch_size;
13652
13653 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13654 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13655 'l_finassets_tbl.COUNT '||l_finassets_tbl.COUNT );
13656 END IF;
13657
13658 IF l_finassets_tbl.COUNT > 0 THEN
13659
13660 FOR K IN l_finassets_tbl.FIRST..l_finassets_tbl.LAST LOOP
13661
13662 l_pb_transfer_of_title := null;
13663 l_pb_sale_lease_back := null;
13664 l_pb_purchase_of_lease := null;
13665 l_pb_usage_of_equipment := null;
13666 l_pb_age_of_equipment := null;
13667 l_pb_vendor_site_id := null;
13668
13669 lx_bill_to_party_site_id := null;
13670 lx_bill_to_location_id := null;
13671 lx_bill_to_party_id := null;
13672 lx_bill_to_siteuseid := null;
13673 lx_ship_to_party_site_id := null;
13674 lx_ship_to_location_id := null;
13675 lx_ship_to_party_id := null;
13676 lx_ship_to_siteuseid := null;
13677
13678 -- Get financial asset line level tax determinants --
13679 get_asset_tax_params(
13680 p_api_version => p_api_version,
13681 p_init_msg_list => OKC_API.G_FALSE,
13682 x_return_status => x_return_status,
13683 x_msg_count => x_msg_count,
13684 x_msg_data => x_msg_data,
13685 p_khr_id => l_khr_id,
13686 p_kle_id => l_finassets_tbl(k).fin_asset_id,
13687 p_source_trx_name => p_source_trx_name,
13688 p_source_table => p_source_table,
13689 x_transfer_of_title => l_pb_transfer_of_title,
13690 x_sale_lease_back => l_pb_sale_lease_back,
13691 x_purchase_of_lease => l_pb_purchase_of_lease,
13692 x_usage_of_equipment => l_pb_usage_of_equipment,
13693 x_age_of_equipment => l_pb_age_of_equipment,
13694 x_vendor_site_id => l_pb_vendor_site_id);
13695
13696 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13697 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13698 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13699 RAISE OKL_API.G_EXCEPTION_ERROR;
13700 END IF;
13701
13702 -- Equipment Type(inventory item id)
13703 -- get the inventory item id
13704 OPEN l_invitem_csr(l_finassets_tbl(k).fin_asset_id);
13705 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
13706 IF l_invitem_csr%NOTFOUND THEN
13707 OKL_API.set_message(
13708 p_app_name => 'OKL',
13709 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
13710 p_token1 => 'ASSET_NUMBER',
13711 p_token1_value => l_finassets_tbl(k).asset_number);
13712
13713 RAISE OKL_API.G_EXCEPTION_ERROR;
13714 END IF;
13715 CLOSE l_invitem_csr;
13716
13717 -- get the Location Party ID's
13718 get_location_party_ids(
13719 p_api_version => p_api_version,
13720 p_init_msg_list => OKC_API.G_FALSE,
13721 x_return_status => x_return_status,
13722 x_msg_count => x_msg_count,
13723 x_msg_data => x_msg_data,
13724 p_cust_acct_id => lx_cust_acct_id,
13725 p_fin_asset_id => l_finassets_tbl(k).fin_asset_id,
13726 p_khr_id => l_khr_id,
13727 x_bill_to_party_site_id => lx_bill_to_party_site_id,
13728 x_bill_to_location_id => lx_bill_to_location_id,
13729 x_bill_to_party_id => lx_bill_to_party_id,
13730 x_bill_to_site_use_id => lx_bill_to_siteuseid,
13731 x_ship_to_party_site_id => lx_ship_to_party_site_id,
13732 x_ship_to_location_id => lx_ship_to_location_id,
13733 x_ship_to_party_id => lx_ship_to_party_id,
13734 x_ship_to_site_use_id => lx_ship_to_siteuseid);
13735
13736 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13737 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13738 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13739 RAISE OKL_API.G_EXCEPTION_ERROR;
13740 END IF;
13741
13742 l_pb_asset_level_det_tbl(i).fin_asset_id := l_finassets_tbl(k).fin_asset_id;
13743 l_pb_asset_level_det_tbl(i).asset_number := l_finassets_tbl(k).asset_number;
13744 l_pb_asset_level_det_tbl(i).transfer_of_title := l_pb_transfer_of_title;
13745 l_pb_asset_level_det_tbl(i).sale_lease_back := l_pb_sale_lease_back;
13746 l_pb_asset_level_det_tbl(i).purchase_of_lease := l_pb_purchase_of_lease;
13747 l_pb_asset_level_det_tbl(i).usage_of_equipment := l_pb_usage_of_equipment;
13748 l_pb_asset_level_det_tbl(i).vendor_site_id := l_pb_vendor_site_id;
13749 l_pb_asset_level_det_tbl(i).age_of_equipment := l_pb_age_of_equipment;
13750
13751 -- tax engine parameters
13752 l_pb_asset_level_det_tbl(i).inv_item_id := l_inv_item_id;
13753 l_pb_asset_level_det_tbl(i).inv_org_id := l_inv_item_org_id;
13754
13755 -- Party, location identifiers
13756 l_pb_asset_level_det_tbl(i).ship_to_site_use_id := lx_ship_to_siteuseid;
13757 l_pb_asset_level_det_tbl(i).ship_to_party_site_id := lx_ship_to_party_site_id;
13758 l_pb_asset_level_det_tbl(i).ship_to_location_id := lx_ship_to_location_id;
13759 l_pb_asset_level_det_tbl(i).ship_to_party_id := lx_ship_to_party_id;
13760
13761 l_pb_asset_level_det_tbl(i).bill_to_party_site_id := lx_bill_to_party_site_id;
13762 l_pb_asset_level_det_tbl(i).bill_to_location_id := lx_bill_to_location_id;
13763 l_pb_asset_level_det_tbl(i).bill_to_party_id := lx_bill_to_party_id;
13764 l_pb_asset_level_det_tbl(i).bill_to_site_use_id := lx_bill_to_siteuseid;
13765
13766 l_pb_asset_level_det_tbl(i).asset_pymnt_exist := 'N';
13767
13768 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13769 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.', 'i '||i );
13770 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13771 'fin_asset_id '||l_finassets_tbl(k).fin_asset_id );
13772 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13773 'asset_number '||l_finassets_tbl(k).asset_number );
13774 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13775 'l_pb_transfer_of_title '||l_pb_transfer_of_title );
13776 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13777 'l_pb_sale_lease_back '||l_pb_sale_lease_back );
13778 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13779 'l_pb_purchase_of_lease '||l_pb_purchase_of_lease );
13780 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13781 'l_pb_usage_of_equipment '||l_pb_usage_of_equipment );
13782 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13783 'l_pb_vendor_site_id '||l_pb_vendor_site_id );
13784 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13785 'l_pb_age_of_equipment '||l_pb_age_of_equipment );
13786 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13787 'l_inv_item_id '||l_inv_item_id );
13788 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13789 'l_inv_item_org_id '||l_inv_item_org_id );
13790 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13791 'lx_ship_to_siteuseid '||lx_ship_to_siteuseid );
13792 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13793 'lx_ship_to_party_site_id '||lx_ship_to_party_site_id );
13794 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13795 'lx_ship_to_location_id '||lx_ship_to_location_id );
13796 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13797 'lx_ship_to_party_id '||lx_ship_to_party_id );
13798 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13799 'lx_bill_to_party_site_id '||lx_bill_to_party_site_id );
13800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13801 'lx_bill_to_location_id '||lx_bill_to_location_id );
13802 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13803 'lx_bill_to_party_id '||lx_bill_to_party_id );
13804 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13805 'lx_bill_to_siteuseid '||lx_bill_to_siteuseid );
13806 END IF;
13807
13808 i := i+1;
13809 END LOOP;
13810 END IF;
13811 EXIT WHEN l_finassets_csr%NOTFOUND;
13812 END LOOP;
13813 CLOSE l_finassets_csr;
13814
13815 -- Get TBC at payment level (for each unique combination of K/Asset Line and payment) --
13816 k_pymnt_exist := 'N';
13817
13818 i := 1;
13819 OPEN l_k_asset_pymnts_csr(l_khr_id);
13820 LOOP
13821 l_k_asset_pymnts_tbl.DELETE;
13822 FETCH l_k_asset_pymnts_csr BULK COLLECT INTO l_k_asset_pymnts_tbl LIMIT l_fetch_size;
13823
13824 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13825 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13826 'l_k_asset_pymnts_tbl.count '||l_k_asset_pymnts_tbl.count||' i = '||i );
13827 END IF;
13828
13829 IF l_k_asset_pymnts_tbl.count = 0 AND i = 1 THEN
13830 -- No payments exist
13831 -- tax call will still be made at the K hdr and each fin asset line level
13832 tax_call_cnt := 1;
13833
13834 -- contract level call begin
13835 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13836 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13837 'No payments exist, tax_call_cnt = '||tax_call_cnt);
13838 END IF;
13839
13840 -- Populate tax sources record -- start
13841 lp_tax_src_params_rec.kle_id := null;
13842 lp_tax_src_params_rec.asset_number := null;
13843 lp_tax_src_params_rec.line_name := null;
13844
13845 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
13846 lp_tax_src_params_rec.ship_to_party_site_id := null;
13847 lp_tax_src_params_rec.ship_to_party_id := null;
13848 lp_tax_src_params_rec.ship_to_location_id := null;
13849
13850 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
13851 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
13852 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
13853 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
13854
13855 lp_tax_src_params_rec.inventory_item_id := null;
13856 lp_tax_src_params_rec.sty_id := null;
13857 lp_tax_src_params_rec.khr_id := l_khr_id;
13858 lp_tax_src_params_rec.trx_id := p_source_trx_id;
13859 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
13860 lp_tax_src_params_rec.event_class_code := l_event_class_code;
13861 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
13862 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
13863 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
13864 lp_tax_src_params_rec.reported_yn := l_reported_yn;
13865 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
13866 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
13867 lp_tax_src_params_rec.line_intended_use := null;
13868 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
13869 lp_tax_src_params_rec.org_id := lx_org_id;
13870 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
13871 lp_tax_src_params_rec.line_amt := 0;
13872 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
13873
13874 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
13875 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
13876 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
13877 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
13878 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
13879 lp_tax_src_params_rec.adjusted_doc_number := null;
13880 lp_tax_src_params_rec.adjusted_doc_date := null;
13881 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
13882 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
13883
13884 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
13885 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
13886 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
13887 -- Populate tax sources record -- end
13888
13889 populate_tax_info(
13890 p_api_version => p_api_version,
13891 p_init_msg_list => OKC_API.G_FALSE,
13892 x_return_status => x_return_status,
13893 x_msg_count => x_msg_count,
13894 x_msg_data => x_msg_data,
13895 p_prch_opt_det => lx_pb_prch_opt_det,
13896 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
13897 p_int_disclosed_det => lx_pb_int_disclosed_det,
13898 -- asset level begin
13899 p_title_trnsfr_code => null,
13900 p_sale_lease_back_code => null,
13901 p_lease_purchased_code => null,
13902 p_equip_usage_code => null,
13903 p_vendor_site_id => null,
13904 p_age_of_equip => null,
13905 p_source_trx_name => p_source_trx_name,
13906 p_cust_trx_type_id => lx_cust_trx_type_id,
13907 p_book_class_code => lx_book_class_code,
13908 p_tax_call_cnt => tax_call_cnt,
13909 p_fma_id => l_fma_id,
13910 p_formula_name => l_formula_name,
13911 p_minimum_accountable_unit => lx_minimum_accountable_unit,
13912 p_precision => lx_precision,
13913 p_sales_quote_id => null,
13914 p_event_type_code => l_event_type_code,
13915 p_ledger_id => l_ledger_id,
13916 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
13917 p_tax_src_params_rec => lp_tax_src_params_rec,
13918 p_quote_flag => 'N',
13919 p_rounding_ship_to_party_id => null,
13920 p_rounding_bill_to_party_id => lx_bill_to_party_id,
13921 p_line_amt_includes_tax_flag => 'N',
13922 p_term_quote_type_code => null,
13923 p_term_quote_reason_code => null,
13924 px_tax_sources_tbl => lx_tax_sources_tbl,
13925 px_line_params_tbl => lx_line_params_tbl );
13926
13927 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13928 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13929 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13930 RAISE OKL_API.G_EXCEPTION_ERROR;
13931 END IF;
13932
13933 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13934 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13935 'lx_tax_sources_tbl.count '|| lx_tax_sources_tbl.COUNT );
13936 END IF;
13937 -- contract level call end
13938
13939 tax_call_cnt := tax_call_cnt + 1;
13940
13941 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
13942 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
13943 'tax_call_cnt '||tax_call_cnt);
13944 END IF;
13945
13946 -- Fin asset level call begin
13947 IF l_pb_asset_level_det_tbl.COUNT > 0 THEN
13948 FOR asset_cnt IN l_pb_asset_level_det_tbl.FIRST .. l_pb_asset_level_det_tbl.LAST LOOP
13949
13950 -- Populate tax sources record -- start
13951 lp_tax_src_params_rec.kle_id := l_pb_asset_level_det_tbl(asset_cnt).fin_asset_id;
13952 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(asset_cnt).asset_number;
13953 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(asset_cnt).asset_number;
13954
13955 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;
13956 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_site_id;
13957 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_id;
13958 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(asset_cnt).ship_to_location_id;
13959
13960 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_site_id;
13961 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_id;
13962 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(asset_cnt).bill_to_location_id;
13963 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;
13964
13965 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(asset_cnt).inv_item_id;
13966 lp_tax_src_params_rec.sty_id := null;
13967 lp_tax_src_params_rec.khr_id := l_khr_id;
13968 lp_tax_src_params_rec.trx_id := p_source_trx_id;
13969 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
13970 lp_tax_src_params_rec.event_class_code := l_event_class_code;
13971 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
13972 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
13973 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
13974 lp_tax_src_params_rec.reported_yn := l_reported_yn;
13975 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
13976 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
13977 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(asset_cnt).usage_of_equipment;
13978 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
13979 lp_tax_src_params_rec.org_id := lx_org_id;
13980 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
13981 lp_tax_src_params_rec.line_amt := 0;
13982 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
13983
13984 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
13985 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
13986 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
13987 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
13988 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
13989 lp_tax_src_params_rec.adjusted_doc_number := null;
13990 lp_tax_src_params_rec.adjusted_doc_date := null;
13991 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
13992 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
13993
13994 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
13995 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
13996 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
13997 -- Populate tax sources record -- end
13998
13999 -- asset level call begin
14000 populate_tax_info(
14001 p_api_version => p_api_version,
14002 p_init_msg_list => OKC_API.G_FALSE,
14003 x_return_status => x_return_status,
14004 x_msg_count => x_msg_count,
14005 x_msg_data => x_msg_data,
14006 p_prch_opt_det => lx_pb_prch_opt_det,
14007 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14008 p_int_disclosed_det => lx_pb_int_disclosed_det,
14009 -- asset level begin
14010 p_title_trnsfr_code => l_pb_asset_level_det_tbl(asset_cnt).transfer_of_title,
14011 p_sale_lease_back_code => l_pb_asset_level_det_tbl(asset_cnt).sale_lease_back,
14012 p_lease_purchased_code => l_pb_asset_level_det_tbl(asset_cnt).purchase_of_lease,
14013 p_equip_usage_code => l_pb_asset_level_det_tbl(asset_cnt).usage_of_equipment,
14014 p_vendor_site_id => l_pb_asset_level_det_tbl(asset_cnt).vendor_site_id,
14015 p_age_of_equip => l_pb_asset_level_det_tbl(asset_cnt).age_of_equipment,
14016 p_source_trx_name => p_source_trx_name,
14017 p_cust_trx_type_id => lx_cust_trx_type_id,
14018 p_book_class_code => lx_book_class_code,
14019 p_tax_call_cnt => tax_call_cnt,
14020 p_fma_id => l_fma_id,
14021 p_formula_name => l_formula_name,
14022 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14023 p_precision => lx_precision,
14024 p_sales_quote_id => null,
14025 p_event_type_code => l_event_type_code,
14026 p_ledger_id => l_ledger_id,
14027 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14028 p_tax_src_params_rec => lp_tax_src_params_rec,
14029 p_quote_flag => 'N',
14030 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(asset_cnt).ship_to_party_id,
14031 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(asset_cnt).bill_to_party_id,
14032 p_line_amt_includes_tax_flag => 'N',
14033 p_term_quote_type_code => null,
14034 p_term_quote_reason_code => null,
14035 px_tax_sources_tbl => lx_tax_sources_tbl,
14036 px_line_params_tbl => lx_line_params_tbl );
14037
14038 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14039 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14040 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14041 RAISE OKL_API.G_EXCEPTION_ERROR;
14042 END IF;
14043 -- asset level call end
14044
14045 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14046 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14047 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14048 END IF;
14049
14050 tax_call_cnt := tax_call_cnt + 1;
14051 END LOOP;
14052 END IF;
14053 -- Fin asset level call end
14054 -- No payments exist - end
14055 ELSIF l_k_asset_pymnts_tbl.COUNT > 0 THEN
14056 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14057 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14058 'payments exist ');
14059 END IF;
14060
14061 FOR K IN l_k_asset_pymnts_tbl.FIRST..l_k_asset_pymnts_tbl.LAST LOOP
14062 tax_call_cnt := i;
14063
14064 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14065 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14066 'tax_call_cnt '||tax_call_cnt);
14067 END IF;
14068
14069 IF l_k_asset_pymnts_tbl(k).line_id IS NULL THEN
14070 -- K level payment
14071 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14072 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14073 'K level payment ');
14074 END IF;
14075
14076 -- Populate tax sources record -- start
14077 lp_tax_src_params_rec.kle_id := null;
14078 lp_tax_src_params_rec.asset_number := null;
14079 lp_tax_src_params_rec.line_name := null;
14080
14081 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
14082 lp_tax_src_params_rec.ship_to_party_site_id := null;
14083 lp_tax_src_params_rec.ship_to_party_id := null;
14084 lp_tax_src_params_rec.ship_to_location_id := null;
14085
14086 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
14087 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
14088 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
14089 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
14090
14091 lp_tax_src_params_rec.inventory_item_id := null;
14092 lp_tax_src_params_rec.sty_id := l_k_asset_pymnts_tbl(k).stream_type_id;
14093 lp_tax_src_params_rec.khr_id := l_khr_id;
14094 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14095 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14096 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14097 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14098 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14099 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14100 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14101 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14102 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14103 lp_tax_src_params_rec.line_intended_use := null;
14104 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14105 lp_tax_src_params_rec.org_id := lx_org_id;
14106 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14107 lp_tax_src_params_rec.line_amt := l_k_asset_pymnts_tbl(k).line_amt;
14108 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14109
14110 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14111 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14112 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14113 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14114 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14115 lp_tax_src_params_rec.adjusted_doc_number := null;
14116 lp_tax_src_params_rec.adjusted_doc_date := null;
14117 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14118 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14119
14120 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14121 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14122 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14123 -- Populate tax sources record -- end
14124
14125 populate_tax_info(
14126 p_api_version => p_api_version,
14127 p_init_msg_list => OKC_API.G_FALSE,
14128 x_return_status => x_return_status,
14129 x_msg_count => x_msg_count,
14130 x_msg_data => x_msg_data,
14131 p_prch_opt_det => lx_pb_prch_opt_det,
14132 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14133 p_int_disclosed_det => lx_pb_int_disclosed_det,
14134 -- asset level begin
14135 p_title_trnsfr_code => null,
14136 p_sale_lease_back_code => null,
14137 p_lease_purchased_code => null,
14138 p_equip_usage_code => null,
14139 p_vendor_site_id => null,
14140 p_age_of_equip => null,
14141 p_source_trx_name => p_source_trx_name,
14142 p_cust_trx_type_id => lx_cust_trx_type_id,
14143 p_book_class_code => lx_book_class_code,
14144 p_tax_call_cnt => tax_call_cnt,
14145 p_fma_id => l_fma_id,
14146 p_formula_name => l_formula_name,
14147 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14148 p_precision => lx_precision,
14149 p_sales_quote_id => null,
14150 p_event_type_code => l_event_type_code,
14151 p_ledger_id => l_ledger_id,
14152 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14153 p_tax_src_params_rec => lp_tax_src_params_rec,
14154 p_quote_flag => 'N',
14155 p_rounding_ship_to_party_id => null,
14156 p_rounding_bill_to_party_id => lx_bill_to_party_id,
14157 p_line_amt_includes_tax_flag => 'N',
14158 p_term_quote_type_code => null,
14159 p_term_quote_reason_code => null,
14160 px_tax_sources_tbl => lx_tax_sources_tbl,
14161 px_line_params_tbl => lx_line_params_tbl );
14162
14163 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14164 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14165 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14166 RAISE OKL_API.G_EXCEPTION_ERROR;
14167 END IF;
14168
14169 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14170 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14171 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14172 END IF;
14173
14174 k_pymnt_exist := 'Y';
14175
14176 ELSE -- asset line level payment
14177
14178 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14179 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14180 'asset line level payment ');
14181 END IF;
14182
14183 IF l_pb_asset_level_det_tbl.count > 0 THEN
14184 ind := l_pb_asset_level_det_tbl.FIRST;
14185 LOOP
14186 IF l_pb_asset_level_det_tbl(ind).fin_asset_id = l_k_asset_pymnts_tbl(k).line_id THEN
14187 -- get the determinants and get TBC
14188 l_pb_asset_level_det_tbl(ind).asset_pymnt_exist := 'Y';
14189
14190 -- Populate tax sources record -- start
14191 lp_tax_src_params_rec.kle_id := l_k_asset_pymnts_tbl(k).line_id;
14192 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(ind).asset_number;
14193 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(ind).asset_number;
14194
14195 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(ind).ship_to_site_use_id;
14196 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(ind).ship_to_party_site_id;
14197 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(ind).ship_to_party_id;
14198 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(ind).ship_to_location_id;
14199
14200 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(ind).bill_to_party_site_id;
14201 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(ind).bill_to_party_id;
14202 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(ind).bill_to_location_id;
14203 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(ind).bill_to_site_use_id;
14204
14205 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(ind).inv_item_id;
14206 lp_tax_src_params_rec.sty_id := l_k_asset_pymnts_tbl(k).stream_type_id;
14207 lp_tax_src_params_rec.khr_id := l_khr_id;
14208 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14209 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14210 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14211 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14212 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14213 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14214 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14215 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14216 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14217 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(ind).usage_of_equipment;
14218 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14219 lp_tax_src_params_rec.org_id := lx_org_id;
14220 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14221 lp_tax_src_params_rec.line_amt := l_k_asset_pymnts_tbl(k).line_amt;
14222 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14223
14224 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14225 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14226 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14227 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14228 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14229 lp_tax_src_params_rec.adjusted_doc_number := null;
14230 lp_tax_src_params_rec.adjusted_doc_date := null;
14231 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14232 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14233
14234 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14235 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14236 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14237 -- Populate tax sources record -- end
14238
14239 -- asset level call begin
14240 populate_tax_info(
14241 p_api_version => p_api_version,
14242 p_init_msg_list => OKC_API.G_FALSE,
14243 x_return_status => x_return_status,
14244 x_msg_count => x_msg_count,
14245 x_msg_data => x_msg_data,
14246 p_prch_opt_det => lx_pb_prch_opt_det,
14247 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14248 p_int_disclosed_det => lx_pb_int_disclosed_det,
14249 -- asset level begin
14250 p_title_trnsfr_code => l_pb_asset_level_det_tbl(ind).transfer_of_title,
14251 p_sale_lease_back_code => l_pb_asset_level_det_tbl(ind).sale_lease_back,
14252 p_lease_purchased_code => l_pb_asset_level_det_tbl(ind).purchase_of_lease,
14253 p_equip_usage_code => l_pb_asset_level_det_tbl(ind).usage_of_equipment,
14254 p_vendor_site_id => l_pb_asset_level_det_tbl(ind).vendor_site_id,
14255 p_age_of_equip => l_pb_asset_level_det_tbl(ind).age_of_equipment,
14256 p_source_trx_name => p_source_trx_name,
14257 p_cust_trx_type_id => lx_cust_trx_type_id,
14258 p_book_class_code => lx_book_class_code,
14259 p_tax_call_cnt => tax_call_cnt,
14260 p_fma_id => l_fma_id,
14261 p_formula_name => l_formula_name,
14262 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14263 p_precision => lx_precision,
14264 p_sales_quote_id => null,
14265 p_event_type_code => l_event_type_code,
14266 p_ledger_id => l_ledger_id,
14267 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14268 p_tax_src_params_rec => lp_tax_src_params_rec,
14269 p_quote_flag => 'N',
14270 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(ind).ship_to_party_id,
14271 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(ind).bill_to_party_id,
14272 p_line_amt_includes_tax_flag => 'N',
14273 p_term_quote_type_code => null,
14274 p_term_quote_reason_code => null,
14275 px_tax_sources_tbl => lx_tax_sources_tbl,
14276 px_line_params_tbl => lx_line_params_tbl );
14277
14278 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14279 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14280 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14281 RAISE OKL_API.G_EXCEPTION_ERROR;
14282 END IF;
14283
14284 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14285 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14286 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14287 END IF;
14288 -- asset level call end
14289 EXIT;
14290 END IF;
14291 EXIT WHEN (ind = l_pb_asset_level_det_tbl.LAST);
14292 ind := l_pb_asset_level_det_tbl.NEXT(ind);
14293 END LOOP;
14294 END IF;
14295 END IF;
14296 i := i + 1;
14297 END LOOP;
14298 END IF;
14299 EXIT WHEN l_k_asset_pymnts_csr%NOTFOUND;
14300 END LOOP;
14301 CLOSE l_k_asset_pymnts_csr;
14302
14303 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14304 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.', 'i '||i);
14305 END IF;
14306
14307 IF i > 1 THEN -- some payments exist
14308 tax_call_cnt := i; -- pick the last index
14309
14310 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14311 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14312 'some payments exist, tax_call_cnt= '||tax_call_cnt);
14313 END IF;
14314
14315 IF k_pymnt_exist = 'N' THEN -- K level payment does not exist
14316
14317 -- contract level call begin
14318 --tax_call_cnt := i; -- pick the last index
14319 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14320 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14321 'K level payment does not exist ');
14322 END IF;
14323
14324 -- Populate tax sources record -- start
14325 lp_tax_src_params_rec.kle_id := null;
14326 lp_tax_src_params_rec.asset_number := null;
14327 lp_tax_src_params_rec.line_name := null;
14328
14329 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := null;
14330 lp_tax_src_params_rec.ship_to_party_site_id := null;
14331 lp_tax_src_params_rec.ship_to_party_id := null;
14332 lp_tax_src_params_rec.ship_to_location_id := null;
14333
14334 lp_tax_src_params_rec.bill_to_party_site_id := lx_bill_to_party_site_id;
14335 lp_tax_src_params_rec.bill_to_party_id := lx_bill_to_party_id;
14336 lp_tax_src_params_rec.bill_to_location_id := lx_bill_to_location_id;
14337 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := lx_bill_to_siteuseid;
14338
14339 lp_tax_src_params_rec.inventory_item_id := null;
14340 lp_tax_src_params_rec.sty_id := null;
14341 lp_tax_src_params_rec.khr_id := l_khr_id;
14342 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14343 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14344 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14345 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14346 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14347 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14348 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14349 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14350 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14351 lp_tax_src_params_rec.line_intended_use := null;
14352 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14353 lp_tax_src_params_rec.org_id := lx_org_id;
14354 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14355 lp_tax_src_params_rec.line_amt := 0;
14356 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14357
14358 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14359 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14360 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14361 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14362 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14363 lp_tax_src_params_rec.adjusted_doc_number := null;
14364 lp_tax_src_params_rec.adjusted_doc_date := null;
14365 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14366 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14367
14368 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14369 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14370 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14371 -- Populate tax sources record -- end
14372
14373 populate_tax_info(
14374 p_api_version => p_api_version,
14375 p_init_msg_list => OKC_API.G_FALSE,
14376 x_return_status => x_return_status,
14377 x_msg_count => x_msg_count,
14378 x_msg_data => x_msg_data,
14379 p_prch_opt_det => lx_pb_prch_opt_det,
14380 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14381 p_int_disclosed_det => lx_pb_int_disclosed_det,
14382 -- asset level begin
14383 p_title_trnsfr_code => null,
14384 p_sale_lease_back_code => null,
14385 p_lease_purchased_code => null,
14386 p_equip_usage_code => null,
14387 p_vendor_site_id => null,
14388 p_age_of_equip => null,
14389 p_source_trx_name => p_source_trx_name,
14390 p_cust_trx_type_id => lx_cust_trx_type_id,
14391 p_book_class_code => lx_book_class_code,
14392 p_tax_call_cnt => tax_call_cnt,
14393 p_fma_id => l_fma_id,
14394 p_formula_name => l_formula_name,
14395 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14396 p_precision => lx_precision,
14397 p_sales_quote_id => null,
14398 p_event_type_code => l_event_type_code,
14399 p_ledger_id => l_ledger_id,
14400 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14401 p_tax_src_params_rec => lp_tax_src_params_rec,
14402 p_quote_flag => 'N',
14403 p_rounding_ship_to_party_id => null,
14404 p_rounding_bill_to_party_id => lx_bill_to_party_id,
14405 p_line_amt_includes_tax_flag => 'N',
14406 p_term_quote_type_code => null,
14407 p_term_quote_reason_code => null,
14408 px_tax_sources_tbl => lx_tax_sources_tbl,
14409 px_line_params_tbl => lx_line_params_tbl );
14410
14411 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14412 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14413 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14414 RAISE OKL_API.G_EXCEPTION_ERROR;
14415 END IF;
14416
14417 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14418 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14419 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14420 END IF;
14421 -- contract level call end
14422 tax_call_cnt := tax_call_cnt + 1;
14423 END IF;
14424
14425 -- this table will have one record for each asset
14426 -- check if payment does not exist for any of the assets
14427 FOR k IN l_pb_asset_level_det_tbl.FIRST .. l_pb_asset_level_det_tbl.LAST LOOP
14428 IF l_pb_asset_level_det_tbl(k).asset_pymnt_exist = 'N' THEN -- asset level payment does not exist
14429 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14430 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14431 'tax_call_cnt '||tax_call_cnt||'asset_pymnt_exist = N ' );
14432 END IF;
14433
14434 -- asset level call begin
14435 -- Populate tax sources record -- start
14436 lp_tax_src_params_rec.kle_id := l_pb_asset_level_det_tbl(k).fin_asset_id;
14437 lp_tax_src_params_rec.asset_number := l_pb_asset_level_det_tbl(k).asset_number;
14438 lp_tax_src_params_rec.line_name := l_pb_asset_level_det_tbl(k).asset_number;
14439
14440 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(k).ship_to_site_use_id;
14441 lp_tax_src_params_rec.ship_to_party_site_id := l_pb_asset_level_det_tbl(k).ship_to_party_site_id;
14442 lp_tax_src_params_rec.ship_to_party_id := l_pb_asset_level_det_tbl(k).ship_to_party_id;
14443 lp_tax_src_params_rec.ship_to_location_id := l_pb_asset_level_det_tbl(k).ship_to_location_id;
14444 lp_tax_src_params_rec.bill_to_party_site_id := l_pb_asset_level_det_tbl(k).bill_to_party_site_id;
14445 lp_tax_src_params_rec.bill_to_party_id := l_pb_asset_level_det_tbl(k).bill_to_party_id;
14446 lp_tax_src_params_rec.bill_to_location_id := l_pb_asset_level_det_tbl(k).bill_to_location_id;
14447 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_pb_asset_level_det_tbl(k).bill_to_site_use_id;
14448 lp_tax_src_params_rec.inventory_item_id := l_pb_asset_level_det_tbl(ind).inv_item_id;
14449 lp_tax_src_params_rec.sty_id := null;
14450 lp_tax_src_params_rec.khr_id := l_khr_id;
14451 lp_tax_src_params_rec.trx_id := p_source_trx_id;
14452 lp_tax_src_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14453 lp_tax_src_params_rec.event_class_code := l_event_class_code;
14454 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
14455 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
14456 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
14457 lp_tax_src_params_rec.reported_yn := l_reported_yn;
14458 lp_tax_src_params_rec.trx_date := lx_contract_start_date;
14459 lp_tax_src_params_rec.trx_currency_code := lx_currency_code;
14460 lp_tax_src_params_rec.line_intended_use := l_pb_asset_level_det_tbl(k).usage_of_equipment;
14461 lp_tax_src_params_rec.bill_to_cust_acct_id := lx_cust_acct_id;
14462 lp_tax_src_params_rec.org_id := lx_org_id;
14463 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
14464 lp_tax_src_params_rec.line_amt := 0;
14465 lp_tax_src_params_rec.try_id := l_bk_trx_type_id_det;
14466
14467 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
14468 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
14469 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
14470 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
14471 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
14472 lp_tax_src_params_rec.adjusted_doc_number := null;
14473 lp_tax_src_params_rec.adjusted_doc_date := null;
14474 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
14475 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
14476 lp_tax_src_params_rec.currency_conversion_type := lx_currency_conversion_type;
14477 lp_tax_src_params_rec.currency_conversion_rate := lx_currency_conversion_rate;
14478 lp_tax_src_params_rec.currency_conversion_date := lx_currency_conversion_date;
14479 -- Populate tax sources record -- end
14480
14481 -- asset level call begin
14482 populate_tax_info(
14483 p_api_version => p_api_version,
14484 p_init_msg_list => OKC_API.G_FALSE,
14485 x_return_status => x_return_status,
14486 x_msg_count => x_msg_count,
14487 x_msg_data => x_msg_data,
14488 p_prch_opt_det => lx_pb_prch_opt_det,
14489 p_fin_prod_id_det => lx_pb_fin_prod_id_det,
14490 p_int_disclosed_det => lx_pb_int_disclosed_det,
14491 -- asset level begin
14492 p_title_trnsfr_code => l_pb_asset_level_det_tbl(k).transfer_of_title,
14493 p_sale_lease_back_code => l_pb_asset_level_det_tbl(k).sale_lease_back,
14494 p_lease_purchased_code => l_pb_asset_level_det_tbl(k).purchase_of_lease,
14495 p_equip_usage_code => l_pb_asset_level_det_tbl(k).usage_of_equipment,
14496 p_vendor_site_id => l_pb_asset_level_det_tbl(k).vendor_site_id,
14497 p_age_of_equip => l_pb_asset_level_det_tbl(k).age_of_equipment,
14498 p_source_trx_name => p_source_trx_name,
14499 p_cust_trx_type_id => lx_cust_trx_type_id,
14500 p_book_class_code => lx_book_class_code,
14501 p_tax_call_cnt => tax_call_cnt,
14502 p_fma_id => l_fma_id,
14503 p_formula_name => l_formula_name,
14504 p_minimum_accountable_unit => lx_minimum_accountable_unit,
14505 p_precision => lx_precision,
14506 p_sales_quote_id => null,
14507 p_event_type_code => l_event_type_code,
14508 p_ledger_id => l_ledger_id,
14509 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
14510 p_tax_src_params_rec => lp_tax_src_params_rec,
14511 p_quote_flag => 'N',
14512 p_rounding_ship_to_party_id => l_pb_asset_level_det_tbl(k).ship_to_party_id,
14513 p_rounding_bill_to_party_id => l_pb_asset_level_det_tbl(k).bill_to_party_id,
14514 p_line_amt_includes_tax_flag => 'N',
14515 p_term_quote_type_code => null,
14516 p_term_quote_reason_code => null,
14517 px_tax_sources_tbl => lx_tax_sources_tbl,
14518 px_line_params_tbl => lx_line_params_tbl );
14519
14520 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14521 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14522 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14523 RAISE OKL_API.G_EXCEPTION_ERROR;
14524 END IF;
14525 -- asset level call end
14526 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14527 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14528 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count);
14529 END IF;
14530
14531 tax_call_cnt := tax_call_cnt + 1;
14532 END IF;
14533 END LOOP;
14534 END IF;
14535
14536 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14537 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14538 'lx_tax_sources_tbl.COUNT '||lx_tax_sources_tbl.COUNT);
14539 END IF;
14540
14541 -- insert into okl_tax_sources
14542 BEGIN
14543 IF lx_tax_sources_tbl.COUNT > 0 THEN
14544 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
14545 -- SAVE EXCEPTIONS
14546 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
14547 END IF;
14548 EXCEPTION
14549 WHEN OTHERS THEN
14550 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
14551 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
14552 OKL_API.set_message(
14553 p_app_name => 'OKL',
14554 p_msg_name => 'OKL_TX_TRX_INS_ERR',
14555 p_token1 => 'TABLE_NAME',
14556 p_token1_value => 'OKL_TAX_SOURCES',
14557 p_token2 => 'ERROR_CODE',
14558 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
14559 p_token3 => 'ITERATION',
14560 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
14561 END LOOP;
14562 RAISE OKL_API.G_EXCEPTION_ERROR;
14563 END IF;
14564 END;
14565 -- Insert into okl_tax_sources end --
14566
14567 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14568 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14569 'Insert into okl_tax_sources ');
14570 END IF;
14571
14572 IF lx_line_params_tbl.COUNT > 0 THEN
14573 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14574 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14575 'Before tax engine call '||x_return_status);
14576 END IF;
14577
14578 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
14579 lp_hdr_params_rec.trx_id := p_source_trx_id;
14580 lp_hdr_params_rec.internal_organization_id := lx_org_id;
14581 lp_hdr_params_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
14582 lp_hdr_params_rec.event_class_code := l_event_class_code;
14583 lp_hdr_params_rec.event_type_code := l_event_type_code;
14584 lp_hdr_params_rec.quote_flag := 'N';
14585
14586 OKL_TAX_INTERFACE_PVT.calculate_tax(
14587 p_api_version => p_api_version,
14588 p_init_msg_list => p_init_msg_list,
14589 x_return_status => x_return_status,
14590 x_msg_count => x_msg_count,
14591 x_msg_data => x_msg_data,
14592 p_hdr_params_rec => lp_hdr_params_rec,
14593 p_line_params_tbl => lx_line_params_tbl);
14594
14595 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14596 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14597 'After tax engine call '||x_return_status);
14598 END IF;
14599
14600 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14601 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14602 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14603 RAISE OKL_API.G_EXCEPTION_ERROR;
14604 END IF;
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 'Calling "update_tax_sources_total" .. ');
14610 END IF;
14611
14612 update_tax_sources_total(p_api_version => p_api_version,
14613 p_init_msg_list => p_init_msg_list,
14614 x_return_status => x_return_status,
14615 x_msg_count => x_msg_count,
14616 x_msg_data => x_msg_data,
14617 p_source_trx_id => p_source_trx_id);
14618
14619 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14620 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14621 'Return Status' || x_return_status);
14622 END IF;
14623
14624 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14625 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14626 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14627 RAISE OKL_API.G_EXCEPTION_ERROR;
14628 END IF;
14629
14630 ELSIF (l_tax_call_type = G_ACTUAL_CALL_TYPE) THEN
14631
14632 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14633 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14634 'process_final_upfront_tax');
14635 END IF;
14636
14637 -- Call ebtax procedure to flip the reportable flag from N to Y
14638 process_final_upfront_tax( p_api_version => p_api_version,
14639 p_init_msg_list => p_init_msg_list,
14640 x_return_status => x_return_status,
14641 x_msg_count => x_msg_count,
14642 x_msg_data => x_msg_data,
14643 p_trx_id => p_source_trx_id,
14644 p_application_id => G_OKL_APPLICATION_ID,
14645 p_entity_code => G_CONTRACTS_ENTITY_CODE,
14646 p_event_class_code => G_BOOKING_EVENT_CLASS_CODE);
14647
14648 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14649 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14650 'Return Status' || x_return_status);
14651 END IF;
14652
14653 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14654 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14655 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14656 RAISE OKL_API.G_EXCEPTION_ERROR;
14657 END IF;
14658
14659 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14660 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14661 'Calling "make_tax_sources_reportable" .. ');
14662 END IF;
14663
14664 make_tax_sources_reportable(p_api_version => p_api_version,
14665 p_init_msg_list => p_init_msg_list,
14666 x_return_status => x_return_status,
14667 x_msg_count => x_msg_count,
14668 x_msg_data => x_msg_data,
14669 p_source_trx_id => p_source_trx_id);
14670
14671 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14672 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax.',
14673 'Return Status' || x_return_status);
14674 END IF;
14675
14676 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14677 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14678 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14679 RAISE OKL_API.G_EXCEPTION_ERROR;
14680 END IF;
14681
14682 END IF;
14683
14684 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14685 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ','End(-)');
14686 END IF;
14687 EXCEPTION
14688 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14689 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14690 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14691 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
14692 END IF;
14693
14694 IF l_trxcontracts_csr%ISOPEN THEN
14695 CLOSE l_trxcontracts_csr;
14696 END IF;
14697
14698 IF l_tax_src_info_csr%ISOPEN THEN
14699 CLOSE l_tax_src_info_csr;
14700 END IF;
14701
14702 IF l_prev_taxsources_csr%ISOPEN THEN
14703 CLOSE l_prev_taxsources_csr;
14704 END IF;
14705
14706 IF l_finassets_csr%ISOPEN THEN
14707 CLOSE l_finassets_csr;
14708 END IF;
14709
14710 IF l_k_asset_pymnts_csr%ISOPEN THEN
14711 CLOSE l_k_asset_pymnts_csr;
14712 END IF;
14713
14714 IF l_invitem_csr%ISOPEN THEN
14715 CLOSE l_invitem_csr;
14716 END IF;
14717
14718 IF l_txbasisoverride_csr%ISOPEN THEN
14719 CLOSE l_txbasisoverride_csr;
14720 END IF;
14721
14722 IF l_formulae_csr%ISOPEN THEN
14723 CLOSE l_formulae_csr;
14724 END IF;
14725
14726 x_return_status := OKL_API.G_RET_STS_ERROR;
14727 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14728 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14729 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14730 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
14731 END IF;
14732
14733 IF l_trxcontracts_csr%ISOPEN THEN
14734 CLOSE l_trxcontracts_csr;
14735 END IF;
14736
14737 IF l_tax_src_info_csr%ISOPEN THEN
14738 CLOSE l_tax_src_info_csr;
14739 END IF;
14740
14741 IF l_prev_taxsources_csr%ISOPEN THEN
14742 CLOSE l_prev_taxsources_csr;
14743 END IF;
14744
14745 IF l_finassets_csr%ISOPEN THEN
14746 CLOSE l_finassets_csr;
14747 END IF;
14748
14749 IF l_k_asset_pymnts_csr%ISOPEN THEN
14750 CLOSE l_k_asset_pymnts_csr;
14751 END IF;
14752
14753 IF l_invitem_csr%ISOPEN THEN
14754 CLOSE l_invitem_csr;
14755 END IF;
14756
14757 IF l_txbasisoverride_csr%ISOPEN THEN
14758 CLOSE l_txbasisoverride_csr;
14759 END IF;
14760
14761 IF l_formulae_csr%ISOPEN THEN
14762 CLOSE l_formulae_csr;
14763 END IF;
14764
14765 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14766
14767 WHEN OTHERS THEN
14768 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14769 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_booking_upfront_tax ',
14770 'EXCEPTION :'||sqlerrm);
14771 END IF;
14772
14773 IF l_trxcontracts_csr%ISOPEN THEN
14774 CLOSE l_trxcontracts_csr;
14775 END IF;
14776
14777 IF l_tax_src_info_csr%ISOPEN THEN
14778 CLOSE l_tax_src_info_csr;
14779 END IF;
14780
14781 IF l_prev_taxsources_csr%ISOPEN THEN
14782 CLOSE l_prev_taxsources_csr;
14783 END IF;
14784
14785 IF l_finassets_csr%ISOPEN THEN
14786 CLOSE l_finassets_csr;
14787 END IF;
14788
14789 IF l_k_asset_pymnts_csr%ISOPEN THEN
14790 CLOSE l_k_asset_pymnts_csr;
14791 END IF;
14792
14793 IF l_invitem_csr%ISOPEN THEN
14794 CLOSE l_invitem_csr;
14795 END IF;
14796
14797 IF l_txbasisoverride_csr%ISOPEN THEN
14798 CLOSE l_txbasisoverride_csr;
14799 END IF;
14800
14801 IF l_formulae_csr%ISOPEN THEN
14802 CLOSE l_formulae_csr;
14803 END IF;
14804
14805 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14806 -- unexpected error
14807 OKL_API.set_message(p_app_name => g_app_name,
14808 p_msg_name => g_unexpected_error,
14809 p_token1 => g_sqlcode_token,
14810 p_token1_value => sqlcode,
14811 p_token2 => g_sqlerrm_token,
14812 p_token2_value => sqlerrm);
14813
14814 END process_booking_upfront_tax;
14815
14816 /*========================================================================
14817 | PRIVATE PROCEDURE process_pre_rbk_upfront_tax
14818 |
14819 | DESCRIPTION
14820 | This procedure is called from calculate_sales_tax procedure to calculate
14821 | Upfront tax during Pre Rebooking
14822 |
14823 | CALLED FROM calculate_sales_tax()
14824 |
14825 |
14826 | CALLS PROCEDURES/FUNCTIONS
14827 | process_booking_upfront_tax()
14828 |
14829 | PARAMETERS
14830 | p_source_trx_id -- Source transaction ID
14831 | p_source_trx_name -- Source transaction Name
14832 | p_source_table -- Source table
14833 |
14834 | KNOWN ISSUES
14835 |
14836 | NOTES
14837 |
14838 |
14839 | MODIFICATION HISTORY
14840 | Date Author Description of Changes
14841 | 08-APR-05 SECHAWLA Created
14842 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Pre-Rebook trx type
14843 | setups into 'Booking'
14844 |
14845 *=======================================================================*/
14846 PROCEDURE process_pre_rbk_upfront_tax(
14847 p_api_version IN NUMBER,
14848 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14849 x_return_status OUT NOCOPY VARCHAR2,
14850 x_msg_count OUT NOCOPY NUMBER,
14851 x_msg_data OUT NOCOPY VARCHAR2,
14852 p_source_trx_id IN NUMBER,
14853 p_source_trx_name IN VARCHAR2,
14854 p_source_table IN VARCHAR2,
14855 p_tax_call_type IN VARCHAR2) IS
14856
14857 -------------Pre Rebook --------------
14858 --p_source_trx_id ---> okl_trx_contracts.id
14859 --p_source_trx_name ---> 'Rebook'
14860 --p_source_table ---> 'OKL_TRX_CONTRACTS'
14861 --p_tax_call_type ---> 'ESTIMATED'
14862 --------------------------------------------------
14863
14864 BEGIN
14865
14866 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14867 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax','Begin(+)');
14868 END IF;
14869
14870 --Print Input Variables
14871 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14872 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14873 'p_init_msg_list :'||p_init_msg_list);
14874 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14875 'p_source_trx_id :'||p_source_trx_id);
14876 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14877 'p_source_trx_name :'||p_source_trx_name);
14878 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14879 'p_source_table :'||p_source_table);
14880 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14881 'p_tax_call_type :'||p_tax_call_type);
14882 END IF;
14883
14884 x_return_status := OKL_API.G_RET_STS_SUCCESS;
14885
14886 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14887 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14888 'Calling process_booking_upfront_tax');
14889 END IF;
14890
14891 process_booking_upfront_tax(p_api_version => p_api_version,
14892 p_init_msg_list => p_init_msg_list,
14893 x_return_status => x_return_status,
14894 x_msg_count => x_msg_count,
14895 x_msg_data => x_msg_data,
14896 p_source_trx_id => p_source_trx_id,
14897 p_source_trx_name => p_source_trx_name,
14898 p_source_table => p_source_table,
14899 p_tax_call_type => p_tax_call_type);
14900
14901 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14902 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax.',
14903 'Finished process_booking_upfront_tax '|| x_return_status);
14904 END IF;
14905
14906 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14907 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14908 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14909 RAISE OKL_API.G_EXCEPTION_ERROR;
14910 END IF;
14911
14912 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14913 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ','End(-)');
14914 END IF;
14915
14916 EXCEPTION
14917 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14918 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14919 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
14920 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
14921 END IF;
14922
14923 x_return_status := OKL_API.G_RET_STS_ERROR;
14924
14925 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14926 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14927 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
14928 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
14929 END IF;
14930
14931 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14932
14933 WHEN OTHERS THEN
14934 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
14935 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_pre_rbk_upfront_tax ',
14936 'EXCEPTION :'||sqlerrm);
14937 END IF;
14938
14939 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
14940 -- unexpected error
14941 OKL_API.set_message(p_app_name => g_app_name,
14942 p_msg_name => g_unexpected_error,
14943 p_token1 => g_sqlcode_token,
14944 p_token1_value => sqlcode,
14945 p_token2 => g_sqlerrm_token,
14946 p_token2_value => sqlerrm);
14947 END process_pre_rbk_upfront_tax;
14948
14949 /*========================================================================
14950 | PRIVATE PROCEDURE process_rebook_upfront_tax
14951 |
14952 | DESCRIPTION
14953 | This procedure is called from calculate_sales_tax procedure to calculate
14954 | Upfront tax during Rebook
14955 |
14956 | CALLED FROM calculate_sales_tax()
14957 |
14958 |
14959 | CALLS PROCEDURES/FUNCTIONS
14960 | OKL_TAX_INTERFACE_PVT.reverse_document()
14961 | update_tax_sources_total()
14962 | okl_tax_sources_pub.update_tax_sources()
14963 | process_final_upfront_tax()
14964 |
14965 |
14966 | PARAMETERS
14967 | p_source_trx_id -- Source transaction ID
14968 | p_source_trx_name -- Source transaction Name
14969 | p_source_table -- Source table
14970 |
14971 | KNOWN ISSUES
14972 |
14973 | NOTES
14974 |
14975 |
14976 | MODIFICATION HISTORY
14977 | Date Author Description of Changes
14978 | 08-APR-05 SECHAWLA Created
14979 | 29-NOV-05 SECHAWLA 4772640 Modified to merge Rebook trx type setups
14980 | into 'Booking' trx type
14981 |
14982 *=======================================================================*/
14983 PROCEDURE process_rebook_upfront_tax(
14984 p_api_version IN NUMBER,
14985 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14986 x_return_status OUT NOCOPY VARCHAR2,
14987 x_msg_count OUT NOCOPY NUMBER,
14988 x_msg_data OUT NOCOPY VARCHAR2,
14989 p_source_trx_id IN NUMBER,
14990 p_source_trx_name IN VARCHAR2,
14991 p_source_table IN VARCHAR2) IS
14992
14993 -------------Rebook --------------
14994 --p_source_trx_id ---> okl_trx_contracts.id
14995 --p_source_trx_name ---> 'Rebook'
14996 --p_source_table ---> 'OKL_TRX_CONTRACTS'
14997 --------------------------------------------------
14998
14999 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
15000
15001 -- validate source trx id
15002 -- okl_trx_contracts.khr_id has original contract id
15003 -- okl_trx_contracts.khr_id_new has rebook copy contract id
15004 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
15005 SELECT a.try_id, a.khr_id, a.khr_id_new, a.date_transaction_occurred
15006 FROM okl_trx_contracts a , okl_trx_types_tl b
15007 WHERE a.id = cp_trx_id
15008 AND a.try_id = b.id
15009 AND b.name = cp_trx_type_name
15010 AND language = 'US';
15011
15012 -- Booking tax lines will be the only ACTIVE set of tax lines at the time K is being Reversed
15013 -- Contract can be reversed only if no other transactions have happened on the contract
15014 -- this cursor selects existing active upfront taxable lines for a contract that is being reversed
15015 CURSOR l_prevtaxsources_csr(cp_khr_id IN NUMBER) IS
15016 SELECT id, khr_id, kle_id, asset_number, trx_id, trx_line_id, entity_code,
15017 event_class_code, trx_level_type, tax_call_type_code, sty_id,
15018 trx_business_category, tax_line_status_code, sel_id, reported_yn,
15019 line_name, application_id, tax_reporting_flag, default_taxation_country,
15020 product_category, user_defined_fisc_class, line_intended_use,
15021 tax_classification_code, inventory_item_id, bill_to_cust_acct_id,
15022 org_id, legal_entity_id, line_amt, assessable_value, total_tax,
15023 product_type, product_fisc_classification, trx_date, provnl_tax_determination_date,
15024 try_id, ship_to_location_id, ship_to_party_site_id, ship_to_party_id,
15025 bill_to_party_site_id, bill_to_location_id, bill_to_party_id,
15026 ship_to_cust_acct_site_use_id, bill_to_cust_acct_site_use_id,
15027 trx_currency_code, currency_conversion_date, currency_conversion_rate,
15028 currency_conversion_type
15029 FROM okl_tax_sources
15030 WHERE khr_id = cp_khr_id
15031 AND tax_call_type_code = G_UPFRONT_TAX
15032 AND tax_line_status_code = G_ACTIVE_STATUS
15033 AND application_id = G_OKL_APPLICATION_ID
15034 AND trx_level_type = G_TRX_LEVEL_TYPE
15035 AND ADJUSTED_DOC_TRX_ID IS NULL
15036 AND ADJUSTED_DOC_TRX_LINE_ID IS NULL;
15037
15038 CURSOR l_rbk_taxablelines_csr(cp_trx_id IN NUMBER, cp_khr_id IN NUMBER) IS
15039 SELECT id, kle_id
15040 FROM okl_tax_sources
15041 WHERE trx_id = cp_trx_id
15042 AND khr_id = cp_khr_id
15043 AND tax_call_type_code = G_UPFRONT_TAX
15044 AND tax_line_status_code = G_ACTIVE_STATUS;
15045
15046 CURSOR l_orig_kle_id(cp_kle_id IN NUMBER) IS
15047 SELECT orig_system_id1
15048 FROM okc_k_lines_b
15049 WHERE id = cp_kle_id;
15050
15051 CURSOR l_new_line_id(cp_orig_system_id IN NUMBER) IS
15052 SELECT id
15053 FROM okc_k_lines_b
15054 WHERE orig_system_id1 = cp_orig_system_id;
15055
15056 TYPE tax_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15057 TYPE prev_tx_src_tbl_type IS TABLE OF l_prevtaxsources_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15058
15059 l_prevtaxsources_tbl prev_tx_src_tbl_type;
15060 l_tax_src_tbl tax_src_tbl_type;
15061 l_tax_sources_tbl tax_sources_tbl_type;
15062 rev_trx_lines_tbl zx_trx_lines_tbl_type;
15063 rev_trx_hdr_rec line_params_rec_type;
15064 l_txsv_tbl txsv_tbl_type;
15065 lx_txsv_tbl txsv_tbl_type;
15066
15067 l_fetch_size NUMBER := 10000;
15068 i NUMBER;
15069 j NUMBER;
15070
15071 l_trx_date DATE;
15072 l_trx_level_type VARCHAR2(30);
15073 l_org_id NUMBER;
15074 l_legal_entity_id NUMBER;
15075 l_reversed_trx_id NUMBER;
15076 l_rbk_khr_id NUMBER;
15077 l_rbk_trx_type_id_det NUMBER;
15078 l_khr_id NUMBER;
15079 l_kle_id NUMBER;
15080 l_sync_kle_id NUMBER;
15081 l_booking_tax_exists BOOLEAN := FALSE;
15082
15083 BEGIN
15084
15085 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15086 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax','Begin(+)');
15087 END IF;
15088
15089 --Print Input Variables
15090 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15091 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15092 'p_init_msg_list :'||p_init_msg_list);
15093 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15094 'p_source_trx_id :'||p_source_trx_id);
15095 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15096 'p_source_trx_name :'||p_source_trx_name);
15097 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15098 'p_source_table :'||p_source_table);
15099 END IF;
15100
15101 x_return_status := OKL_API.G_RET_STS_SUCCESS;
15102
15103 -- Validate the source trx id
15104 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
15105 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
15106 -- At this point l_rbk_trx_type_id_det has the id of the Rebook trx type
15107 IF l_trxcontracts_csr%NOTFOUND THEN
15108 -- source trx id is invalid
15109 OKC_API.set_message( p_app_name => 'OKC',
15110 p_msg_name => G_INVALID_VALUE,
15111 p_token1 => G_COL_NAME_TOKEN,
15112 p_token1_value => 'SOURCE_TRX_ID');
15113 RAISE OKL_API.G_EXCEPTION_ERROR;
15114 END IF;
15115 CLOSE l_trxcontracts_csr;
15116
15117 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15118 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15119 'l_rbk_trx_type_id_det '||l_rbk_trx_type_id_det );
15120 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15121 'l_khr_id '||l_khr_id );
15122 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15123 'l_rbk_khr_id '||l_rbk_khr_id );
15124 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15125 'l_trx_date '||l_trx_date );
15126 END IF;
15127
15128 --Create negative tax lines for the previously active upfront tax lines
15129 i := 1;
15130 j := 1;
15131 l_tax_sources_tbl.DELETE;
15132 l_tax_src_tbl.DELETE;
15133
15134 OPEN l_prevtaxsources_csr(l_khr_id);
15135 LOOP
15136 l_prevtaxsources_tbl.DELETE;
15137 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsources_tbl LIMIT l_fetch_size;
15138 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15139 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15140 'l_prevtaxsources_tbl.COUNT '||l_prevtaxsources_tbl.COUNT );
15141 END IF;
15142
15143 IF l_prevtaxsources_tbl.COUNT > 0 THEN
15144 l_booking_tax_exists := TRUE;
15145 FOR k IN l_prevtaxsources_tbl.FIRST..l_prevtaxsources_tbl.LAST LOOP
15146
15147 IF i = 1 THEN
15148 l_org_id := l_prevtaxsources_tbl(k).org_id;
15149 l_trx_level_type := l_prevtaxsources_tbl(k).trx_level_type;
15150 l_legal_entity_id := l_prevtaxsources_tbl(k).legal_entity_id;
15151 l_reversed_trx_id := l_prevtaxsources_tbl(k).trx_id;
15152 END IF;
15153
15154 -- Create adjusting tax source transaction for the previous active tax lines
15155 l_tax_sources_tbl(i).id := get_seq_id;
15156 l_tax_sources_tbl(i).khr_id := l_prevtaxsources_tbl(k).khr_id;
15157 l_tax_sources_tbl(i).kle_id := l_prevtaxsources_tbl(k).kle_id;
15158 l_tax_sources_tbl(i).asset_number := l_prevtaxsources_tbl(k).asset_number;
15159 l_tax_sources_tbl(i).trx_id := p_source_trx_id;
15160 l_tax_sources_tbl(i).trx_line_id := l_tax_sources_tbl(i).id;
15161 l_tax_sources_tbl(i).entity_code := G_CONTRACTS_ENTITY_CODE;
15162 l_tax_sources_tbl(i).event_class_code := G_REBOOK_EVENT_CLASS_CODE;
15163 l_tax_sources_tbl(i).trx_level_type := G_TRX_LEVEL_TYPE;
15164 l_tax_sources_tbl(i).adjusted_doc_entity_code := l_prevtaxsources_tbl(k).entity_code;
15165 l_tax_sources_tbl(i).adjusted_doc_event_class_code := l_prevtaxsources_tbl(k).event_class_code;
15166 l_tax_sources_tbl(i).adjusted_doc_trx_id := l_prevtaxsources_tbl(k).trx_id;
15167 l_tax_sources_tbl(i).adjusted_doc_trx_line_id := l_prevtaxsources_tbl(k).trx_line_id;
15168 l_tax_sources_tbl(i).adjusted_doc_trx_level_type := l_prevtaxsources_tbl(k).trx_level_type;
15169 l_tax_sources_tbl(i).adjusted_doc_number := NULL;
15170 l_tax_sources_tbl(i).adjusted_doc_date := NULL;
15171 l_tax_sources_tbl(i).tax_call_type_code := G_UPFRONT_TAX;
15172 l_tax_sources_tbl(i).sty_id := l_prevtaxsources_tbl(k).sty_id;
15173 l_tax_sources_tbl(i).trx_business_category := l_prevtaxsources_tbl(k).trx_business_category;
15174 l_tax_sources_tbl(i).tax_line_status_code := G_INACTIVE_STATUS;
15175
15176 l_tax_sources_tbl(i).sel_id := l_prevtaxsources_tbl(k).sel_id;
15177 l_tax_sources_tbl(i).reported_yn := l_prevtaxsources_tbl(k).reported_yn;
15178 l_tax_sources_tbl(i).tax_reporting_flag := l_prevtaxsources_tbl(k).tax_reporting_flag;
15179 l_tax_sources_tbl(i).program_id := NULL;
15180 l_tax_sources_tbl(i).request_id := NULL;
15181 l_tax_sources_tbl(i).program_application_id := NULL;
15182 l_tax_sources_tbl(i).program_update_date := NULL;
15183 l_tax_sources_tbl(i).attribute_category := NULL;
15184
15185 l_tax_sources_tbl(i).attribute1 := NULL;
15186 l_tax_sources_tbl(i).attribute2 := NULL;
15187 l_tax_sources_tbl(i).attribute3 := NULL;
15188 l_tax_sources_tbl(i).attribute4 := NULL;
15189 l_tax_sources_tbl(i).attribute5 := NULL;
15190 l_tax_sources_tbl(i).attribute6 := NULL;
15191 l_tax_sources_tbl(i).attribute7 := NULL;
15192 l_tax_sources_tbl(i).attribute8 := NULL;
15193 l_tax_sources_tbl(i).attribute9 := NULL;
15194 l_tax_sources_tbl(i).attribute10 := NULL;
15195 l_tax_sources_tbl(i).attribute11 := NULL;
15196 l_tax_sources_tbl(i).attribute12 := NULL;
15197 l_tax_sources_tbl(i).attribute13 := NULL;
15198 l_tax_sources_tbl(i).attribute14 := NULL;
15199 l_tax_sources_tbl(i).attribute15 := NULL;
15200 l_tax_sources_tbl(i).created_by := G_USER_ID;
15201 l_tax_sources_tbl(i).creation_date := SYSDATE;
15202 l_tax_sources_tbl(i).last_updated_by := G_USER_ID;
15203 l_tax_sources_tbl(i).last_update_date := SYSDATE;
15204 l_tax_sources_tbl(i).last_update_login := G_LOGIN_ID;
15205 l_tax_sources_tbl(i).object_version_number := NULL;
15206
15207 l_tax_sources_tbl(i).line_name := l_prevtaxsources_tbl(k).line_name;
15208 l_tax_sources_tbl(i).application_id := l_prevtaxsources_tbl(k).application_id;
15209 l_tax_sources_tbl(i).default_taxation_country := l_prevtaxsources_tbl(k).default_taxation_country;
15210 l_tax_sources_tbl(i).product_category := l_prevtaxsources_tbl(k).product_category;
15211 l_tax_sources_tbl(i).user_defined_fisc_class := l_prevtaxsources_tbl(k).user_defined_fisc_class;
15212 l_tax_sources_tbl(i).line_intended_use := l_prevtaxsources_tbl(k).line_intended_use;
15213 l_tax_sources_tbl(i).tax_classification_code := l_prevtaxsources_tbl(k).tax_classification_code;
15214 l_tax_sources_tbl(i).inventory_item_id := l_prevtaxsources_tbl(k).inventory_item_id;
15215 l_tax_sources_tbl(i).bill_to_cust_acct_id := l_prevtaxsources_tbl(k).bill_to_cust_acct_id;
15216 l_tax_sources_tbl(i).org_id := l_prevtaxsources_tbl(k).org_id;
15217 l_tax_sources_tbl(i).legal_entity_id := l_prevtaxsources_tbl(k).legal_entity_id;
15218 l_tax_sources_tbl(i).line_amt := -l_prevtaxsources_tbl(k).line_amt;
15219 l_tax_sources_tbl(i).assessable_value := -l_prevtaxsources_tbl(k).assessable_value;
15220
15221 l_tax_sources_tbl(i).total_tax := null; -- this col will be populated after reverse doc API is called
15222 l_tax_sources_tbl(i).trx_date := l_trx_date;
15223 l_tax_sources_tbl(i).try_id := l_rbk_trx_type_id_det;
15224
15225 l_tax_sources_tbl(i).product_type := l_prevtaxsources_tbl(k).product_type;
15226 l_tax_sources_tbl(i).product_fisc_classification := l_prevtaxsources_tbl(k).product_fisc_classification;
15227 l_tax_sources_tbl(i).provnl_tax_determination_date := null;
15228 l_tax_sources_tbl(i).ship_to_location_id := l_prevtaxsources_tbl(k).ship_to_location_id;
15229 l_tax_sources_tbl(i).ship_to_party_site_id := l_prevtaxsources_tbl(k).ship_to_party_site_id;
15230 l_tax_sources_tbl(i).ship_to_party_id := l_prevtaxsources_tbl(k).ship_to_party_id;
15231 l_tax_sources_tbl(i).bill_to_party_site_id := l_prevtaxsources_tbl(k).bill_to_party_site_id;
15232 l_tax_sources_tbl(i).bill_to_location_id := l_prevtaxsources_tbl(k).bill_to_location_id;
15233 l_tax_sources_tbl(i).bill_to_party_id := l_prevtaxsources_tbl(k).bill_to_party_id;
15234 l_tax_sources_tbl(i).ship_to_cust_acct_site_use_id := l_prevtaxsources_tbl(k).ship_to_cust_acct_site_use_id;
15235 l_tax_sources_tbl(i).bill_to_cust_acct_site_use_id := l_prevtaxsources_tbl(k).bill_to_cust_acct_site_use_id;
15236 l_tax_sources_tbl(i).trx_currency_code := l_prevtaxsources_tbl(k).trx_currency_code;
15237 l_tax_sources_tbl(i).currency_conversion_type := l_prevtaxsources_tbl(k).currency_conversion_type;
15238 l_tax_sources_tbl(i).currency_conversion_rate := l_prevtaxsources_tbl(k).currency_conversion_rate;
15239 l_tax_sources_tbl(i).currency_conversion_date := l_prevtaxsources_tbl(k).currency_conversion_date;
15240
15241 -- Store the tax source IDs in a table
15242 l_tax_src_tbl(i) := l_prevtaxsources_tbl(k).id;
15243
15244 -- Populate the ZX reverse transaction lines table for tax call
15245 rev_trx_lines_tbl(i).internal_organization_id := l_org_id;
15246 rev_trx_lines_tbl(i).reversing_appln_id := G_OKL_APPLICATION_ID;
15247 rev_trx_lines_tbl(i).reversing_entity_code := G_CONTRACTS_ENTITY_CODE;
15248 rev_trx_lines_tbl(i).reversing_evnt_cls_code := G_REBOOK_EVENT_CLASS_CODE;
15249 rev_trx_lines_tbl(i).reversing_trx_id := p_source_trx_id;
15250 rev_trx_lines_tbl(i).reversing_trx_level_type := l_trx_level_type;
15251 rev_trx_lines_tbl(i).reversing_trx_line_id := l_tax_sources_tbl(i).trx_line_id;
15252
15253 rev_trx_lines_tbl(i).reversed_appln_id := G_OKL_APPLICATION_ID;
15254 rev_trx_lines_tbl(i).reversed_entity_code := l_prevtaxsources_tbl(k).entity_code;
15255 rev_trx_lines_tbl(i).reversed_evnt_cls_code := l_prevtaxsources_tbl(k).event_class_code;
15256 rev_trx_lines_tbl(i).reversed_trx_id := l_tax_sources_tbl(i).adjusted_doc_trx_id;
15257 rev_trx_lines_tbl(i).reversed_trx_level_type := l_trx_level_type;
15258 rev_trx_lines_tbl(i).reversed_trx_line_id := l_tax_sources_tbl(i).adjusted_doc_trx_line_id;
15259
15260 i := i + 1;
15261 END LOOP;
15262 END IF;
15263 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
15264 END LOOP;
15265 CLOSE l_prevtaxsources_csr;
15266
15267 -- Inactivate the previous ACTIVE tax lines - begin
15268 IF l_tax_src_tbl.COUNT > 0 THEN
15269 BEGIN
15270 FORALL i IN l_tax_src_tbl.FIRST..l_tax_src_tbl.LAST
15271 UPDATE OKL_TAX_SOURCES SET TAX_LINE_STATUS_CODE = G_INACTIVE_STATUS WHERE id = l_tax_src_tbl(i);
15272 EXCEPTION
15273 WHEN OTHERS THEN
15274 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
15275 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
15276 OKL_API.set_message(
15277 p_app_name => 'OKL',
15278 p_msg_name => 'OKL_TX_TRX_UPD_ERR',
15279 p_token1 => 'TABLE_NAME',
15280 p_token1_value => 'OKL_TAX_SOURCES',
15281 p_token2 => 'ERROR_CODE',
15282 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
15283 p_token3 => 'ITERATION',
15284 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
15285 END LOOP;
15286 RAISE OKL_API.G_EXCEPTION_ERROR;
15287 END IF;
15288 END;
15289
15290 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15291 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15292 'Inactivated the previous active upfront tax lines ' );
15293 END IF;
15294 END IF;
15295 -- Inactivate the previous ACTIVE tax lines - end
15296
15297 -- Push the negative tax lines populated before for original contract into
15298 -- tax sources
15299 -- bulk insert into okl_tax_sources -- start
15300 BEGIN
15301 IF l_tax_sources_tbl.COUNT > 0 THEN
15302 FORALL indx in l_tax_sources_tbl.FIRST..l_tax_sources_tbl.LAST
15303 -- SAVE EXCEPTIONS
15304 INSERT INTO okl_tax_sources VALUES l_tax_sources_tbl(indx);
15305 END IF;
15306 EXCEPTION
15307 WHEN OTHERS THEN
15308 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
15309 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
15310 OKL_API.set_message(p_app_name => 'OKL',
15311 p_msg_name => 'OKL_TX_TRX_INS_ERR',
15312 p_token1 => 'TABLE_NAME',
15313 p_token1_value => 'OKL_TAX_SOURCES',
15314 p_token2 => 'ERROR_CODE',
15315 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
15316 p_token3 => 'ITERATION',
15317 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
15318 END LOOP;
15319 RAISE OKL_API.G_EXCEPTION_ERROR;
15320 END IF;
15321 END;
15322 -- bulk insert into okl_tax_sources -- end
15323
15324 -- Reverse document call for the reversal of original contract tax sources
15325 -- Populate ZX reverse transaction tables
15326 IF (l_booking_tax_exists) THEN -- Perform reversal only if the booking tax exists
15327 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15328 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15329 'Calling OKL_TAX_INTERFACE_PVT.reverse_document');
15330 END IF;
15331
15332 rev_trx_hdr_rec.internal_organization_id := l_org_id;
15333 rev_trx_hdr_rec.application_id := G_OKL_APPLICATION_ID;
15334 rev_trx_hdr_rec.trx_id := p_source_trx_id;
15335 rev_trx_hdr_rec.legal_entity_id := l_legal_entity_id;
15336 rev_trx_hdr_rec.entity_code := G_CONTRACTS_ENTITY_CODE;
15337 rev_trx_hdr_rec.event_class_code := G_REBOOK_EVENT_CLASS_CODE;
15338
15339 OKL_TAX_INTERFACE_PVT.reverse_document (
15340 p_api_version => p_api_version,
15341 p_init_msg_list => p_init_msg_list,
15342 x_return_status => x_return_status,
15343 x_msg_count => x_msg_count,
15344 x_msg_data => x_msg_data,
15345 p_rev_trx_hdr_rec => rev_trx_hdr_rec,
15346 p_rev_trx_lines_tbl => rev_trx_lines_tbl);
15347
15348 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15349 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15350 'Return Status' || x_return_status);
15351 END IF;
15352
15353 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15354 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15355 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15356 RAISE OKL_API.G_EXCEPTION_ERROR;
15357 END IF;
15358
15359 -- Get the total tax amount corresponding to 'Reverse' transaction initiated
15360 -- for the 'Rebook' transaction and update total_tax in okl_tax_sources
15361 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15362 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15363 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
15364 END IF;
15365
15366 update_tax_sources_total(p_api_version => p_api_version,
15367 p_init_msg_list => p_init_msg_list,
15368 x_return_status => x_return_status,
15369 x_msg_count => x_msg_count,
15370 x_msg_data => x_msg_data,
15371 p_source_trx_id => p_source_trx_id,
15372 p_source_trx_name => p_source_trx_name);
15373
15374 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15375 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15376 'Return Status' || x_return_status);
15377 END IF;
15378
15379 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15380 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15381 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15382 RAISE OKL_API.G_EXCEPTION_ERROR;
15383 END IF;
15384
15385 END IF; -- Perform reversal only if the booking tax exists
15386
15387 -- Sync rebook tax sources with original contract info
15388 i := 1;
15389 FOR l_rbk_taxablelines_rec IN l_rbk_taxablelines_csr(cp_trx_id => p_source_trx_id,
15390 cp_khr_id => l_rbk_khr_id ) LOOP
15391 l_sync_kle_id := null;
15392
15393 l_txsv_tbl(i).id := l_rbk_taxablelines_rec.id;
15394 l_txsv_tbl(i).khr_id := l_khr_id; -- sync the parent contract id
15395
15396 l_kle_id := l_rbk_taxablelines_rec.kle_id;
15397
15398 IF (l_kle_id IS NOT NULL) THEN -- Asset Line, else Contract level tax line
15399
15400 -- Sync rebook tax sources with original contract line ids (for existing assets)
15401 -- and new contract line id (for new assets)
15402 -- Sync the parent contract kle_id's
15403 OPEN l_orig_kle_id(cp_kle_id => l_kle_id);
15404 FETCH l_orig_kle_id INTO l_sync_kle_id;
15405 IF l_orig_kle_id%NOTFOUND THEN
15406 OKC_API.set_message( p_app_name => 'OKC',
15407 p_msg_name => G_INVALID_VALUE,
15408 p_token1 => G_COL_NAME_TOKEN,
15409 p_token1_value => 'SOURCE_TRX_ID');
15410 RAISE OKL_API.G_EXCEPTION_ERROR;
15411 END IF;
15412 CLOSE l_orig_kle_id;
15413
15414 IF (l_sync_kle_id IS NOT NULL) THEN
15415 l_txsv_tbl(i).kle_id := l_sync_kle_id;
15416 ELSE
15417 -- This means the asset is newly created during Rebook process, so fetch
15418 -- the id of okc_k_lines_b where the orig_system_id1 is the kle_id of
15419 -- l_rbk_taxablelines_rec
15420 OPEN l_new_line_id(cp_orig_system_id => l_kle_id);
15421 FETCH l_new_line_id INTO l_sync_kle_id;
15422 IF l_new_line_id%NOTFOUND THEN
15423 OKC_API.set_message( p_app_name => 'OKC',
15424 p_msg_name => G_INVALID_VALUE,
15425 p_token1 => G_COL_NAME_TOKEN,
15426 p_token1_value => 'SOURCE_TRX_ID');
15427 RAISE OKL_API.G_EXCEPTION_ERROR;
15428 END IF;
15429 CLOSE l_new_line_id;
15430
15431 l_txsv_tbl(i).kle_id := l_sync_kle_id;
15432 END IF;
15433
15434 END IF;
15435
15436 i := i+1;
15437
15438 END LOOP;
15439
15440 IF (l_txsv_tbl.COUNT > 0) THEN
15441
15442 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15443 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax',
15444 'Calling okl_tax_sources_pub.update_tax_sources for synching back original contract info for all Lines in Tax Sources');
15445 END IF;
15446
15447 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
15448 ,p_init_msg_list => p_init_msg_list
15449 ,x_return_status => x_return_status
15450 ,x_msg_count => x_msg_count
15451 ,x_msg_data => x_msg_data
15452 ,p_txsv_tbl => l_txsv_tbl
15453 ,x_txsv_tbl => lx_txsv_tbl);
15454
15455 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15456 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax',
15457 'Return Status' || x_return_status);
15458 END IF;
15459
15460 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15461 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15462 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15463 RAISE OKL_API.G_EXCEPTION_ERROR;
15464 END IF;
15465 END IF;
15466 -- End Sync rebook tax sources with original contract info
15467
15468 -- Change the reportable flag after synching back the rebook copy contract
15469 -- with the original contract
15470 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15471 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15472 'process_final_upfront_tax');
15473 END IF;
15474
15475 -- Call ebtax procedure to flip the reportable flag from N to Y
15476 process_final_upfront_tax( p_api_version => p_api_version,
15477 p_init_msg_list => p_init_msg_list,
15478 x_return_status => x_return_status,
15479 x_msg_count => x_msg_count,
15480 x_msg_data => x_msg_data,
15481 p_trx_id => p_source_trx_id,
15482 p_application_id => G_OKL_APPLICATION_ID,
15483 p_entity_code => G_CONTRACTS_ENTITY_CODE,
15484 p_event_class_code => G_BOOKING_EVENT_CLASS_CODE);
15485
15486 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15487 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15488 'Return Status' || x_return_status);
15489 END IF;
15490
15491 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15492 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15493 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15494 RAISE OKL_API.G_EXCEPTION_ERROR;
15495 END IF;
15496
15497 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15498 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15499 'Calling "make_tax_sources_reportable" .. ');
15500 END IF;
15501
15502 make_tax_sources_reportable(p_api_version => p_api_version,
15503 p_init_msg_list => p_init_msg_list,
15504 x_return_status => x_return_status,
15505 x_msg_count => x_msg_count,
15506 x_msg_data => x_msg_data,
15507 p_source_trx_id => p_source_trx_id);
15508
15509 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15510 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax.',
15511 'Return Status' || x_return_status);
15512 END IF;
15513
15514 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15515 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15516 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15517 RAISE OKL_API.G_EXCEPTION_ERROR;
15518 END IF;
15519
15520 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15521 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ','End(-)');
15522 END IF;
15523
15524 EXCEPTION
15525 WHEN OKL_API.G_EXCEPTION_ERROR THEN
15526 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15527 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15528 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
15529 END IF;
15530
15531 IF l_trxcontracts_csr%ISOPEN THEN
15532 CLOSE l_trxcontracts_csr;
15533 END IF;
15534
15535 IF l_prevtaxsources_csr%ISOPEN THEN
15536 CLOSE l_prevtaxsources_csr;
15537 END IF;
15538
15539 IF l_rbk_taxablelines_csr%ISOPEN THEN
15540 CLOSE l_rbk_taxablelines_csr;
15541 END IF;
15542
15543 IF l_orig_kle_id%ISOPEN THEN
15544 CLOSE l_orig_kle_id;
15545 END IF;
15546
15547 IF l_new_line_id%ISOPEN THEN
15548 CLOSE l_new_line_id;
15549 END IF;
15550
15551 x_return_status := OKL_API.G_RET_STS_ERROR;
15552
15553 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15554 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15555 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15556 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
15557 END IF;
15558
15559 IF l_trxcontracts_csr%ISOPEN THEN
15560 CLOSE l_trxcontracts_csr;
15561 END IF;
15562
15563 IF l_prevtaxsources_csr%ISOPEN THEN
15564 CLOSE l_prevtaxsources_csr;
15565 END IF;
15566
15567 IF l_rbk_taxablelines_csr%ISOPEN THEN
15568 CLOSE l_rbk_taxablelines_csr;
15569 END IF;
15570
15571 IF l_orig_kle_id%ISOPEN THEN
15572 CLOSE l_orig_kle_id;
15573 END IF;
15574
15575 IF l_new_line_id%ISOPEN THEN
15576 CLOSE l_new_line_id;
15577 END IF;
15578
15579 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15580
15581 WHEN OTHERS THEN
15582 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15583 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_rebook_upfront_tax ',
15584 'EXCEPTION :'||sqlerrm);
15585 END IF;
15586
15587 IF l_trxcontracts_csr%ISOPEN THEN
15588 CLOSE l_trxcontracts_csr;
15589 END IF;
15590
15591 IF l_prevtaxsources_csr%ISOPEN THEN
15592 CLOSE l_prevtaxsources_csr;
15593 END IF;
15594
15595 IF l_rbk_taxablelines_csr%ISOPEN THEN
15596 CLOSE l_rbk_taxablelines_csr;
15597 END IF;
15598
15599 IF l_orig_kle_id%ISOPEN THEN
15600 CLOSE l_orig_kle_id;
15601 END IF;
15602
15603 IF l_new_line_id%ISOPEN THEN
15604 CLOSE l_new_line_id;
15605 END IF;
15606
15607 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
15608 -- unexpected error
15609 OKL_API.set_message(p_app_name => g_app_name,
15610 p_msg_name => g_unexpected_error,
15611 p_token1 => g_sqlcode_token,
15612 p_token1_value => sqlcode,
15613 p_token2 => g_sqlerrm_token,
15614 p_token2_value => sqlerrm);
15615
15616 END process_rebook_upfront_tax;
15617
15618 /*========================================================================
15619 | PRIVATE PROCEDURE process_quoting_upfront_tax
15620 |
15621 | DESCRIPTION
15622 | This procedure is called from calculate_sales_tax procedure to calculate
15623 | Upfront tax for a sales quote
15624 |
15625 | CALLED FROM calculate_sales_tax()
15626 |
15627 |
15628 | CALLS PROCEDURES/FUNCTIONS
15629 | populate_tax_info()
15630 | OKL_TAX_INTERFACE_PVT.calculate_tax()
15631 |
15632 |
15633 | PARAMETERS
15634 | p_source_trx_id -- Source transaction ID
15635 | p_source_trx_name -- Source transaction Name
15636 | p_source_table -- Source table
15637 |
15638 | KNOWN ISSUES
15639 |
15640 | NOTES
15641 |
15642 |
15643 | MODIFICATION HISTORY
15644 | Date Author Description of Changes
15645 | 08-APR-05 SECHAWLA Created
15646 | 12-DEC-05 SECHAWLA 4690074 - modified cursor l_get_location_id to map
15647 | Install site id of the assets to
15648 | PARTY_SITE_USE_ID in hz_party_site_uses
15649 |
15650 *=======================================================================*/
15651 PROCEDURE process_quoting_upfront_tax(
15652 p_api_version IN NUMBER,
15653 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
15654 x_return_status OUT NOCOPY VARCHAR2,
15655 x_msg_count OUT NOCOPY NUMBER,
15656 x_msg_data OUT NOCOPY VARCHAR2,
15657 p_source_trx_id IN NUMBER,
15658 p_source_trx_name IN VARCHAR2,
15659 p_source_table IN VARCHAR2) IS
15660
15661 ---------------------Sales Quote / Lease Application ----------------
15662 --p_source_trx_id ---> okl_lease_quotes_b.id (sales quote ID)
15663 --p_source_trx_name ---> 'Sales Quote'
15664 --p_source_table ---> 'OKL_LEASE_QUOTES_B'
15665 -- 'Sales Quote' is not going to store/add try_id in okl_lease_quotes_b,
15666 -- as it will be the same for all the rows
15667 ----------------------------------------------------------------------
15668
15669 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
15670
15671 -- Validate source trx id
15672 CURSOR l_leasequotes_csr(cp_trx_id IN NUMBER) IS
15673 SELECT expected_start_date, product_id, interest_disclosed,
15674 transfer_of_title, sale_and_lease_back, purchase_of_lease, usage_category,
15675 age_of_equipment, parent_object_code , parent_object_id, legal_entity_id
15676 FROM okl_lease_quotes_b
15677 WHERE id = cp_trx_id;
15678
15679 -- Get the transaction type id
15680 CURSOR l_trxtypes_csr IS
15681 SELECT id
15682 FROM okl_trx_types_tl
15683 WHERE name = 'Sales Quote'
15684 AND language = 'US';
15685
15686 -- Get Currency code and cust a/c for lease opportunity
15687 CURSOR l_leaseopp_csr(cp_id IN NUMBER) IS
15688 SELECT lop.currency_code, lop.cust_acct_id, lop.prospect_id, --> (party id)
15689 lop.org_id, lsq.expected_start_date, lop.currency_conversion_type,
15690 lop.currency_conversion_rate, lop.currency_conversion_date, lsq.line_intended_use,
15691 pdt.name
15692 FROM okl_lease_opportunities_b lop, okl_lease_quotes_b lsq, okl_products pdt
15693 WHERE lsq.parent_object_id = lop.id
15694 AND lsq.parent_object_code = 'LEASEOPP'
15695 AND lsq.product_id = pdt.id
15696 AND lsq.id = cp_id;
15697
15698 -- Get Currency code and cust a/c for lease application
15699 CURSOR l_leaseapp_csr(cp_id IN NUMBER) IS
15700 SELECT lap.currency_code, lap.cust_acct_id, lap.prospect_id, --> (party id)
15701 lap.org_id, lsq.expected_start_date, lap.currency_conversion_type,
15702 lap.currency_conversion_rate, lap.currency_conversion_date, lsq.line_intended_use,
15703 pdt.name
15704 FROM okl_lease_applications_b lap, okl_lease_quotes_b lsq, okl_products pdt
15705 WHERE lsq.parent_object_id = lap.id
15706 AND lsq.parent_object_code = 'LEASEAPP'
15707 AND lsq.primary_quote = 'Y'
15708 AND lsq.product_id = pdt.id
15709 AND lsq.id = cp_id;
15710
15711 -- Check if quoting tax was already calculated for this quote. If so, first
15712 -- delete the quoting tax source transaction and tax details
15713 CURSOR l_prevtaxsources_csr(cp_trx_id IN NUMBER) IS
15714 SELECT id
15715 FROM okl_tax_sources
15716 WHERE tax_call_type_code = G_UPFRONT_TAX
15717 AND trx_id = cp_trx_id;
15718
15719 -- Get the previous tax trx details
15720 CURSOR l_prevtaxtrxdet_csr(cp_txs_id IN NUMBER) IS
15721 SELECT ID
15722 FROM okl_tax_trx_details
15723 WHERE txs_id = cp_txs_id;
15724
15725 -- Get all the assets of the sales quote
15726 CURSOR l_quoteassets_csr(cp_quote_id IN NUMBER) IS
15727 SELECT AST.ID asset_id, asset_number, install_site_id
15728 FROM OKL_ASSETS_B AST
15729 WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
15730 AND AST.PARENT_OBJECT_ID = cp_quote_id;
15731
15732 -- Get Inv item and supplier
15733 CURSOR l_assetcomponent_csr(cp_asset_id IN NUMBER) IS
15734 SELECT inv_item_id, supplier_id
15735 FROM okl_asset_components_b
15736 WHERE asset_id = cp_asset_id
15737 AND primary_component = 'Y';
15738
15739 -- Get the quote and asset level cash flows for a sales quote
15740 CURSOR l_q_asset_cashflows_csr(cp_quote_id IN NUMBER) IS
15741 SELECT cfo.source_id , ast.asset_number, caf.sty_id,
15742 sum(nvl((cfl.amount * cfl.number_of_periods),0) + nvl(cfl.stub_amount,0)) taxable_basis
15743 FROM OKL_ASSETS_B ast, okl_cash_flow_objects cfo, okl_cash_flows caf, okl_cash_flow_levels cfl
15744 WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
15745 AND AST.PARENT_OBJECT_ID = cp_quote_id
15746 AND ast.id = cfo.source_id
15747 AND cfo.oty_code = 'QUOTED_ASSET'
15748 AND cfo.source_table = 'OKL_ASSETS_B'
15749 AND cfo.id = caf.cfo_id
15750 AND caf.cft_code = 'PAYMENT_SCHEDULE'
15751 AND caf.sts_code IN ('CURRENT', 'WORK')
15752 AND caf.id = cfl.caf_id
15753 GROUP BY cfo.source_id , ast.asset_number, caf.sty_id
15754 UNION
15755 SELECT cfo.source_id , null, caf.sty_id,
15756 sum(nvl((cfl.amount * cfl.number_of_periods),0) + nvl(cfl.stub_amount,0)) taxable_basis
15757 FROM okl_cash_flow_objects cfo, okl_cash_flows caf, okl_cash_flow_levels cfl
15758 WHERE cfo.oty_code = 'LEASE_QUOTE'
15759 AND cfo.source_table = 'OKL_LEASE_QUOTES_B'
15760 AND cfo.source_id = cp_quote_id
15761 AND cfo.id = caf.cfo_id
15762 AND caf.cft_code = 'PAYMENT_SCHEDULE'
15763 AND caf.sts_code IN ('CURRENT', 'WORK')
15764 AND caf.id = cfl.caf_id
15765 GROUP BY cfo.source_id , null, caf.sty_id;
15766
15767 -- Get 'BILL_TO' identifiers for the quote party
15768 CURSOR l_billtosite_csr(cp_party_id IN NUMBER) IS
15769 SELECT
15770 b.site_use_id,
15771 c.party_site_id,
15772 c.party_id,
15773 c.location_id
15774 FROM hz_cust_acct_sites_all a,
15775 hz_cust_site_uses_all b,
15776 hz_party_sites c,
15777 hz_parties d
15778 WHERE
15779 a.cust_acct_site_id = b.cust_acct_site_id
15780 AND b.site_use_code = 'BILL_TO'
15781 AND d.party_id = cp_party_id
15782 AND a.party_site_id = c.party_site_id
15783 AND c.party_id = d.party_id;
15784
15785 -- Get 'SHIP_TO' identifiers for the quote party
15786 CURSOR l_shiptosite_csr(cp_party_id IN NUMBER) IS
15787 SELECT
15788 b.site_use_id,
15789 c.party_site_id,
15790 c.party_id,
15791 c.location_id
15792 FROM hz_cust_acct_sites_all a,
15793 hz_cust_site_uses_all b,
15794 hz_party_sites c,
15795 hz_parties d
15796 WHERE
15797 a.cust_acct_site_id = b.cust_acct_site_id
15798 AND b.site_use_code = 'SHIP_TO'
15799 AND d.party_id = cp_party_id
15800 AND a.party_site_id = c.party_site_id
15801 AND c.party_id = d.party_id;
15802
15803 -- Check if tax basis override formula exists
15804 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
15805 SELECT fma_id
15806 FROM okl_tax_basis_override
15807 WHERE try_id = cp_try_id
15808 AND org_id = MO_GLOBAL.get_current_org_id;
15809
15810 -- GET FORMULA NAME
15811 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
15812 SELECT name
15813 FROM Okl_formulae_b
15814 WHERE id = cp_fma_id;
15815
15816 -- Get the AR customer transaction type used by OKL
15817 CURSOR l_racusttrxtypes_csr IS
15818 SELECT cust_trx_type_id
15819 FROM ra_cust_trx_types_all
15820 WHERE name = 'Invoice-OKL';
15821
15822 -- Get currency attributes
15823 CURSOR l_fndcurrency_csr(cp_currency_code IN VARCHAR2) IS
15824 SELECT precision, minimum_accountable_unit
15825 FROM fnd_currencies
15826 WHERE currency_code = cp_currency_code
15827 AND enabled_flag = 'Y'
15828 AND NVL(start_date_active, sysdate) <= sysdate
15829 AND NVL(end_date_active, sysdate) >= sysdate;
15830
15831 -- Get the primary pay vendor location for the vendor
15832 CURSOR l_povendorsites_csr(cp_vendor_id IN NUMBER) IS
15833 SELECT vendor_site_id
15834 FROM po_vendor_sites
15835 WHERE vendor_id = cp_vendor_id
15836 AND primary_pay_site_flag = 'Y';
15837
15838 -- Cursor to get the corresponding hz_location id for the install location id
15839 CURSOR l_get_location_id(cp_party_site_id IN NUMBER) IS
15840 -- SECHAWLA 12-DEC-05 4690074
15841 SELECT hzp.location_id
15842 FROM HZ_PARTY_SITES hzp, hz_party_site_uses hsu
15843 WHERE hsu.PARTY_SITE_USE_ID = cp_party_site_id
15844 AND hzp.party_Site_id = hsu.party_site_id;
15845
15846 -- Cursor to get the ship_to_site_use_id corresponding to the install_location_id of the asset
15847 CURSOR l_get_shiptositeid(cp_cust_acct_id IN NUMBER, cp_inst_loc_id IN NUMBER,cp_loc_id IN NUMBER) IS
15848 SELECT b.site_use_id, c.party_site_id, c.party_id, c.location_id
15849 FROM hz_cust_acct_sites_all a,
15850 hz_cust_site_uses_all b,
15851 hz_party_sites c
15852 WHERE a.cust_acct_site_id = b.cust_acct_site_id
15853 AND b.site_use_code = 'SHIP_TO'
15854 AND a.party_site_id = c.party_site_id
15855 AND a.cust_account_id = cp_cust_acct_id
15856 AND a.org_id = MO_GLOBAL.get_current_org_id
15857 AND c.party_site_id = cp_inst_loc_id
15858 AND c.location_id = cp_loc_id;
15859
15860 TYPE asset_level_det_rec_type IS RECORD
15861 (asset_id NUMBER,
15862 asset_number VARCHAR2(150),
15863 vendor_site_id NUMBER,
15864 inv_item_id NUMBER,
15865 ship_to_site_use_id NUMBER,
15866 asset_pymnt_exist VARCHAR2(1));
15867
15868 TYPE prev_tx_src_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15869 TYPE prev_tx_trx_det_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15870 TYPE quoteassets_tbl_type IS TABLE OF l_quoteassets_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15871 TYPE asset_level_det_tbl_type IS TABLE OF asset_level_det_rec_type INDEX BY BINARY_INTEGER;
15872 TYPE q_asset_cashflows_tbl_type IS TABLE OF l_q_asset_cashflows_csr%ROWTYPE INDEX BY BINARY_INTEGER;
15873
15874 l_q_asset_cashflows_tbl q_asset_cashflows_tbl_type;
15875 l_sq_asset_level_det_tbl asset_level_det_tbl_type;
15876 l_quoteassets_tbl quoteassets_tbl_type;
15877 l_prevtaxsources_tbl prev_tx_src_tbl_type;
15878 l_prevtaxtrxdet_tbl prev_tx_trx_det_tbl_type;
15879 lp_tax_src_params_rec tax_src_params_rec_type;
15880
15881 lx_line_params_tbl line_params_tbl_type;
15882 lx_tax_sources_tbl tax_sources_tbl_type;
15883 lp_hdr_params_rec hdr_params_rec_type;
15884
15885 l_sq_trx_type_id NUMBER;
15886 l_parent_object_code VARCHAR2(30);
15887 l_parent_object_id NUMBER;
15888 l_legal_entity_id NUMBER;
15889 l_inv_item_id NUMBER;
15890 l_supplier_id NUMBER;
15891
15892 l_reported_yn VARCHAR2(1);
15893 l_ledger_id NUMBER;
15894 l_taxation_country VARCHAR2(2);
15895
15896 l_k_start_date DATE;
15897 l_sq_fin_prod_id NUMBER;
15898 l_sq_int_disclosed VARCHAR2(30);
15899 l_sq_transfer_of_title VARCHAR2(30);
15900 l_sq_sale_lease_back VARCHAR2(30);
15901 l_sq_purchase_of_lease VARCHAR2(30);
15902 l_sq_usage_of_equipment VARCHAR2(450);
15903 l_sq_age_of_equipment NUMBER;
15904
15905 l_inv_item_org_id NUMBER;
15906
15907 l_fetch_size NUMBER := 10000;
15908 i NUMBER;
15909 l_fma_id NUMBER;
15910 l_formula_name VARCHAR2(150);
15911
15912 l_cust_acct_id NUMBER;
15913 l_bill_to_siteuseid NUMBER;
15914 l_bill_to_party_site_id NUMBER;
15915 l_bill_to_party_id NUMBER;
15916 l_bill_to_location_id NUMBER;
15917 l_currency_code VARCHAR2(15);
15918 l_precision NUMBER;
15919 l_minimum_accountable_unit NUMBER;
15920 l_cust_trx_type_id NUMBER;
15921 l_party_id NUMBER;
15922 l_vendor_site_id NUMBER;
15923 l_loc_id NUMBER;
15924 l_ship_to_siteuseid NUMBER;
15925 l_ship_to_party_site_id NUMBER;
15926 l_ship_to_party_id NUMBER;
15927 l_ship_to_location_id NUMBER;
15928 l_org_id NUMBER;
15929 l_start_date DATE;
15930 l_currency_conversion_type VARCHAR2(30);
15931 l_currency_conversion_rate NUMBER;
15932 l_currency_conversion_date DATE;
15933 l_line_intended_use VARCHAR2(240);
15934 l_deal_type VARCHAR2(30);
15935
15936 tax_call_cnt NUMBER;
15937 Q_pymnt_exist VARCHAR2(1);
15938 ind NUMBER;
15939
15940 BEGIN
15941
15942 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15943 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax','Begin(+)');
15944 END IF;
15945
15946 --Print Input Variables
15947 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15948 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15949 'p_init_msg_list :'||p_init_msg_list);
15950 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15951 'p_source_trx_id :'||p_source_trx_id);
15952 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15953 'p_source_trx_name :'||p_source_trx_name);
15954 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15955 'p_source_table :'||p_source_table);
15956 END IF;
15957
15958 x_return_status := OKL_API.G_RET_STS_SUCCESS;
15959
15960 -- Validate the source trx id
15961 OPEN l_leasequotes_csr(p_source_trx_id);
15962 FETCH l_leasequotes_csr INTO l_k_start_date, l_sq_fin_prod_id, l_sq_int_disclosed,
15963 l_sq_transfer_of_title, l_sq_sale_lease_back, l_sq_purchase_of_lease, l_sq_usage_of_equipment,
15964 l_sq_age_of_equipment, l_parent_object_code, l_parent_object_id, l_legal_entity_id;
15965
15966 IF l_leasequotes_csr%NOTFOUND THEN
15967 -- Source trx id is invalid
15968 OKC_API.set_message( p_app_name => 'OKC',
15969 p_msg_name => G_INVALID_VALUE,
15970 p_token1 => G_COL_NAME_TOKEN,
15971 p_token1_value => 'SOURCE_TRX_ID');
15972 RAISE OKL_API.G_EXCEPTION_ERROR;
15973 END IF;
15974 CLOSE l_leasequotes_csr;
15975
15976 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
15977 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15978 'l_k_start_date '||l_k_start_date );
15979 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15980 'l_sq_fin_prod_id '||l_sq_fin_prod_id );
15981 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15982 'l_sq_int_disclosed '||l_sq_int_disclosed );
15983 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15984 'l_sq_transfer_of_title '||l_sq_transfer_of_title );
15985 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15986 'l_sq_sale_lease_back '||l_sq_sale_lease_back );
15987 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15988 'l_sq_purchase_of_lease '||l_sq_purchase_of_lease );
15989 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15990 'l_sq_usage_of_equipment '||l_sq_usage_of_equipment );
15991 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15992 'l_sq_age_of_equipment '||l_sq_age_of_equipment );
15993 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15994 'l_parent_object_code '||l_parent_object_code );
15995 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
15996 'l_parent_object_id '||l_parent_object_id );
15997 END IF;
15998
15999 -- Check if Quoting tax lines already exist for this quote
16000 OPEN l_prevtaxsources_csr(p_source_trx_id);
16001 LOOP
16002 l_prevtaxsources_tbl.DELETE;
16003 FETCH l_prevtaxsources_csr BULK COLLECT INTO l_prevtaxsources_tbl LIMIT l_fetch_size;
16004 IF l_prevtaxsources_tbl.COUNT > 0 THEN
16005 i := 0;
16006 l_prevtaxtrxdet_tbl.DELETE;
16007
16008 FOR k IN l_prevtaxsources_tbl.FIRST .. l_prevtaxsources_tbl.LAST LOOP
16009 -- Get the corresponding tax trx details
16010 FOR l_prevtaxtrxdet_rec IN l_prevtaxtrxdet_csr(l_prevtaxsources_tbl(k)) LOOP
16011 i := i + 1;
16012 l_prevtaxtrxdet_tbl(i):= l_prevtaxtrxdet_rec.id;
16013
16014 END LOOP;
16015 END LOOP;
16016
16017 -- Delete from both the tables.
16018 BEGIN
16019 IF l_prevtaxtrxdet_tbl.COUNT > 0 THEN
16020 FORALL i IN l_prevtaxtrxdet_tbl.FIRST..l_prevtaxtrxdet_tbl.LAST
16021 DELETE FROM OKL_TAX_TRX_DETAILS WHERE id = l_prevtaxtrxdet_tbl(i);
16022
16023 END IF;
16024 EXCEPTION
16025 WHEN OTHERS THEN
16026 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
16027 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
16028 OKL_API.set_message( p_app_name => 'OKL',
16029 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
16030 p_token1 => 'TABLE_NAME',
16031 p_token1_value => 'OKL_TAX_TRX_DETAILS',
16032 p_token2 => 'ERROR_CODE',
16033 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
16034 p_token3 => 'ITERATION',
16035 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
16036 END LOOP;
16037 RAISE OKL_API.G_EXCEPTION_ERROR;
16038 END IF;
16039 END;
16040
16041 BEGIN
16042 FORALL i IN l_prevtaxsources_tbl.FIRST..l_prevtaxsources_tbl.LAST
16043 DELETE FROM OKL_TAX_SOURCES WHERE id = l_prevtaxsources_tbl(i);
16044 EXCEPTION
16045 WHEN OTHERS THEN
16046 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
16047 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
16048 OKL_API.set_message( p_app_name => 'OKL',
16049 p_msg_name => 'OKL_TX_TRX_DEL_ERR',
16050 p_token1 => 'TABLE_NAME',
16051 p_token1_value => 'OKL_TAX_SOURCES',
16052 p_token2 => 'ERROR_CODE',
16053 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
16054 p_token3 => 'ITERATION',
16055 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
16056 END LOOP;
16057 RAISE OKL_API.G_EXCEPTION_ERROR;
16058 END IF;
16059 END;
16060
16061 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16062 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16063 'Deleted prev tax sources and lines for this sales quote ' );
16064 END IF;
16065
16066 END IF;
16067 EXIT WHEN l_prevtaxsources_csr%NOTFOUND;
16068 END LOOP;
16069 CLOSE l_prevtaxsources_csr;
16070
16071 -- Fetch the Ledger info
16072 l_ledger_id := okl_accounting_util.get_set_of_books_id;
16073 l_reported_yn := 'N';
16074
16075 -- Fetch the Tax country
16076 l_taxation_country := get_default_taxation_country(x_return_status => x_return_status,
16077 x_msg_count => x_msg_count,
16078 x_msg_data => x_msg_data,
16079 p_legal_entity_id => l_legal_entity_id);
16080 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16081 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16082 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16083 RAISE OKL_API.G_EXCEPTION_ERROR;
16084 END IF;
16085
16086 -- Fetch 'Sales Quote' Trx type ID
16087 OPEN l_trxtypes_csr;
16088 FETCH l_trxtypes_csr INTO l_sq_trx_type_id;
16089 CLOSE l_trxtypes_csr;
16090
16091 -- Check if taxable basis override applies to 'Sales Quote' transaction
16092 OPEN l_txbasisoverride_csr(cp_try_id => l_sq_trx_type_id);
16093 FETCH l_txbasisoverride_csr INTO l_fma_id;
16094 CLOSE l_txbasisoverride_csr;
16095
16096 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16097 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16098 'Sales Quote Trx Type ID '||l_sq_trx_type_id );
16099 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16100 'Formula ID '||l_fma_id );
16101 END IF;
16102
16103 IF l_fma_id IS NOT NULL THEN
16104 OPEN l_formulae_csr(l_fma_id);
16105 FETCH l_formulae_csr INTO l_formula_name;
16106 IF l_formulae_csr%NOTFOUND THEN
16107 OKC_API.set_message( p_app_name => 'OKC',
16108 p_msg_name => G_INVALID_VALUE,
16109 p_token1 => G_COL_NAME_TOKEN,
16110 p_token1_value => 'FMA_ID');
16111 RAISE OKL_API.G_EXCEPTION_ERROR;
16112 END IF;
16113 CLOSE l_formulae_csr;
16114
16115 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16116 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16117 'l_formula_name '||l_formula_name );
16118 END IF;
16119 END IF;
16120
16121 -- Get the AR cust trx type ID
16122 OPEN l_racusttrxtypes_csr;
16123 FETCH l_racusttrxtypes_csr INTO l_cust_trx_type_id;
16124 IF l_racusttrxtypes_csr%NOTFOUND THEN
16125 -- Cust trx type id is required
16126 OKC_API.set_message( p_app_name => 'OKC',
16127 p_msg_name => G_REQUIRED_VALUE,
16128 p_token1 => G_COL_NAME_TOKEN,
16129 p_token1_value => 'CUST_TRX_TYPE_ID');
16130 RAISE OKL_API.G_EXCEPTION_ERROR;
16131 END IF;
16132 CLOSE l_racusttrxtypes_csr;
16133
16134 -- Fetch parent object values
16135 IF l_parent_object_code ='LEASEOPP' THEN
16136 OPEN l_leaseopp_csr(p_source_trx_id);
16137 FETCH l_leaseopp_csr INTO l_currency_code, l_cust_acct_id, l_party_id, -- l_cust_acct_id may be null
16138 l_org_id, l_start_date, l_currency_conversion_type,
16139 l_currency_conversion_rate, l_currency_conversion_date,
16140 l_line_intended_use,l_deal_type;
16141 IF l_leaseopp_csr%NOTFOUND THEN
16142 OKC_API.set_message( p_app_name => 'OKC',
16143 p_msg_name => G_REQUIRED_VALUE,
16144 p_token1 => G_COL_NAME_TOKEN,
16145 p_token1_value => 'CURRENCY_CODE');
16146 RAISE OKL_API.G_EXCEPTION_ERROR;
16147 END IF;
16148 CLOSE l_leaseopp_csr;
16149 ELSIF l_parent_object_code ='LEASEAPP' THEN
16150 OPEN l_leaseapp_csr(p_source_trx_id);
16151 FETCH l_leaseapp_csr INTO l_currency_code, l_cust_acct_id, l_party_id, -- l_cust_acct_id may be null
16152 l_org_id, l_start_date, l_currency_conversion_type,
16153 l_currency_conversion_rate, l_currency_conversion_date,
16154 l_line_intended_use, l_deal_type;
16155 IF l_leaseapp_csr%NOTFOUND THEN
16156 OKC_API.set_message( p_app_name => 'OKC',
16157 p_msg_name => G_REQUIRED_VALUE,
16158 p_token1 => G_COL_NAME_TOKEN,
16159 p_token1_value => 'CURRENCY_CODE');
16160 RAISE OKL_API.G_EXCEPTION_ERROR;
16161 END IF;
16162 CLOSE l_leaseapp_csr;
16163 END IF;
16164
16165 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16166 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16167 'l_currency_code '||l_currency_code );
16168 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16169 'l_cust_acct_id '||l_cust_acct_id );
16170 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16171 'l_party_id '||l_party_id );
16172 END IF;
16173
16174 -- Get Bill to Site Use ID from TCA
16175 -- This cursor may return more than one Bill To sites for a party
16176 -- Select the first bill to returned by the cursor
16177 -- Bill To is not captured on a sales quote. So we get it from TCA
16178 -- There may not be any Bill To site defined for a party
16179 OPEN l_billtosite_csr(l_party_id);
16180 FETCH l_billtosite_csr INTO l_bill_to_siteuseid, l_bill_to_party_site_id,
16181 l_bill_to_party_id, l_bill_to_location_id;
16182 IF l_billtosite_csr%NOTFOUND THEN
16183 OKC_API.set_message( p_app_name => 'OKL',
16184 p_msg_name => 'OKL_TX_NO_SQ_BILL_TO');
16185 RAISE OKL_API.G_EXCEPTION_ERROR;
16186 END IF;
16187 CLOSE l_billtosite_csr ;
16188
16189 -- Fetch precision, minimum accountable unit
16190 OPEN l_fndcurrency_csr(l_currency_code);
16191 FETCH l_fndcurrency_csr INTO l_precision, l_minimum_accountable_unit;
16192 IF l_fndcurrency_csr%NOTFOUND THEN
16193 -- Currency code is invalid
16194 OKC_API.set_message( p_app_name => 'OKC',
16195 p_msg_name => G_INVALID_VALUE,
16196 p_token1 => G_COL_NAME_TOKEN,
16197 p_token1_value => 'CURRENCY_CODE');
16198 RAISE OKL_API.G_EXCEPTION_ERROR;
16199 END IF;
16200 CLOSE l_fndcurrency_csr;
16201
16202 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16203 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16204 'l_bill_to_siteuseid '||l_bill_to_siteuseid );
16205 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16206 'l_precision '||l_precision );
16207 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16208 'l_minimum_accountable_unit '||l_minimum_accountable_unit );
16209 END IF;
16210
16211 -- Sales Quoting is not capturing Purchase Option as of now.
16212 -- So this determinant will be null for Sales Quote
16213
16214 -- Get all the assets belonging to a quote
16215 -------------- Populate asset level TBC Determinants ---------------
16216 i := 0;
16217
16218 OPEN l_quoteassets_csr(p_source_trx_id);
16219 LOOP
16220 l_quoteassets_tbl.DELETE;
16221 FETCH l_quoteassets_csr BULK COLLECT INTO l_quoteassets_tbl LIMIT l_fetch_size;
16222
16223 IF l_quoteassets_tbl.COUNT > 0 THEN
16224 FOR K IN l_quoteassets_tbl.FIRST..l_quoteassets_tbl.LAST LOOP
16225
16226 OPEN l_assetcomponent_csr(l_quoteassets_tbl(k).asset_id);
16227 FETCH l_assetcomponent_csr INTO l_inv_item_id, l_supplier_id;
16228 CLOSE l_assetcomponent_csr;
16229
16230 IF l_supplier_id IS NOT NULL THEN
16231 OPEN l_povendorsites_csr(l_supplier_id);
16232 FETCH l_povendorsites_csr INTO l_vendor_site_id; -- will be null if none of the sites are checked as primary
16233 CLOSE l_povendorsites_csr;
16234 END IF;
16235
16236 -- get the location ID
16237 OPEN l_get_location_id(l_quoteassets_tbl(k).install_site_id);
16238 FETCH l_get_location_id INTO l_loc_id;
16239 CLOSE l_get_location_id;
16240
16241 IF l_loc_id IS NULL THEN
16242 -- Install Location id is required
16243 OKL_API.set_message( p_app_name => 'OKC',
16244 p_msg_name => G_REQUIRED_VALUE,
16245 p_token1 => G_COL_NAME_TOKEN,
16246 p_token1_value => 'INSTALL_LOCATION_ID');
16247 RAISE OKL_API.G_EXCEPTION_ERROR;
16248 END IF;
16249
16250 IF l_cust_acct_id IS NOT NULL THEN
16251 -- Get the ship to site use id of the asset
16252 OPEN l_get_shiptositeid(l_cust_acct_id,l_quoteassets_tbl(k).install_site_id,l_loc_id);
16253 FETCH l_get_shiptositeid INTO l_ship_to_siteuseid, l_ship_to_party_site_id,
16254 l_ship_to_party_id, l_ship_to_location_id;
16255 CLOSE l_get_shiptositeid;
16256 ELSE
16257 OPEN l_shiptosite_csr(l_party_id);
16258 FETCH l_shiptosite_csr INTO l_ship_to_siteuseid, l_ship_to_party_site_id,
16259 l_ship_to_party_id, l_ship_to_location_id;
16260 CLOSE l_shiptosite_csr;
16261 END IF;
16262
16263 l_sq_asset_level_det_tbl(i).asset_id := l_quoteassets_tbl(k).asset_id;
16264 l_sq_asset_level_det_tbl(i).asset_number := l_quoteassets_tbl(k).asset_number;
16265 l_sq_asset_level_det_tbl(i).vendor_site_id := l_vendor_site_id;
16266 l_sq_asset_level_det_tbl(i).inv_item_id := l_inv_item_id;
16267 l_sq_asset_level_det_tbl(i).ship_to_site_use_id := l_ship_to_siteuseid;
16268
16269 l_sq_asset_level_det_tbl(i).asset_pymnt_exist := 'N';
16270
16271 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16272 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16273 'i '||i );
16274 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16275 'asset_id '||l_sq_asset_level_det_tbl(i).asset_id );
16276 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16277 'asset_number '||l_sq_asset_level_det_tbl(i).asset_number );
16278 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16279 'vendor_site_id '||l_sq_asset_level_det_tbl(i).vendor_site_id );
16280 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16281 'inv_item_id '||l_sq_asset_level_det_tbl(i).inv_item_id );
16282 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16283 'ship_to_site_use_id '||l_sq_asset_level_det_tbl(i).ship_to_site_use_id );
16284 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16285 'asset_pymnt_exist '||l_sq_asset_level_det_tbl(i).asset_pymnt_exist );
16286 END IF;
16287
16288 i := i+1;
16289 END LOOP;
16290 END IF;
16291 EXIT WHEN l_quoteassets_csr%NOTFOUND;
16292 END LOOP;
16293 CLOSE l_quoteassets_csr;
16294
16295 -- Populate tax info
16296 Q_pymnt_exist := 'N';
16297
16298 i := 1;
16299 OPEN l_q_asset_cashflows_csr(p_source_trx_id);
16300 LOOP
16301 l_q_asset_cashflows_tbl.DELETE;
16302 FETCH l_q_asset_cashflows_csr BULK COLLECT INTO l_q_asset_cashflows_tbl LIMIT l_fetch_size;
16303
16304 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16305 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16306 'l_q_asset_cashflows_tbl.count '||l_q_asset_cashflows_tbl.count||' i = '||i );
16307 END IF;
16308
16309 IF l_q_asset_cashflows_tbl.count = 0 AND i = 1 THEN
16310 -- No payments exist
16311 -- Tax call will still be made at the Q hdr and each asset level
16312
16313 tax_call_cnt := 1;
16314
16315 -- Quote level call begin
16316
16317 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16318 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16319 'tax_call_cnt '||tax_call_cnt );
16320 END IF;
16321
16322 -- Populate tax sources record -- start
16323 lp_tax_src_params_rec.kle_id := null;
16324 lp_tax_src_params_rec.asset_number := null;
16325 lp_tax_src_params_rec.line_name := null;
16326
16327 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16328 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16329 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16330 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16331
16332 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16333 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16334 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16335 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16336
16337 lp_tax_src_params_rec.inventory_item_id := null;
16338 lp_tax_src_params_rec.sty_id := null;
16339 lp_tax_src_params_rec.khr_id := null;
16340 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16341 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16342 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16343 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16344 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16345 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16346 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16347 lp_tax_src_params_rec.trx_date := l_start_date;
16348 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16349 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16350 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16351 lp_tax_src_params_rec.org_id := l_org_id;
16352 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16353 lp_tax_src_params_rec.line_amt := 0;
16354 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16355
16356 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16357 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16358 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16359 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16360 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16361 lp_tax_src_params_rec.adjusted_doc_number := null;
16362 lp_tax_src_params_rec.adjusted_doc_date := null;
16363 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16364 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16365
16366 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16367 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16368 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16369 -- Populate tax sources record -- end
16370
16371 populate_tax_info(
16372 p_api_version => p_api_version,
16373 p_init_msg_list => OKC_API.G_FALSE,
16374 x_return_status => x_return_status,
16375 x_msg_count => x_msg_count,
16376 x_msg_data => x_msg_data,
16377 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16378 p_fin_prod_id_det => l_sq_fin_prod_id,
16379 p_int_disclosed_det => l_sq_int_disclosed,
16380 p_title_trnsfr_code => null,
16381 p_sale_lease_back_code => null,
16382 p_lease_purchased_code => null,
16383 p_equip_usage_code => null,
16384 p_vendor_site_id => null,
16385 p_age_of_equip => null,
16386 p_source_trx_name => p_source_trx_name,
16387 p_cust_trx_type_id => l_cust_trx_type_id,
16388 p_book_class_code => l_deal_type,
16389 p_tax_call_cnt => tax_call_cnt,
16390 p_fma_id => l_fma_id,
16391 p_formula_name => l_formula_name,
16392 p_minimum_accountable_unit => l_minimum_accountable_unit,
16393 p_precision => l_precision,
16394 p_sales_quote_id => p_source_trx_id,
16395 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16396 p_ledger_id => l_ledger_id,
16397 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16398 p_tax_src_params_rec => lp_tax_src_params_rec,
16399 p_quote_flag => 'Y',
16400 p_rounding_ship_to_party_id => null,
16401 p_rounding_bill_to_party_id => l_bill_to_party_id,
16402 p_line_amt_includes_tax_flag => 'N',
16403 p_term_quote_type_code => null,
16404 p_term_quote_reason_code => null,
16405 px_tax_sources_tbl => lx_tax_sources_tbl,
16406 px_line_params_tbl => lx_line_params_tbl );
16407
16408 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16409 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16410 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16411 RAISE OKL_API.G_EXCEPTION_ERROR;
16412 END IF;
16413
16414 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16415 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16416 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16417 END IF;
16418 -- quote level call end
16419
16420 tax_call_cnt := tax_call_cnt + 1;
16421
16422 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16423 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16424 'tax_call_cnt '||tax_call_cnt );
16425 END IF;
16426
16427 -- Asset level call begin
16428 IF l_sq_asset_level_det_tbl.COUNT > 0 THEN
16429
16430 FOR asset_cnt IN l_sq_asset_level_det_tbl.FIRST .. l_sq_asset_level_det_tbl.LAST LOOP
16431
16432 -- Populate tax sources record -- start
16433 lp_tax_src_params_rec.kle_id := null;
16434 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(asset_cnt).asset_number;
16435 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(asset_cnt).asset_number;
16436
16437 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;
16438 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16439 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16440 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16441
16442 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16443 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16444 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16445 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16446
16447 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(asset_cnt).inv_item_id;
16448 lp_tax_src_params_rec.sty_id := null;
16449 lp_tax_src_params_rec.khr_id := null;
16450 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16451 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16452 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16453 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16454 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16455 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16456 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16457 lp_tax_src_params_rec.trx_date := l_start_date;
16458 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16459 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16460 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16461 lp_tax_src_params_rec.org_id := l_org_id;
16462 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16463 lp_tax_src_params_rec.line_amt := 0;
16464 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16465
16466 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16467 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16468 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16469 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16470 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16471 lp_tax_src_params_rec.adjusted_doc_number := null;
16472 lp_tax_src_params_rec.adjusted_doc_date := null;
16473 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16474 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16475
16476 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16477 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16478 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16479 -- Populate tax sources record -- end
16480
16481 -- asset level call begin
16482 populate_tax_info(
16483 p_api_version => p_api_version,
16484 p_init_msg_list => OKC_API.G_FALSE,
16485 x_return_status => x_return_status,
16486 x_msg_count => x_msg_count,
16487 x_msg_data => x_msg_data,
16488 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16489 p_fin_prod_id_det => l_sq_fin_prod_id,
16490 p_int_disclosed_det => l_sq_int_disclosed,
16491 p_title_trnsfr_code => l_sq_transfer_of_title,
16492 p_sale_lease_back_code => l_sq_sale_lease_back,
16493 p_lease_purchased_code => l_sq_purchase_of_lease,
16494 p_equip_usage_code => l_sq_usage_of_equipment,
16495 p_vendor_site_id => l_sq_asset_level_det_tbl(asset_cnt).vendor_site_id,
16496 p_age_of_equip => l_sq_age_of_equipment,
16497 p_source_trx_name => p_source_trx_name,
16498 p_cust_trx_type_id => l_cust_trx_type_id,
16499 p_book_class_code => l_deal_type,
16500 p_tax_call_cnt => tax_call_cnt,
16501 p_fma_id => l_fma_id,
16502 p_formula_name => l_formula_name,
16503 p_minimum_accountable_unit => l_minimum_accountable_unit,
16504 p_precision => l_precision,
16505 p_sales_quote_id => p_source_trx_id,
16506 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16507 p_ledger_id => l_ledger_id,
16508 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16509 p_tax_src_params_rec => lp_tax_src_params_rec,
16510 p_quote_flag => 'Y',
16511 p_rounding_ship_to_party_id => null,
16512 p_rounding_bill_to_party_id => l_bill_to_party_id,
16513 p_line_amt_includes_tax_flag => 'N',
16514 p_term_quote_type_code => null,
16515 p_term_quote_reason_code => null,
16516 px_tax_sources_tbl => lx_tax_sources_tbl,
16517 px_line_params_tbl => lx_line_params_tbl );
16518
16519 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16520 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16521 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16522 RAISE OKL_API.G_EXCEPTION_ERROR;
16523 END IF;
16524 -- asset level call end
16525
16526 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16527 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16528 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16529 END IF;
16530 tax_call_cnt := tax_call_cnt + 1;
16531 END LOOP;
16532 END IF;
16533 -- Asset level call end
16534 -- No payments exist - end
16535
16536 ELSIF l_q_asset_cashflows_tbl.COUNT > 0 THEN
16537 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16538 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16539 'payments exist ');
16540 END IF;
16541
16542 FOR K IN l_q_asset_cashflows_tbl.FIRST..l_q_asset_cashflows_tbl.LAST LOOP
16543
16544 tax_call_cnt := i;
16545
16546 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16547 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16548 'tax_call_cnt '||tax_call_cnt);
16549 END IF;
16550
16551 IF l_q_asset_cashflows_tbl(k).asset_number IS NULL THEN
16552 -- Q level payment
16553
16554 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16555 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16556 'Quote level payment ');
16557 END IF;
16558
16559 -- Populate tax sources record -- start
16560 lp_tax_src_params_rec.kle_id := null;
16561 lp_tax_src_params_rec.asset_number := null;
16562 lp_tax_src_params_rec.line_name := null;
16563
16564 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16565 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16566 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16567 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16568
16569 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16570 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16571 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16572 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16573
16574 lp_tax_src_params_rec.inventory_item_id := null;
16575 lp_tax_src_params_rec.sty_id := l_q_asset_cashflows_tbl(k).sty_id;
16576 lp_tax_src_params_rec.khr_id := null;
16577 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16578 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16579 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16580 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16581 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16582 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16583 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16584 lp_tax_src_params_rec.trx_date := l_start_date;
16585 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16586 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16587 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16588 lp_tax_src_params_rec.org_id := l_org_id;
16589 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16590 lp_tax_src_params_rec.line_amt := l_q_asset_cashflows_tbl(k).taxable_basis;
16591 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16592
16593 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16594 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16595 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16596 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16597 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16598 lp_tax_src_params_rec.adjusted_doc_number := null;
16599 lp_tax_src_params_rec.adjusted_doc_date := null;
16600 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16601 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16602
16603 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16604 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16605 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16606 -- Populate tax sources record -- end
16607
16608 populate_tax_info(
16609 p_api_version => p_api_version,
16610 p_init_msg_list => OKC_API.G_FALSE,
16611 x_return_status => x_return_status,
16612 x_msg_count => x_msg_count,
16613 x_msg_data => x_msg_data,
16614 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16615 p_fin_prod_id_det => l_sq_fin_prod_id,
16616 p_int_disclosed_det => l_sq_int_disclosed,
16617 p_title_trnsfr_code => null,
16618 p_sale_lease_back_code => null,
16619 p_lease_purchased_code => null,
16620 p_equip_usage_code => null,
16621 p_vendor_site_id => null,
16622 p_age_of_equip => null,
16623 p_source_trx_name => p_source_trx_name,
16624 p_cust_trx_type_id => l_cust_trx_type_id,
16625 p_book_class_code => l_deal_type,
16626 p_tax_call_cnt => tax_call_cnt,
16627 p_fma_id => l_fma_id,
16628 p_formula_name => l_formula_name,
16629 p_minimum_accountable_unit => l_minimum_accountable_unit,
16630 p_precision => l_precision,
16631 p_sales_quote_id => p_source_trx_id,
16632 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16633 p_ledger_id => l_ledger_id,
16634 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16635 p_tax_src_params_rec => lp_tax_src_params_rec,
16636 p_quote_flag => 'Y',
16637 p_rounding_ship_to_party_id => null,
16638 p_rounding_bill_to_party_id => l_bill_to_party_id,
16639 p_line_amt_includes_tax_flag => 'N',
16640 p_term_quote_type_code => null,
16641 p_term_quote_reason_code => null,
16642 px_tax_sources_tbl => lx_tax_sources_tbl,
16643 px_line_params_tbl => lx_line_params_tbl );
16644
16645 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16646 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16647 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16648 RAISE OKL_API.G_EXCEPTION_ERROR;
16649 END IF;
16650
16651 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16652 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16653 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16654 END IF;
16655
16656 Q_pymnt_exist := 'Y';
16657
16658 ELSE -- asset line level payment
16659 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16660 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16661 'Asset level payment ');
16662 END IF;
16663
16664 IF l_sq_asset_level_det_tbl.count > 0 THEN
16665 ind := l_sq_asset_level_det_tbl.FIRST;
16666 LOOP
16667 IF l_sq_asset_level_det_tbl(ind).asset_number = l_q_asset_cashflows_tbl(k).asset_number THEN
16668 l_sq_asset_level_det_tbl(ind).asset_pymnt_exist := 'Y';
16669
16670 -- asset level call begin
16671 -- Populate tax sources record -- start
16672 lp_tax_src_params_rec.kle_id := null;
16673 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(ind).asset_number;
16674 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(ind).asset_number;
16675
16676 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_sq_asset_level_det_tbl(ind).ship_to_site_use_id;
16677 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16678 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16679 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16680
16681 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16682 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16683 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16684 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16685
16686 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(ind).inv_item_id;
16687 lp_tax_src_params_rec.sty_id := l_q_asset_cashflows_tbl(k).sty_id;
16688 lp_tax_src_params_rec.khr_id := null;
16689 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16690 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16691 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16692 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16693 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16694 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16695 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16696 lp_tax_src_params_rec.trx_date := l_start_date;
16697 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16698 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16699 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16700 lp_tax_src_params_rec.org_id := l_org_id;
16701 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16702 lp_tax_src_params_rec.line_amt := l_q_asset_cashflows_tbl(k).taxable_basis;
16703 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16704
16705 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16706 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16707 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16708 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16709 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16710 lp_tax_src_params_rec.adjusted_doc_number := null;
16711 lp_tax_src_params_rec.adjusted_doc_date := null;
16712 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16713 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16714
16715 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16716 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16717 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16718 -- Populate tax sources record -- end
16719
16720 -- asset level call begin
16721 populate_tax_info(
16722 p_api_version => p_api_version,
16723 p_init_msg_list => OKC_API.G_FALSE,
16724 x_return_status => x_return_status,
16725 x_msg_count => x_msg_count,
16726 x_msg_data => x_msg_data,
16727 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16728 p_fin_prod_id_det => l_sq_fin_prod_id,
16729 p_int_disclosed_det => l_sq_int_disclosed,
16730 p_title_trnsfr_code => l_sq_transfer_of_title,
16731 p_sale_lease_back_code => l_sq_sale_lease_back,
16732 p_lease_purchased_code => l_sq_purchase_of_lease,
16733 p_equip_usage_code => l_sq_usage_of_equipment,
16734 p_vendor_site_id => l_sq_asset_level_det_tbl(ind).vendor_site_id,
16735 p_age_of_equip => l_sq_age_of_equipment,
16736 p_source_trx_name => p_source_trx_name,
16737 p_cust_trx_type_id => l_cust_trx_type_id,
16738 p_book_class_code => l_deal_type,
16739 p_tax_call_cnt => tax_call_cnt,
16740 p_fma_id => l_fma_id,
16741 p_formula_name => l_formula_name,
16742 p_minimum_accountable_unit => l_minimum_accountable_unit,
16743 p_precision => l_precision,
16744 p_sales_quote_id => p_source_trx_id,
16745 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16746 p_ledger_id => l_ledger_id,
16747 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16748 p_tax_src_params_rec => lp_tax_src_params_rec,
16749 p_quote_flag => 'Y',
16750 p_rounding_ship_to_party_id => null,
16751 p_rounding_bill_to_party_id => l_bill_to_party_id,
16752 p_line_amt_includes_tax_flag => 'N',
16753 p_term_quote_type_code => null,
16754 p_term_quote_reason_code => null,
16755 px_tax_sources_tbl => lx_tax_sources_tbl,
16756 px_line_params_tbl => lx_line_params_tbl );
16757
16758 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16759 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16760 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16761 RAISE OKL_API.G_EXCEPTION_ERROR;
16762 END IF;
16763
16764 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16765 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16766 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16767 END IF;
16768 -- asset level call end
16769 EXIT;
16770 END IF;
16771 EXIT WHEN (ind = l_sq_asset_level_det_tbl.LAST);
16772 ind := l_sq_asset_level_det_tbl.NEXT(ind);
16773 END LOOP;
16774 END IF;
16775 END IF;
16776 i := i + 1;
16777 END LOOP;
16778 END IF;
16779 EXIT WHEN l_q_asset_cashflows_csr%NOTFOUND;
16780 END LOOP;
16781 CLOSE l_q_asset_cashflows_csr;
16782
16783 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16784 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16785 'i '||i);
16786 END IF;
16787
16788 IF i > 1 THEN -- some payments exist
16789 tax_call_cnt := i; -- pick the last index
16790
16791 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16792 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16793 'some payments exist, tax_call_cnt= '||tax_call_cnt);
16794 END IF;
16795
16796 IF Q_pymnt_exist = 'N' THEN -- Q level payment does not exist
16797 -- Quote level call begin
16798
16799 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16801 'Q level payment does not exist ');
16802 END IF;
16803
16804 -- Populate tax sources record -- start
16805 lp_tax_src_params_rec.kle_id := null;
16806 lp_tax_src_params_rec.asset_number := null;
16807 lp_tax_src_params_rec.line_name := null;
16808
16809 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_ship_to_siteuseid;
16810 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16811 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16812 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16813
16814 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16815 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16816 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16817 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16818
16819 lp_tax_src_params_rec.inventory_item_id := null;
16820 lp_tax_src_params_rec.sty_id := null;
16821 lp_tax_src_params_rec.khr_id := null;
16822 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16823 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16824 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16825 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16826 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16827 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16828 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16829 lp_tax_src_params_rec.trx_date := l_start_date;
16830 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16831 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16832 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16833 lp_tax_src_params_rec.org_id := l_org_id;
16834 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16835 lp_tax_src_params_rec.line_amt := 0;
16836 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16837
16838 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16839 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16840 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16841 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16842 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16843 lp_tax_src_params_rec.adjusted_doc_number := null;
16844 lp_tax_src_params_rec.adjusted_doc_date := null;
16845 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16846 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16847
16848 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16849 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16850 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16851 -- Populate tax sources record -- end
16852
16853 populate_tax_info(
16854 p_api_version => p_api_version,
16855 p_init_msg_list => OKC_API.G_FALSE,
16856 x_return_status => x_return_status,
16857 x_msg_count => x_msg_count,
16858 x_msg_data => x_msg_data,
16859 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16860 p_fin_prod_id_det => l_sq_fin_prod_id,
16861 p_int_disclosed_det => l_sq_int_disclosed,
16862 p_title_trnsfr_code => null,
16863 p_sale_lease_back_code => null,
16864 p_lease_purchased_code => null,
16865 p_equip_usage_code => null,
16866 p_vendor_site_id => null,
16867 p_age_of_equip => null,
16868 p_source_trx_name => p_source_trx_name,
16869 p_cust_trx_type_id => l_cust_trx_type_id,
16870 p_book_class_code => l_deal_type,
16871 p_tax_call_cnt => tax_call_cnt,
16872 p_fma_id => l_fma_id,
16873 p_formula_name => l_formula_name,
16874 p_minimum_accountable_unit => l_minimum_accountable_unit,
16875 p_precision => l_precision,
16876 p_sales_quote_id => p_source_trx_id,
16877 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16878 p_ledger_id => l_ledger_id,
16879 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16880 p_tax_src_params_rec => lp_tax_src_params_rec,
16881 p_quote_flag => 'Y',
16882 p_rounding_ship_to_party_id => null,
16883 p_rounding_bill_to_party_id => l_bill_to_party_id,
16884 p_line_amt_includes_tax_flag => 'N',
16885 p_term_quote_type_code => null,
16886 p_term_quote_reason_code => null,
16887 px_tax_sources_tbl => lx_tax_sources_tbl,
16888 px_line_params_tbl => lx_line_params_tbl );
16889
16890 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16891 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16892 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16893 RAISE OKL_API.G_EXCEPTION_ERROR;
16894 END IF;
16895
16896 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16897 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16898 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
16899 END IF;
16900 -- quote level call end
16901 tax_call_cnt := tax_call_cnt + 1;
16902 END IF;
16903
16904 -- this table will have one record for each asset
16905 -- check if payment does not exist for any of the assets
16906 FOR k IN l_sq_asset_level_det_tbl.FIRST .. l_sq_asset_level_det_tbl.LAST LOOP
16907 IF l_sq_asset_level_det_tbl(k).asset_pymnt_exist = 'N' THEN -- aset level payment does not exist
16908
16909 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
16910 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
16911 'tax_call_cnt '||tax_call_cnt||'asset_pymnt_exist = N ' );
16912 END IF;
16913
16914 -- Populate tax sources record -- start
16915 lp_tax_src_params_rec.kle_id := null;
16916 lp_tax_src_params_rec.asset_number := l_sq_asset_level_det_tbl(k).asset_number;
16917 lp_tax_src_params_rec.line_name := l_sq_asset_level_det_tbl(k).asset_number;
16918
16919 lp_tax_src_params_rec.ship_to_cust_acct_site_use_id := l_sq_asset_level_det_tbl(k).ship_to_site_use_id;
16920 lp_tax_src_params_rec.ship_to_party_site_id := l_ship_to_party_site_id;
16921 lp_tax_src_params_rec.ship_to_party_id := l_ship_to_party_id;
16922 lp_tax_src_params_rec.ship_to_location_id := l_ship_to_location_id;
16923
16924 lp_tax_src_params_rec.bill_to_party_site_id := l_bill_to_party_site_id;
16925 lp_tax_src_params_rec.bill_to_party_id := l_bill_to_party_id;
16926 lp_tax_src_params_rec.bill_to_location_id := l_bill_to_location_id;
16927 lp_tax_src_params_rec.bill_to_cust_acct_site_use_id := l_bill_to_siteuseid;
16928
16929 lp_tax_src_params_rec.inventory_item_id := l_sq_asset_level_det_tbl(k).inv_item_id;
16930 lp_tax_src_params_rec.sty_id := null;
16931 lp_tax_src_params_rec.khr_id := null;
16932 lp_tax_src_params_rec.trx_id := p_source_trx_id;
16933 lp_tax_src_params_rec.entity_code := G_SQ_ENTITY_CODE;
16934 lp_tax_src_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
16935 lp_tax_src_params_rec.trx_level_type := G_TRX_LEVEL_TYPE;
16936 lp_tax_src_params_rec.tax_call_type_code := G_UPFRONT_TAX;
16937 lp_tax_src_params_rec.tax_reporting_flag := l_reported_yn;
16938 lp_tax_src_params_rec.reported_yn := l_reported_yn;
16939 lp_tax_src_params_rec.trx_date := l_start_date;
16940 lp_tax_src_params_rec.trx_currency_code := l_currency_code;
16941 lp_tax_src_params_rec.line_intended_use := l_line_intended_use;
16942 lp_tax_src_params_rec.bill_to_cust_acct_id := l_cust_acct_id;
16943 lp_tax_src_params_rec.org_id := l_org_id;
16944 lp_tax_src_params_rec.legal_entity_id := l_legal_entity_id;
16945 lp_tax_src_params_rec.line_amt := 0;
16946 lp_tax_src_params_rec.try_id := l_sq_trx_type_id;
16947
16948 lp_tax_src_params_rec.adjusted_doc_entity_code := null;
16949 lp_tax_src_params_rec.adjusted_doc_event_class_code := null;
16950 lp_tax_src_params_rec.adjusted_doc_trx_id := null;
16951 lp_tax_src_params_rec.adjusted_doc_trx_line_id := null;
16952 lp_tax_src_params_rec.adjusted_doc_trx_level_type := null;
16953 lp_tax_src_params_rec.adjusted_doc_number := null;
16954 lp_tax_src_params_rec.adjusted_doc_date := null;
16955 lp_tax_src_params_rec.tax_line_status_code := G_ACTIVE_STATUS;
16956 lp_tax_src_params_rec.default_taxation_country := l_taxation_country;
16957
16958 lp_tax_src_params_rec.currency_conversion_type := l_currency_conversion_type;
16959 lp_tax_src_params_rec.currency_conversion_rate := l_currency_conversion_rate;
16960 lp_tax_src_params_rec.currency_conversion_date := l_currency_conversion_date;
16961 -- Populate tax sources record -- end
16962
16963 -- asset level call begin
16964 populate_tax_info(
16965 p_api_version => p_api_version,
16966 p_init_msg_list => OKC_API.G_FALSE,
16967 x_return_status => x_return_status,
16968 x_msg_count => x_msg_count,
16969 x_msg_data => x_msg_data,
16970 p_prch_opt_det => null, -- purchase option is not captured on Sales Quote
16971 p_fin_prod_id_det => l_sq_fin_prod_id,
16972 p_int_disclosed_det => l_sq_int_disclosed,
16973 p_title_trnsfr_code => l_sq_transfer_of_title,
16974 p_sale_lease_back_code => l_sq_sale_lease_back,
16975 p_lease_purchased_code => l_sq_purchase_of_lease,
16976 p_equip_usage_code => l_sq_usage_of_equipment,
16977 p_vendor_site_id => l_sq_asset_level_det_tbl(k).vendor_site_id,
16978 p_age_of_equip => l_sq_age_of_equipment,
16979 p_source_trx_name => p_source_trx_name,
16980 p_cust_trx_type_id => l_cust_trx_type_id,
16981 p_book_class_code => l_deal_type,
16982 p_tax_call_cnt => tax_call_cnt,
16983 p_fma_id => l_fma_id,
16984 p_formula_name => l_formula_name,
16985 p_minimum_accountable_unit => l_minimum_accountable_unit,
16986 p_precision => l_precision,
16987 p_sales_quote_id => p_source_trx_id,
16988 p_event_type_code => G_SQ_CRE_EVT_TYPE_CODE,
16989 p_ledger_id => l_ledger_id,
16990 p_line_level_action => G_CREATE_LINE_LEVEL_ACTION,
16991 p_tax_src_params_rec => lp_tax_src_params_rec,
16992 p_quote_flag => 'Y',
16993 p_rounding_ship_to_party_id => null,
16994 p_rounding_bill_to_party_id => l_bill_to_party_id,
16995 p_line_amt_includes_tax_flag => 'N',
16996 p_term_quote_type_code => null,
16997 p_term_quote_reason_code => null,
16998 px_tax_sources_tbl => lx_tax_sources_tbl,
16999 px_line_params_tbl => lx_line_params_tbl );
17000
17001 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17002 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17003 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17004 RAISE OKL_API.G_EXCEPTION_ERROR;
17005 END IF;
17006 -- asset level call end
17007
17008 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17009 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17010 'lx_tax_sources_tbl.count '||lx_tax_sources_tbl.count||' lx_line_params_tbl.count '||lx_line_params_tbl.count);
17011 END IF;
17012
17013 tax_call_cnt := tax_call_cnt + 1;
17014
17015 END IF;
17016 END LOOP;
17017 END IF;
17018
17019 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17020 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17021 'lx_tax_sources_tbl.COUNT '||lx_tax_sources_tbl.COUNT);
17022 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17023 'lx_line_params_tbl.COUNT '||lx_line_params_tbl.COUNT);
17024 END IF;
17025
17026 -- Insert into okl_tax_sources
17027 BEGIN
17028 IF lx_tax_sources_tbl.COUNT > 0 THEN
17029 FORALL indx in lx_tax_sources_tbl.FIRST..lx_tax_sources_tbl.LAST
17030 -- SAVE EXCEPTIONS
17031 INSERT INTO okl_tax_sources VALUES lx_tax_sources_tbl(indx);
17032 END IF;
17033 EXCEPTION
17034 WHEN OTHERS THEN
17035 IF SQL%BULK_EXCEPTIONS.COUNT > 0 THEN
17036 FOR i IN 1..SQL%BULK_EXCEPTIONS.COUNT LOOP
17037 OKL_API.set_message( p_app_name => 'OKL',
17038 p_msg_name => 'OKL_TX_TRX_INS_ERR',
17039 p_token1 => 'TABLE_NAME',
17040 p_token1_value => 'OKL_TAX_SOURCES',
17041 p_token2 => 'ERROR_CODE',
17042 p_token2_value => SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE),
17043 p_token3 => 'ITERATION',
17044 p_token3_value => SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
17045 END LOOP;
17046 RAISE OKL_API.G_EXCEPTION_ERROR;
17047 END IF;
17048 END;
17049
17050 ---- Insert into okl_tax_sources end -----
17051 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17052 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17053 'Insert into okl_tax_sources ');
17054 END IF;
17055
17056 IF lx_line_params_tbl.COUNT > 0 THEN
17057 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17058 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17059 'Before Calling OKL_TAX_INTERFACE_PVT.calculate_tax '||x_return_status);
17060 END IF;
17061
17062 lp_hdr_params_rec.application_id := G_OKL_APPLICATION_ID;
17063 lp_hdr_params_rec.trx_id := p_source_trx_id;
17064 lp_hdr_params_rec.internal_organization_id := l_org_id;
17065 lp_hdr_params_rec.entity_code := G_SQ_ENTITY_CODE;
17066 lp_hdr_params_rec.event_class_code := G_SQ_EVENT_CLASS_CODE;
17067 lp_hdr_params_rec.event_type_code := G_SQ_CRE_EVT_TYPE_CODE;
17068 lp_hdr_params_rec.quote_flag := 'Y';
17069
17070 OKL_TAX_INTERFACE_PVT.calculate_tax(
17071 p_api_version => p_api_version,
17072 p_init_msg_list => p_init_msg_list,
17073 x_return_status => x_return_status,
17074 x_msg_count => x_msg_count,
17075 x_msg_data => x_msg_data,
17076 p_hdr_params_rec => lp_hdr_params_rec,
17077 p_line_params_tbl => lx_line_params_tbl);
17078
17079 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17080 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17081 'After tax engine call '||x_return_status);
17082 END IF;
17083
17084 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17085 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17086 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17087 RAISE OKL_API.G_EXCEPTION_ERROR;
17088 END IF;
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 'Calling "update_tax_sources_total" .. ');
17094 END IF;
17095
17096 update_tax_sources_total(p_api_version => p_api_version,
17097 p_init_msg_list => p_init_msg_list,
17098 x_return_status => x_return_status,
17099 x_msg_count => x_msg_count,
17100 x_msg_data => x_msg_data,
17101 p_source_trx_id => p_source_trx_id,
17102 p_source_trx_name => p_source_trx_name );
17103
17104 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17105 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17106 'Return Status' || x_return_status);
17107 END IF;
17108
17109 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17110 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17111 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17112 RAISE OKL_API.G_EXCEPTION_ERROR;
17113 END IF;
17114
17115 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17116 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17117 'Calling "copy_tax_trx_data" .. ');
17118 END IF;
17119
17120 copy_tax_trx_data ( p_api_version => p_api_version,
17121 p_init_msg_list => p_init_msg_list,
17122 x_return_status => x_return_status,
17123 x_msg_count => x_msg_count,
17124 x_msg_data => x_msg_data,
17125 p_trx_id => p_source_trx_id,
17126 p_entity_code => G_SQ_ENTITY_CODE,
17127 p_event_class_code => G_SQ_EVENT_CLASS_CODE,
17128 p_source_trx_name => p_source_trx_name);
17129
17130
17131 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17132 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax.',
17133 'Return Status' || x_return_status);
17134 END IF;
17135
17136 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17137 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17138 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17139 RAISE OKL_API.G_EXCEPTION_ERROR;
17140 END IF;
17141
17142 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17143 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ','End(-)');
17144 END IF;
17145
17146 EXCEPTION
17147 WHEN OKL_API.G_EXCEPTION_ERROR THEN
17148 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17149 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17150 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
17151 END IF;
17152
17153 IF l_leasequotes_csr%ISOPEN THEN
17154 CLOSE l_leasequotes_csr;
17155 END IF;
17156
17157 IF l_leaseopp_csr%ISOPEN THEN
17158 CLOSE l_leaseopp_csr;
17159 END IF;
17160
17161 IF l_leaseapp_csr%ISOPEN THEN
17162 CLOSE l_leaseapp_csr;
17163 END IF;
17164
17165 IF l_prevtaxsources_csr%ISOPEN THEN
17166 CLOSE l_prevtaxsources_csr;
17167 END IF;
17168
17169 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17170 CLOSE l_prevtaxtrxdet_csr;
17171 END IF;
17172
17173 IF l_quoteassets_csr%ISOPEN THEN
17174 CLOSE l_quoteassets_csr;
17175 END IF;
17176
17177 IF l_assetcomponent_csr%ISOPEN THEN
17178 CLOSE l_assetcomponent_csr;
17179 END IF;
17180
17181 IF l_q_asset_cashflows_csr%ISOPEN THEN
17182 CLOSE l_q_asset_cashflows_csr;
17183 END IF;
17184
17185 IF l_billtosite_csr%ISOPEN THEN
17186 CLOSE l_billtosite_csr;
17187 END IF;
17188
17189 IF l_shiptosite_csr%ISOPEN THEN
17190 CLOSE l_shiptosite_csr;
17191 END IF;
17192
17193 IF l_trxtypes_csr%ISOPEN THEN
17194 CLOSE l_trxtypes_csr;
17195 END IF;
17196
17197 IF l_txbasisoverride_csr%ISOPEN THEN
17198 CLOSE l_txbasisoverride_csr;
17199 END IF;
17200
17201 IF l_formulae_csr%ISOPEN THEN
17202 CLOSE l_formulae_csr;
17203 END IF;
17204
17205 IF l_racusttrxtypes_csr%ISOPEN THEN
17206 CLOSE l_racusttrxtypes_csr;
17207 END IF;
17208
17209 IF l_fndcurrency_csr%ISOPEN THEN
17210 CLOSE l_fndcurrency_csr;
17211 END IF;
17212
17213 IF l_povendorsites_csr%ISOPEN THEN
17214 CLOSE l_povendorsites_csr;
17215 END IF;
17216
17217 IF l_get_location_id%ISOPEN THEN
17218 CLOSE l_get_location_id;
17219 END IF;
17220
17221 IF l_get_shiptositeid%ISOPEN THEN
17222 CLOSE l_get_shiptositeid;
17223 END IF;
17224
17225 x_return_status := OKL_API.G_RET_STS_ERROR;
17226
17227 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17228 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17229 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17230 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
17231 END IF;
17232
17233 IF l_leasequotes_csr%ISOPEN THEN
17234 CLOSE l_leasequotes_csr;
17235 END IF;
17236
17237 IF l_leaseopp_csr%ISOPEN THEN
17238 CLOSE l_leaseopp_csr;
17239 END IF;
17240
17241 IF l_leaseapp_csr%ISOPEN THEN
17242 CLOSE l_leaseapp_csr;
17243 END IF;
17244
17245 IF l_prevtaxsources_csr%ISOPEN THEN
17246 CLOSE l_prevtaxsources_csr;
17247 END IF;
17248
17249 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17250 CLOSE l_prevtaxtrxdet_csr;
17251 END IF;
17252
17253 IF l_quoteassets_csr%ISOPEN THEN
17254 CLOSE l_quoteassets_csr;
17255 END IF;
17256
17257 IF l_assetcomponent_csr%ISOPEN THEN
17258 CLOSE l_assetcomponent_csr;
17259 END IF;
17260
17261 IF l_q_asset_cashflows_csr%ISOPEN THEN
17262 CLOSE l_q_asset_cashflows_csr;
17263 END IF;
17264
17265 IF l_billtosite_csr%ISOPEN THEN
17266 CLOSE l_billtosite_csr;
17267 END IF;
17268
17269 IF l_shiptosite_csr%ISOPEN THEN
17270 CLOSE l_shiptosite_csr;
17271 END IF;
17272
17273 IF l_trxtypes_csr%ISOPEN THEN
17274 CLOSE l_trxtypes_csr;
17275 END IF;
17276
17277 IF l_txbasisoverride_csr%ISOPEN THEN
17278 CLOSE l_txbasisoverride_csr;
17279 END IF;
17280
17281 IF l_formulae_csr%ISOPEN THEN
17282 CLOSE l_formulae_csr;
17283 END IF;
17284
17285 IF l_racusttrxtypes_csr%ISOPEN THEN
17286 CLOSE l_racusttrxtypes_csr;
17287 END IF;
17288
17289 IF l_fndcurrency_csr%ISOPEN THEN
17290 CLOSE l_fndcurrency_csr;
17291 END IF;
17292
17293 IF l_povendorsites_csr%ISOPEN THEN
17294 CLOSE l_povendorsites_csr;
17295 END IF;
17296
17297 IF l_get_location_id%ISOPEN THEN
17298 CLOSE l_get_location_id;
17299 END IF;
17300
17301 IF l_get_shiptositeid%ISOPEN THEN
17302 CLOSE l_get_shiptositeid;
17303 END IF;
17304
17305 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
17306
17307 WHEN OTHERS THEN
17308 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17309 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_quoting_upfront_tax ',
17310 'EXCEPTION :'||sqlerrm);
17311 END IF;
17312
17313 IF l_leasequotes_csr%ISOPEN THEN
17314 CLOSE l_leasequotes_csr;
17315 END IF;
17316
17317 IF l_leaseopp_csr%ISOPEN THEN
17318 CLOSE l_leaseopp_csr;
17319 END IF;
17320
17321 IF l_leaseapp_csr%ISOPEN THEN
17322 CLOSE l_leaseapp_csr;
17323 END IF;
17324
17325 IF l_prevtaxsources_csr%ISOPEN THEN
17326 CLOSE l_prevtaxsources_csr;
17327 END IF;
17328
17329 IF l_prevtaxtrxdet_csr%ISOPEN THEN
17330 CLOSE l_prevtaxtrxdet_csr;
17331 END IF;
17332
17333 IF l_quoteassets_csr%ISOPEN THEN
17334 CLOSE l_quoteassets_csr;
17335 END IF;
17336
17337 IF l_assetcomponent_csr%ISOPEN THEN
17338 CLOSE l_assetcomponent_csr;
17339 END IF;
17340
17341 IF l_q_asset_cashflows_csr%ISOPEN THEN
17342 CLOSE l_q_asset_cashflows_csr;
17343 END IF;
17344
17345 IF l_billtosite_csr%ISOPEN THEN
17346 CLOSE l_billtosite_csr;
17347 END IF;
17348
17349 IF l_shiptosite_csr%ISOPEN THEN
17350 CLOSE l_shiptosite_csr;
17351 END IF;
17352
17353 IF l_trxtypes_csr%ISOPEN THEN
17354 CLOSE l_trxtypes_csr;
17355 END IF;
17356
17357 IF l_txbasisoverride_csr%ISOPEN THEN
17358 CLOSE l_txbasisoverride_csr;
17359 END IF;
17360
17361 IF l_formulae_csr%ISOPEN THEN
17362 CLOSE l_formulae_csr;
17363 END IF;
17364
17365 IF l_racusttrxtypes_csr%ISOPEN THEN
17366 CLOSE l_racusttrxtypes_csr;
17367 END IF;
17368
17369 IF l_fndcurrency_csr%ISOPEN THEN
17370 CLOSE l_fndcurrency_csr;
17371 END IF;
17372
17373 IF l_povendorsites_csr%ISOPEN THEN
17374 CLOSE l_povendorsites_csr;
17375 END IF;
17376
17377 IF l_get_location_id%ISOPEN THEN
17378 CLOSE l_get_location_id;
17379 END IF;
17380
17381 IF l_get_shiptositeid%ISOPEN THEN
17382 CLOSE l_get_shiptositeid;
17383 END IF;
17384
17385 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
17386 -- unexpected error
17387 OKL_API.set_message(p_app_name => g_app_name,
17388 p_msg_name => g_unexpected_error,
17389 p_token1 => g_sqlcode_token,
17390 p_token1_value => sqlcode,
17391 p_token2 => g_sqlerrm_token,
17392 p_token2_value => sqlerrm);
17393 END process_quoting_upfront_tax;
17394
17395 /*========================================================================
17396 | PUBLIC PROCEDURE calculate_sales_tax
17397 |
17398 | DESCRIPTION
17399 | This procedure is called by OLM tax events to calculate tax
17400 |
17401 | CALLED FROM OLM Tax Events
17402 |
17403 |
17404 | CALLS PROCEDURES/FUNCTIONS
17405 | process_tax_schedule_tax()
17406 | process_quote_tax()
17407 | process_asset_loc_tax()
17408 | process_split_asset_tax()
17409 | process_booking_upfront_tax()
17410 | process_pre_rbk_upfront_tax()
17411 | process_rebook_upfront_tax()
17412 |
17413 |
17414 | PARAMETERS
17415 | p_source_trx_id -- Source transaction ID
17416 | p_source_trx_name -- Source transaction Name
17417 | p_source_table -- Source table
17418 | p_tax_call_type -- Tax call type (applies to Booking, Rebook, Asset Location Change)
17419 | p_serialized_asset -- Serialized asset Y/N flag (applies to Asset Location Change)
17420 | p_request_id -- ID of Okl_Trx_Requests (applies to Asset Location Change)
17421 |
17422 | KNOWN ISSUES
17423 |
17424 | NOTES
17425 |
17426 |
17427 | MODIFICATION HISTORY
17428 | Date Author Description of Changes
17429 | 08-APR-05 SECHAWLA Created
17430 | 12-DEC-05 SECHAWLA 4690074 set a message if OU does not allow
17431 | tax calculation
17432 |
17433 *=======================================================================*/
17434 PROCEDURE calculate_sales_tax(
17435 p_api_version IN NUMBER,
17436 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
17437 x_return_status OUT NOCOPY VARCHAR2,
17438 x_msg_count OUT NOCOPY NUMBER,
17439 x_msg_data OUT NOCOPY VARCHAR2,
17440 p_source_trx_id IN NUMBER,
17441 p_source_trx_name IN VARCHAR2,
17442 p_source_table IN VARCHAR2,
17443 p_tax_call_type IN VARCHAR2 DEFAULT NULL,
17444 p_serialized_asset IN VARCHAR2 DEFAULT NULL,
17445 p_request_id IN NUMBER DEFAULT NULL,
17446 p_alc_final_call IN VARCHAR2 DEFAULT NULL)IS
17447
17448 --------------- CS Tax Schedule ------------------
17449 --p_source_trx_id ---> okl_trx_requests.id
17450 --p_source_trx_name ---> 'Tax Schedule'
17451 --p_source_table ---> 'OKL_TRX_REQUESTS'
17452 --------------------------------------------------
17453
17454 --------------- Booking ------------------
17455 --p_source_trx_id ---> okl_trx_contracts.id
17456 --p_source_trx_name ---> 'Booking'
17457 --p_source_table ---> 'OKL_TRX_CONTRACTS'
17458 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL' call type
17459 --------------------------------------------------
17460
17461 --------------- Rebook ------------------
17462 --p_source_trx_id ---> okl_trx_contracts.id
17463 --p_source_trx_name ---> 'Rebook'
17464 --p_source_table ---> 'OKL_TRX_CONTRACTS'
17465 --p_tax_call_type ---> 'ESTIMATED'/'ACTUAL' call type
17466 --------------------------------------------------
17467
17468 -------------- Split Asset ------------------
17469 --p_source_trx_id ---> okl_trx_assets.id
17470 --p_source_trx_name ---> 'Split Asset'
17471 --p_source_table ---> 'OKL_TRX_ASSETS'
17472 --------------------------------------------------
17473
17474 -------------- Reverse ------------------
17475 --p_source_trx_id ---> okl_trx_assets.id
17476 --p_source_trx_name ---> 'Reverse'
17477 --p_source_table ---> 'OKL_TRX_ASSETS'
17478 --------------------------------------------------
17479
17480 ---- Termination/Repurchase Quote Creation -------
17481 --p_source_trx_id ---> okl_trx_quotes_b.id
17482 --p_source_trx_name ---> 'Estimated Billing'
17483 --p_source_table ---> 'OKL_TRX_QUOTES_B'
17484 --------------------------------------------------
17485
17486 /*-----------------------------------------------------------------------+
17487 | Cursor Declarations |
17488 +-----------------------------------------------------------------------*/
17489 -- Get the OU tax options
17490 CURSOR l_systemparams_csr(cp_org_id IN NUMBER) IS
17491 SELECT tax_upfront_yn, tax_invoice_yn
17492 FROM OKL_SYSTEM_PARAMS_ALL
17493 WHERE org_id = cp_org_id;
17494
17495 CURSOR l_tax_schedule_csr(cp_trx_id IN NUMBER) IS
17496 SELECT rul.rule_information5
17497 FROM okc_rules_b rul,
17498 okc_rule_groups_b rgp,
17499 okl_trx_requests trx
17500 WHERE rgp.dnz_chr_id = trx.dnz_khr_id
17501 AND rul.rgp_id = rgp.id
17502 AND rgp.rgd_code = 'LAHDTX'
17503 AND rul.rule_information_category = 'LASTPR'
17504 AND trx.id = cp_trx_id
17505 AND trx.request_type_code = 'TAX_SCHEDULES';
17506
17507 /*-----------------------------------------------------------------------+
17508 | Local Variable Declarations and initializations |
17509 +-----------------------------------------------------------------------*/
17510 l_api_version CONSTANT NUMBER := 1;
17511 l_api_name CONSTANT VARCHAR2(30) := 'calculate_sales_tax';
17512 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
17513
17514 l_ou_tax_upfront_yn VARCHAR2(1);
17515 l_ou_tax_invoice_yn VARCHAR2(1);
17516 l_k_tax_schedule_yn VARCHAR2(1);
17517
17518 l_source_table VARCHAR2(30);
17519
17520 l_tax_call_type VARCHAR2(30);
17521 l_org_id NUMBER;
17522 l_quote_object_code VARCHAR2(30);
17523 l_quote_object_id NUMBER;
17524
17525 BEGIN
17526
17527 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17528 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax','Begin(+)');
17529 END IF;
17530
17531 --Print Input Variables
17532 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17533 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17534 'p_init_msg_list :'||p_init_msg_list);
17535 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17536 'p_source_trx_id :'||to_char(p_source_trx_id));
17537 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17538 'p_source_trx_name :'||p_source_trx_name);
17539 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17540 'p_source_table :'||p_source_table);
17541 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17542 'p_tax_call_type :'||p_tax_call_type);
17543 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17544 'p_serialized_asset :'||p_serialized_asset);
17545 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax.',
17546 'p_request_id :'||p_request_id);
17547 END IF;
17548
17549 --Check API version, initialize message list and create savepoint.
17550 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
17551 G_PKG_NAME,
17552 p_init_msg_list,
17553 l_api_version,
17554 p_api_version,
17555 '_PVT',
17556 x_return_status);
17557 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17558 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17559 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
17560 RAISE OKL_API.G_EXCEPTION_ERROR;
17561 END IF;
17562
17563 l_source_table := upper(p_source_table);
17564 l_org_id := mo_global.get_current_org_id;
17565
17566 -- Get the OU Tax options
17567 OPEN l_systemparams_csr(cp_org_id => l_org_id);
17568 FETCH l_systemparams_csr INTO l_ou_tax_upfront_yn, l_ou_tax_invoice_yn;
17569 IF l_systemparams_csr%NOTFOUND THEN
17570 -- Tax options are not setup for this operating unit.
17571 OKL_API.set_message( p_app_name => 'OKL',
17572 p_msg_name => 'OKL_TX_NO_TAX_SETUP');
17573 RAISE OKL_API.G_EXCEPTION_ERROR;
17574 END IF;
17575 CLOSE l_systemparams_csr;
17576
17577 IF p_source_trx_name = 'Tax Schedule' THEN
17578
17579 OPEN l_tax_schedule_csr(cp_trx_id => p_source_trx_id);
17580 FETCH l_tax_schedule_csr INTO l_k_tax_schedule_yn ;
17581 CLOSE l_tax_schedule_csr;
17582
17583 IF l_k_tax_schedule_yn = 'Y' THEN -- OU allows Tax schedule type of call
17584 process_tax_schedule_tax(
17585 p_api_version => p_api_version,
17586 p_init_msg_list => OKL_API.G_FALSE,
17587 x_return_status => x_return_status,
17588 x_msg_count => x_msg_count,
17589 x_msg_data => x_msg_data,
17590 p_source_trx_id => p_source_trx_id,
17591 p_source_trx_name => p_source_trx_name,
17592 p_source_table => l_source_table);
17593
17594 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17595 OKL_API.set_message( p_app_name => 'OKL',
17596 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17597 p_token1 => 'TRX_TYPE',
17598 p_token1_value => p_source_trx_name);
17599
17600 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17601 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17602 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17603 RAISE OKL_API.G_EXCEPTION_ERROR;
17604 END IF;
17605 END IF;
17606 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17607 OKL_API.set_message( p_app_name => 'OKL',
17608 p_msg_name => 'OKL_TAX_SCH_FLAG_NOT_SET');
17609 END IF;
17610
17611 ELSIF p_source_trx_name = 'Estimated Billing' AND l_source_table = 'OKL_TRX_QUOTES_B' THEN -- AM Quote creation
17612 process_quote_tax( p_api_version => p_api_version,
17613 p_init_msg_list => OKL_API.G_FALSE,
17614 x_return_status => x_return_status,
17615 x_msg_count => x_msg_count,
17616 x_msg_data => x_msg_data,
17617 p_source_trx_id => p_source_trx_id,
17618 p_source_trx_name => p_source_trx_name,
17619 p_source_table => l_source_table);
17620
17621 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17622 OKL_API.set_message( p_app_name => 'OKL',
17623 p_msg_name => 'OKL_TX_QUOTE_TAX_ERR');
17624 END IF;
17625
17626 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17627 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17628 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17629 RAISE OKL_API.G_EXCEPTION_ERROR;
17630 END IF;
17631
17632 ELSIF (p_source_trx_name = 'Asset Relocation') THEN
17633 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17634 IF p_tax_call_type IS NULL THEN
17635 OKC_API.set_message( p_app_name => 'OKC',
17636 p_msg_name => G_REQUIRED_VALUE,
17637 p_token1 => G_COL_NAME_TOKEN,
17638 p_token1_value => 'Tax Call Type');
17639 RAISE OKL_API.G_EXCEPTION_ERROR;
17640 ELSE
17641 l_tax_call_type := upper(p_tax_call_type);
17642 IF l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE) THEN
17643 OKC_API.set_message( p_app_name => 'OKC',
17644 p_msg_name => G_INVALID_VALUE,
17645 p_token1 => G_COL_NAME_TOKEN,
17646 p_token1_value => 'Tax Call Type');
17647 RAISE OKL_API.G_EXCEPTION_ERROR;
17648 END IF;
17649 END IF;
17650
17651 process_asset_loc_tax(p_api_version => p_api_version,
17652 p_init_msg_list => OKL_API.G_FALSE,
17653 x_return_status => x_return_status,
17654 x_msg_count => x_msg_count,
17655 x_msg_data => x_msg_data,
17656 p_source_trx_id => p_source_trx_id,
17657 p_source_trx_name => p_source_trx_name,
17658 p_source_table => l_source_table,
17659 p_tax_call_type => p_tax_call_type,
17660 p_serialized_asset => p_serialized_asset,
17661 p_request_id => p_request_id,
17662 p_alc_final_call => p_alc_final_call);
17663
17664 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17665 OKL_API.set_message( p_app_name => 'OKL',
17666 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17667 p_token1 => 'TRX_TYPE',
17668 p_token1_value => p_source_trx_name);
17669
17670 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17671 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17672 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17673 RAISE OKL_API.G_EXCEPTION_ERROR;
17674 END IF;
17675 END IF;
17676
17677 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17678 OKL_API.set_message( p_app_name => 'OKL',
17679 p_msg_name => 'OKL_TX_OU_NO_TAX',
17680 p_token1 => 'TAX_CALL_TYPE',
17681 p_token1_value => 'Upfront Tax');
17682 END IF;
17683 ELSIF p_source_trx_name = 'Split Asset' THEN
17684 process_split_asset_tax(p_api_version => p_api_version,
17685 p_init_msg_list => OKL_API.G_FALSE,
17686 x_return_status => x_return_status,
17687 x_msg_count => x_msg_count,
17688 x_msg_data => x_msg_data,
17689 p_source_trx_id => p_source_trx_id,
17690 p_source_trx_name => p_source_trx_name,
17691 p_source_table => l_source_table);
17692
17693 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17694 OKL_API.set_message( p_app_name => 'OKL',
17695 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17696 p_token1 => 'TRX_TYPE',
17697 p_token1_value => p_source_trx_name);
17698
17699 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17700 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17701 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17702 RAISE OKL_API.G_EXCEPTION_ERROR;
17703 END IF;
17704 END IF;
17705
17706 ELSIF ( p_source_trx_name = 'Booking') THEN
17707 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17708 IF p_tax_call_type IS NULL THEN
17709 OKC_API.set_message( p_app_name => 'OKC',
17710 p_msg_name => G_REQUIRED_VALUE,
17711 p_token1 => G_COL_NAME_TOKEN,
17712 p_token1_value => 'Tax Call Type');
17713 RAISE OKL_API.G_EXCEPTION_ERROR;
17714 ELSE
17715 l_tax_call_type := upper(p_tax_call_type);
17716 IF l_tax_call_type NOT IN (G_ESTIMATED_CALL_TYPE, G_ACTUAL_CALL_TYPE) THEN
17717 OKC_API.set_message( p_app_name => 'OKC',
17718 p_msg_name => G_INVALID_VALUE,
17719 p_token1 => G_COL_NAME_TOKEN,
17720 p_token1_value => 'Tax Call Type');
17721 RAISE OKL_API.G_EXCEPTION_ERROR;
17722 END IF;
17723 END IF;
17724
17725 process_booking_upfront_tax(
17726 p_api_version => p_api_version,
17727 p_init_msg_list => OKL_API.G_FALSE,
17728 x_return_status => x_return_status,
17729 x_msg_count => x_msg_count,
17730 x_msg_data => x_msg_data,
17731 p_source_trx_id => p_source_trx_id,
17732 p_source_trx_name => p_source_trx_name,
17733 p_source_table => l_source_table,
17734 p_tax_call_type => p_tax_call_type);
17735
17736 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17737 OKL_API.set_message(p_app_name => 'OKL',
17738 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17739 p_token1 => 'TRX_TYPE',
17740 p_token1_value => p_source_trx_name);
17741
17742 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17743 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17744 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17745 RAISE OKL_API.G_EXCEPTION_ERROR;
17746 END IF;
17747 END IF;
17748
17749 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17750 OKL_API.set_message( p_app_name => 'OKL',
17751 p_msg_name => 'OKL_TX_OU_NO_TAX',
17752 p_token1 => 'TAX_CALL_TYPE',
17753 p_token1_value => 'Upfront Tax');
17754 END IF;
17755 -- Authoring will create a CS request during Booking (no tax schedule call during pre-booking) for Tax Schedule
17756 -- and then make the Tax Schedule call directly using that trx
17757
17758 ELSIF p_source_trx_name = 'Rebook' AND p_tax_call_type = G_ESTIMATED_CALL_TYPE THEN
17759 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17760 process_pre_rbk_upfront_tax(
17761 p_api_version => p_api_version,
17762 p_init_msg_list => OKL_API.G_FALSE,
17763 x_return_status => x_return_status,
17764 x_msg_count => x_msg_count,
17765 x_msg_data => x_msg_data,
17766 p_source_trx_id => p_source_trx_id,
17767 p_source_trx_name => p_source_trx_name,
17768 p_source_table => l_source_table,
17769 p_tax_call_type => p_tax_call_type);
17770
17771 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17772 OKL_API.set_message( p_app_name => 'OKL',
17773 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17774 p_token1 => 'TRX_TYPE',
17775 p_token1_value => p_source_trx_name);
17776
17777 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17778 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17779 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17780 RAISE OKL_API.G_EXCEPTION_ERROR;
17781 END IF;
17782 END IF;
17783 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17784 OKL_API.set_message( p_app_name => 'OKL',
17785 p_msg_name => 'OKL_TX_OU_NO_TAX',
17786 p_token1 => 'TAX_CALL_TYPE',
17787 p_token1_value => 'Upfront Tax');
17788 END IF;
17789
17790 ELSIF p_source_trx_name = 'Rebook' AND p_tax_call_type = G_ACTUAL_CALL_TYPE THEN
17791 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17792 process_rebook_upfront_tax(
17793 p_api_version => p_api_version,
17794 p_init_msg_list => OKL_API.G_FALSE,
17795 x_return_status => x_return_status,
17796 x_msg_count => x_msg_count,
17797 x_msg_data => x_msg_data,
17798 p_source_trx_id => p_source_trx_id,
17799 p_source_trx_name => p_source_trx_name,
17800 p_source_table => l_source_table);
17801
17802 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17803 OKL_API.set_message( p_app_name => 'OKL',
17804 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17805 p_token1 => 'TRX_TYPE',
17806 p_token1_value => p_source_trx_name);
17807
17808 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17809 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17810 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17811 RAISE OKL_API.G_EXCEPTION_ERROR;
17812 END IF;
17813 END IF;
17814
17815 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17816 OKL_API.set_message( p_app_name => 'OKL',
17817 p_msg_name => 'OKL_TX_OU_NO_TAX',
17818 p_token1 => 'TAX_CALL_TYPE',
17819 p_token1_value => 'Upfront Tax');
17820 END IF;
17821
17822 ELSIF p_source_trx_name = 'Reverse' THEN
17823 -- No need to check "tax_upfront_yn" flag in case of contract reversal
17824 process_contract_reversal_tax(
17825 p_api_version => p_api_version,
17826 p_init_msg_list => OKL_API.G_FALSE,
17827 x_return_status => x_return_status,
17828 x_msg_count => x_msg_count,
17829 x_msg_data => x_msg_data,
17830 p_source_trx_id => p_source_trx_id,
17831 p_source_trx_name => p_source_trx_name,
17832 p_source_table => l_source_table);
17833
17834 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17835 OKL_API.set_message( p_app_name => 'OKL',
17836 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17837 p_token1 => 'TRX_TYPE',
17838 p_token1_value => p_source_trx_name);
17839
17840 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17841 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17842 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17843 RAISE OKL_API.G_EXCEPTION_ERROR;
17844 END IF;
17845 END IF;
17846
17847 ELSIF p_source_trx_name = 'Sales Quote' THEN
17848 IF l_ou_tax_upfront_yn = 'Y' THEN -- OU allows upfront type of call
17849 process_quoting_upfront_tax(
17850 p_api_version => p_api_version,
17851 p_init_msg_list => OKL_API.G_FALSE,
17852 x_return_status => x_return_status,
17853 x_msg_count => x_msg_count,
17854 x_msg_data => x_msg_data,
17855 p_source_trx_id => p_source_trx_id,
17856 p_source_trx_name => p_source_trx_name,
17857 p_source_table => l_source_table);
17858
17859 IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
17860 OKL_API.set_message( p_app_name => 'OKL',
17861 p_msg_name => 'OKL_TX_INTERFACE_ERROR',
17862 p_token1 => 'TRX_TYPE',
17863 p_token1_value => p_source_trx_name);
17864
17865 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17866 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17867 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17868 RAISE OKL_API.G_EXCEPTION_ERROR;
17869 END IF;
17870 END IF;
17871 ELSE -- SECHAWLA 12-DEC-05 4690074 : added else section
17872 OKL_API.set_message( p_app_name => 'OKL',
17873 p_msg_name => 'OKL_TX_OU_NO_TAX',
17874 p_token1 => 'TAX_CALL_TYPE',
17875 p_token1_value => 'Upfront Tax');
17876 END IF;
17877
17878 ELSE
17879 OKC_API.set_message( p_app_name => 'OKC',
17880 p_msg_name => G_INVALID_VALUE,
17881 p_token1 => G_COL_NAME_TOKEN,
17882 p_token1_value => 'Transaction Type');
17883 RAISE OKL_API.G_EXCEPTION_ERROR;
17884 END IF;
17885
17886 x_return_status := l_return_status; -- added for 12.0 since the above code that sets
17887 -- x_return_status is commented
17888 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17889 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ','End(-)');
17890 END IF;
17891
17892 -- End the transaction
17893 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
17894
17895 EXCEPTION
17896 WHEN OKL_API.G_EXCEPTION_ERROR THEN
17897
17898 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17899 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
17900 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
17901 END IF;
17902
17903 IF l_systemparams_csr%ISOPEN THEN
17904 CLOSE l_systemparams_csr;
17905 END IF;
17906
17907 IF l_tax_schedule_csr%ISOPEN THEN
17908 CLOSE l_tax_schedule_csr;
17909 END IF;
17910
17911 x_return_status := OKL_API.HANDLE_EXCEPTIONS
17912 (
17913 l_api_name,
17914 G_PKG_NAME,
17915 'OKL_API.G_RET_STS_ERROR',
17916 x_msg_count,
17917 x_msg_data,
17918 '_PVT'
17919 );
17920 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17921 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17922 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
17923 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
17924 END IF;
17925
17926 IF l_systemparams_csr%ISOPEN THEN
17927 CLOSE l_systemparams_csr;
17928 END IF;
17929
17930 IF l_tax_schedule_csr%ISOPEN THEN
17931 CLOSE l_tax_schedule_csr;
17932 END IF;
17933
17934 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
17935 (
17936 l_api_name,
17937 G_PKG_NAME,
17938 'OKL_API.G_RET_STS_UNEXP_ERROR',
17939 x_msg_count,
17940 x_msg_data,
17941 '_PVT'
17942 );
17943 WHEN OTHERS THEN
17944
17945 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17946 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ',
17947 'EXCEPTION :'||sqlerrm);
17948 END IF;
17949
17950 IF l_systemparams_csr%ISOPEN THEN
17951 CLOSE l_systemparams_csr;
17952 END IF;
17953
17954 IF l_tax_schedule_csr%ISOPEN THEN
17955 CLOSE l_tax_schedule_csr;
17956 END IF;
17957
17958 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
17959 (
17960 l_api_name,
17961 G_PKG_NAME,
17962 'OTHERS',
17963 x_msg_count,
17964 x_msg_data,
17965 '_PVT'
17966 );
17967
17968 x_return_status := l_return_status; -- added for 12.0 since the above code that sets
17969 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
17970 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.calculate_sales_tax ','End(-)');
17971 END IF;
17972
17973 -- end the transaction
17974 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
17975
17976 END calculate_sales_tax;
17977
17978 /*========================================================================
17979 | PUBLIC PROCEDURE set_tax_security_context
17980 |
17981 | DESCRIPTION
17982 | This procedure is called by update tax common components for setting the
17983 | tax security context before invoking Tax Determinant Lov's
17984 |
17985 | CALLED FROM Tax Common components
17986 |
17987 |
17988 | CALLS PROCEDURES/FUNCTIONS
17989 | OKL_TAX_INTERFACE_PVT.set_tax_security_context
17990 |
17991 |
17992 | PARAMETERS
17993 | p_internal_org_id -- Operatng Unit Identifier
17994 | p_legal_entity_id -- Legal Entity Identifier
17995 | p_transaction_date -- Transaction Date
17996 |
17997 | KNOWN ISSUES
17998 |
17999 | NOTES
18000 |
18001 |
18002 | MODIFICATION HISTORY
18003 | Date Author Description of Changes
18004 | 24-JAN-07 RRAVIKIR Created
18005 *=======================================================================*/
18006 PROCEDURE set_tax_security_context(
18007 p_api_version IN NUMBER,
18008 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18009 x_return_status OUT NOCOPY VARCHAR2,
18010 x_msg_count OUT NOCOPY NUMBER,
18011 x_msg_data OUT NOCOPY VARCHAR2,
18012 p_internal_org_id IN NUMBER,
18013 p_legal_entity_id IN NUMBER,
18014 p_transaction_date IN DATE) IS
18015
18016 l_api_version CONSTANT NUMBER := 1;
18017 l_api_name CONSTANT VARCHAR2(30) := 'set_tax_security_context';
18018 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18019
18020 x_effective_date DATE;
18021
18022 BEGIN
18023
18024 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18025 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context','Begin(+)');
18026 END IF;
18027
18028 --Print Input Variables
18029 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18030 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18031 'p_init_msg_list :'||p_init_msg_list);
18032 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18033 'p_internal_org_id :'||to_char(p_internal_org_id));
18034 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18035 'p_legal_entity_id :'||p_legal_entity_id);
18036 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18037 'p_transaction_date :'||p_transaction_date);
18038 END IF;
18039
18040 --Check API version, initialize message list and create savepoint.
18041 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18042 G_PKG_NAME,
18043 p_init_msg_list,
18044 l_api_version,
18045 p_api_version,
18046 '_PVT',
18047 x_return_status);
18048
18049 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18050 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18051 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18052 RAISE OKL_API.G_EXCEPTION_ERROR;
18053 END IF;
18054
18055 -- Required Values
18056 IF p_internal_org_id IS NULL THEN
18057 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18058 p_token1 => G_COL_NAME_TOKEN,
18059 p_token1_value => 'INTERNAL_ORG_ID');
18060 RAISE OKL_API.G_EXCEPTION_ERROR;
18061 END IF;
18062
18063 IF p_legal_entity_id IS NULL THEN
18064 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18065 p_token1 => G_COL_NAME_TOKEN,
18066 p_token1_value => 'LEGAL_ENTITY_ID');
18067 RAISE OKL_API.G_EXCEPTION_ERROR;
18068 END IF;
18069
18070 IF p_transaction_date IS NULL THEN
18071 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18072 p_token1 => G_COL_NAME_TOKEN,
18073 p_token1_value => 'TRANSACTION_DATE');
18074 RAISE OKL_API.G_EXCEPTION_ERROR;
18075 END IF;
18076
18077 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18078 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18079 'Calling OKL_TAX_INTERFACE_PVT.set_tax_security_context');
18080 END IF;
18081
18082 -- Set Tax Security Context
18083 OKL_TAX_INTERFACE_PVT.set_tax_security_context(p_api_version => p_api_version,
18084 p_init_msg_list => p_init_msg_list,
18085 x_return_status => l_return_status,
18086 x_msg_count => x_msg_count,
18087 x_msg_data => x_msg_data,
18088 p_internal_org_id => p_internal_org_id,
18089 p_legal_entity_id => p_legal_entity_id,
18090 p_transaction_date => p_transaction_date);
18091
18092 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18093 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context.',
18094 'Return Status' || l_return_status);
18095 END IF;
18096
18097 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18098 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18099 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18100 RAISE OKL_API.G_EXCEPTION_ERROR;
18101 END IF;
18102
18103 x_return_status := l_return_status;
18104
18105 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18106 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ','End(-)');
18107 END IF;
18108
18109 -- end the transaction
18110 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18111
18112
18113 EXCEPTION
18114 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18115
18116 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18117 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18118 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18119 END IF;
18120
18121 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18122 (
18123 l_api_name,
18124 G_PKG_NAME,
18125 'OKL_API.G_RET_STS_ERROR',
18126 x_msg_count,
18127 x_msg_data,
18128 '_PVT'
18129 );
18130 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18131 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18132 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18133 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18134 END IF;
18135
18136 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18137 (
18138 l_api_name,
18139 G_PKG_NAME,
18140 'OKL_API.G_RET_STS_UNEXP_ERROR',
18141 x_msg_count,
18142 x_msg_data,
18143 '_PVT'
18144 );
18145 WHEN OTHERS THEN
18146
18147 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18148 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.set_tax_security_context ',
18149 'EXCEPTION :'||sqlerrm);
18150 END IF;
18151
18152 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18153 (
18154 l_api_name,
18155 G_PKG_NAME,
18156 'OTHERS',
18157 x_msg_count,
18158 x_msg_data,
18159 '_PVT'
18160 );
18161 END set_tax_security_context;
18162
18163 /*========================================================================
18164 | PUBLIC PROCEDURE process_tax_determ_override
18165 |
18166 | DESCRIPTION
18167 | This procedure is called by 'BOOKING', 'REBOOK' and 'ASSET LOCATION
18168 | CHANGE' transactions to override tax determinants
18169 |
18170 | CALLED FROM OLM Tax Events
18171 |
18172 |
18173 | CALLS PROCEDURES/FUNCTIONS
18174 |
18175 |
18176 | PARAMETERS
18177 | p_trx_id -- Transaction Identifier
18178 | p_tax_sources_id -- Tax Sources table unique Identifier
18179 | p_trx_business_category -- Transaction Business Category (Tax Determinant)
18180 | p_product_category -- Product Category (Tax Determinant)
18181 | p_user_defined_fisc_class -- User defined fiscal class (Tax Determinant)
18182 | p_line_intended_use -- Line intended use (Tax Determinant)
18183 |
18184 | KNOWN ISSUES
18185 |
18186 | NOTES
18187 |
18188 |
18189 | MODIFICATION HISTORY
18190 | Date Author Description of Changes
18191 | 01-FEB-07 RRAVIKIR Created
18192 | 05-Jun-08 SECHAWLA 6844953 : Added nvl to the IF condition that
18193 | checks whether determinants need
18194 | to be modified
18195 |
18196 *=======================================================================*/
18197 PROCEDURE process_tax_determ_override(
18198 p_api_version IN NUMBER,
18199 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18200 x_return_status OUT NOCOPY VARCHAR2,
18201 x_msg_count OUT NOCOPY NUMBER,
18202 x_msg_data OUT NOCOPY VARCHAR2,
18203 p_trx_id IN NUMBER,
18204 p_tax_sources_id IN NUMBER,
18205 p_trx_business_category IN VARCHAR2,
18206 p_product_category IN VARCHAR2,
18207 p_user_defined_fisc_class IN VARCHAR2,
18208 p_line_intended_use IN VARCHAR2,
18209 p_request_id IN NUMBER DEFAULT NULL,
18210 p_asset_id IN NUMBER DEFAULT NULL) IS
18211
18212 -- Local variables
18213 l_api_version CONSTANT NUMBER := 1;
18214 l_api_name CONSTANT VARCHAR2(30) := 'process_tax_determ';
18215 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18216 lx_doc_level_recalc_flag VARCHAR2(1);
18217 l_total_tax_amount NUMBER;
18218
18219 -- Local data structure
18220 l_txsv_rec txsv_rec_type;
18221 lx_txsv_rec txsv_rec_type;
18222
18223 l_transaction_rec transaction_rec_type;
18224
18225 -- Cursors
18226 CURSOR l_taxsources_csr(cp_tax_sources_id IN NUMBER) IS
18227 SELECT org_id, trx_line_id, application_id, event_class_code,
18228 entity_code, trx_level_type, khr_id, product_category, user_defined_fisc_class,
18229 trx_business_category, line_intended_use, alc_serialized_yn
18230 FROM okl_tax_sources
18231 WHERE id = cp_tax_sources_id;
18232
18233 CURSOR l_zxlinestotaltax_csr(cp_trx_id IN NUMBER, cp_trx_line_id IN NUMBER,
18234 cp_application_id IN NUMBER, cp_event_class_code IN VARCHAR2,
18235 cp_entity_code IN VARCHAR2, cp_trx_level_type IN VARCHAR2) IS
18236 SELECT SUM(zx_lines.tax_amt) total_tax
18237 FROM zx_lines
18238 WHERE trx_id = cp_trx_id
18239 AND trx_line_id = cp_trx_line_id
18240 AND application_id = cp_application_id
18241 AND event_class_code = cp_event_class_code
18242 AND entity_code = cp_entity_code
18243 AND trx_level_type = cp_trx_level_type
18244 AND nvl(cancel_flag, 'N') <> 'Y';
18245
18246 -- Cursor Records
18247 l_taxsources_rec l_taxsources_csr%ROWTYPE;
18248
18249 l_values_changed BOOLEAN := FALSE;
18250 l_alc_event BOOLEAN := FALSE;
18251
18252 BEGIN
18253 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18254 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override','Begin(+)');
18255 END IF;
18256
18257 --Print Input Variables
18258 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18259 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18260 'p_init_msg_list :'||p_init_msg_list);
18261 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18262 'p_trx_id :'||p_trx_id);
18263 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18264 'p_tax_sources_id :'||p_tax_sources_id);
18265 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18266 'p_trx_business_category :'||p_trx_business_category);
18267 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18268 'p_product_category :'||p_product_category);
18269 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18270 'p_user_defined_fisc_class :'||p_user_defined_fisc_class);
18271 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18272 'p_line_intended_use :'||p_line_intended_use);
18273 END IF;
18274
18275 --Check API version, initialize message list and create savepoint.
18276 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18277 G_PKG_NAME,
18278 p_init_msg_list,
18279 l_api_version,
18280 p_api_version,
18281 '_PVT',
18282 x_return_status);
18283
18284 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18285 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18286 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18287 RAISE OKL_API.G_EXCEPTION_ERROR;
18288 END IF;
18289
18290 -- Required Values
18291 IF p_tax_sources_id IS NULL THEN
18292 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18293 p_token1 => G_COL_NAME_TOKEN,
18294 p_token1_value => 'TAX_SOURCES_ID');
18295 RAISE OKL_API.G_EXCEPTION_ERROR;
18296 END IF;
18297
18298 IF p_trx_business_category IS NULL THEN
18299 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18300 p_token1 => G_COL_NAME_TOKEN,
18301 p_token1_value => 'TRX_BUSINESS_CATEGORY');
18302 RAISE OKL_API.G_EXCEPTION_ERROR;
18303 END IF;
18304
18305 IF p_trx_id IS NULL THEN
18306 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18307 p_token1 => G_COL_NAME_TOKEN,
18308 p_token1_value => 'TRX_ID');
18309 RAISE OKL_API.G_EXCEPTION_ERROR;
18310 END IF;
18311 -- End required values
18312
18313 -- Fetch Tax Sources details
18314 OPEN l_taxsources_csr(cp_tax_sources_id => p_tax_sources_id);
18315 FETCH l_taxsources_csr INTO l_taxsources_rec;
18316 CLOSE l_taxsources_csr;
18317
18318 -- Check if the tax determinant values are changed
18319 -- SECHAWLA 05-Jun-08 6844953 : Added nvl
18320 IF (nvl(l_taxsources_rec.trx_business_category,'XYZ') <> nvl(p_trx_business_category,'XYZ') OR
18321 nvl(l_taxsources_rec.product_category,'XYZ') <> nvl(p_product_category,'XYZ') OR
18322 nvl(l_taxsources_rec.user_defined_fisc_class,'XYZ') <> nvl(p_user_defined_fisc_class,'XYZ') OR
18323 nvl(l_taxsources_rec.line_intended_use,'XYZ') <> nvl(p_line_intended_use,'XYZ')) THEN
18324 l_values_changed := TRUE;
18325 END IF;
18326
18327 IF (l_values_changed) THEN
18328 -- Populate Tax Sources data structure and update tax determinants
18329 l_txsv_rec.id := p_tax_sources_id;
18330 l_txsv_rec.trx_business_category := p_trx_business_category;
18331 l_txsv_rec.product_category := p_product_category;
18332 l_txsv_rec.user_defined_fisc_class := p_user_defined_fisc_class;
18333 l_txsv_rec.line_intended_use := p_line_intended_use;
18334
18335 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18336 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18337 'Calling okl_tax_sources_pub.update_tax_sources for Updating Tax determinants');
18338 END IF;
18339
18340 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
18341 ,p_init_msg_list => p_init_msg_list
18342 ,x_return_status => l_return_status
18343 ,x_msg_count => x_msg_count
18344 ,x_msg_data => x_msg_data
18345 ,p_txsv_rec => l_txsv_rec
18346 ,x_txsv_rec => lx_txsv_rec);
18347
18348 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18349 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18350 'Return Status' || l_return_status);
18351 END IF;
18352
18353 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18354 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18355 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18356 RAISE OKL_API.G_EXCEPTION_ERROR;
18357 END IF;
18358 -- End tax determinants update
18359
18360 -- Recalculate Tax based on modified determinants
18361 -- Populate transaction record
18362 l_transaction_rec.trx_id := p_trx_id;
18363 l_transaction_rec.application_id := l_taxsources_rec.application_id;
18364 l_transaction_rec.internal_organization_id := l_taxsources_rec.org_id;
18365 l_transaction_rec.entity_code := l_taxsources_rec.entity_code ;
18366 l_transaction_rec.event_class_code := l_taxsources_rec.event_class_code ;
18367
18368 IF l_taxsources_rec.event_class_code = 'BOOKING' THEN
18369 l_transaction_rec.event_type_code := G_BOOK_UPD_EVENT_CODE;
18370 ELSIF l_taxsources_rec.event_class_code = 'ASSET_RELOCATION' THEN
18371 l_transaction_rec.event_type_code := G_ALC_UPD_EVENT_CODE;
18372 l_alc_event := TRUE;
18373 END IF;
18374
18375 -- Recalculate tax with new determinants
18376 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18377 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18378 'Calling OKL_TAX_INTERFACE_PVT.process_tax_determ_override');
18379 END IF;
18380
18381 OKL_TAX_INTERFACE_PVT.process_tax_determ_override(p_api_version => p_api_version,
18382 p_init_msg_list => p_init_msg_list,
18383 x_return_status => l_return_status,
18384 x_msg_count => x_msg_count,
18385 x_msg_data => x_msg_data,
18386 p_trx_id => p_trx_id,
18387 p_tax_sources_id => p_tax_sources_id,
18388 p_trx_business_category => p_trx_business_category,
18389 p_product_category => p_product_category,
18390 p_user_defined_fisc_class => p_user_defined_fisc_class,
18391 p_line_intended_use => p_line_intended_use,
18392 p_transaction_rec => l_transaction_rec,
18393 x_doc_level_recalc_flag => lx_doc_level_recalc_flag);
18394
18395 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18396 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18397 'Return Status' || l_return_status);
18398 END IF;
18399
18400 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18401 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18402 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18403 RAISE OKL_API.G_EXCEPTION_ERROR;
18404 END IF;
18405
18406 -- Action based on return status
18407 IF (lx_doc_level_recalc_flag = 'Y') THEN
18408 -- Recalculation of tax for this particular taxable line has changed the tax
18409 -- for other taxable lines as well, so update the total_tax column for all
18410 -- the transaction lines including the one for which tax call was made
18411
18412 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18413 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18414 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
18415 END IF;
18416
18417 IF (l_alc_event) THEN
18418 update_tax_sources_total(p_api_version => p_api_version,
18419 p_init_msg_list => p_init_msg_list,
18420 x_return_status => l_return_status,
18421 x_msg_count => x_msg_count,
18422 x_msg_data => x_msg_data,
18423 p_source_trx_id => p_trx_id,
18424 p_source_trx_name => 'Asset Relocation');
18425
18426 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18427 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18428 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18429 RAISE OKL_API.G_EXCEPTION_ERROR;
18430 END IF;
18431
18432 ELSE
18433 update_tax_sources_total(p_api_version => p_api_version,
18434 p_init_msg_list => p_init_msg_list,
18435 x_return_status => l_return_status,
18436 x_msg_count => x_msg_count,
18437 x_msg_data => x_msg_data,
18438 p_source_trx_id => p_trx_id);
18439 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18440 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18441 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18442 RAISE OKL_API.G_EXCEPTION_ERROR;
18443 END IF;
18444
18445 END IF;
18446
18447 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18448 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18449 'Return Status' || l_return_status);
18450 END IF;
18451
18452 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18453 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18454 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18455 RAISE OKL_API.G_EXCEPTION_ERROR;
18456 END IF;
18457
18458 ELSIF (lx_doc_level_recalc_flag = 'N') THEN
18459
18460 -- Recalculation of tax for this particular taxable line has not changed the
18461 -- tax for other taxable lines, so update the total_tax column for this
18462 -- transaction line only
18463 OPEN l_zxlinestotaltax_csr(cp_trx_id => p_trx_id,
18464 cp_trx_line_id => l_taxsources_rec.trx_line_id,
18465 cp_application_id => l_taxsources_rec.application_id,
18466 cp_event_class_code => l_taxsources_rec.event_class_code,
18467 cp_entity_code => l_taxsources_rec.entity_code,
18468 cp_trx_level_type => l_taxsources_rec.trx_level_type);
18469 FETCH l_zxlinestotaltax_csr INTO l_total_tax_amount;
18470 CLOSE l_zxlinestotaltax_csr;
18471
18472 -- Populate Tax Sources data structure and update total tax
18473 l_txsv_rec.id := p_tax_sources_id;
18474 l_txsv_rec.total_tax := l_total_tax_amount;
18475
18476 IF (l_alc_event) THEN
18477 l_txsv_rec.alc_serialized_total_tax := l_total_tax_amount;
18478 END IF;
18479
18480 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18481 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18482 'Calling okl_tax_sources_pub.update_tax_sources for updating Total Tax for current line in Tax Sources');
18483 END IF;
18484
18485 okl_tax_sources_pub.update_tax_sources(p_api_version => p_api_version
18486 ,p_init_msg_list => p_init_msg_list
18487 ,x_return_status => l_return_status
18488 ,x_msg_count => x_msg_count
18489 ,x_msg_data => x_msg_data
18490 ,p_txsv_rec => l_txsv_rec
18491 ,x_txsv_rec => lx_txsv_rec);
18492
18493 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18494 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override.',
18495 'Return Status' || l_return_status);
18496 END IF;
18497
18498 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18499 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18500 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18501 RAISE OKL_API.G_EXCEPTION_ERROR;
18502 END IF;
18503 END IF;
18504 -- End actions based on return status
18505 -- End Recalculate tax
18506
18507 -- Condition to populate 'ALC_SERIALIZED_TOTAL_TAX' column of tax sources
18508 IF (l_alc_event AND l_taxsources_rec.alc_serialized_yn = 'Y') THEN
18509 populate_alc_total_tax(p_api_version => p_api_version,
18510 p_init_msg_list => p_init_msg_list,
18511 x_return_status => l_return_status,
18512 x_msg_count => x_msg_count,
18513 x_msg_data => x_msg_data,
18514 p_asset_id => p_asset_id,
18515 p_request_id => p_request_id);
18516
18517 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18518 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18519 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18520 RAISE OKL_API.G_EXCEPTION_ERROR;
18521 END IF;
18522 END IF;
18523
18524 -- Call Authoring package to sync tax values for 'BOOKING' and 'REBOOK' transactions
18525 IF (l_taxsources_rec.event_class_code = 'BOOKING' OR
18526 l_taxsources_rec.event_class_code = 'REBOOK') THEN
18527 OKL_LA_SALES_TAX_PVT.process_tax_override(
18528 p_api_version => p_api_version,
18529 p_init_msg_list => p_init_msg_list,
18530 p_chr_id => l_taxsources_rec.khr_id,
18531 p_transaction_id => p_trx_id,
18532 x_return_status => l_return_status,
18533 x_msg_count => x_msg_count,
18534 x_msg_data => x_msg_data );
18535 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18536 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18537 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18538 RAISE OKL_API.G_EXCEPTION_ERROR;
18539 END IF;
18540 END IF;
18541 -- End call to Authoring package
18542
18543 END IF;
18544
18545 x_return_status := l_return_status;
18546
18547 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18548 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ','End(-)');
18549 END IF;
18550
18551 -- end the transaction
18552 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18553
18554 EXCEPTION
18555
18556 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18557
18558 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18559 CLOSE l_zxlinestotaltax_csr;
18560 END IF;
18561
18562 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18563 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18564 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18565 END IF;
18566
18567 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18568 (
18569 l_api_name,
18570 G_PKG_NAME,
18571 'OKL_API.G_RET_STS_ERROR',
18572 x_msg_count,
18573 x_msg_data,
18574 '_PVT'
18575 );
18576 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18577
18578 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18579 CLOSE l_zxlinestotaltax_csr;
18580 END IF;
18581
18582 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18583 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18584 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18585 END IF;
18586
18587 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18588 (
18589 l_api_name,
18590 G_PKG_NAME,
18591 'OKL_API.G_RET_STS_UNEXP_ERROR',
18592 x_msg_count,
18593 x_msg_data,
18594 '_PVT'
18595 );
18596 WHEN OTHERS THEN
18597
18598 IF (l_zxlinestotaltax_csr%ISOPEN) THEN
18599 CLOSE l_zxlinestotaltax_csr;
18600 END IF;
18601
18602 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18603 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_determ_override ',
18604 'EXCEPTION :'||sqlerrm);
18605 END IF;
18606
18607 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18608 (
18609 l_api_name,
18610 G_PKG_NAME,
18611 'OTHERS',
18612 x_msg_count,
18613 x_msg_data,
18614 '_PVT'
18615 );
18616 END process_tax_determ_override;
18617
18618 /*========================================================================
18619 | PUBLIC PROCEDURE process_tax_details_override
18620 |
18621 | DESCRIPTION
18622 | This procedure is called by 'BOOKING', 'REBOOK' and 'ASSET LOCATION
18623 | CHANGE' transactions to override tax details
18624 |
18625 | CALLED FROM OLM Tax Events
18626 |
18627 |
18628 | CALLS PROCEDURES/FUNCTIONS
18629 |
18630 |
18631 | PARAMETERS
18632 | p_event_id -- Tax Lines window will return an event id
18633 | when there are any user overrides. It is
18634 | this event id value that needs to be passed
18635 | by OA Tax Override and Forms Tax Override Uis,
18636 | to this API
18637 | p_internal_organization_id -- Organization Identifier
18638 | p_trx_id -- Transaction Identifier
18639 | p_application_id -- Application Identifier
18640 | p_entity_code -- Entity code
18641 | p_event_class_code -- Event class code
18642 |
18643 | KNOWN ISSUES
18644 |
18645 | NOTES
18646 |
18647 |
18648 | MODIFICATION HISTORY
18649 | Date Author Description of Changes
18650 | 22-FEB-07 RRAVIKIR Created
18651 |
18652 *=======================================================================*/
18653 PROCEDURE process_tax_details_override(
18654 p_api_version IN NUMBER,
18655 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18656 x_return_status OUT NOCOPY VARCHAR2,
18657 x_msg_count OUT NOCOPY NUMBER,
18658 x_msg_data OUT NOCOPY VARCHAR2,
18659 p_event_id IN NUMBER,
18660 p_internal_organization_id IN NUMBER,
18661 p_trx_id IN NUMBER,
18662 p_application_id IN NUMBER,
18663 p_entity_code IN VARCHAR2,
18664 p_event_class_code IN VARCHAR2) IS
18665
18666 -- Local variables
18667 l_api_version CONSTANT NUMBER := 1;
18668 l_api_name CONSTANT VARCHAR2(30) := 'process_tax_details';
18669 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
18670 l_total_tax_amount NUMBER;
18671
18672 -- Local data structure
18673 l_txsv_rec txsv_rec_type;
18674 lx_txsv_rec txsv_rec_type;
18675 l_transaction_rec transaction_rec_type;
18676
18677 -- Cursors
18678 BEGIN
18679
18680 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18681 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override','Begin(+)');
18682 END IF;
18683
18684 --Print Input Variables
18685 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18686 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18687 'p_init_msg_list :'||p_init_msg_list);
18688 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18689 'p_trx_id :'||p_trx_id);
18690 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18691 'p_event_id :'||p_event_id);
18692 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18693 'p_internal_organization_id :'||p_internal_organization_id);
18694 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18695 'p_application_id :'||p_application_id);
18696 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18697 'p_entity_code :'||p_entity_code);
18698 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18699 'p_event_class_code :'||p_event_class_code);
18700 END IF;
18701
18702 --Check API version, initialize message list and create savepoint.
18703 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
18704 G_PKG_NAME,
18705 p_init_msg_list,
18706 l_api_version,
18707 p_api_version,
18708 '_PVT',
18709 x_return_status);
18710
18711 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18712 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18713 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18714 RAISE OKL_API.G_EXCEPTION_ERROR;
18715 END IF;
18716
18717 -- Required Values
18718 IF p_application_id IS NULL THEN
18719 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18720 p_token1 => G_COL_NAME_TOKEN,
18721 p_token1_value => 'APPLICATION_ID');
18722 RAISE OKL_API.G_EXCEPTION_ERROR;
18723 END IF;
18724
18725 IF p_entity_code IS NULL THEN
18726 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18727 p_token1 => G_COL_NAME_TOKEN,
18728 p_token1_value => 'ENTITY_CODE');
18729 RAISE OKL_API.G_EXCEPTION_ERROR;
18730 END IF;
18731
18732 IF p_event_class_code IS NULL THEN
18733 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18734 p_token1 => G_COL_NAME_TOKEN,
18735 p_token1_value => 'EVENT_CLASS_CODE');
18736 RAISE OKL_API.G_EXCEPTION_ERROR;
18737 END IF;
18738
18739 IF p_internal_organization_id IS NULL THEN
18740 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18741 p_token1 => G_COL_NAME_TOKEN,
18742 p_token1_value => 'INTERNAL_ORGANIZATION_ID');
18743 RAISE OKL_API.G_EXCEPTION_ERROR;
18744 END IF;
18745
18746 IF p_trx_id IS NULL THEN
18747 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
18748 p_token1 => G_COL_NAME_TOKEN,
18749 p_token1_value => 'TRX_ID');
18750 RAISE OKL_API.G_EXCEPTION_ERROR;
18751 END IF;
18752 -- End required values
18753
18754 -- Populate Transaction record
18755 l_transaction_rec.application_id := p_application_id;
18756 l_transaction_rec.entity_code := p_entity_code;
18757 l_transaction_rec.event_class_code := p_event_class_code;
18758
18759 IF p_event_class_code = 'BOOKING' THEN
18760 l_transaction_rec.event_type_code := G_BOOK_OVERRIDE_EVENT;
18761 ELSIF p_event_class_code = 'ASSET_RELOCATION' THEN
18762 l_transaction_rec.event_type_code := G_ALC_OVERRIDE_EVENT;
18763 END IF;
18764
18765 l_transaction_rec.trx_id := p_trx_id;
18766 l_transaction_rec.internal_organization_id := p_internal_organization_id;
18767
18768 -- Override tax with new values
18769 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18770 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18771 'Calling OKL_TAX_INTERFACE_PVT.process_tax_details_override');
18772 END IF;
18773
18774 OKL_TAX_INTERFACE_PVT.process_tax_details_override
18775 (p_api_version => p_api_version,
18776 p_init_msg_list => p_init_msg_list,
18777 x_return_status => l_return_status,
18778 x_msg_count => x_msg_count,
18779 x_msg_data => x_msg_data,
18780 p_transaction_rec => l_transaction_rec,
18781 p_override_level => G_OVERRIDE_LEVEL,
18782 p_event_id => p_event_id);
18783
18784 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18785 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18786 'Return Status' || l_return_status);
18787 END IF;
18788
18789 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18790 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18791 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18792 RAISE OKL_API.G_EXCEPTION_ERROR;
18793 END IF;
18794
18795 -- Overriding a tax line can impact the tax lines of other transaction lines
18796 -- Get the modified tax lines from zx_lines, sum up the total tax amount
18797 -- and store in total_tax column of okl_tax_sources
18798
18799 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18800 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18801 'Calling "update_tax_sources_total" for updating Total Tax for all Lines in Tax Sources');
18802 END IF;
18803
18804 update_tax_sources_total(p_api_version => p_api_version,
18805 p_init_msg_list => p_init_msg_list,
18806 x_return_status => l_return_status,
18807 x_msg_count => x_msg_count,
18808 x_msg_data => x_msg_data,
18809 p_source_trx_id => p_trx_id);
18810
18811 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18812 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override.',
18813 'Return Status' || l_return_status);
18814 END IF;
18815
18816 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18817 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18818 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
18819 RAISE OKL_API.G_EXCEPTION_ERROR;
18820 END IF;
18821
18822 x_return_status := l_return_status;
18823
18824 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18825 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ','End(-)');
18826 END IF;
18827
18828 -- end the transaction
18829 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
18830
18831 EXCEPTION
18832 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18833
18834 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18835 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
18836 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
18837 END IF;
18838
18839 x_return_status := OKL_API.HANDLE_EXCEPTIONS
18840 (
18841 l_api_name,
18842 G_PKG_NAME,
18843 'OKL_API.G_RET_STS_ERROR',
18844 x_msg_count,
18845 x_msg_data,
18846 '_PVT'
18847 );
18848 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18849 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18850 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
18851 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
18852 END IF;
18853
18854 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18855 (
18856 l_api_name,
18857 G_PKG_NAME,
18858 'OKL_API.G_RET_STS_UNEXP_ERROR',
18859 x_msg_count,
18860 x_msg_data,
18861 '_PVT'
18862 );
18863 WHEN OTHERS THEN
18864
18865 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
18866 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.process_tax_details_override ',
18867 'EXCEPTION :'||sqlerrm);
18868 END IF;
18869
18870 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
18871 (
18872 l_api_name,
18873 G_PKG_NAME,
18874 'OTHERS',
18875 x_msg_count,
18876 x_msg_data,
18877 '_PVT'
18878 );
18879 END process_tax_details_override;
18880
18881 /*========================================================================
18882 | PUBLIC PROCEDURE get_tax_determinants
18883 |
18884 | DESCRIPTION
18885 | This procedure will be called by Billing and P2P transactions to derive
18886 | tax determinants. Billing - Invoice tax is to be reported from AR. Pass
18887 | reporting flag as 'Y' in autoinvoice interface P2P - PRODUCT_CATEGORY,
18888 | LINE_INTENDED_USE, USER_DEFINED_FISC_CLASS are not applicable in case of
18889 | P2P, hence the out parameters will be null in this case. Tax reporting
18890 | flag not in AP interface table - Not applicable
18891 |
18892 | CALLED FROM OLM Billing and Disbursement Modules
18893 |
18894 |
18895 | CALLS PROCEDURES/FUNCTIONS
18896 | okl_am_util_pvt.get_formula_value()
18897 |
18898 | PARAMETERS
18899 | - Billing
18900 | p_source_trx_id -- OKL_TXD_AR_LN_DTLS_B.ID
18901 | p_source_trx_name -- Billing / Credit Memo transaction
18902 | p_source_table -- OKL_TXD_AR_LN_DTLS_B
18903 | - P2P
18904 | p_source_trx_id -- OKL_TXL_AP_INV_LNS_ALL_B.ID
18905 | p_source_trx_name -- Funding / Disbursements transaction
18906 | p_source_table -- OKL_TXL_AP_INV_LNS_ALL_B
18907 |
18908 | KNOWN ISSUES
18909 |
18910 | NOTES
18911 |
18912 |
18913 | MODIFICATION HISTORY
18914 | Date Author Description of Changes
18915 | 01-MAR-07 RRAVIKIR Created
18916 | 04-Jan-08 SECHAWLA 6651621 Added 3 additional parameters to taxable basis override formula -
18917 | 'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
18918 |
18919 *=======================================================================*/
18920 PROCEDURE get_tax_determinants(
18921 p_api_version IN NUMBER,
18922 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
18923 x_return_status OUT NOCOPY VARCHAR2,
18924 x_msg_count OUT NOCOPY NUMBER,
18925 x_msg_data OUT NOCOPY VARCHAR2,
18926 p_source_trx_id IN NUMBER,
18927 p_source_trx_name IN VARCHAR2,
18928 p_source_table IN VARCHAR2,
18929 x_tax_det_rec OUT NOCOPY tax_det_rec_type) IS
18930
18931 -- Billing / Credit Memo Cursors
18932 -- Get the billing details
18933 CURSOR l_billingdtls_csr(cp_det_line_id IN NUMBER) IS
18934 SELECT hdr.id hdr_id, hdr.khr_id, hdr.date_invoiced, hdr.try_id try_id,
18935 hdr.qte_id, hdr.ibt_id , hdr.legal_entity_id, line.id line_id, line.kle_id,
18936 line.isl_id, det.sty_id, det.amount
18937 FROM okl_trx_ar_invoices_b hdr, okl_txl_ar_inv_lns_b line,
18938 okl_txd_ar_ln_dtls_b det
18939 WHERE det.id = cp_det_line_id
18940 AND det.til_id_details = line.id
18941 AND line.tai_id = hdr.id;
18942
18943 -- Get the quote details
18944 CURSOR l_trxquotes_csr(cp_qte_id IN NUMBER) IS
18945 SELECT qtp_code, qrs_code, early_termination_yn
18946 FROM okl_trx_quotes_b
18947 WHERE id = cp_qte_id;
18948
18949 -- Get stream type purpose for a given stream type id
18950 CURSOR l_strmtype_csr(cp_sty_id IN NUMBER) IS
18951 SELECT stream_type_purpose
18952 FROM okl_strm_type_b
18953 WHERE id = cp_sty_id;
18954
18955 -- Get the line type
18956 CURSOR l_okclinestyle_csr(cp_kle_id IN NUMBER) IS
18957 SELECT lse.lty_code
18958 FROM okc_k_lines_b line, okc_line_styles_b lse
18959 WHERE line.lse_id = lse.id
18960 AND line.id = cp_kle_id;
18961
18962 -- Get line name
18963 CURSOR l_okclines_csr(cp_line_id IN NUMBER) IS
18964 SELECT name
18965 FROM okc_k_lines_v
18966 WHERE id = cp_line_id;
18967
18968 -- Get the financial asset associated with a given subline
18969 CURSOR l_finasset_csr(cp_fee_serviced_asset_line_id IN NUMBER, cp_line_type IN VARCHAR2) IS
18970 SELECT cim.object1_id1
18971 FROM okc_k_lines_b cle, okc_line_styles_b lse, okc_k_items cim
18972 WHERE cle.lse_id = lse.id
18973 AND lse.lty_code = cp_line_type
18974 AND cim.cle_id = cle.id
18975 AND cle.id = cp_fee_serviced_asset_line_id;
18976
18977 -- get the inventory item from the sales order
18978 CURSOR l_oeorderlines_csr(cp_line_id IN NUMBER) IS
18979 SELECT inventory_item_id, ship_from_org_id, ship_to_org_id
18980 FROM oe_order_lines_all
18981 WHERE line_id = cp_line_id;
18982
18983 -- get the inventory item id and inventory item org for a financial asset
18984 CURSOR l_invitem_csr(cp_fin_asset_id IN NUMBER) IS
18985 SELECT cim_model.object1_id1,
18986 cim_model.object1_id2
18987 FROM okc_k_items cim_model,
18988 okc_k_lines_b cleb_model,
18989 okc_line_styles_b lseb_model
18990 WHERE cim_model.cle_id = cleb_model.id
18991 AND cleb_model.cle_id = cp_fin_asset_id
18992 AND lseb_model.id = cleb_model.lse_id
18993 AND lseb_model.lty_code = 'ITEM';
18994
18995 CURSOR c_get_set_of_books_id(cp_org_id IN NUMBER) IS
18996 SELECT set_of_books_id
18997 FROM ar_system_parameters_all
18998 WHERE org_id = cp_org_id;
18999
19000 -- Check if tax basis override formula exists
19001 CURSOR l_txbasisoverride_csr(cp_try_id IN NUMBER) IS
19002 SELECT fma_id
19003 FROM okl_tax_basis_override
19004 WHERE try_id = cp_try_id
19005 AND org_id = MO_GLOBAL.get_current_org_id;
19006
19007 -- get formula name
19008 CURSOR l_formulae_csr(cp_fma_id IN NUMBER) IS
19009 SELECT name
19010 FROM okl_formulae_b
19011 WHERE id = cp_fma_id;
19012
19013 -- Funding / Debit Memo / Disbursement Cursors
19014 CURSOR l_disbdtls_csr(cp_line_id IN NUMBER) IS
19015 SELECT hdr.id hdr_id, line.khr_id, hdr.date_invoiced, hdr.try_id try_id,
19016 hdr.qte_id, hdr.legal_entity_id, line.id line_id, line.kle_id,
19017 line.sty_id, line.amount, hdr.ipvs_id
19018 FROM okl_trx_ap_invoices_b hdr, okl_txl_ap_inv_lns_b line
19019 WHERE line.id = cp_line_id
19020 AND line.tap_id = hdr.id;
19021
19022 CURSOR l_get_vendor_csr(cp_vendor_site_id IN NUMBER) IS
19023 SELECT vendor_id
19024 FROM po_vendor_sites
19025 WHERE vendor_site_id = cp_vendor_site_id;
19026
19027 -- Record types
19028 l_billingdtls_rec l_billingdtls_csr%ROWTYPE;
19029 l_disbdtls_rec l_disbdtls_csr%ROWTYPE;
19030 l_add_params okl_execute_formula_pub.ctxt_val_tbl_type;
19031
19032 -- Local variables
19033 l_api_version CONSTANT NUMBER := 1;
19034 l_api_name CONSTANT VARCHAR2(30) := 'get_tax_determinants';
19035
19036 l_qtp_code okl_trx_quotes_b.qtp_code%TYPE;
19037 l_qte_reason okl_trx_quotes_b.qrs_code%TYPE;
19038 l_early_term_yn okl_trx_quotes_b.early_termination_yn%TYPE;
19039 l_purpose_code okl_strm_type_b.stream_type_purpose%TYPE;
19040 l_product_type VARCHAR2(30);
19041 l_def_tax_country VARCHAR2(2);
19042 l_reporting_flag VARCHAR2(1);
19043
19044 lx_cust_acct_id NUMBER;
19045 lx_currency_code VARCHAR2(15);
19046 lx_precision NUMBER;
19047 lx_minimum_accountable_unit NUMBER;
19048 lx_cust_trx_type_id NUMBER;
19049
19050 lx_pb_prch_opt_det VARCHAR2(450);
19051 lx_pb_fin_prod_id_det NUMBER;
19052 lx_pb_int_disclosed_det VARCHAR2(30);
19053 lx_bill_to_party_site_id NUMBER;
19054 lx_bill_to_location_id NUMBER;
19055 lx_bill_to_party_id NUMBER;
19056 lx_bill_to_siteuseid NUMBER;
19057 lx_ship_to_party_site_id NUMBER;
19058 lx_ship_to_location_id NUMBER;
19059 lx_ship_to_party_id NUMBER;
19060 lx_ship_to_siteuseid NUMBER;
19061
19062 lx_org_id NUMBER;
19063 lx_book_class_code VARCHAR2(30);
19064 lx_currency_conversion_type VARCHAR2(30);
19065 lx_currency_conversion_rate NUMBER;
19066 lx_currency_conversion_date DATE;
19067 lx_contract_start_date DATE;
19068 lx_transfer_of_title VARCHAR2(30);
19069 lx_sale_lease_back VARCHAR2(30);
19070 lx_purchase_of_lease VARCHAR2(30);
19071 lx_usage_of_equipment VARCHAR2(450);
19072 lx_age_of_equipment NUMBER;
19073 lx_vendor_site_id NUMBER;
19074 lx_tbc_code VARCHAR2(240);
19075 lx_pc_code VARCHAR2(240);
19076 lx_ufc_code VARCHAR2(240);
19077 lx_tax_classification_code VARCHAR2(50);
19078 lx_assessable_value NUMBER;
19079
19080 l_line_type VARCHAR2(100);
19081 l_fin_asset_id NUMBER;
19082 l_inv_item_id NUMBER;
19083 l_inv_item_org_id NUMBER;
19084 l_name VARCHAR2(30);
19085 l_set_of_books_id NUMBER;
19086 l_fma_id NUMBER;
19087 l_formula_name VARCHAR2(150);
19088 l_event_class_code VARCHAR2(30);
19089 l_asset_exists BOOLEAN := FALSE;
19090 l_vendor_id NUMBER;
19091 lx_tax_valid_code VARCHAR2(1);
19092
19093 BEGIN
19094
19095 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19096 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants','Begin(+)');
19097 END IF;
19098
19099 --Print Input Variables
19100 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19101 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19102 'p_init_msg_list :'||p_init_msg_list);
19103 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19104 'p_source_trx_id :'||p_source_trx_id);
19105 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19106 'p_source_trx_name :'||p_source_trx_name);
19107 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19108 'p_source_table :'||p_source_table);
19109 END IF;
19110
19111 --Check API version, initialize message list and create savepoint.
19112 x_return_status := OKL_API.START_ACTIVITY(l_api_name,
19113 G_PKG_NAME,
19114 p_init_msg_list,
19115 l_api_version,
19116 p_api_version,
19117 '_PVT',
19118 x_return_status);
19119 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19120 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19121 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19122 RAISE OKL_API.G_EXCEPTION_ERROR;
19123 END IF;
19124
19125 IF p_source_trx_name IN ('Billing', 'Credit Memo', 'Rollover Billing',
19126 'Rollover Credit Memo', 'Release Billing',
19127 'Release Credit Memo') THEN
19128
19129 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19130 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19131 'Call to (Billing, Credit Memo, Rollover Billing, Rollover Credit Memo,
19132 Release Billing, Release Credit Memo) .. ');
19133 END IF;
19134
19135 -- Validate source trx id
19136 OPEN l_billingdtls_csr(p_source_trx_id);
19137 FETCH l_billingdtls_csr INTO l_billingdtls_rec;
19138 IF l_billingdtls_csr %NOTFOUND THEN
19139 OKC_API.set_message( p_app_name => 'OKC',
19140 p_msg_name => G_INVALID_VALUE,
19141 p_token1 => G_COL_NAME_TOKEN,
19142 p_token1_value => 'SOURCE_TRX_ID');
19143 RAISE OKL_API.G_EXCEPTION_ERROR;
19144 END IF;
19145 CLOSE l_billingdtls_csr;
19146
19147 IF l_billingdtls_rec.qte_id IS NOT NULL THEN -- Invoice created for a quote
19148 OPEN l_trxquotes_csr(l_billingdtls_rec.qte_id);
19149 FETCH l_trxquotes_csr INTO l_qtp_code, l_qte_reason, l_early_term_yn;
19150 CLOSE l_trxquotes_csr;
19151 END IF;
19152
19153 IF l_billingdtls_rec.sty_id IS NOT NULL THEN
19154 OPEN l_strmtype_csr(l_billingdtls_rec.sty_id);
19155 FETCH l_strmtype_csr INTO l_purpose_code;
19156 CLOSE l_strmtype_csr;
19157 END IF;
19158
19159 l_product_type := G_SERVICES;
19160 l_def_tax_country := get_default_taxation_country(x_return_status => x_return_status,
19161 x_msg_count => x_msg_count,
19162 x_msg_data => x_msg_data,
19163 p_legal_entity_id => l_billingdtls_rec.legal_entity_id);
19164 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19165 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19166 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19167 RAISE OKL_API.G_EXCEPTION_ERROR;
19168 END IF;
19169
19170 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19171 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19172 ' l_qtp_code :'||l_qtp_code);
19173 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19174 ' l_qte_reason :'||l_qte_reason);
19175 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19176 ' l_early_term_yn :'||l_early_term_yn);
19177 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19178 ' l_purpose_code :'||l_purpose_code);
19179 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19180 ' l_def_tax_country :'||l_def_tax_country);
19181 END IF;
19182
19183 l_reporting_flag := 'Y';
19184
19185 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19186 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19187 'Call to (Billing, Credit Memo, Rollover Billing, Rollover Credit Memo,
19188 Release Billing, Release Credit Memo) .. ');
19189 END IF;
19190 -- get header level tax parameters
19191 get_k_hdr_tax_params( p_api_version => p_api_version,
19192 p_init_msg_list => p_init_msg_list,
19193 x_return_status => x_return_status,
19194 x_msg_count => x_msg_count,
19195 x_msg_data => x_msg_data,
19196 p_khr_id => l_billingdtls_rec.khr_id,
19197 p_source_trx_name => p_source_trx_name,
19198 p_source_table => p_source_table,
19199 x_cust_acct_id => lx_cust_acct_id,
19200 x_bill_to_siteuseid => lx_bill_to_siteuseid,
19201 x_currency_code => lx_currency_code,
19202 x_cust_trx_type_id => lx_cust_trx_type_id,
19203 x_precision => lx_precision,
19204 x_minimum_accountable_unit => lx_minimum_accountable_unit,
19205 x_prch_opt_det => lx_pb_prch_opt_det,
19206 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
19207 x_int_disclosed_det => lx_pb_int_disclosed_det,
19208 x_org_id => lx_org_id,
19209 x_book_class_code => lx_book_class_code,
19210 x_bill_to_party_site_id => lx_bill_to_party_site_id,
19211 x_bill_to_party_id => lx_bill_to_party_id,
19212 x_bill_to_location_id => lx_bill_to_location_id,
19213 x_currency_conversion_type => lx_currency_conversion_type,
19214 x_currency_conversion_rate => lx_currency_conversion_rate,
19215 x_currency_conversion_date => lx_currency_conversion_date,
19216 x_contract_start_date => lx_contract_start_date);
19217 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19218 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19219 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19220 RAISE OKL_API.G_EXCEPTION_ERROR;
19221 END IF;
19222
19223 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19224 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19225 ' l_billingdtls_rec.khr_id :'||l_billingdtls_rec.khr_id);
19226 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19227 ' lx_cust_acct_id :'||lx_cust_acct_id);
19228 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19229 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
19230 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19231 ' lx_currency_code :'||lx_currency_code);
19232 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19233 ' lx_cust_trx_type_id :'||lx_cust_trx_type_id);
19234 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19235 ' lx_precision :'||lx_precision);
19236 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19237 ' lx_minimum_accountable_unit :'||lx_minimum_accountable_unit);
19238 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19239 ' lx_pb_prch_opt_det :'||lx_pb_prch_opt_det);
19240 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19241 ' lx_pb_fin_prod_id_det :'||lx_pb_fin_prod_id_det);
19242 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19243 ' lx_pb_int_disclosed_det :'||lx_pb_int_disclosed_det);
19244 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19245 ' lx_org_id :'||lx_org_id);
19246 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19247 ' lx_book_class_code :'||lx_book_class_code);
19248 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19249 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
19250 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19251 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
19252 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19253 ' lx_bill_to_location_id :'||l_def_tax_country);
19254 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19255 ' lx_currency_conversion_type :'||lx_currency_conversion_type);
19256 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19257 ' lx_currency_conversion_rate :'||lx_currency_conversion_rate);
19258 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19259 ' lx_currency_conversion_date :'||lx_currency_conversion_date);
19260 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19261 ' lx_contract_start_date :'||lx_contract_start_date);
19262 END IF;
19263
19264 -- Line level Invoice
19265 IF l_billingdtls_rec.kle_id IS NOT NULL THEN
19266
19267 OPEN l_okclinestyle_csr(l_billingdtls_rec.kle_id);
19268 FETCH l_okclinestyle_csr INTO l_line_type;
19269 CLOSE l_okclinestyle_csr;
19270
19271 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19272 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants',
19273 'line level inv '||' l_line_type = '||l_line_type);
19274 END IF;
19275
19276 IF l_line_type IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
19277
19278 l_asset_exists := TRUE;
19279
19280 -- For regular stream billing, l_line_type can have any of the above 3 values
19281 -- For transaction billing, l_line_type can only be FREE_FORM1
19282 OPEN l_okclines_csr(l_billingdtls_rec.kle_id);
19283 FETCH l_okclines_csr INTO l_name;
19284 CLOSE l_okclines_csr;
19285
19286 IF l_line_type = 'FREE_FORM1' THEN
19287 l_fin_asset_id := l_billingdtls_rec.kle_id;
19288 ELSE
19289 -- If subline level, get the attached fin asset id
19290 OPEN l_finasset_csr(l_billingdtls_rec.kle_id, l_line_type);
19291 FETCH l_finasset_csr INTO l_fin_asset_id;
19292 CLOSE l_finasset_csr;
19293 END IF;
19294
19295 -- Get the asset level determinants
19296 get_asset_tax_params(
19297 p_api_version => p_api_version,
19298 p_init_msg_list => p_init_msg_list,
19299 x_return_status => x_return_status,
19300 x_msg_count => x_msg_count,
19301 x_msg_data => x_msg_data,
19302 p_khr_id => l_billingdtls_rec.khr_id,
19303 p_kle_id => l_fin_asset_id,
19304 p_source_trx_name => p_source_trx_name,
19305 p_source_table => p_source_table,
19306 p_qtp_code => l_qtp_code,
19307 p_purpose_code => l_purpose_code,
19308 x_transfer_of_title => lx_transfer_of_title,
19309 x_sale_lease_back => lx_sale_lease_back,
19310 x_purchase_of_lease => lx_purchase_of_lease,
19311 x_usage_of_equipment => lx_usage_of_equipment,
19312 x_age_of_equipment => lx_age_of_equipment,
19313 x_vendor_site_id => lx_vendor_site_id);
19314 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19315 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19316 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19317 RAISE OKL_API.G_EXCEPTION_ERROR;
19318 END IF;
19319
19320 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19321 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19322 ' l_fin_asset_id :'||l_fin_asset_id);
19323 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19324 ' lx_transfer_of_title :'||lx_transfer_of_title);
19325 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19326 ' lx_sale_lease_back :'||lx_sale_lease_back);
19327 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19328 ' lx_purchase_of_lease :'||lx_purchase_of_lease);
19329 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19330 ' lx_usage_of_equipment :'||lx_usage_of_equipment);
19331 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19332 ' lx_age_of_equipment :'||lx_age_of_equipment);
19333 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19334 ' lx_vendor_site_id :'||lx_vendor_site_id);
19335 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19336 ' l_billingdtls_rec.qte_id :'||l_billingdtls_rec.qte_id);
19337 END IF;
19338
19339 -- Equipment Type(inventory item id)
19340 -- Get the inventory item id
19341 IF l_billingdtls_rec.qte_id IS NULL AND l_purpose_code = 'AMBSPR' THEN -- Remarketing billing
19342 l_product_type := G_GOODS;
19343
19344 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19345 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19346 ' AMBSPR ');
19347 END IF;
19348
19349 OPEN l_oeorderlines_csr(l_billingdtls_rec.isl_id);
19350 FETCH l_oeorderlines_csr INTO l_inv_item_id, l_inv_item_org_id, lx_ship_to_siteuseid;
19351 -- ship_to_org_id from oe_order_lines_all is the site_use_id value from hz_cust_site_uses_all
19352 -- which is the ship_to_site_use_id
19353 IF l_oeorderlines_csr%NOTFOUND THEN
19354 OKC_API.set_message( p_app_name => 'OKC',
19355 p_msg_name => G_INVALID_VALUE,
19356 p_token1 => G_COL_NAME_TOKEN,
19357 p_token1_value => 'ISL_ID');
19358 RAISE OKL_API.G_EXCEPTION_ERROR;
19359 END IF;
19360 CLOSE l_oeorderlines_csr;
19361
19362 ELSIF l_purpose_code = 'CURE' THEN -- vendor cure billing
19363
19364 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19365 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19366 ' CURE ');
19367 END IF;
19368
19369 l_inv_item_id := NULL;
19370 l_inv_item_org_id := NULL;
19371
19372 ELSE
19373 OPEN l_invitem_csr(l_fin_asset_id);
19374 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
19375 IF l_invitem_csr%NOTFOUND THEN
19376 OKL_API.set_message(
19377 p_app_name => 'OKL',
19378 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
19379 p_token1 => 'ASSET_NUMBER',
19380 p_token1_value => l_name);
19381
19382 RAISE OKL_API.G_EXCEPTION_ERROR;
19383 END IF;
19384 CLOSE l_invitem_csr;
19385 END IF;
19386
19387 -- At this point l_bill_to_siteuseid has Bill To of the K (derived in
19388 -- call to get_k_hdr_tax_params above)
19389 -- l_bill_to_siteuseid will be overridden below depending upon the
19390 -- type of invoice
19391 IF l_qtp_code LIKE 'REP%' OR l_purpose_code IN ('CURE','REPAIR_CHARGE') THEN
19392 -- Ship to is not applicable for Repurchase quote billing, vendor
19393 -- cure billing and asset repair billing
19394 lx_ship_to_siteuseid := NULL;
19395 IF l_qtp_code LIKE 'REP%' OR l_purpose_code = 'CURE' THEN
19396 IF l_billingdtls_rec.ibt_id IS NULL THEN
19397 OKL_API.set_message( p_app_name => 'OKL',
19398 p_msg_name => 'OKL_TX_NO_INV_BILL_TO');
19399
19400 RAISE OKL_API.G_EXCEPTION_ERROR;
19401
19402 ELSE
19403 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19404 END IF;
19405 ELSE -- asset repair invoice
19406 IF l_billingdtls_rec.ibt_id IS NOT NULL THEN
19407 -- ibt_id is populated if asset repair is billed to vendor
19408 -- If billed to lessee, ibt_id will be null. So use bill to from K
19409 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19410 END IF;
19411 END IF;
19412
19413 ELSIF l_purpose_code = 'AMBSPR' THEN -- Remarketing billing
19414 IF l_billingdtls_rec.ibt_id IS NULL THEN
19415 OKL_API.set_message( p_app_name => 'OKL',
19416 p_msg_name => 'OKL_TX_NO_INV_BILL_TO');
19417
19418 RAISE OKL_API.G_EXCEPTION_ERROR;
19419 ELSE
19420 lx_bill_to_siteuseid := l_billingdtls_rec.ibt_id;
19421 END IF;
19422 --ship to (lx_ship_to_siteuseid) is already derived above for Remarketing billing
19423
19424 ELSE
19425
19426 -- get the Location Party ID's
19427 get_location_party_ids(
19428 p_api_version => p_api_version,
19429 p_init_msg_list => p_init_msg_list,
19430 x_return_status => x_return_status,
19431 x_msg_count => x_msg_count,
19432 x_msg_data => x_msg_data,
19433 p_cust_acct_id => lx_cust_acct_id,
19434 p_fin_asset_id => l_fin_asset_id,
19435 p_khr_id => l_billingdtls_rec.khr_id,
19436 x_bill_to_party_site_id => lx_bill_to_party_site_id,
19437 x_bill_to_location_id => lx_bill_to_location_id,
19438 x_bill_to_party_id => lx_bill_to_party_id,
19439 x_bill_to_site_use_id => lx_bill_to_siteuseid,
19440 x_ship_to_party_site_id => lx_ship_to_party_site_id,
19441 x_ship_to_location_id => lx_ship_to_location_id,
19442 x_ship_to_party_id => lx_ship_to_party_id,
19443 x_ship_to_site_use_id => lx_ship_to_siteuseid);
19444
19445 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19446 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19447 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19448 RAISE OKL_API.G_EXCEPTION_ERROR;
19449 END IF;
19450
19451 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19452 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19453 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
19454 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19455 ' lx_bill_to_location_id :'||lx_bill_to_location_id);
19456 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19457 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
19458 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19459 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
19460 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19461 ' lx_ship_to_party_site_id :'||lx_ship_to_party_site_id);
19462 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19463 ' lx_ship_to_location_id :'||lx_ship_to_location_id);
19464 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19465 ' lx_ship_to_party_id :'||lx_ship_to_party_id);
19466 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19467 ' lx_ship_to_siteuseid :'||lx_ship_to_siteuseid);
19468 END IF;
19469
19470 END IF;
19471
19472 END IF;
19473 END IF;
19474
19475 -- Asset doesn't exist
19476 IF (NOT l_asset_exists) THEN
19477 lx_transfer_of_title := null;
19478 lx_sale_lease_back := null;
19479 lx_purchase_of_lease := null;
19480 lx_usage_of_equipment := null;
19481 lx_age_of_equipment := null;
19482 lx_vendor_site_id := null;
19483 lx_ship_to_party_site_id := null;
19484 lx_ship_to_location_id := null;
19485 lx_ship_to_party_id := null;
19486 lx_ship_to_siteuseid := null;
19487 l_inv_item_id := null;
19488 l_inv_item_org_id := null;
19489 l_fin_asset_id := null;
19490 END IF;
19491
19492 -- Get TBC code
19493 get_tbc_code(p_api_version => p_api_version,
19494 p_init_msg_list => p_init_msg_list,
19495 x_return_status => x_return_status,
19496 x_msg_count => x_msg_count,
19497 x_msg_data => x_msg_data,
19498 p_sty_id => l_billingdtls_rec.sty_id,
19499 p_try_id => l_billingdtls_rec.try_id,
19500 p_book_class_code => lx_book_class_code,
19501 p_tax_country_code => l_def_tax_country,
19502 x_tbc_code => lx_tbc_code);
19503
19504 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19505 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19506 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19507 RAISE OKL_API.G_EXCEPTION_ERROR;
19508 END IF;
19509
19510 -- Validate TBC Code
19511 IF lx_tbc_code IS NOT NULL THEN
19512 validate_tax_code(
19513 p_api_version => p_api_version,
19514 p_init_msg_list => p_init_msg_list,
19515 x_return_status => x_return_status,
19516 x_msg_count => x_msg_count,
19517 x_msg_data => x_msg_data,
19518 p_trx_date => l_billingdtls_rec.date_invoiced,
19519 p_tbc_code => lx_tbc_code,
19520 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19521
19522 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19523 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19524 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19525 RAISE OKL_API.G_EXCEPTION_ERROR;
19526 END IF;
19527 END IF;
19528
19529 IF (lx_tbc_code IS NULL OR lx_tax_valid_code = 'F') THEN
19530 lx_tbc_code := 'SALES_TRANSACTION';
19531 END IF;
19532
19533 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19534 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19535 'lx_tbc_code '||lx_tbc_code);
19536 END IF;
19537
19538 -- Get PC code
19539 get_pc_code(p_api_version => p_api_version,
19540 p_init_msg_list => p_init_msg_list,
19541 x_return_status => x_return_status,
19542 x_msg_count => x_msg_count,
19543 x_msg_data => x_msg_data,
19544 p_sty_id => l_billingdtls_rec.sty_id,
19545 p_purchase_option_code => lx_pb_prch_opt_det,
19546 p_int_disclosed_code => lx_pb_int_disclosed_det,
19547 p_title_trnsfr_code => lx_transfer_of_title,
19548 p_sale_lease_back_code => lx_sale_lease_back,
19549 p_lease_purchased_code => lx_purchase_of_lease,
19550 p_tax_country_code => l_def_tax_country,
19551 x_pc_code => lx_pc_code);
19552 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19553 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19554 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19555 RAISE OKL_API.G_EXCEPTION_ERROR;
19556 END IF;
19557
19558 -- Validate PC Code
19559 IF lx_pc_code IS NOT NULL THEN
19560 validate_tax_code(
19561 p_api_version => p_api_version,
19562 p_init_msg_list => p_init_msg_list,
19563 x_return_status => x_return_status,
19564 x_msg_count => x_msg_count,
19565 x_msg_data => x_msg_data,
19566 p_trx_date => l_billingdtls_rec.date_invoiced,
19567 p_pc_code => lx_pc_code,
19568 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19569
19570 IF (lx_tax_valid_code = 'F') THEN
19571 lx_pc_code := null;
19572 END IF;
19573
19574 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19575 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19576 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19577 RAISE OKL_API.G_EXCEPTION_ERROR;
19578 END IF;
19579 END IF;
19580
19581 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19582 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19583 'lx_pc_code '||lx_pc_code);
19584 END IF;
19585
19586 -- Get UFC code
19587 get_ufc_code(p_api_version => p_api_version,
19588 p_init_msg_list => p_init_msg_list,
19589 x_return_status => x_return_status,
19590 x_msg_count => x_msg_count,
19591 x_msg_data => x_msg_data,
19592 p_purchase_option => lx_pb_prch_opt_det,
19593 p_fin_product_id => lx_pb_fin_prod_id_det,
19594 p_try_id => l_billingdtls_rec.try_id,
19595 p_sty_id => l_billingdtls_rec.sty_id,
19596 p_int_disclosed_code => lx_pb_int_disclosed_det,
19597 p_title_trnsfr_code => lx_transfer_of_title,
19598 p_sale_lease_back_code => lx_sale_lease_back,
19599 p_lease_purchased_code => lx_purchase_of_lease,
19600 p_equip_usage_code => lx_usage_of_equipment ,
19601 p_vendor_site_id => lx_vendor_site_id,
19602 p_age_of_equip => lx_age_of_equipment,
19603 p_term_quote_type_code => null,
19604 p_term_quote_reason_code => null,
19605 p_tax_country_code => l_def_tax_country,
19606 x_ufc_code => lx_ufc_code);
19607 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19608 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19609 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19610 RAISE OKL_API.G_EXCEPTION_ERROR;
19611 END IF;
19612
19613 -- Validate UFC Code
19614 IF lx_ufc_code IS NOT NULL THEN
19615 validate_tax_code(
19616 p_api_version => p_api_version,
19617 p_init_msg_list => p_init_msg_list,
19618 x_return_status => x_return_status,
19619 x_msg_count => x_msg_count,
19620 x_msg_data => x_msg_data,
19621 p_trx_date => l_billingdtls_rec.date_invoiced,
19622 p_ufc_code => lx_ufc_code,
19623 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
19624
19625 IF (lx_tax_valid_code = 'F') THEN
19626 lx_ufc_code := null;
19627 END IF;
19628
19629 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19630 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19631 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19632 RAISE OKL_API.G_EXCEPTION_ERROR;
19633 END IF;
19634 END IF;
19635
19636 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19637 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19638 'lx_ufc_code '||lx_ufc_code);
19639 END IF;
19640
19641 -- Get the tax classification code
19642 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19643 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19644 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
19645 END IF;
19646
19647 -- Get Set of Books ID
19648 OPEN c_get_set_of_books_id(cp_org_id => lx_org_id);
19649 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
19650 CLOSE c_get_set_of_books_id;
19651
19652 IF p_source_trx_name IN ('Billing', 'Rollover Billing', 'Release Billing') THEN
19653 l_event_class_code := G_INVOICE_EVENT_CLASS_CODE;
19654 ELSIF p_source_trx_name IN ('Credit Memo', 'Rollover Credit Memo', 'Release Credit Memo') THEN
19655 l_event_class_code := G_CRE_MEM_EVENT_CLASS_CODE;
19656 END IF;
19657
19658 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
19659 x_return_status => x_return_status,
19660 p_ship_to_site_use_id => lx_ship_to_siteuseid,
19661 p_bill_to_site_use_id => lx_bill_to_siteuseid,
19662 p_inventory_item_id => l_inv_item_id,
19663 p_organization_id => lx_org_id,
19664 p_set_of_books_id => l_set_of_books_id,
19665 p_trx_date => l_billingdtls_rec.date_invoiced,
19666 p_trx_type_id => null,
19667 p_entity_code => G_AR_ENTITY_CODE,
19668 p_event_class_code => l_event_class_code,
19669 p_application_id => G_AR_APPLICATION_ID,
19670 p_internal_organization_id => lx_org_id,
19671 x_tax_classification_code => lx_tax_classification_code );
19672
19673 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19674 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19675 'Return Status '|| x_return_status);
19676 END IF;
19677
19678 -- Check if taxable basis override applies to Billing / Credit Memo
19679 OPEN l_txbasisoverride_csr(l_billingdtls_rec.try_id);
19680 FETCH l_txbasisoverride_csr INTO l_fma_id;
19681 CLOSE l_txbasisoverride_csr;
19682
19683 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19684 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19685 ' l_fma_id :'||l_fma_id);
19686 END IF;
19687
19688 IF l_fma_id IS NOT NULL THEN
19689 OPEN l_formulae_csr(l_fma_id);
19690 FETCH l_formulae_csr INTO l_formula_name;
19691
19692 IF l_formulae_csr%NOTFOUND THEN
19693 OKC_API.set_message( p_app_name => 'OKC',
19694 p_msg_name => G_INVALID_VALUE,
19695 p_token1 => G_COL_NAME_TOKEN,
19696 p_token1_value => 'FMA_ID');
19697 RAISE OKL_API.G_EXCEPTION_ERROR;
19698 END IF;
19699 CLOSE l_formulae_csr;
19700
19701 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19702 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19703 'l_formula_name '||l_formula_name );
19704 END IF;
19705
19706 -- execute tax basis override formula, pass tax determinants
19707 l_add_params(1).name := 'PURCHASE_OPTION';
19708 l_add_params(1).value := lx_pb_prch_opt_det;
19709
19710 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
19711 l_add_params(2).value := lx_pb_fin_prod_id_det;
19712
19713 l_add_params(3).name := 'TRX_TYPE_ID';
19714 l_add_params(3).value := l_billingdtls_rec.try_id;
19715
19716 l_add_params(4).name := 'STREAM_TYPE_ID';
19717 l_add_params(4).value := l_billingdtls_rec.sty_id;
19718
19719 l_add_params(5).name := 'INTEREST_DISCLOSED';
19720 l_add_params(5).value := lx_pb_int_disclosed_det;
19721
19722 l_add_params(6).name := 'TRANSFER_OF_TITLE';
19723 l_add_params(6).value := lx_transfer_of_title;
19724
19725 l_add_params(7).name := 'SALE_LEASE_BACK';
19726 l_add_params(7).value := lx_sale_lease_back;
19727
19728 l_add_params(8).name := 'PURCHASE_OF_LEASE';
19729 l_add_params(8).value := lx_purchase_of_lease;
19730
19731 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
19732 l_add_params(9).value := lx_usage_of_equipment;
19733
19734 l_add_params(10).name := 'VENDOR_SITE_ID';
19735 l_add_params(10).value := lx_vendor_site_id;
19736
19737 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
19738 l_add_params(11).value := lx_age_of_equipment;
19739
19740 l_add_params(12).name := 'BOOK_CLASS';
19741 l_add_params(12).value := lx_book_class_code;
19742
19743 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
19744 l_add_params(13).value := lx_bill_to_party_site_id;
19745
19746 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
19747 l_add_params(14).value := lx_bill_to_location_id;
19748
19749 l_add_params(15).name := 'BILL_TO_PARTY_ID';
19750 l_add_params(15).value := lx_bill_to_party_id;
19751
19752 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
19753 l_add_params(16).value := null;
19754
19755 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
19756 l_add_params(17).value := null;
19757
19758 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
19759 l_add_params(18).value := null;
19760
19761 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
19762 l_add_params(19).value := lx_bill_to_siteuseid;
19763
19764 l_add_params(20).name := 'INVENTORY_ITEM_ID';
19765 l_add_params(20).value := l_inv_item_id;
19766
19767 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
19768 l_add_params(21).value := lx_ship_to_siteuseid;
19769
19770 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
19771 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
19772 l_add_params(22).name := 'LINE_NAME';
19773 l_add_params(22).value := Null; -- Line name is not relevant for billing and disbursement type of calls
19774
19775 l_add_params(23).name := 'SOURCE_TRX_NAME';
19776 l_add_params(23).value := p_source_trx_name;
19777
19778 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
19779 l_add_params(24).value := l_billingdtls_rec.amount;
19780 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
19781
19782 okl_am_util_pvt.get_formula_value( p_formula_name => l_formula_name,
19783 p_chr_id => l_billingdtls_rec.khr_id,
19784 p_cle_id => l_fin_asset_id,
19785 p_additional_parameters => l_add_params,
19786 x_formula_value => lx_assessable_value,
19787 x_return_status => x_return_status);
19788
19789 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
19790 OKL_API.init_msg_list('T');
19791 OKL_API.set_message(p_app_name => 'OKL',
19792 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
19793 p_token1 => 'FMA_NAME',
19794 p_token1_value => l_formula_name,
19795 p_token2 => 'TRX_NAME ',
19796 p_token2_value => p_source_trx_name);
19797 RAISE OKL_API.G_EXCEPTION_ERROR;
19798 END IF;
19799
19800 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19801 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19802 'calculated l_assessable_value '||lx_assessable_value);
19803 END IF;
19804
19805 ELSE
19806 lx_assessable_value := l_billingdtls_rec.amount;
19807 END IF; --IF l_fma_id IS NOT NULL THEN
19808
19809 x_tax_det_rec.x_tax_code := lx_tax_classification_code;
19810 x_tax_det_rec.x_trx_business_category := lx_tbc_code;
19811 x_tax_det_rec.x_product_category := lx_pc_code;
19812 x_tax_det_rec.x_product_type := l_product_type;
19813 x_tax_det_rec.x_line_intended_use := lx_usage_of_equipment;
19814 x_tax_det_rec.x_user_defined_fisc_class := lx_ufc_code;
19815 x_tax_det_rec.x_assessable_value := lx_assessable_value;
19816 x_tax_det_rec.x_default_taxation_country := l_def_tax_country;
19817 x_tax_det_rec.x_upstream_trx_reported_flag := l_reporting_flag;
19818
19819 ELSIF p_source_trx_name IN ('Funding', 'Disbursement', 'Debit Memo') THEN
19820
19821 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19822 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19823 'Call to (Funding, Disbursement, Debit Memo) .. ');
19824 END IF;
19825
19826 -- Validate source trx id
19827 OPEN l_disbdtls_csr(p_source_trx_id);
19828 FETCH l_disbdtls_csr INTO l_disbdtls_rec;
19829 IF l_disbdtls_csr %NOTFOUND THEN
19830 OKC_API.set_message( p_app_name => 'OKC',
19831 p_msg_name => G_INVALID_VALUE,
19832 p_token1 => G_COL_NAME_TOKEN,
19833 p_token1_value => 'SOURCE_TRX_ID');
19834 RAISE OKL_API.G_EXCEPTION_ERROR;
19835 END IF;
19836 CLOSE l_disbdtls_csr;
19837
19838 IF (l_disbdtls_rec.ipvs_id IS NOT NULL) THEN
19839 OPEN l_get_vendor_csr(l_disbdtls_rec.ipvs_id);
19840 FETCH l_get_vendor_csr INTO l_vendor_id;
19841 CLOSE l_get_vendor_csr;
19842 END IF;
19843
19844 IF l_disbdtls_rec.qte_id IS NOT NULL THEN -- Invoice created for a quote
19845 OPEN l_trxquotes_csr(l_disbdtls_rec.qte_id);
19846 FETCH l_trxquotes_csr INTO l_qtp_code, l_qte_reason, l_early_term_yn;
19847 CLOSE l_trxquotes_csr;
19848 END IF;
19849
19850 IF l_disbdtls_rec.sty_id IS NOT NULL THEN
19851 OPEN l_strmtype_csr(l_disbdtls_rec.sty_id);
19852 FETCH l_strmtype_csr INTO l_purpose_code;
19853 CLOSE l_strmtype_csr;
19854 END IF;
19855
19856 l_product_type := G_SERVICES;
19857 l_def_tax_country := get_default_taxation_country(x_return_status => x_return_status,
19858 x_msg_count => x_msg_count,
19859 x_msg_data => x_msg_data,
19860 p_legal_entity_id => l_disbdtls_rec.legal_entity_id);
19861 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19862 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19863 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19864 RAISE OKL_API.G_EXCEPTION_ERROR;
19865 END IF;
19866
19867 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19868 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19869 ' l_qtp_code :'||l_qtp_code);
19870 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19871 ' l_qte_reason :'||l_qte_reason);
19872 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19873 ' l_early_term_yn :'||l_early_term_yn);
19874 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19875 ' l_purpose_code :'||l_purpose_code);
19876 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19877 ' l_def_tax_country :'||l_def_tax_country);
19878 END IF;
19879
19880 -- get header level tax parameters
19881 get_k_hdr_tax_params( p_api_version => p_api_version,
19882 p_init_msg_list => p_init_msg_list,
19883 x_return_status => x_return_status,
19884 x_msg_count => x_msg_count,
19885 x_msg_data => x_msg_data,
19886 p_khr_id => l_disbdtls_rec.khr_id,
19887 p_source_trx_name => p_source_trx_name,
19888 p_source_table => p_source_table,
19889 x_cust_acct_id => lx_cust_acct_id,
19890 x_bill_to_siteuseid => lx_bill_to_siteuseid,
19891 x_currency_code => lx_currency_code,
19892 x_cust_trx_type_id => lx_cust_trx_type_id,
19893 x_precision => lx_precision,
19894 x_minimum_accountable_unit => lx_minimum_accountable_unit,
19895 x_prch_opt_det => lx_pb_prch_opt_det,
19896 x_fin_prod_id_det => lx_pb_fin_prod_id_det,
19897 x_int_disclosed_det => lx_pb_int_disclosed_det,
19898 x_org_id => lx_org_id,
19899 x_book_class_code => lx_book_class_code,
19900 x_bill_to_party_site_id => lx_bill_to_party_site_id,
19901 x_bill_to_party_id => lx_bill_to_party_id,
19902 x_bill_to_location_id => lx_bill_to_location_id,
19903 x_currency_conversion_type => lx_currency_conversion_type,
19904 x_currency_conversion_rate => lx_currency_conversion_rate,
19905 x_currency_conversion_date => lx_currency_conversion_date,
19906 x_contract_start_date => lx_contract_start_date);
19907 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19908 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19909 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19910 RAISE OKL_API.G_EXCEPTION_ERROR;
19911 END IF;
19912
19913 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19914 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19915 ' l_billingdtls_rec.khr_id :'||l_billingdtls_rec.khr_id);
19916 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19917 ' lx_cust_acct_id :'||lx_cust_acct_id);
19918 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19919 ' lx_bill_to_siteuseid :'||lx_bill_to_siteuseid);
19920 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19921 ' lx_currency_code :'||lx_currency_code);
19922 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19923 ' lx_cust_trx_type_id :'||lx_cust_trx_type_id);
19924 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19925 ' lx_precision :'||lx_precision);
19926 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19927 ' lx_minimum_accountable_unit :'||lx_minimum_accountable_unit);
19928 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19929 ' lx_pb_prch_opt_det :'||lx_pb_prch_opt_det);
19930 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19931 ' lx_pb_fin_prod_id_det :'||lx_pb_fin_prod_id_det);
19932 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19933 ' lx_pb_int_disclosed_det :'||lx_pb_int_disclosed_det);
19934 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19935 ' lx_org_id :'||lx_org_id);
19936 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19937 ' lx_book_class_code :'||lx_book_class_code);
19938 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19939 ' lx_bill_to_party_site_id :'||lx_bill_to_party_site_id);
19940 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19941 ' lx_bill_to_party_id :'||lx_bill_to_party_id);
19942 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19943 ' lx_bill_to_location_id :'||l_def_tax_country);
19944 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19945 ' lx_currency_conversion_type :'||lx_currency_conversion_type);
19946 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19947 ' lx_currency_conversion_rate :'||lx_currency_conversion_rate);
19948 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19949 ' lx_currency_conversion_date :'||lx_currency_conversion_date);
19950 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
19951 ' lx_contract_start_date :'||lx_contract_start_date);
19952 END IF;
19953
19954 -- Line level Invoice
19955 IF l_disbdtls_rec.kle_id IS NOT NULL THEN
19956
19957 OPEN l_okclinestyle_csr(l_disbdtls_rec.kle_id);
19958 FETCH l_okclinestyle_csr INTO l_line_type;
19959 CLOSE l_okclinestyle_csr;
19960
19961 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
19962 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants',
19963 'line level inv '||' l_line_type = '||l_line_type);
19964 END IF;
19965
19966 IF l_line_type IN ('FREE_FORM1','LINK_SERV_ASSET','LINK_FEE_ASSET') THEN
19967
19968 l_asset_exists := TRUE;
19969
19970 -- For regular stream billing, l_line_type can have any of the above 3 values
19971 -- For transaction billing, l_line_type can only be FREE_FORM1
19972 OPEN l_okclines_csr(l_disbdtls_rec.kle_id);
19973 FETCH l_okclines_csr INTO l_name;
19974 CLOSE l_okclines_csr;
19975
19976 IF l_line_type = 'FREE_FORM1' THEN
19977 l_fin_asset_id := l_disbdtls_rec.kle_id;
19978 ELSE
19979 -- If subline level, get the attached fin asset id
19980 OPEN l_finasset_csr(l_disbdtls_rec.kle_id, l_line_type);
19981 FETCH l_finasset_csr INTO l_fin_asset_id;
19982 CLOSE l_finasset_csr;
19983 END IF;
19984
19985 -- Get the asset level determinants
19986 get_asset_tax_params(
19987 p_api_version => p_api_version,
19988 p_init_msg_list => p_init_msg_list,
19989 x_return_status => x_return_status,
19990 x_msg_count => x_msg_count,
19991 x_msg_data => x_msg_data,
19992 p_khr_id => l_disbdtls_rec.khr_id,
19993 p_kle_id => l_fin_asset_id,
19994 p_source_trx_name => p_source_trx_name,
19995 p_source_table => p_source_table,
19996 p_qtp_code => l_qtp_code,
19997 p_purpose_code => l_purpose_code,
19998 x_transfer_of_title => lx_transfer_of_title,
19999 x_sale_lease_back => lx_sale_lease_back,
20000 x_purchase_of_lease => lx_purchase_of_lease,
20001 x_usage_of_equipment => lx_usage_of_equipment,
20002 x_age_of_equipment => lx_age_of_equipment,
20003 x_vendor_site_id => lx_vendor_site_id);
20004 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20005 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20006 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20007 RAISE OKL_API.G_EXCEPTION_ERROR;
20008 END IF;
20009
20010 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20011 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20012 ' l_fin_asset_id :'||l_fin_asset_id);
20013 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20014 ' lx_transfer_of_title :'||lx_transfer_of_title);
20015 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20016 ' lx_sale_lease_back :'||lx_sale_lease_back);
20017 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20018 ' lx_purchase_of_lease :'||lx_purchase_of_lease);
20019 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20020 ' lx_usage_of_equipment :'||lx_usage_of_equipment);
20021 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20022 ' lx_age_of_equipment :'||lx_age_of_equipment);
20023 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20024 ' lx_vendor_site_id :'||lx_vendor_site_id);
20025 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20026 ' l_billingdtls_rec.qte_id :'||l_billingdtls_rec.qte_id);
20027 END IF;
20028
20029 -- Get the inventory item id
20030 OPEN l_invitem_csr(l_fin_asset_id);
20031 FETCH l_invitem_csr INTO l_inv_item_id, l_inv_item_org_id;
20032 IF l_invitem_csr%NOTFOUND THEN
20033 OKL_API.set_message(
20034 p_app_name => 'OKL',
20035 p_msg_name => 'OKL_TX_INV_ITEM_ERR',
20036 p_token1 => 'ASSET_NUMBER',
20037 p_token1_value => l_name);
20038
20039 RAISE OKL_API.G_EXCEPTION_ERROR;
20040 END IF;
20041 CLOSE l_invitem_csr;
20042
20043 END IF;
20044 END IF;
20045
20046 -- Asset doesn't exist
20047 IF (NOT l_asset_exists) THEN
20048 lx_transfer_of_title := null;
20049 lx_sale_lease_back := null;
20050 lx_purchase_of_lease := null;
20051 lx_usage_of_equipment := null;
20052 lx_age_of_equipment := null;
20053 lx_vendor_site_id := null;
20054 lx_ship_to_party_site_id := null;
20055 lx_ship_to_location_id := null;
20056 lx_ship_to_party_id := null;
20057 lx_ship_to_siteuseid := null;
20058 l_inv_item_id := null;
20059 l_inv_item_org_id := null;
20060 l_fin_asset_id := null;
20061 END IF;
20062
20063 -- Get TBC code
20064 get_tbc_code(p_api_version => p_api_version,
20065 p_init_msg_list => p_init_msg_list,
20066 x_return_status => x_return_status,
20067 x_msg_count => x_msg_count,
20068 x_msg_data => x_msg_data,
20069 p_sty_id => l_disbdtls_rec.sty_id,
20070 p_try_id => l_disbdtls_rec.try_id,
20071 p_book_class_code => lx_book_class_code,
20072 p_tax_country_code => l_def_tax_country,
20073 x_tbc_code => lx_tbc_code);
20074
20075 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20076 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20077 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20078 RAISE OKL_API.G_EXCEPTION_ERROR;
20079 END IF;
20080
20081 -- Validate TBC Code
20082 IF lx_tbc_code IS NOT NULL THEN
20083 validate_tax_code(
20084 p_api_version => p_api_version,
20085 p_init_msg_list => p_init_msg_list,
20086 x_return_status => x_return_status,
20087 x_msg_count => x_msg_count,
20088 x_msg_data => x_msg_data,
20089 p_trx_date => l_disbdtls_rec.date_invoiced,
20090 p_tbc_code => lx_tbc_code,
20091 x_valid_code => lx_tax_valid_code); -- 'S' --> Success, 'F' --> Failure
20092
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 END IF;
20099
20100 IF (lx_tbc_code IS NULL OR lx_tax_valid_code = 'F') THEN
20101 lx_tbc_code := 'PURCHASE_TRANSACTION';
20102 END IF;
20103
20104 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20105 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20106 'lx_tbc_code '||lx_tbc_code);
20107 END IF;
20108
20109 -- Get the tax classification code
20110 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20111 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20112 'Calling OKL_TAX_INTERFACE_PVT.get_tax_classification_code .. ');
20113 END IF;
20114
20115 -- Get Set of Books ID
20116 OPEN c_get_set_of_books_id(cp_org_id => lx_org_id);
20117 FETCH c_get_set_of_books_id INTO l_set_of_books_id;
20118 CLOSE c_get_set_of_books_id;
20119
20120 OKL_TAX_INTERFACE_PVT.get_tax_classification_code (
20121 x_return_status => x_return_status,
20122 p_ship_to_site_use_id => lx_ship_to_siteuseid,
20123 p_bill_to_site_use_id => lx_bill_to_siteuseid,
20124 p_inventory_item_id => l_inv_item_id,
20125 p_organization_id => lx_org_id,
20126 p_set_of_books_id => l_set_of_books_id,
20127 p_trx_date => l_disbdtls_rec.date_invoiced,
20128 p_trx_type_id => null,
20129 p_entity_code => G_AP_ENTITY_CODE,
20130 p_event_class_code => G_AP_EVENT_CLASS_CODE,
20131 p_application_id => G_AP_APPLICATION_ID,
20132 p_internal_organization_id => lx_org_id,
20133 p_vendor_id => l_vendor_id,
20134 p_vendor_site_id => l_disbdtls_rec.ipvs_id,
20135 x_tax_classification_code => lx_tax_classification_code );
20136
20137 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20138 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20139 'Return Status '|| x_return_status);
20140 END IF;
20141
20142 OPEN l_txbasisoverride_csr(l_disbdtls_rec.try_id);
20143 FETCH l_txbasisoverride_csr INTO l_fma_id;
20144 CLOSE l_txbasisoverride_csr;
20145
20146 IF l_fma_id IS NOT NULL THEN
20147 OPEN l_formulae_csr(l_fma_id);
20148 FETCH l_formulae_csr INTO l_formula_name;
20149
20150 IF l_formulae_csr%NOTFOUND THEN
20151 OKC_API.set_message( p_app_name => 'OKC',
20152 p_msg_name => G_INVALID_VALUE,
20153 p_token1 => G_COL_NAME_TOKEN,
20154 p_token1_value => 'FMA_ID');
20155 RAISE OKL_API.G_EXCEPTION_ERROR;
20156 END IF;
20157 CLOSE l_formulae_csr;
20158
20159 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20160 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20161 'l_formula_name '||l_formula_name );
20162 END IF;
20163
20164 -- execute tax basis override formula, pass tax determinants
20165 l_add_params(1).name := 'PURCHASE_OPTION';
20166 l_add_params(1).value := lx_pb_prch_opt_det;
20167
20168 l_add_params(2).name := 'FINANCIAL_PRODUCT_ID';
20169 l_add_params(2).value := lx_pb_fin_prod_id_det;
20170
20171 l_add_params(3).name := 'TRX_TYPE_ID';
20172 l_add_params(3).value := l_disbdtls_rec.try_id;
20173
20174 l_add_params(4).name := 'STREAM_TYPE_ID';
20175 l_add_params(4).value := l_disbdtls_rec.sty_id;
20176
20177 l_add_params(5).name := 'INTEREST_DISCLOSED';
20178 l_add_params(5).value := lx_pb_int_disclosed_det;
20179
20180 l_add_params(6).name := 'TRANSFER_OF_TITLE';
20181 l_add_params(6).value := lx_transfer_of_title;
20182
20183 l_add_params(7).name := 'SALE_LEASE_BACK';
20184 l_add_params(7).value := lx_sale_lease_back;
20185
20186 l_add_params(8).name := 'PURCHASE_OF_LEASE';
20187 l_add_params(8).value := lx_purchase_of_lease;
20188
20189 l_add_params(9).name := 'USAGE_OF_EQUIPMENT';
20190 l_add_params(9).value := lx_usage_of_equipment;
20191
20192 l_add_params(10).name := 'VENDOR_SITE_ID';
20193 l_add_params(10).value := lx_vendor_site_id;
20194
20195 l_add_params(11).name := 'AGE_OF_EQUIPMENT';
20196 l_add_params(11).value := lx_age_of_equipment;
20197
20198 l_add_params(12).name := 'BOOK_CLASS';
20199 l_add_params(12).value := lx_book_class_code;
20200
20201 l_add_params(13).name := 'BILL_TO_PARTY_SITE_ID';
20202 l_add_params(13).value := lx_bill_to_party_site_id;
20203
20204 l_add_params(14).name := 'BILL_TO_LOCATION_ID';
20205 l_add_params(14).value := lx_bill_to_location_id;
20206
20207 l_add_params(15).name := 'BILL_TO_PARTY_ID';
20208 l_add_params(15).value := lx_bill_to_party_id;
20209
20210 l_add_params(16).name := 'SHIP_TO_PARTY_SITE_ID';
20211 l_add_params(16).value := null;
20212
20213 l_add_params(17).name := 'SHIP_TO_LOCATION_ID';
20214 l_add_params(17).value := null;
20215
20216 l_add_params(18).name := 'SHIP_TO_PARTY_ID';
20217 l_add_params(18).value := null;
20218
20219 -- Directly Mapped
20220 l_add_params(19).name := 'BILL_TO_SITE_USE_ID';
20221 l_add_params(19).value := lx_bill_to_siteuseid;
20222
20223 l_add_params(20).name := 'INVENTORY_ITEM_ID';
20224 l_add_params(20).value := l_inv_item_id;
20225
20226 l_add_params(21).name := 'SHIP_TO_SITE_USE_ID';
20227 l_add_params(21).value := lx_ship_to_siteuseid;
20228
20229 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - begin
20230 --'LINE_NAME', 'DEFAULT_TAXABLE_BASIS', 'SOURCE_TRX_NAME'
20231 l_add_params(22).name := 'LINE_NAME';
20232 l_add_params(22).value := Null; -- Line name is not relevant for billing and disbursement type of calls
20233
20234 l_add_params(23).name := 'SOURCE_TRX_NAME';
20235 l_add_params(23).value := p_source_trx_name;
20236
20237 l_add_params(24).name := 'DEFAULT_TAXABLE_BASIS';
20238 l_add_params(24).value := l_disbdtls_rec.amount;
20239 --SECHAWLA 04-Jan-08 6651621 - Added 3 additional parameters - end
20240
20241
20242 okl_am_util_pvt.get_formula_value( p_formula_name => l_formula_name,
20243 p_chr_id => l_disbdtls_rec.khr_id,
20244 p_cle_id => l_fin_asset_id,
20245 p_additional_parameters => l_add_params,
20246 x_formula_value => lx_assessable_value,
20247 x_return_status => x_return_status);
20248
20249 IF (x_return_status IN (OKL_API.G_RET_STS_UNEXP_ERROR, OKL_API.G_RET_STS_ERROR)) THEN
20250 OKL_API.init_msg_list('T');
20251 OKL_API.set_message(p_app_name => 'OKL',
20252 p_msg_name => 'OKL_TX_FRM_TXN_ERR',
20253 p_token1 => 'FMA_NAME',
20254 p_token1_value => l_formula_name,
20255 p_token2 => 'TRX_NAME ',
20256 p_token2_value => p_source_trx_name);
20257 RAISE OKL_API.G_EXCEPTION_ERROR;
20258 END IF;
20259
20260 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20261 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants.',
20262 'calculated l_assessable_value '||lx_assessable_value);
20263 END IF;
20264
20265 ELSE
20266 lx_assessable_value := l_disbdtls_rec.amount;
20267 END IF; --IF l_fma_id IS NOT NULL THEN
20268
20269 x_tax_det_rec.x_tax_code := lx_tax_classification_code;
20270 x_tax_det_rec.x_trx_business_category := lx_tbc_code;
20271 x_tax_det_rec.x_product_type := l_product_type;
20272 x_tax_det_rec.x_assessable_value := lx_assessable_value;
20273 x_tax_det_rec.x_default_taxation_country := l_def_tax_country;
20274 x_tax_det_rec.x_product_category := null;
20275 x_tax_det_rec.x_line_intended_use := null;
20276 x_tax_det_rec.x_user_defined_fisc_class := null;
20277 x_tax_det_rec.x_upstream_trx_reported_flag := null;
20278
20279 ELSE
20280 OKC_API.set_message( p_app_name => 'OKC',
20281 p_msg_name => G_INVALID_VALUE,
20282 p_token1 => G_COL_NAME_TOKEN,
20283 p_token1_value => 'SOURCE_TRX_NAME');
20284 RAISE OKL_API.G_EXCEPTION_ERROR;
20285 END IF;
20286
20287 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20288 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ','End(-)');
20289 END IF;
20290
20291 -- End the transaction
20292 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
20293
20294 EXCEPTION
20295 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20296
20297 IF (l_billingdtls_csr%ISOPEN) THEN
20298 CLOSE l_billingdtls_csr;
20299 END IF;
20300
20301 IF (l_trxquotes_csr%ISOPEN) THEN
20302 CLOSE l_trxquotes_csr;
20303 END IF;
20304
20305 IF (l_strmtype_csr%ISOPEN) THEN
20306 CLOSE l_strmtype_csr;
20307 END IF;
20308
20309 IF (l_okclinestyle_csr%ISOPEN) THEN
20310 CLOSE l_okclinestyle_csr;
20311 END IF;
20312
20313 IF (l_okclines_csr%ISOPEN) THEN
20314 CLOSE l_okclines_csr;
20315 END IF;
20316
20317 IF (l_finasset_csr%ISOPEN) THEN
20318 CLOSE l_finasset_csr;
20319 END IF;
20320
20321 IF (l_oeorderlines_csr%ISOPEN) THEN
20322 CLOSE l_oeorderlines_csr;
20323 END IF;
20324
20325 IF (l_invitem_csr%ISOPEN) THEN
20326 CLOSE l_invitem_csr;
20327 END IF;
20328
20329 IF (c_get_set_of_books_id%ISOPEN) THEN
20330 CLOSE c_get_set_of_books_id;
20331 END IF;
20332
20333 IF (l_txbasisoverride_csr%ISOPEN) THEN
20334 CLOSE l_txbasisoverride_csr;
20335 END IF;
20336
20337 IF (l_formulae_csr%ISOPEN) THEN
20338 CLOSE l_formulae_csr;
20339 END IF;
20340
20341 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20342 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20343 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20344 END IF;
20345
20346 x_return_status := OKL_API.HANDLE_EXCEPTIONS
20347 (
20348 l_api_name,
20349 G_PKG_NAME,
20350 'OKL_API.G_RET_STS_ERROR',
20351 x_msg_count,
20352 x_msg_data,
20353 '_PVT');
20354
20355 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20356
20357 IF (l_billingdtls_csr%ISOPEN) THEN
20358 CLOSE l_billingdtls_csr;
20359 END IF;
20360
20361 IF (l_trxquotes_csr%ISOPEN) THEN
20362 CLOSE l_trxquotes_csr;
20363 END IF;
20364
20365 IF (l_strmtype_csr%ISOPEN) THEN
20366 CLOSE l_strmtype_csr;
20367 END IF;
20368
20369 IF (l_okclinestyle_csr%ISOPEN) THEN
20370 CLOSE l_okclinestyle_csr;
20371 END IF;
20372
20373 IF (l_okclines_csr%ISOPEN) THEN
20374 CLOSE l_okclines_csr;
20375 END IF;
20376
20377 IF (l_finasset_csr%ISOPEN) THEN
20378 CLOSE l_finasset_csr;
20379 END IF;
20380
20381 IF (l_oeorderlines_csr%ISOPEN) THEN
20382 CLOSE l_oeorderlines_csr;
20383 END IF;
20384
20385 IF (l_invitem_csr%ISOPEN) THEN
20386 CLOSE l_invitem_csr;
20387 END IF;
20388
20389 IF (c_get_set_of_books_id%ISOPEN) THEN
20390 CLOSE c_get_set_of_books_id;
20391 END IF;
20392
20393 IF (l_txbasisoverride_csr%ISOPEN) THEN
20394 CLOSE l_txbasisoverride_csr;
20395 END IF;
20396
20397 IF (l_formulae_csr%ISOPEN) THEN
20398 CLOSE l_formulae_csr;
20399 END IF;
20400
20401 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20402 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20403 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20404 END IF;
20405
20406 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
20407 (
20408 l_api_name,
20409 G_PKG_NAME,
20410 'OKL_API.G_RET_STS_UNEXP_ERROR',
20411 x_msg_count,
20412 x_msg_data,
20413 '_PVT');
20414
20415 WHEN OTHERS THEN
20416
20417 IF (l_billingdtls_csr%ISOPEN) THEN
20418 CLOSE l_billingdtls_csr;
20419 END IF;
20420
20421 IF (l_trxquotes_csr%ISOPEN) THEN
20422 CLOSE l_trxquotes_csr;
20423 END IF;
20424
20425 IF (l_strmtype_csr%ISOPEN) THEN
20426 CLOSE l_strmtype_csr;
20427 END IF;
20428
20429 IF (l_okclinestyle_csr%ISOPEN) THEN
20430 CLOSE l_okclinestyle_csr;
20431 END IF;
20432
20433 IF (l_okclines_csr%ISOPEN) THEN
20434 CLOSE l_okclines_csr;
20435 END IF;
20436
20437 IF (l_finasset_csr%ISOPEN) THEN
20438 CLOSE l_finasset_csr;
20439 END IF;
20440
20441 IF (l_oeorderlines_csr%ISOPEN) THEN
20442 CLOSE l_oeorderlines_csr;
20443 END IF;
20444
20445 IF (l_invitem_csr%ISOPEN) THEN
20446 CLOSE l_invitem_csr;
20447 END IF;
20448
20449 IF (c_get_set_of_books_id%ISOPEN) THEN
20450 CLOSE c_get_set_of_books_id;
20451 END IF;
20452
20453 IF (l_txbasisoverride_csr%ISOPEN) THEN
20454 CLOSE l_txbasisoverride_csr;
20455 END IF;
20456
20457 IF (l_formulae_csr%ISOPEN) THEN
20458 CLOSE l_formulae_csr;
20459 END IF;
20460
20461 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20462 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_tax_determinants ',
20463 'EXCEPTION :'||sqlerrm);
20464 END IF;
20465
20466 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
20467 (
20468 l_api_name,
20469 G_PKG_NAME,
20470 'OTHERS',
20471 x_msg_count,
20472 x_msg_data,
20473 '_PVT');
20474
20475 -- End the transaction
20476 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
20477
20478 END get_tax_determinants;
20479
20480 /*========================================================================
20481 | PUBLIC FUNCTION get_default_taxation_country
20482 |
20483 | DESCRIPTION
20484 | This function is called by Tax component consumers to derive the default
20485 | taxation country based on legal entity
20486 |
20487 | CALLED FROM Tax consumers (Booking, Sales etc.,)
20488 |
20489 |
20490 | CALLS PROCEDURES/FUNCTIONS
20491 |
20492 |
20493 | PARAMETERS
20494 | p_legal_entity_id -- Legal Entity Identifier
20495 |
20496 | KNOWN ISSUES
20497 |
20498 | NOTES
20499 |
20500 |
20501 | MODIFICATION HISTORY
20502 | Date Author Description of Changes
20503 | 05-MAR-07 RRAVIKIR Created
20504 |
20505 *=======================================================================*/
20506 FUNCTION get_default_taxation_country(x_return_status OUT NOCOPY VARCHAR2,
20507 x_msg_count OUT NOCOPY NUMBER,
20508 x_msg_data OUT NOCOPY VARCHAR2,
20509 p_legal_entity_id IN NUMBER)
20510 RETURN VARCHAR2 IS
20511
20512 -- Local variables
20513 l_api_name CONSTANT VARCHAR2(30) := 'get_default_taxation_country';
20514 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
20515
20516 -- Local data structure
20517 lx_legal_entity_rec legal_entity_rec_type;
20518
20519 BEGIN
20520 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20521 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country','Begin(+)');
20522 END IF;
20523
20524 --Print Input Variables
20525 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20526 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country.',
20527 'p_legal_entity_id :'||p_legal_entity_id);
20528 END IF;
20529
20530 xle_utilities_grp.get_legalentity_info(x_return_status => l_return_status,
20531 x_msg_count => x_msg_count,
20532 x_msg_data => x_msg_data,
20533 p_party_id => null,
20534 p_legalentity_id => p_legal_entity_id,
20535 x_legalentity_info => lx_legal_entity_rec);
20536 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20537 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20538 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20539 RAISE OKL_API.G_EXCEPTION_ERROR;
20540 END IF;
20541
20542 x_return_status := l_return_status;
20543
20544 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20545 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ','End(-)');
20546 END IF;
20547
20548 RETURN lx_legal_entity_rec.country;
20549
20550 EXCEPTION
20551 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20552
20553 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20554 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20555 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20556 END IF;
20557
20558 x_return_status := OKL_API.G_RET_STS_ERROR;
20559
20560 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20561 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20562 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20563 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20564 END IF;
20565
20566 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
20567
20568 WHEN OTHERS THEN
20569
20570 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20571 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_default_taxation_country ',
20572 'EXCEPTION :'||sqlerrm);
20573 END IF;
20574
20575 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
20576 -- unexpected error
20577 OKL_API.set_message(p_app_name => g_app_name,
20578 p_msg_name => g_unexpected_error,
20579 p_token1 => g_sqlcode_token,
20580 p_token1_value => sqlcode,
20581 p_token2 => g_sqlerrm_token,
20582 p_token2_value => sqlerrm);
20583
20584 END get_default_taxation_country;
20585
20586 /*========================================================================
20587 | PUBLIC FUNCTION get_line_intended_use_name
20588 |
20589 | DESCRIPTION
20590 | This function derives the line intended use name basing on the code
20591 |
20592 | CALLED FROM Sales objects
20593 |
20594 |
20595 | CALLS PROCEDURES/FUNCTIONS
20596 |
20597 |
20598 | PARAMETERS
20599 | p_intend_use_code -- Intended use for tax code
20600 |
20601 | KNOWN ISSUES
20602 |
20603 | NOTES
20604 |
20605 |
20606 | MODIFICATION HISTORY
20607 | Date Author Description of Changes
20608 | 05-MAR-07 RRAVIKIR Created
20609 |
20610 *=======================================================================*/
20611 FUNCTION get_line_intended_use_name(p_intend_use_code IN VARCHAR2)
20612 RETURN VARCHAR2 IS
20613
20614 -- Local variables
20615 l_intend_use_name VARCHAR2(240);
20616
20617 -- Cursors
20618 CURSOR l_get_intend_use_name_csr IS
20619 SELECT classification_name
20620 FROM zx_fc_intended_use_v
20621 WHERE classification_code = p_intend_use_code;
20622 BEGIN
20623 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20624 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name','Begin(+)');
20625 END IF;
20626
20627 --Print Input Variables
20628 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20629 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name.',
20630 'p_intend_use_code :'||p_intend_use_code);
20631 END IF;
20632
20633 OPEN l_get_intend_use_name_csr;
20634 FETCH l_get_intend_use_name_csr INTO l_intend_use_name;
20635 CLOSE l_get_intend_use_name_csr;
20636
20637 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20638 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ','End(-)');
20639 END IF;
20640
20641 RETURN l_intend_use_name;
20642
20643 EXCEPTION
20644 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20645
20646 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20647 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20648 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20649 END IF;
20650
20651 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20652 CLOSE l_get_intend_use_name_csr;
20653 END IF;
20654
20655 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20656 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20657 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20658 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20659 END IF;
20660
20661 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20662 CLOSE l_get_intend_use_name_csr;
20663 END IF;
20664
20665 WHEN OTHERS THEN
20666
20667 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20668 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.get_line_intended_use_name ',
20669 'EXCEPTION :'||sqlerrm);
20670 END IF;
20671
20672 IF (l_get_intend_use_name_csr%ISOPEN) THEN
20673 CLOSE l_get_intend_use_name_csr;
20674 END IF;
20675
20676 END get_line_intended_use_name;
20677
20678 /*========================================================================
20679 | PUBLIC PROCEDURE cancel_document_tax
20680 |
20681 | DESCRIPTION
20682 | This procedure is called by 'Pre-Rebook' and 'Rebook' processes to cancel
20683 | the tax
20684 |
20685 | CALLED FROM OLM Rebook Module
20686 |
20687 |
20688 | CALLS PROCEDURES/FUNCTIONS
20689 |
20690 |
20691 | PARAMETERS
20692 | p_source_trx_id -- OKL_TRX_CONTRACTS.ID (ID of Pre-Rebook or Rebook transaction)
20693 | p_source_trx_name -- Pre-Rebook (used for upgrade) or Rebook
20694 | p_source_table -- OKL_TRX_CONTRACTS
20695 |
20696 | KNOWN ISSUES
20697 |
20698 | NOTES
20699 |
20700 |
20701 | MODIFICATION HISTORY
20702 | Date Author Description of Changes
20703 | 01-MAR-07 RRAVIKIR Created
20704 |
20705 *=======================================================================*/
20706 PROCEDURE cancel_document_tax (
20707 p_api_version IN NUMBER,
20708 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
20709 x_return_status OUT NOCOPY VARCHAR2,
20710 x_msg_count OUT NOCOPY NUMBER,
20711 x_msg_data OUT NOCOPY VARCHAR2,
20712 p_source_trx_id IN NUMBER,
20713 p_source_trx_name IN VARCHAR2,
20714 p_source_table IN VARCHAR2) IS
20715
20716 -- Local variables
20717 l_api_version CONSTANT NUMBER := 1;
20718 l_api_name CONSTANT VARCHAR2(30) := 'cancel_document_tax';
20719 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
20720
20721 l_internal_org_id NUMBER;
20722 l_application_id NUMBER;
20723 l_entity_code VARCHAR2(30);
20724 l_event_class_code VARCHAR2(30);
20725 i NUMBER;
20726
20727 -- Local record structure
20728 l_txsv_tbl txsv_tbl_type;
20729 lx_txsv_tbl txsv_tbl_type;
20730 l_transaction_rec transaction_rec_type;
20731
20732 -- Cursor
20733 -- This cursor wll pick all the tax sources coresponding to the Rebook validate transaction
20734 -- Rebook can be abandoned only prior to Rebook activation. Hence tax sources
20735 -- picked by this cursor will --be the ones created at the time of validation
20736 CURSOR l_taxsources_csr(cp_trx_id IN NUMBER) IS
20737 SELECT id, org_id, application_id, entity_code, event_class_code
20738 FROM okl_tax_sources
20739 WHERE trx_id = cp_trx_id
20740 AND application_id = G_OKL_APPLICATION_ID
20741 AND TAX_CALL_TYPE_CODE = G_UPFRONT_TAX
20742 AND TAX_LINE_STATUS_CODE = G_ACTIVE_STATUS;
20743
20744 CURSOR l_taxsources_prbk_csr(cp_trx_id IN NUMBER) IS
20745 SELECT id, org_id, entity_code, event_class_code
20746 FROM okl_tax_sources
20747 WHERE trx_id = cp_trx_id
20748 AND TAX_CALL_TYPE_CODE = G_UPFRONT_TAX
20749 AND TAX_LINE_STATUS_CODE = G_ACTIVE_STATUS;
20750
20751 CURSOR l_trxcontracts_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
20752 SELECT '1'
20753 FROM okl_trx_contracts a , okl_trx_types_tl b
20754 WHERE a.id = cp_trx_id
20755 AND a.try_id = b.id
20756 AND b.name = cp_trx_type_name
20757 AND language = 'US';
20758
20759 CURSOR l_trxcontracts_base_csr(cp_trx_id IN NUMBER, cp_trx_type_name IN VARCHAR2) IS
20760 SELECT '1'
20761 FROM okl_trx_contracts_all a , okl_trx_types_tl b
20762 WHERE a.id = cp_trx_id
20763 AND a.try_id = b.id
20764 AND b.name = cp_trx_type_name
20765 AND language = 'US';
20766
20767 BEGIN
20768 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20769 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax','Begin(+)');
20770 END IF;
20771
20772 --Print Input Variables
20773 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20774 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20775 'p_init_msg_list :'||p_init_msg_list);
20776 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20777 'p_source_trx_id :'||p_source_trx_id);
20778 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20779 'p_source_trx_name :'||p_source_trx_name);
20780 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20781 'p_source_table :'||p_source_table);
20782 END IF;
20783
20784 --Check API version, initialize message list and create savepoint.
20785 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
20786 G_PKG_NAME,
20787 p_init_msg_list,
20788 l_api_version,
20789 p_api_version,
20790 '_PVT',
20791 x_return_status);
20792
20793 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20794 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20795 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20796 RAISE OKL_API.G_EXCEPTION_ERROR;
20797 END IF;
20798
20799 -- Required Values
20800 IF p_source_trx_id IS NULL THEN
20801 OKL_API.set_message( p_msg_name => G_REQUIRED_VALUE,
20802 p_token1 => G_COL_NAME_TOKEN,
20803 p_token1_value => 'SOURCE_TRX_ID');
20804 RAISE OKL_API.G_EXCEPTION_ERROR;
20805 END IF;
20806
20807 -- validate the source trx id
20808 IF (p_source_trx_name = 'Pre-Rebook') THEN
20809 OPEN l_trxcontracts_base_csr(p_source_trx_id, p_source_trx_name);
20810 IF l_trxcontracts_base_csr%NOTFOUND THEN
20811 -- source trx id is invalid
20812 OKC_API.set_message( p_app_name => 'OKC',
20813 p_msg_name => G_INVALID_VALUE,
20814 p_token1 => G_COL_NAME_TOKEN,
20815 p_token1_value => 'SOURCE_TRX_ID');
20816 RAISE OKL_API.G_EXCEPTION_ERROR;
20817 END IF;
20818 CLOSE l_trxcontracts_base_csr;
20819 ELSIF (p_source_trx_name = 'Rebook') THEN
20820 OPEN l_trxcontracts_csr(p_source_trx_id, p_source_trx_name);
20821 IF l_trxcontracts_csr%NOTFOUND THEN
20822 -- source trx id is invalid
20823 OKC_API.set_message( p_app_name => 'OKC',
20824 p_msg_name => G_INVALID_VALUE,
20825 p_token1 => G_COL_NAME_TOKEN,
20826 p_token1_value => 'SOURCE_TRX_ID');
20827 RAISE OKL_API.G_EXCEPTION_ERROR;
20828 END IF;
20829 CLOSE l_trxcontracts_csr;
20830 END IF;
20831
20832 IF (p_source_trx_name IN ('Pre-Rebook','Rebook')) THEN -- Main condition
20833 -- 'Pre-Rebook' condition is called as part of upgrade, to cancel pending
20834 -- rebook transactions cancel tax lines in OKL schema
20835
20836 -- 'Rebook' condition is called after the upgrade to cancel tax lines,
20837 -- when a rebook is abandoned cancel tax lines in OKL and ebTax schema
20838 -- Rebook validation tax call would have been made using transaction type
20839 -- 'Rebook' and event class 'BOOKING'
20840
20841 i := 1;
20842 IF (p_source_trx_name = 'Pre-Rebook') THEN
20843
20844 FOR l_taxsources_prbk_rec in l_taxsources_prbk_csr(cp_trx_id => p_source_trx_id) LOOP
20845
20846 UPDATE okl_tax_sources SET tax_line_status_code = G_CANCELLED_STATUS
20847 WHERE id = l_taxsources_prbk_rec.id;
20848
20849 END LOOP;
20850
20851 ELSIF (p_source_trx_name = 'Rebook') THEN
20852
20853 FOR l_taxsources_rec in l_taxsources_csr(cp_trx_id => p_source_trx_id) LOOP
20854
20855 l_txsv_tbl(i).id := l_taxsources_rec.id;
20856 l_txsv_tbl(i).tax_line_status_code := G_CANCELLED_STATUS;
20857
20858 IF (i = 1) THEN
20859 l_internal_org_id := l_taxsources_rec.org_id;
20860 l_application_id := l_taxsources_rec.application_id;
20861 l_entity_code := l_taxsources_rec.entity_code;
20862 l_event_class_code := l_taxsources_rec.event_class_code;
20863 END IF;
20864
20865 i := i + 1;
20866
20867 END LOOP;
20868
20869 END IF;
20870
20871 IF (i > 1 AND p_source_trx_name = 'Rebook') THEN -- Update Tax Sources
20872
20873 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20874 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20875 'Calling OKL_TAX_SOURCES_PUB.update_tax_sources ');
20876 END IF;
20877
20878 OKL_TAX_SOURCES_PUB.update_tax_sources(p_api_version => p_api_version
20879 ,p_init_msg_list => p_init_msg_list
20880 ,x_return_status => l_return_status
20881 ,x_msg_count => x_msg_count
20882 ,x_msg_data => x_msg_data
20883 ,p_txsv_tbl => l_txsv_tbl
20884 ,x_txsv_tbl => lx_txsv_tbl);
20885
20886 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20887 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20888 'Return Status' || l_return_status);
20889 END IF;
20890
20891 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20892 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20893 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20894 RAISE OKL_API.G_EXCEPTION_ERROR;
20895 END IF;
20896
20897 -- 'Rebook' specific condition to cancel tax lines in ebTax schema
20898 l_transaction_rec.internal_organization_id := l_internal_org_id;
20899 l_transaction_rec.application_id := l_application_id;
20900 l_transaction_rec.entity_code := l_entity_code;
20901 l_transaction_rec.event_class_code := l_event_class_code;
20902 l_transaction_rec.event_type_code := G_BOOKING_CANCEL;
20903 l_transaction_rec.trx_id := p_source_trx_id;
20904
20905 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20906 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20907 'Calling OKL_TAX_INTERFACE_PVT.cancel_document_tax ');
20908 END IF;
20909
20910 OKL_TAX_INTERFACE_PVT.update_document(p_api_version => p_api_version,
20911 p_init_msg_list => p_init_msg_list,
20912 x_return_status => l_return_status,
20913 x_msg_count => x_msg_count,
20914 x_msg_data => x_msg_data,
20915 p_transaction_rec => l_transaction_rec);
20916
20917 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20918 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax.',
20919 'Return Status' || l_return_status);
20920 END IF;
20921
20922 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20923 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20924 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
20925 RAISE OKL_API.G_EXCEPTION_ERROR;
20926 END IF;
20927
20928 END IF; -- Update Tax Sources
20929
20930 END IF; -- Main condition
20931
20932 x_return_status := l_return_status;
20933
20934 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20935 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ','End(-)');
20936 END IF;
20937
20938 -- end the transaction
20939 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
20940 EXCEPTION
20941 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20942
20943 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20944 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
20945 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
20946 END IF;
20947
20948 IF (l_taxsources_csr%ISOPEN) THEN
20949 CLOSE l_taxsources_csr;
20950 END IF;
20951
20952 IF (l_trxcontracts_csr%ISOPEN) THEN
20953 CLOSE l_trxcontracts_csr;
20954 END IF;
20955
20956 IF (l_trxcontracts_base_csr%ISOPEN) THEN
20957 CLOSE l_trxcontracts_base_csr;
20958 END IF;
20959
20960 IF (l_taxsources_prbk_csr%ISOPEN) THEN
20961 CLOSE l_taxsources_prbk_csr;
20962 END IF;
20963
20964 x_return_status := OKL_API.HANDLE_EXCEPTIONS
20965 ( l_api_name,
20966 G_PKG_NAME,
20967 'OKL_API.G_RET_STS_ERROR',
20968 x_msg_count,
20969 x_msg_data,
20970 '_PVT');
20971 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20972
20973 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
20974 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
20975 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
20976 END IF;
20977
20978 IF (l_taxsources_csr%ISOPEN) THEN
20979 CLOSE l_taxsources_csr;
20980 END IF;
20981
20982 IF (l_trxcontracts_csr%ISOPEN) THEN
20983 CLOSE l_trxcontracts_csr;
20984 END IF;
20985
20986 IF (l_trxcontracts_base_csr%ISOPEN) THEN
20987 CLOSE l_trxcontracts_base_csr;
20988 END IF;
20989
20990 IF (l_taxsources_prbk_csr%ISOPEN) THEN
20991 CLOSE l_taxsources_prbk_csr;
20992 END IF;
20993
20994 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
20995 ( l_api_name,
20996 G_PKG_NAME,
20997 'OKL_API.G_RET_STS_UNEXP_ERROR',
20998 x_msg_count,
20999 x_msg_data,
21000 '_PVT');
21001 WHEN OTHERS THEN
21002
21003 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21004 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.cancel_document_tax ',
21005 'EXCEPTION :'||sqlerrm);
21006 END IF;
21007
21008 IF (l_taxsources_csr%ISOPEN) THEN
21009 CLOSE l_taxsources_csr;
21010 END IF;
21011
21012 IF (l_trxcontracts_csr%ISOPEN) THEN
21013 CLOSE l_trxcontracts_csr;
21014 END IF;
21015
21016 IF (l_trxcontracts_base_csr%ISOPEN) THEN
21017 CLOSE l_trxcontracts_base_csr;
21018 END IF;
21019
21020 IF (l_taxsources_prbk_csr%ISOPEN) THEN
21021 CLOSE l_taxsources_prbk_csr;
21022 END IF;
21023
21024 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21025 ( l_api_name,
21026 G_PKG_NAME,
21027 'OTHERS',
21028 x_msg_count,
21029 x_msg_data,
21030 '_PVT');
21031 END cancel_document_tax;
21032
21033 /*========================================================================
21034 | PUBLIC PROCEDURE copy_global_tax_data
21035 |
21036 | DESCRIPTION
21037 | This procedure is called by tax module to populate tax data into ZX global
21038 | session table. eBtax uses this table to show the tax data for Quote
21039 | objects (Sales Quote, Lease Application and Termination Quote)
21040 |
21041 | CALLED FROM OLM Tax Module
21042 |
21043 |
21044 | CALLS PROCEDURES/FUNCTIONS
21045 | OKL_TAX_INTERFACE_PVT.copy_global_tax_data
21046 |
21047 | PARAMETERS
21048 | p_trx_id -- Transaction Identifier
21049 | p_trx_line_id -- Transaction Line Identifier
21050 | p_application_id -- Application Identifier
21051 | p_trx_level_type -- Transaction level type
21052 | p_entity_code -- Entity code
21053 | p_event_class_code -- Event class code
21054 |
21055 | KNOWN ISSUES
21056 |
21057 | NOTES
21058 |
21059 |
21060 | MODIFICATION HISTORY
21061 | Date Author Description of Changes
21062 | 04-APR-07 RRAVIKIR Created
21063 |
21064 *=======================================================================*/
21065 PROCEDURE copy_global_tax_data (
21066 p_api_version IN NUMBER,
21067 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
21068 x_return_status OUT NOCOPY VARCHAR2,
21069 x_msg_count OUT NOCOPY NUMBER,
21070 x_msg_data OUT NOCOPY VARCHAR2,
21071 p_trx_id IN NUMBER,
21072 p_trx_line_id IN NUMBER,
21073 p_application_id IN NUMBER,
21074 p_trx_level_type IN VARCHAR2,
21075 p_entity_code IN VARCHAR2,
21076 p_event_class_code IN VARCHAR2) IS
21077
21078 -- Local variables
21079 l_api_version CONSTANT NUMBER := 1;
21080 l_api_name CONSTANT VARCHAR2(30) := 'copy_global_tax_data';
21081 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
21082
21083 BEGIN
21084 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21085 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data','Begin(+)');
21086 END IF;
21087
21088 --Print Input Variables
21089 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21090 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21091 'p_init_msg_list :'||p_init_msg_list);
21092 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21093 'p_trx_id :'||p_trx_id);
21094 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21095 'p_trx_line_id :'||p_trx_line_id);
21096 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21097 'p_application_id :'||p_application_id);
21098 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21099 'p_trx_level_type :'||p_trx_level_type);
21100 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21101 'p_entity_code :'||p_entity_code);
21102 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21103 'p_event_class_code :'||p_event_class_code);
21104 END IF;
21105
21106 --Check API version, initialize message list and create savepoint.
21107 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
21108 G_PKG_NAME,
21109 p_init_msg_list,
21110 l_api_version,
21111 p_api_version,
21112 '_PVT',
21113 x_return_status);
21114
21115 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21116 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21117 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21118 RAISE OKL_API.G_EXCEPTION_ERROR;
21119 END IF;
21120
21121 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21122 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21123 'Calling OKL_TAX_INTERFACE_PVT.copy_global_tax_data');
21124 END IF;
21125
21126 OKL_TAX_INTERFACE_PVT.copy_global_tax_data(p_api_version => p_api_version,
21127 p_init_msg_list => p_init_msg_list,
21128 x_return_status => l_return_status,
21129 x_msg_count => x_msg_count,
21130 x_msg_data => x_msg_data,
21131 p_trx_id => p_trx_id,
21132 p_trx_line_id => p_trx_line_id,
21133 p_application_id => p_application_id,
21134 p_trx_level_type => p_trx_level_type,
21135 p_entity_code => p_entity_code,
21136 p_event_class_code => p_event_class_code);
21137
21138 IF (G_DEBUG_LEVEL_STATEMENT >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21139 FND_LOG.STRING(G_DEBUG_LEVEL_STATEMENT,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data.',
21140 'After calling OKL_TAX_INTERFACE_PVT.copy_global_tax_data - Return Status ' || l_return_status);
21141 END IF;
21142
21143 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
21144 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
21145 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
21146 RAISE OKL_API.G_EXCEPTION_ERROR;
21147 END IF;
21148
21149 x_return_status := l_return_status;
21150
21151 IF (G_DEBUG_LEVEL_PROCEDURE >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21152 FND_LOG.STRING(G_DEBUG_LEVEL_PROCEDURE,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ','End(-)');
21153 END IF;
21154
21155 -- end the transaction
21156 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
21157 EXCEPTION
21158 WHEN OKL_API.G_EXCEPTION_ERROR THEN
21159
21160 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21161 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ',
21162 'EXCEPTION :'||'OKL_API.G_EXCEPTION_ERROR');
21163 END IF;
21164
21165 x_return_status := OKL_API.HANDLE_EXCEPTIONS
21166 (
21167 l_api_name,
21168 G_PKG_NAME,
21169 'OKL_API.G_RET_STS_ERROR',
21170 x_msg_count,
21171 x_msg_data,
21172 '_PVT'
21173 );
21174 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
21175 IF (G_DEBUG_LEVEL_EXCEPTION >= G_DEBUG_CURRENT_RUNTIME_LEVEL) THEN
21176 FND_LOG.STRING(G_DEBUG_LEVEL_EXCEPTION,'OKL_PROCESS_SALES_TAX_PVT.copy_global_tax_data ',
21177 'EXCEPTION :'||'OKL_API.G_EXCEPTION_UNEXPECTED_ERROR');
21178 END IF;
21179
21180 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21181 (
21182 l_api_name,
21183 G_PKG_NAME,
21184 'OKL_API.G_RET_STS_UNEXP_ERROR',
21185 x_msg_count,
21186 x_msg_data,
21187 '_PVT'
21188 );
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.copy_global_tax_data ',
21193 'EXCEPTION :'||sqlerrm);
21194 END IF;
21195
21196 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
21197 (
21198 l_api_name,
21199 G_PKG_NAME,
21200 'OTHERS',
21201 x_msg_count,
21202 x_msg_data,
21203 '_PVT'
21204 );
21205 END copy_global_tax_data;
21206
21207 END OKL_PROCESS_SALES_TAX_PVT;