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