DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_INSURANCE_POLICIES_PVT

Source


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