[Home] [Help]
PACKAGE BODY: APPS.OKL_INSURANCE_POLICIES_PVT
Source
1 PACKAGE BODY OKL_INSURANCE_POLICIES_PVT AS
2 /* $Header: OKLRIPXB.pls 120.52.12020000.2 2012/08/07 11:47:09 bkatraga ship $ */
3
4
5 -- Start of wraper code generated automatically by Debug code generator
6 L_MODULE VARCHAR2(40) := 'LEASE.INSURANCE';
7 L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
8 L_LEVEL_PROCEDURE NUMBER;
9 IS_DEBUG_PROCEDURE_ON BOOLEAN;
10 -- End of wraper code generated automatically by Debug code generator
11 --------------------------------------------------------
12 -- Procedures and Functions
13 ---------------------------------------------------------------------------
14
15
16 ---------------------------------------------------------------------------
17 -- Start of comments
18 --
19 -- Function Name : ON_ACCOUNT_CREDIT_MEMO
20 -- Description :It creates on account credit memo in the BPD's internal
21 -- Transaction Tables.
22 -- Business Rules :
23 -- Parameters :
24 -- Version : 1.0
25 -- End of Comments
26 ---------------------------------------------------------------------------
27
28 -- gboomina Bug 4622198 - Added to get codes for Investor Special Accounting treatment - Start
29
30 PROCEDURE get_special_acct_codes(
31 p_khr_id IN NUMBER,
32 p_trx_date IN DATE,
33 x_fact_sync_code OUT NOCOPY VARCHAR2,
34 x_inv_acct_code OUT NOCOPY VARCHAR2
35 )
36 IS
37
38 l_init_msg_list VARCHAR2(1) := Okc_Api.g_false;
39 l_return_status VARCHAR2(1);
40 l_msg_count NUMBER;
41 l_msg_data VARCHAR2(2000);
42 l_scs_code VARCHAR2(2000);
43
44 -- cursor to get scs_code
45 CURSOR scs_code_csr IS
46 SELECT scs_code
47 FROM OKL_K_HEADERS_FULL_V
48 WHERE id = p_khr_id;
49
50 BEGIN
51 -- get scs_code
52 FOR x IN scs_code_csr
53 LOOP
54 l_scs_code := x.scs_code;
55 END LOOP;
56
57 IF l_scs_code IS NULL THEN
58 OKL_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'SCS_CODE');
59 RAISE OKL_API.G_EXCEPTION_ERROR;
60 END IF;
61
62 OKL_SECURITIZATION_PVT.check_khr_ia_associated(
63 p_api_version => 1.0
64 ,p_init_msg_list => l_init_msg_list
65 ,x_return_status => l_return_status
66 ,x_msg_count => l_msg_count
67 ,x_msg_data => l_msg_data
68 ,p_khr_id => p_khr_id
69 ,p_scs_code => l_scs_code
70 ,p_trx_date => p_trx_date
71 ,x_fact_synd_code => x_fact_sync_code
72 ,x_inv_acct_code => x_inv_acct_code
73 );
74
75 -- store the highest degree of error
76 IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
77 IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
78 -- need to leave
79 Okl_Api.set_message(p_app_name => g_app_name,
80 p_msg_name => 'OKL_ACC_SEC_PVT_ERROR');
81 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
82 ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
83 Okl_Api.set_message(p_app_name => g_app_name,
84 p_msg_name => 'OKL_ACC_SEC_PVT_ERROR');
85 RAISE OKL_API.G_EXCEPTION_ERROR;
86 END IF;
87 END IF;
88
89 END get_special_acct_codes;
90
91 -- gboomina Bug 4622198 - Added to get codes for Investor Special Accounting treatment - End
92
93
94 --Added for bug 3976894
95
96 PROCEDURE on_account_credit_memo
97 (
98 p_api_version IN NUMBER,
99 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
100 p_try_id IN NUMBER,
101 p_khr_id IN NUMBER,
102 p_kle_id IN NUMBER,
103 p_ipy_id IN NUMBER,
104 p_credit_date IN DATE,
105 p_credit_amount IN NUMBER,
106 p_credit_sty_id IN NUMBER,
107 x_return_status OUT NOCOPY VARCHAR2,
108 x_msg_count OUT NOCOPY NUMBER,
109 x_msg_data OUT NOCOPY VARCHAR2,
110 x_tai_id OUT NOCOPY NUMBER
111
112 )IS
113
114
115 l_api_name CONSTANT VARCHAR2(30) := 'on_account_credit_memo';
116
117 l_api_version CONSTANT NUMBER := 1;
118 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
119
120
121 /*
122 l_bpd_acc_rec OKL_INSURANCE_POLICIES_PVT.bpd_acc_rec_type ;
123 l_taiv_rec OKL_INSURANCE_POLICIES_PVT.taiv_rec_type ;
124 lx_taiv_rec OKL_INSURANCE_POLICIES_PVT.taiv_rec_type ;
125 l_tilv_rec OKL_INSURANCE_POLICIES_PVT.tilv_rec_type ;
126 lx_tilv_rec OKL_INSURANCE_POLICIES_PVT.tilv_rec_type;
127 */
128
129 -- Bug 5897792 Start
130 lp_taiv_rec okl_tai_pvt.taiv_rec_type;
131 lp_tilv_rec okl_til_pvt.tilv_rec_type;
132 lp_tilv_tbl okl_til_pvt.tilv_tbl_type;
133 lp_tldv_tbl okl_tld_pvt.tldv_tbl_type;
134 lx_taiv_rec okl_tai_pvt.taiv_rec_type;
135 lx_tilv_tbl okl_til_pvt.tilv_tbl_type;
136 lx_tldv_tbl okl_tld_pvt.tldv_tbl_type;
137 -- Bug 5897792 End
138
139
140 BEGIN
141
142 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
143 G_PKG_NAME,
144 p_init_msg_list,
145 l_api_version,
146 p_api_version,
147 '_PROCESS',
148 x_return_status);
149
150
151
152
153 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
154 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
155 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
156 RAISE OKC_API.G_EXCEPTION_ERROR;
157 END IF;
158
159
160 -- Bug 5897792 Start
161 /*
162 ---- Create Header Record
163
164 l_taiv_rec.khr_id := p_khr_id;
165 l_taiv_rec.try_id := p_try_id;
166 l_taiv_rec.ipy_id := p_ipy_id ;
167 l_taiv_rec.date_invoiced := NVL(p_credit_date,trunc(sysdate));
168 l_taiv_rec.date_entered := trunc(sysdate) ;
169 l_taiv_rec.amount := p_credit_amount;
170 l_taiv_rec.trx_status_code := 'SUBMITTED';
171 l_taiv_rec.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => p_khr_id);
172
173
174 -- Start of Debug code generator for okl_acc_call_pub.create_acc_trans
175 IF(L_DEBUG_ENABLED='Y') THEN
176 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
177 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
178 END IF;
179
180 IF(IS_DEBUG_PROCEDURE_ON) THEN
181 BEGIN
182 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_trx_ar_invoices_pub.insert_trx_ar_invoices ');
183 END;
184 END IF;
185
186 okl_trx_ar_invoices_pub.insert_trx_ar_invoices(p_api_version,
187 p_init_msg_list,
188 l_return_status,
189 x_msg_count,
190 x_msg_data,
191 l_taiv_rec,
192 lx_taiv_rec);
193 IF(IS_DEBUG_PROCEDURE_ON) THEN
194 BEGIN
195 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_trx_ar_invoices_pub.insert_trx_ar_invoices ');
196 END;
197 END IF;
198
199 IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
200 x_return_status := l_return_status;
201 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
202 ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
203 x_return_status := l_return_status;
204 RAISE OKL_API.G_EXCEPTION_ERROR;
205 END IF;
206
207
208
209
210 x_tai_id := lx_taiv_rec.id;
211 ----------------------------------------------------
212 --- Create Line Record
213 -------------------------------------------------------
214
215 l_tilv_rec.amount := p_credit_amount;
216 l_tilv_rec.kle_id := p_kle_id;
217 l_tilv_rec.line_number := 1;
218 l_tilv_rec.tai_id := x_tai_id;
219 l_tilv_rec.description := 'OKL Credit Memo';
220 l_tilv_rec.inv_receiv_line_code := 'LINE';
221 l_tilv_rec.sty_id := p_credit_sty_id;
222
223
224 -- Start of Debug code generator for okl_acc_call_pub.create_acc_trans
225 IF(L_DEBUG_ENABLED='Y') THEN
226 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
227 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
228 END IF;
229
230 IF(IS_DEBUG_PROCEDURE_ON) THEN
231 BEGIN
232 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_txl_ar_inv_lns_pub.insert_txl_ar_inv_lns ');
233 END;
234 END IF;
235
236
237
238 okl_txl_ar_inv_lns_pub.insert_txl_ar_inv_lns(p_api_version,
239 p_init_msg_list,
240 l_return_status,
241 x_msg_count,
242 x_msg_data,
243 l_tilv_rec,
244 lx_tilv_rec);
245
246 IF(IS_DEBUG_PROCEDURE_ON) THEN
247 BEGIN
248 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_txl_ar_inv_lns_pub.insert_txl_ar_inv_lns ');
249 END;
250 END IF;
251
252 IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
253 x_return_status := l_return_status;
254 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
255 ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
256 x_return_status := l_return_status;
257 RAISE OKL_API.G_EXCEPTION_ERROR;
258 END IF;
259
260
261
262
263 ----------------------------------------------------
264 --- Create Accounting entries
265 ----------------------------------------------------
266
267
268 l_bpd_acc_rec.id := lx_tilv_rec.id;
269 l_bpd_acc_rec.source_table := 'OKL_TXL_AR_INV_LNS_B';
270
271
272 -- Start of Debug code generator for okl_acc_call_pub.create_acc_trans
273 IF(L_DEBUG_ENABLED='Y') THEN
274 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
275 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
276 END IF;
277
278 IF(IS_DEBUG_PROCEDURE_ON) THEN
279 BEGIN
280 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_acc_call_pub.create_acc_trans ');
281 END;
282 END IF;
283
284 OKL_ACC_CALL_PUB.CREATE_ACC_TRANS(
285 p_api_version => p_api_version
286 ,p_init_msg_list => p_init_msg_list
287 ,x_return_status => l_return_status
288 ,x_msg_count => x_msg_count
289 ,x_msg_data => x_msg_data
290 ,p_bpd_acc_rec => l_bpd_acc_rec);
291
292 IF(IS_DEBUG_PROCEDURE_ON) THEN
293 BEGIN
294 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_acc_call_pub.create_acc_trans ');
295 END;
296 END IF;
297 -- End of Debug for okl_acc_call_pub.create_acc_trans
298 IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
299 x_return_status := l_return_status;
300 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
301 ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
302 x_return_status := l_return_status;
303 RAISE OKL_API.G_EXCEPTION_ERROR;
304 END IF;
305
306 */ -- 5897792 End
307
308 -- 5897792 Start Replace by central billing txn API call
309 ---- Create Header Record
310
311 lp_taiv_rec.khr_id := p_khr_id;
312 lp_taiv_rec.try_id := p_try_id;
313 lp_taiv_rec.ipy_id := p_ipy_id ;
314 lp_taiv_rec.date_invoiced := NVL(p_credit_date,trunc(sysdate));
315 lp_taiv_rec.date_entered := trunc(sysdate) ;
316 lp_taiv_rec.amount := p_credit_amount;
317 lp_taiv_rec.trx_status_code := 'SUBMITTED';
318 lp_taiv_rec.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => p_khr_id);
319 lp_taiv_rec.okl_source_billing_trx := 'INSURANCE';
320
321 --- Create Line Record
322
323 lp_tilv_rec.amount := p_credit_amount;
324 lp_tilv_rec.kle_id := p_kle_id;
325 lp_tilv_rec.line_number := 1;
326 lp_tilv_rec.tai_id := x_tai_id;
327 lp_tilv_rec.description := 'OKL Credit Memo';
328 lp_tilv_rec.inv_receiv_line_code := 'LINE';
329 lp_tilv_rec.sty_id := p_credit_sty_id;
330
331 lp_tilv_tbl(1) := lp_tilv_rec;
332
333 okl_internal_billing_pvt.create_billing_trx(
334 p_api_version =>l_api_version,
335 p_init_msg_list =>p_init_msg_list,
336 x_return_status => x_return_status,
337 x_msg_count => x_msg_count,
338 x_msg_data => x_msg_data,
339 p_taiv_rec => lp_taiv_rec,
340 p_tilv_tbl => lp_tilv_tbl,
341 p_tldv_tbl => lp_tldv_tbl,
342 x_taiv_rec => lx_taiv_rec,
343 x_tilv_tbl => lx_tilv_tbl,
344 x_tldv_tbl => lx_tldv_tbl);
345
346 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
347 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
348 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
349 RAISE OKL_API.G_EXCEPTION_ERROR;
350 END IF;
351
352 -- 5897792 Start End
353
354 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
355
356 EXCEPTION
357 WHEN OKC_API.G_EXCEPTION_ERROR THEN
358 x_return_status := OKC_API.HANDLE_EXCEPTIONS
359 (
360 l_api_name,
361 G_PKG_NAME,
362 'OKC_API.G_RET_STS_ERROR',
363 x_msg_count,
364 x_msg_data,
365 '_PROCESS'
366 );
367 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
368 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
369 (
370 l_api_name,
371 G_PKG_NAME,
372 'OKC_API.G_RET_STS_UNEXP_ERROR',
373 x_msg_count,
374 x_msg_data,
375 '_PROCESS'
376 );
377 WHEN OTHERS THEN
378 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
379 (
380 l_api_name,
381 G_PKG_NAME,
382 'OTHERS',
383 x_msg_count,
384 x_msg_data,
385 '_PROCESS'
386 );
387
388 END ON_ACCOUNT_CREDIT_MEMO;
389
390
391
392 ---------------------------------------------------------------------------
393 -- Start of comments
394 --
395 -- Function Name : get_contract_status
396 -- Description :It get Contract status based on contract id.
397 -- Business Rules :
398 -- Parameters :
399 -- Version : 1.0
400 -- End of Comments
401 ---------------------------------------------------------------------------
402 FUNCTION get_contract_status (
403 p_khr_id IN NUMBER,
404 x_contract_status OUT NOCOPY VARCHAR2
405 ) RETURN VARCHAR2 IS
406 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
407 CURSOR okc_k_status_csr(p_khr_id IN NUMBER) IS
408 SELECT STE_CODE
409 FROM OKC_K_HEADERS_V KHR , OKC_STATUSES_B OST
410 WHERE KHR.ID = p_khr_id
411 AND KHR.STS_CODE = OST.CODE ;
412
413 BEGIN
414 OPEN okc_k_status_csr(p_khr_id);
415 FETCH okc_k_status_csr INTO x_contract_status ;
416 IF(okc_k_status_csr%NOTFOUND) THEN
417 -- store SQL error message on message stack for caller
418 OKL_API.set_message(G_APP_NAME,
419 G_INVALID_CONTRACT
420 );
421 CLOSE okc_k_status_csr ;
422 l_return_status := OKC_API.G_RET_STS_ERROR;
423 -- Change it to
424 RETURN(l_return_status);
425 END IF;
426 CLOSE okc_k_status_csr ;
427 RETURN(l_return_status);
428 EXCEPTION
429 WHEN OTHERS THEN
430 -- store SQL error message on message stack for caller
431 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
432 -- notify caller of an UNEXPECTED error
433 l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
434 -- verify that cursor was closed
435 IF okc_k_status_csr%ISOPEN THEN
436 CLOSE okc_k_status_csr;
437 END IF;
438 RETURN(l_return_status);
439 END get_contract_status;
440
441 -----------------------------------------------------
442
443 PROCEDURE insert_ap_request(
444 p_api_version IN NUMBER,
445 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
446 x_return_status OUT NOCOPY VARCHAR2,
447 x_msg_count OUT NOCOPY NUMBER,
448 x_msg_data OUT NOCOPY VARCHAR2,
449 p_tap_id IN NUMBER,
450 p_credit_amount IN NUMBER,
451 p_credit_sty_id IN NUMBER,
452 p_khr_id IN NUMBER ,
453 p_kle_id IN NUMBER,
454 p_invoice_date IN DATE,
455 p_trx_id IN NUMBER,
456 p_vendor_site_id IN NUMBER ,
457 x_request_id OUT NOCOPY NUMBER
458 ) IS
459
460 l_tplv_rec okl_tpl_pvt.tplv_rec_type ;
461 l_tapv_rec okl_tap_pvt.tapv_rec_type ;
462
463 x_tplv_rec okl_tpl_pvt.tplv_rec_type ;
464 x_tapv_rec okl_tap_pvt.tapv_rec_type ;
465
466 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start Changes */
467 l_tplv_tbl okl_tpl_pvt.tplv_tbl_type ;
468 x_tplv_tbl okl_tpl_pvt.tplv_tbl_type ;
469 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End Changes */
470
471 CURSOR c_trx_type (cp_name VARCHAR2, cp_language VARCHAR2) IS
472 SELECT id
473 FROM okl_trx_types_tl
474 WHERE name = cp_name
475 AND language = cp_language;
476
477 CURSOR c_tap_info (P_TAP_ID NUMBER) IS
478 SELECT
479 CURRENCY_CODE,
480 SET_OF_BOOKS_ID
481 FROM OKL_TRX_AP_INVOICES_B
482 WHERE ID = P_TAP_ID ;
483
484 CURSOR C_CURRENCY (P_khr_ID NUMBER) IS
485 SELECT CURRENCY_CODE --Bug:3825159
486 FROM OKC_K_HEADERS_B
487 WHERE ID = P_khr_ID ;
488
489
490 l_ctxt_val_tbl Okl_Account_Dist_Pub.CTXT_VAL_TBL_TYPE;
491 l_acc_gen_primary_key_tbl Okl_Account_Dist_Pub.acc_gen_primary_key;
492 l_template_tbl Okl_Account_Dist_Pub.AVLV_TBL_TYPE;
493 l_amount_tbl Okl_Account_Dist_Pub.AMOUNT_TBL_TYPE;
494
495
496 CURSOR c_app_info IS
497 SELECT APPLICATION_ID
498 FROM FND_APPLICATION
499 WHERE APPLICATION_SHORT_NAME = 'OKL' ;
500
501 ------
502
503 l_api_name CONSTANT VARCHAR2(30) := 'insert_ap_request';
504
505 l_api_version CONSTANT NUMBER := 1;
506 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
507 l_trx_type_ID okl_trx_types_v.id%TYPE;
508
509 p_name VARCHAR2(30) := 'BILLING' ;
510 -- Need to change code for hard coded value
511 p_language VARCHAR2(2) := 'US' ;
512 l_sql NUMBER ;
513 l_app_id NUMBER;
514
515 l_document_category VARCHAR2(100):= 'OKL Lease Pay Invoices';
516 lx_dbseqnm VARCHAR2(2000):= '';
517 lx_dbseqid NUMBER(38):= NULL;
518
519 BEGIN
520
521 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
522 G_PKG_NAME,
523 p_init_msg_list,
524 l_api_version,
525 p_api_version,
526 '_PROCESS',
527 x_return_status);
528 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
529 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
530 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
531 RAISE OKC_API.G_EXCEPTION_ERROR;
532 END IF;
533
534
535
536 -- GET Application Info
537 OPEN c_app_info ;
538 FETCH c_app_info INTO l_app_id;
539 CLOSE c_app_info;
540
541 --Removed as part of fixing 3745151
542 /*
543 IF(c_app_info%NOTFOUND) THEN
544 -- Change Message
545 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_TRANSACTION',
546 G_COL_NAME_TOKEN,'Billing');
547 x_return_status := OKC_API.G_RET_STS_ERROR ;
548 CLOSE c_app_info ;
549 RAISE OKC_API.G_EXCEPTION_ERROR;
550 END if ;
551 */
552 --Removed as part of fixing 3745151
553
554
555
556 l_tapv_rec.IPVS_ID := p_vendor_site_id ;
557
558
559
560 -- Header Information
561 l_tapv_rec.sfwt_flag := 'N' ;
562 l_tapv_rec.TRX_STATUS_CODE := 'ENTERED' ;
563 IF ( p_tap_id <> NULL OR p_tap_id <> OKC_API.G_MISS_NUM ) THEN
564 OPEN c_tap_info (p_tap_id);
565 FETCH c_tap_info INTO l_tapv_rec.CURRENCY_CODE,l_tapv_rec.SET_OF_BOOKS_ID;
566 IF(c_tap_info%NOTFOUND) THEN
567 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_INVOICE');
568 x_return_status := OKC_API.G_RET_STS_ERROR ;
569 CLOSE c_tap_info ;
570 RAISE OKC_API.G_EXCEPTION_ERROR;
571 END if ;
572 CLOSE c_tap_info;
573 l_tapv_rec.TAP_ID_REVERSES := p_tap_id ;
574 l_tapv_rec.INVOICE_TYPE := 'CREDIT';
575 ELSE
576
577 OPEN C_CURRENCY (p_khr_id);
578 FETCH C_CURRENCY INTO l_tapv_rec.CURRENCY_CODE;--,l_tapv_rec.SET_OF_BOOKS_ID;
579 IF(C_CURRENCY%NOTFOUND) THEN
580 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_CONTRACT');
581 x_return_status := OKC_API.G_RET_STS_ERROR ;
582 CLOSE C_CURRENCY ;
583 RAISE OKC_API.G_EXCEPTION_ERROR;
584 END if ;
585 CLOSE C_CURRENCY;
586
587 l_tapv_rec.TAP_ID_REVERSES := OKC_API.G_MISS_NUM ;
588 l_tapv_rec.INVOICE_TYPE := 'STANDARD';
589 -- GET SET OF BOOK
590 l_tapv_rec.SET_OF_BOOKS_ID := OKL_ACCOUNTING_UTIL.get_set_of_books_id; --smoduga fix for bug 4238141
591
592 END IF;
593
594 l_tapv_rec.TRY_ID := p_trx_id ;
595 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start changes */
596 l_tapv_rec.KHR_ID := null ; -- p_khr_id ;
597 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End changes */
598 l_tapv_rec.AMOUNT := p_credit_amount;
599
600 BEGIN
601 l_tapv_rec.Invoice_Number := fnd_seqnum.get_next_sequence
602 (appid => l_app_id,
603 cat_code => l_document_category,
604 sobid => l_tapv_rec.SET_OF_BOOKS_ID,
605 met_code => 'A',
606 trx_date => SYSDATE,
607 dbseqnm => lx_dbseqnm,
608 dbseqid => lx_dbseqid);
609
610 EXCEPTION
611 WHEN OTHERS THEN
612 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
613 p_msg_name => 'OKL_UNEXPECTED_ERROR',
614 p_token1 => 'OKL_SQLCODE',
615 p_token1_value => SQLCODE,
616 p_token2 => 'OKL_SQLERRM',
617 p_token2_value => SQLERRM);
618 END;
619
620 --l_tapv_rec.INVOICE_NUMBER := 'OKLINV' || TO_CHAR(l_sql);
621 l_tapv_rec.WORKFLOW_YN := 'N';
622 l_tapv_rec.CONSOLIDATE_YN := 'N';
623 l_tapv_rec.WAIT_VENDOR_INVOICE_YN := 'N';
624 l_tapv_rec.DATE_INVOICED := p_invoice_date;
625 l_tapv_rec.DATE_GL := p_invoice_date;
626 l_tapv_rec.DATE_ENTERED := SYSDATE;
627 l_tapv_rec.object_version_number := 1;
628 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
629 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
630 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
631 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
632 mo_global.get_current_org_id() INTO l_tapv_rec.REQUEST_ID,
633 l_tapv_rec.PROGRAM_APPLICATION_ID,
634 l_tapv_rec.PROGRAM_ID,
635 l_tapv_rec.PROGRAM_UPDATE_DATE,
636 l_tapv_rec.ORG_ID FROM dual;
637 l_tapv_rec.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => p_khr_id);
638
639
640
641 --------------
642
643 l_tplv_rec.SFWT_FLAG := 'N';
644 l_tplv_rec.KLE_ID := p_kle_id;
645 -- l_tplv_rec.INV_DISTR_LINE_CODE := 'A' ; -- Need to find out from rina
646 l_tplv_rec.INV_DISTR_LINE_CODE := 'ITEM' ; --| 03-Oct-2007 cklee Fixed Bug 6469797 |
647 l_tplv_rec.STY_ID := p_credit_sty_id;
648 l_tplv_rec.TAP_ID := x_tapv_rec.id ;
649 l_tplv_rec.AMOUNT := p_credit_amount;
650 l_tplv_rec.LINE_NUMBER := 1;
651 l_tplv_rec.object_version_number := 1;
652 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start Changes */
653 l_tplv_rec.KHR_ID := p_khr_id ;
654 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End Changes */
655
656
657 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
658 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
659 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
660 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
661 mo_global.get_current_org_id() INTO l_tplv_rec.REQUEST_ID,
662 l_tplv_rec.PROGRAM_APPLICATION_ID,
663 l_tplv_rec.PROGRAM_ID,
664 l_tplv_rec.PROGRAM_UPDATE_DATE,
665 l_tplv_rec.ORG_ID FROM dual;
666
667
668
669 ------------------------------------------------------------------------------------
670 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start changes */
671
672 IF(IS_DEBUG_PROCEDURE_ON) THEN
673 BEGIN
674 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_CREATE_DISB_TRANS_PVT.create_disb_trx ');
675 END;
676 END IF;
677
678 l_tplv_tbl(0) := l_tplv_rec;
679
680 OKL_CREATE_DISB_TRANS_PVT.create_disb_trx(p_api_version
681 ,p_init_msg_list => p_init_msg_list
682 ,x_return_status => l_return_status
683 ,x_msg_count => x_msg_count
684 ,x_msg_data => x_msg_data
685 ,p_tapv_rec =>l_tapv_rec
686 ,p_tplv_tbl =>l_tplv_tbl
687 ,x_tapv_rec =>x_tapv_rec
688 ,x_tplv_tbl =>x_tplv_tbl
689 );
690 IF(IS_DEBUG_PROCEDURE_ON) THEN
691 BEGIN
692 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_CREATE_DISB_TRANS_PVT.create_disb_trx ');
693 END;
694 END IF;
695
696 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
697 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
698 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
699 RAISE OKC_API.G_EXCEPTION_ERROR;
700 END IF;
701
702 x_request_id := x_tapv_rec.id ;
703
704 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End changes */
705
706 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
707
708 EXCEPTION
709 WHEN OKC_API.G_EXCEPTION_ERROR THEN
710 x_return_status := OKC_API.HANDLE_EXCEPTIONS
711 (
712 l_api_name,
713 G_PKG_NAME,
714 'OKC_API.G_RET_STS_ERROR',
715 x_msg_count,
716 x_msg_data,
717 '_PROCESS'
718 );
719 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
720 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
721 (
722 l_api_name,
723 G_PKG_NAME,
724 'OKC_API.G_RET_STS_UNEXP_ERROR',
725 x_msg_count,
726 x_msg_data,
727 '_PROCESS'
728 );
729 WHEN OTHERS THEN
730 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
731 (
732 l_api_name,
733 G_PKG_NAME,
734 'OTHERS',
735 x_msg_count,
736 x_msg_data,
737 '_PROCESS'
738 );
739 END insert_ap_request;
740
741
742
743
744 PROCEDURE insert_ap_request(
745 p_api_version IN NUMBER,
746 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
747 x_return_status OUT NOCOPY VARCHAR2,
748 x_msg_count OUT NOCOPY NUMBER,
749 x_msg_data OUT NOCOPY VARCHAR2,
750 p_tap_id IN NUMBER,
751 p_credit_amount IN NUMBER,
752 p_credit_sty_id IN NUMBER,
753 p_khr_id IN NUMBER ,
754 p_kle_id IN NUMBER,
755 p_invoice_date IN DATE,
756 p_trx_id IN NUMBER
757
758 )
759
760 IS
761 l_tplv_rec okl_tpl_pvt.tplv_rec_type ;
762 l_tapv_rec okl_tap_pvt.tapv_rec_type ;
763
764 x_tplv_rec okl_tpl_pvt.tplv_rec_type ;
765 x_tapv_rec okl_tap_pvt.tapv_rec_type ;
766
767 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start Changes */
768 l_tplv_tbl okl_tpl_pvt.tplv_tbl_type ;
769 x_tplv_tbl okl_tpl_pvt.tplv_tbl_type ;
770 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End Changes */
771
772 -- skgautam Added as part of fix of bug 4146178
773 l_vendor_id NUMBER;
774 l_vendor VARCHAR2(100);
775 l_org NUMBER;
776
777 CURSOR c_vendor_info (p_kle_id NUMBER ) IS --bug 4146178
778 SELECT PV.VENDOR_ID VENDOR_ID,PV.VENDOR_NAME VENDOR_NAME,CHR.AUTHORING_ORG_ID ORG_ID
779 FROM OKL_INS_POLICIES_B IPYB ,
780 OKC_K_HEADERS_B CHR,
781 PO_VENDORS PV
782 WHERE IPYB.KLE_ID = p_kle_id
783 AND CHR.ID = IPYB.KHR_ID
784 AND IPYB.ISU_ID = PV.VENDOR_ID;
785
786 -- skgautam Added as part of fix of bug 4146178
787 CURSOR c_vendor_site_info (p_vendor_id NUMBER,p_org_id NUMBER ) IS
788 SELECT IPOV.ID1 ID1
789 FROM OKX_VENDOR_SITES_V IPOV
790 WHERE IPOV.VENDOR_ID = p_vendor_id
791 AND IPOV.ORG_ID = p_org_id
792 AND IPOV.PAY_SITE_FLAG = 'Y';
793
794 CURSOR c_trx_type (cp_name VARCHAR2, cp_language VARCHAR2) IS
795 SELECT id
796 FROM okl_trx_types_tl
797 WHERE name = cp_name
798 AND language = cp_language;
799
800 CURSOR c_tap_info (P_TAP_ID NUMBER) IS
801 SELECT
802 CURRENCY_CODE,
803 SET_OF_BOOKS_ID
804 FROM OKL_TRX_AP_INVOICES_B
805 WHERE ID = P_TAP_ID ;
806
807 CURSOR C_CURRENCY (P_khr_ID NUMBER) IS
808 SELECT CURRENCY_CODE
809 FROM OKC_K_HEADERS_B -- Changed to table
810 WHERE ID = P_khr_ID ;
811
812
813 l_ctxt_val_tbl Okl_Account_Dist_Pub.CTXT_VAL_TBL_TYPE;
814 l_acc_gen_primary_key_tbl Okl_Account_Dist_Pub.acc_gen_primary_key;
815 l_template_tbl Okl_Account_Dist_Pub.AVLV_TBL_TYPE;
816 l_amount_tbl Okl_Account_Dist_Pub.AMOUNT_TBL_TYPE;
817
818
819 CURSOR c_app_info IS
820 SELECT APPLICATION_ID
821 FROM FND_APPLICATION
822 WHERE APPLICATION_SHORT_NAME = 'OKL' ;
823
824
825 l_api_name CONSTANT VARCHAR2(30) := 'insert_ap_request';
826 l_api_version CONSTANT NUMBER := 1;
827 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
828 l_trx_type_ID okl_trx_types_v.id%TYPE;
829
830 p_name VARCHAR2(30) := 'BILLING' ;
831 -- Need to change code for hard coded value
832 p_language VARCHAR2(2) := 'US' ;
833 l_sql NUMBER ;
834 l_app_id NUMBER;
835
836 l_document_category VARCHAR2(100):= 'OKL Lease Pay Invoices';
837 lx_dbseqnm VARCHAR2(2000):= '';
838 lx_dbseqid NUMBER(38):= NULL;
839
840 BEGIN
841
842 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
843 G_PKG_NAME,
844 p_init_msg_list,
845 l_api_version,
846 p_api_version,
847 '_PROCESS',
848 x_return_status);
849
850 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
851 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
852 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
853 RAISE OKC_API.G_EXCEPTION_ERROR;
854 END IF;
855
856
857
858 -- GET Application Info
859 OPEN c_app_info ;
860 FETCH c_app_info INTO l_app_id;
861 CLOSE c_app_info;
862
863 --Removed as part of fixing 3745151
864
865 -- Get Vendor
866 OPEN c_vendor_info (p_kle_id); -- Bug 4146178
867 FETCH c_vendor_info INTO l_vendor_id,l_vendor,l_org;
868 CLOSE c_vendor_info;
869
870 -- Get Vendor Site
871 OPEN c_vendor_site_info(l_vendor_id,l_org); -- Bug 4146178
872 FETCH c_vendor_site_info INTO l_tapv_rec.IPVS_ID;
873 IF(c_vendor_site_info%NOTFOUND) THEN
874 -- Change Message
875 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_VENDOR_SITE','VENDOR',l_vendor,'ORG',l_org); -- Bug 4146178
876 x_return_status := OKC_API.G_RET_STS_ERROR ;
877 CLOSE c_vendor_site_info ;
878 RAISE OKC_API.G_EXCEPTION_ERROR;
879 END if ;
880
881 CLOSE c_vendor_site_info;
882
883
884 -- Header Information
885 l_tapv_rec.sfwt_flag := 'N' ;
886 l_tapv_rec.TRX_STATUS_CODE := 'ENTERED' ;
887 IF ( p_tap_id <> NULL AND p_tap_id <> OKC_API.G_MISS_NUM ) THEN
888 OPEN c_tap_info (p_tap_id);
889 FETCH c_tap_info INTO l_tapv_rec.CURRENCY_CODE,l_tapv_rec.SET_OF_BOOKS_ID;
890 IF(c_tap_info%NOTFOUND) THEN
891 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_INVOICE');
892 x_return_status := OKC_API.G_RET_STS_ERROR ;
893 CLOSE c_tap_info ;
894 RAISE OKC_API.G_EXCEPTION_ERROR;
895 END if ;
896 CLOSE c_tap_info;
897 l_tapv_rec.TAP_ID_REVERSES := p_tap_id ;
898 l_tapv_rec.INVOICE_TYPE := 'CREDIT';
899 ELSE
900
901 OPEN C_CURRENCY (p_khr_id);
902 FETCH C_CURRENCY INTO l_tapv_rec.CURRENCY_CODE;--,l_tapv_rec.SET_OF_BOOKS_ID;
903 IF(C_CURRENCY%NOTFOUND) THEN
904 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_CONTRACT');
905 x_return_status := OKC_API.G_RET_STS_ERROR ;
906 CLOSE C_CURRENCY ;
907 RAISE OKC_API.G_EXCEPTION_ERROR;
908 END if ;
909 CLOSE C_CURRENCY;
910 l_tapv_rec.TAP_ID_REVERSES := OKC_API.G_MISS_NUM ;
911 l_tapv_rec.INVOICE_TYPE := 'STANDARD';
912 -- GET SET OF BOOK
913 l_tapv_rec.SET_OF_BOOKS_ID := OKL_ACCOUNTING_UTIL.get_set_of_books_id; --smoduga fix for bug 4238141
914
915 --Fix for bug#13433145 Start
916
917 OPEN c_trx_type ('Debit Memo', 'US');
918 FETCH c_trx_type INTO l_trx_type_id;
919 IF(c_trx_type%NOTFOUND) THEN
920 Okc_Api.set_message(G_APP_NAME, 'OKL_AM_NO_TRX_TYPE_FOUND','TRY_NAME','Debit Memo');
921 x_return_status := OKC_API.G_RET_STS_ERROR ;
922 CLOSE c_trx_type ;
923 RAISE OKC_API.G_EXCEPTION_ERROR;
924 END IF ;
925 CLOSE c_trx_type;
926
927 IF (l_trx_type_id = p_trx_id) THEN
928 l_tapv_rec.INVOICE_TYPE := 'CREDIT';
929 END IF;
930
931 --Fix for bug#13433145 End
932
933 END IF;
934
935
936 l_tapv_rec.TRY_ID := p_trx_id ;
937 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start changes */
938 l_tapv_rec.KHR_ID := null ; -- p_khr_id ;
939 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End changes */
940
941 -- l_tapv_rec.CPLV_ID := 1001 ; -- GET PARTY ROLE
942 l_tapv_rec.AMOUNT := p_credit_amount;
943
944
945 BEGIN
946
947
948 l_tapv_rec.Invoice_Number := fnd_seqnum.get_next_sequence
949 (appid => l_app_id,
950 cat_code => l_document_category,
951 sobid => l_tapv_rec.SET_OF_BOOKS_ID,
952 met_code => 'A',
953 trx_date => SYSDATE,
954 dbseqnm => lx_dbseqnm,
955 dbseqid => lx_dbseqid);
956
957 EXCEPTION
958 WHEN OTHERS THEN
959 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
960 p_msg_name => 'OKL_UNEXPECTED_ERROR',
961 p_token1 => 'OKL_SQLCODE',
962 p_token1_value => SQLCODE,
963 p_token2 => 'OKL_SQLERRM',
964 p_token2_value => SQLERRM);
965 END;
966
967 --l_tapv_rec.INVOICE_NUMBER := 'OKLINV' || TO_CHAR(l_sql);
968 l_tapv_rec.WORKFLOW_YN := 'N';
969 l_tapv_rec.CONSOLIDATE_YN := 'N';
970 l_tapv_rec.WAIT_VENDOR_INVOICE_YN := 'N';
971 l_tapv_rec.DATE_INVOICED := p_invoice_date;
972 l_tapv_rec.DATE_GL := p_invoice_date;
973 l_tapv_rec.DATE_ENTERED := SYSDATE;
974 l_tapv_rec.object_version_number := 1;
975 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
976 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
977 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
978 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
979 mo_global.get_current_org_id() INTO l_tapv_rec.REQUEST_ID,
980 l_tapv_rec.PROGRAM_APPLICATION_ID,
981 l_tapv_rec.PROGRAM_ID,
982 l_tapv_rec.PROGRAM_UPDATE_DATE,
983 l_tapv_rec.ORG_ID FROM dual;
984 l_tapv_rec.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => p_khr_id);
985
986 --------------
987
988 l_tplv_rec.SFWT_FLAG := 'N';
989 l_tplv_rec.KLE_ID := p_kle_id;
990 -- l_tplv_rec.INV_DISTR_LINE_CODE := 'A' ; -- Need to find out from rina
991 l_tplv_rec.INV_DISTR_LINE_CODE := 'ITEM' ; --| 03-Oct-2007 cklee Fixed Bug 6469797 |
992 l_tplv_rec.STY_ID := p_credit_sty_id;
993 l_tplv_rec.TAP_ID := x_tapv_rec.id ;
994 l_tplv_rec.AMOUNT := p_credit_amount;
995 l_tplv_rec.LINE_NUMBER := 1;
996 l_tplv_rec.object_version_number := 1;
997 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start change*/
998 l_tplv_rec.KHR_ID := p_khr_id ;
999 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End changes*/
1000
1001 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
1002 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
1003 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
1004 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
1005 mo_global.get_current_org_id() INTO l_tplv_rec.REQUEST_ID,
1006 l_tplv_rec.PROGRAM_APPLICATION_ID,
1007 l_tplv_rec.PROGRAM_ID,
1008 l_tplv_rec.PROGRAM_UPDATE_DATE,
1009 l_tplv_rec.ORG_ID FROM dual;
1010
1011
1012 ------------------------------------------------------------------------------------
1013 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT Start changes */
1014 IF(IS_DEBUG_PROCEDURE_ON) THEN
1015 BEGIN
1016 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_CREATE_DISB_TRANS_PVT.create_disb_trx ');
1017 END;
1018 END IF;
1019
1020 l_tplv_tbl(0) := l_tplv_rec;
1021
1022 OKL_CREATE_DISB_TRANS_PVT.create_disb_trx(p_api_version
1023 ,p_init_msg_list => p_init_msg_list
1024 ,x_return_status => l_return_status
1025 ,x_msg_count => x_msg_count
1026 ,x_msg_data => x_msg_data
1027 ,p_tapv_rec =>l_tapv_rec
1028 ,p_tplv_tbl =>l_tplv_tbl
1029 ,x_tapv_rec =>x_tapv_rec
1030 ,x_tplv_tbl =>x_tplv_tbl
1031 );
1032 IF(IS_DEBUG_PROCEDURE_ON) THEN
1033 BEGIN
1034 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_CREATE_DISB_TRANS_PVT.create_disb_trx ');
1035 END;
1036 END IF;
1037
1038 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1039 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1040 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1041 RAISE OKC_API.G_EXCEPTION_ERROR;
1042 END IF;
1043 /* 22-JAN-2007 ANSETHUR BUILD: R12 B DISBURSEMENT End changes */
1044
1045
1046 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1047
1048 EXCEPTION
1049 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1050 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1051 (
1052 l_api_name,
1053 G_PKG_NAME,
1054 'OKC_API.G_RET_STS_ERROR',
1055 x_msg_count,
1056 x_msg_data,
1057 '_PROCESS'
1058 );
1059 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1060 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1061 (
1062 l_api_name,
1063 G_PKG_NAME,
1064 'OKC_API.G_RET_STS_UNEXP_ERROR',
1065 x_msg_count,
1066 x_msg_data,
1067 '_PROCESS'
1068 );
1069 WHEN OTHERS THEN
1070 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1071 (
1072 l_api_name,
1073 G_PKG_NAME,
1074 'OTHERS',
1075 x_msg_count,
1076 x_msg_data,
1077 '_PROCESS'
1078 );
1079 END insert_ap_request;
1080
1081
1082
1083 PROCEDURE pay_comp_refund(
1084 p_api_version IN NUMBER,
1085 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1086 x_return_status OUT NOCOPY VARCHAR2,
1087 x_msg_count OUT NOCOPY NUMBER,
1088 x_msg_data OUT NOCOPY VARCHAR2,
1089 p_ipyv_rec IN ipyv_rec_type,
1090 x_ipyv_rec OUT NOCOPY ipyv_rec_type
1091 )IS
1092 l_ret_status varchar2(1) ;
1093 l_value NUMBER ;
1094 l_contract_id NUMBER;
1095 l_contract_line NUMBER;
1096 l_api_name CONSTANT VARCHAR2(30) := 'pay_comp_refund';
1097 l_api_version CONSTANT NUMBER := 1;
1098 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
1099 l_amount NUMBER;
1100 l_strm_type_id NUMBER ;
1101 l_lsm_id NUMBER;
1102 l_tai_id NUMBER;
1103
1104
1105
1106 CURSOR okl_trx_types(cp_name VARCHAR2,cp_language VARCHAR2) IS
1107 SELECT id
1108 FROM okl_trx_types_tl
1109 WHERE name = cp_name
1110 AND language = cp_language;
1111
1112
1113 p_name VARCHAR2(150) :='Credit Memo';
1114 p_lang VARCHAR2(2) := 'US' ;
1115 l_trx_type NUMBER ;
1116 l_sty_id NUMBER ;
1117
1118
1119 CURSOR C_OKL_STRM_TYPE_CRE_V IS
1120 select ID
1121 from OKL_STRM_TYPE_TL
1122 where NAME = 'INSURANCE REFUND'
1123 AND LANGUAGE = 'US';
1124
1125
1126
1127 CURSOR C_OKL_CNSLD_AR_STRMB IS
1128 SELECT SUM(STRE.AMOUNT)
1129 FROM OKL_STRM_ELEMENTS STRE, OKL_STREAMS STR
1130 WHERE STR.KHR_ID = P_IPYV_REC.KHR_ID
1131 AND STR.KLE_ID = P_IPYV_REC.KLE_ID
1132 AND STR.ID = STRE.STM_ID
1133 AND STRE.DATE_BILLED IS NOT NULL;
1134
1135 BEGIN
1136 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1137 G_PKG_NAME,
1138 p_init_msg_list,
1139 l_api_version,
1140 p_api_version,
1141 '_PROCESS',
1142 x_return_status);
1143 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1144 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1145 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1146 RAISE OKC_API.G_EXCEPTION_ERROR;
1147 END IF;
1148
1149
1150
1151 --1. Stream id
1152
1153 BEGIN
1154
1155
1156
1157 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1158 'INSURANCE_RECEIVABLE',
1159 l_return_status,
1160 l_strm_type_id);
1161
1162 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1163 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1164 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1165 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
1166 x_return_status := OKC_API.G_RET_STS_ERROR ;
1167 RAISE OKC_API.G_EXCEPTION_ERROR;
1168 END IF;
1169
1170 END;
1171
1172 ---2 GET Transaction Type
1173 BEGIN
1174
1175 OPEN okl_trx_types (p_name, p_lang);
1176 FETCH okl_trx_types INTO l_trx_type;
1177 IF(okl_trx_types%NOTFOUND) THEN
1178 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
1179 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,p_name);
1180 x_return_status := OKC_API.G_RET_STS_ERROR ;
1181 CLOSE okl_trx_types ;
1182 RAISE OKC_API.G_EXCEPTION_ERROR;
1183 END if ;
1184 CLOSE okl_trx_types;
1185
1186
1187
1188 BEGIN
1189
1190 /*OPEN C_OKL_STRM_TYPE_CRE_V;
1191 FETCH C_OKL_STRM_TYPE_CRE_V INTO l_strm_type_id;
1192 IF(C_OKL_STRM_TYPE_CRE_V%NOTFOUND) THEN
1193 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
1194 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE REFUND');
1195 x_return_status := OKC_API.G_RET_STS_ERROR ;
1196 CLOSE C_OKL_STRM_TYPE_CRE_V ;
1197 RAISE OKC_API.G_EXCEPTION_ERROR;
1198 END if ;
1199 CLOSE C_OKL_STRM_TYPE_CRE_V;*/
1200
1201
1202 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1203 'INSURANCE_REFUND',
1204 l_return_status,
1205 l_strm_type_id);
1206
1207 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1208 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1209 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1210 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_REFUND');
1211 x_return_status := OKC_API.G_RET_STS_ERROR ;
1212 RAISE OKC_API.G_EXCEPTION_ERROR;
1213 END IF;
1214
1215 END;
1216
1217 --3. get Amount Received
1218 OPEN C_OKL_CNSLD_AR_STRMB;
1219 FETCH C_OKL_CNSLD_AR_STRMB INTO l_amount;
1220 IF(l_amount IS NOT NULL AND l_amount <> OKC_API.G_MISS_NUM ) THEN
1221 l_amount := - l_amount;
1222 -- Call API to create Credit Memo
1223 -- Start of wraper code generated automatically by Debug code generator for okl_credit_memo_pub.insert_request
1224 IF(L_DEBUG_ENABLED='Y') THEN
1225 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
1226 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
1227 END IF;
1228 IF(IS_DEBUG_PROCEDURE_ON) THEN
1229 BEGIN
1230 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call on_account_credit_memo');
1231 END;
1232 END IF;
1233 on_account_credit_memo
1234 (
1235 p_api_version => l_api_version,
1236 p_init_msg_list => OKL_API.G_FALSE,
1237 p_try_id => l_trx_type,
1238 p_khr_id => p_ipyv_rec.khr_id,
1239 p_kle_id =>p_ipyv_rec.kle_id ,
1240 p_ipy_id =>p_ipyv_rec.ID ,
1241 p_credit_date => p_ipyv_rec.CANCELLATION_DATE ,
1242 p_credit_amount => l_amount,
1243 p_credit_sty_id => l_strm_type_id,
1244 x_return_status => L_return_status,
1245 x_msg_count =>x_msg_count,
1246 x_msg_data => x_msg_data,
1247 x_tai_id => l_tai_id ) ;
1248
1249 IF(IS_DEBUG_PROCEDURE_ON) THEN
1250
1251 BEGIN
1252 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call on_account_credit_memo ');
1253 END;
1254 END IF;
1255 -- End of wraper code generated automatically by Debug code generator for okl_credit_memo_pub.insert_request
1256
1257 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1258 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1259 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1260 RAISE OKC_API.G_EXCEPTION_ERROR;
1261 END IF;
1262 END if ;
1263
1264 CLOSE C_OKL_CNSLD_AR_STRMB ;
1265 END;
1266
1267
1268 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1269
1270 EXCEPTION
1271 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1272 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1273 (
1274 l_api_name,
1275 G_PKG_NAME,
1276 'OKC_API.G_RET_STS_ERROR',
1277 x_msg_count,
1278 x_msg_data,
1279 '_PROCESS'
1280 );
1281 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1282 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1283 (
1284 l_api_name,
1285 G_PKG_NAME,
1286 'OKC_API.G_RET_STS_UNEXP_ERROR',
1287 x_msg_count,
1288 x_msg_data,
1289 '_PROCESS'
1290 );
1291 WHEN OTHERS THEN
1292 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1293 (
1294 l_api_name,
1295 G_PKG_NAME,
1296 'OTHERS',
1297 x_msg_count,
1298 x_msg_data,
1299 '_PROCESS'
1300 );
1301 END pay_comp_refund;
1302
1303
1304
1305
1306 PROCEDURE delete_policy(
1307 p_api_version IN NUMBER,
1308 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1309 x_return_status OUT NOCOPY VARCHAR2,
1310 x_msg_count OUT NOCOPY NUMBER,
1311 x_msg_data OUT NOCOPY VARCHAR2,
1312 p_ipyv_rec IN ipyv_rec_type,
1313 x_ipyv_rec OUT NOCOPY ipyv_rec_type
1314 )
1315 IS
1316 l_api_name CONSTANT VARCHAR2(30) := 'delete_policy';
1317 l_api_version CONSTANT NUMBER := 1;
1318 l_return_status VARCHAR2(1) ;
1319 ls_check_tpi VARCHAR2(3);
1320 l_id NUMBER ;
1321 l_ipyv_rec ipyv_rec_type;
1322
1323 CURSOR c_ins_info( p_ipy_id NUMBER) IS
1324 SELECT IPYB.KHR_ID, IPYB.KLE_ID ,IPYB.OBJECT_VERSION_NUMBER, ISS_CODE, IPY_TYPE ,FACTOR_CODE
1325 FROM OKL_INS_POLICIES_B IPYB
1326 WHERE IPYB.ID = p_ipy_id;
1327 l_khr_status VARCHAR2(30) ;
1328 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
1329 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
1330 l_klev_rec Okl_Kle_Pvt.klev_rec_type ;
1331 lx_klev_rec Okl_Kle_Pvt.klev_rec_type ;
1332
1333 BEGIN
1334
1335 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1336 G_PKG_NAME,
1337 p_init_msg_list,
1338 l_api_version,
1339 p_api_version,
1340 '_PROCESS',
1341 x_return_status);
1342 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1343 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1344 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1345 RAISE OKC_API.G_EXCEPTION_ERROR;
1346 END IF;
1347 l_ipyv_rec := p_ipyv_rec ;
1348
1349 OPEN c_ins_info(l_ipyv_rec.ID);
1350 FETCH c_ins_info INTO l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID ,l_ipyv_rec.OBJECT_VERSION_NUMBER, l_ipyv_rec.ISS_CODE, l_ipyv_rec.IPY_TYPE ,l_ipyv_rec.FACTOR_CODE ;
1351 IF(c_ins_info%NOTFOUND) THEN
1352 Okc_Api.set_message(G_APP_NAME, G_INVALID_POLICY );
1353 x_return_status := OKC_API.G_RET_STS_ERROR ;
1354 CLOSE c_ins_info ;
1355 RAISE OKC_API.G_EXCEPTION_ERROR;
1356 END if ;
1357 CLOSE c_ins_info ;
1358
1359 -- Check for Third Party also
1360 IF(l_ipyv_rec.IPY_TYPE = 'THIRD_PARTY_POLICY') THEN
1361 OKC_API.set_message(G_APP_NAME, 'OKL_NO_DELETED' ); -- For Third party Error
1362 RAISE OKC_API.G_EXCEPTION_ERROR;
1363 END IF;
1364
1365 IF(l_ipyv_rec.ISS_CODE = 'ACTIVE') THEN
1366 OKC_API.set_message(G_APP_NAME, 'OKL_ACTIVE_POLICY' );
1367 RAISE OKC_API.G_EXCEPTION_ERROR;
1368 ELSE
1369 -- PAY Customer Refund
1370 pay_comp_refund(
1371 p_api_version => l_api_version,
1372 p_init_msg_list => OKC_API.G_FALSE,
1373 x_return_status => l_return_status,
1374 x_msg_count => x_msg_count,
1375 x_msg_data => x_msg_data,
1376 p_ipyv_rec => l_ipyv_rec ,
1377 x_ipyv_rec => x_ipyv_rec );
1378
1379
1380 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1381 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1382 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1383 RAISE OKC_API.G_EXCEPTION_ERROR;
1384 END IF;
1385 -- l_ipyv_rec := x_ipyv_rec ;
1386
1387
1388 ---Inactivate all stream / accounting entries
1389 Inactivate_open_items(
1390 p_api_version => l_api_version,
1391 p_init_msg_list => OKC_API.G_FALSE,
1392 x_return_status => l_return_status,
1393 x_msg_count => x_msg_count,
1394 x_msg_data => x_msg_data,
1395 p_contract_id => l_ipyv_rec.khr_id ,
1396 p_contract_line => l_ipyv_rec.kle_id,
1397 p_policy_status => l_ipyv_rec.iss_code );
1398
1399 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1400 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1401 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1402 RAISE OKC_API.G_EXCEPTION_ERROR;
1403 END IF;
1404
1405 -- GET contract status
1406 l_return_status := get_contract_status(l_ipyv_rec.khr_id, l_khr_status);
1407 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1408 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1409 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1410 RAISE OKC_API.G_EXCEPTION_ERROR;
1411 END IF;
1412
1413 IF (l_khr_status = 'ACTIVE' ) THEN
1414 -- if active, end date contract line and update status
1415
1416 l_clev_rec.ID := l_ipyv_rec.kle_id ;
1417 l_clev_rec.sts_code := 'TERMINATED';
1418 l_klev_rec.ID := l_ipyv_rec.kle_id ;
1419 l_clev_rec.END_DATE := l_ipyv_rec.CANCELLATION_DATE;
1420
1421
1422 Okl_Contract_Pub.update_contract_line
1423 (
1424 p_api_version => l_api_version ,
1425 p_init_msg_list => OKC_API.G_FALSE,
1426 x_return_status => l_return_status ,
1427 x_msg_count => x_msg_count,
1428 x_msg_data => x_msg_data ,
1429 p_clev_rec => l_clev_rec ,
1430 p_klev_rec => l_klev_rec,
1431 p_edit_mode =>'N' ,
1432 x_clev_rec => lx_clev_rec,
1433 x_klev_rec => lx_klev_rec
1434 );
1435
1436 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1437 -- Status temp
1438 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1439 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1440
1441 -- Status temp
1442 RAISE OKC_API.G_EXCEPTION_ERROR;
1443 END IF;
1444
1445 ELSE
1446
1447
1448 l_clev_rec.ID := l_ipyv_rec.kle_id ;
1449 l_clev_rec.sts_code := 'TERMINATED';
1450 l_klev_rec.ID := l_ipyv_rec.kle_id ;
1451 l_clev_rec.END_DATE := l_ipyv_rec.CANCELLATION_DATE;
1452
1453
1454 Okl_Contract_Pub.update_contract_line
1455 (
1456 p_api_version => l_api_version ,
1457 p_init_msg_list => OKC_API.G_FALSE,
1458 x_return_status => l_return_status ,
1459 x_msg_count => x_msg_count,
1460 x_msg_data => x_msg_data ,
1461 p_clev_rec => l_clev_rec ,
1462 p_klev_rec => l_klev_rec,
1463 p_edit_mode =>'N' ,
1464 x_clev_rec => lx_clev_rec,
1465 x_klev_rec => lx_klev_rec
1466 );
1467
1468 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1469 -- Status temp
1470 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1471 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1472
1473 -- Status temp
1474 RAISE OKC_API.G_EXCEPTION_ERROR;
1475 END IF;
1476
1477
1478 /*
1479 -- else call delete contract line
1480 --Delete Line
1481 OKL_CONTRACT_PUB.delete_contract_line(
1482 p_api_version => l_api_version,
1483 p_init_msg_list => OKC_API.G_FALSE,
1484 x_return_status => x_return_status,
1485 x_msg_count => x_msg_count,
1486 x_msg_data => x_msg_data,
1487 p_line_id => l_ipyv_rec.kle_id );
1488
1489 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1490 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1491 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1492 RAISE OKC_API.G_EXCEPTION_ERROR;
1493 END IF;
1494 */
1495
1496
1497
1498 END IF;
1499 l_ipyv_rec.iss_code := 'DELETED';
1500 --Update Policy
1501
1502 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
1503 IF(L_DEBUG_ENABLED='Y') THEN
1504 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
1505 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
1506 END IF;
1507 IF(IS_DEBUG_PROCEDURE_ON) THEN
1508 BEGIN
1509 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
1510 END;
1511 END IF;
1512 Okl_Ins_Policies_Pub.update_ins_policies(
1513 p_api_version => p_api_version,
1514 p_init_msg_list => OKC_API.G_FALSE,
1515 x_return_status => l_return_status,
1516 x_msg_count => x_msg_count,
1517 x_msg_data => x_msg_data,
1518 p_ipyv_rec => l_ipyv_rec,
1519 x_ipyv_rec => x_ipyv_rec
1520 );
1521 IF(IS_DEBUG_PROCEDURE_ON) THEN
1522 BEGIN
1523 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
1524 END;
1525 END IF;
1526 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
1527
1528 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1529 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1530 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1531 RAISE OKC_API.G_EXCEPTION_ERROR;
1532 END IF;
1533
1534 -- send Notification to customer
1535 -- To be implemented
1536
1537
1538 END IF;
1539
1540 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1541 EXCEPTION
1542 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1543 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1544 (
1545 l_api_name,
1546 G_PKG_NAME,
1547 'OKC_API.G_RET_STS_ERROR',
1548 x_msg_count,
1549 x_msg_data,
1550 '_PROCESS'
1551 );
1552 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1553 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1554 (
1555 l_api_name,
1556 G_PKG_NAME,
1557 'OKC_API.G_RET_STS_UNEXP_ERROR',
1558 x_msg_count,
1559 x_msg_data,
1560 '_PROCESS'
1561 );
1562 WHEN OTHERS THEN
1563 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1564 (
1565 l_api_name,
1566 G_PKG_NAME,
1567 'OTHERS',
1568 x_msg_count,
1569 x_msg_data,
1570 '_PROCESS'
1571 );
1572 END delete_policy;
1573
1574
1575
1576 PROCEDURE calc_vendor_clawback(
1577 p_api_version IN NUMBER,
1578 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1579 x_return_status OUT NOCOPY VARCHAR2,
1580 x_msg_count OUT NOCOPY NUMBER,
1581 x_msg_data OUT NOCOPY VARCHAR2,
1582 p_ipyv_rec IN ipyv_rec_type,
1583 x_ipyv_rec OUT NOCOPY ipyv_rec_type,
1584 x_vendor_adjustment OUT NOCOPY NUMBER
1585 ) IS
1586 l_api_name CONSTANT VARCHAR2(30) := 'calc_vendor_clawback';
1587 l_api_version CONSTANT NUMBER := 1;
1588 l_return_status VARCHAR2(1) ;
1589 l_attribute_label ak_attributes_tl.attribute_label_long%TYPE := NULL; -- 3927315
1590
1591 CURSOR c_okl_ins_asset IS
1592 select SUM(lessor_premium) -- Smoduga fix fro bug 4238141
1593 from OKL_INS_ASSETS OINB
1594 where OINB.IPY_ID = p_ipyv_rec.ID
1595 GROUP BY OINB.IPY_ID;
1596
1597
1598 CURSOR C_OKL_STRM_TYPE_V (p_stream_type VARCHAR2)IS
1599 select ID
1600 from OKL_STRM_TYPE_V
1601 where code = p_stream_type;
1602
1603
1604 CURSOR c_total_paid(l_stm_type_id NUMBER) IS
1605 SELECT SUM(STRE.AMOUNT)
1606 FROM okl_strm_elements STRE, OKL_STREAMS STR
1607 WHERE STR.ID = STRE.STM_ID
1608 AND STR.STY_ID = l_stm_type_id
1609 AND STRE.DATE_BILLED IS NOT NULL
1610 AND STR.KHR_ID = p_ipyv_rec.KHR_ID
1611 AND STR.KLE_ID = p_ipyv_rec.KLE_ID;
1612
1613
1614 l_tapv_rec Okl_tap_pvt.tapv_rec_type;
1615 lx_tapv_rec Okl_tap_pvt.tapv_rec_type;
1616 l_tplv_rec okl_tpl_pvt.tplv_rec_type;
1617 lx_tplv_rec okl_tpl_pvt.tplv_rec_type;
1618
1619 li_months NUMBER ;
1620 l_total_lessor_premium NUMBER;
1621 ln_premium NUMBER;
1622 l_strm_type_id NUMBER;
1623 l_total_paid NUMBER;
1624 ln_refund NUMBER ;
1625 l_amount NUMBER ;
1626 l_to_refund NUMBER;
1627 l_tra_id NUMBER;
1628
1629
1630 CURSOR c_trx_type (cp_name VARCHAR2, cp_language VARCHAR2) IS
1631 SELECT id
1632 FROM okl_trx_types_tl
1633 WHERE name = cp_name
1634 AND language = cp_language;
1635
1636 l_trx_type_ID NUMBER ;
1637
1638
1639
1640 CURSOR c_ins_opt_premium (p_covered_amount IN NUMBER) IS
1641 SELECT ((INSURER_RATE * p_covered_amount )/100 )
1642 FROM OKL_INS_POLICIES_B IPYB , OKL_INS_RATES INR
1643 WHERE IPYB.ipt_id = inr.ipt_id AND
1644 kle_id = p_ipyv_rec.KLE_ID and
1645 khr_id = p_ipyv_rec.KHR_ID
1646 AND IPYB.date_from between inr.date_FROM and DECODE(NVL(inr.date_TO,NULL),NULL,SYSDATE, inr.date_TO)
1647 and IPYB.territory_code = inr.ic_id
1648 AND IPYB.FACTOR_VALUE BETWEEN inr.FACTOR_RANGE_START AND inr.FACTOR_RANGE_END ;
1649
1650
1651 l_functional_currency okl_k_headers_full_v.currency_code%TYPE := okl_accounting_util.get_func_curr_code;
1652
1653 x_contract_currency okl_k_headers_full_v.currency_code%TYPE;
1654 x_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
1655 x_currency_conversion_rate okl_k_headers_full_v.currency_conversion_rate%TYPE;
1656 x_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
1657 x_functional_covered_amt NUMBER ;
1658 p_contract_currency fnd_currencies_vl.currency_code%TYPE ;
1659
1660
1661 l_func_total_lessor_premium NUMBER;
1662
1663 CURSOR c_con_start IS
1664 SELECT start_date
1665 FROM okc_k_headers_b
1666 WHERE id = p_ipyv_rec.KHR_ID ;
1667 l_start_date DATE;
1668
1669
1670
1671 BEGIN
1672
1673 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1674 G_PKG_NAME,
1675 p_init_msg_list,
1676 l_api_version,
1677 p_api_version,
1678 '_PROCESS',
1679 x_return_status);
1680 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1681 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1682 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1683 RAISE OKC_API.G_EXCEPTION_ERROR;
1684 END IF;
1685
1686
1687 OPEN c_con_start;
1688 FETCH c_con_start INTO l_start_date;
1689 IF(c_con_start%NOTFOUND) THEN
1690 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_VALUE', G_COL_NAME_TOKEN,'Contract Start Date');
1691 x_return_status := OKC_API.G_RET_STS_ERROR ;
1692 CLOSE c_con_start ;
1693 RAISE OKC_API.G_EXCEPTION_ERROR;
1694 END if ;
1695 CLOSE c_con_start ;
1696
1697 --- How much he should have been paid
1698 -- +++ EFF DATED TERMINATION CHANGES ++++++-----------
1699 -- If cancellation Reason is not cancelled by customer and policy type is Lease ----
1700 IF p_ipyv_rec.crx_code <> 'CANCELED_BY_CUSTOMER'
1701 AND p_ipyv_rec.ipy_type = 'LEASE_POLICY' THEN -- [1]
1702 -- cancellation because of PreDated Termination
1703 -- If termination eff date is lesser than start date of Ins pOlicy then
1704 -- Calculate months between start date of insurance policy and Sysdate to get
1705 -- Months paid
1706 IF p_ipyv_rec.cancellation_date < p_ipyv_rec.date_from THEN -- [3]
1707 IF p_ipyv_rec.date_from < SYSDATE THEN
1708 li_months := MONTHS_BETWEEN(SYSDATE,p_ipyv_rec.date_from);
1709 ELSIF p_ipyv_rec.date_from > SYSDATE THEN
1710 li_months := 0;
1711 END IF;
1712 END IF; -- [3]
1713 ELSE
1714 li_months := MONTHS_BETWEEN( p_ipyv_rec.cancellation_date,p_ipyv_rec.date_from);
1715 END IF; -- [1]
1716 -- +++ EFF DATED TERMINATION CHANGES ++++++-----------
1717 --li_months := MONTHS_BETWEEN( p_ipyv_rec.cancellation_date,p_ipyv_rec.date_from);
1718
1719 IF (p_ipyv_rec.ipy_type = 'LEASE_POLICY') THEN
1720 -- Select premium from insured_asset table
1721 OPEN c_okl_ins_asset;
1722 FETCH c_okl_ins_asset INTO l_total_lessor_premium;
1723 IF(c_okl_ins_asset%NOTFOUND) THEN
1724 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_POLICY', G_COL_NAME_TOKEN,p_ipyv_rec.ID);
1725 x_return_status := OKC_API.G_RET_STS_ERROR ;
1726 CLOSE c_okl_ins_asset ;
1727 RAISE OKC_API.G_EXCEPTION_ERROR;
1728 END if ;
1729 CLOSE c_okl_ins_asset ;
1730 ELSE
1731
1732 -- Covered amount from contract to functional
1733
1734 OKL_ACCOUNTING_UTIL.convert_to_functional_currency
1735 (
1736 p_ipyv_rec.khr_id,
1737 l_functional_currency ,
1738 l_start_date,
1739 p_ipyv_rec.COVERED_AMOUNT,
1740 x_contract_currency ,
1741 x_currency_conversion_type ,
1742 x_currency_conversion_rate ,
1743 x_currency_conversion_date,
1744 x_functional_covered_amt ) ;
1745
1746 x_functional_covered_amt :=
1747 okl_accounting_util.cross_currency_round_amount(p_amount =>
1748 x_functional_covered_amt,
1749 p_currency_code => l_functional_currency);
1750
1751 OPEN c_ins_opt_premium (x_functional_covered_amt);
1752 FETCH c_ins_opt_premium INTO l_func_total_lessor_premium;
1753 IF(c_ins_opt_premium%NOTFOUND) THEN
1754 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_OPTINSPRODUCT_RATE');--Fix for 3745151
1755 x_return_status := OKC_API.G_RET_STS_ERROR ;
1756 CLOSE c_okl_ins_asset ;
1757 RAISE OKC_API.G_EXCEPTION_ERROR;
1758 END if ;
1759
1760 --- total lessor premium from functional to contract currency
1761 OKL_ACCOUNTING_UTIL.convert_to_contract_currency
1762 (
1763 p_ipyv_rec.khr_id,
1764 l_functional_currency,
1765 p_ipyv_rec.date_from,
1766 l_func_total_lessor_premium,
1767 x_contract_currency ,
1768 x_currency_conversion_type ,
1769 x_currency_conversion_rate ,
1770 x_currency_conversion_date,
1771 l_total_lessor_premium ) ;
1772
1773 l_total_lessor_premium :=
1774 okl_accounting_util.cross_currency_round_amount(p_amount =>
1775 l_total_lessor_premium,
1776 p_currency_code => x_contract_currency);
1777
1778 END IF ;
1779
1780
1781 -- Money should have been paid (System profile)
1782 ln_premium := li_months * l_total_lessor_premium ;
1783 -- How much have we paid him
1784
1785 /*OPEN C_OKL_STRM_TYPE_V('INSURANCE PAYABLE');
1786 FETCH C_OKL_STRM_TYPE_V INTO l_strm_type_id;
1787 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
1788 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
1789 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE PAYABLE');
1790 x_return_status := OKC_API.G_RET_STS_ERROR ;
1791 CLOSE C_OKL_STRM_TYPE_V ;
1792 RAISE OKC_API.G_EXCEPTION_ERROR;
1793 END if ;
1794 CLOSE C_OKL_STRM_TYPE_V;*/
1795 -- cursor fetch replaced with the call to get the stream type id
1796 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1797 'INSURANCE_PAYABLE',
1798 l_return_status,
1799 l_strm_type_id);
1800 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1801 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1802 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1803 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1804 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
1805 RAISE OKC_API.G_EXCEPTION_ERROR;
1806 END IF;
1807
1808
1809
1810 OPEN c_total_paid(l_strm_type_id);
1811 FETCH c_total_paid INTO l_total_paid;
1812 IF(c_total_paid%NOTFOUND) THEN
1813 l_total_paid := 0 ;
1814 END if ;
1815 CLOSE c_total_paid;
1816
1817
1818 IF (ln_premium < l_total_paid) THEN
1819
1820 -- cursor fetch replaced with the call to get the stream type id
1821 -- changed for use defined streams bug 3924300
1822 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1823 'INSURANCE_ADJUSTMENT',
1824 l_return_status,
1825 l_strm_type_id);
1826
1827 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1828 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1829 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1830 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1831 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN, 'INSURANCE_ADJUSTMENT'); --bug 4024785
1832 RAISE OKC_API.G_EXCEPTION_ERROR;
1833 END IF;
1834
1835
1836
1837 ln_refund := l_total_paid - ln_premium ;
1838
1839 -- GET MONEY BACK FROM VENDOR
1840
1841 l_to_refund := -ln_refund ;
1842
1843 -- GET TRANSACTION TYPE
1844 OPEN c_trx_type ('Debit Memo', 'US');
1845 FETCH c_trx_type INTO l_trx_type_ID;
1846 IF(c_trx_type%NOTFOUND) THEN
1847 Okc_Api.set_message(G_APP_NAME, 'OKL_AM_NO_TRX_TYPE_FOUND',
1848 'TRY_NAME','Debit Memo'); --Changed message code for bug 3745151
1849 x_return_status := OKC_API.G_RET_STS_ERROR ;
1850 CLOSE c_trx_type ;
1851 RAISE OKC_API.G_EXCEPTION_ERROR;
1852 END if ;
1853 CLOSE c_trx_type;
1854 -- Call API to create Debit Memo
1855 insert_ap_request(p_api_version => l_api_version,
1856 p_init_msg_list => OKL_API.G_FALSE,
1857 x_return_status => l_return_status,
1858 x_msg_count =>x_msg_count,
1859 x_msg_data => x_msg_data,
1860 p_tap_id => l_tra_id,
1861 p_credit_amount => l_to_refund,
1862 p_credit_sty_id => l_strm_type_id,
1863 p_khr_id => p_ipyv_rec.khr_id,
1864 p_kle_id => p_ipyv_rec.kle_id,
1865 p_invoice_date => SYSDATE,
1866 p_trx_id => l_trx_type_ID );
1867
1868 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1869 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1870 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1871 RAISE OKC_API.G_EXCEPTION_ERROR;
1872 END IF;
1873
1874 ELSIF (ln_premium > l_total_paid) THEN
1875 l_tra_id := OKC_API.G_MISS_NUM ;
1876 l_to_refund := ln_premium - l_total_paid ;
1877
1878 -- cursor fetch replaced with the call to get the stream type id
1879 -- changed for user defined sreams, bug 3924300
1880 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1881 'INSURANCE_PAYABLE',
1882 l_return_status,
1883 l_strm_type_id);
1884
1885 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1886 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1887 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1888 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1889 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
1890 RAISE OKC_API.G_EXCEPTION_ERROR;
1891 END IF;
1892
1893
1894
1895 -- GET TRANSACTION TYPE
1896 OPEN c_trx_type ('Disbursement', 'US');
1897 FETCH c_trx_type INTO l_trx_type_ID;
1898 IF(c_trx_type%NOTFOUND) THEN
1899 l_attribute_label := OKL_ACCOUNTING_UTIL.get_message_token('OKL_LA_SEC_INVESTOR','OKL_LA_SEC_BILL'); --3927315
1900 Okc_Api.set_message(G_APP_NAME, 'OKL_AM_NO_TRX_TYPE_FOUND',
1901 'TRY_NAME',l_attribute_label); -- 3745151
1902 l_attribute_label := null;
1903 x_return_status := OKC_API.G_RET_STS_ERROR ;
1904 CLOSE c_trx_type ;
1905 RAISE OKC_API.G_EXCEPTION_ERROR;
1906 END if ;
1907 CLOSE c_trx_type ;
1908
1909 insert_ap_request(p_api_version => l_api_version,
1910 p_init_msg_list => OKL_API.G_FALSE,
1911 x_return_status => l_return_status,
1912 x_msg_count =>x_msg_count,
1913 x_msg_data => x_msg_data,
1914 p_tap_id => l_tra_id,
1915 p_credit_amount => l_to_refund,
1916 p_credit_sty_id => l_strm_type_id,
1917 p_khr_id => p_ipyv_rec.khr_id,
1918 p_kle_id => p_ipyv_rec.kle_id,
1919 p_invoice_date => SYSDATE,
1920 p_trx_id => l_trx_type_ID );
1921
1922 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1923 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1924 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1925 RAISE OKC_API.G_EXCEPTION_ERROR;
1926 END IF;
1927 END IF ;
1928 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1929
1930 EXCEPTION
1931 WHEN OKC_API.G_EXCEPTION_ERROR THEN
1932 x_return_status := OKC_API.HANDLE_EXCEPTIONS
1933 (
1934 l_api_name,
1935 G_PKG_NAME,
1936 'OKC_API.G_RET_STS_ERROR',
1937 x_msg_count,
1938 x_msg_data,
1939 '_PROCESS'
1940 );
1941 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1942 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1943 (
1944 l_api_name,
1945 G_PKG_NAME,
1946 'OKC_API.G_RET_STS_UNEXP_ERROR',
1947 x_msg_count,
1948 x_msg_data,
1949 '_PROCESS'
1950 );
1951 WHEN OTHERS THEN
1952 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1953 (
1954 l_api_name,
1955 G_PKG_NAME,
1956 'OTHERS',
1957 x_msg_count,
1958 x_msg_data,
1959 '_PROCESS'
1960 );
1961 END calc_vendor_clawback ;
1962
1963 PROCEDURE Inactivate_open_items(
1964
1965 p_api_version IN NUMBER,
1966 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1967 x_return_status OUT NOCOPY VARCHAR2,
1968 x_msg_count OUT NOCOPY NUMBER,
1969 x_msg_data OUT NOCOPY VARCHAR2,
1970 p_contract_id IN NUMBER,
1971 p_contract_line IN NUMBER,
1972 p_policy_status IN VARCHAR2
1973 )
1974 IS
1975 l_api_name CONSTANT VARCHAR2(30) := 'Inactivate_open_items';
1976 l_api_version CONSTANT NUMBER := 1;
1977 l_return_status VARCHAR2(1) ;
1978
1979 l_recv_strm_id NUMBER ;
1980 l_payb_strm_id NUMBER ;
1981 l_paybacc_strm_id NUMBER ;
1982 l_recvacc_strm_id NUMBER ;
1983 ls_strm_type VARCHAR2(30);
1984 ls_strm_purpose varchar2(100);
1985
1986
1987 l_stream_element_id NUMBER ;
1988 l_stream NUMBER ;
1989
1990 --- For Recievables
1991 CURSOR c_okl_strem_rec(l_recv_strm_id NUMBER) IS
1992 SELECT STM.ID
1993 FROM OKL_STREAMS STM
1994 WHERE STM.STY_ID = l_recv_strm_id
1995 AND STM.KLE_ID = p_contract_line
1996 AND STM.KHR_ID = p_contract_id;
1997
1998
1999
2000 ---- For accrual
2001 CURSOR c_okl_strem_rec_acc (l_recv_strm_id NUMBER) IS
2002 SELECT STM.ID
2003 FROM OKL_STREAMS STM
2004 WHERE STM.STY_ID = l_recv_strm_id
2005 AND STM.KLE_ID = p_contract_line
2006 AND STM.KHR_ID = p_contract_id
2007 AND STM.PURPOSE_CODE IS NULL;
2008
2009
2010 ---- For Reporting accrual
2011 CURSOR c_okl_strem_rec_repacc (l_recv_strm_id NUMBER) IS
2012 SELECT STM.ID
2013 FROM OKL_STREAMS STM
2014 WHERE STM.STY_ID = l_recv_strm_id
2015 AND STM.KLE_ID = p_contract_line
2016 AND STM.KHR_ID = p_contract_id
2017 AND STM.PURPOSE_CODE ='REPORT';
2018
2019
2020 CURSOR c_okl_strem_type_rec(ls_strm_type VARCHAR2) IS
2021 select ID
2022 from OKL_STRM_TYPE_TL
2023 where NAME = ls_strm_type
2024 AND LANGUAGE = 'US';
2025
2026 p_stmv_rec Okl_Streams_Pub.stmv_rec_type;
2027 x_stmv_rec Okl_Streams_Pub.stmv_rec_type;
2028
2029 BEGIN
2030 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2031 G_PKG_NAME,
2032 p_init_msg_list,
2033 l_api_version,
2034 p_api_version,
2035 '_PROCESS',
2036 x_return_status);
2037 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2038 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2039 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2040 RAISE OKC_API.G_EXCEPTION_ERROR;
2041 END IF;
2042
2043 -- Setup data
2044 p_stmv_rec.ACTIVE_YN := 'N' ;
2045 p_stmv_rec.SAY_CODE := 'HIST';
2046 p_stmv_rec.DATE_HISTORY := SYSDATE ;
2047
2048 -- Receivable
2049 ls_strm_type := 'INSURANCE RECEIVABLE' ;
2050 ls_strm_purpose := 'INSURANCE_RECEIVABLE';
2051
2052
2053 -- cursor fetch replaced with the call to get the stream type id
2054 -- changed for user defined streams, bug 3924300
2055
2056 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
2057 ls_strm_purpose,
2058 l_return_status,
2059 l_recv_strm_id);
2060
2061 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2062 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2063 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2064 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2065 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_COL_NAME_TOKEN,ls_strm_purpose);
2066 RAISE OKC_API.G_EXCEPTION_ERROR;
2067 END IF;
2068
2069
2070 ---
2071 OPEN c_okl_strem_rec(l_recv_strm_id);
2072 FETCH c_okl_strem_rec INTO p_stmv_rec.id;
2073 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2074
2075 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2076 IF(L_DEBUG_ENABLED='Y') THEN
2077 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
2078 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
2079 END IF;
2080 IF(IS_DEBUG_PROCEDURE_ON) THEN
2081 BEGIN
2082 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2083 END;
2084 END IF;
2085 OKL_STREAMS_PUB.update_streams(
2086 p_api_version
2087 ,p_init_msg_list
2088 ,x_return_status
2089 ,x_msg_count
2090 ,x_msg_data
2091 ,p_stmv_rec
2092 ,x_stmv_rec
2093 );
2094 IF(IS_DEBUG_PROCEDURE_ON) THEN
2095 BEGIN
2096 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2097 END;
2098 END IF;
2099 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2100
2101 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2102 CLOSE c_okl_strem_rec ;
2103 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2104 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2105 CLOSE c_okl_strem_rec ;
2106 RAISE OKC_API.G_EXCEPTION_ERROR;
2107 END IF;
2108 END IF;
2109 CLOSE c_okl_strem_rec ;
2110
2111 -- Receivable Accounting
2112 p_stmv_rec := Okl_StM_PVT.g_miss_stmv_rec;
2113
2114 ls_strm_type := 'INSURANCE INCOME' ;
2115 ls_strm_purpose := 'INSURANCE_INCOME_ACCRUAL';
2116
2117 p_stmv_rec.ACTIVE_YN := 'N' ;
2118 p_stmv_rec.SAY_CODE := 'HIST';
2119 p_stmv_rec.DATE_HISTORY := SYSDATE ;
2120
2121
2122
2123 -- cursor fetch replaced with the call to get the stream type id
2124 -- changed for user defined streams, bug 3924300
2125 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
2126 ls_strm_purpose,
2127 l_return_status,
2128 l_recv_strm_id);
2129
2130 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2131 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2132 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2133 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2134 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,ls_strm_purpose); --bug 4024785
2135 RAISE OKC_API.G_EXCEPTION_ERROR;
2136 END IF;
2137
2138
2139
2140 --- For Accrual
2141 OPEN c_okl_strem_rec_acc(l_recv_strm_id);
2142 FETCH c_okl_strem_rec_acc INTO p_stmv_rec.id;
2143 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2144 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2145 IF(IS_DEBUG_PROCEDURE_ON) THEN
2146 BEGIN
2147 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2148 END;
2149 END IF;
2150 OKL_STREAMS_PUB.update_streams(
2151 p_api_version
2152 ,p_init_msg_list
2153 ,x_return_status
2154 ,x_msg_count
2155 ,x_msg_data
2156 ,p_stmv_rec
2157 ,x_stmv_rec
2158 );
2159 IF(IS_DEBUG_PROCEDURE_ON) THEN
2160 BEGIN
2161 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2162 END;
2163 END IF;
2164 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2165
2166 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2167 CLOSE c_okl_strem_rec_acc ;
2168 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2169 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2170 CLOSE c_okl_strem_rec_acc ;
2171 RAISE OKC_API.G_EXCEPTION_ERROR;
2172 END IF;
2173 END IF;
2174 CLOSE c_okl_strem_rec_acc ;
2175
2176
2177 --- For Reporing Accrual
2178 OPEN c_okl_strem_rec_repacc(l_recv_strm_id);
2179 FETCH c_okl_strem_rec_repacc INTO p_stmv_rec.id;
2180 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2181 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2182 IF(IS_DEBUG_PROCEDURE_ON) THEN
2183 BEGIN
2184 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2185 END;
2186 END IF;
2187 OKL_STREAMS_PUB.update_streams(
2188 p_api_version
2189 ,p_init_msg_list
2190 ,x_return_status
2191 ,x_msg_count
2192 ,x_msg_data
2193 ,p_stmv_rec
2194 ,x_stmv_rec
2195 );
2196 IF(IS_DEBUG_PROCEDURE_ON) THEN
2197 BEGIN
2198 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2199 END;
2200 END IF;
2201 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2202
2203 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2204 CLOSE c_okl_strem_rec_repacc ;
2205 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2206 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2207 CLOSE c_okl_strem_rec_repacc ;
2208 RAISE OKC_API.G_EXCEPTION_ERROR;
2209 END IF;
2210 END IF;
2211 CLOSE c_okl_strem_rec_repacc ;
2212
2213
2214 IF (p_policy_status = 'ACTIVE') THEN
2215 -- payable
2216 p_stmv_rec := Okl_StM_PVT.g_miss_stmv_rec;
2217 p_stmv_rec.ACTIVE_YN := 'N' ;
2218 p_stmv_rec.SAY_CODE := 'HIST';
2219 p_stmv_rec.DATE_HISTORY := SYSDATE ;
2220
2221 ls_strm_type := 'INSURANCE PAYABLE' ;
2222 ls_strm_purpose := 'INSURANCE_PAYABLE';
2223
2224 -- cursor fetch replaced with the call to get the stream type id,
2225 -- changed for user defined streams, Bug 3924300
2226
2227 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
2228 ls_strm_purpose,
2229 l_return_status,
2230 l_recv_strm_id);
2231
2232 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2233 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2234 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2235 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2236 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,ls_strm_purpose); --bug 4024785
2237 RAISE OKC_API.G_EXCEPTION_ERROR;
2238 END IF;
2239
2240
2241 OPEN c_okl_strem_rec(l_recv_strm_id);
2242 FETCH c_okl_strem_rec INTO p_stmv_rec.id;
2243 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2244 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2245 IF(IS_DEBUG_PROCEDURE_ON) THEN
2246 BEGIN
2247 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2248 END;
2249 END IF;
2250 OKL_STREAMS_PUB.update_streams(
2251 p_api_version
2252 ,p_init_msg_list
2253 ,x_return_status
2254 ,x_msg_count
2255 ,x_msg_data
2256 ,p_stmv_rec
2257 ,x_stmv_rec
2258 );
2259 IF(IS_DEBUG_PROCEDURE_ON) THEN
2260 BEGIN
2261 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2262 END;
2263 END IF;
2264 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2265
2266 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2267 CLOSE c_okl_strem_rec ;
2268 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2269 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2270 CLOSE c_okl_strem_rec ;
2271 RAISE OKC_API.G_EXCEPTION_ERROR;
2272 END IF;
2273 END IF;
2274 CLOSE c_okl_strem_rec ;
2275
2276
2277 -- Payable Accounting
2278 p_stmv_rec := Okl_StM_PVT.g_miss_stmv_rec;
2279 p_stmv_rec.ACTIVE_YN := 'N' ;
2280 p_stmv_rec.SAY_CODE := 'HIST';
2281 p_stmv_rec.DATE_HISTORY := SYSDATE ;
2282
2283
2284 ls_strm_type := 'INSURANCE EXPENSE' ;
2285 ls_strm_purpose := 'INSURANCE_EXPENSE_ACCRUAL';
2286
2287
2288 -- cursor fetch replaced with the call to get the stream type id,
2289 -- changed for user defined streams, bug 3924300
2290
2291 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
2292 ls_strm_purpose,
2293 l_return_status,
2294 l_recv_strm_id);
2295
2296 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2297 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2298 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2299 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2300 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN ,ls_strm_purpose); --bug 4024785
2301 RAISE OKC_API.G_EXCEPTION_ERROR;
2302 END IF;
2303
2304
2305
2306 --- For Accrual
2307 OPEN c_okl_strem_rec_acc(l_recv_strm_id);
2308 FETCH c_okl_strem_rec_acc INTO p_stmv_rec.id;
2309 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2310 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2311 IF(IS_DEBUG_PROCEDURE_ON) THEN
2312 BEGIN
2313 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2314 END;
2315 END IF;
2316 OKL_STREAMS_PUB.update_streams(
2317 p_api_version
2318 ,p_init_msg_list
2319 ,x_return_status
2320 ,x_msg_count
2321 ,x_msg_data
2322 ,p_stmv_rec
2323 ,x_stmv_rec
2324 );
2325 IF(IS_DEBUG_PROCEDURE_ON) THEN
2326 BEGIN
2327 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2328 END;
2329 END IF;
2330 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2331
2332 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2333 CLOSE c_okl_strem_rec_acc ;
2334 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2335 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2336 CLOSE c_okl_strem_rec_acc ;
2337 RAISE OKC_API.G_EXCEPTION_ERROR;
2338 END IF;
2339 END IF;
2340 CLOSE c_okl_strem_rec_acc ;
2341
2342
2343
2344 --- For Reporting Accrual
2345 OPEN c_okl_strem_rec_repacc(l_recv_strm_id);
2346 FETCH c_okl_strem_rec_repacc INTO p_stmv_rec.id;
2347 IF(p_stmv_rec.id IS NOT NULL AND p_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
2348 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2349 IF(IS_DEBUG_PROCEDURE_ON) THEN
2350 BEGIN
2351 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2352 END;
2353 END IF;
2354 OKL_STREAMS_PUB.update_streams(
2355 p_api_version
2356 ,p_init_msg_list
2357 ,x_return_status
2358 ,x_msg_count
2359 ,x_msg_data
2360 ,p_stmv_rec
2361 ,x_stmv_rec
2362 );
2363 IF(IS_DEBUG_PROCEDURE_ON) THEN
2364 BEGIN
2365 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_STREAMS_PUB.update_streams ');
2366 END;
2367 END IF;
2368 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
2369
2370 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2371 CLOSE c_okl_strem_rec_repacc ;
2372 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2373 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2374 CLOSE c_okl_strem_rec_repacc ;
2375 RAISE OKC_API.G_EXCEPTION_ERROR;
2376 END IF;
2377 END IF;
2378 CLOSE c_okl_strem_rec_repacc ;
2379
2380 END IF;
2381
2382 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2383
2384 EXCEPTION
2385 WHEN OKC_API.G_EXCEPTION_ERROR THEN
2386 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2387 (
2388 l_api_name,
2389 G_PKG_NAME,
2390 'OKC_API.G_RET_STS_ERROR',
2391 x_msg_count,
2392 x_msg_data,
2393 '_PROCESS'
2394 );
2395 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2396 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2397 (
2398 l_api_name,
2399 G_PKG_NAME,
2400 'OKC_API.G_RET_STS_UNEXP_ERROR',
2401 x_msg_count,
2402 x_msg_data,
2403 '_PROCESS'
2404 );
2405 WHEN OTHERS THEN
2406 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2407 (
2408 l_api_name,
2409 G_PKG_NAME,
2410 'OTHERS',
2411 x_msg_count,
2412 x_msg_data,
2413 '_PROCESS'
2414 );
2415 END Inactivate_open_items ;
2416
2417
2418 PROCEDURE cancel_policies(
2419 p_api_version IN NUMBER,
2420 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2421 x_return_status OUT NOCOPY VARCHAR2,
2422 x_msg_count OUT NOCOPY NUMBER,
2423 x_msg_data OUT NOCOPY VARCHAR2,
2424 p_contract_id IN NUMBER,
2425 p_cancellation_date IN DATE
2426 ,p_crx_code IN VARCHAR2 DEFAULT NULL --++++++++ Effective Dated Term Qte changes +++++++++
2427 )
2428 IS
2429
2430 l_api_name CONSTANT VARCHAR2(30) := 'cancel_policies';
2431 l_api_version CONSTANT NUMBER := 1;
2432 l_return_status VARCHAR2(1) ;
2433 l_ipyv_rec ipyv_rec_type;
2434 lx_ipyv_rec ipyv_rec_type;
2435 l_cancellation_date DATE ;
2436
2437 -- 3976894 Modified cursor to fetch Pending policies and also
2438 -- 3976894 get the ISS_CODE in the select clause.
2439 CURSOR c_okl_ins_policies(p_contract_id NUMBER) IS
2440 SELECT ID, IPY_TYPE, ISS_CODE
2441 FROM OKL_INS_POLICIES_B
2442 WHERE KHR_ID = p_contract_id
2443 and ISS_CODE in ('ACTIVE','PENDING');
2444
2445 BEGIN
2446 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2447 G_PKG_NAME,
2448 p_init_msg_list,
2449 l_api_version,
2450 p_api_version,
2451 '_PROCESS',
2452 x_return_status);
2453 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2454 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2455 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2456 RAISE OKC_API.G_EXCEPTION_ERROR;
2457 END IF;
2458
2459 -- Check for contract_id (NULL)
2460 IF ((p_contract_id IS NULL ) OR (p_contract_id = OKC_API.G_MISS_NUM )) THEN
2461 x_return_status := OKC_API.G_RET_STS_ERROR;
2462 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Contract ID');
2463 RAISE OKC_API.G_EXCEPTION_ERROR;
2464
2465 END IF;
2466
2467
2468
2469 -- Check for Date put SYSDATE if NULL
2470 l_cancellation_date := p_cancellation_date ;
2471 IF ((l_cancellation_date IS NULL ) OR (l_cancellation_date = OKC_API.G_MISS_DATE )) THEN
2472
2473 l_cancellation_date := SYSDATE;
2474
2475 END IF;
2476
2477
2478
2479
2480 OPEN c_okl_ins_policies(p_contract_id);
2481
2482
2483 --------------
2484 LOOP
2485
2486 -- 3976894 Modified to fetch ISS_CODE
2487 FETCH c_okl_ins_policies INTO l_ipyv_rec.ID, l_ipyv_rec.IPY_TYPE, l_ipyv_rec.ISS_CODE;
2488 EXIT WHEN c_okl_ins_policies%NOTFOUND;
2489 IF (l_ipyv_rec.IPY_TYPE IS NULL) OR (l_ipyv_rec.IPY_TYPE = OKC_API.G_MISS_CHAR) THEN
2490 NULL;
2491
2492 ELSIF( l_ipyv_rec.IPY_TYPE <> 'THIRD_PARTY_POLICY' )THEN
2493 --l_ipyv_rec.crx_code := 'CONTRACT_CANCELED' ;
2494 ---+++ Effective dated Termination Changes Start+++++------
2495 IF (p_crx_code IS NOT NULL) OR (p_crx_code <> OKC_API.G_MISS_CHAR ) THEN
2496 l_ipyv_rec.crx_code := p_crx_code;--'CONTRACT_CANCELED' ;
2497 END IF;
2498 ---+++ Effective dated Termination Changes End +++++------
2499 l_ipyv_rec.cancellation_date := p_cancellation_date;
2500
2501 -- bug 3976894 : Added check for policy status and cancel in
2502 -- case of Active else set the policy status to deleted
2503 -- by calling delete policy.
2504 IF (l_ipyv_rec.ISS_CODE = 'ACTIVE') THEN
2505 cancel_policy(
2506 p_api_version => l_api_version,
2507 p_init_msg_list => OKC_API.G_FALSE,
2508 x_return_status => x_return_status,
2509 x_msg_count => x_msg_count,
2510 x_msg_data => x_msg_data,
2511 p_ipyv_rec => l_ipyv_rec,
2512 x_ipyv_rec => lx_ipyv_rec);
2513 ELSIF(l_ipyv_rec.ISS_CODE = 'PENDING') THEN
2514 delete_policy(
2515 p_api_version => l_api_version,
2516 p_init_msg_list => OKC_API.G_FALSE,
2517 x_return_status => l_return_status,
2518 x_msg_count => x_msg_count,
2519 x_msg_data => x_msg_data,
2520 p_ipyv_rec => l_ipyv_rec,
2521 x_ipyv_rec => lx_ipyv_rec);
2522 END IF;
2523 END IF;
2524 END LOOP ;
2525 CLOSE c_okl_ins_policies ;
2526 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2527
2528 EXCEPTION
2529 WHEN OKC_API.G_EXCEPTION_ERROR THEN
2530 x_return_status := OKC_API.HANDLE_EXCEPTIONS
2531 (
2532 l_api_name,
2533 G_PKG_NAME,
2534 'OKC_API.G_RET_STS_ERROR',
2535 x_msg_count,
2536 x_msg_data,
2537 '_PROCESS'
2538 );
2539 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2540 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2541 (
2542 l_api_name,
2543 G_PKG_NAME,
2544 'OKC_API.G_RET_STS_UNEXP_ERROR',
2545 x_msg_count,
2546 x_msg_data,
2547 '_PROCESS'
2548 );
2549 WHEN OTHERS THEN
2550 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2551 (
2552 l_api_name,
2553 G_PKG_NAME,
2554 'OTHERS',
2555 x_msg_count,
2556 x_msg_data,
2557 '_PROCESS'
2558 );
2559 END cancel_policies;
2560
2561 -------------------------------------------------------------------------------------
2562 --Validate Cancel_policy
2563 --------------------------------------------------------------------------------
2564 --Added as part of bug 4056603
2565 FUNCTION Validate_Cancel_Policy
2566 (p_chr_id IN NUMBER) RETURN VARCHAR2 IS
2567 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Cancel_Policy';
2568 l_api_version CONSTANT NUMBER := 1.0;
2569 x_cancel_flag VARCHAR2(1) := 'N';
2570 --ger Max version
2571 CURSOR c_get_chr_version(cp_chr_id NUMBER) IS
2572 SELECT MAX(major_version)
2573 FROM OKC_K_HEADERS_BH
2574 WHERE id = cp_chr_id;
2575 --- Check for addition of the fixed asset line
2576 -- gboomina Bug 5015042 - Start
2577 -- Changing where condition to handle more than one asset
2578 -- gboomina Bug 5054871 - Start
2579 -- Changing Cursor definition to check asset category of
2580 -- asset with Insurance Product.
2581 CURSOR c_asset_addition(cp_chr_id NUMBER) IS
2582 SELECT 'X'
2583 FROM OKL_K_ASSETS_UV NEW_ASST
2584 WHERE
2585 NEW_ASST.KLE_ID not in
2586 (SELECT INA.KLE_ID
2587 FROM
2588 OKL_INS_ASSETS INA,
2589 OKL_INS_POLICIES_B IPY
2590 WHERE
2591 IPY.KHR_ID = cp_chr_id
2592 AND IPY.ID = INA.IPY_ID
2593 AND IPY.ISS_CODE IN ( 'PENDING', 'ACTIVE')
2594 )
2595 AND NEW_ASST.CONTRACT_ID = cp_chr_id
2596 AND ROWNUM = 1;
2597 -- gboomina Bug 5054871 - End
2598 -- gboomina Bug 5015042 - End
2599 --- Check for termination of the fixed asset line
2600 CURSOR c_asset_termination(cp_chr_id NUMBER) IS
2601 SELECT 'X'
2602 FROM OKL_INS_ASSETS INA,
2603 OKC_K_LINES_B FINAC_CLE,
2604 OKC_LINE_STYLES_B FINAC_LS ,
2605 OKL_INS_POLICIES_B IPY
2606 WHERE FINAC_CLE.ID = INA.KLE_ID
2607 AND FINAC_LS.LTY_CODE = 'FREE_FORM1'
2608 AND FINAC_CLE.LSE_ID = FINAC_LS.ID
2609 AND FINAC_CLE.STS_CODE <> 'BOOKED'
2610 AND IPY.KHR_ID = FINAC_CLE.chr_id
2611 AND IPY.ID = INA.IPY_ID
2612 AND FINAC_CLE.chr_id = cp_chr_id
2613 AND IPY.ISS_CODE IN ( 'PENDING', 'ACTIVE')
2614 AND ROWNUM = 1;
2615 -- Quantity change
2616 CURSOR c_quantity_changed(cp_chr_id NUMBER,cp_major_version NUMBER) IS
2617 SELECT 'X'
2618 FROM
2619 OKC_K_LINES_B C_CLE,
2620 OKC_K_ITEMS C_CIT,
2621 OKC_K_ITEMS_H H_CIT,
2622 OKC_LINE_STYLES_B C_LSE,
2623 OKL_INS_POLICIES_B IPY,
2624 OKL_INS_ASSETS INA
2625 WHERE c_cle.dnz_chr_id = cp_chr_id
2626 AND c_cle.id = c_cit.cle_id
2627 AND c_cle.lse_id = c_lse.id
2628 AND c_cit.id = h_cit.id
2629 AND c_lse.lty_code = 'FIXED_ASSET'
2630 AND c_cit.jtot_object1_code = 'OKX_ASSET'
2631 AND h_cit.MAJOR_VERSION = cp_major_version
2632 AND c_cit.number_of_items <> h_cit.number_of_items
2633 AND INA.KLE_ID = c_cle.CLE_ID
2634 AND IPY.KHR_ID = c_cle.dnz_chr_id
2635 AND IPY.ID = INA.IPY_ID
2636 AND IPY.ISS_CODE IN ( 'PENDING', 'ACTIVE')
2637 AND ROWNUM = 1;
2638 -- Unit Cost Changed
2639 CURSOR c_get_unit_price(cp_chr_id NUMBER, cp_version NUMBER) IS
2640 SELECT 'X'
2641 FROM OKC_K_LINES_B C_CLE,
2642 OKC_K_LINES_BH H_CLE,
2643 OKC_LINE_STYLES_B C_LSE,
2644 OKL_K_LINES c_kle,
2645 OKL_K_LINES_H h_kle ,
2646 OKL_INS_POLICIES_B IPY,
2647 OKL_INS_ASSETS INA
2648 WHERE c_cle.dnz_chr_id = cp_chr_id
2649 AND c_cle.id = h_cle.id
2650 AND c_cle.lse_id = c_lse.id
2651 AND c_cle.id = c_kle.id
2652 AND h_kle.id = c_kle.id
2653 AND h_cle.major_version = cp_version
2654 AND c_lse.lty_code = 'FIXED_ASSET'
2655 AND c_cle.price_unit <> h_cle.price_unit
2656 AND INA.KLE_ID = c_cle.CLE_ID
2657 AND IPY.KHR_ID = c_cle.dnz_chr_id
2658 AND IPY.ID = INA.IPY_ID
2659 AND IPY.ISS_CODE IN ( 'PENDING', 'ACTIVE')
2660 AND ROWNUM = 1;
2661 --- Location Change
2662 -- get start date and term
2663 CURSOR c_get_chr_start_end_date(cp_version NUMBER,cp_chr_id NUMBER) IS
2664 SELECT c_chr.START_DATE c_start_date,h_chr.START_DATE h_start_date,
2665 round (months_between(c_chr.end_date,c_chr.START_DATE)) c_term,
2666 round (months_between(h_chr.end_date,h_chr.START_DATE)) h_term
2667 FROM OKC_K_HEADERS_B C_CHR,
2668 OKC_K_HEADERS_BH H_CHR
2669 WHERE c_chr.id = h_chr.id
2670 AND h_chr.major_version = cp_version
2671 AND c_chr.id = cp_chr_id
2672 AND ROWNUM = 1;
2673 l_version NUMBER;
2674 l_line_version NUMBER;
2675 l_c_start_date DATE;
2676 l_h_start_date DATE;
2677 l_c_term NUMBER;
2678 l_h_term NUMBER;
2679 l_flag VARCHAR2(1) := 'N';
2680 BEGIN
2681 OPEN c_get_chr_version(p_chr_id);
2682 FETCH c_get_chr_version INTO l_version;
2683 CLOSE c_get_chr_version;
2684 -- for Addition check
2685 OPEN c_asset_addition(p_chr_id);
2686 FETCH c_asset_addition INTO l_flag;
2687 IF (l_flag = 'X' ) THEN
2688 CLOSE c_asset_addition;
2689 x_cancel_flag := 'Y' ;
2690 RETURN (x_cancel_flag);
2691 END IF ;
2692 CLOSE c_asset_addition;
2693 -- for asset termination
2694 OPEN c_asset_termination(p_chr_id);
2695 FETCH c_asset_termination INTO l_flag;
2696 IF (l_flag = 'X' ) THEN
2697 CLOSE c_asset_termination;
2698 x_cancel_flag := 'Y' ;
2699 RETURN (x_cancel_flag);
2700 END IF ;
2701 CLOSE c_asset_termination;
2702 -- gboomina Bug 5188230 - Start
2703 -- Passing correct values to c_quantity_changed cursor
2704 OPEN c_quantity_changed( p_chr_id, l_version);
2705 -- gboomina Bug 5188230 - End
2706 FETCH c_quantity_changed INTO l_flag;
2707 IF (l_flag = 'X' ) THEN
2708 CLOSE c_quantity_changed;
2709 x_cancel_flag := 'Y' ;
2710 RETURN (x_cancel_flag);
2711 END IF ;
2712 CLOSE c_quantity_changed;
2713 OPEN c_get_unit_price(p_chr_id, l_version);
2714 FETCH c_get_unit_price INTO l_flag;
2715 IF (l_flag = 'X' ) THEN
2716 CLOSE c_get_unit_price;
2717 x_cancel_flag := 'Y' ;
2718 RETURN (x_cancel_flag);
2719 END IF ;
2720 CLOSE c_get_unit_price;
2721 OPEN c_get_chr_start_end_date(l_version,p_chr_id);
2722 FETCH c_get_chr_start_end_date INTO l_c_start_date,l_h_start_date,l_c_term,l_h_term;
2723 CLOSE c_get_chr_start_end_date;
2724 IF (l_c_start_date <> l_h_start_date) OR (l_c_term <> l_h_term) THEN
2725 x_cancel_flag := 'Y';
2726 RETURN(x_cancel_flag);
2727 ELSE
2728 x_cancel_flag := 'N';
2729 RETURN(x_cancel_flag);
2730 END IF;
2731 EXCEPTION
2732 WHEN OTHERS THEN
2733 x_cancel_flag := 'N';
2734 RETURN(x_cancel_flag);
2735 END Validate_Cancel_Policy;
2736
2737
2738 ----------------------------------------------
2739 --- Function get_insurance_info
2740 ----------------------------------------------
2741 --++ Added as part of fix for bug 4056603 ++--
2742 FUNCTION get_insurance_info(p_ipy_id IN NUMBER,
2743 x_return_status OUT NOCOPY VARCHAR2 ) RETURN ipyv_rec_type IS
2744 --Skgautam:4542203 : added IPYB.iss_code
2745 CURSOR c_ins_info( c_ipy_id NUMBER) IS
2746 SELECT IPYB.KHR_ID, IPYB.KLE_ID ,IPYB.OBJECT_VERSION_NUMBER, IPYB.date_from,
2747 IPYB.ipy_type,IPYB.factor_code,IPYB.IPF_CODE,IPYB.date_to,IPYB.premium,IPYB.COVERED_AMOUNT,IPYB.ISS_CODE
2748 FROM OKL_INS_POLICIES_B IPYB
2749 WHERE IPYB.ID = c_ipy_id;
2750
2751 lx_ipyv_rec ipyv_rec_type;
2752
2753 BEGIN
2754 lx_ipyv_rec.id := p_ipy_id;
2755 --Skgautam:4542203 : fetched IPYB.iss_code
2756 OPEN c_ins_info(p_ipy_id);
2757 FETCH c_ins_info INTO lx_ipyv_rec.KHR_ID , lx_ipyv_rec.KLE_ID
2758 ,lx_ipyv_rec.OBJECT_VERSION_NUMBER, lx_ipyv_rec.date_from, lx_ipyv_rec.ipy_type,
2759 lx_ipyv_rec.FACTOR_CODE,lx_ipyv_rec.IPF_CODE,lx_ipyv_rec.date_to,lx_ipyv_rec.premium,
2760 lx_ipyv_rec.covered_amount,lx_ipyv_rec.iss_code;
2761 IF(c_ins_info%NOTFOUND) THEN
2762 Okc_Api.set_message(G_APP_NAME, G_INVALID_POLICY );
2763 x_return_status := OKC_API.G_RET_STS_ERROR ;
2764 CLOSE c_ins_info ;
2765 RAISE OKC_API.G_EXCEPTION_ERROR;
2766 END IF ;
2767 CLOSE c_ins_info ;
2768 RETURN lx_ipyv_rec;
2769 EXCEPTION
2770 WHEN OTHERS THEN
2771 -- store SQL error message on message stack for caller
2772 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2773 -- notify caller of an UNEXPECTED error
2774 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2775 RETURN NULL;
2776 END get_insurance_info;
2777 ----------------------------------------------------------
2778 -- Calculate customer Refund
2779 -----------------------------------------------------------
2780 FUNCTION get_cust_refund(p_ipyv_rec IN ipyv_rec_type,
2781 x_return_status OUT NOCOPY VARCHAR2) RETURN NUMBER IS
2782 l_stm_type_rcvbl_id OKL_STRM_TYPE_TL.ID%TYPE := 0;
2783 l_no_of_rec NUMBER := 0;
2784 l_monthly_premium NUMBER;
2785 l_freq_factor NUMBER;
2786 l_vld_cncl_dt VARCHAR2(1) := '?';
2787 l_total_manual_invoice_months NUMBER;
2788 l_total_num_months_paid NUMBER;
2789 lx_refund_amount NUMBER;
2790 l_unconsumed_months NUMBER;
2791 l_total_consumed_months NUMBER;
2792 l_ipyv_rec ipyv_rec_type;
2793 -- gboomina Bug 4885759 - Added - Start
2794 l_no_days_in_last_month NUMBER;
2795 l_return_status VARCHAR2(1);
2796 -- gboomina Bug 4885759 - End
2797
2798 --Get total amount paid by the customer
2799 CURSOR c_total_amount_paid (c_sty_id NUMBER,c_contract_id NUMBER,c_contract_line_id NUMBER)IS
2800 SELECT COUNT(*)
2801 FROM okl_strm_elements STRE, OKL_STREAMS STR
2802 WHERE STR.ID = STRE.STM_ID
2803 AND STR.STY_ID = c_sty_id
2804 AND STRE.DATE_BILLED IS NOT NULL
2805 AND STR.KHR_ID = c_contract_id
2806 AND STR.KLE_ID = c_contract_line_id;
2807 CURSOR C_OKL_STRM_TYPE_V(ls_stm_code VARCHAR2) IS
2808 SELECT ID
2809 FROM OKL_STRM_TYPE_TL
2810 WHERE NAME = ls_stm_code
2811 AND LANGUAGE = 'US';
2812 BEGIN
2813 l_ipyv_rec := p_ipyv_rec;
2814 OPEN C_OKL_STRM_TYPE_V('INSURANCE RECEIVABLE');
2815 FETCH C_OKL_STRM_TYPE_V INTO l_stm_type_rcvbl_id;
2816 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
2817 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
2818 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE RECEIVABLE');
2819 x_return_status := OKC_API.G_RET_STS_ERROR ;
2820 CLOSE C_OKL_STRM_TYPE_V ;
2821 RAISE OKC_API.G_EXCEPTION_ERROR;
2822 END IF ;
2823 CLOSE C_OKL_STRM_TYPE_V;
2824 -- get total amount received from customer
2825 OPEN c_total_amount_paid(l_stm_type_rcvbl_id,l_ipyv_rec.KHR_ID,l_ipyv_rec.KLE_ID) ;
2826 FETCH c_total_amount_paid INTO l_no_of_rec;
2827 IF(c_total_amount_paid%NOTFOUND) THEN
2828 l_no_of_rec := 0;
2829 END IF ;
2830 CLOSE c_total_amount_paid;
2831 -- get freq factor for the payment frequency
2832 IF(l_ipyv_rec.IPF_CODE = 'MONTHLY') THEN
2833 l_freq_factor := 1;
2834 ELSIF(l_ipyv_rec.IPF_CODE = 'BI_MONTHLY') THEN
2835 l_freq_factor := 1/2;
2836 ELSIF(l_ipyv_rec.IPF_CODE = 'HALF_YEARLY') THEN
2837 l_freq_factor := 6;
2838 ELSIF(l_ipyv_rec.IPF_CODE = 'QUARTERLY') THEN
2839 l_freq_factor := 3;
2840 ELSIF(l_ipyv_rec.IPF_CODE = 'YEARLY') THEN
2841 l_freq_factor := 12;
2842 ELSIF(l_ipyv_rec.IPF_CODE = 'LUMP_SUM') THEN
2843 l_freq_factor := ROUND(MONTHS_BETWEEN( l_ipyv_rec.date_to,l_ipyv_rec.date_from));
2844 END IF;
2845 -- get monthly premium
2846 l_monthly_premium := l_ipyv_rec.premium/l_freq_factor ;
2847 ----------------------------------------
2848 -- Caclulation of Refund Months
2849 -----------------------------------------
2850 -- get the number of months paid
2851 l_total_num_months_paid := l_freq_factor * l_no_of_rec;
2852 IF(( l_total_num_months_paid IS NULL) OR (l_total_num_months_paid = OKC_API.G_MISS_NUM )) THEN --[1]
2853 l_total_num_months_paid := 0 ;
2854 END IF ;
2855 -- check to see if the cancellation date is between the start and end date of the policy
2856 --SELECT 'X' INTO l_vld_cncl_dt FROM DUAL
2857 --WHERE l_ipyv_rec.cancellation_date BETWEEN l_ipyv_rec.date_from AND l_ipyv_rec.date_to;
2858 --Check rebook date between start and end date of policy
2859 --IF l_vld_cncl_dt = 'X' THEN --[1.2]
2860 -- gboomina Bug 4994786 Changed - start
2861 -- Instead of implicit cusor, used IF condition check
2862 IF l_ipyv_rec.cancellation_date >= l_ipyv_rec.date_from AND l_ipyv_rec.cancellation_date <= l_ipyv_rec.date_to THEN
2863 -- gboomina Bug 4994786 - end
2864 -- gboomina Bug 4885759 - Start
2865 -- Changed refund_amount calculation to get accurate amount.
2866 l_total_consumed_months := FLOOR(MONTHS_BETWEEN( l_ipyv_rec.cancellation_date,l_ipyv_rec.date_from));
2867
2868 l_no_days_in_last_month := OKL_STREAM_GENERATOR_PVT.get_day_count(ADD_MONTHS(l_ipyv_rec.date_from,l_total_consumed_months),
2869 p_end_date => l_ipyv_rec.cancellation_date,
2870 p_arrears => 'Y',
2871 x_return_status => l_return_status);
2872 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2873 RAISE OKC_API.G_EXCEPTION_ERROR;
2874 END IF;
2875 -- Refund Amount
2876 lx_refund_amount := (l_total_num_months_paid - l_total_consumed_months)* l_monthly_premium - l_no_days_in_last_month * l_monthly_premium/30 ;
2877 -- gboomina Bug 4885759 - End
2878 ELSE -- If rebook is before start date of the policy
2879 -- Issue complete refund
2880 lx_refund_amount := l_total_num_months_paid * l_monthly_premium;
2881 END IF;-- [1.2]
2882 RETURN(lx_refund_amount);
2883
2884 EXCEPTION
2885 WHEN OTHERS THEN
2886 -- store SQL error message on message stack for caller
2887 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2888 -- notify caller of an UNEXPECTED error
2889 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2890 RETURN 0;
2891 END get_cust_refund;
2892 -----------------------------------------
2893 -- Proceduren get_vendor_refund
2894 --------------------------------------------
2895 PROCEDURE get_vendor_refund(
2896 p_api_version IN NUMBER,
2897 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2898 x_return_status OUT NOCOPY VARCHAR2,
2899 x_msg_count OUT NOCOPY NUMBER,
2900 x_msg_data OUT NOCOPY VARCHAR2,
2901 p_ipyv_rec IN ipyv_rec_type,
2902 pn_refund OUT NOCOPY NUMBER
2903 ) IS
2904 l_api_name CONSTANT VARCHAR2(30) := 'get_vendor_refund';
2905 l_api_version CONSTANT NUMBER := 1;
2906 l_return_status VARCHAR2(1) ;
2907 l_start_date DATE;
2908 li_months NUMBER;
2909 l_vld_cncl_dt VARCHAR2(1) := '?';
2910 l_func_total_lessor_premium NUMBER;
2911 l_total_lessor_premium NUMBER;
2912 l_lessor_premium NUMBER;
2913 ln_premium NUMBER;
2914 l_total_paid NUMBER;
2915 ln_refund NUMBER;
2916 l_amount NUMBER;
2917 l_to_refund NUMBER;
2918 l_tra_id NUMBER;
2919 l_pay_strm_type_id NUMBER;
2920 l_Adj_strm_type_id NUMBER;
2921 l_trx_type_id NUMBER;
2922 l_ipyv_rec ipyv_rec_type;
2923 l_attribute_label ak_attributes_tl.attribute_label_long%TYPE := NULL; --3927315
2924
2925 CURSOR c_con_start(c_khr_id NUMBER)IS
2926 SELECT START_DATE
2927 FROM okc_k_headers_b
2928 WHERE id = c_khr_id ;
2929 -- get lease premium
2930 CURSOR c_okl_ins_asset IS
2931 SELECT SUM(lessor_premium)
2932 FROM OKL_INS_ASSETS OINB
2933 WHERE OINB.IPY_ID = p_ipyv_rec.ID
2934 GROUP BY OINB.IPY_ID;
2935 -- calculate total amount paid to vendor
2936 CURSOR c_total_paid(p_stm_type_id NUMBER) IS
2937 SELECT SUM(STRE.AMOUNT)
2938 FROM okl_strm_elements STRE, OKL_STREAMS STR
2939 WHERE STR.ID = STRE.STM_ID
2940 AND STR.STY_ID = p_stm_type_id
2941 AND STRE.DATE_BILLED IS NOT NULL
2942 AND STR.KHR_ID = p_ipyv_rec.KHR_ID
2943 AND STR.KLE_ID = p_ipyv_rec.KLE_ID;
2944
2945 CURSOR c_trx_type (cp_name VARCHAR2, cp_language VARCHAR2) IS
2946 SELECT id
2947 FROM okl_trx_types_tl
2948 WHERE name = cp_name
2949 AND language = cp_language;
2950 CURSOR c_ins_opt_premium (p_covered_amount IN NUMBER) IS
2951 SELECT ((INSURER_RATE * p_covered_amount )/100 )
2952 FROM OKL_INS_POLICIES_B IPYB , OKL_INS_RATES INR
2953 WHERE IPYB.ipt_id = inr.ipt_id AND
2954 kle_id = p_ipyv_rec.KLE_ID and
2955 khr_id = p_ipyv_rec.KHR_ID
2956 AND IPYB.date_from between inr.date_FROM and DECODE(NVL(inr.date_TO,NULL),NULL,SYSDATE, inr.date_TO)
2957 and IPYB.territory_code = inr.ic_id
2958 AND IPYB.FACTOR_VALUE BETWEEN inr.FACTOR_RANGE_START AND inr.FACTOR_RANGE_END ;
2959
2960 l_functional_currency okl_k_headers_full_v.currency_code%TYPE := okl_accounting_util.get_func_curr_code;
2961 x_contract_currency okl_k_headers_full_v.currency_code%TYPE;
2962 x_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
2963 x_currency_conversion_rate okl_k_headers_full_v.currency_conversion_rate%TYPE;
2964 x_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
2965 x_functional_covered_amt NUMBER ;
2966 p_contract_currency fnd_currencies_vl.currency_code%TYPE ;
2967
2968 BEGIN
2969
2970 l_ipyv_rec := p_ipyv_rec;
2971 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2972 G_PKG_NAME,
2973 p_init_msg_list,
2974 l_api_version,
2975 p_api_version,
2976 '_PROCESS',
2977 x_return_status);
2978 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2979 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2980 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2981 RAISE OKC_API.G_EXCEPTION_ERROR;
2982 END IF;
2983
2984 OPEN c_con_start(l_ipyv_rec.khr_id);
2985 FETCH c_con_start INTO l_start_date;
2986 IF(c_con_start%NOTFOUND) THEN
2987 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_VALUE', G_COL_NAME_TOKEN,'Contract Start Date');
2988 x_return_status := OKC_API.G_RET_STS_ERROR ;
2989 CLOSE c_con_start ;
2990 RAISE OKC_API.G_EXCEPTION_ERROR;
2991 END IF ;
2992 CLOSE c_con_start ;
2993 --- How much he should have been paid
2994 IF (p_ipyv_rec.ipy_type = 'LEASE_POLICY') THEN
2995 -- Select premium from insured_asset table
2996 OPEN c_okl_ins_asset;
2997 FETCH c_okl_ins_asset INTO l_lessor_premium;
2998 IF(c_okl_ins_asset%NOTFOUND) THEN
2999 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_POLICY', G_COL_NAME_TOKEN,p_ipyv_rec.ID);
3000 x_return_status := OKC_API.G_RET_STS_ERROR ;
3001 CLOSE c_okl_ins_asset ;
3002 RAISE OKC_API.G_EXCEPTION_ERROR;
3003 END if ;
3004 CLOSE c_okl_ins_asset ;
3005
3006 ELSE
3007 -- Covered amount from contract to functional
3008 OKL_ACCOUNTING_UTIL.convert_to_functional_currency
3009 (
3010 p_ipyv_rec.khr_id,
3011 l_functional_currency ,
3012 l_start_date,
3013 p_ipyv_rec.COVERED_AMOUNT,
3014 x_contract_currency ,
3015 x_currency_conversion_type ,
3016 x_currency_conversion_rate ,
3017 x_currency_conversion_date,
3018 x_functional_covered_amt ) ;
3019 x_functional_covered_amt :=
3020 okl_accounting_util.cross_currency_round_amount(p_amount =>
3021 x_functional_covered_amt,
3022 p_currency_code => l_functional_currency);
3023 OPEN c_ins_opt_premium (x_functional_covered_amt);
3024 FETCH c_ins_opt_premium INTO l_func_total_lessor_premium;
3025 IF(c_ins_opt_premium%NOTFOUND) THEN
3026 Okc_Api.set_message(G_APP_NAME, 'OKL_INVALID_POLICY', G_COL_NAME_TOKEN,p_ipyv_rec.ID);
3027 x_return_status := OKC_API.G_RET_STS_ERROR ;
3028 CLOSE c_ins_opt_premium ;
3029 RAISE OKC_API.G_EXCEPTION_ERROR;
3030 END if ;
3031 --- total lessor premium from functional to contract currency
3032 OKL_ACCOUNTING_UTIL.convert_to_contract_currency
3033 (
3034 p_ipyv_rec.khr_id,
3035 l_functional_currency,
3036 p_ipyv_rec.date_from,
3037 l_func_total_lessor_premium,
3038 x_contract_currency ,
3039 x_currency_conversion_type ,
3040 x_currency_conversion_rate ,
3041 x_currency_conversion_date,
3042 l_total_lessor_premium ) ;
3043 l_total_lessor_premium :=
3044 okl_accounting_util.cross_currency_round_amount(p_amount =>
3045 l_total_lessor_premium,
3046 p_currency_code => x_contract_currency);
3047 END IF ;
3048 IF(p_ipyv_rec.ipf_code = 'MONTHLY') THEN
3049 l_total_lessor_premium := l_lessor_premium ;
3050 ELSIF(p_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
3051 l_total_lessor_premium := l_lessor_premium * 2;
3052 ELSIF(p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
3053 l_total_lessor_premium := l_lessor_premium / 6; --- ETC.
3054 ELSIF(p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
3055 l_total_lessor_premium := l_lessor_premium / 3;
3056 ELSIF(p_ipyv_rec.ipf_code = 'YEARLY') THEN
3057 l_total_lessor_premium := l_lessor_premium / 12;
3058 END IF;
3059
3060 -- Check if the cancellation date is in between start and end date
3061 --SELECT 'X' INTO l_vld_cncl_dt FROM DUAL
3062 --WHERE l_ipyv_rec.cancellation_date BETWEEN l_ipyv_rec.date_from AND l_ipyv_rec.date_to;
3063 --IF l_vld_cncl_dt = 'X' THEN --[3]
3064 -- gboomina Bug 4994786 Changed - start
3065 -- Instead of implicit cusor, used IF condition check
3066 IF l_ipyv_rec.cancellation_date >= l_ipyv_rec.date_from AND l_ipyv_rec.cancellation_date <= l_ipyv_rec.date_to THEN
3067 -- gboomina Bug 4994786 - end
3068 li_months := MONTHS_BETWEEN( l_ipyv_rec.cancellation_date,l_ipyv_rec.date_from);
3069 ELSIF (l_ipyv_rec.cancellation_date <= l_ipyv_rec.date_from ) THEN
3070 li_months := 0;
3071 END IF;-- [3]
3072
3073 -- Money should have been paid (System profile)
3074 ln_premium := li_months * l_total_lessor_premium ;
3075
3076 -- How much have we paid him
3077 -- cursor fetch replaced with the call to get the stream type id
3078 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
3079 'INSURANCE_PAYABLE',
3080 l_return_status,
3081 l_pay_strm_type_id);
3082 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3083 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3084 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3085 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3086 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE');
3087 RAISE OKC_API.G_EXCEPTION_ERROR;
3088 END IF;
3089 OPEN c_total_paid(l_pay_strm_type_id);
3090 FETCH c_total_paid INTO l_total_paid;
3091 IF(c_total_paid%NOTFOUND) THEN
3092 l_total_paid := 0 ;
3093 END IF ;
3094 CLOSE c_total_paid;
3095 IF ((l_total_paid IS NULL ) OR (l_total_paid = OKC_API.G_MISS_NUM )) THEN
3096 l_total_paid := 0;
3097 END IF ;
3098 ln_refund := l_total_paid - ln_premium ;
3099 pn_refund:= ln_refund;
3100 IF (ln_premium < l_total_paid) THEN -- clawback
3101 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
3102 'INSURANCE_ADJUSTMENT',
3103 l_return_status,
3104 l_Adj_strm_type_id);
3105 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3106 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3107 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3108 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3109 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN, 'INSURANCE_ADJUSTMENT'); --bug 4024785
3110 RAISE OKC_API.G_EXCEPTION_ERROR;
3111 END IF;
3112
3113 -- GET MONEY BACK FROM VENDOR
3114 l_to_refund := -ln_refund ;
3115
3116 -- GET TRANSACTION TYPE
3117 OPEN c_trx_type ('Debit Memo', 'US');
3118 FETCH c_trx_type INTO l_trx_type_id;
3119 IF(c_trx_type%NOTFOUND) THEN
3120 Okc_Api.set_message(G_APP_NAME, 'OKL_AM_NO_TRX_TYPE_FOUND',
3121 'TRY_NAME','Debit Memo');-- 3745151
3122 x_return_status := OKC_API.G_RET_STS_ERROR ;
3123 CLOSE c_trx_type ;
3124 RAISE OKC_API.G_EXCEPTION_ERROR;
3125 END if ;
3126 CLOSE c_trx_type;
3127
3128 -- Call API to create Debit Memo
3129 insert_ap_request(p_api_version => l_api_version,
3130 p_init_msg_list => OKL_API.G_FALSE,
3131 x_return_status => l_return_status,
3132 x_msg_count =>x_msg_count,
3133 x_msg_data => x_msg_data,
3134 p_tap_id => l_tra_id,
3135 p_credit_amount => l_to_refund,
3136 p_credit_sty_id => l_Adj_strm_type_id,
3137 p_khr_id => p_ipyv_rec.khr_id,
3138 p_kle_id => p_ipyv_rec.kle_id,
3139 p_invoice_date => SYSDATE,
3140 p_trx_id => l_trx_type_ID );
3141 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3142 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3143 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3144 RAISE OKC_API.G_EXCEPTION_ERROR;
3145 END IF;
3146
3147 ELSIF (ln_premium > l_total_paid) THEN
3148 l_tra_id := OKC_API.G_MISS_NUM ;
3149 l_to_refund := ln_premium - l_total_paid ;
3150 OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
3151 'INSURANCE_PAYABLE',
3152 l_return_status,
3153 l_PAY_strm_type_id);
3154 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3155 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3156 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3157 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3158 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
3159 RAISE OKC_API.G_EXCEPTION_ERROR;
3160 END IF;
3161 -- GET TRANSACTION TYPE
3162 OPEN c_trx_type('Disbursement', 'US');
3163 FETCH c_trx_type INTO l_trx_type_ID;
3164 IF(c_trx_type%NOTFOUND) THEN
3165 l_attribute_label := OKL_ACCOUNTING_UTIL.get_message_token('OKL_LA_SEC_INVESTOR','OKL_LA_SEC_BILL'); --3927315
3166 Okc_Api.set_message(G_APP_NAME, 'OKL_AM_NO_TRX_TYPE_FOUND',
3167 'TRY_NAME',l_attribute_label); --3745151
3168 l_attribute_label := null;
3169 x_return_status := OKC_API.G_RET_STS_ERROR ;
3170 CLOSE c_trx_type ;
3171 RAISE OKC_API.G_EXCEPTION_ERROR;
3172 END IF ;
3173 CLOSE c_trx_type ;
3174 IF(L_DEBUG_ENABLED='Y') THEN
3175 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
3176 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
3177 END IF;
3178 IF(IS_DEBUG_PROCEDURE_ON) THEN
3179 BEGIN
3180 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug call insert_ap_request');
3181 END;
3182 END IF;
3183 insert_ap_request(p_api_version => l_api_version,
3184 p_init_msg_list => OKL_API.G_FALSE,
3185 x_return_status => l_return_status,
3186 x_msg_count =>x_msg_count,
3187 x_msg_data => x_msg_data,
3188 p_tap_id => l_tra_id,
3189 p_credit_amount => l_to_refund,
3190 p_credit_sty_id => l_pay_strm_type_id,
3191 p_khr_id => p_ipyv_rec.khr_id,
3192 p_kle_id => p_ipyv_rec.kle_id,
3193 p_invoice_date => SYSDATE,
3194 p_trx_id => l_trx_type_id );
3195 IF(IS_DEBUG_PROCEDURE_ON) THEN
3196 BEGIN
3197 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug call insert_ap_request');
3198 END;
3199 END IF;
3200 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3201 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3202 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3203 RAISE OKC_API.G_EXCEPTION_ERROR;
3204 END IF;
3205 END IF ;
3206
3207 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3208
3209 EXCEPTION
3210 WHEN OKC_API.G_EXCEPTION_ERROR THEN
3211 x_return_status := OKC_API.HANDLE_EXCEPTIONS
3212 (
3213 l_api_name,
3214 G_PKG_NAME,
3215 'OKC_API.G_RET_STS_ERROR',
3216 x_msg_count,
3217 x_msg_data,
3218 '_PROCESS'
3219 );
3220 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3221 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3222 (
3223 l_api_name,
3224 G_PKG_NAME,
3225 'OKC_API.G_RET_STS_UNEXP_ERROR',
3226 x_msg_count,
3227 x_msg_data,
3228 '_PROCESS'
3229 );
3230 WHEN OTHERS THEN
3231 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3232 (
3233 l_api_name,
3234 G_PKG_NAME,
3235 'OTHERS',
3236 x_msg_count,
3237 x_msg_data,
3238 '_PROCESS'
3239 );
3240 END get_vendor_refund;
3241 -----------------------------------------------
3242 -- Procedure rebook_inc_adjustment
3243 ---------------------------------------------------
3244 PROCEDURE rebook_inc_adjustment(
3245 p_api_version IN NUMBER,
3246 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3247 x_return_status OUT NOCOPY VARCHAR2,
3248 x_msg_count OUT NOCOPY NUMBER,
3249 x_msg_data OUT NOCOPY VARCHAR2,
3250 p_ipyv_rec IN ipyv_rec_type,
3251 p_refund_amount IN NUMBER,
3252 p_src_trx_id IN NUMBER) IS
3253 l_api_name CONSTANT VARCHAR2(30) := 'rebook_inc_adjustment';
3254 l_return_status VARCHAR2(1);
3255 l_api_version NUMBER:= 1.0;
3256 l_tra_id NUMBER;
3257 l_total_billed NUMBER;
3258 l_total_bill_accrued NUMBER;
3259 l_strm_type_id NUMBER;
3260 l_strm_type_id_rep NUMBER; -- MGAAP 7263041
3261 l_adjustment_amount NUMBER;
3262 l_refund_amount NUMBER;
3263 l_ins_try_id NUMBER;
3264 l_ipyv_rec ipyv_rec_type;
3265 CURSOR c_total_billed(l_khr_id NUMBER, l_kle_id NUMBER,l_stream_type_id NUMBER) IS
3266 SELECT SUM(amount)
3267 --FROM OKL_STREAMS STM,
3268 FROM OKL_STREAMS_REP_V STM, -- MGAAP 7263041
3269 OKL_STRM_ELEMENTS STEM
3270 where STM.STY_ID = l_stream_type_id
3271 AND STM.KLE_ID = l_kle_id
3272 AND STM.KHR_ID = l_khr_id
3273 AND STM.ID = STEM.STM_ID
3274 AND STEM.DATE_BILLED IS NOT NULL ;
3275 -- cursor changed to take the stream type id as the parameter, for user defined streams, bug 3924300
3276 CURSOR c_total_bill_accrued(l_khr_id NUMBER, l_kle_id NUMBER, l_stream_type_id NUMBER) IS
3277 SELECT SUM(amount)
3278 --FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
3279 FROM OKL_STREAMS_REP_V STM , OKL_STRM_ELEMENTS STEM --MGAAP 7263041
3280 WHERE STM.STY_ID = l_stream_type_id
3281 AND STM.KLE_ID = l_kle_id
3282 AND STM.KHR_ID = l_khr_id
3283 AND STM.ID = STEM.STM_ID
3284 AND STEM.ACCRUED_YN = 'Y'
3285 --AND STM.PURPOSE_CODE IS NULL;
3286 AND (STM.PURPOSE_CODE IS NULL OR STM.PURPOSE_CODE='REPORT');
3287 CURSOR okl_trx_types (cp_name VARCHAR2, cp_language VARCHAR2) IS
3288 SELECT id
3289 FROM okl_trx_types_tl
3290 WHERE name = cp_name
3291 AND language = cp_language;
3292
3293 /* Start Bug#5955320
3294
3295 l_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
3296 x_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
3297 l_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
3298 x_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
3299
3300 l_ctxt_val_tbl Okl_Account_Dist_Pub.CTXT_VAL_TBL_TYPE;
3301 l_acc_gen_primary_key_tbl Okl_Account_Dist_Pub.acc_gen_primary_key;
3302 l_template_tbl Okl_Account_Dist_Pub.AVLV_TBL_TYPE;
3303 l_amount_tbl Okl_Account_Dist_Pub.AMOUNT_TBL_TYPE;
3304
3305 End Bug#5955320
3306 */
3307 -- Start Bug#5955320
3308
3309 l_gl_date DATE;
3310 l_trx_number VARCHAR2(30) := NULL; -- MGAAP
3311 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3312 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3313 l_ins_acc_adj VARCHAR2(240);
3314
3315 -- End Bug#5955320
3316
3317 l_inc_sty_id NUMBER ;
3318
3319 -- MGAAP start 7263041
3320
3321 l_inc_sty_id_rep NUMBER ; -- MGAAP 7263041
3322 CURSOR check_csr(p_khr_id NUMBER) IS
3323 SELECT A.MULTI_GAAP_YN, B.REPORTING_PDT_ID
3324 FROM OKL_K_HEADERS A,
3325 OKL_PRODUCTS B
3326 WHERE A.ID = p_khr_id
3327 AND A.PDT_ID = B.ID;
3328
3329 l_multi_gaap_yn OKL_K_HEADERS.MULTI_GAAP_YN%TYPE;
3330 l_reporting_pdt_id OKL_PRODUCTS.REPORTING_PDT_ID%TYPE;
3331
3332 l_total_bill_accrued_rep NUMBER;
3333 l_adjustment_amount_rep NUMBER;
3334 l_sob_id NUMBER;
3335
3336 -- MGAAP end 7263041
3337
3338 CURSOR l_contract_currency_csr IS
3339 SELECT currency_code
3340 ,currency_conversion_type
3341 -- ,currency_conversion_rate
3342 ,currency_conversion_date
3343 FROM okl_k_headers_full_v
3344 WHERE id = p_ipyv_rec.khr_id ;
3345
3346 l_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
3347 l_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
3348
3349 CURSOR l_acc_dtls_csr(p_khr_id IN NUMBER) IS
3350 SELECT khr.pdt_id pdt_id
3351 FROM okl_k_headers_v khr
3352 WHERE khr.ID = p_khr_id;
3353
3354 l_dist_info_rec Okl_Account_Dist_Pub.dist_info_REC_TYPE;
3355 l_acct_call_rec l_acc_dtls_csr%ROWTYPE;
3356 l_tmpl_identify_rec Okl_Account_Dist_Pub.TMPL_IDENTIFY_REC_TYPE;
3357
3358 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
3359 l_fact_sync_code VARCHAR2(2000);
3360 l_inv_acct_code VARCHAR2(2000);
3361 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
3362
3363 l_ptid NUMBER ;
3364 l_curr_code GL_LEDGERS_PUBLIC_V.CURRENCY_CODE%TYPE;
3365 ----- Account Generator sources
3366 Cursor salesP_csr( chrId NUMBER) IS
3367 select ct.object1_id1 id
3368 from okc_contacts ct,
3369 okc_contact_sources csrc,
3370 okc_k_party_roles_b pty,
3371 okc_k_headers_b chr
3372 where ct.cpl_id = pty.id
3373 and ct.cro_code = csrc.cro_code
3374 and ct.jtot_object1_code = csrc.jtot_object_code
3375 and ct.dnz_chr_id = chr.id
3376 and pty.rle_code = csrc.rle_code
3377 and csrc.cro_code = 'SALESPERSON'
3378 and csrc.rle_code = 'LESSOR'
3379 and csrc.buy_or_sell = chr.buy_or_sell
3380 and pty.dnz_chr_id = chr.id
3381 and pty.chr_id = chr.id
3382 and chr.id = chrId;
3383
3384 l_salesP_rec salesP_csr%ROWTYPE;
3385
3386 Cursor fnd_pro_csr IS
3387 select mo_global.get_current_org_id() l_fnd_profile
3388 from dual;
3389 fnd_pro_rec fnd_pro_csr%ROWTYPE;
3390 counter NUMBER;
3391
3392 -- bug 9191475 .. start
3393 l_trxnum_tbl okl_generate_accruals_pvt.trxnum_tbl_type;
3394 -- bug 9191475 .. end
3395
3396 BEGIN
3397
3398 l_ipyv_rec := p_ipyv_rec;
3399 l_refund_amount := p_refund_amount;
3400
3401 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3402 G_PKG_NAME,
3403 p_init_msg_list,
3404 l_api_version,
3405 p_api_version,
3406 '_PROCESS',
3407 l_return_status);
3408 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3409 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3410 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3411 RAISE OKC_API.G_EXCEPTION_ERROR;
3412 END IF;
3413 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
3414 'INSURANCE_RECEIVABLE',
3415 l_return_status,
3416 l_strm_type_id);
3417 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3418 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3419 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3420 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3421 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
3422 RAISE OKC_API.G_EXCEPTION_ERROR;
3423 END IF;
3424 OPEN c_total_billed(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
3425 FETCH c_total_billed INTO l_total_billed;
3426 CLOSE c_total_billed ;
3427 -- Removed for fixing 3745151 as no exception
3428 -- needs to be thrown as we are setting total billed
3429 -- to zero if cursor fetch fails.
3430 /*
3431 IF(c_total_billed%NOTFOUND) THEN
3432 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
3433 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
3434 x_return_status := OKC_API.G_RET_STS_ERROR ;
3435 CLOSE c_total_billed ;
3436 RAISE OKC_API.G_EXCEPTION_ERROR;
3437 END if ;
3438 */
3439
3440 IF ((l_total_billed IS NULL ) OR (l_total_billed = OKC_API.G_MISS_NUM )) THEN
3441 l_total_billed := 0;
3442 END IF ;
3443
3444 -- MGAAP start 7263041
3445 OPEN check_csr(l_ipyv_rec.khr_id);
3446 FETCH check_csr INTO
3447 l_multi_gaap_yn, l_reporting_pdt_id;
3448 CLOSE check_csr;
3449 -- MGAAP end 7263041
3450
3451 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
3452 'INSURANCE_INCOME_ACCRUAL',
3453 l_return_status,
3454 l_strm_type_id);
3455 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3456 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3457 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3458 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3459 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
3460 RAISE OKC_API.G_EXCEPTION_ERROR;
3461 END IF;
3462 OPEN c_total_bill_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
3463 FETCH c_total_bill_accrued INTO l_total_bill_accrued;
3464 CLOSE c_total_bill_accrued ;
3465 -- Removed for fixing 3745151 as no exception
3466 -- needs to be thrown as we are setting total billed
3467 -- to zero if cursor fetch fails.
3468 /*
3469 IF(c_total_bill_accrued%NOTFOUND) THEN
3470 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
3471 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
3472 x_return_status := OKC_API.G_RET_STS_ERROR ;
3473 CLOSE c_total_bill_accrued ;
3474 RAISE OKC_API.G_EXCEPTION_ERROR;
3475 END if ;
3476 */
3477 IF ((l_total_bill_accrued IS NULL ) OR (l_total_bill_accrued = OKC_API.G_MISS_NUM )) THEN
3478 l_total_bill_accrued := 0;
3479 END IF ;
3480
3481 IF ((l_refund_amount IS NULL ) OR (l_refund_amount = OKC_API.G_MISS_NUM )) THEN
3482 l_refund_amount := 0;
3483 END IF ;
3484 l_adjustment_amount := l_total_billed - l_total_bill_accrued - l_refund_amount ;
3485
3486 -- MGAAP start 7263041
3487
3488 IF (l_multi_gaap_yn = 'Y') THEN
3489 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
3490 OKL_STREAMS_UTIL.get_primary_stream_type_rep(l_ipyv_rec.khr_id,
3491 'INSURANCE_INCOME_ACCRUAL',
3492 l_return_status,
3493 l_strm_type_id_rep);
3494 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3495 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3496 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3497 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3498 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
3499 RAISE OKC_API.G_EXCEPTION_ERROR;
3500 END IF;
3501 OPEN c_total_bill_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id_rep);
3502 FETCH c_total_bill_accrued INTO l_total_bill_accrued_rep;
3503 CLOSE c_total_bill_accrued ;
3504
3505 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
3506 IF ((l_total_bill_accrued_rep IS NULL ) OR (l_total_bill_accrued_rep = OKC_API.G_MISS_NUM )) THEN
3507 l_total_bill_accrued_rep := 0;
3508 END IF ;
3509
3510 IF ((l_refund_amount IS NULL ) OR (l_refund_amount = OKC_API.G_MISS_NUM )) THEN
3511 l_refund_amount := 0;
3512 END IF ;
3513 l_adjustment_amount_rep := l_total_billed - l_total_bill_accrued_rep - l_refund_amount ;
3514
3515 END IF;
3516 -- MGAAP end 7263041
3517
3518 /* Start Bug#5955320
3519
3520 --gboomina Bug 4885759 - Start - Changing the transaction type from Insurance to Accrual
3521 OPEN okl_trx_types ('Accrual', 'US');
3522 FETCH okl_trx_types INTO l_ins_try_id;
3523 IF(okl_trx_types%NOTFOUND) THEN
3524 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
3525 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,'Accrual');
3526 x_return_status := OKC_API.G_RET_STS_ERROR ;
3527 CLOSE okl_trx_types ;
3528 RAISE OKC_API.G_EXCEPTION_ERROR;
3529 END IF ;
3530 CLOSE okl_trx_types;
3531 --gboomina Bug 4885759 - End
3532 -- GET Product
3533 OPEN l_acc_dtls_csr(l_ipyv_rec.KHR_ID );
3534 FETCH l_acc_dtls_csr INTO l_ptid;
3535 IF(l_acc_dtls_csr%NOTFOUND) THEN
3536 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
3537 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSREFUND');
3538 x_return_status := OKC_API.G_RET_STS_ERROR ;
3539 CLOSE l_acc_dtls_csr ;
3540 RAISE OKC_API.G_EXCEPTION_ERROR;
3541 END if ;
3542 CLOSE l_acc_dtls_csr;
3543 BEGIN
3544 OPEN l_contract_currency_csr;
3545 FETCH l_contract_currency_csr INTO l_curr_code,l_currency_conversion_type,
3546 l_currency_conversion_date ;
3547 CLOSE l_contract_currency_csr;
3548 EXCEPTION
3549 WHEN NO_DATA_FOUND THEN
3550 OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,p_ipyv_rec.khr_id );
3551 x_return_status := OKC_API.G_RET_STS_ERROR;
3552 IF l_contract_currency_csr%ISOPEN THEN
3553 CLOSE l_contract_currency_csr;
3554 END IF;
3555 RAISE OKC_API.G_EXCEPTION_ERROR;
3556 WHEN OTHERS THEN
3557 IF l_contract_currency_csr%ISOPEN THEN
3558 CLOSE l_contract_currency_csr;
3559 END IF;
3560 -- store SQL error message on message stack for caller
3561 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
3562 SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3563 x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
3564 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR ;
3565 END;
3566 --- l_curr_code := OKL_ACCOUNTING_UTIL.GET_FUNC_CURR_CODE;
3567
3568 IF (l_adjustment_amount <> 0 ) THEN
3569
3570 -- header data
3571 l_tcnv_rec_in.khr_id := l_ipyv_rec.KHR_ID ;
3572 l_tcnv_rec_in.try_id := l_ins_try_id;
3573 l_tcnv_rec_in.tsu_code := 'ENTERED';
3574 l_tcnv_rec_in.tcn_type := 'AAJ';
3575 l_tcnv_rec_in.date_transaction_occurred := l_ipyv_rec.CANCELLATION_DATE;
3576 l_tcnv_rec_in.amount := l_adjustment_amount;
3577 l_tcnv_rec_in.currency_code := l_curr_code ;
3578 l_tcnv_rec_in.currency_conversion_type := l_currency_conversion_type ;
3579 l_tcnv_rec_in.currency_conversion_date := l_currency_conversion_date ;
3580 l_tcnv_rec_in.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => l_ipyv_rec.KHR_ID);
3581
3582 -- Line Data
3583 l_tclv_tbl(1).line_number := 1;
3584 l_tclv_tbl(1).khr_id := l_ipyv_rec.KHR_ID;
3585 l_tclv_tbl(1).tcl_type := 'AAJ' ;
3586 l_tclv_tbl(1).AMOUNT := l_adjustment_amount;
3587 l_tclv_tbl(1).currency_code := l_curr_code ;
3588 l_tclv_tbl(1).ORG_ID := l_ipyv_rec.org_id ;
3589 l_tclv_tbl(1).STY_ID := l_strm_type_id;
3590
3591
3592 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
3593 IF(L_DEBUG_ENABLED='Y') THEN
3594 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
3595 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
3596 END IF;
3597 IF(IS_DEBUG_PROCEDURE_ON) THEN
3598 BEGIN
3599 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
3600 END;
3601 END IF;
3602 OKL_TRX_CONTRACTS_PUB.create_trx_contracts(
3603 p_api_version => l_api_version,
3604 p_init_msg_list => OKC_API.G_FALSE,
3605 x_return_status => x_return_status,
3606 x_msg_count => x_msg_count,
3607 x_msg_data => x_msg_data,
3608 p_tcnv_rec =>l_tcnv_rec_in ,
3609 p_tclv_tbl => l_tclv_tbl,
3610 x_tcnv_rec => x_tcnv_rec_in,
3611 x_tclv_tbl => x_tclv_tbl );
3612 IF(IS_DEBUG_PROCEDURE_ON) THEN
3613 BEGIN
3614 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
3615 END;
3616 END IF;
3617 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
3618
3619
3620 ---------------------------------------------------------------------------------------
3621 counter := 1;
3622 OPEN fnd_pro_csr;
3623 FETCH fnd_pro_csr INTO fnd_pro_rec;
3624 IF ( fnd_pro_csr%FOUND ) Then
3625 l_acc_gen_primary_key_tbl(counter).source_table := 'FINANCIALS_SYSTEM_PARAMETERS';
3626 l_acc_gen_primary_key_tbl(counter).primary_key_column := fnd_pro_rec.l_fnd_profile;
3627 counter := counter + 1 ;
3628 End IF;
3629 CLOSE fnd_pro_csr;
3630 OPEN salesP_csr(l_ipyv_rec.KHR_ID);
3631 FETCH salesP_csr INTO l_salesP_rec;
3632 IF ( salesP_csr%FOUND ) Then
3633 l_acc_gen_primary_key_tbl(counter).source_table := 'JTF_RS_SALESREPS_MO_V';
3634 l_acc_gen_primary_key_tbl(counter).primary_key_column := l_salesP_rec.id;
3635 counter := counter + 1 ;
3636 END IF ;
3637 CLOSE salesP_csr;
3638 ------------------------------------------------------------------------------------
3639
3640 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3641 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3642 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3643 RAISE OKC_API.G_EXCEPTION_ERROR;
3644 END IF;
3645
3646 End Bug#5955320 */
3647
3648
3649 /* Start Bug#5955320
3650 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
3651 get_special_acct_codes(p_khr_id => l_ipyv_rec.KHR_ID,
3652 p_trx_date => SYSDATE,
3653 x_fact_sync_code => l_fact_sync_code,
3654 x_inv_acct_code => l_inv_acct_code );
3655 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
3656
3657 -- Populate Records for Accounting Call.
3658 l_tmpl_identify_rec.PRODUCT_ID := l_ptid;
3659 l_tmpl_identify_rec.TRANSACTION_TYPE_ID := l_ins_try_id;
3660 l_tmpl_identify_rec.STREAM_TYPE_ID := l_inc_sty_id;
3661 l_tmpl_identify_rec.ADVANCE_ARREARS := NULL;
3662 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - Start
3663 l_tmpl_identify_rec.FACTORING_SYND_FLAG := l_fact_sync_code;
3664 l_tmpl_identify_rec.INVESTOR_CODE := l_inv_acct_code;
3665 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - End
3666 l_tmpl_identify_rec.SYNDICATION_CODE := NULL;
3667 l_tmpl_identify_rec.FACTORING_CODE := NULL;
3668 l_tmpl_identify_rec.MEMO_YN := 'N';
3669 l_tmpl_identify_rec.PRIOR_YEAR_YN := 'N';
3670 l_dist_info_rec.SOURCE_ID := x_tclv_tbl(1).ID;
3671 l_dist_info_rec.SOURCE_TABLE := 'OKL_TXL_CNTRCT_LNS';
3672 l_dist_info_rec.ACCOUNTING_DATE := SYSDATE;
3673 l_dist_info_rec.GL_REVERSAL_FLAG := 'N';
3674 --gboomina Bug 4885759 - Start
3675 -- Making Tracactions 'Actual' instead of 'Draft' by setting post_to_gl as 'Y'
3676 l_dist_info_rec.POST_TO_GL := 'Y';
3677 --gboomina Bug 4885759 - End
3678 l_dist_info_rec.AMOUNT := l_adjustment_amount;
3679 l_dist_info_rec.CURRENCY_CODE := l_curr_code;
3680 --- Not sure
3681 l_dist_info_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
3682 l_dist_info_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
3683 l_dist_info_rec.CONTRACT_ID := l_ipyv_rec.KHR_ID ;
3684 l_dist_info_rec.CONTRACT_LINE_ID := l_ipyv_rec.KLE_ID;
3685 IF (l_adjustment_amount > 0 )THEN
3686 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
3687 IF(IS_DEBUG_PROCEDURE_ON) THEN
3688 BEGIN
3689 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
3690 END;
3691 END IF;
3692
3693 Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST(
3694 p_api_version => p_api_version
3695 ,p_init_msg_list => p_init_msg_list
3696 ,x_return_status => x_return_status
3697 ,x_msg_count => x_msg_count
3698 ,x_msg_data => x_msg_data
3699 ,p_tmpl_identify_rec => l_tmpl_identify_rec
3700 ,p_dist_info_rec => l_dist_info_rec
3701 ,p_ctxt_val_tbl => l_ctxt_val_tbl
3702 ,p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl
3703 ,x_template_tbl => l_template_tbl
3704 ,x_amount_tbl => l_amount_tbl);
3705
3706 IF(IS_DEBUG_PROCEDURE_ON) THEN
3707 BEGIN
3708 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
3709 END;
3710 END IF;
3711 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
3712 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3713 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3714 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3715 RAISE OKC_API.G_EXCEPTION_ERROR;
3716 END IF;
3717 END IF ;
3718 END IF;
3719
3720 End Bug#5955320 */
3721
3722 --Start Bug#5955320
3723 IF (l_adjustment_amount <> 0 ) THEN
3724
3725 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
3726 'INSURANCE_INCOME_ACCRUAL',
3727 l_return_status,
3728 l_inc_sty_id);
3729 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3730 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3731 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3732 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3733 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
3734 RAISE OKC_API.G_EXCEPTION_ERROR;
3735 END IF;
3736
3737 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_ipyv_rec.CANCELLATION_DATE);
3738 l_ins_acc_adj := fnd_message.get_string('OKL','OKL_INS_INC_ACC_ADJ');
3739 if(l_ins_acc_adj IS NULL) then
3740 l_ins_acc_adj := 'Insurance income accrual adjustment';
3741 end if;
3742
3743 -- Populate Records for adjust_accrual_rec_type.
3744 l_accrual_rec.contract_id := l_ipyv_rec.KHR_ID;
3745 l_accrual_rec.accrual_date := l_gl_date;
3746 l_accrual_rec.description := l_ins_acc_adj; --'Insurance income accrual adjustment';
3747 l_accrual_rec.source_trx_id := p_src_trx_id; -- source transaction id, either rebook or termination trx
3748 l_accrual_rec.source_trx_type := 'TCN';
3749
3750 -- Populate Records for stream_rec_type.
3751 l_stream_tbl(0).stream_type_id := l_inc_sty_id;
3752 l_stream_tbl(0).stream_type_name := NULL;
3753 l_stream_tbl(0).stream_id := NULL;
3754 l_stream_tbl(0).stream_element_id := NULL;
3755 l_stream_tbl(0).stream_amount := l_adjustment_amount;
3756 l_stream_tbl(0).kle_id := l_ipyv_rec.KLE_ID;
3757
3758 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
3759 IF(IS_DEBUG_PROCEDURE_ON) THEN
3760 BEGIN
3761 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
3762 END;
3763 END IF;
3764 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS(
3765 p_api_version => p_api_version
3766 ,p_init_msg_list => p_init_msg_list
3767 ,x_return_status => x_return_status
3768 ,x_msg_count => x_msg_count
3769 ,x_msg_data => x_msg_data
3770 --,x_trx_number => l_trx_number-- bug 9191475
3771 ,x_trx_tbl => l_trxnum_tbl
3772 ,p_accrual_rec => l_accrual_rec
3773 ,p_stream_tbl => l_stream_tbl);
3774
3775 IF(IS_DEBUG_PROCEDURE_ON) THEN
3776 BEGIN
3777 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
3778 END;
3779 END IF;
3780 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
3781 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3782 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3783 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3784 RAISE OKC_API.G_EXCEPTION_ERROR;
3785 END IF;
3786
3787 END IF;
3788 --End Bug#5955320
3789
3790 -- MGAAP start 7263041
3791 IF (l_multi_gaap_yn = 'Y') THEN
3792 IF (l_adjustment_amount_rep <> 0) THEN
3793 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
3794 OKL_STREAMS_UTIL.get_primary_stream_type_rep(l_ipyv_rec.khr_id,
3795 'INSURANCE_INCOME_ACCRUAL',
3796 l_return_status,
3797 l_inc_sty_id_rep);
3798 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
3799 l_sob_id := Okl_Accounting_Util.GET_SET_OF_BOOKS_ID(
3800 p_representation_type => 'SECONDARY');
3801 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_ipyv_rec.CANCELLATION_DATE, p_ledger_id => l_sob_id); --MGAAP 7263041
3802 l_ins_acc_adj := fnd_message.get_string('OKL','OKL_INS_INC_ACC_ADJ');
3803 if(l_ins_acc_adj IS NULL) then
3804 l_ins_acc_adj := 'Insurance income accrual adjustment';
3805 end if;
3806
3807 -- Populate Records for adjust_accrual_rec_type.
3808 l_accrual_rec.contract_id := l_ipyv_rec.KHR_ID;
3809 l_accrual_rec.accrual_date := l_gl_date;
3810 l_accrual_rec.description := l_ins_acc_adj; --'Insurance income accrual adjustment';
3811 l_accrual_rec.source_trx_id := p_src_trx_id; -- source transaction id, either rebook or termination trx
3812 l_accrual_rec.source_trx_type := 'TCN';
3813
3814 -- Populate Records for stream_rec_type.
3815 l_stream_tbl(0).stream_type_id := l_inc_sty_id_rep;
3816 l_stream_tbl(0).stream_type_name := NULL;
3817 l_stream_tbl(0).stream_id := NULL;
3818 l_stream_tbl(0).stream_element_id := NULL;
3819 l_stream_tbl(0).stream_amount := l_adjustment_amount_rep;
3820 l_stream_tbl(0).kle_id := l_ipyv_rec.KLE_ID;
3821
3822 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
3823 IF(IS_DEBUG_PROCEDURE_ON) THEN
3824 BEGIN
3825 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
3826 END;
3827 END IF;
3828
3829 --l_accrual_rec.trx_number := l_trx_number; -- bug 9191475
3830 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS(
3831 p_api_version => p_api_version
3832 ,p_init_msg_list => p_init_msg_list
3833 ,x_return_status => x_return_status
3834 ,x_msg_count => x_msg_count
3835 ,x_msg_data => x_msg_data
3836 --,x_trx_number => l_trx_number
3837 ,x_trx_tbl => l_trxnum_tbl
3838 ,p_accrual_rec => l_accrual_rec
3839 ,p_stream_tbl => l_stream_tbl,
3840 p_representation_type => 'SECONDARY');
3841
3842 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
3843 IF(IS_DEBUG_PROCEDURE_ON) THEN
3844 BEGIN
3845 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
3846 END;
3847 END IF;
3848
3849
3850 IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3851 RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3852 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3853 RAISE Okl_Api.G_EXCEPTION_ERROR;
3854 END IF;
3855
3856 END IF;
3857 END IF;
3858 END IF;
3859 -- MGAAP end 7263041
3860
3861 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3862 EXCEPTION
3863 WHEN OKC_API.G_EXCEPTION_ERROR THEN
3864 x_return_status := OKC_API.HANDLE_EXCEPTIONS
3865 (
3866 l_api_name,
3867 G_PKG_NAME,
3868 'OKC_API.G_RET_STS_ERROR',
3869 x_msg_count,
3870 x_msg_data,
3871 '_PROCESS'
3872 );
3873 WHEN OTHERS THEN
3874 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
3875 p_msg_name => 'OKL_UNEXPECTED_ERROR',
3876 p_token1 => 'OKL_SQLCODE',
3877 p_token1_value => SQLCODE,
3878 p_token2 => 'OKL_SQLERRM',
3879 p_token2_value => SQLERRM);
3880 END rebook_inc_adjustment;
3881 --------------------------------------------
3882 -- Procedure rebook_exp_adjustment
3883 ---------------------------------------
3884 PROCEDURE rebook_exp_adjustment(
3885 p_api_version IN NUMBER,
3886 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3887 x_return_status OUT NOCOPY VARCHAR2,
3888 x_msg_count OUT NOCOPY NUMBER,
3889 x_msg_data OUT NOCOPY VARCHAR2,
3890 p_ipyv_rec IN ipyv_rec_type,
3891 lp_vendor_refund_amount IN NUMBER,
3892 p_src_trx_id IN NUMBER) IS
3893
3894 l_api_name CONSTANT VARCHAR2(30) := 'rebook_exp_adjustment';
3895 l_api_version CONSTANT NUMBER := 1;
3896 l_return_status VARCHAR2(1) ;
3897 l_total_paid NUMBER;
3898 l_total_pay_accrued NUMBER;
3899 l_vendor_refund_amount NUMBER;
3900 l_strm_type_id NUMBER;
3901 l_adjustment_amount NUMBER;
3902 l_ins_try_id NUMBER;
3903 l_ipyv_rec ipyv_rec_type;
3904 CURSOR c_total_paid(l_khr_id NUMBER, l_kle_id NUMBER,l_stream_type_id NUMBER) IS
3905 SELECT SUM(amount)
3906 --FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
3907 FROM OKL_STREAMS_REP_V STM , OKL_STRM_ELEMENTS STEM -- MGAAP
3908 WHERE STM.STY_ID = l_stream_type_id
3909 AND STM.KLE_ID = l_kle_id
3910 AND STM.KHR_ID = l_khr_id
3911 AND STM.ID = STEM.STM_ID
3912 AND STEM.DATE_BILLED IS NOT NULL;
3913 CURSOR c_total_payment_accrued(l_khr_id NUMBER, l_kle_id NUMBER, l_stream_type_id NUMBER) IS
3914 SELECT SUM(amount)
3915 --FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
3916 FROM OKL_STREAMS_REP_V STM , OKL_STRM_ELEMENTS STEM -- MGAAP
3917 WHERE STM.STY_ID = l_stream_type_id
3918 AND STM.KLE_ID = l_kle_id
3919 AND STM.KHR_ID = l_khr_id
3920 AND STM.ID = STEM.STM_ID
3921 AND STEM.ACCRUED_YN = 'Y'
3922 --AND STM.PURPOSE_CODE IS NULL;
3923 AND (STM.PURPOSE_CODE IS NULL OR STM.PURPOSE_CODE='REPORT'); --Bug# 9191475
3924 CURSOR okl_trx_types (cp_name VARCHAR2, cp_language VARCHAR2) IS
3925 SELECT id
3926 FROM okl_trx_types_tl
3927 WHERE name = cp_name
3928 AND language = cp_language;
3929
3930 /* Start Bug#5955320
3931
3932 l_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
3933 x_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
3934 l_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
3935 x_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
3936
3937 l_ctxt_val_tbl Okl_Account_Dist_Pub.CTXT_VAL_TBL_TYPE;
3938 l_acc_gen_primary_key_tbl Okl_Account_Dist_Pub.acc_gen_primary_key;
3939 l_template_tbl Okl_Account_Dist_Pub.AVLV_TBL_TYPE;
3940 l_amount_tbl Okl_Account_Dist_Pub.AMOUNT_TBL_TYPE;
3941
3942 End Bug#5955320
3943 */
3944
3945 l_inc_sty_id NUMBER ;
3946 -- Start Bug#5955320
3947
3948 l_gl_date DATE;
3949 l_trx_number VARCHAR2(30) := NULL;
3950 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type;
3951 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
3952 l_ins_acc_adj VARCHAR2(240);
3953
3954 -- End Bug#5955320
3955
3956 CURSOR l_contract_currency_csr IS
3957 SELECT currency_code
3958 ,currency_conversion_type
3959 -- ,currency_conversion_rate
3960 ,currency_conversion_date
3961 FROM okl_k_headers_full_v
3962 WHERE id = p_ipyv_rec.khr_id ;
3963
3964 CURSOR l_acc_dtls_csr(p_khr_id IN NUMBER) IS
3965 SELECT khr.pdt_id pdt_id,
3966 khr.multi_gaap_yn mylti_gaap_yn, -- MGAAP
3967 pdt.reporting_pdt_id reporting_pdt_id
3968 FROM okl_k_headers_v khr,
3969 okl_products pdt
3970 WHERE khr.ID = p_khr_id
3971 AND khr.PDT_ID = pdt.ID;
3972
3973 --smoduga..Bug 4493213 fix..08-aug-2005..start
3974 ----- Account Generator sources
3975 Cursor salesP_csr( chrId NUMBER) IS
3976 select ct.object1_id1 id
3977 from okc_contacts ct,
3978 okc_contact_sources csrc,
3979 okc_k_party_roles_b pty,
3980 okc_k_headers_b chr
3981 where ct.cpl_id = pty.id
3982 and ct.cro_code = csrc.cro_code
3983 and ct.jtot_object1_code = csrc.jtot_object_code
3984 and ct.dnz_chr_id = chr.id
3985 and pty.rle_code = csrc.rle_code
3986 and csrc.cro_code = 'SALESPERSON'
3987 and csrc.rle_code = 'LESSOR'
3988 and csrc.buy_or_sell = chr.buy_or_sell
3989 and pty.dnz_chr_id = chr.id
3990 and pty.chr_id = chr.id
3991 and chr.id = chrId;
3992
3993 l_salesP_rec salesP_csr%ROWTYPE;
3994
3995 Cursor fnd_pro_csr IS
3996 select mo_global.get_current_org_id() l_fnd_profile
3997 from dual;
3998 fnd_pro_rec fnd_pro_csr%ROWTYPE;
3999 counter NUMBER;
4000 --smoduga..Bug 4493213 fix..08-aug-2005..end
4001
4002
4003 l_ptid NUMBER;
4004 l_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
4005 l_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
4006 l_curr_code GL_LEDGERS_PUBLIC_V.CURRENCY_CODE%TYPE;
4007
4008 l_dist_info_rec Okl_Account_Dist_Pub.dist_info_REC_TYPE;
4009 --l_acct_call_rec l_acc_dtls_csr%ROWTYPE;
4010 l_tmpl_identify_rec Okl_Account_Dist_Pub.TMPL_IDENTIFY_REC_TYPE;
4011 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
4012 l_fact_sync_code VARCHAR2(2000);
4013 l_inv_acct_code VARCHAR2(2000);
4014 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
4015
4016 -- MGAAP start 7263041
4017
4018 l_strm_type_id_rep NUMBER;
4019 l_adjustment_amount_rep NUMBER;
4020 l_multi_gaap_yn okl_k_headers.multi_gaap_yn%TYPE;
4021 l_reporting_pdt_id okl_products.reporting_pdt_id%TYPE;
4022 l_sob_id NUMBER;
4023 l_total_pay_accrued_rep NUMBER;
4024 l_inc_sty_id_rep NUMBER ;
4025
4026 -- MGAAP end 7263041
4027 -- bug 9191475 .. start
4028 l_trxnum_tbl okl_generate_accruals_pvt.trxnum_tbl_type;
4029 -- bug 9191475 .. end
4030
4031 BEGIN
4032 l_ipyv_rec := p_ipyv_rec ;
4033 l_vendor_refund_amount := lp_vendor_refund_amount;
4034
4035 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4036 G_PKG_NAME,
4037 p_init_msg_list,
4038 l_api_version,
4039 p_api_version,
4040 '_PROCESS',
4041 l_return_status);
4042 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4043 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4044 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4045 RAISE OKC_API.G_EXCEPTION_ERROR;
4046 END IF;
4047
4048 -- MGAAP start 7263041
4049 -- Moved from bottom
4050 OPEN l_acc_dtls_csr(l_ipyv_rec.KHR_ID );
4051 FETCH l_acc_dtls_csr INTO l_ptid,
4052 l_multi_gaap_yn, -- MGAAP
4053 l_reporting_pdt_id; -- MGAAP
4054 IF(l_acc_dtls_csr%NOTFOUND) THEN
4055 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
4056 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSREFUND');
4057 x_return_status := OKC_API.G_RET_STS_ERROR ;
4058 CLOSE l_acc_dtls_csr ;
4059 RAISE OKC_API.G_EXCEPTION_ERROR;
4060 END if ;
4061 CLOSE l_acc_dtls_csr;
4062 -- MGAAP end 7263041
4063
4064 -- Expense Adjustment
4065 -- Sum of Disbursed Payable(1) - Sum of payable debit(sign)(2) - Sum of accrued insurance (3)
4066 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4067 'INSURANCE_PAYABLE',
4068 l_return_status,
4069 l_strm_type_id);
4070 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4071 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4072 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4073 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4074 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
4075 RAISE OKC_API.G_EXCEPTION_ERROR;
4076 END IF;
4077 OPEN c_total_paid(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
4078 FETCH c_total_paid INTO l_total_paid;
4079 CLOSE c_total_paid ;
4080 --
4081 -- Removed for fixing 3745151 as no exception
4082 -- needs to be thrown as we are setting total paid
4083 -- to zero if cursor fetch fails.
4084 /*
4085 IF(c_total_paid%NOTFOUND) THEN
4086 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
4087 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
4088 x_return_status := OKC_API.G_RET_STS_ERROR ;
4089 CLOSE c_total_paid ;
4090 RAISE OKC_API.G_EXCEPTION_ERROR;
4091 END if ;
4092 */
4093
4094 IF ((l_total_paid IS NULL ) OR (l_total_paid = OKC_API.G_MISS_NUM )) THEN
4095 l_total_paid := 0;
4096 END IF ;
4097 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4098 'INSURANCE_EXPENSE_ACCRUAL',
4099 l_return_status,
4100 l_strm_type_id);
4101 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4102 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4103 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4104 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4105 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
4106 RAISE OKC_API.G_EXCEPTION_ERROR;
4107 END IF;
4108 OPEN c_total_payment_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
4109 FETCH c_total_payment_accrued INTO l_total_pay_accrued;
4110 CLOSE c_total_payment_accrued ;
4111 --
4112 -- Removed for fixing 3745151 as no exception
4113 -- needs to be thrown as we are setting total paid
4114 -- to zero if cursor fetch fails.
4115 /*
4116 IF(c_total_payment_accrued%NOTFOUND) THEN
4117 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
4118 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
4119 x_return_status := OKC_API.G_RET_STS_ERROR ;
4120 CLOSE c_total_payment_accrued ;
4121 RAISE OKC_API.G_EXCEPTION_ERROR;
4122 END if ;
4123 */
4124
4125 IF ((l_total_pay_accrued IS NULL ) OR (l_total_pay_accrued = OKC_API.G_MISS_NUM )) THEN
4126 l_total_pay_accrued := 0;
4127 END IF ;
4128
4129 IF ((l_vendor_refund_amount IS NULL ) OR (l_vendor_refund_amount = OKC_API.G_MISS_NUM )) THEN
4130 l_vendor_refund_amount := 0;
4131 END IF ;
4132 l_adjustment_amount := l_total_paid - l_total_pay_accrued - l_vendor_refund_amount;
4133
4134 -- MGAAP start 7263041
4135 IF (l_multi_gaap_yn = 'Y') THEN
4136 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4137 'INSURANCE_EXPENSE_ACCRUAL',
4138 l_return_status,
4139 l_strm_type_id_rep);
4140 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
4141 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
4142 OPEN c_total_payment_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id_rep);
4143 FETCH c_total_payment_accrued INTO l_total_pay_accrued_rep;
4144 CLOSE c_total_payment_accrued ;
4145
4146 IF ((l_total_pay_accrued_rep IS NULL ) OR (l_total_pay_accrued_rep = OKC_API.G_MISS_NUM )) THEN
4147 l_total_pay_accrued_rep := 0;
4148 END IF ;
4149
4150 IF ((l_vendor_refund_amount IS NULL ) OR (l_vendor_refund_amount = OKC_API.G_MISS_NUM )) THEN
4151 l_vendor_refund_amount := 0;
4152 END IF ;
4153 l_adjustment_amount_rep := l_total_paid - l_total_pay_accrued_rep - l_vendor_refund_amount;
4154 END IF;
4155 END IF;
4156 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS;
4157 -- MGAAP start 7263041
4158
4159 /* Start Bug#5955320
4160 --gboomina Bug 4885759 - Start - Changing the transaction type from Insurance to Accrual
4161 OPEN okl_trx_types ('Accrual', 'US');
4162 FETCH okl_trx_types INTO l_ins_try_id;
4163 IF(okl_trx_types%NOTFOUND) THEN
4164 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
4165 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,'Accrual');
4166 x_return_status := OKC_API.G_RET_STS_ERROR ;
4167 CLOSE okl_trx_types ;
4168 RAISE OKC_API.G_EXCEPTION_ERROR;
4169 END IF ;
4170 CLOSE okl_trx_types;
4171 --gboomina Bug 4885759 - End
4172 OPEN l_acc_dtls_csr(l_ipyv_rec.KHR_ID );
4173 FETCH l_acc_dtls_csr INTO l_ptid;
4174 IF(l_acc_dtls_csr%NOTFOUND) THEN
4175 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
4176 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSREFUND');
4177 x_return_status := OKC_API.G_RET_STS_ERROR ;
4178 CLOSE l_acc_dtls_csr ;
4179 RAISE OKC_API.G_EXCEPTION_ERROR;
4180 END if ;
4181 CLOSE l_acc_dtls_csr;
4182 BEGIN
4183 OPEN l_contract_currency_csr;
4184 FETCH l_contract_currency_csr INTO l_curr_code,l_currency_conversion_type,
4185 l_currency_conversion_date ;
4186 CLOSE l_contract_currency_csr;
4187 EXCEPTION
4188 WHEN NO_DATA_FOUND THEN
4189 OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,p_ipyv_rec.khr_id );
4190 x_return_status := OKC_API.G_RET_STS_ERROR;
4191 IF l_contract_currency_csr%ISOPEN THEN
4192 CLOSE l_contract_currency_csr;
4193 END IF;
4194 RAISE OKC_API.G_EXCEPTION_ERROR;
4195 WHEN OTHERS THEN
4196 IF l_contract_currency_csr%ISOPEN THEN
4197 CLOSE l_contract_currency_csr;
4198 END IF;
4199 -- store SQL error message on message stack for caller
4200 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
4201 SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4202 x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
4203 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR ;
4204 END;
4205 IF (l_adjustment_amount <> 0 ) THEN
4206 l_tcnv_rec_in.khr_id := l_ipyv_rec.KHR_ID ;
4207 l_tcnv_rec_in.try_id := l_ins_try_id;
4208 l_tcnv_rec_in.tsu_code := 'ENTERED';
4209 l_tcnv_rec_in.tcn_type := 'AAJ';
4210 l_tcnv_rec_in.date_transaction_occurred := l_ipyv_rec.CANCELLATION_DATE;
4211 l_tcnv_rec_in.amount := l_adjustment_amount;
4212 l_tcnv_rec_in.currency_code := l_curr_code ;
4213 l_tcnv_rec_in.currency_conversion_type := l_currency_conversion_type ;
4214 l_tcnv_rec_in.currency_conversion_date := l_currency_conversion_date ;
4215 l_tcnv_rec_in.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => l_ipyv_rec.KHR_ID);
4216 -- Line Data
4217 l_tclv_tbl(1).line_number := 1;
4218 l_tclv_tbl(1).khr_id := l_ipyv_rec.KHR_ID;
4219 l_tclv_tbl(1).tcl_type := 'AAJ' ;
4220 l_tclv_tbl(1).AMOUNT := l_adjustment_amount;
4221 l_tclv_tbl(1).currency_code := l_curr_code ;
4222 l_tclv_tbl(1).ORG_ID := l_ipyv_rec.org_id ;
4223 l_tclv_tbl(1).STY_ID := l_strm_type_id;
4224
4225 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
4226 IF(IS_DEBUG_PROCEDURE_ON) THEN
4227 BEGIN
4228 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
4229 END;
4230 END IF;
4231 OKL_TRX_CONTRACTS_PUB.create_trx_contracts(
4232 p_api_version => l_api_version,
4233 p_init_msg_list => OKC_API.G_FALSE,
4234 x_return_status => x_return_status,
4235 x_msg_count => x_msg_count,
4236 x_msg_data => x_msg_data,
4237 p_tcnv_rec =>l_tcnv_rec_in ,
4238 p_tclv_tbl => l_tclv_tbl,
4239 x_tcnv_rec => x_tcnv_rec_in,
4240 x_tclv_tbl => x_tclv_tbl
4241 );
4242 IF(IS_DEBUG_PROCEDURE_ON) THEN
4243 BEGIN
4244 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
4245 END;
4246 END IF;
4247 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
4248 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4249 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4250 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4251 RAISE OKC_API.G_EXCEPTION_ERROR;
4252 END IF;
4253
4254 --smoduga..Bug 4493213 fix..01-aug-2005..start
4255 counter := 1;
4256 OPEN fnd_pro_csr;
4257 FETCH fnd_pro_csr INTO fnd_pro_rec;
4258 IF ( fnd_pro_csr%FOUND ) Then
4259 l_acc_gen_primary_key_tbl(counter).source_table := 'FINANCIALS_SYSTEM_PARAMETERS';
4260 l_acc_gen_primary_key_tbl(counter).primary_key_column := fnd_pro_rec.l_fnd_profile;
4261 counter := counter + 1 ;
4262 End IF;
4263 CLOSE fnd_pro_csr;
4264 OPEN salesP_csr(l_ipyv_rec.KHR_ID);
4265 FETCH salesP_csr INTO l_salesP_rec;
4266 IF ( salesP_csr%FOUND ) Then
4267 l_acc_gen_primary_key_tbl(counter).source_table := 'JTF_RS_SALESREPS_MO_V';
4268 l_acc_gen_primary_key_tbl(counter).primary_key_column := l_salesP_rec.id;
4269 counter := counter + 1 ;
4270 END IF ;
4271 CLOSE salesP_csr;
4272 --smoduga..Bug 4493213 fix..01-aug-2005..end
4273
4274 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4275 'INSURANCE_EXPENSE_ACCRUAL',
4276 l_return_status,
4277 l_strm_type_id);
4278 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4279 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4280 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4281 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4282 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
4283 RAISE OKC_API.G_EXCEPTION_ERROR;
4284 END IF;
4285
4286 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
4287 get_special_acct_codes(p_khr_id => l_ipyv_rec.KHR_ID,
4288 p_trx_date => SYSDATE,
4289 x_fact_sync_code => l_fact_sync_code,
4290 x_inv_acct_code => l_inv_acct_code );
4291 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
4292
4293 -- Populate Records for Accounting Call.
4294 l_tmpl_identify_rec.PRODUCT_ID := l_ptid;
4295 l_tmpl_identify_rec.TRANSACTION_TYPE_ID := l_ins_try_id;
4296 l_tmpl_identify_rec.STREAM_TYPE_ID := l_inc_sty_id;
4297 l_tmpl_identify_rec.ADVANCE_ARREARS := NULL;
4298 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - Start
4299 l_tmpl_identify_rec.FACTORING_SYND_FLAG := l_fact_sync_code;
4300 l_tmpl_identify_rec.INVESTOR_CODE := l_inv_acct_code;
4301 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - End
4302 l_tmpl_identify_rec.SYNDICATION_CODE := NULL;
4303 l_tmpl_identify_rec.FACTORING_CODE := NULL;
4304 l_tmpl_identify_rec.MEMO_YN := 'N';
4305 l_tmpl_identify_rec.PRIOR_YEAR_YN := 'N';
4306 l_dist_info_rec.SOURCE_ID := x_tclv_tbl(1).ID;
4307 l_dist_info_rec.SOURCE_TABLE := 'OKL_TXL_CNTRCT_LNS';
4308 l_dist_info_rec.ACCOUNTING_DATE := SYSDATE;
4309 l_dist_info_rec.GL_REVERSAL_FLAG := 'N';
4310 --gboomina Bug 4885759 - Start
4311 -- Making Tracactions 'Actual' instead of 'Draft' by setting post_to_gl as 'Y'
4312 l_dist_info_rec.POST_TO_GL := 'Y';
4313 --gboomina Bug 4885759 - End
4314 l_dist_info_rec.AMOUNT := l_adjustment_amount;
4315 l_dist_info_rec.CURRENCY_CODE := l_curr_code;
4316 l_dist_info_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
4317 l_dist_info_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
4318 l_dist_info_rec.CONTRACT_ID := l_ipyv_rec.KHR_ID ;
4319 l_dist_info_rec.CONTRACT_LINE_ID := l_ipyv_rec.KLE_ID;
4320 IF ( l_adjustment_amount > 0) THEN
4321
4322 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
4323 IF(IS_DEBUG_PROCEDURE_ON) THEN
4324 BEGIN
4325 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
4326 END;
4327 END IF;
4328 Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST(
4329 p_api_version => p_api_version
4330 ,p_init_msg_list => p_init_msg_list
4331 ,x_return_status => x_return_status
4332 ,x_msg_count => x_msg_count
4333 ,x_msg_data => x_msg_data
4334 ,p_tmpl_identify_rec => l_tmpl_identify_rec
4335 ,p_dist_info_rec => l_dist_info_rec
4336 ,p_ctxt_val_tbl => l_ctxt_val_tbl
4337 ,p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl
4338 ,x_template_tbl => l_template_tbl
4339 ,x_amount_tbl => l_amount_tbl);
4340 IF(IS_DEBUG_PROCEDURE_ON) THEN
4341 BEGIN
4342 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
4343 END;
4344 END IF;
4345 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
4346 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4347 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4348 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4349 RAISE OKC_API.G_EXCEPTION_ERROR;
4350 END IF;
4351
4352 END IF ;
4353 END IF;
4354
4355 End Bug#5955320 */
4356
4357 --Start Bug#5955320
4358 IF (l_adjustment_amount <> 0 ) THEN
4359
4360 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4361 'INSURANCE_EXPENSE_ACCRUAL',
4362 l_return_status,
4363 l_inc_sty_id);
4364 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4365 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4366 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4367 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4368 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
4369 RAISE OKC_API.G_EXCEPTION_ERROR;
4370 END IF;
4371
4372 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_ipyv_rec.CANCELLATION_DATE);
4373 l_ins_acc_adj := fnd_message.get_string('OKL','OKL_INS_EXP_ACC_ADJ');
4374 if(l_ins_acc_adj IS NULL) then
4375 l_ins_acc_adj := 'Insurance expense accrual adjustment';
4376 end if;
4377
4378 -- Populate Records for adjust_accrual_rec_type.
4379 l_accrual_rec.contract_id := l_ipyv_rec.KHR_ID;
4380 l_accrual_rec.accrual_date := l_gl_date;
4381 l_accrual_rec.description := l_ins_acc_adj;
4382 l_accrual_rec.source_trx_id := p_src_trx_id; -- source transaction id, either rebook or termination trx
4383 l_accrual_rec.source_trx_type := 'TCN';
4384
4385 -- Populate Records for stream_rec_type.
4386 l_stream_tbl(0).stream_type_id := l_inc_sty_id;
4387 l_stream_tbl(0).stream_type_name := NULL;
4388 l_stream_tbl(0).stream_id := NULL;
4389 l_stream_tbl(0).stream_element_id := NULL;
4390 l_stream_tbl(0).stream_amount := l_adjustment_amount;
4391 l_stream_tbl(0).kle_id := l_ipyv_rec.KLE_ID;
4392
4393 -- Start of wraper code generated automatically by Debug code generator for OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS
4394 IF(IS_DEBUG_PROCEDURE_ON) THEN
4395 BEGIN
4396 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
4397 END;
4398 END IF;
4399
4400 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS(
4401 p_api_version => p_api_version
4402 ,p_init_msg_list => p_init_msg_list
4403 ,x_return_status => x_return_status
4404 ,x_msg_count => x_msg_count
4405 ,x_msg_data => x_msg_data
4406 --,x_trx_number => l_trx_number -- bug 9191475
4407 ,x_trx_tbl => l_trxnum_tbl
4408 ,p_accrual_rec => l_accrual_rec
4409 ,p_stream_tbl => l_stream_tbl);
4410
4411 IF(IS_DEBUG_PROCEDURE_ON) THEN
4412 BEGIN
4413 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
4414 END;
4415 END IF;
4416 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
4417 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4418 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4419 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4420 RAISE OKC_API.G_EXCEPTION_ERROR;
4421 END IF;
4422
4423 END IF;
4424 --End Bug#5955320
4425
4426 -- MGAAP start 7263041
4427
4428 IF (l_multi_gaap_yn = 'Y') THEN
4429 IF (l_adjustment_amount_rep <> 0 ) THEN
4430
4431 OKL_STREAMS_UTIL.get_primary_stream_type_rep(l_ipyv_rec.khr_id,
4432 'INSURANCE_EXPENSE_ACCRUAL',
4433 l_return_status,
4434 l_inc_sty_id_rep);
4435 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
4436
4437 l_sob_id := Okl_Accounting_Util.GET_SET_OF_BOOKS_ID(
4438 p_representation_type => 'SECONDARY');
4439 l_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_ipyv_rec.CANCELLATION_DATE, p_ledger_id => l_sob_id);
4440 l_ins_acc_adj := fnd_message.get_string('OKL','OKL_INS_EXP_ACC_ADJ');
4441 if(l_ins_acc_adj IS NULL) then
4442 l_ins_acc_adj := 'Insurance expense accrual adjustment';
4443 end if;
4444
4445 -- Populate Records for adjust_accrual_rec_type.
4446 l_accrual_rec.contract_id := l_ipyv_rec.KHR_ID;
4447 l_accrual_rec.accrual_date := l_gl_date;
4448 l_accrual_rec.description := l_ins_acc_adj;
4449 l_accrual_rec.source_trx_id := p_src_trx_id; -- source transaction id, either rebook or termination trx
4450 l_accrual_rec.source_trx_type := 'TCN';
4451
4452 -- Populate Records for stream_rec_type.
4453 l_stream_tbl(0).stream_type_id := l_inc_sty_id_rep;
4454 l_stream_tbl(0).stream_type_name := NULL;
4455 l_stream_tbl(0).stream_id := NULL;
4456 l_stream_tbl(0).stream_element_id := NULL;
4457 l_stream_tbl(0).stream_amount := l_adjustment_amount_rep;
4458 l_stream_tbl(0).kle_id := l_ipyv_rec.KLE_ID;
4459
4460 -- Start of wraper code generated automatically by Debug code generator for OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS
4461 IF(IS_DEBUG_PROCEDURE_ON) THEN
4462 BEGIN
4463 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
4464 END;
4465 END IF;
4466
4467 --l_accrual_rec.trx_number := l_trx_number; -- bug 9191475
4468 OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS(
4469 p_api_version => p_api_version
4470 ,p_init_msg_list => p_init_msg_list
4471 ,x_return_status => x_return_status
4472 ,x_msg_count => x_msg_count
4473 ,x_msg_data => x_msg_data
4474 --,x_trx_number => l_trx_number -- bug 9191475
4475 ,x_trx_tbl => l_trxnum_tbl
4476 ,p_accrual_rec => l_accrual_rec
4477 ,p_stream_tbl => l_stream_tbl
4478 ,p_representation_type => 'SECONDARY');
4479
4480 IF(IS_DEBUG_PROCEDURE_ON) THEN
4481 BEGIN
4482 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_GENERATE_ACCRUALS_PVT.ADJUST_ACCRUALS ');
4483 END;
4484 END IF;
4485 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4486 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4487 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4488 RAISE OKC_API.G_EXCEPTION_ERROR;
4489 END IF;
4490
4491 END IF;
4492
4493 END IF;
4494
4495 END IF;
4496
4497 -- MGAAP end 7263041
4498
4499
4500 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4501 EXCEPTION
4502 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4503 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4504 (
4505 l_api_name,
4506 G_PKG_NAME,
4507 'OKC_API.G_RET_STS_ERROR',
4508 x_msg_count,
4509 x_msg_data,
4510 '_PROCESS'
4511 );
4512 WHEN OTHERS THEN
4513 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
4514 p_msg_name => 'OKL_UNEXPECTED_ERROR',
4515 p_token1 => 'OKL_SQLCODE',
4516 p_token1_value => SQLCODE,
4517 p_token2 => 'OKL_SQLERRM',
4518 p_token2_value => SQLERRM);
4519 END rebook_exp_adjustment;
4520
4521 ------------------------------------
4522 -- Procedure Rebook_manual_invoice
4523 ----------------------------------
4524 PROCEDURE Rebook_manual_invoice(
4525 p_api_version IN NUMBER
4526 ,p_init_msg_list IN VARCHAR2
4527 ,x_return_status OUT NOCOPY VARCHAR2
4528 ,x_msg_count OUT NOCOPY NUMBER
4529 ,x_msg_data OUT NOCOPY VARCHAR2
4530 ,p_khr_id IN NUMBER
4531 ,p_kle_id IN NUMBER
4532 ,p_strm_typ_id IN NUMBER
4533 ,p_inv_amount IN NUMBER
4534 --Bug 8810880
4535 ,p_ipy_id IN NUMBER) IS
4536 --------------------------
4537 -- DECLARE Local Variables
4538 ---------------------------
4539 l_api_name CONSTANT VARCHAR2(30) := 'Rebook_Manual_Invoice';
4540 l_api_version NUMBER := 1.0;
4541 l_init_msg_list VARCHAR2(1) := Okc_Api.g_false;
4542 l_return_status VARCHAR2(1);
4543 l_msg_count NUMBER;
4544 l_msg_data VARCHAR2(2000);
4545 l_try_id NUMBER;
4546 ----------------------------
4547 -- DECLARE Records/Tables
4548 ----------------------------
4549
4550 --Get Transaction type Id
4551 CURSOR l_try_id_cur IS
4552 SELECT ID
4553 FROM okl_trx_types_tl
4554 WHERE NAME = 'Billing' AND LANGUAGE = 'US';
4555
4556 -- Bug 8810880 Start
4557 lp_taiv_rec okl_tai_pvt.taiv_rec_type;
4558 lp_tilv_rec okl_til_pvt.tilv_rec_type;
4559 lp_tilv_tbl okl_til_pvt.tilv_tbl_type;
4560 lp_tldv_tbl okl_tld_pvt.tldv_tbl_type;
4561 lx_taiv_rec okl_tai_pvt.taiv_rec_type;
4562 lx_tilv_tbl okl_til_pvt.tilv_tbl_type;
4563 lx_tldv_tbl okl_tld_pvt.tldv_tbl_type;
4564 -- Bug 8810880 End
4565
4566 BEGIN
4567 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4568 l_return_status := OKL_API.START_ACTIVITY(
4569 p_api_name => l_api_name,
4570 p_pkg_name => g_pkg_name,
4571 p_init_msg_list => p_init_msg_list,
4572 l_api_version => l_api_version,
4573 p_api_version => p_api_version,
4574 p_api_type => '_PROCESS',
4575 x_return_status => l_return_status);
4576 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4577 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4578 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4579 RAISE OKC_API.G_EXCEPTION_ERROR;
4580 END IF;
4581 -- Header level
4582 OPEN l_try_id_cur;
4583 FETCH l_try_id_cur INTO l_try_id;
4584 IF(l_try_id_cur %NOTFOUND) THEN
4585 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
4586 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,'Billing');
4587 x_return_status := OKC_API.G_RET_STS_ERROR ;
4588 CLOSE l_try_id_cur ;
4589 RAISE OKC_API.G_EXCEPTION_ERROR;
4590 END IF ;
4591
4592 -- Bug 8810880 Start Replace by central billing txn API call
4593 ---- Create Header Record
4594
4595 lp_taiv_rec.khr_id := p_khr_id;
4596 lp_taiv_rec.try_id := l_try_id;
4597 lp_taiv_rec.ipy_id := p_ipy_id;
4598 lp_taiv_rec.date_invoiced := trunc(sysdate);
4599 lp_taiv_rec.date_entered := trunc(sysdate);
4600 lp_taiv_rec.amount := p_inv_amount;
4601 lp_taiv_rec.trx_status_code := 'SUBMITTED';
4602 lp_taiv_rec.legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_khr_id => p_khr_id);
4603 lp_taiv_rec.okl_source_billing_trx := 'INSURANCE';
4604
4605 --- Create Line Record
4606
4607 lp_tilv_rec.amount := p_inv_amount;
4608 lp_tilv_rec.kle_id := p_kle_id;
4609 lp_tilv_rec.line_number := 1;
4610 lp_tilv_rec.tai_id := lx_taiv_rec.id;
4611 lp_tilv_rec.description := 'Insurance manual invoice';
4612 lp_tilv_rec.inv_receiv_line_code := 'LINE';
4613 lp_tilv_rec.sty_id := p_strm_typ_id;
4614
4615 lp_tilv_tbl(1) := lp_tilv_rec;
4616
4617 IF(L_DEBUG_ENABLED='Y') THEN
4618 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
4619 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
4620 END IF;
4621 IF(IS_DEBUG_PROCEDURE_ON) THEN
4622 BEGIN
4623 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug call Okl_Internal_Billing_Pvt.create_billing_trx');
4624 END;
4625 END IF;
4626
4627 okl_internal_billing_pvt.create_billing_trx(
4628 p_api_version =>l_api_version,
4629 p_init_msg_list => l_init_msg_list,
4630 x_return_status => x_return_status,
4631 x_msg_count => x_msg_count,
4632 x_msg_data => x_msg_data,
4633 p_taiv_rec => lp_taiv_rec,
4634 p_tilv_tbl => lp_tilv_tbl,
4635 p_tldv_tbl => lp_tldv_tbl,
4636 x_taiv_rec => lx_taiv_rec,
4637 x_tilv_tbl => lx_tilv_tbl,
4638 x_tldv_tbl => lx_tldv_tbl);
4639
4640 IF(IS_DEBUG_PROCEDURE_ON) THEN
4641 BEGIN
4642 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug call Okl_Internal_Billing_Pvt.create_billing_trx');
4643 END;
4644 END IF;
4645
4646 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4647 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4648 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4649 RAISE OKL_API.G_EXCEPTION_ERROR;
4650 END IF;
4651
4652 -- Bug 8810880 End
4653
4654 OKL_API.END_ACTIVITY (x_msg_count, x_msg_data);
4655 EXCEPTION
4656 WHEN OKC_API.G_EXCEPTION_ERROR THEN
4657 x_return_status := OKC_API.HANDLE_EXCEPTIONS
4658 (
4659 l_api_name,
4660 G_PKG_NAME,
4661 'OKC_API.G_RET_STS_ERROR',
4662 x_msg_count,
4663 x_msg_data,
4664 '_PROCESS'
4665 );
4666 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4667 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4668 (
4669 l_api_name,
4670 G_PKG_NAME,
4671 'OKC_API.G_RET_STS_UNEXP_ERROR',
4672 x_msg_count,
4673 x_msg_data,
4674 '_PROCESS'
4675 );
4676 WHEN OTHERS THEN
4677 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4678 (
4679 l_api_name,
4680 G_PKG_NAME,
4681 'OTHERS',
4682 x_msg_count,
4683 x_msg_data,
4684 '_PROCESS'
4685 );
4686 END Rebook_manual_invoice;
4687
4688
4689 ------------------------------------
4690 --Procedure Cancel Rebbok Policy
4691 ------------------------------------
4692
4693 PROCEDURE cancel_rebook_policy(
4694 p_api_version IN NUMBER,
4695 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
4696 x_return_status OUT NOCOPY VARCHAR2,
4697 x_msg_count OUT NOCOPY NUMBER,
4698 x_msg_data OUT NOCOPY VARCHAR2,
4699 p_src_trx_id IN NUMBER,
4700 p_ipyv_rec IN ipyv_rec_type,
4701 x_ipyv_rec OUT NOCOPY ipyv_rec_type
4702 )
4703 IS
4704 -- Local Variables Declaration
4705 l_cr_memo VARCHAR2(150):='Credit Memo';
4706 l_lang VARCHAR2(2) := 'US' ;
4707 l_strm_type_id NUMBER ;
4708 l_trx_type NUMBER ;
4709 l_pro_refund_amount NUMBER := 0;
4710 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
4711 l_api_name CONSTANT VARCHAR2(30) := 'cancel_rebook_policy';
4712 l_api_version CONSTANT NUMBER := 1;
4713 ls_check_tpi VARCHAR2(3);
4714 l_strm_refund_id NUMBER ;
4715 l_strm_rcvbl_id NUMBER;
4716 l_cust_refund_amount NUMBER;
4717 l_id NUMBER;
4718 l_tai_id NUMBER;
4719 l_vendor_refund_amount NUMBER;
4720 l_khr_status VARCHAR2(30) ;
4721 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
4722 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
4723 l_klev_rec Okl_Kle_Pvt.klev_rec_type ;
4724 lx_klev_rec Okl_Kle_Pvt.klev_rec_type ;
4725 --
4726 -- Records /Tables Declaration
4727 l_ipyv_rec ipyv_rec_type;
4728
4729 -- get transaction type ID
4730 CURSOR okl_trx_types(cp_name VARCHAR2,cp_language VARCHAR2) IS
4731 SELECT id
4732 FROM okl_trx_types_tl
4733 WHERE NAME = cp_name
4734 AND LANGUAGE = cp_language;
4735
4736 -----------------------------------------
4737 -- Begin for cancel_rebook_policy
4738 -----------------------------------------
4739 BEGIN
4740 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4741 G_PKG_NAME,
4742 p_init_msg_list,
4743 l_api_version,
4744 p_api_version,
4745 '_PROCESS',
4746 x_return_status);
4747 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4748 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4749 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4750 RAISE OKC_API.G_EXCEPTION_ERROR;
4751 END IF;
4752 --Check for Insurance Policy ID
4753 IF ((p_ipyv_rec.ID IS NULL ) OR (p_ipyv_rec.ID = OKC_API.G_MISS_NUM )) THEN --[1]
4754 x_return_status := OKC_API.G_RET_STS_ERROR;
4755 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy ID');
4756 RAISE OKC_API.G_EXCEPTION_ERROR;
4757 ELSE
4758 -------------------------------------------------
4759 -- Get Insurance contract and line information
4760 --------------------------------------------------
4761 l_ipyv_rec := get_insurance_info(p_ipyv_rec.ID,l_return_status);
4762 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4763 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4764 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4765 RAISE OKC_API.G_EXCEPTION_ERROR;
4766 END IF;
4767 l_ipyv_rec.cancellation_date := p_ipyv_rec.cancellation_date;
4768 END IF; --[1]
4769 -----------------------------------------------
4770 -- Customer Refund
4771 -----------------------------------------------
4772 l_cust_refund_amount := get_cust_refund(l_ipyv_rec,l_return_status);
4773 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4774 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4775 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4776 RAISE OKC_API.G_EXCEPTION_ERROR;
4777 END IF;
4778 -----------------------------------------------
4779 -- Start Credit Memo Creation
4780 -----------------------------------------------
4781 OPEN okl_trx_types (l_cr_memo, l_lang);
4782 FETCH okl_trx_types INTO l_trx_type;
4783 IF(okl_trx_types%NOTFOUND) THEN
4784 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
4785 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,l_cr_memo);
4786 x_return_status := OKC_API.G_RET_STS_ERROR ;
4787 CLOSE okl_trx_types ;
4788 RAISE OKC_API.G_EXCEPTION_ERROR;
4789 END IF ;
4790 CLOSE okl_trx_types;
4791
4792 --Added by kthiruva on 17-Oct-2005
4793 --Bug 4667686 - Start of Changes
4794 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4795 'INSURANCE_RECEIVABLE',
4796 l_return_status,
4797 l_strm_rcvbl_id);
4798 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4799 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4800 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4801 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4802 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
4803 RAISE OKC_API.G_EXCEPTION_ERROR;
4804 END IF;
4805 --Bug 4667686 - End of Changes
4806
4807
4808 IF l_cust_refund_amount > 0 THEN -- [a]
4809 --negate refund amount
4810 l_pro_refund_amount := -(l_cust_refund_amount);
4811 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
4812 'INSURANCE_REFUND',
4813 l_return_status,
4814 l_strm_refund_id);
4815 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4816 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4817 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4818 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4819 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_REFUND'); --bug 4024785
4820 RAISE OKC_API.G_EXCEPTION_ERROR;
4821 END IF;
4822 -- Call API to create Credit Memo
4823 -- Start of Debug code generator for on_account_credit_memo
4824 IF(L_DEBUG_ENABLED='Y') THEN
4825 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
4826 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
4827 END IF;
4828 IF(IS_DEBUG_PROCEDURE_ON) THEN
4829 BEGIN
4830 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_credit_memo_pub.insert_request ');
4831 END;
4832 END IF;
4833 --- Creating credit memo
4834 on_account_credit_memo
4835 (
4836 p_api_version => l_api_version,
4837 p_init_msg_list => OKL_API.G_FALSE,
4838 p_try_id => l_trx_type,
4839 p_khr_id => l_ipyv_rec.khr_id,
4840 p_kle_id => l_ipyv_rec.kle_id,
4841 p_ipy_id => l_ipyv_rec.id,
4842 p_credit_date => TRUNC(SYSDATE),
4843 p_credit_amount => l_pro_refund_amount,
4844 p_credit_sty_id => l_strm_refund_id,
4845 x_return_status => l_return_status,
4846 x_msg_count =>x_msg_count,
4847 x_msg_data => x_msg_data,
4848 x_tai_id => l_tai_id
4849 );
4850 IF(IS_DEBUG_PROCEDURE_ON) THEN
4851 BEGIN
4852 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call on_account_credit_memo ');
4853 END;
4854 END IF;
4855 -- End of wraper code generated automatically by Debug code generator for okl_credit_memo_pub.insert_request
4856 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4857 x_return_status := l_return_status ;
4858 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4859 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4860 x_return_status := l_return_status ;
4861 RAISE OKC_API.G_EXCEPTION_ERROR;
4862 END IF;
4863 ELSIF(l_cust_refund_amount < 0 )THEN
4864 l_pro_refund_amount := -l_cust_refund_amount; --for making positive invoice amount
4865 -- Start of Debug code generator for Rebook_manual_invoice
4866 IF(L_DEBUG_ENABLED='Y') THEN
4867 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
4868 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
4869 END IF;
4870 IF(IS_DEBUG_PROCEDURE_ON) THEN
4871 BEGIN
4872 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug call Rebook_manual_invoice');
4873 END;
4874 END IF;
4875 Rebook_manual_invoice( p_api_version
4876 ,p_init_msg_list
4877 ,x_return_status
4878 ,x_msg_count
4879 ,x_msg_data
4880 ,l_ipyv_rec.khr_id
4881 ,l_ipyv_rec.kle_id
4882 ,l_strm_rcvbl_id
4883 ,l_pro_refund_amount
4884 --Bug 8810880
4885 ,l_ipyv_rec.id);
4886 IF(IS_DEBUG_PROCEDURE_ON) THEN
4887 BEGIN
4888 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug call Rebook_manual_invoice');
4889 END;
4890 END IF;
4891 l_return_status := x_return_status;
4892 -- End of wraper code generated automatically by Debug code generator for Rebook_manual_invoice
4893 IF ( l_return_status = Fnd_Api.G_RET_STS_ERROR ) THEN
4894 RAISE Fnd_Api.G_EXC_ERROR;
4895 ELSIF (l_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR ) THEN
4896 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
4897 END IF;
4898 END IF ;
4899 ------------------------------------------
4900 --- PAY or clawback from vendor
4901 ------------------------------------------
4902 get_vendor_refund( p_api_version => l_api_version,
4903 p_init_msg_list => OKC_API.G_FALSE,
4904 x_return_status => l_return_status,
4905 x_msg_count => x_msg_count,
4906 x_msg_data => x_msg_data,
4907 p_ipyv_rec => l_ipyv_rec,
4908 pn_refund => l_vendor_refund_amount);
4909 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4910 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4911 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4912 RAISE OKC_API.G_EXCEPTION_ERROR;
4913 END IF;
4914
4915
4916 ---Inactivate all stream / accounting entries
4917 Inactivate_open_items(
4918 p_api_version => l_api_version,
4919 p_init_msg_list => OKC_API.G_FALSE,
4920 x_return_status => l_return_status,
4921 x_msg_count => x_msg_count,
4922 x_msg_data => x_msg_data,
4923 p_contract_id => l_ipyv_rec.khr_id ,
4924 p_contract_line => l_ipyv_rec.kle_id,
4925 p_policy_status => l_ipyv_rec.iss_code );
4926 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4927 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4928 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4929 RAISE OKC_API.G_EXCEPTION_ERROR;
4930 END IF;
4931 -- GET contract status
4932 l_return_status := get_contract_status(l_ipyv_rec.khr_id, l_khr_status);
4933 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4934 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4935 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4936 RAISE OKC_API.G_EXCEPTION_ERROR;
4937 END IF;
4938 IF (l_khr_status = 'ACTIVE' ) THEN
4939 -- if active, end date contract line and update status
4940 l_clev_rec.ID := l_ipyv_rec.kle_id ;
4941 l_clev_rec.sts_code := 'TERMINATED';
4942 l_klev_rec.ID := l_ipyv_rec.kle_id ;
4943 l_clev_rec.DATE_TERMINATED := l_ipyv_rec.CANCELLATION_DATE;
4944 Okl_Contract_Pub.update_contract_line
4945 (
4946 p_api_version => l_api_version ,
4947 p_init_msg_list => OKC_API.G_FALSE,
4948 x_return_status => l_return_status ,
4949 x_msg_count => x_msg_count,
4950 x_msg_data => x_msg_data ,
4951 p_clev_rec => l_clev_rec ,
4952 p_klev_rec => l_klev_rec,
4953 p_edit_mode =>'N' ,
4954 x_clev_rec => lx_clev_rec,
4955 x_klev_rec => lx_klev_rec
4956 );
4957 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4958 -- Status temp
4959 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4960 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4961 -- Status temp
4962 RAISE OKC_API.G_EXCEPTION_ERROR;
4963 END IF;
4964 ELSE
4965
4966 l_clev_rec.ID := l_ipyv_rec.kle_id ;
4967 l_clev_rec.sts_code := 'TERMINATED';
4968 l_klev_rec.ID := l_ipyv_rec.kle_id ;
4969 l_clev_rec.DATE_TERMINATED := l_ipyv_rec.CANCELLATION_DATE;
4970
4971 Okl_Contract_Pub.update_contract_line
4972 (
4973 p_api_version => l_api_version ,
4974 p_init_msg_list => OKC_API.G_FALSE,
4975 x_return_status => l_return_status ,
4976 x_msg_count => x_msg_count,
4977 x_msg_data => x_msg_data ,
4978 p_clev_rec => l_clev_rec ,
4979 p_edit_mode =>'N' ,
4980 p_klev_rec => l_klev_rec,
4981 x_clev_rec => lx_clev_rec,
4982 x_klev_rec => lx_klev_rec );
4983 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4984 -- Status temp
4985 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4986 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4987 -- Status temp
4988 RAISE OKC_API.G_EXCEPTION_ERROR;
4989 END IF;
4990 END IF;
4991 ------------------------------------------
4992 --- Income Adjustment
4993 ------------------------------------------
4994 rebook_inc_adjustment(p_api_version => l_api_version,
4995 p_init_msg_list =>Okc_Api.G_FALSE,
4996 x_return_status => l_return_status,
4997 x_msg_count =>x_msg_count,
4998 x_msg_data =>x_msg_data,
4999 p_ipyv_rec =>l_ipyv_rec,
5000 p_refund_amount =>l_cust_refund_amount,
5001 p_src_trx_id => p_src_trx_id
5002 );
5003
5004 IF ( l_return_status = Fnd_Api.G_RET_STS_ERROR ) THEN
5005 RAISE Fnd_Api.G_EXC_ERROR;
5006 ELSIF (l_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR ) THEN
5007 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
5008 END IF;
5009 ------------------------------------------
5010 --- Expense Adjustment
5011 ------------------------------------------
5012 rebook_exp_adjustment(p_api_version => l_api_version,
5013 p_init_msg_list =>Okc_Api.G_FALSE,
5014 x_return_status => l_return_status,
5015 x_msg_count =>x_msg_count,
5016 x_msg_data =>x_msg_data,
5017 p_ipyv_rec =>l_ipyv_rec,
5018 lp_vendor_refund_amount =>l_vendor_refund_amount,
5019 p_src_trx_id => p_src_trx_id
5020 );
5021 IF ( l_return_status = Fnd_Api.G_RET_STS_ERROR ) THEN
5022 RAISE Fnd_Api.G_EXC_ERROR;
5023 ELSIF (l_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR ) THEN
5024 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
5025 END IF;
5026 l_ipyv_rec.iss_code := 'CANCELED';
5027 -- Create entry for adjustment
5028 --Update Policy
5029 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
5030 IF(IS_DEBUG_PROCEDURE_ON) THEN
5031 BEGIN
5032 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
5033 END;
5034 END IF;
5035 Okl_Ins_Policies_Pub.update_ins_policies(
5036 p_api_version => p_api_version,
5037 p_init_msg_list => OKC_API.G_FALSE,
5038 x_return_status => l_return_status,
5039 x_msg_count => x_msg_count,
5040 x_msg_data => x_msg_data,
5041 p_ipyv_rec => l_ipyv_rec,
5042 x_ipyv_rec => x_ipyv_rec
5043 );
5044 IF(IS_DEBUG_PROCEDURE_ON) THEN
5045 BEGIN
5046 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
5047 END;
5048 END IF;
5049 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
5050 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5051 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5052 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5053 RAISE OKC_API.G_EXCEPTION_ERROR;
5054 END IF;
5055 x_return_status := l_return_status;
5056 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5057 EXCEPTION
5058 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5059 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5060 (
5061 l_api_name,
5062 G_PKG_NAME,
5063 'OKC_API.G_RET_STS_ERROR',
5064 x_msg_count,
5065 x_msg_data,
5066 '_PROCESS'
5067 );
5068 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5069 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5070 (
5071 l_api_name,
5072 G_PKG_NAME,
5073 'OKC_API.G_RET_STS_UNEXP_ERROR',
5074 x_msg_count,
5075 x_msg_data,
5076 '_PROCESS'
5077 );
5078 WHEN OTHERS THEN
5079 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5080 (
5081 l_api_name,
5082 G_PKG_NAME,
5083 'OTHERS',
5084 x_msg_count,
5085 x_msg_data,
5086 '_PROCESS'
5087 );
5088 END cancel_rebook_policy;
5089 --++ Added as part of fix for bug 4056603 ++--
5090
5091 ------------------------------------------------------------
5092 --Bug#5955320
5093 PROCEDURE cancel_create_policies(
5094 p_api_version IN NUMBER,
5095 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
5096 x_return_status OUT NOCOPY VARCHAR2,
5097 x_msg_count OUT NOCOPY NUMBER,
5098 x_msg_data OUT NOCOPY VARCHAR2,
5099 p_khr_id IN NUMBER,
5100 p_cancellation_date IN DATE,
5101 p_crx_code IN VARCHAR2 DEFAULT NULL, --++++++++ Effective Dated Term Qte changes +++++++++
5102 p_transaction_id IN NUMBER,
5103 x_ignore_flag OUT NOCOPY VARCHAR2 --3945995
5104 ) IS
5105 l_api_name CONSTANT VARCHAR2(30) := 'cancel_create';
5106 l_api_version CONSTANT NUMBER := 1;
5107 l_return_status VARCHAR2(1) ;
5108 l_ipyv_rec ipyv_rec_type;
5109 l_delipyv_rec ipyv_rec_type;
5110 lx_ipyv_rec ipyv_rec_type;
5111 lx_ipyv_newrec ipyv_rec_type;
5112 l_cancellation_date DATE ;
5113 l_msg_count NUMBER ;
5114 l_msg_data VARCHAR2(2000);
5115 l_contract_status VARCHAR2(30);
5116 x_message VARCHAR2(100) ;
5117 x_iasset_tbl Okl_Ins_Quote_Pvt.iasset_tbl_type ;
5118 l_inq_id NUMBER;
5119 l_ipy_id NUMBER;
5120 l_iss_code VARCHAR2(30);
5121 l_new_k_start_date DATE;
5122 l_new_k_end_date DATE;
5123 l_maj_ver_num NUMBER;
5124 l_k_end_date DATE;
5125 l_k_start_date DATE;
5126 -- bug 4056603
5127 l_vld_cncl_dt VARCHAR2(1) := '?';
5128 l_cancel_pol_flag VARCHAR2(1) := 'N';
5129 CURSOR c_okl_ins_policies(p_contract_id NUMBER) IS
5130 SELECT ID, IPY_TYPE, ISS_CODE
5131 FROM OKL_INS_POLICIES_B
5132 WHERE KHR_ID = p_contract_id
5133 and ISS_CODE IN ('ACTIVE','ACCEPTED','PENDING')
5134 and IPY_TYPE = 'LEASE_POLICY'
5135 AND DATE_TO > p_cancellation_date; -- bug 4056603
5136 CURSOR c_okl_ins_quote(p_contract_id NUMBER,p_quote_id NUMBER) IS
5137 SELECT ipy_id
5138 FROM OKL_INS_POLICIES_B
5139 WHERE KHR_ID = p_contract_id
5140 AND ID = p_quote_id;
5141 CURSOR okc_k_status_csr(p_khr_id IN NUMBER) IS
5142 SELECT OST.STE_CODE
5143 FROM OKC_K_HEADERS_V KHR , OKC_STATUSES_B OST
5144 WHERE KHR.ID = p_khr_id
5145 AND KHR.STS_CODE = OST.CODE ;
5146 -- Get start date and end date for rebook contract ---
5147 CURSOR okc_new_k_effdate_csr(p_khr_id IN NUMBER) IS
5148 select chr.start_date ,chr.end_date
5149 from OKC_K_HEADERS_B chr ,
5150 OKL_TRX_CONTRACTS TRX
5151 where chr.ORIG_SYSTEM_ID1 = p_khr_id
5152 and chr.ORIG_SYSTEM_SOURCE_CODE = 'OKL_REBOOK'
5153 and chr.orig_system_id1 = trx.khr_id
5154 and chr.id = trx.khr_id_new
5155 and chr.sts_code <> 'ABANDONED'
5156 and trx.tsu_code <> 'PROCESSED'
5157 and trx.representation_type = 'PRIMARY'; -- MGAAP 7263041
5158 --Get Major_version of the original contract in case of rebook---
5159 CURSOR okc_maj_ver_csr(p_khr_id IN NUMBER) IS
5160 select max(major_version) from okc_k_headers_bh where ID =p_khr_id ;
5161 -- Get Orginal contract dates from contract history before doing rebook
5162 CURSOR okc_old_k_effdate_csr(p_khr_id IN NUMBER,l_maj_ver_num IN NUMBER) IS
5163 select start_date ,end_date
5164 From okc_k_headers_bh
5165 where ID = p_khr_id
5166 And major_version = l_maj_ver_num;
5167 PROCEDURE migrate (
5168 p_from IN ipyv_rec_type,
5169 p_to IN OUT NOCOPY ipyv_rec_type
5170 ) IS
5171 BEGIN
5172 p_to.ipy_type := p_from.ipy_type;
5173 p_to.payment_frequency := p_from.payment_frequency;
5174 p_to.ipf_code := p_from.ipf_code;
5175 p_to.ipe_code := p_from.ipe_code;
5176 p_to.date_to := p_from.date_to;
5177 p_to.date_from := p_from.date_from;
5178 p_to.on_file_yn := p_from.on_file_yn;
5179 p_to.private_label_yn := p_from.private_label_yn;
5180 p_to.agent_yn := p_from.agent_yn;
5181 p_to.lessor_insured_yn := p_from.lessor_insured_yn;
5182 p_to.lessor_payee_yn := p_from.lessor_payee_yn;
5183 p_to.khr_id := p_from.khr_id;
5184 p_to.int_id := p_from.int_id;
5185 p_to.isu_id := p_from.isu_id;
5186 p_to.insurance_factor := p_from.insurance_factor;
5187 p_to.factor_code := p_from.factor_code;
5188 p_to.factor_value := p_from.factor_value;
5189 p_to.agency_number := p_from.agency_number;
5190 p_to.agency_site_id := p_from.agency_site_id;
5191 p_to.sales_rep_id := p_from.sales_rep_id;
5192 p_to.agent_site_id := p_from.agent_site_id;
5193 p_to.adjusted_by_id := p_from.adjusted_by_id;
5194 p_to.territory_code := p_from.territory_code;
5195 END migrate;
5196 --Mark
5197 ---------------------------------------------------------------------------
5198 -- FUNCTION get_rec for: OKL_INS_POLICIES_V
5199 ---------------------------------------------------------------------------
5200 FUNCTION get_rec (
5201 px_ipyv_rec IN OUT NOCOPY ipyv_rec_type,
5202 x_no_data_found OUT NOCOPY BOOLEAN
5203 ) RETURN ipyv_rec_type IS
5204 CURSOR okl_ipyv_pk_csr (p_id IN NUMBER) IS
5205 SELECT
5206 ID,
5207 ADJUSTMENT,
5208 CALCULATED_PREMIUM,
5209 OBJECT_VERSION_NUMBER,
5210 AGENCY_NUMBER,
5211 SFWT_FLAG,
5212 IPF_CODE,
5213 INT_ID,
5214 KHR_ID,
5215 ISU_ID,
5216 IPT_ID,
5217 IPY_ID,
5218 IPE_CODE,
5219 CRX_CODE,
5220 AGENCY_SITE_ID,
5221 ISS_CODE,
5222 KLE_ID,
5223 AGENT_SITE_ID,
5224 IPY_TYPE,
5225 POLICY_NUMBER,
5226 QUOTE_YN,
5227 ENDORSEMENT,
5228 INSURANCE_FACTOR,
5229 FACTOR_CODE,
5230 COVERED_AMOUNT,
5231 ADJUSTED_BY_ID,
5232 FACTOR_VALUE,
5233 DATE_QUOTED,
5234 SALES_REP_ID,
5235 DATE_PROOF_REQUIRED,
5236 DATE_QUOTE_EXPIRY,
5237 DEDUCTIBLE,
5238 PAYMENT_FREQUENCY,
5239 DATE_PROOF_PROVIDED,
5240 DATE_FROM,
5241 NAME_OF_INSURED,
5242 DATE_TO,
5243 DESCRIPTION,
5244 ON_FILE_YN,
5245 PREMIUM,
5246 COMMENTS,
5247 ACTIVATION_DATE,
5248 PRIVATE_LABEL_YN,
5249 LESSOR_INSURED_YN,
5250 LESSOR_PAYEE_YN,
5251 CANCELLATION_DATE,
5252 CANCELLATION_COMMENT,
5253 AGENT_YN,
5254 ATTRIBUTE_CATEGORY,
5255 ATTRIBUTE1,
5256 ATTRIBUTE2,
5257 ATTRIBUTE3,
5258 ATTRIBUTE4,
5259 ATTRIBUTE5,
5260 ATTRIBUTE6,
5261 ATTRIBUTE7,
5262 ATTRIBUTE8,
5263 ATTRIBUTE9,
5264 ATTRIBUTE10,
5265 ATTRIBUTE11,
5266 ATTRIBUTE12,
5267 ATTRIBUTE13,
5268 ATTRIBUTE14,
5269 ATTRIBUTE15,
5270 ORG_ID,
5271 REQUEST_ID,
5272 PROGRAM_APPLICATION_ID,
5273 PROGRAM_ID,
5274 PROGRAM_UPDATE_DATE,
5275 CREATED_BY,
5276 CREATION_DATE,
5277 LAST_UPDATED_BY,
5278 LAST_UPDATE_DATE,
5279 LAST_UPDATE_LOGIN,
5280 TERRITORY_CODE
5281 FROM Okl_Ins_Policies_V
5282 WHERE okl_ins_policies_v.id = p_id;
5283 l_okl_ipyv_pk okl_ipyv_pk_csr%ROWTYPE;
5284 l_ipyv_rec ipyv_rec_type;
5285 BEGIN
5286 x_no_data_found := TRUE;
5287 -- Get current database values
5288 OPEN okl_ipyv_pk_csr (px_ipyv_rec.id);
5289 FETCH okl_ipyv_pk_csr INTO
5290 l_ipyv_rec.ID,
5291 l_ipyv_rec.ADJUSTMENT,
5292 l_ipyv_rec.CALCULATED_PREMIUM,
5293 l_ipyv_rec.OBJECT_VERSION_NUMBER,
5294 l_ipyv_rec.AGENCY_NUMBER,
5295 l_ipyv_rec.SFWT_FLAG,
5296 l_ipyv_rec.IPF_CODE,
5297 l_ipyv_rec.INT_ID,
5298 l_ipyv_rec.KHR_ID,
5299 l_ipyv_rec.ISU_ID,
5300 l_ipyv_rec.IPT_ID,
5301 l_ipyv_rec.IPY_ID,
5302 l_ipyv_rec.IPE_CODE,
5303 l_ipyv_rec.CRX_CODE,
5304 l_ipyv_rec.AGENCY_SITE_ID,
5305 l_ipyv_rec.ISS_CODE,
5306 l_ipyv_rec.KLE_ID,
5307 l_ipyv_rec.AGENT_SITE_ID,
5308 l_ipyv_rec.IPY_TYPE,
5309 l_ipyv_rec.POLICY_NUMBER,
5310 l_ipyv_rec.QUOTE_YN,
5311 l_ipyv_rec.ENDORSEMENT,
5312 l_ipyv_rec.INSURANCE_FACTOR,
5313 l_ipyv_rec.FACTOR_CODE,
5314 l_ipyv_rec.COVERED_AMOUNT,
5315 l_ipyv_rec.ADJUSTED_BY_ID,
5316 l_ipyv_rec.FACTOR_VALUE,
5317 l_ipyv_rec.DATE_QUOTED,
5318 l_ipyv_rec.SALES_REP_ID,
5319 l_ipyv_rec.DATE_PROOF_REQUIRED,
5320 l_ipyv_rec.DATE_QUOTE_EXPIRY,
5321 l_ipyv_rec.DEDUCTIBLE,
5322 l_ipyv_rec.PAYMENT_FREQUENCY,
5323 l_ipyv_rec.DATE_PROOF_PROVIDED,
5324 l_ipyv_rec.DATE_FROM,
5325 l_ipyv_rec.NAME_OF_INSURED,
5326 l_ipyv_rec.DATE_TO,
5327 l_ipyv_rec.DESCRIPTION,
5328 l_ipyv_rec.ON_FILE_YN,
5329 l_ipyv_rec.PREMIUM,
5330 l_ipyv_rec.COMMENTS,
5331 l_ipyv_rec.ACTIVATION_DATE,
5332 l_ipyv_rec.PRIVATE_LABEL_YN,
5333 l_ipyv_rec.LESSOR_INSURED_YN,
5334 l_ipyv_rec.LESSOR_PAYEE_YN,
5335 l_ipyv_rec.CANCELLATION_DATE,
5336 l_ipyv_rec.CANCELLATION_COMMENT,
5337 l_ipyv_rec.AGENT_YN,
5338 l_ipyv_rec.ATTRIBUTE_CATEGORY,
5339 l_ipyv_rec.ATTRIBUTE1,
5340 l_ipyv_rec.ATTRIBUTE2,
5341 l_ipyv_rec.ATTRIBUTE3,
5342 l_ipyv_rec.ATTRIBUTE4,
5343 l_ipyv_rec.ATTRIBUTE5,
5344 l_ipyv_rec.ATTRIBUTE6,
5345 l_ipyv_rec.ATTRIBUTE7,
5346 l_ipyv_rec.ATTRIBUTE8,
5347 l_ipyv_rec.ATTRIBUTE9,
5348 l_ipyv_rec.ATTRIBUTE10,
5349 l_ipyv_rec.ATTRIBUTE11,
5350 l_ipyv_rec.ATTRIBUTE12,
5351 l_ipyv_rec.ATTRIBUTE13,
5352 l_ipyv_rec.ATTRIBUTE14,
5353 l_ipyv_rec.ATTRIBUTE15,
5354 l_ipyv_rec.ORG_ID,
5355 l_ipyv_rec.REQUEST_ID,
5356 l_ipyv_rec.PROGRAM_APPLICATION_ID,
5357 l_ipyv_rec.PROGRAM_ID,
5358 l_ipyv_rec.PROGRAM_UPDATE_DATE,
5359 l_ipyv_rec.CREATED_BY,
5360 l_ipyv_rec.CREATION_DATE,
5361 l_ipyv_rec.LAST_UPDATED_BY,
5362 l_ipyv_rec.LAST_UPDATE_DATE,
5363 l_ipyv_rec.LAST_UPDATE_LOGIN,
5364 l_ipyv_rec.TERRITORY_CODE;
5365 x_no_data_found := okl_ipyv_pk_csr%NOTFOUND;
5366 CLOSE okl_ipyv_pk_csr;
5367 px_ipyv_rec := l_ipyv_rec;
5368 RETURN(px_ipyv_rec);
5369 END get_rec;
5370 FUNCTION get_rec (
5371 px_ipyv_rec IN OUT NOCOPY ipyv_rec_type
5372 ) RETURN ipyv_rec_type IS
5373 l_row_notfound BOOLEAN := TRUE;
5374 BEGIN
5375 RETURN(get_rec(px_ipyv_rec, l_row_notfound));
5376 END get_rec;
5377 -- END MARK
5378 BEGIN
5379 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5380 G_PKG_NAME,
5381 p_init_msg_list,
5382 l_api_version,
5383 p_api_version,
5384 '_PROCESS',
5385 x_return_status);
5386 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5387 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5388 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5389 RAISE OKC_API.G_EXCEPTION_ERROR;
5390 END IF;
5391 SAVEPOINT cancel_create;
5392 x_ignore_flag := OKC_API.G_FALSE; --3945995
5393 -- Check for contract_id (NULL)
5394 IF ((p_khr_id IS NULL ) OR (p_khr_id = OKC_API.G_MISS_NUM )) THEN
5395 x_return_status := OKC_API.G_RET_STS_ERROR;
5396 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'ContractID');
5397 ROLLBACK TO cancel_create;
5398 RAISE OKC_API.G_EXCEPTION_ERROR;
5399 END IF;
5400 -- Check for Date put SYSDATE if NULL
5401 IF ((p_cancellation_date IS NULL ) OR (p_cancellation_date = OKC_API.G_MISS_DATE )) THEN
5402 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Cancellation Date');
5403 ROLLBACK TO cancel_create;
5404 RAISE OKC_API.G_EXCEPTION_ERROR;
5405 END IF;
5406 l_cancellation_date := p_cancellation_date ;
5407 OPEN c_okl_ins_policies(p_khr_id);
5408 FETCH c_okl_ins_policies INTO l_ipyv_rec.ID, l_ipyv_rec.IPY_TYPE,
5409 l_ipyv_rec.ISS_CODE ;
5410
5411 CLOSE c_okl_ins_policies;
5412 IF (l_ipyv_rec.IPY_TYPE IS NULL) OR (l_ipyv_rec.IPY_TYPE = OKC_API.G_MISS_CHAR) THEN
5413 NULL;
5414 ELSIF( l_ipyv_rec.IPY_TYPE <> 'THIRD_PARTY_POLICY' AND
5415 l_ipyv_rec.IPY_TYPE <> 'OPTIONAL_POLICY')THEN
5416 IF (p_crx_code IS NOT NULL) OR (p_crx_code <> OKC_API.G_MISS_CHAR ) THEN
5417 l_ipyv_rec.crx_code := p_crx_code;--'ASSET_TERMINATION' ;
5418 END IF;
5419 l_ipyv_rec.cancellation_date := p_cancellation_date;
5420 l_iss_code := l_ipyv_rec.ISS_CODE ;
5421 --++ Added as part of fix for bug 4056603 ++--
5422 l_cancel_pol_flag := validate_cancel_policy(p_khr_id);
5423
5424 IF l_cancel_pol_flag = 'Y' THEN
5425 IF l_ipyv_rec.ISS_CODE = 'ACTIVE' THEN
5426 -- Call function validate_cancel_plicy
5427 --++ Added as part of fix for bug 4056603 ++--
5428 cancel_rebook_policy(
5429 p_api_version => l_api_version,
5430 p_init_msg_list => OKC_API.G_FALSE,
5431 x_return_status => l_return_status,
5432 x_msg_count => x_msg_count,
5433 x_msg_data => x_msg_data,
5434 p_src_trx_id => p_transaction_id,
5435 p_ipyv_rec => l_ipyv_rec,
5436 x_ipyv_rec => lx_ipyv_rec);
5437 ELSE
5438 l_delipyv_rec := get_rec(l_ipyv_rec);
5439 l_delipyv_rec.cancellation_date := l_cancellation_date;
5440 delete_policy(
5441 p_api_version => l_api_version,
5442 p_init_msg_list => OKC_API.G_FALSE,
5443 x_return_status => l_return_status,
5444 x_msg_count => x_msg_count,
5445 x_msg_data => x_msg_data,
5446 p_ipyv_rec => l_delipyv_rec,
5447 x_ipyv_rec => lx_ipyv_rec);
5448 END IF;
5449 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5450 ROLLBACK TO cancel_create;
5451 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5452 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5453 ROLLBACK TO cancel_create;
5454 RAISE OKC_API.G_EXCEPTION_ERROR;
5455 END IF;
5456 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN --[1]
5457 SAVEPOINT save_quote; -- 3945995
5458 --** CANCELLED OLD POLICIES SUCCESSFULLY **--
5459 --** STARTING QUOTE PROCESS FOR NEW POLICIES **--
5460 --****
5461 -- Copy needed information from cancelled policy record to
5462 -- New Policy to be created.
5463 --****
5464 migrate(lx_ipyv_rec, lx_ipyv_newrec);
5465 --** Process Policy covering full contract during rebooking **--
5466 -- Dates of the Rebooked contract ----
5467 OPEN okc_new_k_effdate_csr(p_khr_id);
5468 FETCH okc_new_k_effdate_csr INTO l_new_k_start_date, l_new_k_end_date;
5469 -- If contract has been rebooked --
5470 IF okc_new_k_effdate_csr%FOUND THEN ---[1]
5471 --get maximum version number for contract
5472 OPEN okc_maj_ver_csr(p_khr_id);
5473 FETCH okc_maj_ver_csr INTO l_maj_ver_num;
5474 CLOSE okc_maj_ver_csr;
5475 --check to see rebook has been requested
5476 IF l_maj_ver_num > 1 THEN --[2]
5477 l_maj_ver_num := l_maj_ver_num -1;
5478 --get Original contract dates before doing rebook --
5479 OPEN okc_old_k_effdate_csr(p_khr_id,l_maj_ver_num);
5480 FETCH okc_old_k_effdate_csr INTO l_k_start_date, l_k_end_date;
5481 CLOSE okc_old_k_effdate_csr;
5482 --Check to see if policy covers full term of contract
5483 --gboomina Bug 4889211 Start - Changed - Check only To dates
5484 IF trunc(l_k_end_date)=trunc(lx_ipyv_rec.date_to) THEN -- [3]
5485 -- lx_ipyv_newrec.date_from := trunc(l_new_k_start_date); - gboomina commented Bug 4889211
5486 lx_ipyv_newrec.date_to := trunc(l_new_k_end_date);
5487 --gboomina Bug 4889211 End
5488 END IF; --[3]
5489 END IF; --[2]
5490 ELSE
5491 lx_ipyv_newrec.date_from := p_cancellation_date;
5492 END IF; --[1]
5493 CLOSE okc_new_k_effdate_csr;
5494 --** END Process Policy covering full contract during rebooking **--
5495 --+++++ EFF DATED TERM START +++++++++------
5496 --check for future and prior date's of termination
5497 -- if quote termination is before start of insurance policy.
5498 IF p_cancellation_date < lx_ipyv_rec.date_from THEN
5499 lx_ipyv_newrec.date_from := lx_ipyv_rec.date_from;
5500 END IF;
5501 --+++++ EFF DATED TERM END+++++++++------
5502 --** SAVE quote **--
5503 -- check to see if the cancellation date is between the start and end date of the policy -- Bug 4056603
5504 --SELECT 'X' INTO l_vld_cncl_dt FROM DUAL
5505 --WHERE p_cancellation_date BETWEEN lx_ipyv_rec.date_from AND lx_ipyv_rec.date_to;
5506 --IF l_vld_cncl_dt = 'X' then
5507 -- gboomina Bug 4994786 Changed - start
5508 -- Instead of implicit cusor, used IF condition check
5509 IF p_cancellation_date >= lx_ipyv_rec.date_from AND p_cancellation_date <= lx_ipyv_rec.date_to THEN
5510 -- gboomina Bug 4994786 - end
5511 lx_ipyv_newrec.date_from := p_cancellation_date;
5512 END IF;
5513 lx_ipyv_newrec.date_quoted := SYSDATE - 10;
5514 lx_ipyv_newrec.date_quote_expiry := SYSDATE + 20;
5515
5516 --Bug# 7497783
5517 IF p_transaction_id IS NOT NULL THEN
5518 IF lx_ipyv_newrec.date_quote_expiry > lx_ipyv_newrec.date_to THEN
5519 lx_ipyv_newrec.date_quote_expiry := lx_ipyv_newrec.date_to;
5520 END IF;
5521 END IF;
5522 --Bug# 7497783
5523 lx_ipyv_newrec.object_version_number := 1;
5524 lx_ipyv_newrec.adjustment := 0;
5525 -- Start of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.save_quote
5526 IF(L_DEBUG_ENABLED='Y') THEN
5527 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
5528 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
5529 END IF;
5530 IF(IS_DEBUG_PROCEDURE_ON) THEN
5531 BEGIN
5532 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_ins_quote_pub.save_quote ');
5533 END;
5534 END IF;
5535 okl_ins_quote_pub.save_quote(
5536 p_api_version => l_api_version,
5537 p_init_msg_list => Okc_Api.G_TRUE ,
5538 x_return_status => l_return_status,
5539 x_msg_count => l_msg_count,
5540 x_msg_data => l_msg_data,
5541 px_ipyv_rec => lx_ipyv_newrec,
5542 x_message => x_message );
5543 IF(IS_DEBUG_PROCEDURE_ON) THEN
5544 BEGIN
5545 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_ins_quote_pub.save_quote ');
5546 END;
5547 END IF;
5548 -- End of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.save_quote
5549 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5550 ROLLBACK TO save_quote;
5551 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5552 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5553 ROLLBACK TO save_quote;
5554 RAISE OKC_API.G_EXCEPTION_ERROR;
5555 END IF;
5556 l_inq_id := lx_ipyv_newrec.id;
5557 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN --[2]
5558 SAVEPOINT accept_quote; -- 3945995
5559 --** ACCEPT quote **--
5560 lx_ipyv_newrec.adjustment := 0;
5561 -- Start of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.accept_quote
5562 IF(IS_DEBUG_PROCEDURE_ON) THEN
5563 BEGIN
5564 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_ins_quote_pub.accept_quote ');
5565 END;
5566 END IF;
5567 okl_ins_quote_pub.accept_quote(
5568 p_api_version => l_api_version,
5569 p_init_msg_list => Okc_Api.G_TRUE ,
5570 x_return_status => l_return_status,
5571 x_msg_count => l_msg_count,
5572 x_msg_data => l_msg_data,
5573 p_quote_id => lx_ipyv_newrec.ID
5574 );
5575 IF(IS_DEBUG_PROCEDURE_ON) THEN
5576 BEGIN
5577 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_ins_quote_pub.accept_quote ');
5578 END;
5579 END IF;
5580 -- End of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.accept_quote
5581 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5582 ROLLBACK TO accept_quote; -- 3945995
5583 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5584 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5585 ROLLBACK TO accept_quote; -- 3945995
5586 RAISE OKC_API.G_EXCEPTION_ERROR;
5587 END IF;
5588 IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN --[3]
5589 SAVEPOINT policy_activate; -- 3945995
5590 --** CHECK for contract status **--
5591 OPEN okc_k_status_csr(p_khr_id);
5592 FETCH okc_k_status_csr INTO l_contract_status ;
5593 IF(okc_k_status_csr%NOTFOUND) THEN
5594 -- store SQL error message on message stack for caller
5595 OKL_API.set_message(G_APP_NAME,
5596 G_INVALID_CONTRACT
5597 );
5598 IF okc_k_status_csr%ISOPEN THEN
5599 CLOSE okc_k_status_csr;
5600 END IF;
5601 x_ignore_flag := okc_api.G_TRUE; -- 3945995
5602 x_return_status := OKC_API.G_RET_STS_ERROR;
5603 ROLLBACK TO policy_activate; -- 3945995
5604 RAISE OKC_API.G_EXCEPTION_ERROR;
5605 END IF;
5606 CLOSE okc_k_status_csr;
5607 --** Get Policy ID for the Quote Created above **--
5608 OPEN c_okl_ins_quote(p_khr_id,l_inq_id);
5609 FETCH c_okl_ins_quote INTO l_ipy_id ;
5610 CLOSE c_okl_ins_quote;
5611 -- 3745151 Removing error as it is not needed
5612 /*
5613 IF(c_okl_ins_quote%NOTFOUND) THEN
5614 -- store SQL error message on message stack for caller
5615 OKL_API.set_message(G_APP_NAME,G_INVALID_CONTRACT
5616 );
5617 IF c_okl_ins_quote%ISOPEN THEN
5618 CLOSE c_okl_ins_quote;
5619 END IF;
5620 x_return_status := OKC_API.G_RET_STS_ERROR;
5621 ROLLBACK TO policy_activate; -- 3945995
5622 RAISE OKC_API.G_EXCEPTION_ERROR;
5623 END IF;
5624 */
5625 IF (L_iss_code = 'ACTIVE' ) THEN --[5]
5626 IF (l_contract_status = 'ACTIVE') THEN --[4]
5627 -- Start of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.activate_ins_policy
5628 IF(IS_DEBUG_PROCEDURE_ON) THEN
5629 BEGIN
5630 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call okl_ins_quote_pub.activate_ins_policy ');
5631 END;
5632 END IF;
5633 okl_ins_quote_pub.activate_ins_policy(
5634 p_api_version => l_api_version ,
5635 p_init_msg_list => Okc_Api.G_TRUE,
5636 x_return_status => l_return_status,
5637 x_msg_count => l_msg_count,
5638 x_msg_data => l_msg_data,
5639 p_ins_policy_id => l_ipy_id );
5640 IF(IS_DEBUG_PROCEDURE_ON) THEN
5641 BEGIN
5642 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call okl_ins_quote_pub.activate_ins_policy ');
5643 END;
5644 END IF;
5645 -- End of wraper code generated automatically by Debug code generator for okl_ins_quote_pub.activate_ins_policy
5646 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5647 ROLLBACK TO policy_activate; -- 3945995
5648 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5649 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5650 x_ignore_flag := okc_api.G_TRUE; -- 3945995
5651 ROLLBACK TO policy_activate; -- 3945995
5652 RAISE OKC_API.G_EXCEPTION_ERROR;
5653 END IF;
5654 END IF ; --[5]
5655 END IF;--[4]
5656 END IF; --[3]
5657 END IF; --[2]
5658 END IF; --[1]
5659 END IF; -- validate cancel policy
5660 END IF;
5661 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5662 EXCEPTION
5663 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5664 -- 3945995 begin
5665 IF (x_ignore_flag = Okc_Api.G_TRUE)THEN
5666 x_return_status := l_return_status;
5667 OKC_API.END_ACTIVITY(x_msg_count,x_msg_data);
5668 ELSE -- 3945995 END
5669 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5670 (
5671 l_api_name,
5672 G_PKG_NAME,
5673 'OKC_API.G_RET_STS_ERROR',
5674 x_msg_count,
5675 x_msg_data,
5676 '_PROCESS'
5677 );
5678 END IF; -- 3945995
5679 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5680 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5681 (
5682 l_api_name,
5683 G_PKG_NAME,
5684 'OKC_API.G_RET_STS_UNEXP_ERROR',
5685 x_msg_count,
5686 x_msg_data,
5687 '_PROCESS'
5688 );
5689 END cancel_create_policies;
5690
5691 --+++++++++++++ Effective Dated Term Qte changes -- start +++++++++
5692 -------------------------------------------------------------------------
5693 -- PROCEDURE CHECK_CLAIMS
5694 -- Called to check if any unsubmitted claims exist for a contract being
5695 -- terminated
5696 -- smoduga created 06-Sep-04
5697 -------------------------------------------------------------------------
5698 PROCEDURE check_claims(
5699 p_api_version IN NUMBER,
5700 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
5701 x_return_status OUT NOCOPY VARCHAR2,
5702 x_msg_count OUT NOCOPY NUMBER,
5703 x_msg_data OUT NOCOPY VARCHAR2,
5704 x_clm_exist OUT NOCOPY VARCHAR2,
5705 p_khr_id IN NUMBER,
5706 p_trx_date IN DATE
5707 ) IS
5708 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5709 l_claim_id NUMBER;
5710 l_claim_date DATE;
5711 l_contract_number VARCHAR2(120);
5712 l_api_name CONSTANT VARCHAR2(30) := 'check_claims';
5713 l_api_version CONSTANT NUMBER := 1;
5714
5715 -- Fetch count of unsubmitted Insurance claims for the insurance policies
5716 -- attached to assets of the contract.
5717 cursor chk_claims (c_khr_id NUMBER ,c_qte_eff_date DATE )is
5718 Select CLMB.ID,CLMB.claim_date
5719 From okl_ins_claims_B CLMB,
5720 OKL_INS_POLICIES_V IPYV
5721 WHERE CLMB.ipy_id = IPYV.id
5722 AND trunc(CLMB.claim_date) >= trunc(c_qte_eff_date)
5723 AND CLMB.CSU_CODE <> 'SUBMITTED'
5724 AND IPYV.ISS_CODE ='ACTIVE'
5725 AND IPYV.IPY_TYPE ='LEASE_POLICY'
5726 AND IPYV.khr_id = c_khr_id;
5727
5728 -- Get contract number
5729 cursor get_chr_number(c_khr_id NUMBER) is
5730 select contract_number
5731 From okc_k_headers_b
5732 where id = c_khr_id;
5733
5734 chk_claims_rec chk_claims%ROWTYPE;
5735
5736 BEGIN
5737 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5738 G_PKG_NAME,
5739 p_init_msg_list,
5740 l_api_version,
5741 p_api_version,
5742 '_PROCESS',
5743 x_return_status);
5744 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5745 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5746 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5747 RAISE OKC_API.G_EXCEPTION_ERROR;
5748 END IF;
5749 -- Check if ther are any claims open for this contract
5750 -- at the time of raising the termination quote
5751 OPEN chk_claims (p_khr_id,p_trx_date);
5752 FETCH chk_claims INTO l_claim_id,l_claim_date;
5753 IF chk_claims%FOUND THEN
5754 x_clm_exist := 'Y';
5755 END IF;
5756 CLOSE chk_claims;
5757
5758 IF ( x_clm_exist = 'Y' ) Then
5759
5760 l_return_status := OKC_API.G_RET_STS_ERROR;
5761
5762 OPEN get_chr_number(p_khr_id);
5763 FETCH get_chr_number into l_contract_number;
5764 close get_chr_number;
5765
5766 FOR chk_claims_rec IN chk_claims(p_khr_id,p_trx_date) LOOP
5767 OKL_API.set_message(G_APP_NAME, 'OKL_INS_CLAIMS_EXIST',
5768 'CONTRACT_NUM',l_contract_number,
5769 'CLAIM_DATE',l_claim_date);
5770
5771 END LOOP;
5772
5773 RAISE OKC_API.G_EXCEPTION_ERROR;
5774 ELSE
5775 x_clm_exist := 'N' ;
5776 END IF;
5777
5778 x_return_status := l_return_status;
5779
5780 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5781
5782 EXCEPTION
5783 WHEN OKC_API.G_EXCEPTION_ERROR THEN
5784
5785 IF chk_claims%ISOPEN THEN
5786 CLOSE chk_claims;
5787 END IF;
5788
5789 IF get_chr_number%ISOPEN THEN
5790 CLOSE get_chr_number;
5791 END IF;
5792
5793 x_return_status := OKC_API.HANDLE_EXCEPTIONS
5794 (
5795 l_api_name,
5796 G_PKG_NAME,
5797 'OKC_API.G_RET_STS_ERROR',
5798 x_msg_count,
5799 x_msg_data,
5800 '_PROCESS'
5801 );
5802
5803 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5804
5805 IF chk_claims%ISOPEN THEN
5806 CLOSE chk_claims;
5807 END IF;
5808
5809 IF get_chr_number%ISOPEN THEN
5810 CLOSE get_chr_number;
5811 END IF;
5812
5813 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5814 (
5815 l_api_name,
5816 G_PKG_NAME,
5817 'OKC_API.G_RET_STS_UNEXP_ERROR',
5818 x_msg_count,
5819 x_msg_data,
5820 '_PROCESS'
5821 );
5822
5823 WHEN OTHERS THEN
5824
5825 IF chk_claims%ISOPEN THEN
5826 CLOSE chk_claims;
5827 END IF;
5828
5829 IF get_chr_number%ISOPEN THEN
5830 CLOSE get_chr_number;
5831 END IF;
5832
5833 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5834 (
5835 l_api_name,
5836 G_PKG_NAME,
5837 'OTHERS',
5838 x_msg_count,
5839 x_msg_data,
5840 '_PROCESS'
5841 );
5842
5843 END check_claims;
5844 --+++++++++++++ Effective Dated Term Qte changes -- end +++++++++
5845
5846
5847
5848 PROCEDURE cancel_policy(
5849 p_api_version IN NUMBER,
5850 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
5851 x_return_status OUT NOCOPY VARCHAR2,
5852 x_msg_count OUT NOCOPY NUMBER,
5853 x_msg_data OUT NOCOPY VARCHAR2,
5854 p_ipyv_rec IN ipyv_rec_type,
5855 x_ipyv_rec OUT NOCOPY ipyv_rec_type
5856 )
5857 IS
5858 l_api_name CONSTANT VARCHAR2(30) := 'cancel_policy';
5859 l_api_version CONSTANT NUMBER := 1;
5860 l_return_status VARCHAR2(1) ;
5861 ls_check_tpi VARCHAR2(3);
5862 l_id NUMBER ;
5863 l_ipyv_rec ipyv_rec_type;
5864 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
5865 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
5866 l_klev_rec Okl_Kle_Pvt.klev_rec_type ;
5867 lx_klev_rec Okl_Kle_Pvt.klev_rec_type ;
5868 l_cust_refund NUMBER ;
5869 l_vendor_adjustment NUMBER;
5870 l_khr_status VARCHAR2(30) ;
5871 l_adjustment_amount NUMBER ;
5872 l_strm_type_id NUMBER;
5873 l_ins_try_id NUMBER ;
5874 l_total_billed NUMBER ;
5875 l_total_paid NUMBER ;
5876 l_total_bill_accrued NUMBER ;
5877 l_total_pay_accrued NUMBER ;
5878 l_inc_sty_id NUMBER ;
5879 /* Bug#5955320
5880 -- l_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
5881 -- x_tcnv_rec_in OKL_TRX_CONTRACTS_PUB.tcnv_rec_type ;
5882 -- l_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
5883 -- x_tclv_tbl OKL_TRX_CONTRACTS_PUB.tclv_tbl_type ;
5884 -- l_ctxt_val_tbl Okl_Account_Dist_Pub.CTXT_VAL_TBL_TYPE;
5885 -- l_acc_gen_primary_key_tbl Okl_Account_Dist_Pub.acc_gen_primary_key;
5886 -- l_template_tbl Okl_Account_Dist_Pub.AVLV_TBL_TYPE;
5887 -- l_amount_tbl Okl_Account_Dist_Pub.AMOUNT_TBL_TYPE;
5888 */
5889 l_currency_conversion_type okl_k_headers_full_v.currency_conversion_type%TYPE;
5890 l_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
5891 l_dist_info_rec Okl_Account_Dist_Pub.dist_info_REC_TYPE;
5892 l_tmpl_identify_rec Okl_Account_Dist_Pub.TMPL_IDENTIFY_REC_TYPE;
5893
5894 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
5895 l_fact_sync_code VARCHAR2(2000);
5896 l_inv_acct_code VARCHAR2(2000);
5897 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
5898
5899 l_ptid NUMBER ;
5900 l_curr_code GL_LEDGERS_PUBLIC_V.CURRENCY_CODE%TYPE;
5901 counter NUMBER;
5902 -- smoduga added for 3845998
5903 l_rcvbl_strm_type_id NUMBER;
5904 l_last_billed_date DATE;
5905 l_check_refund_months NUMBER;
5906 -- smoduga added for 3845998
5907
5908 -- schodava added Covered_amount to the cursor for Bug 4701170
5909 CURSOR c_ins_info( p_ipy_id NUMBER) IS
5910 SELECT IPYB.KHR_ID, IPYB.KLE_ID ,IPYB.OBJECT_VERSION_NUMBER, IPYB.date_from, IPYB.ipy_type,IPYB.factor_code,
5911 IPYB.COVERED_AMOUNT
5912 FROM OKL_INS_POLICIES_B IPYB
5913 WHERE IPYB.ID = p_ipy_id;
5914
5915
5916
5917 CURSOR c_okl_third_party(l_khr_id NUMBER, l_cancellation_date DATE) IS
5918 SELECT ID
5919 FROM OKL_INS_POLICIES_B IPYB
5920 WHERE IPYB.IPY_TYPE = 'THIRD_PARTY_POLICY'
5921 AND l_cancellation_date BETWEEN IPYB.date_from and IPYB.date_to;
5922
5923 -- cursor changed to take the stream type id as the parameter, for user defined streams, bug 3924300
5924 CURSOR c_total_billed(l_khr_id NUMBER, l_kle_id NUMBER,l_stream_type_id NUMBER) IS
5925 SELECT SUM(amount)
5926 FROM OKL_STREAMS STM,
5927 OKL_STRM_ELEMENTS STEM
5928 where STM.STY_ID = l_stream_type_id
5929 AND STM.KLE_ID = l_kle_id
5930 AND STM.KHR_ID = l_khr_id
5931 AND STM.ID = STEM.STM_ID
5932 AND STEM.DATE_BILLED IS NOT NULL ;
5933
5934 -- cursor changed to take the stream type id as the parameter, for user defined streams, bug 3924300
5935 CURSOR c_total_paid(l_khr_id NUMBER, l_kle_id NUMBER,l_stream_type_id NUMBER) IS
5936 SELECT SUM(amount)
5937 FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
5938 WHERE STM.STY_ID = l_stream_type_id
5939 AND STM.KLE_ID = l_kle_id
5940 AND STM.KHR_ID = l_khr_id
5941 AND STM.ID = STEM.STM_ID
5942 AND STEM.DATE_BILLED IS NOT NULL;
5943
5944 -- cursor changed to take the stream type id as the parameter, for user defined streams, bug 3924300
5945 CURSOR c_total_bill_accrued(l_khr_id NUMBER, l_kle_id NUMBER, l_stream_type_id NUMBER) IS
5946 SELECT SUM(amount)
5947 FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
5948 WHERE STM.STY_ID = l_stream_type_id
5949 AND STM.KLE_ID = l_kle_id
5950 AND STM.KHR_ID = l_khr_id
5951 AND STM.ID = STEM.STM_ID
5952 AND STEM.ACCRUED_YN = 'Y'
5953 AND STM.PURPOSE_CODE IS NULL;
5954
5955 -- cursor changed to take the stream type id as the parameter, for user defined streams, bug 3924300
5956
5957 CURSOR c_total_payment_accrued(l_khr_id NUMBER, l_kle_id NUMBER, l_stream_type_id NUMBER) IS
5958 SELECT SUM(amount)
5959 FROM OKL_STREAMS STM , OKL_STRM_ELEMENTS STEM
5960 WHERE STM.STY_ID = l_stream_type_id
5961 AND STM.KLE_ID = l_kle_id
5962 AND STM.KHR_ID = l_khr_id
5963 AND STM.ID = STEM.STM_ID
5964 AND STEM.ACCRUED_YN = 'Y'
5965 AND STM.PURPOSE_CODE IS NULL;
5966
5967
5968
5969 CURSOR okl_trx_types (cp_name VARCHAR2, cp_language VARCHAR2) IS
5970 SELECT id
5971 FROM okl_trx_types_tl
5972 WHERE name = cp_name
5973 AND language = cp_language;
5974
5975
5976
5977 CURSOR C_OKL_STRM_TYPE_V(ls_stm_code VARCHAR2) IS
5978 select ID
5979 from OKL_STRM_TYPE_TL
5980 where NAME = ls_stm_code
5981 AND LANGUAGE = 'US';
5982
5983
5984
5985 CURSOR l_contract_currency_csr IS
5986 SELECT currency_code
5987 ,currency_conversion_type
5988 ,currency_conversion_date
5989 FROM okl_k_headers_full_v
5990 WHERE id = p_ipyv_rec.khr_id ;
5991
5992
5993
5994 CURSOR l_acc_dtls_csr(p_khr_id IN NUMBER) IS
5995 SELECT khr.pdt_id pdt_id
5996 FROM okl_k_headers_v khr
5997 WHERE khr.ID = p_khr_id;
5998
5999 l_acct_call_rec l_acc_dtls_csr%ROWTYPE;
6000
6001
6002 ----- Account Generator sources
6003
6004 Cursor salesP_csr( chrId NUMBER) IS
6005 select ct.object1_id1 id
6006 from okc_contacts ct,
6007 okc_contact_sources csrc,
6008 okc_k_party_roles_b pty,
6009 okc_k_headers_b chr
6010 where ct.cpl_id = pty.id
6011 and ct.cro_code = csrc.cro_code
6012 and ct.jtot_object1_code = csrc.jtot_object_code
6013 and ct.dnz_chr_id = chr.id
6014 and pty.rle_code = csrc.rle_code
6015 and csrc.cro_code = 'SALESPERSON'
6016 and csrc.rle_code = 'LESSOR'
6017 and csrc.buy_or_sell = chr.buy_or_sell
6018 and pty.dnz_chr_id = chr.id
6019 and pty.chr_id = chr.id
6020 and chr.id = chrId;
6021
6022
6023 l_salesP_rec salesP_csr%ROWTYPE;
6024
6025 Cursor fnd_pro_csr IS
6026 select mo_global.get_current_org_id() l_fnd_profile
6027 from dual;
6028 fnd_pro_rec fnd_pro_csr%ROWTYPE;
6029
6030 -- smoduga added for 3845998
6031 -- Cursor to get the maximum billed date for insurance recievables
6032 Cursor rcvbl_max_billed_date (c_sty_id NUMBER, c_khr_id NUMBER, c_kle_id NUMBER) IS
6033 SELECT max (stre.date_billed)
6034 FROM okl_strm_elements STRE,
6035 OKL_STREAMS STR
6036 WHERE STR.ID = STRE.STM_ID
6037 AND STR.STY_ID = c_sty_id
6038 AND STRE.DATE_BILLED IS NOT NULL
6039 AND STR.KHR_ID = c_khr_id
6040 AND STR.KLE_ID = c_kle_id;
6041
6042
6043
6044 BEGIN
6045 l_ipyv_rec := p_ipyv_rec ;
6046 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6047 G_PKG_NAME,
6048 p_init_msg_list,
6049 l_api_version,
6050 p_api_version,
6051 '_PROCESS',
6052 x_return_status);
6053 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6054 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6055 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6056 RAISE OKC_API.G_EXCEPTION_ERROR;
6057 END IF;
6058
6059 IF ((l_ipyv_rec.ID IS NULL ) OR (l_ipyv_rec.ID = OKC_API.G_MISS_NUM )) THEN
6060 x_return_status := OKC_API.G_RET_STS_ERROR;
6061 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy ID');
6062 RAISE OKC_API.G_EXCEPTION_ERROR;
6063 ELSE
6064 -- Check for TPI
6065 -- Added covered amount for bug 4701170
6066 OPEN c_ins_info(p_ipyv_rec.ID);
6067 FETCH c_ins_info INTO l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID
6068 ,l_ipyv_rec.OBJECT_VERSION_NUMBER, l_ipyv_rec.date_from, l_ipyv_rec.ipy_type,
6069 l_ipyv_rec.FACTOR_CODE, l_ipyv_rec.covered_amount;
6070 IF(c_ins_info%NOTFOUND) THEN
6071 Okc_Api.set_message(G_APP_NAME, G_INVALID_POLICY );
6072 x_return_status := OKC_API.G_RET_STS_ERROR ;
6073 CLOSE c_ins_info ;
6074 RAISE OKC_API.G_EXCEPTION_ERROR;
6075 END if ;
6076 CLOSE c_ins_info ;
6077 END IF;
6078
6079
6080 IF (l_ipyv_rec.CRX_CODE = 'CANCELED_BY_CUSTOMER') THEN
6081 -- GET system profile to check for third party information
6082 ls_check_tpi := fnd_profile.value('OKLINCANCHECKTPI');
6083 IF ((ls_check_tpi IS NULL ) OR (ls_check_tpi = OKC_API.G_MISS_CHAR )) THEN
6084 x_return_status := OKC_API.G_RET_STS_ERROR;
6085 OKC_API.set_message(G_APP_NAME, G_NO_SYSTEM_PROFILE,G_SYS_PROFILE_NAME,'OKL: Cancel policy with proof of third party insurance' );
6086 RAISE OKC_API.G_EXCEPTION_ERROR;
6087 ELSIF (ls_check_tpi = 'YES' )THEN
6088 -- Check for TPI
6089 OPEN c_okl_third_party(p_ipyv_rec.KHR_ID , p_ipyv_rec.cancellation_date);
6090 FETCH c_okl_third_party INTO l_id;
6091 IF(c_okl_third_party%NOTFOUND) THEN
6092 Okc_Api.set_message(G_APP_NAME, G_NO_THIRD_PARTY,
6093 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,p_ipyv_rec.KHR_ID);
6094 x_return_status := OKC_API.G_RET_STS_ERROR ;
6095 CLOSE c_okl_third_party ;
6096 RAISE OKC_API.G_EXCEPTION_ERROR;
6097 END if ;
6098 CLOSE c_okl_third_party ;
6099 END IF;
6100 END IF;
6101
6102
6103
6104 -- PAY Customer Refund
6105
6106 -- Start Fix for 3845998
6107 -- Checking for profile OKL:Maximum number of months allowed after payment for refund
6108
6109 -- procedure call added for insurance user defined streams, bug 3924300
6110 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6111 'INSURANCE_RECEIVABLE',
6112 l_return_status,
6113 l_strm_type_id);
6114
6115 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6116 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6117 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6118 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6119 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
6120 RAISE OKC_API.G_EXCEPTION_ERROR;
6121 END IF;
6122
6123 --smoduga: Bug 4387062 Start:
6124 -- addded following assignment as l_rcvbl_strm_type_id contains no value resulting in billing cursor to fetch no records
6125 l_rcvbl_strm_type_id:=l_strm_type_id;
6126 --smoduga: Bug 4387062 End:
6127
6128 OPEN rcvbl_max_billed_date(l_rcvbl_strm_type_id, l_ipyv_rec.khr_id, l_ipyv_rec.kle_id );
6129 FETCH rcvbl_max_billed_date INTO l_last_billed_date;
6130 CLOSE rcvbl_max_billed_date;
6131
6132 l_check_refund_months:= fnd_profile.value('OKLINMAXNOOFMONTHSREFUND');
6133
6134 IF MONTHS_BETWEEN (l_ipyv_rec.cancellation_date,l_last_billed_date) < l_check_refund_months THEN --[A]
6135 pay_cust_refund(
6136 p_api_version => l_api_version,
6137 p_init_msg_list => OKC_API.G_FALSE,
6138 x_return_status => l_return_status,
6139 x_msg_count => x_msg_count,
6140 x_msg_data => x_msg_data,
6141 p_contract_id => l_ipyv_rec.khr_id ,
6142 p_contract_line => l_ipyv_rec.kle_id ,
6143 p_cancellation_date => l_ipyv_rec.cancellation_date, ---++ Eff Dated Termination
6144 x_refund_amount => l_cust_refund);
6145
6146 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6147 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6148 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6149 RAISE OKC_API.G_EXCEPTION_ERROR;
6150 END IF;
6151
6152 END IF; -- [A] End fix for 3845998
6153
6154 --- PAY or clawback from vendor
6155
6156 calc_vendor_clawback(
6157 p_api_version => l_api_version,
6158 p_init_msg_list => OKC_API.G_FALSE,
6159 x_return_status => l_return_status,
6160 x_msg_count => x_msg_count,
6161 x_msg_data => x_msg_data,
6162 p_ipyv_rec => l_ipyv_rec ,
6163 x_ipyv_rec => x_ipyv_rec ,
6164 x_vendor_adjustment => l_vendor_adjustment);
6165
6166 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6167 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6168 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6169 RAISE OKC_API.G_EXCEPTION_ERROR;
6170 END IF;
6171
6172
6173
6174 ---Inactivate all stream / accounting entries
6175 Inactivate_open_items(
6176 p_api_version => l_api_version,
6177 p_init_msg_list => OKC_API.G_FALSE,
6178 x_return_status => l_return_status,
6179 x_msg_count => x_msg_count,
6180 x_msg_data => x_msg_data,
6181 p_contract_id => l_ipyv_rec.khr_id ,
6182 p_contract_line => l_ipyv_rec.kle_id,
6183 p_policy_status => l_ipyv_rec.iss_code );
6184
6185 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6186 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6187 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6188 RAISE OKC_API.G_EXCEPTION_ERROR;
6189 END IF;
6190 -- GET contract status
6191 l_return_status := get_contract_status(l_ipyv_rec.khr_id, l_khr_status);
6192 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6193 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6194 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6195 RAISE OKC_API.G_EXCEPTION_ERROR;
6196 END IF;
6197
6198 IF (l_khr_status = 'ACTIVE' ) THEN
6199 -- if active, end date contract line and update status
6200
6201 l_clev_rec.ID := l_ipyv_rec.kle_id ;
6202 l_clev_rec.sts_code := 'TERMINATED';
6203 l_klev_rec.ID := l_ipyv_rec.kle_id ;
6204 l_clev_rec.DATE_TERMINATED := l_ipyv_rec.CANCELLATION_DATE;
6205
6206
6207 Okl_Contract_Pub.update_contract_line
6208 (
6209 p_api_version => l_api_version ,
6210 p_init_msg_list => OKC_API.G_FALSE,
6211 x_return_status => l_return_status ,
6212 x_msg_count => x_msg_count,
6213 x_msg_data => x_msg_data ,
6214 p_clev_rec => l_clev_rec ,
6215 p_klev_rec => l_klev_rec,
6216 p_edit_mode =>'N' ,
6217 x_clev_rec => lx_clev_rec,
6218 x_klev_rec => lx_klev_rec
6219 );
6220
6221 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6222 -- Status temp
6223 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6224 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6225
6226 -- Status temp
6227 RAISE OKC_API.G_EXCEPTION_ERROR;
6228 END IF;
6229
6230 -- contract status is not active
6231 ELSE
6232
6233 l_clev_rec.ID := l_ipyv_rec.kle_id ;
6234 l_clev_rec.sts_code := 'TERMINATED';
6235 l_klev_rec.ID := l_ipyv_rec.kle_id ;
6236 l_clev_rec.DATE_TERMINATED := l_ipyv_rec.CANCELLATION_DATE;
6237
6238
6239 Okl_Contract_Pub.update_contract_line
6240 (
6241 p_api_version => l_api_version ,
6242 p_init_msg_list => OKC_API.G_FALSE,
6243 x_return_status => l_return_status ,
6244 x_msg_count => x_msg_count,
6245 x_msg_data => x_msg_data ,
6246 p_clev_rec => l_clev_rec ,
6247 p_edit_mode =>'N' ,
6248 p_klev_rec => l_klev_rec,
6249 x_clev_rec => lx_clev_rec,
6250 x_klev_rec => lx_klev_rec );
6251
6252 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6253 -- Status temp
6254 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6255 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6256 -- Status temp
6257 RAISE OKC_API.G_EXCEPTION_ERROR;
6258 END IF;
6259
6260 END IF;
6261
6262
6263 -- Income Adjustment
6264 -- Sum of Billed Premium(1) - Sum of refund amount(2) - Sum of accrued income(3)
6265 -- stream type id added to the cursor parameters, user defined streams, bug 3924300
6266 OPEN c_total_billed(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_rcvbl_strm_type_id);
6267 FETCH c_total_billed INTO l_total_billed;
6268
6269 IF(c_total_billed%NOTFOUND) THEN
6270 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
6271 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
6272 x_return_status := OKC_API.G_RET_STS_ERROR ;
6273 CLOSE c_total_billed ;
6274 RAISE OKC_API.G_EXCEPTION_ERROR;
6275 END if ;
6276 CLOSE c_total_billed ;
6277
6278
6279
6280 -- procedure call added to get the stream type id, user defined streams
6281 -- bug 3924300
6282
6283 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6284 'INSURANCE_INCOME_ACCRUAL',
6285 l_return_status,
6286 l_strm_type_id);
6287
6288 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6289 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6290 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6291 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6292 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
6293 RAISE OKC_API.G_EXCEPTION_ERROR;
6294 END IF;
6295
6296
6297 -- stream type id added as additional parameter to the cursor,
6298 -- for user defined streams changes, bug 3924300
6299 OPEN c_total_bill_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
6300 FETCH c_total_bill_accrued INTO l_total_bill_accrued;
6301 IF(c_total_bill_accrued%NOTFOUND) THEN
6302 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
6303 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
6304 x_return_status := OKC_API.G_RET_STS_ERROR ;
6305 CLOSE c_total_bill_accrued ;
6306 RAISE OKC_API.G_EXCEPTION_ERROR;
6307 END if ;
6308 CLOSE c_total_bill_accrued ;
6309 l_adjustment_amount := l_total_billed - l_total_bill_accrued - l_cust_refund ;
6310
6311
6312 OPEN okl_trx_types ('Insurance', 'US');
6313 FETCH okl_trx_types INTO l_ins_try_id;
6314 IF(okl_trx_types%NOTFOUND) THEN
6315 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
6316 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,'Insurance');
6317 x_return_status := OKC_API.G_RET_STS_ERROR ;
6318 CLOSE okl_trx_types ;
6319 RAISE OKC_API.G_EXCEPTION_ERROR;
6320 END if ;
6321 CLOSE okl_trx_types;
6322
6323 -- GET Product
6324 OPEN l_acc_dtls_csr(l_ipyv_rec.KHR_ID );
6325 FETCH l_acc_dtls_csr INTO l_ptid;
6326 IF(l_acc_dtls_csr%NOTFOUND) THEN
6327 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
6328 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSREFUND');
6329 x_return_status := OKC_API.G_RET_STS_ERROR ;
6330 CLOSE l_acc_dtls_csr ;
6331 RAISE OKC_API.G_EXCEPTION_ERROR;
6332 END if ;
6333 CLOSE l_acc_dtls_csr;
6334
6335
6336
6337 BEGIN
6338 OPEN l_contract_currency_csr;
6339 FETCH l_contract_currency_csr INTO l_curr_code,l_currency_conversion_type,
6340 l_currency_conversion_date ;
6341 CLOSE l_contract_currency_csr;
6342 EXCEPTION
6343 WHEN NO_DATA_FOUND THEN
6344 OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,p_ipyv_rec.khr_id );
6345 x_return_status := OKC_API.G_RET_STS_ERROR;
6346 IF l_contract_currency_csr%ISOPEN THEN
6347 CLOSE l_contract_currency_csr;
6348 END IF;
6349 RAISE OKC_API.G_EXCEPTION_ERROR;
6350 WHEN OTHERS THEN
6351 IF l_contract_currency_csr%ISOPEN THEN
6352 CLOSE l_contract_currency_csr;
6353 END IF;
6354 -- store SQL error message on message stack for caller
6355 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
6356 SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6357 x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
6358 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR ;
6359 END;
6360
6361
6362 --- l_curr_code := OKL_ACCOUNTING_UTIL.GET_FUNC_CURR_CODE;
6363
6364 /* Bug#5955320
6365 IF (l_adjustment_amount <> 0 ) THEN
6366
6367 -- header data
6368 l_tcnv_rec_in.khr_id := l_ipyv_rec.KHR_ID ;
6369 l_tcnv_rec_in.try_id := l_ins_try_id;
6370 l_tcnv_rec_in.tsu_code := 'ENTERED';
6371 l_tcnv_rec_in.tcn_type := 'AAJ';
6372 l_tcnv_rec_in.date_transaction_occurred := l_ipyv_rec.CANCELLATION_DATE;
6373 l_tcnv_rec_in.amount := l_adjustment_amount;
6374 l_tcnv_rec_in.currency_code := l_curr_code ;
6375 l_tcnv_rec_in.currency_conversion_type := l_currency_conversion_type ;
6376 l_tcnv_rec_in.currency_conversion_date := l_currency_conversion_date ;
6377 -- Line Data
6378 l_tclv_tbl(1).line_number := 1;
6379 l_tclv_tbl(1).khr_id := l_ipyv_rec.KHR_ID;
6380 l_tclv_tbl(1).tcl_type := 'AAJ' ;
6381 l_tclv_tbl(1).AMOUNT := l_adjustment_amount;
6382 l_tclv_tbl(1).currency_code := l_curr_code ;
6383 l_tclv_tbl(1).ORG_ID := l_ipyv_rec.org_id ;
6384
6385
6386
6387
6388 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
6389 IF(L_DEBUG_ENABLED='Y') THEN
6390 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
6391 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
6392 END IF;
6393 IF(IS_DEBUG_PROCEDURE_ON) THEN
6394 BEGIN
6395 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
6396 END;
6397 END IF;
6398 OKL_TRX_CONTRACTS_PUB.create_trx_contracts(
6399 p_api_version => l_api_version,
6400 p_init_msg_list => OKC_API.G_FALSE,
6401 x_return_status => x_return_status,
6402 x_msg_count => x_msg_count,
6403 x_msg_data => x_msg_data,
6404 p_tcnv_rec =>l_tcnv_rec_in ,
6405 p_tclv_tbl => l_tclv_tbl,
6406 x_tcnv_rec => x_tcnv_rec_in,
6407 x_tclv_tbl => x_tclv_tbl
6408 );
6409 IF(IS_DEBUG_PROCEDURE_ON) THEN
6410 BEGIN
6411 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
6412 END;
6413 END IF;
6414 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
6415
6416
6417 ---------------------------------------------------------------------------------------
6418 counter := 1;
6419
6420 OPEN fnd_pro_csr;
6421 FETCH fnd_pro_csr INTO fnd_pro_rec;
6422 IF ( fnd_pro_csr%FOUND ) Then
6423 l_acc_gen_primary_key_tbl(counter).source_table := 'FINANCIALS_SYSTEM_PARAMETERS';
6424 l_acc_gen_primary_key_tbl(counter).primary_key_column := fnd_pro_rec.l_fnd_profile;
6425 counter := counter + 1 ;
6426 End IF;
6427 CLOSE fnd_pro_csr;
6428
6429
6430
6431 OPEN salesP_csr(l_ipyv_rec.KHR_ID);
6432 FETCH salesP_csr INTO l_salesP_rec;
6433 IF ( salesP_csr%FOUND ) Then
6434 l_acc_gen_primary_key_tbl(counter).source_table := 'JTF_RS_SALESREPS_MO_V';
6435 l_acc_gen_primary_key_tbl(counter).primary_key_column := l_salesP_rec.id;
6436 counter := counter + 1 ;
6437 END IF ;
6438 CLOSE salesP_csr;
6439
6440 ------------------------------------------------------------------------------------
6441
6442 */
6443 /* Bug#5955320
6444
6445
6446 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6447 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6448 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6449 RAISE OKC_API.G_EXCEPTION_ERROR;
6450 END IF;
6451 */
6452 /*OPEN C_OKL_STRM_TYPE_V('INSURANCE INCOME');
6453 FETCH C_OKL_STRM_TYPE_V INTO l_inc_sty_id;
6454 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
6455 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
6456 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE INCOME');
6457 x_return_status := OKC_API.G_RET_STS_ERROR ;
6458 CLOSE C_OKL_STRM_TYPE_V ;
6459 RAISE OKC_API.G_EXCEPTION_ERROR;
6460 END if ;
6461 CLOSE C_OKL_STRM_TYPE_V;*/
6462
6463 /* Bug#5955320
6464 -- cursor fetch replaced with the call to get the stream type id
6465 -- changes done for user defined streams, bug 3924300
6466 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6467 'INSURANCE_INCOME_ACCRUAL',
6468 l_return_status,
6469 l_inc_sty_id);
6470
6471 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6472 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6473 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6474 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6475 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
6476 RAISE OKC_API.G_EXCEPTION_ERROR;
6477 END IF;
6478
6479 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - Start
6480 get_special_acct_codes(p_khr_id => l_ipyv_rec.KHR_ID,
6481 p_trx_date => SYSDATE,
6482 x_fact_sync_code => l_fact_sync_code,
6483 x_inv_acct_code => l_inv_acct_code );
6484 -- gboomina Bug 4622198 - Added for Investor Special Accounting Codes - End
6485
6486 -- Populate Records for Accounting Call.
6487 l_tmpl_identify_rec.PRODUCT_ID := l_ptid;
6488 l_tmpl_identify_rec.TRANSACTION_TYPE_ID := l_ins_try_id;
6489 l_tmpl_identify_rec.STREAM_TYPE_ID := l_inc_sty_id;
6490 l_tmpl_identify_rec.ADVANCE_ARREARS := NULL;
6491 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - Start
6492 l_tmpl_identify_rec.FACTORING_SYND_FLAG := l_fact_sync_code;
6493 l_tmpl_identify_rec.INVESTOR_CODE := l_inv_acct_code;
6494 -- gboomina Bug 4622198 - Modified for Investor Special Accounting - End
6495 l_tmpl_identify_rec.SYNDICATION_CODE := NULL;
6496 l_tmpl_identify_rec.FACTORING_CODE := NULL;
6497 l_tmpl_identify_rec.MEMO_YN := 'N';
6498 l_tmpl_identify_rec.PRIOR_YEAR_YN := 'N';
6499
6500 l_dist_info_rec.SOURCE_ID := x_tclv_tbl(1).ID;
6501 l_dist_info_rec.SOURCE_TABLE := 'OKL_TXL_CNTRCT_LNS';
6502 l_dist_info_rec.ACCOUNTING_DATE := SYSDATE;
6503 l_dist_info_rec.GL_REVERSAL_FLAG := 'N';
6504 l_dist_info_rec.POST_TO_GL := 'N';
6505 l_dist_info_rec.AMOUNT := l_adjustment_amount;
6506 l_dist_info_rec.CURRENCY_CODE := l_curr_code;
6507 --- Not sure
6508 l_dist_info_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
6509 l_dist_info_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
6510 l_dist_info_rec.CONTRACT_ID := l_ipyv_rec.KHR_ID ;
6511 l_dist_info_rec.CONTRACT_LINE_ID := l_ipyv_rec.KLE_ID;
6512
6513
6514
6515 IF (l_adjustment_amount > 0 )THEN
6516
6517
6518
6519
6520
6521
6522 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
6523 IF(IS_DEBUG_PROCEDURE_ON) THEN
6524 BEGIN
6525 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
6526 END;
6527 END IF;
6528
6529
6530
6531
6532 Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST(
6533 p_api_version => p_api_version
6534 ,p_init_msg_list => p_init_msg_list
6535 ,x_return_status => x_return_status
6536 ,x_msg_count => x_msg_count
6537 ,x_msg_data => x_msg_data
6538 ,p_tmpl_identify_rec => l_tmpl_identify_rec
6539 ,p_dist_info_rec => l_dist_info_rec
6540 ,p_ctxt_val_tbl => l_ctxt_val_tbl
6541 ,p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl
6542 ,x_template_tbl => l_template_tbl
6543 ,x_amount_tbl => l_amount_tbl);
6544 IF(IS_DEBUG_PROCEDURE_ON) THEN
6545 BEGIN
6546 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
6547 END;
6548 END IF;
6549 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
6550
6551
6552
6553 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6554 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6555 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6556 RAISE OKC_API.G_EXCEPTION_ERROR;
6557 END IF;
6558 END IF ;
6559
6560 END IF;
6561 */
6562
6563 -- Create accouting for income
6564 --
6565
6566 -- Expense Adjustment
6567 -- Sum of Disbursed Payable(1) - Sum of payable debit(sign)(2) - Sum of accrued insurance (3)
6568
6569 -- call added to get the stream type id, changes done for user defined streams
6570 -- bug 3924300
6571 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6572 'INSURANCE_PAYABLE',
6573 l_return_status,
6574 l_strm_type_id);
6575
6576 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6577 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6578 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6579 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6580 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
6581 RAISE OKC_API.G_EXCEPTION_ERROR;
6582 END IF;
6583 -- cursor opened with additional parameter stream type id,
6584 -- changes done for user defined streams, bug 3924300
6585
6586 OPEN c_total_paid(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
6587 FETCH c_total_paid INTO l_total_paid;
6588 IF(c_total_paid%NOTFOUND) THEN
6589 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
6590 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
6591 x_return_status := OKC_API.G_RET_STS_ERROR ;
6592 CLOSE c_total_paid ;
6593 RAISE OKC_API.G_EXCEPTION_ERROR;
6594 END if ;
6595 CLOSE c_total_paid ;
6596
6597 /* Bug#5955320
6598 -- call added to get the stream type id, changes done for user defined streams
6599 -- bug 3924300
6600 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6601 'INSURANCE_EXPENSE_ACCRUAL',
6602 l_return_status,
6603 l_strm_type_id);
6604
6605 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6606 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6607 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6608 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6609 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
6610 RAISE OKC_API.G_EXCEPTION_ERROR;
6611 END IF;
6612
6613
6614 -- additional parameter stream type id added to the cursor call
6615 -- changes done for user defined streams, bug 3924300
6616
6617 OPEN c_total_payment_accrued(l_ipyv_rec.KHR_ID , l_ipyv_rec.KLE_ID,l_strm_type_id);
6618 FETCH c_total_payment_accrued INTO l_total_pay_accrued;
6619 IF(c_total_payment_accrued%NOTFOUND) THEN
6620 Okc_Api.set_message(G_APP_NAME, G_INVALID_CONTRACT,
6621 G_COL_NAME_TOKEN,'Contract ID',G_COL_VALUE_TOKEN,l_ipyv_rec.KHR_ID);
6622 x_return_status := OKC_API.G_RET_STS_ERROR ;
6623 CLOSE c_total_payment_accrued ;
6624 RAISE OKC_API.G_EXCEPTION_ERROR;
6625 END if ;
6626 CLOSE c_total_payment_accrued ;
6627
6628 l_adjustment_amount := l_total_paid- l_vendor_adjustment- l_total_pay_accrued;
6629
6630 IF (l_adjustment_amount <> 0 ) THEN
6631
6632 l_tcnv_rec_in.khr_id := l_ipyv_rec.KHR_ID ;
6633 l_tcnv_rec_in.try_id := l_ins_try_id;
6634 l_tcnv_rec_in.tsu_code := 'ENTERED';
6635 l_tcnv_rec_in.tcn_type := 'AAJ';
6636 l_tcnv_rec_in.date_transaction_occurred := l_ipyv_rec.CANCELLATION_DATE;
6637 l_tcnv_rec_in.amount := l_adjustment_amount;
6638 l_tcnv_rec_in.currency_code := l_curr_code ;
6639 l_tcnv_rec_in.currency_conversion_type := l_currency_conversion_type ;
6640 l_tcnv_rec_in.currency_conversion_date := l_currency_conversion_date ;
6641
6642 -- Line Data
6643 l_tclv_tbl(1).line_number := 1;
6644 l_tclv_tbl(1).khr_id := l_ipyv_rec.KHR_ID;
6645 l_tclv_tbl(1).tcl_type := 'AAJ' ;
6646 l_tclv_tbl(1).AMOUNT := l_adjustment_amount;
6647 l_tclv_tbl(1).currency_code := l_curr_code ;
6648 l_tclv_tbl(1).ORG_ID := l_ipyv_rec.org_id ;
6649
6650
6651
6652 -- Start of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
6653 IF(IS_DEBUG_PROCEDURE_ON) THEN
6654 BEGIN
6655 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
6656 END;
6657 END IF;
6658 OKL_TRX_CONTRACTS_PUB.create_trx_contracts(
6659 p_api_version => l_api_version,
6660 p_init_msg_list => OKC_API.G_FALSE,
6661 x_return_status => x_return_status,
6662 x_msg_count => x_msg_count,
6663 x_msg_data => x_msg_data,
6664 p_tcnv_rec =>l_tcnv_rec_in ,
6665 p_tclv_tbl => l_tclv_tbl,
6666 x_tcnv_rec => x_tcnv_rec_in,
6667 x_tclv_tbl => x_tclv_tbl
6668 );
6669 IF(IS_DEBUG_PROCEDURE_ON) THEN
6670 BEGIN
6671 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_TRX_CONTRACTS_PUB.create_trx_contracts ');
6672 END;
6673 END IF;
6674 -- End of wraper code generated automatically by Debug code generator for OKL_TRX_CONTRACTS_PUB.create_trx_contracts
6675
6676
6677 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6678 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6679 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6680 RAISE OKC_API.G_EXCEPTION_ERROR;
6681 END IF;
6682 */
6683 /* OPEN C_OKL_STRM_TYPE_V('INSURANCE EXPENSE');
6684 FETCH C_OKL_STRM_TYPE_V INTO l_inc_sty_id;
6685 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
6686 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
6687 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE EXPENSE');
6688 x_return_status := OKC_API.G_RET_STS_ERROR ;
6689 CLOSE C_OKL_STRM_TYPE_V ;
6690 RAISE OKC_API.G_EXCEPTION_ERROR;
6691 END if ;
6692 CLOSE C_OKL_STRM_TYPE_V;*/
6693
6694 /* Bug#5955320
6695 -- cursor fetch to get the stream type id replaced with the call,
6696 -- changed for insurance user defined streams, bug 3924300
6697
6698 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
6699 'INSURANCE_EXPENSE_ACCRUAL',
6700 l_return_status,
6701 l_inc_sty_id);
6702
6703 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6704 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6705 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6706 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6707 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
6708
6709 RAISE OKC_API.G_EXCEPTION_ERROR;
6710 END IF;
6711
6712
6713 -- Populate Records for Accounting Call.
6714 l_tmpl_identify_rec.PRODUCT_ID := l_ptid;
6715 l_tmpl_identify_rec.TRANSACTION_TYPE_ID := l_ins_try_id;
6716 l_tmpl_identify_rec.STREAM_TYPE_ID := l_inc_sty_id;
6717 l_tmpl_identify_rec.ADVANCE_ARREARS := NULL;
6718 l_tmpl_identify_rec.FACTORING_SYND_FLAG := NULL;
6719 l_tmpl_identify_rec.SYNDICATION_CODE := NULL;
6720 l_tmpl_identify_rec.FACTORING_CODE := NULL;
6721 l_tmpl_identify_rec.MEMO_YN := 'N';
6722 l_tmpl_identify_rec.PRIOR_YEAR_YN := 'N';
6723
6724
6725
6726 l_dist_info_rec.SOURCE_ID := x_tclv_tbl(1).ID;
6727 l_dist_info_rec.SOURCE_TABLE := 'OKL_TXL_CNTRCT_LNS';
6728 l_dist_info_rec.ACCOUNTING_DATE := SYSDATE;
6729 l_dist_info_rec.GL_REVERSAL_FLAG := 'N';
6730 l_dist_info_rec.POST_TO_GL := 'N';
6731 l_dist_info_rec.AMOUNT := l_adjustment_amount;
6732 l_dist_info_rec.CURRENCY_CODE := l_curr_code;
6733 l_dist_info_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
6734 l_dist_info_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
6735 l_dist_info_rec.CONTRACT_ID := l_ipyv_rec.KHR_ID ;
6736 l_dist_info_rec.CONTRACT_LINE_ID := l_ipyv_rec.KLE_ID;
6737
6738
6739
6740 IF ( l_adjustment_amount > 0) THEN
6741
6742
6743 -- Start of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
6744 IF(IS_DEBUG_PROCEDURE_ON) THEN
6745 BEGIN
6746 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
6747 END;
6748 END IF;
6749 Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST(
6750 p_api_version => p_api_version
6751 ,p_init_msg_list => p_init_msg_list
6752 ,x_return_status => x_return_status
6753 ,x_msg_count => x_msg_count
6754 ,x_msg_data => x_msg_data
6755 ,p_tmpl_identify_rec => l_tmpl_identify_rec
6756 ,p_dist_info_rec => l_dist_info_rec
6757 ,p_ctxt_val_tbl => l_ctxt_val_tbl
6758 ,p_acc_gen_primary_key_tbl => l_acc_gen_primary_key_tbl
6759 ,x_template_tbl => l_template_tbl
6760 ,x_amount_tbl => l_amount_tbl);
6761 IF(IS_DEBUG_PROCEDURE_ON) THEN
6762 BEGIN
6763 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST ');
6764 END;
6765 END IF;
6766 -- End of wraper code generated automatically by Debug code generator for Okl_Account_Dist_Pub.CREATE_ACCOUNTING_DIST
6767
6768
6769
6770 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6771 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6772 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6773 RAISE OKC_API.G_EXCEPTION_ERROR;
6774 END IF;
6775
6776 END IF ;
6777
6778
6779 END IF;
6780
6781 */
6782 l_ipyv_rec.iss_code := 'CANCELED';
6783
6784 -- Create entry for adjustment
6785 --Update Policy
6786
6787 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
6788 IF(IS_DEBUG_PROCEDURE_ON) THEN
6789 BEGIN
6790 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
6791 END;
6792 END IF;
6793 Okl_Ins_Policies_Pub.update_ins_policies(
6794 p_api_version => p_api_version,
6795 p_init_msg_list => OKC_API.G_FALSE,
6796 x_return_status => l_return_status,
6797 x_msg_count => x_msg_count,
6798 x_msg_data => x_msg_data,
6799 p_ipyv_rec => l_ipyv_rec,
6800 x_ipyv_rec => x_ipyv_rec
6801 );
6802
6803 IF(IS_DEBUG_PROCEDURE_ON) THEN
6804 BEGIN
6805 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
6806 END;
6807 END IF;
6808 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
6809
6810 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6811 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6812 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6813 RAISE OKC_API.G_EXCEPTION_ERROR;
6814 END IF;
6815
6816 -- Notify Vendor
6817 -- To be implemented
6818
6819 -- send Notification to customer
6820 -- To be implemented
6821
6822 -- END IF ;
6823 -- END IF;
6824 -- gboomina start - Bug 4728636
6825 OKL_BILLING_CONTROLLER_PVT.track_next_bill_date ( p_ipyv_rec.khr_id );
6826 -- gboomina end - Bug 4728636
6827 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6828 EXCEPTION
6829 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6830 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6831 (
6832 l_api_name,
6833 G_PKG_NAME,
6834 'OKC_API.G_RET_STS_ERROR',
6835 x_msg_count,
6836 x_msg_data,
6837 '_PROCESS'
6838 );
6839 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6840 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6841 (
6842 l_api_name,
6843 G_PKG_NAME,
6844 'OKC_API.G_RET_STS_UNEXP_ERROR',
6845 x_msg_count,
6846 x_msg_data,
6847 '_PROCESS'
6848 );
6849 WHEN OTHERS THEN
6850 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6851 (
6852 l_api_name,
6853 G_PKG_NAME,
6854 'OTHERS',
6855 x_msg_count,
6856 x_msg_data,
6857 '_PROCESS'
6858 );
6859 END cancel_policy;
6860
6861
6862 PROCEDURE get_refund(
6863 p_api_version IN NUMBER,
6864 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
6865 x_return_status OUT NOCOPY VARCHAR2,
6866 x_msg_count OUT NOCOPY NUMBER,
6867 x_msg_data OUT NOCOPY VARCHAR2,
6868 p_policy_id IN NUMBER,
6869 p_cancellation_date IN DATE DEFAULT NULL, --++ Effective Dated Termination ++--
6870 p_crx_code IN VARCHAR2 DEFAULT NULL,
6871 x_refund_amount OUT NOCOPY NUMBER
6872 )IS
6873 l_value NUMBER ;
6874 l_contract_id NUMBER;
6875 l_contract_line NUMBER;
6876 l_api_name CONSTANT VARCHAR2(30) := 'get_refund';
6877 l_api_version CONSTANT NUMBER := 1;
6878 l_return_status VARCHAR2(1) ;
6879 l_params okl_execute_formula_pub.ctxt_val_tbl_type; ---+++ Effective Dated Termination ++++----
6880
6881 CURSOR okl_ipy_rec(p_policy_id NUMBER) IS
6882 SELECT KHR_ID , KLE_ID
6883 FROM OKL_INS_POLICIES_B
6884 WHERE ID = p_policy_id;
6885
6886 BEGIN
6887
6888 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6889 G_PKG_NAME,
6890 p_init_msg_list,
6891 l_api_version,
6892 p_api_version,
6893 '_PROCESS',
6894 x_return_status);
6895 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6896 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6897 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6898 RAISE OKC_API.G_EXCEPTION_ERROR;
6899 END IF;
6900
6901 OPEN okl_ipy_rec(p_policy_id);
6902 FETCH okl_ipy_rec INTO l_contract_id, l_contract_line;
6903 IF(okl_ipy_rec%NOTFOUND) THEN
6904 Okc_Api.set_message(G_APP_NAME, G_INVALID_POLICY,
6905 G_COL_NAME_TOKEN,'Policy ID',G_COL_VALUE_TOKEN,p_policy_id);
6906 x_return_status := OKC_API.G_RET_STS_ERROR ;
6907 CLOSE okl_ipy_rec ;
6908 RAISE OKC_API.G_EXCEPTION_ERROR;
6909 END if ;
6910 CLOSE okl_ipy_rec ;
6911 -- Start of wraper code generated automatically by Debug code generator for OKL_EXECUTE_FORMULA_PUB.EXECUTE
6912 IF(L_DEBUG_ENABLED='Y') THEN
6913 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
6914 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
6915 END IF;
6916 IF(IS_DEBUG_PROCEDURE_ON) THEN
6917 BEGIN
6918 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call OKL_EXECUTE_FORMULA_PUB.EXECUTE ');
6919 END;
6920 END IF;
6921 --++ Effective Dated Termination ++----
6922 l_params(1).name := G_FORMULA_PARAM_1;
6923 l_params (1).value := to_char(p_cancellation_date);
6924 l_params(2).name := G_FORMULA_PARAM_2;
6925 l_params(2).value := to_char(p_crx_code);
6926 --++ Effective Dated Termination ++----
6927
6928 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => l_api_version,
6929 p_init_msg_list => OKC_API.G_FALSE,
6930 x_return_status => x_return_status,
6931 x_msg_count => x_msg_count,
6932 x_msg_data => x_msg_data,
6933 p_formula_name => G_FORMULA_REFUND_CALC,
6934 p_contract_id => l_contract_id,
6935 p_line_id => l_contract_line,
6936 p_additional_parameters => l_params, ---+++ Eff Dated Term changes ++----
6937 x_value => x_refund_amount );
6938 IF(IS_DEBUG_PROCEDURE_ON) THEN
6939 BEGIN
6940 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call OKL_EXECUTE_FORMULA_PUB.EXECUTE ');
6941 END;
6942 END IF;
6943 -- End of wraper code generated automatically by Debug code generator for OKL_EXECUTE_FORMULA_PUB.EXECUTE
6944 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6945 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6946 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6947 RAISE OKC_API.G_EXCEPTION_ERROR;
6948 END IF;
6949
6950
6951 EXCEPTION
6952 WHEN OKC_API.G_EXCEPTION_ERROR THEN
6953 x_return_status := OKC_API.HANDLE_EXCEPTIONS
6954 (
6955 l_api_name,
6956 G_PKG_NAME,
6957 'OKC_API.G_RET_STS_ERROR',
6958 x_msg_count,
6959 x_msg_data,
6960 '_PROCESS'
6961 );
6962 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6963 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6964 (
6965 l_api_name,
6966 G_PKG_NAME,
6967 'OKC_API.G_RET_STS_UNEXP_ERROR',
6968 x_msg_count,
6969 x_msg_data,
6970 '_PROCESS'
6971 );
6972 WHEN OTHERS THEN
6973 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6974 (
6975 l_api_name,
6976 G_PKG_NAME,
6977 'OTHERS',
6978 x_msg_count,
6979 x_msg_data,
6980 '_PROCESS'
6981 );
6982 END get_refund;
6983
6984 PROCEDURE pay_cust_refund(
6985 p_api_version IN NUMBER,
6986 p_init_msg_list IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
6987 x_return_status OUT NOCOPY VARCHAR2,
6988 x_msg_count OUT NOCOPY NUMBER,
6989 x_msg_data OUT NOCOPY VARCHAR2,
6990 p_contract_id IN NUMBER,
6991 p_contract_line IN NUMBER,
6992 p_cancellation_date IN DATE DEFAULT NULL, --++Eff Dated Termination ++--
6993 p_crx_code IN VARCHAR2,
6994 x_refund_amount OUT NOCOPY NUMBER
6995 )IS
6996 l_ret_status varchar2(1) ;
6997 l_value NUMBER ;
6998 l_contract_id NUMBER;
6999 l_contract_line NUMBER;
7000 l_api_name CONSTANT VARCHAR2(30) := 'pay_cust_refund';
7001 l_api_version CONSTANT NUMBER := 1;
7002 l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS ;
7003 l_policy_id NUMBER ;
7004 l_refund_amount NUMBER;
7005 l_strm_type_id NUMBER ;
7006 l_amount NUMBER;
7007
7008
7009
7010 CURSOR okl_trx_types(cp_name VARCHAR2,cp_language VARCHAR2) IS
7011 SELECT id
7012 FROM okl_trx_types_tl
7013 WHERE name = cp_name
7014 AND language = cp_language;
7015
7016
7017 CURSOR okl_ins_policy_id(p_contract_line NUMBER) IS
7018 SELECT id
7019 FROM OKL_INS_POLICIES_B
7020 WHERE KLE_ID = p_contract_line;
7021 p_name VARCHAR2(150) :='Credit Memo'; --bug 3923601
7022 p_lang VARCHAR2(2) := 'US' ;
7023 l_trx_type NUMBER ;
7024 l_sty_id NUMBER ;
7025 l_strm_refund_id NUMBER;
7026 l_tai_id NUMBER ;
7027
7028 CURSOR C_OKL_STRM_TYPE_V(ls_stm_code VARCHAR2) IS
7029 select ID
7030 from OKL_STRM_TYPE_TL
7031 where NAME = ls_stm_code
7032 AND LANGUAGE = 'US';
7033
7034
7035 BEGIN
7036 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7037 G_PKG_NAME,
7038 p_init_msg_list,
7039 l_api_version,
7040 p_api_version,
7041 '_PROCESS',
7042 x_return_status);
7043 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7044 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7045 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7046 RAISE OKC_API.G_EXCEPTION_ERROR;
7047 END IF;
7048
7049
7050 -- GET REFUND
7051
7052 --1. get Policy id
7053 OPEN okl_ins_policy_id(p_contract_line);
7054 FETCH okl_ins_policy_id INTO l_policy_id;
7055 IF(okl_ins_policy_id%NOTFOUND) THEN
7056 Okc_Api.set_message(G_APP_NAME, G_INVALID_POLICY,
7057 G_COL_NAME_TOKEN,'Contract Line ID',G_COL_VALUE_TOKEN,p_contract_line);
7058 x_return_status := OKC_API.G_RET_STS_ERROR ;
7059 CLOSE okl_ins_policy_id ;
7060 RAISE OKC_API.G_EXCEPTION_ERROR;
7061 END if ;
7062 CLOSE okl_ins_policy_id ;
7063 --2.
7064
7065 get_refund(
7066 p_api_version => l_api_version,
7067 p_init_msg_list =>Okc_Api.G_FALSE,
7068 x_return_status => l_return_status,
7069 x_msg_count =>x_msg_count,
7070 x_msg_data =>x_msg_data,
7071 p_policy_id => l_policy_id,
7072 p_cancellation_date => p_cancellation_Date,
7073 p_crx_code => p_crx_code,
7074 x_refund_amount => l_refund_amount );
7075
7076 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7077 x_return_status := l_return_status ; --bug 3923601
7078 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7079 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7080 x_return_status := l_return_status ; --bug 3923601
7081 RAISE OKC_API.G_EXCEPTION_ERROR;
7082 END IF;
7083 x_refund_amount := l_refund_amount ;
7084
7085
7086 --- GET Transaction Type
7087 BEGIN
7088
7089 OPEN okl_trx_types (p_name, p_lang);
7090 FETCH okl_trx_types INTO l_trx_type;
7091 IF(okl_trx_types%NOTFOUND) THEN
7092 Okc_Api.set_message(G_APP_NAME, G_NO_TRX,
7093 G_COL_NAME_TOKEN,'Transaction Type',G_COL_VALUE_TOKEN,p_name);
7094 x_return_status := OKC_API.G_RET_STS_ERROR ;
7095 CLOSE okl_trx_types ;
7096 RAISE OKC_API.G_EXCEPTION_ERROR;
7097 END if ;
7098 CLOSE okl_trx_types;
7099 END;
7100
7101 IF(l_refund_amount > 0 ) THEN
7102
7103 -- GET STream ID
7104 l_refund_amount := -(x_refund_amount) ; --bug 3923601
7105 BEGIN
7106
7107 /*OPEN C_OKL_STRM_TYPE_V('INSURANCE RECEIVABLE');
7108 FETCH C_OKL_STRM_TYPE_V INTO l_strm_type_id;
7109 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
7110 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
7111 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE RECEIVABLE');
7112 x_return_status := OKC_API.G_RET_STS_ERROR ;
7113 CLOSE C_OKL_STRM_TYPE_V ;
7114 RAISE OKC_API.G_EXCEPTION_ERROR;
7115 END if ;
7116 CLOSE C_OKL_STRM_TYPE_V;*/
7117 -- cursor fetch replaced with the procedure call to get the stream type id,
7118 -- changes done for user defined streams, bug 3924300
7119
7120 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
7121 'INSURANCE_RECEIVABLE',
7122 l_return_status,
7123 l_strm_type_id);
7124
7125 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7126 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7127 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7128 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7129 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
7130 RAISE OKC_API.G_EXCEPTION_ERROR;
7131 END IF;
7132
7133
7134
7135 END;
7136 BEGIN
7137
7138 /*OPEN C_OKL_STRM_TYPE_V('INSURANCE REFUND');
7139 FETCH C_OKL_STRM_TYPE_V INTO l_strm_refund_id;
7140 IF(C_OKL_STRM_TYPE_V%NOTFOUND) THEN
7141 Okc_Api.set_message(G_APP_NAME, G_NO_STREAM,
7142 G_COL_NAME_TOKEN,'Stream Type',G_COL_VALUE_TOKEN,'INSURANCE REFUND');
7143 x_return_status := OKC_API.G_RET_STS_ERROR ;
7144 CLOSE C_OKL_STRM_TYPE_V ;
7145 RAISE OKC_API.G_EXCEPTION_ERROR;
7146 END if ;
7147 CLOSE C_OKL_STRM_TYPE_V;*/
7148
7149 -- call added to get the stream type id,
7150 -- changes done for user defined streams, bug 3924300
7151
7152 OKL_STREAMS_UTIL.get_primary_stream_type(p_contract_id,
7153 'INSURANCE_REFUND',
7154 l_return_status,
7155 l_strm_refund_id);
7156
7157 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7158 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7159 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7160 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7161 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_REFUND'); --bug 4024785
7162 RAISE OKC_API.G_EXCEPTION_ERROR;
7163 END IF;
7164
7165
7166 END;
7167
7168 -- Call API to create Credit Memo
7169 -- Start of wraper code generated automatically by Debug code generator for on_account_credit_memo
7170 IF(L_DEBUG_ENABLED='Y') THEN
7171 L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
7172 IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
7173 END IF;
7174 IF(IS_DEBUG_PROCEDURE_ON) THEN
7175 BEGIN
7176 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRIPXB.pls call on_account_credit_memo ');
7177 END;
7178 END IF;
7179
7180 --bug 3923601
7181 on_account_credit_memo
7182 (
7183 p_api_version => l_api_version,
7184 p_init_msg_list => OKL_API.G_FALSE,
7185 p_try_id => l_trx_type,
7186 p_khr_id => p_contract_id,
7187 p_kle_id => p_contract_line,
7188 p_ipy_id => l_policy_id,
7189 p_credit_date => TRUNC(SYSDATE),
7190 p_credit_amount => l_refund_amount,
7191 p_credit_sty_id => l_strm_refund_id,
7192 x_return_status => l_return_status,
7193 x_msg_count =>x_msg_count,
7194 x_msg_data => x_msg_data,
7195 x_tai_id => l_tai_id
7196
7197 );
7198
7199
7200 IF(IS_DEBUG_PROCEDURE_ON) THEN
7201 BEGIN
7202 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRIPXB.pls call on_account_credit_memo ');
7203 END;
7204 END IF;
7205 -- End of wraper code generated automatically by Debug code generator for on_account_credit_memo.
7206
7207 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7208 x_return_status := l_return_status ; --bug 3923601
7209 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7210 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7211 x_return_status := l_return_status ; --bug 3923601
7212 RAISE OKC_API.G_EXCEPTION_ERROR;
7213 END IF;
7214
7215
7216 NULL;
7217
7218
7219
7220
7221 END IF ;
7222
7223 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7224
7225 EXCEPTION
7226 WHEN OKC_API.G_EXCEPTION_ERROR THEN
7227 x_return_status := OKC_API.HANDLE_EXCEPTIONS
7228 (
7229 l_api_name,
7230 G_PKG_NAME,
7231 'OKC_API.G_RET_STS_ERROR',
7232 x_msg_count,
7233 x_msg_data,
7234 '_PROCESS'
7235 );
7236 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7237 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7238 (
7239 l_api_name,
7240 G_PKG_NAME,
7241 'OKC_API.G_RET_STS_UNEXP_ERROR',
7242 x_msg_count,
7243 x_msg_data,
7244 '_PROCESS'
7245 );
7246 WHEN OTHERS THEN
7247 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7248 (
7249 l_api_name,
7250 G_PKG_NAME,
7251 'OTHERS',
7252 x_msg_count,
7253 x_msg_data,
7254 '_PROCESS'
7255 );
7256 END pay_cust_refund;
7257
7258
7259
7260
7261 PROCEDURE OKL_INSURANCE_PARTY_MERGE (
7262 p_entity_name IN VARCHAR2,
7263 p_from_id IN NUMBER,
7264 x_to_id OUT NOCOPY NUMBER,
7265 p_from_fk_id IN NUMBER,
7266 p_to_fk_id IN NUMBER,
7267 p_parent_entity_name IN VARCHAR2,
7268 p_batch_id IN NUMBER,
7269 p_batch_party_id IN NUMBER,
7270 x_return_status OUT NOCOPY VARCHAR2)
7271 IS
7272 --
7273 l_merge_reason_code VARCHAR2(30);
7274 l_api_name VARCHAR2(30) := 'OKL_INSURANCE_PARTY_MERGE';
7275 l_count NUMBER(10) := 0;
7276 --
7277 BEGIN
7278 --
7279 fnd_file.put_line(fnd_file.log, 'OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_PARTY_MERGE');
7280 --
7281 arp_message.set_line('OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_PARTY_MERGE()+');
7282
7283 x_return_status := FND_API.G_RET_STS_SUCCESS;
7284
7285
7286 --
7287 select merge_reason_code
7288 into l_merge_reason_code
7289 from hz_merge_batch
7290 where batch_id = p_batch_id;
7291
7292 if l_merge_reason_code = 'DUPLICATE' then
7293 -- if reason code is duplicate then allow the party merge to happen without
7294 -- any validations.
7295 null;
7296 else
7297 -- if there are any validations to be done, include it in this section
7298 null;
7299 end if;
7300
7301 -- If the parent has not changed (ie. Parent getting transferred) then nothing
7302 -- needs to be done. Set Merged To Id is same as Merged From Id and return
7303
7304 if p_from_fk_id = p_to_fk_id then
7305 x_to_id := p_from_id;
7306 return;
7307 end if;
7308
7309 -- If the parent has changed(ie. Parent is getting merged) then transfer the
7310 -- dependent record to the new parent. Before transferring check if a similar
7311 -- dependent record exists on the new parent. If a duplicate exists then do
7312 -- not transfer and return the id of the duplicate record as the Merged To Id
7313
7314 if p_from_fk_id <> p_to_fk_id then
7315 begin
7316 arp_message.set_name('AR','AR_UPDATING_TABLE');
7317 arp_message.set_token('TABLE_NAME','OKL_INS_POLICIES',FALSE);
7318 --
7319 --
7320
7321 UPDATE OKL_INS_POLICIES_B IPYB
7322 SET IPYB.ISU_ID = p_to_fk_id
7323 ,IPYB.object_version_number = IPYB.object_version_number + 1
7324 ,IPYB.last_update_date = SYSDATE
7325 ,IPYB.last_updated_by = arp_standard.profile.user_id
7326 ,IPYB.last_update_login = arp_standard.profile.last_update_login
7327 WHERE IPYB.ISU_ID = p_from_fk_id ;
7328 x_to_id := p_from_id;
7329 l_count := sql%rowcount;
7330 arp_message.set_name('AR','AR_ROWS_UPDATED');
7331 arp_message.set_token('NUM_ROWS',to_char(l_count));
7332 --
7333 exception
7334 when others then
7335 arp_message.set_line(G_PKG_NAME || '.' || l_api_name || ': ' || sqlerrm);
7336 --
7337 fnd_file.put_line(fnd_file.log,(G_PKG_NAME || '.' || l_api_name ||
7338 'OKL_INS_POLICIES for = '|| p_from_id));
7339 --
7340 fnd_file.put_line(fnd_file.log, G_PKG_NAME||'.'||l_api_name||':'||sqlerrm);
7341 x_return_status := FND_API.G_RET_STS_ERROR;
7342 end;
7343 end if;
7344 END OKL_INSURANCE_PARTY_MERGE ;
7345
7346
7347 -----------------------------------------------------------------------------------
7348 PROCEDURE OKL_INSURANCE_PARTY_SITE_MERGE (
7349 p_entity_name IN VARCHAR2,
7350 p_from_id IN NUMBER,
7351 x_to_id OUT NOCOPY NUMBER,
7352 p_from_fk_id IN NUMBER,
7353 p_to_fk_id IN NUMBER,
7354 p_parent_entity_name IN VARCHAR2,
7355 p_batch_id IN NUMBER,
7356 p_batch_party_id IN NUMBER,
7357 x_return_status OUT NOCOPY VARCHAR2)
7358 IS
7359 --
7360 l_merge_reason_code VARCHAR2(30);
7361 l_api_name VARCHAR2(30) := 'OKL_INSURANCE_PARTY_SITE_MERGE';
7362 l_count NUMBER(10) := 0;
7363 --
7364 BEGIN
7365 --
7366 fnd_file.put_line(fnd_file.log, 'OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_PARTY_SITE_MERGE');
7367 --
7368 arp_message.set_line('OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_PARTY_SITE_MERGE()+');
7369
7370 x_return_status := FND_API.G_RET_STS_SUCCESS;
7371
7372
7373 --
7374 select merge_reason_code
7375 into l_merge_reason_code
7376 from hz_merge_batch
7377 where batch_id = p_batch_id;
7378
7379 if l_merge_reason_code = 'DUPLICATE' then
7380 -- if reason code is duplicate then allow the party merge to happen without
7381 -- any validations.
7382 null;
7383 else
7384 -- if there are any validations to be done, include it in this section
7385 null;
7386 end if;
7387
7388 -- If the parent has not changed (ie. Parent getting transferred) then nothing
7389 -- needs to be done. Set Merged To Id is same as Merged From Id and return
7390
7391 if p_from_fk_id = p_to_fk_id then
7392 x_to_id := p_from_id;
7393 return;
7394 end if;
7395
7396 -- If the parent has changed(ie. Parent is getting merged) then transfer the
7397 -- dependent record to the new parent. Before transferring check if a similar
7398 -- dependent record exists on the new parent. If a duplicate exists then do
7399 -- not transfer and return the id of the duplicate record as the Merged To Id
7400
7401 if p_from_fk_id <> p_to_fk_id then
7402 begin
7403 arp_message.set_name('AR','AR_UPDATING_TABLE');
7404 arp_message.set_token('TABLE_NAME','OKL_INS_POLICIES',FALSE);
7405 --
7406 --
7407
7408 UPDATE OKL_INS_POLICIES_B IPYB
7409 SET IPYB.AGENCY_SITE_ID = p_to_fk_id
7410 ,IPYB.object_version_number = IPYB.object_version_number + 1
7411 ,IPYB.last_update_date = SYSDATE
7412 ,IPYB.last_updated_by = arp_standard.profile.user_id
7413 ,IPYB.last_update_login = arp_standard.profile.last_update_login
7414 WHERE IPYB.AGENCY_SITE_ID = p_from_fk_id ;
7415
7416 l_count := sql%rowcount;
7417 arp_message.set_name('AR','AR_ROWS_UPDATED');
7418 arp_message.set_token('NUM_ROWS',to_char(l_count));
7419 --
7420 exception
7421 when others then
7422 arp_message.set_line(G_PKG_NAME || '.' || l_api_name || ': ' || sqlerrm);
7423 --
7424 fnd_file.put_line(fnd_file.log,(G_PKG_NAME || '.' || l_api_name ||
7425 'OKL_INS_POLICIES for = '|| p_from_id));
7426 --
7427 fnd_file.put_line(fnd_file.log, G_PKG_NAME||'.'||l_api_name||':'||sqlerrm);
7428 x_return_status := FND_API.G_RET_STS_ERROR;
7429 end;
7430 end if;
7431 END OKL_INSURANCE_PARTY_SITE_MERGE ;
7432
7433 ----------------------------------------------------------------------------------
7434 PROCEDURE OKL_INSURANCE_AGENT_MERGE (
7435 p_entity_name IN VARCHAR2,
7436 p_from_id IN NUMBER,
7437 x_to_id OUT NOCOPY NUMBER,
7438 p_from_fk_id IN NUMBER,
7439 p_to_fk_id IN NUMBER,
7440 p_parent_entity_name IN VARCHAR2,
7441 p_batch_id IN NUMBER,
7442 p_batch_party_id IN NUMBER,
7443 x_return_status OUT NOCOPY VARCHAR2)
7444 IS
7445 --
7446 l_merge_reason_code VARCHAR2(30);
7447 l_api_name VARCHAR2(30) := 'OKL_INSURANCE_AGENT_MERGE';
7448 l_count NUMBER(10) := 0;
7449 --
7450 BEGIN
7451 --
7452 fnd_file.put_line(fnd_file.log, 'OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_AGENT_MERGE');
7453 --
7454 arp_message.set_line('OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_AGENT_MERGE()+');
7455
7456 x_return_status := FND_API.G_RET_STS_SUCCESS;
7457
7458
7459 --
7460 select merge_reason_code
7461 into l_merge_reason_code
7462 from hz_merge_batch
7463 where batch_id = p_batch_id;
7464
7465 if l_merge_reason_code = 'DUPLICATE' then
7466 -- if reason code is duplicate then allow the party merge to happen without
7467 -- any validations.
7468 null;
7469 else
7470 -- if there are any validations to be done, include it in this section
7471 null;
7472 end if;
7473
7474 -- If the parent has not changed (ie. Parent getting transferred) then nothing
7475 -- needs to be done. Set Merged To Id is same as Merged From Id and return
7476
7477 if p_from_fk_id = p_to_fk_id then
7478 x_to_id := p_from_id;
7479 return;
7480 end if;
7481
7482 -- If the parent has changed(ie. Parent is getting merged) then transfer the
7483 -- dependent record to the new parent. Before transferring check if a similar
7484 -- dependent record exists on the new parent. If a duplicate exists then do
7485 -- not transfer and return the id of the duplicate record as the Merged To Id
7486
7487 if p_from_fk_id <> p_to_fk_id then
7488 begin
7489 arp_message.set_name('AR','AR_UPDATING_TABLE');
7490 arp_message.set_token('TABLE_NAME','OKL_INS_POLICIES',FALSE);
7491 --
7492 --
7493
7494 UPDATE OKL_INS_POLICIES_B IPYB
7495 SET IPYB.INT_ID = p_to_fk_id
7496 ,IPYB.object_version_number = IPYB.object_version_number + 1
7497 ,IPYB.last_update_date = SYSDATE
7498 ,IPYB.last_updated_by = arp_standard.profile.user_id
7499 ,IPYB.last_update_login = arp_standard.profile.last_update_login
7500 WHERE IPYB.INT_ID = p_from_fk_id ;
7501
7502 l_count := sql%rowcount;
7503 arp_message.set_name('AR','AR_ROWS_UPDATED');
7504 arp_message.set_token('NUM_ROWS',to_char(l_count));
7505 --
7506 exception
7507 when others then
7508 arp_message.set_line(G_PKG_NAME || '.' || l_api_name || ': ' || sqlerrm);
7509 --
7510 fnd_file.put_line(fnd_file.log,(G_PKG_NAME || '.' || l_api_name ||
7511 'OKL_INS_POLICIES for = '|| p_from_id));
7512 --
7513 fnd_file.put_line(fnd_file.log, G_PKG_NAME||'.'||l_api_name||':'||sqlerrm);
7514 x_return_status := FND_API.G_RET_STS_ERROR;
7515 end;
7516 end if;
7517 END OKL_INSURANCE_AGENT_MERGE ;
7518 -----------------------------------------------------------------------------
7519 PROCEDURE OKL_INSURANCE_AGENT_SITE_MERGE (
7520 p_entity_name IN VARCHAR2,
7521 p_from_id IN NUMBER,
7522 x_to_id OUT NOCOPY NUMBER,
7523 p_from_fk_id IN NUMBER,
7524 p_to_fk_id IN NUMBER,
7525 p_parent_entity_name IN VARCHAR2,
7526 p_batch_id IN NUMBER,
7527 p_batch_party_id IN NUMBER,
7528 x_return_status OUT NOCOPY VARCHAR2)
7529 IS
7530 --
7531 l_merge_reason_code VARCHAR2(30);
7532 l_api_name VARCHAR2(30) := 'OKL_INSURANCE_AGENT_SITE_MERGE';
7533 l_count NUMBER(10) := 0;
7534 --
7535 BEGIN
7536 --
7537 fnd_file.put_line(fnd_file.log, 'OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_AGENT_SITE_MERGE');
7538 --
7539 arp_message.set_line('OKL_INSURANCE_POLICIES_PVT.OKL_INSURANCE_AGENT_SITE_MERGE()+');
7540
7541 x_return_status := FND_API.G_RET_STS_SUCCESS;
7542
7543
7544 --
7545 select merge_reason_code
7546 into l_merge_reason_code
7547 from hz_merge_batch
7548 where batch_id = p_batch_id;
7549
7550 if l_merge_reason_code = 'DUPLICATE' then
7551 -- if reason code is duplicate then allow the party merge to happen without
7552 -- any validations.
7553 null;
7554 else
7555 -- if there are any validations to be done, include it in this section
7556 null;
7557 end if;
7558
7559 -- If the parent has not changed (ie. Parent getting transferred) then nothing
7560 -- needs to be done. Set Merged To Id is same as Merged From Id and return
7561
7562 if p_from_fk_id = p_to_fk_id then
7563 x_to_id := p_from_id;
7564 return;
7565 end if;
7566
7567 -- If the parent has changed(ie. Parent is getting merged) then transfer the
7568 -- dependent record to the new parent. Before transferring check if a similar
7569 -- dependent record exists on the new parent. If a duplicate exists then do
7570 -- not transfer and return the id of the duplicate record as the Merged To Id
7571
7572 if p_from_fk_id <> p_to_fk_id then
7573 begin
7574 arp_message.set_name('AR','AR_UPDATING_TABLE');
7575 arp_message.set_token('TABLE_NAME','OKL_INS_POLICIES',FALSE);
7576 --
7577 --
7578
7579 UPDATE OKL_INS_POLICIES_B IPYB
7580 SET IPYB.AGENT_SITE_ID = p_to_fk_id
7581 ,IPYB.object_version_number = IPYB.object_version_number + 1
7582 ,IPYB.last_update_date = SYSDATE
7583 ,IPYB.last_updated_by = arp_standard.profile.user_id
7584 ,IPYB.last_update_login = arp_standard.profile.last_update_login
7585 WHERE IPYB.AGENT_SITE_ID = p_from_fk_id ;
7586
7587 l_count := sql%rowcount;
7588 arp_message.set_name('AR','AR_ROWS_UPDATED');
7589 arp_message.set_token('NUM_ROWS',to_char(l_count));
7590 --
7591 exception
7592 when others then
7593 arp_message.set_line(G_PKG_NAME || '.' || l_api_name || ': ' || sqlerrm);
7594 --
7595 fnd_file.put_line(fnd_file.log,(G_PKG_NAME || '.' || l_api_name ||
7596 'OKL_INS_POLICIES for = '|| p_from_id));
7597 --
7598 fnd_file.put_line(fnd_file.log, G_PKG_NAME||'.'||l_api_name||':'||sqlerrm);
7599 x_return_status := FND_API.G_RET_STS_ERROR;
7600 end;
7601 end if;
7602 END OKL_INSURANCE_AGENT_SITE_MERGE ;
7603
7604 END OKL_INSURANCE_POLICIES_PVT;