DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_INS_QUOTE_PVT

Source


1 PACKAGE BODY OKL_INS_QUOTE_PVT AS
2 /* $Header: OKLRINQB.pls 120.55.12010000.2 2008/09/10 17:46:40 rkuttiya ship $ */
3 -- Start of wraper code generated automatically by Debug code generator
4   L_MODULE VARCHAR2(40) := 'LEASE.INSURANCE';
5   L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6   L_LEVEL_PROCEDURE NUMBER;
7   IS_DEBUG_PROCEDURE_ON BOOLEAN;
8 -- End of wraper code generated automatically by Debug code generator
9 
10 ---------------------------------------------------------------------------
11 -- Start of comments
12 --
13 -- Function Name	: create_third_prt_ins
14 -- Description		:To Create Third Party Insurance.
15 -- Business Rules	:
16 -- Parameters		:
17 -- Version		: 1.0
18 -- End of Comments
19 ---------------------------------------------------------------------------
20 PROCEDURE create_third_prt_ins(
21      p_api_version                   IN NUMBER,
22      p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
23      x_return_status                OUT NOCOPY  VARCHAR2,
24      x_msg_count                    OUT NOCOPY NUMBER,
25      x_msg_data                     OUT NOCOPY VARCHAR2,
26      p_ipyv_rec                  IN ipyv_rec_type,
27      x_ipyv_rec                  OUT NOCOPY  ipyv_rec_type
28          ) IS
29    l_api_version			CONSTANT NUMBER := 1;
30    l_api_name			CONSTANT VARCHAR2(30) := 'create_third_prt_ins';
31    l_return_status			VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
32    l_cplv_rec_type                okl_okc_migration_pvt.cplv_rec_type;
33    x_cplv_rec_type                okl_okc_migration_pvt.cplv_rec_type;
34 
35    --gboomina 26-Oct-05 Bug#4558486 - Added - Start
36    l_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
37    lx_kplv_rec     okl_k_party_roles_pvt.kplv_rec_type;
38    --gboomina 26-Oct-05 Bug#4558486 - Added - End
39 
40    CURSOR c_vendor_exist (p_khr_id NUMBER , p_isu_id  NUMBER) IS
41           select 'x'
42              from
43                    OKC_K_PARTY_ROLES_B CPLB
44              where CPLB.CHR_ID = p_khr_id
45              and CPLB.DNZ_CHR_ID = p_khr_id
46              and CPLB.OBJECT1_ID1 = p_isu_id
47              and CPLB.JTOT_OBJECT1_CODE = 'OKX_PARTY'
48              and CPLB.RLE_CODE = 'EXTERNAL_PARTY';
49      l_dummy   VARCHAR2(1) := '?';
50      BEGIN
51               x_return_status := OKC_API.START_ACTIVITY(l_api_name,
52                                                             G_PKG_NAME,
53                                                            p_init_msg_list,
54                                                            l_api_version,
55                                                            p_api_version,
56                                                            '_PROCESS',
57                                                            x_return_status);
58                  IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
59                    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
60                  ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
61                    RAISE OKC_API.G_EXCEPTION_ERROR;
62                  END IF;
63 
64        -- CREATE  Role only if vendor is not there
65             OPEN c_vendor_exist(p_ipyv_rec.KHR_ID ,p_ipyv_rec.ISU_ID );
66             FETCH c_vendor_exist INTO l_dummy ;
67             CLOSE c_vendor_exist ;
68 
69        IF ( l_dummy = '?' ) THEN
70 
71 		l_cplv_rec_type.sfwt_flag := 'N';
72                 l_cplv_rec_type.CHR_ID := p_ipyv_rec.KHR_ID ;
73                 l_cplv_rec_type.DNZ_CHR_ID := p_ipyv_rec.KHR_ID ;
74 		l_cplv_rec_type.RLE_CODE := 'EXTERNAL_PARTY' ;
75 		l_cplv_rec_type.OBJECT1_ID1 := p_ipyv_rec.ISU_ID ;
76 		l_cplv_rec_type.OBJECT1_ID2 := '#' ;
77 		l_cplv_rec_type.JTOT_OBJECT1_CODE :=  'OKX_PARTY' ;
78     -- Start of wraper code generated automatically by Debug code generator for okl_k_party_roles_pvt.create_k_party_role
79       IF(L_DEBUG_ENABLED='Y') THEN
80         L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
81         IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
82       END IF;
83       IF(IS_DEBUG_PROCEDURE_ON) THEN
84         BEGIN
85             OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role ');
86         END;
87       END IF;
88       -- gboomina 26-Oct-05 Bug#4558486 Start - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
89             okl_k_party_roles_pvt.create_k_party_role(
90             		p_api_version                  =>l_api_version,
91             		p_init_msg_list             => OKC_API.G_FALSE,
92             		x_return_status             =>   l_return_status,
93             		 x_msg_count                =>    x_msg_count,
94             		x_msg_data                  =>  x_msg_data ,
95             		p_cplv_rec                     =>  l_cplv_rec_type,
96             		x_cplv_rec                  =>    x_cplv_rec_type,
97 			p_kplv_rec                  => l_kplv_rec,
98                         x_kplv_rec                  => lx_kplv_rec);
99 
100       -- gboomina 26-Oct-05 Bug#4558486 End - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
101 
102       IF(IS_DEBUG_PROCEDURE_ON) THEN
103         BEGIN
104             OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role ');
105         END;
106       END IF;
107     -- End of wraper code generated automatically by Debug code generator for okl_k_party_roles_pvt.create_k_party_role
108             	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
109 
110                  	  RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
111             	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
112             	  RAISE OKC_API.G_EXCEPTION_ERROR;
113             	END IF;
114 
115 
116        END IF ;
117 
118     -- Start of wraper code generated automatically by Debug code generator for okl_k_party_roles_pvt.create_k_party_role
119           IF(L_DEBUG_ENABLED='Y') THEN
120             L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
121             IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
122           END IF;
123           IF(IS_DEBUG_PROCEDURE_ON) THEN
124             BEGIN
125                 OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
126             END;
127          END IF;
128             	-- Payment Call Temp
129 
130 		Okl_Ins_Policies_Pub.insert_ins_policies(
131            p_api_version                  => l_api_version,
132            p_init_msg_list                => OKC_API.G_FALSE,
133            x_return_status                => l_return_status,
134            x_msg_count                    => x_msg_count,
135            x_msg_data                     => x_msg_data,
136            p_ipyv_rec                     => p_ipyv_rec,
137            x_ipyv_rec                     => x_ipyv_rec
138           );
139 
140 
141     	   IF(IS_DEBUG_PROCEDURE_ON) THEN
142 	    BEGIN
143 	          OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
144 	    END;
145            END IF;
146 
147 
148                     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
149     		  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
150     	  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
151     	  	       RAISE OKC_API.G_EXCEPTION_ERROR;
152     	        END IF;
153 
154 
155 
156       OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
157 EXCEPTION
158           WHEN OKC_API.G_EXCEPTION_ERROR THEN
159             x_return_status := OKC_API.HANDLE_EXCEPTIONS
160             (
161               l_api_name,
162               G_PKG_NAME,
163               'OKC_API.G_RET_STS_ERROR',
164               x_msg_count,
165               x_msg_data,
166               '_PROCESS'
167             );
168           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
169             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
170             (
171               l_api_name,
172               G_PKG_NAME,
173               'OKC_API.G_RET_STS_UNEXP_ERROR',
174               x_msg_count,
175               x_msg_data,
176               '_PROCESS'
177             );
178           WHEN OTHERS THEN
179             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
180             (
181               l_api_name,
182               G_PKG_NAME,
183               'OTHERS',
184               x_msg_count,
185               x_msg_data,
186               '_PROCESS'
187             );
188      END create_third_prt_ins ;
189 ---------------------------------------------------------------------------
190 
191   ---------------------------------------------------------------------------
192   -- Start of comments
193   --
194   -- Function Name  : crt_lseapp_thrdprt_ins
195   -- Description    : To Create Third Party Insurance for Lease Application.
196   -- Business Rules :
197   -- Parameters     :
198   -- Version        : 1.0
199   -- History        : 19-Sep-2005:Bug 4567777 PAGARG new procedures for Lease
200   --                  Application Functionality.
201   -- End of Comments
202   ---------------------------------------------------------------------------
203   PROCEDURE crt_lseapp_thrdprt_ins(
204      p_api_version                  IN NUMBER,
205      p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
206      x_return_status                OUT NOCOPY  VARCHAR2,
207      x_msg_count                    OUT NOCOPY NUMBER,
208      x_msg_data                     OUT NOCOPY VARCHAR2,
209      p_ipyv_rec                     IN ipyv_rec_type,
210      x_ipyv_rec                     OUT NOCOPY  ipyv_rec_type)
211   IS
212     l_api_version       CONSTANT NUMBER := 1;
213     l_api_name          CONSTANT VARCHAR2(30) := 'crt_lseapp_thrdprt_ins';
214     l_return_status              VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
215     CURSOR third_prty_exist(p_lapp_id IN NUMBER)IS
216       SELECT 'x'
217       FROM OKL_INS_POLICIES_B
218       WHERE lease_application_id = p_lapp_id
219         AND IPY_TYPE = 'THIRD_PARTY_POLICY'
220         AND KHR_ID IS NULL -- not a contract yet
221         AND TRUNC(nvl(DATE_TO,SYSDATE)) > TRUNC(SYSDATE);
222 
223     l_dummy   VARCHAR2(1) := '?';
224   BEGIN
225     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
226                            G_PKG_NAME
227 						  ,p_init_msg_list
228 						  ,l_api_version
229 						  ,p_api_version
230 						  ,'_PROCESS'
231 						  ,l_return_status);
232     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
233 	THEN
234 	  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
235 	ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
236 	THEN
237 	  RAISE OKL_API.G_EXCEPTION_ERROR;
238 	END IF;
239 
240 	-- check if lease application already has active third party policy
241     OPEN third_prty_exist(p_ipyv_rec.lease_application_id);
242     FETCH third_prty_exist INTO l_dummy;
243     CLOSE third_prty_exist;
244     IF ( l_dummy <> '?' )
245 	THEN
246       OKL_API.set_message(g_app_name,'OKL_THIRD_PARTY_EXIST');
247       l_return_status := OKL_API.G_RET_STS_ERROR;
248       RAISE OKL_API.G_EXCEPTION_ERROR;
249     END IF;
250 
251     -- Code for Debug Messages
252     IF(L_DEBUG_ENABLED='Y')
253 	THEN
254 	  L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
255       IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
256     END IF;
257     IF(IS_DEBUG_PROCEDURE_ON)
258 	THEN
259       BEGIN
260         OKL_DEBUG_PUB.LOG_DEBUG(
261 		    L_LEVEL_PROCEDURE
262 		   ,L_MODULE
263 		   ,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies');
264       END;
265     END IF;
266 	Okl_Ins_Policies_Pub.insert_ins_policies(
267         p_api_version                  => l_api_version,
268         p_init_msg_list                => OKL_API.G_FALSE,
269         x_return_status                => l_return_status,
270         x_msg_count                    => x_msg_count,
271         x_msg_data                     => x_msg_data,
272         p_ipyv_rec                     => p_ipyv_rec,
273         x_ipyv_rec                     => x_ipyv_rec);
274     IF(IS_DEBUG_PROCEDURE_ON)
275 	THEN
276 	  BEGIN
277 	    OKL_DEBUG_PUB.LOG_DEBUG(
278 		    L_LEVEL_PROCEDURE
279 		   ,L_MODULE
280 		   ,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies');
281 	  END;
282     END IF;
283     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
284     THEN
285       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
286     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
287 	THEN
288 	  RAISE OKL_API.G_EXCEPTION_ERROR;
289 	END IF;
290 
291 	x_return_status := l_return_status;
292     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
293   EXCEPTION
294     WHEN OKL_API.G_EXCEPTION_ERROR
295 	THEN
296       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
297                              l_api_name
298 							,G_PKG_NAME
299 							,'OKL_API.G_RET_STS_ERROR'
300 							,x_msg_count
301 							,x_msg_data
302 							,'_PROCESS');
303     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR
304     THEN
305       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
306                              l_api_name
307                             ,G_PKG_NAME
308                             ,'OKL_API.G_RET_STS_UNEXP_ERROR'
309                             ,x_msg_count
310                             ,x_msg_data
311                             ,'_PROCESS');
312     WHEN OTHERS
313     THEN
314       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
315                              l_api_name
316                             ,G_PKG_NAME
317                             ,'OTHERS'
318                             ,x_msg_count
319                             ,x_msg_data
320                             ,'_PROCESS');
321   END crt_lseapp_thrdprt_ins;
322   ---------------------------------------------------------------------------
323 
324   ---------------------------------------------------------------------------
325   -- Start of comments
326   --
327   -- Function Name  : lseapp_thrdprty_to_ctrct
328   -- Description    : To attach Third Party Insurance to contract created from
329   --                  Lease Application.
330   -- Business Rules :
331   -- Parameters     :
332   -- Version        : 1.0
333   -- History        : 19-Sep-2005:Bug 4567777 PAGARG new procedures for Lease
334   --                  Application Functionality.
335   -- End of Comments
336   ---------------------------------------------------------------------------
337   PROCEDURE lseapp_thrdprty_to_ctrct(
338      p_api_version                  IN  NUMBER,
339      p_init_msg_list                IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
340      x_return_status                OUT NOCOPY  VARCHAR2,
341      x_msg_count                    OUT NOCOPY NUMBER,
342      x_msg_data                     OUT NOCOPY VARCHAR2,
343      p_lakhr_id                     IN  NUMBER,
344      x_ipyv_rec                     OUT NOCOPY  ipyv_rec_type)
345   IS
346     l_api_version       CONSTANT NUMBER := 1;
347     l_api_name          CONSTANT VARCHAR2(30) := 'lsp_tp_con';
348     l_return_status              VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
349     l_lease_application_id       NUMBER;
350     l_third_party_ins_id         NUMBER;
351     l_isu_id                     NUMBER;
352     l_ipyv_rec                   ipyv_rec_type;
353     l_cplv_rec_type              okl_okc_migration_pvt.cplv_rec_type;
354     x_cplv_rec_type              okl_okc_migration_pvt.cplv_rec_type;
355     l_ovn                        NUMBER;
356 
357    --gboomina 26-Oct-05 Bug#4558486 - Added - Start
358    l_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
359    lx_kplv_rec     okl_k_party_roles_pvt.kplv_rec_type;
360    --gboomina 26-Oct-05 Bug#4558486 - Added - End
361 
362     CURSOR fetch_lease_app(c_lakhr_id IN NUMBER)
363 	IS
364       SELECT ORIG_SYSTEM_ID1
365       FROM OKC_K_HEADERS_B
366       WHERE id = p_lakhr_id;
367 
368     CURSOR fetch_policy(c_lease_app_id IN NUMBER)
369 	IS
370       SELECT ID
371 	       , ISU_ID
372          , OBJECT_VERSION_NUMBER
373       FROM OKL_INS_POLICIES_B
374       WHERE lease_application_id = c_lease_app_id
375         AND IPY_TYPE = 'THIRD_PARTY_POLICY'
376         AND TRUNC(nvl(DATE_TO,SYSDATE)) > TRUNC(SYSDATE);
377 
378     CURSOR c_vendor_exist (p_khr_id NUMBER , p_isu_id  NUMBER)
379 	IS
380      select 'x'
381              from OKC_K_PARTY_ROLES_B CPLB
382              where CPLB.CHR_ID = p_khr_id
383                and CPLB.DNZ_CHR_ID = p_khr_id
384                and CPLB.OBJECT1_ID1 = p_isu_id
385              and CPLB.JTOT_OBJECT1_CODE = 'OKX_PARTY'
386              and CPLB.RLE_CODE = 'EXTERNAL_PARTY';
387     l_dummy VARCHAR2(1) := '?';
388   BEGIN
389     l_return_status := OKL_API.START_ACTIVITY(
390 	                       l_api_name
391 						  ,G_PKG_NAME
392 						  ,p_init_msg_list
393 						  ,l_api_version
394 						  ,p_api_version
395 						  ,'_PROCESS'
396 						  ,l_return_status);
397     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
398 	THEN
399       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
400     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
401 	THEN
402       RAISE OKL_API.G_EXCEPTION_ERROR;
403     END IF;
404     -- Check to see if there is existing active third party policy should be done
405     -- prior to call for this API in Authoring teams API.
406     -- Get Lease Application ID from which current contract is created
407     OPEN fetch_lease_app(p_lakhr_id);
408     FETCH fetch_lease_app INTO l_lease_application_id;
409     CLOSE fetch_lease_app;
410     -- Get active Third party insurance policy for the lease application
411     OPEN fetch_policy(l_lease_application_id);
412     FETCH fetch_policy INTO l_third_party_ins_id,l_isu_id,l_ovn;
413     CLOSE fetch_policy;
414     --bug 4875084. do further processing only if l_third_party_ins_id is not null
415     IF l_third_party_ins_id IS NOT NULL THEN
416       -- CREATE Role only if vendor is not there
417       OPEN c_vendor_exist(p_lakhr_id ,l_isu_id );
418       FETCH c_vendor_exist INTO l_dummy;
419       CLOSE c_vendor_exist;
420       IF ( l_dummy = '?' )
421       THEN
422         l_cplv_rec_type.sfwt_flag := 'N';
423         l_cplv_rec_type.CHR_ID := p_lakhr_id;
424         l_cplv_rec_type.DNZ_CHR_ID := p_lakhr_id;
425         l_cplv_rec_type.RLE_CODE := 'EXTERNAL_PARTY';
426         l_cplv_rec_type.OBJECT1_ID1 := l_isu_id;
427         l_cplv_rec_type.OBJECT1_ID2 := '#';
428         l_cplv_rec_type.JTOT_OBJECT1_CODE :=  'OKX_PARTY';
429         --Code for Debug Messages
430         IF(L_DEBUG_ENABLED='Y')
431       THEN
432           L_LEVEL_PROCEDURE := FND_LOG.LEVEL_PROCEDURE;
433           IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
434         END IF;
435         IF(IS_DEBUG_PROCEDURE_ON)
436       THEN
437           BEGIN
438             OKL_DEBUG_PUB.LOG_DEBUG(
439             L_LEVEL_PROCEDURE
440          ,L_MODULE
441          ,'Begin Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role');
442           END;
443         END IF;
444         -- gboomina 26-Oct-05 Bug#4558486 Start - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
445         okl_k_party_roles_pvt.create_k_party_role(
446             p_api_version               => l_api_version,
447             p_init_msg_list             => OKL_API.G_FALSE,
448             x_return_status             => l_return_status,
449             x_msg_count                 => x_msg_count,
450             x_msg_data                  => x_msg_data ,
451             p_cplv_rec                  => l_cplv_rec_type,
452             x_cplv_rec                  => x_cplv_rec_type,
453             p_kplv_rec                  => l_kplv_rec,
454             x_kplv_rec                  => lx_kplv_rec);
455 
456         -- gboomina 26-Oct-05 Bug#4558486 End - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
457         IF(IS_DEBUG_PROCEDURE_ON)
458       THEN
459           BEGIN
460             OKL_DEBUG_PUB.LOG_DEBUG(
461             L_LEVEL_PROCEDURE
462          ,L_MODULE
463          ,'End Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role');
464           END;
465         END IF;
466         -- End of call to okl_k_party_roles_pvt.create_k_party_role
467         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
468       THEN
469           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
470         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
471       THEN
472           RAISE OKL_API.G_EXCEPTION_ERROR;
473         END IF;
474       END IF ;
475       --populate insurance policy record for updating with contract number
476       l_ipyv_rec.id := l_third_party_ins_id;
477       l_ipyv_rec.khr_id := p_lakhr_id; -- Update existing record with contract id
478       l_ipyv_rec.object_version_number := l_ovn; --skgautam  Bug# 4721141
479       -- Start of code for debug messages
480       IF(L_DEBUG_ENABLED='Y')
481     THEN
482         L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
483         IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
484       END IF;
485       IF(IS_DEBUG_PROCEDURE_ON)
486     THEN
487         BEGIN
488           OKL_DEBUG_PUB.LOG_DEBUG(
489           L_LEVEL_PROCEDURE
490          ,L_MODULE
491          ,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies');
492         END;
493       END IF;
494       IF l_ipyv_rec.id IS NOT NULL THEN
495         Okl_Ins_Policies_Pub.update_ins_policies(
496             p_api_version                  => l_api_version,
497             p_init_msg_list                => OKL_API.G_FALSE,
498             x_return_status                => l_return_status,
499             x_msg_count                    => x_msg_count,
500             x_msg_data                     => x_msg_data,
501             p_ipyv_rec                     => l_ipyv_rec,
502             x_ipyv_rec                     => x_ipyv_rec);
503         IF(IS_DEBUG_PROCEDURE_ON)
504         THEN
505           BEGIN
506             OKL_DEBUG_PUB.LOG_DEBUG(
507                 L_LEVEL_PROCEDURE
508                ,L_MODULE
509                ,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies');
510           END;
511         END IF;
512         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
513       THEN
514         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
515       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
516       THEN
517         RAISE OKL_API.G_EXCEPTION_ERROR;
518       END IF;
519      END IF;
520   END IF;
521 	x_return_status := l_return_status;
522     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
523   EXCEPTION
524     WHEN OKL_API.G_EXCEPTION_ERROR
525 	THEN
526       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
527                              l_api_name
528 							,G_PKG_NAME
529 							,'OKL_API.G_RET_STS_ERROR'
530 							,x_msg_count
531 							,x_msg_data
532 							,'_PROCESS');
533     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR
534 	THEN
535       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
536                              l_api_name
537                             ,G_PKG_NAME
538 							,'OKL_API.G_RET_STS_UNEXP_ERROR'
539 							,x_msg_count
540 							,x_msg_data
541 							,'_PROCESS');
542     WHEN OTHERS
543 	THEN
544       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
545                              l_api_name
546 							,G_PKG_NAME
547 							,'OTHERS'
548 							,x_msg_count
549 							,x_msg_data
550 							,'_PROCESS');
551   END lseapp_thrdprty_to_ctrct;
552   ---------------------------------------------------------------------------
553 
554 ---------------------------------------------------------------------------
555 -- Start of comments
556 --
557 -- Function Name	: get_contract_status
558 -- Description		:It get Contract status based on contract id.
559 -- Business Rules	:
560 -- Parameters		:
561 -- Version		: 1.0
562 -- End of Comments
563 ---------------------------------------------------------------------------
564  FUNCTION get_contract_status (
565           p_khr_id IN  NUMBER,
566           x_contract_status OUT NOCOPY VARCHAR2
567         ) RETURN VARCHAR2 IS
568           l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
569           CURSOR okc_k_status_csr(p_khr_id  IN NUMBER) IS
570               SELECT STE_CODE
571 	          FROM  OKC_K_HEADERS_V KHR , OKC_STATUSES_B OST
572               WHERE  KHR.ID =  p_khr_id
573               AND KHR.STS_CODE = OST.CODE ;
574 
575         BEGIN
576           OPEN  okc_k_status_csr(p_khr_id);
577          FETCH okc_k_status_csr INTO x_contract_status ;
578          IF(okc_k_status_csr%NOTFOUND) THEN
579             -- store SQL error message on message stack for caller
580                OKL_API.set_message(G_APP_NAME,
581                			   G_INVALID_CONTRACT
582                			   );
583                CLOSE okc_k_status_csr ;
584                l_return_status := OKC_API.G_RET_STS_ERROR;
585                -- Change it to
586                RETURN(l_return_status);
587          END IF;
588          CLOSE okc_k_status_csr ;
589          RETURN(l_return_status);
590          EXCEPTION
591            WHEN OTHERS THEN
592                -- store SQL error message on message stack for caller
593                OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
594       		-- notify caller of an UNEXPECTED error
595       		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
596       		-- verify that cursor was closed
597     		IF okc_k_status_csr%ISOPEN THEN
598 	    	   CLOSE okc_k_status_csr;
599 		    END IF;
600           	RETURN(l_return_status);
601       END get_contract_status;
602    --------------------------------------------------------
603 
604 PROCEDURE payment_stream(
605      p_api_version                   IN NUMBER,
606      p_init_msg_list                IN VARCHAR2 ,
607      x_return_status                OUT NOCOPY  VARCHAR2,
608      x_msg_count                    OUT NOCOPY NUMBER,
609      x_msg_data                     OUT NOCOPY VARCHAR2,
610      p_ipyv_rec                 IN ipyv_rec_type,
611      p_payment_tbl_type   IN  payment_tbl_type ) IS
612 
613    	l_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
614 	l_api_version			CONSTANT NUMBER := 1;
615     l_api_name			CONSTANT VARCHAR2(30) := 'payment_stream';
616     l_return_status			VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
617     p_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
618 	x_stmv_rec		        Okl_Streams_Pub.stmv_rec_type;
619 	p_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
620 	x_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
621 
622     l_date  DATE;
623 
624      BEGIN
625 
626          l_return_status := OKC_API.START_ACTIVITY(l_api_name,
627                                                        G_PKG_NAME,
628                                                       p_init_msg_list,
629                                                       l_api_version,
630                                                       p_api_version,
631                                                       '_PROCESS',
632                                                       x_return_status);
633             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
634               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
635             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
636               RAISE OKC_API.G_EXCEPTION_ERROR;
637             END IF;
638 
639     BEGIN
640      select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
641 
642 
643 EXCEPTION
644           WHEN NO_DATA_FOUND THEN
645                 -- store SQL error message on message stack for caller
646                  OKC_API.set_message(G_APP_NAME,  'OKL_NO_SEQUENCE'  );
647                  RAISE OKC_API.G_EXCEPTION_ERROR;
648           WHEN OTHERS THEN
649                  -- store SQL error message on message stack for caller
650                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
651         		 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
652   END ;
653 
654  -- Cursor replaced with the call to get the stream type id, change made for insurance user defined streams, bug 3924300
655 
656      OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
657                                                    'INSURANCE_PAYABLE',
658                                                    l_return_status,
659                                                    p_stmv_rec.sty_id);
660 
661      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
662                    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
663      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
664                    Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN ,'INSURANCE_PAYABLE'); --bug 4024785
665                    x_return_status := OKC_API.G_RET_STS_ERROR ;
666                    RAISE OKC_API.G_EXCEPTION_ERROR;
667       END IF;
668 
669 
670 p_stmv_rec.sgn_code := 'MANL';
671 p_stmv_rec.say_code := 'CURR';
672 p_stmv_rec.active_yn := 'Y';
673 p_stmv_rec.date_current := SYSDATE;
674 p_stmv_rec.khr_id := p_ipyv_rec.khr_id ;
675 p_stmv_rec.kle_id := p_ipyv_rec.kle_id ;
676 
677 
678         IF(p_payment_tbl_type.count > 0)THEN
679               FOR i IN 1..p_payment_tbl_type.count  LOOP
680                  p_selv_tbl(i).stream_element_date := p_payment_tbl_type(i).DUE_DATE;
681                  l_date := p_payment_tbl_type(i).DUE_DATE ;
682                  p_selv_tbl(i).amount := p_payment_tbl_type(i).AMOUNT;
683                  p_selv_tbl(i).se_line_number := i;
684                  p_selv_tbl(i).accrued_yn := 'N';
685               END LOOP;
686                   -- Create Stream and Stream Elements
687 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
688   IF(L_DEBUG_ENABLED='Y') THEN
689     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
690     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
691   END IF;
692 
693   -- Bug 5408689 : Start
694   IF(IS_DEBUG_PROCEDURE_ON)
695   THEN
696     OKL_DEBUG_PUB.LOG_DEBUG(
697        L_LEVEL_PROCEDURE
698       ,L_MODULE
699       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
700   END IF;
701   l_return_status := Okl_Streams_Util.round_streams_amount(
702                         p_api_version   => p_api_version
703                        ,p_init_msg_list => p_init_msg_list
704                        ,x_msg_count     => x_msg_count
705                        ,x_msg_data      => x_msg_data
706                        ,p_chr_id        => p_stmv_rec.khr_id
707                        ,p_selv_tbl      => p_selv_tbl
708                        ,x_selv_tbl      => x_selv_tbl);
709   IF(IS_DEBUG_PROCEDURE_ON)
710   THEN
711     OKL_DEBUG_PUB.LOG_DEBUG(
712        L_LEVEL_PROCEDURE
713       ,L_MODULE
714       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
715   END IF;
716 
717   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
718   THEN
719     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
720   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
721   THEN
722     RAISE OKC_API.G_EXCEPTION_ERROR;
723   END IF;
724 
725   -- Store Rounded Streams back into the p_selv_tbl
726   p_selv_tbl:= x_selv_tbl;
727   -- Bug 5408689 : End
728 
729 
730   IF(IS_DEBUG_PROCEDURE_ON) THEN
731     BEGIN
732         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
733     END;
734   END IF;
735             OKL_STREAMS_PUB.create_streams(
736                 p_api_version
737                ,p_init_msg_list
738                ,x_return_status
739                ,x_msg_count
740                ,x_msg_data
741                ,p_stmv_rec
742                ,p_selv_tbl
743                ,x_stmv_rec
744                ,x_selv_tbl);
745   IF(IS_DEBUG_PROCEDURE_ON) THEN
746     BEGIN
747         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
748     END;
749   END IF;
750 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
751 
752       	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
753              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
754          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
755              RAISE OKC_API.G_EXCEPTION_ERROR;
756       	END IF;
757      END IF;
758 
759       OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
760 EXCEPTION
761           WHEN OKC_API.G_EXCEPTION_ERROR THEN
762             x_return_status := OKC_API.HANDLE_EXCEPTIONS
763             (
764               l_api_name,
765               G_PKG_NAME,
766               'OKC_API.G_RET_STS_ERROR',
767               x_msg_count,
768               x_msg_data,
769               '_PROCESS'
770             );
771           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
772             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
773             (
774               l_api_name,
775               G_PKG_NAME,
776               'OKC_API.G_RET_STS_UNEXP_ERROR',
777               x_msg_count,
778               x_msg_data,
779               '_PROCESS'
780             );
781           WHEN OTHERS THEN
782             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
783             (
784               l_api_name,
785               G_PKG_NAME,
786               'OTHERS',
787               x_msg_count,
788               x_msg_data,
789               '_PROCESS'
790             );
791      END payment_stream ;
792 
793 
794 
795   FUNCTION genrt_monthly_inc(p_ipyv_rec IN ipyv_rec_type,x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type)
796   			RETURN VARCHAR2 IS
797      l_date_from			DATE;
798      l_date_to			DATE;
799      l_ins_term                   NUMBER;
800      l_premium			NUMBER;
801      l_bill_periods		NUMBER;
802      l_monthly_pmnt		NUMBER;
803      l_due_date			DATE;
804      l_amount_due			NUMBER;
805      l_num_days_in_month          NUMBER;
806      l_prorated          NUMBER;
807      i				    PLS_INTEGER;
808      j				    PLS_INTEGER;
809      l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
810      l_flag               VARCHAR2(1);
811    BEGIN
812      l_date_from := TRUNC(p_ipyv_rec.date_from);
813      l_date_to := TRUNC(p_ipyv_rec.date_to);
814 
815       --Check if date_from and date_to difference is greater than a month
816      IF (l_date_to  - l_date_from >= TO_NUMBER(TO_CHAR(LAST_DAY(l_date_from),'DD'))) THEN -- bug 4056603
817 
818        l_premium := p_ipyv_rec.premium;
819        l_ins_term := MONTHS_BETWEEN(l_date_to,l_date_from);
820        l_due_date := TRUNC(LAST_DAY(l_date_from));
821        IF ((l_date_from -1) = LAST_DAY(ADD_MONTHS(l_date_from,-1)))THEN
822 
823        	 l_bill_periods := round(l_ins_term);
824 
825        ELSE
826        		l_bill_periods := l_ins_term +1 ;
827        		l_flag :='Y';
828        END IF;
829 
830 
831 
832        IF(l_flag = 'Y') THEN
833         --dbms_output.put_line('IN INCOME 3');
834         l_num_days_in_month := 30 - TO_NUMBER(TO_CHAR(l_date_from,'DD')) +1;
835         l_amount_due := (l_premium * l_num_days_in_month)/30;
836         l_prorated := l_amount_due;
837 
838         -- First Month
839         x_selv_tbl(1).stream_element_date := l_due_date;
840 	x_selv_tbl(1).amount := l_prorated;
841 	x_selv_tbl(1).se_line_number := 1;
842         --- Last Month
843         x_selv_tbl(l_bill_periods).stream_element_date := LAST_DAY(l_date_to);
844 	x_selv_tbl(l_bill_periods).amount := l_premium - l_prorated;
845 	x_selv_tbl(l_bill_periods).se_line_number := round(l_bill_periods);
846 
847         i := 1;
848         j := l_bill_periods -2 ;
849          IF(j > 0)THEN
850                 LOOP
851                         x_selv_tbl(i + 1).stream_element_date := LAST_DAY(ADD_MONTHS(l_due_date, i));
852                         x_selv_tbl(i + 1 ).amount := l_premium;
853                         x_selv_tbl(i + 1).se_line_number := i+ 1;
854                    EXIT WHEN i >= j;
855                       	 i := i + 1;
856 
857                 END LOOP;
858 
859          END IF;
860        ELSE
861         l_amount_due := l_premium ;
862         i := 1;
863            IF(l_bill_periods > 0)THEN
864                 LOOP
865                    x_selv_tbl(i).stream_element_date := ADD_MONTHS(l_due_date,i-1);
866                    x_selv_tbl(i).amount := l_amount_due;
867                    x_selv_tbl(i).se_line_number := i;
868 
869                    EXIT WHEN i >= l_bill_periods;
870                       	 i := i + 1;
871                 END LOOP;
872 
873              END IF;
874         END IF;
875    ELSE --bug 4056603 ***start
876  --If less than one month charge for 1 month
877         l_premium := p_ipyv_rec.premium;
878         l_bill_periods := 1 ;
879         l_due_date := TRUNC(LAST_DAY(l_date_from));
880         l_num_days_in_month := l_due_date - l_date_from;
881         l_amount_due :=(l_premium * l_num_days_in_month)/30;
882           i := 1;
883         x_selv_tbl(i).stream_element_date := l_due_date;
884         x_selv_tbl(i).amount := l_amount_due;
885         x_selv_tbl(i).se_line_number := i;
886 
887    END IF; -- bug 4056603 *** End
888 
889     RETURN(l_return_status);
890   END genrt_monthly_inc;
891 
892 
893 FUNCTION genrt_monthly(p_insexp_tbl IN insexp_tbl_type,
894     p_date_from IN DATE,
895     x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type)
896 			RETURN VARCHAR2 IS
897    l_ins_term                   NUMBER;
898    l_premium			NUMBER;
899    l_bill_periods		NUMBER;
900    l_monthly_pmnt		NUMBER;
901    l_due_date			DATE;
902    period	                NUMBER;
903    period_amount                NUMBER;
904    l_amount_due			NUMBER;
905    l_prorated                  NUMBER ;
906    l_num_days_in_month     NUMBER;
907    i				PLS_INTEGER;
908    j                            PLS_INTEGER;
909    k				PLS_INTEGER;
910    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
911    l_flag  VARCHAR2(1) := 'N';
912    l_date_from   DATE ;
913  BEGIN
914 
915       IF p_insexp_tbl IS NOT NULL THEN
916         IF p_insexp_tbl.COUNT > 0 THEN
917 
918 
919          	l_date_from := TRUNC(p_date_from);
920 
921 
922          --Check if date_from and date_to difference is greater than a month
923 	   --     IF (l_date_to  - l_date_from >= TO_NUMBER(TO_CHAR(LAST_DAY(l_date_from),'DD'))) THEN
924 
925           l_premium := p_insexp_tbl(1).amount  ;
926           l_ins_term := p_insexp_tbl(1).period;
927           l_due_date := TRUNC(LAST_DAY(l_date_from));
928           IF ((l_date_from -1) = LAST_DAY(ADD_MONTHS(l_date_from,-1)))THEN
929 
930           	    l_bill_periods := round(l_ins_term);
931 
932           ELSE
933           		l_bill_periods := l_ins_term +1 ;
934           		l_flag :='Y';
935           END IF;
936 
937 
938 
939 
940          IF(l_flag = 'Y') THEN
941            --dbms_output.put_line('IN INCOME 3');
942                l_num_days_in_month := 30 - TO_NUMBER(TO_CHAR(l_date_from,'DD')) +1;
943                l_amount_due := (l_premium * l_num_days_in_month)/30;
944                l_prorated := l_amount_due;
945 
946            -- First Month
947                x_selv_tbl(1).stream_element_date := l_due_date;
948            	x_selv_tbl(1).amount := l_prorated;
949            	x_selv_tbl(1).se_line_number := 1;
950                --- Last Month
951                x_selv_tbl(l_bill_periods).stream_element_date
952                  := LAST_DAY(ADD_MONTHS(l_date_from,l_ins_term));
953            	x_selv_tbl(l_bill_periods).amount
954                := l_premium - l_prorated;
955                x_selv_tbl(l_bill_periods).se_line_number := round(l_bill_periods);
956 
957            i := 1;
958            j := l_bill_periods -2 ;
959             IF(j > 0)THEN
960                    LOOP
961                            x_selv_tbl(i + 1).stream_element_date := LAST_DAY(ADD_MONTHS(l_due_date, i));
962                            x_selv_tbl(i + 1 ).amount := l_premium;
963                            x_selv_tbl(i + 1).se_line_number := i+ 1;
964                       EXIT WHEN i >= j;
965                          	 i := i + 1;
966 
967                    END LOOP;
968 
969             END IF;
970           ELSE
971            l_amount_due := l_premium ;
972            i := 1;
973               IF(l_bill_periods > 0)THEN
974                    LOOP
975                       x_selv_tbl(i).stream_element_date := ADD_MONTHS(l_due_date,i-1);
976                       x_selv_tbl(i).amount := l_amount_due;
977                       x_selv_tbl(i).se_line_number := i;
978 
979                       EXIT WHEN i >= l_bill_periods;
980                          	 i := i + 1;
981                    END LOOP;
982 
983                 END IF;
984            END IF;
985         END IF;
986         END IF;
987 
988     RETURN(l_return_status);
989 
990 END genrt_monthly;
991 
992 
993 PROCEDURE  create_insinc_streams(
994      p_api_version                   IN NUMBER,
995      p_init_msg_list                IN VARCHAR2 ,
996      x_return_status                OUT NOCOPY  VARCHAR2,
997      x_msg_count                    OUT NOCOPY NUMBER,
998      x_msg_data                     OUT NOCOPY VARCHAR2,
999      p_ipyv_rec                     IN ipyv_rec_type
1000          )IS
1001    	l_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
1002 	l_row_notfound			BOOLEAN := TRUE;
1003 	l_msg_count			NUMBER ;
1004 	l_msg_data                      VARCHAR2(2000);
1005 	l_api_version			CONSTANT NUMBER := 1;
1006     l_api_name			CONSTANT VARCHAR2(30) := 'create_insinc_streams';
1007     l_return_status			VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
1008     p_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
1009 	x_stmv_rec		        Okl_Streams_Pub.stmv_rec_type;
1010 	p_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
1011 	x_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
1012 	x_khr_status			VARCHAR2 (30) ;
1013 	l_khr_date_from			DATE ;
1014 	l_khr_date_to			DATE ;
1015 	l_ipyv_rec			Okl_Ipy_Pvt.ipyv_rec_type;
1016 	l_khr_id			NUMBER;
1017     p_premium           NUMBER;
1018     i                   PLS_INTEGER;
1019 
1020     l_pdtv_rec_type  OKL_SETUPPRODUCTS_PVT.pdtv_rec_type ;
1021     l_pdt_parameters_rec OKL_SETUPPRODUCTS_PVT.pdt_parameters_rec_type ;
1022     l_khr_status   VARCHAR2(30) ;
1023     l_multigaap_flag VARCHAR2(30);
1024    x_no_data_found                BOOLEAN;
1025 
1026 
1027     -- Changes for multi gaap
1028     cursor multi_gaap_flag_cur  IS
1029     select  MULTI_GAAP_YN
1030     from okl_k_headers
1031     WHERE ID  = l_ipyv_rec.khr_id ;
1032 
1033 
1034     cursor khr_product_cur  IS
1035     select  PDT_ID
1036     from okl_k_headers
1037     WHERE ID  = l_ipyv_rec.khr_id ;
1038 BEGIN
1039 
1040  l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1041              		G_PKG_NAME,
1042              		p_init_msg_list,
1043                         l_api_version,
1044                         p_api_version,
1045                         '_PROCESS',
1046                         x_return_status);
1047    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1048         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1049    ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1050         RAISE OKC_API.G_EXCEPTION_ERROR;
1051    END IF;
1052 
1053  l_ipyv_rec := p_ipyv_rec;
1054  l_khr_id	:= l_ipyv_rec.khr_id;
1055 
1056 ---------------------------------------------------------------------
1057 ----------- generate stream
1058 -------------------------------------------------------------------
1059 -- SET values to retrieve record
1060 
1061 p_stmv_rec.khr_id :=  p_ipyv_rec.khr_id ;
1062 p_stmv_rec.kle_id :=  p_ipyv_rec.kle_id ;
1063 BEGIN
1064 select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
1065 
1066       -- call to get the stream type id, change made for insurance user defined streams, bug 3924300
1067      OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1068                                                    'INSURANCE_INCOME_ACCRUAL',
1069                                                    l_return_status,
1070                                                    p_stmv_rec.sty_id);
1071      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1072                    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1073      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1074                    Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN ,'INSURANCE_INCOME_ACCRUAL'); --bug 4024785
1075                    x_return_status := OKC_API.G_RET_STS_ERROR ;
1076                    RAISE OKC_API.G_EXCEPTION_ERROR;
1077       END IF;
1078 
1079 EXCEPTION
1080           WHEN NO_DATA_FOUND THEN
1081                 -- store SQL error message on message stack for caller
1082                  OKC_API.set_message(G_APP_NAME,  G_K_NOT_ACTIVE
1083                  			   );
1084           WHEN OTHERS THEN
1085                  -- store SQL error message on message stack for caller
1086                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1087         		-- notify caller of an UNEXPECTED error
1088         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1089         		-- verify that cursor was closed
1090   		END ;
1091 
1092 p_stmv_rec.sgn_code := 'MANL';
1093 p_stmv_rec.say_code := 'WORK';
1094 p_stmv_rec.active_yn := 'N';
1095 p_stmv_rec.date_working := SYSDATE;
1096 p_premium := p_ipyv_rec.premium;
1097 l_ipyv_rec := p_ipyv_rec;
1098 
1099 IF p_ipyv_rec.ipf_code = 'MONTHLY'THEN
1100   l_return_status :=  genrt_monthly_inc(p_ipyv_rec,x_selv_tbl);
1101 ELSIF (p_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
1102   l_ipyv_rec.premium := p_premium/2;
1103   l_return_status :=  genrt_monthly_inc(l_ipyv_rec,x_selv_tbl);
1104  ELSIF (p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
1105   l_ipyv_rec.premium := p_premium/6;
1106   l_return_status :=  genrt_monthly_inc(l_ipyv_rec,x_selv_tbl);
1107  ELSIF (p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
1108   l_ipyv_rec.premium := p_premium/3;
1109   l_return_status :=  genrt_monthly_inc(l_ipyv_rec,x_selv_tbl);
1110  ELSIF (p_ipyv_rec.ipf_code = 'YEARLY') THEN
1111   l_ipyv_rec.premium := p_premium/12;
1112   l_return_status :=  genrt_monthly_inc(l_ipyv_rec,x_selv_tbl);
1113  END IF;
1114 
1115   --l_return_status :=  OKC_API.G_RET_STS_ERROR;
1116  --ELSIF (p_ipyv_rec.ipf_code = 'LEASE_FREQUENCY') THEN
1117   --l_return_status :=  genrt_lease_frequency(p_ipyv_rec,x_selv_tbl);
1118  --END IF;
1119 
1120  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1121         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1122      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1123         RAISE OKC_API.G_EXCEPTION_ERROR;
1124  END IF;
1125 
1126    p_selv_tbl:=x_selv_tbl;
1127 
1128  IF (l_return_status = Okc_Api.G_RET_STS_SUCCESS) THEN
1129 
1130 
1131    -- Create Stream and Stream Elements
1132 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1133   IF(L_DEBUG_ENABLED='Y') THEN
1134     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
1135     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
1136   END IF;
1137 
1138     -- Bug 5408689 : Start
1139   IF(IS_DEBUG_PROCEDURE_ON)
1140   THEN
1141     OKL_DEBUG_PUB.LOG_DEBUG(
1142        L_LEVEL_PROCEDURE
1143       ,L_MODULE
1144       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
1145   END IF;
1146   l_return_status := Okl_Streams_Util.round_streams_amount(
1147                         p_api_version   => p_api_version
1148                        ,p_init_msg_list => p_init_msg_list
1149                        ,x_msg_count     => x_msg_count
1150                        ,x_msg_data      => x_msg_data
1151                        ,p_chr_id        => p_stmv_rec.khr_id
1152                        ,p_selv_tbl      => p_selv_tbl
1153                        ,x_selv_tbl      => x_selv_tbl);
1154   IF(IS_DEBUG_PROCEDURE_ON)
1155   THEN
1156     OKL_DEBUG_PUB.LOG_DEBUG(
1157        L_LEVEL_PROCEDURE
1158       ,L_MODULE
1159       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
1160   END IF;
1161 
1162   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
1163   THEN
1164     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1165   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
1166   THEN
1167     RAISE OKC_API.G_EXCEPTION_ERROR;
1168   END IF;
1169 
1170   -- Store Rounded Streams back into the p_selv_tbl
1171   p_selv_tbl:= x_selv_tbl;
1172   -- Bug 5408689 : End
1173 
1174 
1175   IF(IS_DEBUG_PROCEDURE_ON) THEN
1176     BEGIN
1177         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1178     END;
1179   END IF;
1180    OKL_STREAMS_PUB.create_streams(
1181         p_api_version
1182        ,p_init_msg_list
1183        ,x_return_status
1184        ,x_msg_count
1185        ,x_msg_data
1186        ,p_stmv_rec
1187        ,p_selv_tbl
1188        ,x_stmv_rec
1189        ,x_selv_tbl  );
1190   IF(IS_DEBUG_PROCEDURE_ON) THEN
1191     BEGIN
1192         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1193     END;
1194   END IF;
1195 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1196 
1197 
1198       l_return_status := x_return_status ;
1199      	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1200              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1201          ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1202              RAISE OKC_API.G_EXCEPTION_ERROR;
1203   	END IF;
1204     -----
1205 
1206     ---Create another set of stream, if Multi Gaap is enabled
1207 --   1. Get status of contract
1208  l_return_status :=  get_contract_status ( l_ipyv_rec.khr_id ,l_khr_status );
1209  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1210     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1211  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1212         RAISE OKC_API.G_EXCEPTION_ERROR;
1213  END IF;
1214    IF (l_khr_status = 'ACTIVE' ) THEN
1215  --- if active , get multi gaap enabled from contract header table
1216 
1217    BEGIN
1218 
1219       OPEN  multi_gaap_flag_cur;
1220       FETCH multi_gaap_flag_cur INTO l_multigaap_flag ;
1221       IF (multi_gaap_flag_cur%NOTFOUND) THEN
1222         l_multigaap_flag := 'N' ;
1223       END IF ;
1224       CLOSE multi_gaap_flag_cur ;
1225     EXCEPTION
1226        WHEN OTHERS THEN
1227                       -- store SQL error message on message stack for caller
1228              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1229              		-- notify caller of an UNEXPECTED error
1230              x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1231              		-- verify that cursor was closed
1232        		IF multi_gaap_flag_cur%ISOPEN THEN
1233        		        CLOSE multi_gaap_flag_cur;
1234              END IF;
1235      END;
1236  ELSE
1237 -- if not active call appropriate method to determine
1238   --- get product id associated with the contract
1239      BEGIN
1240 
1241       OPEN  khr_product_cur;
1242       FETCH khr_product_cur INTO l_pdtv_rec_type.id ;
1243       IF (khr_product_cur%NOTFOUND) THEN
1244         l_multigaap_flag := 'N' ;
1245       END IF ;
1246       CLOSE khr_product_cur ;
1247     EXCEPTION
1248        WHEN OTHERS THEN
1249                       -- store SQL error message on message stack for caller
1250              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1251              		-- notify caller of an UNEXPECTED error
1252              x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1253              		-- verify that cursor was closed
1254        		IF khr_product_cur%ISOPEN THEN
1255        		        CLOSE khr_product_cur;
1256             END IF;
1257    END;
1258 
1259 -- Start of wraper code generated automatically by Debug code generator for OKL_SETUPPRODUCTS_PVT.Getpdt_parameters
1260   IF(IS_DEBUG_PROCEDURE_ON) THEN
1261     BEGIN
1262         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_SETUPPRODUCTS_PVT.Getpdt_parameters ');
1263     END;
1264   END IF;
1265  OKL_SETUPPRODUCTS_PVT.Getpdt_parameters(
1266         l_api_version
1267        ,OKL_API.G_FALSE,
1268       x_return_status,
1269       x_no_data_found
1270       ,x_msg_count,
1271        x_msg_data
1272        ,  l_pdtv_rec_type
1273      ,  SYSDATE
1274        ,l_pdt_parameters_rec
1275         );
1276   IF(IS_DEBUG_PROCEDURE_ON) THEN
1277     BEGIN
1278         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_SETUPPRODUCTS_PVT.Getpdt_parameters ');
1279     END;
1280   END IF;
1281 -- End of wraper code generated automatically by Debug code generator for OKL_SETUPPRODUCTS_PVT.Getpdt_parameters
1282 
1283 
1284      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1285         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1286      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1287         RAISE OKC_API.G_EXCEPTION_ERROR;
1288      END IF;
1289 
1290    IF (l_pdt_parameters_rec.reporting_pdt_id is NULL) THEN
1291               l_multigaap_flag := 'N' ;
1292    ELSE
1293               l_multigaap_flag := 'Y' ;
1294    END IF;
1295 
1296  END IF;
1297 --- if multi gaap enabled , create another set of streams
1298 IF(l_multigaap_flag = 'Y') THEN
1299 
1300      BEGIN
1301      select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
1302 
1303 
1304       -- call to get the stream type id, change made for insurance user defined streams,  bug 3924300
1305 
1306           OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
1307                                                    'INSURANCE_INCOME_ACCRUAL',
1308                                                    l_return_status,
1309                                                    p_stmv_rec.sty_id);
1310           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1311                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1312                        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1313           ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1314                        Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,' INSURANCE_INCOME_ACCRUAL'); --bug 4024785
1315                        RAISE OKC_API.G_EXCEPTION_ERROR;
1316           END IF;
1317 
1318      EXCEPTION
1319                WHEN NO_DATA_FOUND THEN
1320                      -- store SQL error message on message stack for caller
1321                       OKC_API.set_message(G_APP_NAME,  G_K_NOT_ACTIVE
1322                       			   );
1323                WHEN OTHERS THEN
1324                       -- store SQL error message on message stack for caller
1325                       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1326              		-- notify caller of an UNEXPECTED error
1327              		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1328              		-- verify that cursor was closed
1329    END ;
1330 
1331     p_stmv_rec.say_code := 'WORK';
1332 	  p_stmv_rec.active_yn := 'N';
1333     p_stmv_rec.purpose_code := 'REPORT' ;
1334     p_stmv_rec.date_working := SYSDATE;
1335 
1336 
1337   -- Bug 5408689 : Start
1338   IF(IS_DEBUG_PROCEDURE_ON)
1339   THEN
1340     OKL_DEBUG_PUB.LOG_DEBUG(
1341        L_LEVEL_PROCEDURE
1342       ,L_MODULE
1343       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
1344   END IF;
1345   l_return_status := Okl_Streams_Util.round_streams_amount(
1346                         p_api_version   => p_api_version
1347                        ,p_init_msg_list => p_init_msg_list
1348                        ,x_msg_count     => x_msg_count
1349                        ,x_msg_data      => x_msg_data
1350                        ,p_chr_id        => p_stmv_rec.khr_id
1351                        ,p_selv_tbl      => p_selv_tbl
1352                        ,x_selv_tbl      => x_selv_tbl);
1353   IF(IS_DEBUG_PROCEDURE_ON)
1354   THEN
1355     OKL_DEBUG_PUB.LOG_DEBUG(
1356        L_LEVEL_PROCEDURE
1357       ,L_MODULE
1358       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
1359   END IF;
1360 
1361   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
1362   THEN
1363     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1364   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
1365   THEN
1366     RAISE OKC_API.G_EXCEPTION_ERROR;
1367   END IF;
1368 
1369   -- Store Rounded Streams back into the p_selv_tbl
1370   p_selv_tbl:= x_selv_tbl;
1371   -- Bug 5408689 : End
1372 
1373 
1374 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1375   IF(IS_DEBUG_PROCEDURE_ON) THEN
1376     BEGIN
1377         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1378     END;
1379   END IF;
1380        OKL_STREAMS_PUB.create_streams(
1381         p_api_version
1382        ,p_init_msg_list
1383        ,x_return_status
1384        ,x_msg_count
1385        ,x_msg_data
1386        ,p_stmv_rec
1387        ,p_selv_tbl
1388        ,x_stmv_rec
1389        ,x_selv_tbl
1390      );
1391   IF(IS_DEBUG_PROCEDURE_ON) THEN
1392     BEGIN
1393         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1394     END;
1395   END IF;
1396 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1397 
1398 
1399 
1400      	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1401              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1402          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1403              RAISE OKC_API.G_EXCEPTION_ERROR;
1404   	 END IF;
1405 
1406   END IF;
1407   END IF;
1408 
1409   OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1410 
1411 EXCEPTION
1412           WHEN OKC_API.G_EXCEPTION_ERROR THEN
1413             x_return_status := OKC_API.HANDLE_EXCEPTIONS
1414             (
1415               l_api_name,
1416               G_PKG_NAME,
1417               'OKC_API.G_RET_STS_ERROR',
1418               x_msg_count,
1419               x_msg_data,
1420               '_PROCESS'
1421             );
1422           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1423             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1424             (
1425               l_api_name,
1426               G_PKG_NAME,
1427               'OKC_API.G_RET_STS_UNEXP_ERROR',
1428               x_msg_count,
1429               x_msg_data,
1430               '_PROCESS'
1431             );
1432           WHEN OTHERS THEN
1433             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1434             (
1435               l_api_name,
1436               G_PKG_NAME,
1437               'OTHERS',
1438               x_msg_count,
1439               x_msg_data,
1440               '_PROCESS'
1441             );
1442 END create_insinc_streams;
1443 
1444 ---------------------------------------------------------------------------
1445  -- Start of comments
1446  --
1447  -- Procedure Name	: create_ins_streams
1448  -- Description		:It generates Insurance Streams based on passed Insurance record.
1449  -- Business Rules	:
1450  -- Parameters		:
1451  -- Version		: 1.0
1452  -- End of Comments
1453 ---------------------------------------------------------------------------
1454 PROCEDURE   create_insexp_streams(
1455             p_api_version                   IN NUMBER,
1456             p_init_msg_list                IN VARCHAR2 ,
1457             x_return_status                OUT NOCOPY VARCHAR2,
1458             x_msg_count                    OUT NOCOPY NUMBER,
1459             x_msg_data                     OUT NOCOPY VARCHAR2,
1460             p_insexp_tbl                   IN insexp_tbl_type,
1461             p_khr_id			   IN NUMBER,
1462             p_kle_id                       IN NUMBER,
1463             p_date_from                    IN DATE
1464             )IS
1465         l_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
1466 	l_row_notfound			BOOLEAN := TRUE;
1467 	l_msg_count			NUMBER ;
1468 	l_msg_data                      VARCHAR2(2000);
1469 	l_api_version			CONSTANT NUMBER := 1;
1470         l_api_name			CONSTANT VARCHAR2(30) := 'create_insexp_streams';
1471     	l_return_status			VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
1472     	p_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
1473 	x_stmv_rec		        Okl_Streams_Pub.stmv_rec_type;
1474 	p_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
1475 	x_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
1476 	x_khr_status			VARCHAR2 (30) ;
1477 	l_khr_date_from			DATE ;
1478 	l_khr_date_to			DATE ;
1479 	l_insexp_tbl			insexp_tbl_type;
1480 	l_khr_id			NUMBER;
1481 	l_period                        NUMBER;
1482 	l_amount                        NUMBER;
1483     i                   PLS_INTEGER;
1484 
1485     l_pdtv_rec_type  OKL_SETUPPRODUCTS_PVT.pdtv_rec_type ;
1486     l_pdt_parameter_rec OKL_SETUPPRODUCTS_PVT.pdt_parameters_rec_type ;
1487     l_khr_status  VARCHAR2(30);
1488     l_multigaap_flag VARCHAR2(1) ;
1489     x_no_data_found BOOLEAN;
1490 
1491     -- Changes for multi gaap
1492     cursor multi_gaap_flag_cur  IS
1493     select  MULTI_GAAP_YN
1494     from okl_k_headers
1495     WHERE ID  = p_khr_id ;
1496 
1497 
1498     cursor khr_product_cur  IS
1499     select  PDT_ID
1500     from okl_k_headers
1501     WHERE ID  = p_khr_id ;
1502 
1503 
1504    BEGIN
1505                l_insexp_tbl := p_insexp_tbl;
1506                l_khr_id	  := p_khr_id;
1507 ---------------------------------------------------------------------
1508 ----------- generate stream
1509 -------------------------------------------------------------------
1510 -- SET values to retrieve record
1511 p_stmv_rec.khr_id :=  p_khr_id ;
1512 p_stmv_rec.kle_id :=  p_kle_id ;
1513 -- nEW
1514 BEGIN
1515 
1516     select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
1517 
1518 -- NEW
1519    -- Begin : changes for Insurance user defined streams,  bug 3924300
1520 
1521           OKL_STREAMS_UTIL.get_primary_stream_type(p_khr_id,
1522                                                    'INSURANCE_EXPENSE_ACCRUAL',
1523                                                    l_return_status,
1524                                                    p_stmv_rec.sty_id);
1525 
1526     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1527                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1528                        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1529           ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1530                        Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
1531                        RAISE OKC_API.G_EXCEPTION_ERROR;
1532      END IF;
1533 
1534 
1535   -- End : changes for Insurance user defined streams
1536 
1537 EXCEPTION
1538           WHEN NO_DATA_FOUND THEN
1539                 -- store SQL error message on message stack for caller
1540                  OKC_API.set_message(G_APP_NAME,  'OKL_NO_STREAM_TYPE');
1541           WHEN OTHERS THEN
1542                  -- store SQL error message on message stack for caller
1543                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1544         		-- notify caller of an UNEXPECTED error
1545                  l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1546           END ;
1547 
1548 	p_stmv_rec.sgn_code := 'MANL';
1549 	 p_stmv_rec.say_code := 'WORK';
1550 	--p_stmv_rec.say_code := 'CURR';
1551 	p_stmv_rec.active_yn := 'N';
1552 	p_stmv_rec.date_working := SYSDATE;
1553 
1554 
1555   l_return_status :=  genrt_monthly(p_insexp_tbl,p_date_from,x_selv_tbl);
1556 
1557  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1558         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1559  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1560         RAISE OKC_API.G_EXCEPTION_ERROR;
1561  END IF;
1562    p_selv_tbl:= x_selv_tbl;
1563 
1564 
1565  IF (l_return_status = Okc_Api.G_RET_STS_SUCCESS) THEN
1566    -- Create Stream and Stream Elements
1567 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1568   IF(L_DEBUG_ENABLED='Y') THEN
1569     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
1570     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
1571   END IF;
1572 
1573   -- Bug 5408689 : Start
1574   IF(IS_DEBUG_PROCEDURE_ON)
1575   THEN
1576     OKL_DEBUG_PUB.LOG_DEBUG(
1577        L_LEVEL_PROCEDURE
1578       ,L_MODULE
1579       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
1580   END IF;
1581   l_return_status := Okl_Streams_Util.round_streams_amount(
1582                         p_api_version   => p_api_version
1583                        ,p_init_msg_list => p_init_msg_list
1584                        ,x_msg_count     => x_msg_count
1585                        ,x_msg_data      => x_msg_data
1586                        ,p_chr_id        => p_stmv_rec.khr_id
1587                        ,p_selv_tbl      => p_selv_tbl
1588                        ,x_selv_tbl      => x_selv_tbl);
1589   IF(IS_DEBUG_PROCEDURE_ON)
1590   THEN
1591     OKL_DEBUG_PUB.LOG_DEBUG(
1592        L_LEVEL_PROCEDURE
1593       ,L_MODULE
1594       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
1595   END IF;
1596 
1597   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
1598   THEN
1599     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1600   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
1601   THEN
1602     RAISE OKC_API.G_EXCEPTION_ERROR;
1603   END IF;
1604 
1605   -- Store Rounded Streams back into the p_selv_tbl
1606   p_selv_tbl:= x_selv_tbl;
1607   -- Bug 5408689 : End
1608 
1609 
1610   IF(IS_DEBUG_PROCEDURE_ON) THEN
1611     BEGIN
1612         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1613     END;
1614   END IF;
1615    OKL_STREAMS_PUB.create_streams(
1616         p_api_version
1617        ,p_init_msg_list
1618        ,x_return_status
1619        ,x_msg_count
1620        ,x_msg_data
1621        ,p_stmv_rec
1622        ,p_selv_tbl
1623        ,x_stmv_rec
1624        ,x_selv_tbl
1625      );
1626   IF(IS_DEBUG_PROCEDURE_ON) THEN
1627     BEGIN
1628         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1629     END;
1630   END IF;
1631 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1632       l_return_status := x_return_status ;
1633 
1634      	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1635              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1636          ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1637              RAISE OKC_API.G_EXCEPTION_ERROR;
1638   	    END IF;
1639 ---Create another set of stream, if Multi Gaap is enabled
1640 --   1. Get status of contract
1641  l_return_status :=  get_contract_status ( p_khr_id ,l_khr_status );
1642  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1643     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1644  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1645         RAISE OKC_API.G_EXCEPTION_ERROR;
1646  END IF;
1647  IF (l_khr_status = 'ACTIVE' ) THEN
1648  --- if active , get multi gaap enabled from contract header table
1649 
1650    BEGIN
1651 
1652       OPEN  multi_gaap_flag_cur;
1653       FETCH multi_gaap_flag_cur INTO l_multigaap_flag ;
1654 
1655       IF (multi_gaap_flag_cur%NOTFOUND) THEN
1656         l_multigaap_flag := 'N' ;
1657       END IF ;
1658       CLOSE multi_gaap_flag_cur ;
1659     EXCEPTION
1660        WHEN OTHERS THEN
1661                       -- store SQL error message on message stack for caller
1662              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1663              		-- notify caller of an UNEXPECTED error
1664              x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1665              		-- verify that cursor was closed
1666        		IF multi_gaap_flag_cur%ISOPEN THEN
1667        		        CLOSE multi_gaap_flag_cur;
1668              END IF;
1669      END;
1670 
1671  ELSE
1672 
1673 -- if not active call appropriate method to determine
1674   --- get product id associated with the contract
1675      BEGIN
1676 
1677       OPEN  khr_product_cur;
1678       FETCH khr_product_cur INTO l_pdtv_rec_type.id ;
1679       IF (khr_product_cur%NOTFOUND) THEN
1680         l_multigaap_flag := 'N' ;
1681       END IF ;
1682       CLOSE khr_product_cur ;
1683     EXCEPTION
1684        WHEN OTHERS THEN
1685                       -- store SQL error message on message stack for caller
1686              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1687              		-- notify caller of an UNEXPECTED error
1688              x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1689              		-- verify that cursor was closed
1690        		IF khr_product_cur%ISOPEN THEN
1691        		        CLOSE khr_product_cur;
1692              END IF;
1693       END;
1694 -- Start of wraper code generated automatically by Debug code generator for OKL_SETUPPRODUCTS_PVT.Getpdt_parameters
1695   IF(IS_DEBUG_PROCEDURE_ON) THEN
1696     BEGIN
1697         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_SETUPPRODUCTS_PVT.Getpdt_parameters ');
1698     END;
1699   END IF;
1700      OKL_SETUPPRODUCTS_PVT.Getpdt_parameters(
1701         p_api_version
1702        ,p_init_msg_list
1703        ,x_return_status
1704        , x_no_data_found
1705        ,x_msg_count
1706        ,x_msg_data
1707        ,  l_pdtv_rec_type
1708        ,  SYSDATE
1709        ,l_pdt_parameter_rec  );
1710   IF(IS_DEBUG_PROCEDURE_ON) THEN
1711     BEGIN
1712         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_SETUPPRODUCTS_PVT.Getpdt_parameters ');
1713     END;
1714   END IF;
1715 -- End of wraper code generated automatically by Debug code generator for OKL_SETUPPRODUCTS_PVT.Getpdt_parameters
1716 
1717 
1718      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1719         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1720      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1721         RAISE OKC_API.G_EXCEPTION_ERROR;
1722      END IF;
1723 
1724      IF (l_pdt_parameter_rec.reporting_pdt_id is NULL) THEN
1725               l_multigaap_flag := 'N' ;
1726       ELSE
1727               l_multigaap_flag := 'Y' ;
1728       END IF;
1729 
1730  END IF;
1731 
1732 --- if multi gaap enabled , create another set of streams
1733 IF(l_multigaap_flag = 'Y') THEN
1734 
1735    BEGIN
1736 
1737        select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
1738 
1739            -- Begin : changes for Insurance user defined streams,  bug 3924300
1740                 -- call to get the stream type id, change made for insurance user defined streams
1741 
1742                   OKL_STREAMS_UTIL.get_primary_stream_type(p_khr_id,
1743                                                    'INSURANCE_EXPENSE_ACCRUAL',
1744                                                    l_return_status,
1745                                                    p_stmv_rec.sty_id);
1746 
1747                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1748                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1749                        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1750                 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1751                        OKC_API.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
1752                        RAISE OKC_API.G_EXCEPTION_ERROR;
1753                 END IF;
1754 
1755       -- End : changes for Insurance user defined streams
1756    -- nEW
1757    EXCEPTION
1758              WHEN NO_DATA_FOUND THEN
1759                    -- store SQL error message on message stack for caller
1760                     OKC_API.set_message(G_APP_NAME,  'OKL_NO_STREAM_TYPE');
1761              WHEN OTHERS THEN
1762                     -- store SQL error message on message stack for caller
1763                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1764            		-- notify caller of an UNEXPECTED error
1765                     l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1766           END ;
1767 
1768     p_stmv_rec.say_code := 'WORK';
1769 	  p_stmv_rec.active_yn := 'N';
1770     p_stmv_rec.purpose_code := 'REPORT' ;
1771     p_stmv_rec.date_working := SYSDATE;
1772 
1773   -- Bug 5408689 : Start
1774   IF(IS_DEBUG_PROCEDURE_ON)
1775   THEN
1776     OKL_DEBUG_PUB.LOG_DEBUG(
1777        L_LEVEL_PROCEDURE
1778       ,L_MODULE
1779       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
1780   END IF;
1781   l_return_status := Okl_Streams_Util.round_streams_amount(
1782                         p_api_version   => p_api_version
1783                        ,p_init_msg_list => p_init_msg_list
1784                        ,x_msg_count     => x_msg_count
1785                        ,x_msg_data      => x_msg_data
1786                        ,p_chr_id        => p_stmv_rec.khr_id
1787                        ,p_selv_tbl      => p_selv_tbl
1788                        ,x_selv_tbl      => x_selv_tbl);
1789   IF(IS_DEBUG_PROCEDURE_ON)
1790   THEN
1791     OKL_DEBUG_PUB.LOG_DEBUG(
1792        L_LEVEL_PROCEDURE
1793       ,L_MODULE
1794       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
1795   END IF;
1796 
1797   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
1798   THEN
1799     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1800   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
1801   THEN
1802     RAISE OKC_API.G_EXCEPTION_ERROR;
1803   END IF;
1804 
1805   -- Store Rounded Streams back into the p_selv_tbl
1806   p_selv_tbl:= x_selv_tbl;
1807   -- Bug 5408689 : End
1808 
1809 
1810 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1811   IF(IS_DEBUG_PROCEDURE_ON) THEN
1812     BEGIN
1813         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1814     END;
1815   END IF;
1816        OKL_STREAMS_PUB.create_streams(
1817         p_api_version
1818        ,p_init_msg_list
1819        ,x_return_status
1820        ,x_msg_count
1821        ,x_msg_data
1822        ,p_stmv_rec
1823        ,p_selv_tbl
1824        ,x_stmv_rec
1825        ,x_selv_tbl
1826      );
1827   IF(IS_DEBUG_PROCEDURE_ON) THEN
1828     BEGIN
1829         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
1830     END;
1831   END IF;
1832 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
1833 
1834 
1835      	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1836              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1837          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1838              RAISE OKC_API.G_EXCEPTION_ERROR;
1839   	    END IF;
1840 
1841 END IF;
1842 ---need to modify activation process
1843 -- need to modify inactivation process
1844 --- need to check credit and other process
1845 
1846   END IF;
1847 EXCEPTION
1848           WHEN OKC_API.G_EXCEPTION_ERROR THEN
1849             x_return_status := OKC_API.HANDLE_EXCEPTIONS
1850             (
1851               l_api_name,
1852               G_PKG_NAME,
1853               'OKC_API.G_RET_STS_ERROR',
1854               x_msg_count,
1855               x_msg_data,
1856               '_PROCESS'
1857             );
1858           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1859             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1860             (
1861               l_api_name,
1862               G_PKG_NAME,
1863               'OKC_API.G_RET_STS_UNEXP_ERROR',
1864               x_msg_count,
1865               x_msg_data,
1866               '_PROCESS'
1867             );
1868           WHEN OTHERS THEN
1869             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1870             (
1871               l_api_name,
1872               G_PKG_NAME,
1873               'OTHERS',
1874               x_msg_count,
1875               x_msg_data,
1876               '_PROCESS'
1877             );
1878          END create_insexp_streams ;
1879 
1880 
1881 
1882  ---------------------------------------------------------------------------
1883  -- FUNCTION validate_contract_line
1884  ---------------------------------------------------------------------------
1885  --FUNCTION validate_contract_line (
1886  FUNCTION validate_contract_line (
1887             p_ipyv_rec IN ipyv_rec_type
1888           ) RETURN VARCHAR2 IS
1889             l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1890             l_kle_id 			 NUMBER	     :=  p_ipyv_rec.kle_id;
1891             l_dummy_var VARCHAR2(1) := '?';
1892             CURSOR okc_kle_csr IS
1893   	        SELECT 'x'
1894   	        FROM  OKL_K_LINES
1895        		WHERE  OKL_K_LINES.ID = l_kle_id;
1896           BEGIN
1897             OPEN  okc_kle_csr;
1898            	FETCH okc_kle_csr INTO l_dummy_var ;
1899             CLOSE okc_kle_csr ;
1900            	   	-- still set to default means data was not found
1901     	    IF ( l_dummy_var = '?' ) THEN
1902   	        OKC_API.set_message(g_app_name,
1903   	     			    'OKL_INVALID_CONTRACT_LINE');
1904   	     	l_return_status := OKC_API.G_RET_STS_ERROR;
1905   	     END IF;
1906            RETURN(l_return_status);
1907            EXCEPTION
1908              WHEN OTHERS THEN
1909                  -- store SQL error message on message stack for caller
1910                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
1911         		-- notify caller of an UNEXPECTED error
1912         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1913         		-- verify that cursor was closed
1914       		IF okc_kle_csr%ISOPEN THEN
1915   		     CLOSE okc_kle_csr;
1916       		END IF;
1917         	RETURN(l_return_status);
1918         END validate_contract_line;
1919   --------------------------------------------------------------------------
1920    ------validate_amount_due
1921   ---------------------------------------------------------------------
1922    PROCEDURE validate_amount_due(x_return_status OUT NOCOPY VARCHAR2,
1923                  p_ipyv_rec IN ipyv_rec_type) IS
1924         l_amount_due                NUMBER;
1925         BEGIN
1926         x_return_status	            := Okc_Api.G_RET_STS_SUCCESS;
1927         l_amount_due := p_ipyv_rec.premium ;
1928         --data is required
1929         IF (l_amount_due) IS NULL  OR (l_amount_due = OKC_API.G_MISS_NUM) THEN
1930         Okc_Api.set_message(p_app_name       => G_APP_NAME,
1931                              p_msg_name       => 'OKL_REQUIRED_VALUE',
1932                              p_token1         => G_COL_NAME_TOKEN,
1933                              p_token1_value   => 'Premium');
1934          -- Notify caller of  an error
1935           x_return_status := Okc_Api.G_RET_STS_ERROR;
1936         ELSE
1937 	      x_return_status  := Okl_Util.check_domain_amount(l_amount_due);
1938 		  IF (x_return_status = Okc_Api.G_RET_STS_ERROR) THEN
1939 	   	   		Okc_Api.set_message(p_app_name 	    => G_APP_NAME,
1940 		   	                        p_msg_name           => 'OKL_POSITIVE_NUMBER',
1941 		   	                        p_token1             => G_COL_NAME_TOKEN,
1942 		   	                        p_token1_value       => 'Premium'
1943 		   	                                  );
1944           ELSIF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
1945 	        		RAISE G_EXCEPTION_HALT_VALIDATION;
1946      	  END IF;
1947        END IF;
1948        EXCEPTION
1949           WHEN OTHERS THEN
1950             -- store SQL error  message on message stack for caller
1951    	       Okc_Api.set_message(p_app_name => G_APP_NAME,
1952 				    p_msg_name => G_UNEXPECTED_ERROR,
1953 				    p_token1 => G_SQLCODE_TOKEN,
1954 				    p_token1_value => SQLCODE,
1955 				    p_token2 => G_SQLERRM_TOKEN,
1956 				    p_token2_value => SQLERRM
1957 			);
1958             -- Notify the caller of an unexpected error
1959             x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR;
1960    END validate_amount_due;
1961  -------------------------------------------------------------------------------
1962   -- Procedure Generate Lump_Sum
1963   -------------------------------------------------------------------------------
1964 FUNCTION genrt_lump_sum(p_ipyv_rec IN ipyv_rec_type,
1965          x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type) RETURN VARCHAR2 IS
1966    l_date_from			DATE;
1967    l_date_to			DATE;
1968    l_due_date			DATE;
1969    l_ins_term                   NUMBER;
1970    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
1971    l_amount_due                 NUMBER;
1972   BEGIN
1973    l_date_from := p_ipyv_rec.date_from;
1974    l_date_to := p_ipyv_rec.date_to;
1975    l_ins_term := MONTHS_BETWEEN(l_date_to,l_date_from);
1976    l_due_date := l_date_from;
1977    l_amount_due := p_ipyv_rec.premium ;
1978 
1979     -- Populate the stream element table type
1980                     x_selv_tbl(1).stream_element_date := l_due_date;
1981                     x_selv_tbl(1).amount := l_amount_due;
1982                     x_selv_tbl(1).se_line_number := 1;
1983                   l_return_status := Okc_Api.G_RET_STS_SUCCESS;
1984             RETURN (l_return_status);
1985 END genrt_lump_sum;
1986 -------------------------------------------------------------------------------
1987 -- Procedure Generate Monthly
1988 -------------------------------------------------------------------------------
1989 FUNCTION genrt_monthly(p_ipyv_rec IN ipyv_rec_type,x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type)
1990 			RETURN VARCHAR2 IS
1991    l_date_from			DATE;
1992    l_date_to			DATE;
1993    l_ins_term                   NUMBER;
1994    l_premium			NUMBER;
1995    l_bill_periods		NUMBER;
1996    l_monthly_pmnt		NUMBER;
1997    l_due_date			DATE;
1998    l_amount_due			NUMBER;
1999    i				    PLS_INTEGER;
2000    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2001  BEGIN
2002    l_date_from := p_ipyv_rec.date_from;
2003    l_date_to := p_ipyv_rec.date_to;
2004     --Check if date_from and date_to difference is greater than a month
2005    IF (l_date_to  - l_date_from>= 30) THEN
2006 
2007      l_ins_term := MONTHS_BETWEEN(l_date_to,l_date_from);
2008 
2009       l_premium := p_ipyv_rec.premium;
2010       l_bill_periods := l_ins_term ;
2011       l_due_date := l_date_from;
2012        l_amount_due :=l_premium;
2013 	    i := 1;
2014        -- Populate the stream element table type
2015               IF(i > 0)THEN
2016               LOOP
2017                  x_selv_tbl(i).stream_element_date := l_due_date;
2018                  x_selv_tbl(i).amount := l_amount_due;
2019                  x_selv_tbl(i).se_line_number := i;
2020  		 l_due_date := ADD_MONTHS(l_due_date,1);
2021                  --EXIT WHEN l_due_date >= l_date_to;
2022                  EXIT WHEN i >= l_bill_periods;
2023 				 i := i + 1;
2024               END LOOP;
2025 
2026            END IF;
2027   ELSE
2028 
2029       --If less than one month charge for 1 month
2030       l_premium := p_ipyv_rec.premium;
2031       l_bill_periods := 1 ;
2032       l_due_date := l_date_from;
2033       l_amount_due :=l_premium;
2034 
2035       x_selv_tbl(1).stream_element_date := l_due_date;
2036       x_selv_tbl(1).amount := l_amount_due;
2037       x_selv_tbl(1).se_line_number := 1;
2038 
2039                  --EXIT WHEN l_due_date >= l_date_to;
2040 
2041         --- Set message for period less than one month
2042        --l_return_status := Okc_Api.G_RET_STS_ERROR;
2043  END IF;
2044   RETURN(l_return_status);
2045 END genrt_monthly;
2046 -------------------------------------------------------------------------------
2047 -- Procedure Generate Bi-Monthly
2048 -------------------------------------------------------------------------------
2049 FUNCTION genrt_bi_monthly(p_ipyv_rec IN ipyv_rec_type,x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type)RETURN VARCHAR2 IS
2050    l_date_from			DATE;
2051    l_date_to			DATE;
2052    l_due_date			DATE;
2053    l_ins_term                   NUMBER;
2054    l_premium                    NUMBER;
2055    l_bimthl_pmnt		NUMBER;
2056    l_bill_periods               NUMBER;
2057    l_amount_due                 NUMBER;
2058    i		                NUMBER;
2059    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2060    BEGIN
2061    l_date_from := p_ipyv_rec.date_from;
2062    l_date_to := p_ipyv_rec.date_to;
2063     --Check if date_from and date_to difference is greater than a month
2064    IF (l_date_to  - l_date_from>= 30)  THEN
2065      l_ins_term := MONTHS_BETWEEN(l_date_to,l_date_from);
2066    	IF (l_ins_term IS NULL) OR (l_ins_term = okc_api.G_MISS_NUM) THEN
2067    	  l_return_status := Okc_Api.G_RET_STS_ERROR;
2068        Okc_Api.set_message(p_app_name => G_APP_NAME,
2069   				    p_msg_name => 'OKL_INVALID_VALUE',
2070   				    p_token1 => 'COL_NAME1',
2071                     p_token1_Value => 'Payment Frequency'
2072   			);
2073      	ELSE
2074      	  l_return_status := Okc_Api.G_RET_STS_ERROR;
2075    	  l_premium := p_ipyv_rec.premium;
2076    	  l_bill_periods := l_ins_term / 2;
2077    	   l_due_date := l_date_from;
2078        l_amount_due :=l_premium;
2079        i := 1;
2080           -- Populate the stream element table type
2081                      IF (i > 0) THEN
2082                         LOOP
2083                            x_selv_tbl(i).stream_element_date := l_due_date;
2084                            x_selv_tbl(i).amount := l_amount_due;
2085                            x_selv_tbl(i).se_line_number := i;
2086                            --l_due_date := LAST_DAY(ADD_MONTHS(ADD_MONTHS(l_date_from,2),-1));
2087                            l_due_date := ADD_MONTHS(l_due_date,2);
2088                            --EXIT WHEN l_due_date >= l_date_to;
2089                         EXIT WHEN i >= l_bill_periods;
2090                            i := i + 1;
2091                  	    END LOOP;
2092                      END IF;
2093            --END IF;
2094          END IF;
2095       ELSE
2096         --- Set message for period less than one month
2097         l_return_status := Okc_Api.G_RET_STS_ERROR;
2098  END IF;
2099    RETURN(l_return_status);
2100 END genrt_bi_monthly;
2101 -------------------------------------------------------------------------------
2102 -- Procedure Generate Half-Yearly
2103 -------------------------------------------------------------------------------
2104 FUNCTION genrt_half_yearly(p_ipyv_rec IN ipyv_rec_type,
2105         x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type) RETURN VARCHAR2 IS
2106    l_date_from			DATE;
2107    l_date_to			DATE;
2108    l_due_date			DATE;
2109    l_amount_due                   NUMBER;
2110    l_ins_term                   NUMBER;
2111    l_premium			NUMBER;
2112    l_bill_periods 		NUMBER;
2113    l_hlfyrly_pmnt		NUMBER;
2114    i				NUMBER;
2115    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2116    BEGIN
2117    l_date_from := p_ipyv_rec.date_from;
2118    l_date_to := p_ipyv_rec.date_to;
2119    -- Check if the date_to and date _from are greater than six months
2120    -- gboomina Bug 4746881 - Changed - Round of the months_between to calculate amount per month.
2121    -- gboomina Bug 4746881 Start
2122    l_ins_term := ROUND(MONTHS_BETWEEN(l_date_to,l_date_from));
2123    -- gboomina Bug 4746881 End
2124 
2125  --bug:3945995
2126    /*
2127    IF (round(l_ins_term) < 6) THEN
2128        l_return_status := Okc_Api.G_RET_STS_ERROR;
2129         Okc_Api.set_message(p_app_name => G_APP_NAME,
2130   				    p_msg_name => 'OKL_INVALID_VALUE',
2131   				    p_token1 => 'COL_NAME',
2132                     p_token1_Value => 'Payment Frequency');
2133    ELSE
2134    */
2135       l_premium := p_ipyv_rec.premium;
2136       l_bill_periods := l_ins_term/6; -- TBD check for whole numbers and no fractions
2137        l_due_date := l_date_from;
2138        l_amount_due :=l_premium;
2139        i :=1;
2140               -- Populate the stream element table type
2141        IF (i > 0) THEN
2142           LOOP
2143            x_selv_tbl(i).stream_element_date := l_due_date;
2144            ---Bug fix 3871319 start --
2145            IF (l_ins_term >= 6) THEN
2146             x_selv_tbl(i).amount := l_amount_due;
2147             l_due_date := ADD_MONTHS(l_due_date,6);
2148             l_ins_term := l_ins_term - 6;
2149            ELSE
2150              l_amount_due := (l_amount_due/6)* l_ins_term;
2151              x_selv_tbl(i).amount := l_amount_due;
2152              x_selv_tbl(i).stream_element_date := l_due_date;
2153            END IF;
2154            ---Bug fix 3871319 End --
2155            x_selv_tbl(i).se_line_number := i;
2156            EXIT WHEN i >= l_bill_periods;
2157            i := i + 1;
2158           END LOOP;
2159          END IF;
2160    /* END IF; */ --bug:3945995
2161 
2162    RETURN(l_return_status);
2163 END genrt_half_yearly;
2164 -------------------------------------------------------------------------------
2165 -- Procedure Generate Quarterly
2166 -------------------------------------------------------------------------------
2167 FUNCTION genrt_quarterly(p_ipyv_rec IN ipyv_rec_type,x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type) RETURN VARCHAR2 IS
2168    l_date_from			DATE;
2169    l_date_to			DATE;
2170    l_due_date			DATE;
2171    l_amount_due                 NUMBER;
2172    l_ins_term                   NUMBER;
2173    l_premium			NUMBER;
2174    l_bill_periods 		NUMBER;
2175    l_qrtrly_pmnt		NUMBER;
2176    i				NUMBER;
2177    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2178   BEGIN
2179    l_date_from := p_ipyv_rec.date_from;
2180    l_date_to := p_ipyv_rec.date_to;
2181    -- Check if the date_to and date_from are greater than six months
2182    -- gboomina Bug 4746881 - Changed - Round of the months_between to calculate amount per month.
2183    -- gboomina Bug 4746881 Start
2184    l_ins_term := ROUND(MONTHS_BETWEEN(l_date_to,l_date_from));
2185    -- gboomina Bug 4746881 End
2186 
2187  --bug:3945995
2188    /*
2189    IF(round(l_ins_term) < 3) THEN
2190 
2191       l_return_status := Okc_Api.G_RET_STS_ERROR;
2192        Okc_Api.set_message(p_app_name => G_APP_NAME,
2193   				    p_msg_name => 'OKL_INVALID_VALUE',
2194   				    p_token1 => 'COL_NAME',
2195                     p_token1_Value => 'Payment Frequency'
2196   			);
2197    ELSE
2198    */
2199 
2200       l_premium := p_ipyv_rec.premium;
2201       l_bill_periods := l_ins_term/3 ;
2202       l_due_date := l_date_from;
2203       l_amount_due :=l_premium;
2204       i := 1;
2205 
2206        -- Populate the stream element table type
2207        IF (i > 0) THEN
2208            LOOP
2209               x_selv_tbl(i).stream_element_date := l_due_date;
2210               --Bug Fix 3871319 Start --
2211               IF (l_ins_term >= 3) THEN
2212                x_selv_tbl(i).amount := l_amount_due;
2213                l_due_date := ADD_MONTHS(l_due_date,3);
2214                l_ins_term := l_ins_term - 3 ;
2215               ELSE
2216                l_amount_due := (l_amount_due/3)* l_ins_term ;
2217                x_selv_tbl(i).amount := l_amount_due;
2218                x_selv_tbl(i).stream_element_date := l_due_date;
2219               END IF;
2220               --Bug Fix 3871319 END  --
2221               x_selv_tbl(i).se_line_number := i;
2222               EXIT WHEN i >= l_bill_periods;
2223               i := i + 1;
2224             END LOOP;
2225 
2226         END IF;
2227 
2228    /* END IF;*/  --bug:3945995
2229    RETURN(l_return_status);
2230 END genrt_quarterly;
2231 -------------------------------------------------------------------------------
2232 -- Procedure Generate Yearly
2233 -------------------------------------------------------------------------------
2234 FUNCTION genrt_yearly(p_ipyv_rec IN ipyv_rec_type,x_selv_tbl OUT NOCOPY Okl_Streams_Pub.selv_tbl_type)RETURN VARCHAR2 IS
2235    l_date_from			DATE;
2236    l_date_to			DATE;
2237    l_due_date			DATE;
2238    l_amount_due                 NUMBER;
2239    l_ins_term                   NUMBER;
2240    l_premium			NUMBER;
2241    l_bill_periods 		NUMBER;
2242    l_yearly_pmnt		NUMBER;
2243    i				NUMBER;
2244    l_return_status		VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2245  BEGIN
2246    l_date_from := p_ipyv_rec.date_from;
2247    l_date_to := p_ipyv_rec.date_to;
2248    -- Check if the date_to and date_from are greater than six months
2249    -- gboomina Bug 4746881 - Changed - Round of the months_between to calculate amount per month.
2250    -- gboomina Bug 4746881 Start
2251    l_ins_term := ROUND(MONTHS_BETWEEN(l_date_to,l_date_from));
2252    -- gboomina Bug 4746881 End
2253 
2254  --bug:3945995
2255    /*
2256    IF(round(l_ins_term) < 12) THEN
2257       l_return_status := Okc_Api.G_RET_STS_ERROR;
2258       Okc_Api.set_message(p_app_name => G_APP_NAME,
2259   				    p_msg_name => 'OKL_INVALID_VALUE',
2260   				    p_token1 => 'COL_NAME',
2261                     p_token1_Value => 'Payment Frequency'
2262   			);
2263    ELSE
2264    */
2265       l_premium := p_ipyv_rec.premium;
2266       l_bill_periods := l_ins_term/12 ;-- TBD check for whole numbers and no fractions
2267        l_due_date := l_date_from;
2268        l_amount_due :=l_premium;
2269        i := 1;
2270        -- Populate the stream element table type
2271                   IF (i > 0) THEN
2272                      LOOP
2273                         x_selv_tbl(i).stream_element_date := l_due_date;
2274                         -- smoduga Bug Fix 3871319 Start--
2275                         IF (l_ins_term >= 12)THEN
2276                          x_selv_tbl(i).amount := l_amount_due;
2277                          l_ins_term := ABS(l_ins_term - 12);
2278                          l_due_date :=ADD_MONTHS(l_due_date,12);
2279                         ELSE
2280                          l_amount_due := (l_amount_due/12)* l_ins_term;
2281                          x_selv_tbl(i).amount := l_amount_due;
2282                          x_selv_tbl(i).stream_element_date := l_due_date;
2283                         END IF;
2284                         -- smoduga Bug Fix 3871319 End --
2285                         x_selv_tbl(i).se_line_number := i;
2286                      EXIT WHEN i >= l_bill_periods;
2287                         i := i+ 1 ;
2288               	    END LOOP;
2289             	 END IF;
2290        --END IF;
2291   /* END IF;*/  --bug:3945995
2292    RETURN(l_return_status);
2293 END genrt_yearly;
2294 ---------------------------------------------------------------------------
2295   -- Start of comments
2296   --
2297   -- FunctionName	: validate_date_from
2298   -- Description	:
2299   -- Business Rules	:
2300   -- Parameters		:
2301   -- Version		: 1.0
2302   -- End of Comments
2303   ---------------------------------------------------------------------------
2304      FUNCTION validate_date_from(p_date_from IN DATE )RETURN VARCHAR2 IS
2305      --l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2306      --initialize the  return status
2307      x_return_status	            VARCHAR2(1)	:= Okc_Api.G_RET_STS_SUCCESS;
2308        BEGIN
2309          --data is required
2310          IF p_date_from = Okc_Api.G_MISS_DATE OR
2311             p_date_from IS NULL
2312          THEN
2313            Okc_Api.set_message(p_app_name     => G_APP_NAME,
2314                                p_msg_name     => G_REQUIRED_VALUE,
2315                                p_token1       => G_COL_NAME_TOKEN,
2316                                p_token1_value => 'Policy Effective From');
2317            --Notify caller of  an error
2318            x_return_status := Okc_Api.G_RET_STS_ERROR;
2319           END IF;
2320           RETURN(x_return_status);
2321         EXCEPTION
2322             WHEN OTHERS THEN
2323               -- store SQL error  message on message stack for caller
2324   	    Okc_Api.set_message(p_app_name => G_APP_NAME,
2325   				    p_msg_name => G_UNEXPECTED_ERROR,
2326   				    p_token1 => G_SQLCODE_TOKEN,
2327   				    p_token1_value => SQLCODE,
2328   				    p_token2 => G_SQLERRM_TOKEN,
2329   				    p_token2_value => SQLERRM
2330   			);
2331               -- Notify the caller of an unexpected error
2332               x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR;
2333           RETURN(x_return_status);
2334     END validate_date_from;
2335   ---------------------------------------------------------------------------
2336   -- Start of comments
2337   --
2338   -- FUNCTIONName	: validate_date_to
2339   -- Description		:
2340   -- Business Rules	:
2341   -- Parameters		:
2342   -- Version		: 1.0
2343   -- End of Comments
2344   ---------------------------------------------------------------------------
2345      FUNCTION  validate_date_to(p_date_to IN DATE) RETURN VARCHAR2 IS
2346        --l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2347        --initialize the  return status
2348        x_return_status	            VARCHAR2(1)	:= Okc_Api.G_RET_STS_SUCCESS;
2349        BEGIN
2350          --data is required
2351          IF p_date_to = Okc_Api.G_MISS_DATE OR
2352             p_date_to IS NULL
2353          THEN
2354            Okc_Api.set_message(p_app_name     => G_APP_NAME,
2355                                p_msg_name     => G_REQUIRED_VALUE,
2356                                p_token1       => G_COL_NAME_TOKEN,
2357                                p_token1_value => 'Policy Effective To');
2358            --Notify caller of  an error
2359            x_return_status := Okc_Api.G_RET_STS_ERROR;
2360           END IF;
2361            RETURN(x_return_status);
2362         EXCEPTION
2363             WHEN OTHERS THEN
2364               -- store SQL error  message on message stack for caller
2365   	    Okc_Api.set_message(p_app_name => G_APP_NAME,
2366   				    p_msg_name => G_UNEXPECTED_ERROR,
2367   				    p_token1 => G_SQLCODE_TOKEN,
2368   				    p_token1_value => SQLCODE,
2369   				    p_token2 => G_SQLERRM_TOKEN,
2370   				    p_token2_value => SQLERRM
2371   			);
2372               -- Notify the caller of an unexpected error
2373               x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR;
2374               RETURN(x_return_status);
2375     END validate_date_to;
2376 ---------------------------------------------------------------------------
2377 --Procedure validate_insurance_term
2378 ----------------------------------------------------------------------------
2379 FUNCTION validate_insurance_term (
2380           p_date_from	IN DATE,
2381           p_date_to 	IN DATE ,
2382           p_khr_date_from IN DATE,
2383           p_khr_date_to IN DATE ) RETURN VARCHAR2 IS
2384           x_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2385           l_policy_term			 NUMBER;
2386           l_khr_term			 NUMBER;
2387           l_ins_term			 NUMBER;
2388         BEGIN
2389            --first check the validity of dates from Policy
2390            --Validate whether start date is less than the end date
2391 	          x_return_status:= OKL_UTIL.check_from_to_date_range( p_date_from  ,p_date_to );
2392 	             IF (x_return_status = Okc_Api.G_RET_STS_ERROR) THEN
2393 	                 Okc_Api.set_message(
2394 	                                     p_app_name     => g_app_name,
2395 	 			             p_msg_name     => 'OKL_GREATER_THAN',
2396 	 			             p_token1       => 'COL_NAME1',
2397 	 			             p_token1_value => 'Policy Effective To',
2398 	 			             p_token2       => 'COL_NAME2',
2399 	 			             p_token2_value => 'Policy Effective From'
2400 	 			            );
2401                       RETURN(x_return_status);
2402 	                IF(x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
2403                        -- store SQL error message on message stack for caller
2404                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,
2405                                         G_SQLERRM_TOKEN, SQLERRM);
2406 	                  RETURN(x_return_status);
2407 	                END IF;
2408 	             END IF;
2409          -- calculate the time period between start date and end date
2410               l_policy_term := MONTHS_BETWEEN(p_date_to,p_date_from);
2411                  -- Check the contarct term is greater than policy term
2412               l_khr_term := MONTHS_BETWEEN(p_khr_date_to,p_khr_date_from);
2413 	 	      x_return_status:= OKL_UTIL.check_from_to_number_range( l_policy_term
2414 	 	                                        , l_khr_term);
2415 	 	            IF (x_return_status = Okc_Api.G_RET_STS_ERROR) THEN
2416 	 	                 Okc_Api.set_message(
2417 	 	                         p_app_name     => g_app_name,
2418 	 	 			             p_msg_name     => 'OKL_GREATER_THAN',
2419 	 	 			             p_token1       => 'COL_NAME1',
2420 	 	 			             p_token1_value => 'Policy Term',
2421 	 	 			             p_token2       => 'COL_NAME2',
2422 	 	 			             p_token2_value => 'Contract Term'
2423 	 	 			             );
2424                          RETURN(x_return_status);
2425 	 	             IF(x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
2426                     -- store SQL error message on message stack for caller
2427                         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,
2428                                     G_SQLERRM_TOKEN, SQLERRM);
2429 	 	                  RETURN(x_return_status);
2430 	 	             END IF;
2431 	 	           END IF;
2432          -- check for effective date_to is in between the effective date_from and date-to
2433          -- of the contract
2434            IF (p_date_from < p_khr_date_from) OR (p_date_from >= p_khr_date_to) THEN
2435                -- store SQL error message on message stack for caller
2436               Okc_Api.set_message( p_app_name     => g_app_name,
2437 	 			                   p_msg_name     => G_INVALID_INSURANCE_TERM );
2438                x_return_status := Okc_Api.G_RET_STS_ERROR;
2439                RETURN(x_return_status);
2440            ELSIF (p_date_to <= p_khr_date_from) OR (p_date_to > p_khr_date_to)THEN
2441                              Okc_Api.set_message( p_app_name     => g_app_name,
2442 	 			                                  p_msg_name     => G_INVALID_INSURANCE_TERM );
2443                x_return_status := Okc_Api.G_RET_STS_ERROR;
2444                RETURN(x_return_status);
2445            END IF;
2446       RETURN(x_return_status);
2447       END validate_insurance_term;
2448 -------------------------------------------------------
2449 ------- get_contract_term
2450 ------------------------------------------------------
2451        PROCEDURE get_contract_term(p_khr_id IN NUMBER,
2452                                      x_date_from OUT NOCOPY DATE,
2453                                      x_date_to   OUT NOCOPY DATE,
2454                                      x_return_status OUT NOCOPY VARCHAR2)
2455                                       IS
2456               l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2457               CURSOR okc_k_term_csr(p_khr_id  IN NUMBER) IS
2458        	        SELECT START_DATE,END_DATE
2459        	        FROM  OKC_K_HEADERS_V
2460               WHERE  OKC_K_HEADERS_V.ID = p_khr_id;
2461                BEGIN
2462                   x_return_status := l_return_status;
2463                  OPEN  okc_k_term_csr(p_khr_id);
2464                    FETCH okc_k_term_csr INTO x_date_from, x_date_to ;
2465                    IF (okc_k_term_csr%NOTFOUND) THEN
2466                      OKC_API.set_message(G_APP_NAME, G_INVALID_INSURANCE_TERM );
2467                      x_return_status := Okc_Api.G_RET_STS_ERROR;
2468                    END IF ;
2469                  CLOSE okc_k_term_csr ;
2470                 EXCEPTION
2471                   WHEN OTHERS THEN
2472                       -- store SQL error message on message stack for caller
2473                       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2474              		-- notify caller of an UNEXPECTED error
2475              		x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2476              		-- verify that cursor was closed
2477        		      IF okc_k_term_csr%ISOPEN THEN
2478        		        CLOSE okc_k_term_csr;
2479        		      END IF;
2480              END get_contract_term;
2481 ---------------------------------------------------------------------------
2482 -- FUNCTION chk_contract_status
2483 ---------------------------------------------------------------------------
2484   PROCEDURE chk_contract_status (
2485            p_khr_id IN  NUMBER,
2486            x_contract_status OUT NOCOPY VARCHAR2,
2487            x_return_status OUT NOCOPY VARCHAR2
2488          )  IS
2489            l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2490            l_contract_number              VARCHAR2(120);
2491            l_status                       VARCHAR2(80);
2492            --p_contract_status VARCHAR2(1):= '?';
2493            CURSOR okc_k_status_csr IS
2494  	           SELECT STE_CODE
2495 	        FROM  OKC_K_HEADERS_V KHR , OKC_STATUSES_B OST
2496            WHERE  KHR.ID =  p_khr_id
2497               AND KHR.STS_CODE = OST.CODE ;
2498 
2499 
2500          BEGIN
2501            x_return_status := l_return_status;
2502            OPEN  okc_k_status_csr;
2503           	FETCH okc_k_status_csr INTO x_contract_status ;
2504             -- NEW
2505             IF ( okc_k_status_csr%NOTFOUND) THEN
2506                     -- Fix for 3745151
2507                    OKC_API.set_message('OKL',
2508 	        	g_no_parent_record,
2509 			g_col_name_token,
2510 			'ste_code',
2511 		 	g_child_table_token ,
2512 			'OKC_K_HEADERS_V',
2513 			g_parent_table_token ,
2514 			'OKC_STATUSES_B');
2515             END IF;
2516            CLOSE okc_k_status_csr ;
2517           EXCEPTION
2518             WHEN OTHERS THEN
2519                 -- store SQL error message on message stack for caller
2520                 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,
2521                        G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2522        		-- notify caller of an UNEXPECTED error
2523        		x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2524        		-- verify that cursor was closed
2525  		IF okc_k_status_csr%ISOPEN THEN
2526  		   CLOSE okc_k_status_csr;
2527  		END IF;
2528        END chk_contract_status;
2529 -------------------------------------------------------------------------------
2530 ---------------------------------------------------------------------------
2531 -- FUNCTION validate_khr_id
2532 ---------------------------------------------------------------------------
2533    FUNCTION validate_khr_id (
2534             p_ipyv_rec IN ipyv_rec_type
2535           ) RETURN VARCHAR2 IS
2536             l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2537             l_khr_id 			 NUMBER	     :=  p_ipyv_rec.khr_id;
2538             l_dummy_var VARCHAR2(1) := '?';
2539             CURSOR okc_khr_csr IS
2540   	        SELECT 'x'
2541   	        FROM  OKL_K_HEADERS_V
2542          		WHERE  OKL_K_HEADERS_V.ID = l_khr_id;
2543           BEGIN
2544             OPEN  okc_khr_csr;
2545            	FETCH okc_khr_csr INTO l_dummy_var ;
2546             CLOSE okc_khr_csr ;
2547            	 		     	-- still set to default means data was not found
2548   	    IF ( l_dummy_var = '?' ) THEN
2549   	        OKC_API.set_message(g_app_name,
2550   	     			    p_msg_name     => G_REQUIRED_VALUE,
2551                         p_token1       => G_COL_NAME_TOKEN,
2552                         p_token1_value => 'Contract Number');
2553   	     	l_return_status := OKC_API.G_RET_STS_ERROR;
2554   	     END IF;
2555            RETURN(l_return_status);
2556            EXCEPTION
2557              WHEN OTHERS THEN
2558                  -- store SQL error message on message stack for caller
2559                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2560         		-- notify caller of an UNEXPECTED error
2561         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2562         		-- verify that cursor was closed
2563   		      IF okc_khr_csr%ISOPEN THEN
2564   		         CLOSE okc_khr_csr;
2565   		      END IF;
2566             	RETURN(l_return_status);
2567         END validate_khr_id;
2568 --------------------------------------------
2569 ---------------------------------------------------------------------------
2570  -- Start of comments
2571  --
2572  -- Procedure Name	: create_ins_streams
2573  -- Description		:It generates Insurance Streams based on passed Insurance record.
2574  -- Business Rules	:
2575  -- Parameters		:
2576  -- Version		: 1.0
2577  -- End of Comments
2578 ---------------------------------------------------------------------------
2579 PROCEDURE   create_ins_streams(
2580             p_api_version                   IN NUMBER,
2581             p_init_msg_list                IN VARCHAR2 ,
2582             x_return_status                OUT NOCOPY VARCHAR2,
2583             x_msg_count                    OUT NOCOPY NUMBER,
2584             x_msg_data                     OUT NOCOPY VARCHAR2,
2585             p_ipyv_rec                     IN ipyv_rec_type
2586             )IS
2587          	l_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
2588 	l_row_notfound			BOOLEAN := TRUE;
2589 	l_msg_count			NUMBER ;
2590 	l_msg_data                      VARCHAR2(2000);
2591 	l_api_version			CONSTANT NUMBER := 1;
2592         l_api_name			CONSTANT VARCHAR2(30) := 'create_ins_streams';
2593     	l_return_status			VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2594     	p_stmv_rec			Okl_Streams_Pub.stmv_rec_type;
2595 	x_stmv_rec		        Okl_Streams_Pub.stmv_rec_type;
2596 	p_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
2597 	x_selv_tbl			Okl_Streams_Pub.selv_tbl_type;
2598 	x_khr_status			VARCHAR2 (30) ;
2599 	l_khr_date_from			DATE ;
2600 	l_khr_date_to			DATE ;
2601 	l_ipyv_rec			Okl_Ipy_Pvt.ipyv_rec_type;
2602 	l_khr_id			NUMBER;
2603    BEGIN
2604                l_ipyv_rec := p_ipyv_rec;
2605                l_khr_id	  := l_ipyv_rec.khr_id;
2606 		l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2607                                                   G_PKG_NAME,
2608                                                   p_init_msg_list,
2609                                                           l_api_version,
2610                                                           p_api_version,
2611                                                           '_PROCESS',
2612                                                           l_return_status);
2613             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2614               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2615             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2616               RAISE OKC_API.G_EXCEPTION_ERROR;
2617             END IF;
2618 ---------------------------------------------------------------------------
2619 -- VALIDATE CONTRACT HEADER
2620 ---------------------------------------------------------------------------
2621    l_return_status := validate_khr_id(p_ipyv_rec);
2622   		----------------------
2623 
2624 		---------------------------------
2625    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2626           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2627        ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2628           RAISE OKC_API.G_EXCEPTION_ERROR;
2629     END IF;
2630 -------------------------------------------------------------------------
2631 ---- Check for Status of Contract
2632 ---------------------------------------------------------------------------
2633   --l_return_status :=chk_contract_status(l_ipyv_rec.khr_id, x_khr_status);
2634     chk_contract_status(l_ipyv_rec.khr_id, x_khr_status,x_return_status);
2635     l_return_status := x_return_status;
2636    		----------------------
2637 
2638 		---------------------------------
2639   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2640        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2641   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2642        RAISE OKC_API.G_EXCEPTION_ERROR;
2643   END IF;
2644    IF (x_khr_status = 'CANCELED' ) OR (x_khr_status = 'DELETED' ) OR (x_khr_status = 'EXPIRED' ) THEN
2645       OKC_API.set_message(G_APP_NAME,'OKL_INS_K_NOT_ACTIVE' );
2646 	  RAISE OKC_API.G_EXCEPTION_ERROR;
2647    END IF ;
2648    -- get the contract term duration
2649     l_khr_id := l_ipyv_rec.khr_id;
2650    --l_return_status := get_insurance_term(l_khr_id,l_khr_date_from,l_khr_date_to,x_return_status);
2651      get_contract_term(l_khr_id,l_khr_date_from,l_khr_date_to,x_return_status);
2652      l_return_status := x_return_status;
2653       		----------------------
2654 
2655 		---------------------------------
2656     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2657            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2658     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2659            RAISE OKC_API.G_EXCEPTION_ERROR;
2660     END IF;
2661 -------------------------------------------------------------------------
2662 ---- Check for date_to
2663 ---------------------------------------------------------------------------
2664 l_return_status :=	validate_date_to(l_ipyv_rec.date_to);
2665       		----------------------
2666 
2667 		---------------------------------
2668     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2669        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2670     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2671        RAISE OKC_API.G_EXCEPTION_ERROR;
2672     END IF;
2673 -------------------------------------------------------------------------
2674 ---- Check for date_from
2675 ---------------------------------------------------------------------------
2676 l_return_status :=	validate_date_from(l_ipyv_rec.date_from);
2677 
2678     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2679        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2680     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2681        RAISE OKC_API.G_EXCEPTION_ERROR;
2682     END IF;
2683 -------------------------------------------------------------------------
2684 ---- Check for term duration gretaer than or equal to Insurance duration
2685 ---------------------------------------------------------------------------
2686 l_return_status:= validate_insurance_term(l_ipyv_rec.date_from,l_ipyv_rec.date_to,l_khr_date_from,l_khr_date_to);
2687 
2688      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2689             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2690          ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2691             RAISE OKC_API.G_EXCEPTION_ERROR;
2692      END IF;
2693 -------------------------------------------------------------------------
2694 ---- Check for Contract Line
2695 ---------------------------------------------------------------------------
2696 l_return_status :=	validate_contract_line(p_ipyv_rec);
2697 
2698     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2699        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2700     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2701        RAISE OKC_API.G_EXCEPTION_ERROR;
2702     END IF;
2703 -----------------------------------------------------------------------
2704 -- Check for valide Premium
2705 ----------------------------------------------------------------------
2706 validate_amount_due(x_return_status => l_return_status,
2707                     p_ipyv_rec      => p_ipyv_rec);
2708                   -- NEW
2709     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2710        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2711     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2712        RAISE OKC_API.G_EXCEPTION_ERROR;
2713     END IF;
2714 ---------------------------------------------------------------------
2715 ----------- generate stream
2716 -------------------------------------------------------------------
2717 -- SET values to retrieve record
2718 p_stmv_rec.khr_id :=  p_ipyv_rec.khr_id ;
2719 p_stmv_rec.kle_id :=  p_ipyv_rec.kle_id ;
2720 -- nEW
2721 BEGIN
2722     select OKL_SIF_SEQ.nextval INTO p_stmv_rec.transaction_number from dual;
2723 --p_stmv_rec.transaction_number := OKL_SIF_SEQ.nextval();
2724 --p_stmv_rec.sty_id := 236689050485873337900191164493000819371;
2725 -- Removed after calling genarate _ins stream from genrate _insrecv_stream,generate_inspayb_stream
2726 -- and so on where sty_id is retrieved depending on stream type
2727 
2728 
2729 -- Begin : changes for Insurance user defined streams,  bug 3924300
2730                 -- call to get the stream type id, change made for insurance user defined streams
2731 
2732                   OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
2733                                                    'INSURANCE_RECEIVABLE',
2734                                                    l_return_status,
2735                                                    p_stmv_rec.sty_id);
2736 
2737    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2738                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2739                  RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2740    ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2741                  OKC_API.set_message(G_APP_NAME,'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_RECEIVABLE'); --bug 4024785
2742                  RAISE OKC_API.G_EXCEPTION_ERROR;
2743    END IF;
2744 
2745 
2746 -- End : changes for Insurance user defined streams
2747 
2748 -- nEW
2749 EXCEPTION
2750           WHEN NO_DATA_FOUND THEN
2751                 -- store SQL error message on message stack for caller
2752                  OKC_API.set_message(G_APP_NAME,  'OKL_NO_STREAM_TYPE');
2753              WHEN OTHERS THEN
2754                  -- store SQL error message on message stack for caller
2755                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
2756         		-- notify caller of an UNEXPECTED error
2757         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2758         		-- verify that cursor was closed
2759   		END ;
2760 
2761 p_stmv_rec.sgn_code := 'MANL';
2762 p_stmv_rec.say_code := 'WORK';
2763 p_stmv_rec.active_yn := 'N';
2764 p_stmv_rec.date_working := SYSDATE;
2765  --  CHECK for PAYMENT Frequency  and call respective methods
2766  IF (p_ipyv_rec.ipf_code = 'LUMP_SUM') THEN
2767   l_return_status :=  genrt_lump_sum(p_ipyv_rec,x_selv_tbl);
2768  ELSIF (p_ipyv_rec.ipf_code = 'MONTHLY') THEN
2769   l_return_status :=  genrt_monthly(p_ipyv_rec,x_selv_tbl);
2770  ELSIF (p_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
2771   l_return_status :=  genrt_bi_monthly(p_ipyv_rec,x_selv_tbl);
2772  ELSIF (p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
2773   l_return_status := genrt_half_yearly(p_ipyv_rec,x_selv_tbl);
2774  ELSIF (p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
2775   l_return_status :=  genrt_quarterly(p_ipyv_rec,x_selv_tbl);
2776  ELSIF (p_ipyv_rec.ipf_code = 'YEARLY') THEN
2777   l_return_status := genrt_yearly(p_ipyv_rec,x_selv_tbl);
2778  --ELSIF (p_ipyv_rec.ipf_code = 'LEASE_FREQUENCY') THEN
2779   --l_return_status :=  genrt_lease_frequency(p_ipyv_rec,x_selv_tbl);
2780  END IF;
2781 
2782  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2783         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2784      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2785         RAISE OKC_API.G_EXCEPTION_ERROR;
2786  END IF;
2787    p_selv_tbl:=x_selv_tbl;
2788  IF (l_return_status = Okc_Api.G_RET_STS_SUCCESS) THEN
2789    -- Create Stream and Stream Elements
2790 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
2791   IF(L_DEBUG_ENABLED='Y') THEN
2792     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
2793     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
2794   END IF;
2795 
2796   -- Bug 5408689 : Start
2797   IF(IS_DEBUG_PROCEDURE_ON)
2798   THEN
2799     OKL_DEBUG_PUB.LOG_DEBUG(
2800        L_LEVEL_PROCEDURE
2801       ,L_MODULE
2802       ,'Begin Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount ' );
2803   END IF;
2804   l_return_status := Okl_Streams_Util.round_streams_amount(
2805                         p_api_version   => p_api_version
2806                        ,p_init_msg_list => p_init_msg_list
2807                        ,x_msg_count     => x_msg_count
2808                        ,x_msg_data      => x_msg_data
2809                        ,p_chr_id        => p_stmv_rec.khr_id
2810                        ,p_selv_tbl      => p_selv_tbl
2811                        ,x_selv_tbl      => x_selv_tbl);
2812   IF(IS_DEBUG_PROCEDURE_ON)
2813   THEN
2814     OKL_DEBUG_PUB.LOG_DEBUG(
2815        L_LEVEL_PROCEDURE
2816       ,L_MODULE
2817       ,'End Debug OKLRSULB.pls  call Okl_Streams_Util.round_streams_amount');
2818   END IF;
2819 
2820   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR)
2821   THEN
2822     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2823   ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
2824   THEN
2825     RAISE OKC_API.G_EXCEPTION_ERROR;
2826   END IF;
2827 
2828   -- Store Rounded Streams back into the p_selv_tbl
2829   p_selv_tbl:= x_selv_tbl;
2830   -- Bug 5408689 : End
2831 
2832 
2833   IF(IS_DEBUG_PROCEDURE_ON) THEN
2834     BEGIN
2835         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
2836     END;
2837   END IF;
2838    OKL_STREAMS_PUB.create_streams(
2839         p_api_version
2840        ,p_init_msg_list
2841        ,x_return_status
2842        ,x_msg_count
2843        ,x_msg_data
2844        ,p_stmv_rec
2845        ,p_selv_tbl
2846        ,x_stmv_rec
2847        ,x_selv_tbl
2848      );
2849   IF(IS_DEBUG_PROCEDURE_ON) THEN
2850     BEGIN
2851         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.create_streams ');
2852     END;
2853   END IF;
2854 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.create_streams
2855       l_return_status := x_return_status ;
2856 
2857      	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2858              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2859          ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2860              RAISE OKC_API.G_EXCEPTION_ERROR;
2861   	END IF;
2862   END IF;
2863 EXCEPTION
2864           WHEN OKC_API.G_EXCEPTION_ERROR THEN
2865             x_return_status := OKC_API.HANDLE_EXCEPTIONS
2866             (
2867               l_api_name,
2868               G_PKG_NAME,
2869               'OKC_API.G_RET_STS_ERROR',
2870               x_msg_count,
2871               x_msg_data,
2872               '_PROCESS'
2873             );
2874           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2875             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2876             (
2877               l_api_name,
2878               G_PKG_NAME,
2879               'OKC_API.G_RET_STS_UNEXP_ERROR',
2880               x_msg_count,
2881               x_msg_data,
2882               '_PROCESS'
2883             );
2884           WHEN OTHERS THEN
2885             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2886             (
2887               l_api_name,
2888               G_PKG_NAME,
2889               'OTHERS',
2890               x_msg_count,
2891               x_msg_data,
2892               '_PROCESS'
2893             );
2894          END create_ins_streams ;
2895 
2896   ---------------------------------------------------------------------------
2897 -- Start of comments
2898 --
2899 -- PROCEDURE Name	: create_contract_line
2900 -- Description		:It creates contract line  contract item.
2901 -- Business Rules	:
2902 -- Parameters		:
2903 -- Version		: 1.0
2904 -- End of Comments
2905 ---------------------------------------------------------------------------
2906 PROCEDURE create_contract_line(
2907          p_api_version                  IN NUMBER,
2908          p_init_msg_list                IN VARCHAR2 ,
2909          x_return_status                OUT NOCOPY VARCHAR2,
2910          x_msg_count                    OUT NOCOPY NUMBER,
2911          x_msg_data                     OUT NOCOPY VARCHAR2,
2912          p_ipyv_rec                     IN ipyv_rec_type,
2913          x_kle_id 	 OUT NOCOPY NUMBER) IS
2914     l_api_version                 CONSTANT NUMBER := 1;
2915     l_api_name                     CONSTANT VARCHAR2(30) := 'create_contract_line';
2916     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
2917     l_clev_rec			   okl_okc_migration_pvt.clev_rec_type;
2918     lx_clev_rec		       okl_okc_migration_pvt.clev_rec_type;
2919     l_klev_rec			   Okl_Kle_Pvt.klev_rec_type ;
2920     lx_klev_rec		       Okl_Kle_Pvt.klev_rec_type ;
2921     l_cimv_rec		       OKC_CONTRACT_ITEM_PVT.cimv_rec_type ;
2922     lx_cimv_rec			   OKC_CONTRACT_ITEM_PVT.cimv_rec_type ;
2923     l_cvmv_rec             okl_version_pub.cvmv_rec_type;
2924 	lx_cvmv_rec            okl_version_pub.cvmv_rec_type;
2925 	l_khr_status           VARCHAR2(30) ;
2926     CURSOR l_okl_lse_id IS
2927     SELECT id
2928     FROM OKC_LINE_STYLES_b
2929     WHERE LTY_CODE = 'INSURANCE' ;
2930 
2931    -- Added for currency code
2932     CURSOR l_currency_code(p_khr_id NUMBER) IS
2933     SELECT CURRENCY_CODE
2934     FROM  OKC_K_HEADERS_B
2935     WHERE ID = p_khr_id ;
2936 
2937 
2938 	BEGIN
2939     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2940                                                        G_PKG_NAME,
2941                                                       p_init_msg_list,
2942                                                       l_api_version,
2943                                                       p_api_version,
2944                                                       '_PROCESS',
2945                                                       x_return_status);
2946             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2947               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2948             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2949               RAISE OKC_API.G_EXCEPTION_ERROR;
2950             END IF;
2951 
2952 --------------------------------------------------
2953 -- Get Currency Code
2954 -----------------------------------------------------
2955 
2956             OPEN l_currency_code(p_ipyv_rec.KHR_ID) ;
2957             FETCH l_currency_code INTO l_clev_rec.CURRENCY_CODE ;
2958             CLOSE l_currency_code ;
2959             -- Removed message for 3745151
2960 
2961             /*
2962             IF( l_currency_code%NOTFOUND) THEN
2963                  	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2964 					  p_msg_name		=> 'OKL_INVALID_CONTRACT');
2965             END IF;
2966            */
2967 
2968 
2969 ---------------------------------------------------------------------------
2970 			-- Set Values in OKC_CONTRACT_LINE
2971 ---------------------------------------------------------------------------
2972             l_clev_rec.sfwt_flag  := 'N';
2973 			l_clev_rec.object_version_number := 1 ;
2974 			l_clev_rec.chr_id   :=  p_ipyv_rec.KHR_ID ;
2975             OPEN l_okl_lse_id ;
2976             FETCH l_okl_lse_id INTO l_clev_rec.lse_id ;
2977             IF( l_okl_lse_id%NOTFOUND) THEN
2978                  	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2979 					  p_msg_name		=> 'OKL_LLA_LSE_ID'); -- Fix for 3745151
2980             END IF;
2981             CLOSE l_okl_lse_id ;
2982 
2983             -------------------------------------------------------------------------
2984 	       ---- Check for Status of Contract
2985 	        ---------------------------------------------------------------------------
2986 	    	l_return_status :=	get_contract_status(p_ipyv_rec.khr_id, l_khr_status);
2987 
2988 	        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2989 	           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2990 	        ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2991 	           RAISE OKC_API.G_EXCEPTION_ERROR;
2992 	        END IF;
2993 	       IF (l_khr_status = 'ACTIVE' ) THEN
2994 	            l_cvmv_rec.chr_id := p_ipyv_rec.khr_id;
2995 	            --Procedures pertaining to versioning a contract
2996 -- Start of wraper code generated automatically by Debug code generator for OKL_VERSION_PUB.version_contract
2997   IF(L_DEBUG_ENABLED='Y') THEN
2998     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
2999     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
3000   END IF;
3001   IF(IS_DEBUG_PROCEDURE_ON) THEN
3002     BEGIN
3003         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_VERSION_PUB.version_contract ');
3004     END;
3005   END IF;
3006 	            OKL_VERSION_PUB.version_contract(  p_api_version	=> l_api_version ,
3007 	    			 		p_init_msg_list           => OKC_API.G_FALSE,
3008 	    					x_return_status      => l_return_status    ,
3009 	    					x_msg_count           => x_msg_count,
3010 	    					x_msg_data            => x_msg_data ,
3011 	    					p_cvmv_rec        =>  l_cvmv_rec,
3012 	                            		p_commit	=>	OKC_API.G_FALSE,
3013 	                            		x_cvmv_rec	=> lx_cvmv_rec
3014 	    					);
3015   IF(IS_DEBUG_PROCEDURE_ON) THEN
3016     BEGIN
3017         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_VERSION_PUB.version_contract ');
3018     END;
3019   END IF;
3020 -- End of wraper code generated automatically by Debug code generator for OKL_VERSION_PUB.version_contract
3021 
3022 	       END IF ;
3023 
3024 
3025 
3026   		l_clev_rec.line_number := 1;
3027   		l_clev_rec.sts_code :=  'NEW';
3028 		l_clev_rec.dnz_chr_id   := p_ipyv_rec.khr_id;
3029   		l_clev_rec.display_sequence := 1;
3030   		l_clev_rec.exception_yn := 'Y';
3031         l_clev_rec.START_DATE := p_ipyv_rec.DATE_FROM  ;
3032         l_clev_rec.END_DATE :=  p_ipyv_rec.DATE_TO;
3033 
3034 ---------------------------------------------------------------------------
3035 			-- Set Values in OKL_CONTRACT_LINE
3036 ---------------------------------------------------------------------------
3037 			l_klev_rec.OBJECT_VERSION_NUMBER := 1 ;
3038 			l_klev_rec.DATE_ACCEPTED := SYSDATE  ;
3039 
3040 		  Okl_Contract_Pub.create_contract_line
3041 		   (
3042     	   	   p_api_version      => l_api_version ,
3043 		   p_init_msg_list           => OKC_API.G_FALSE,
3044 		   x_return_status      => l_return_status    ,
3045 		   x_msg_count           => x_msg_count,
3046 		   x_msg_data            => x_msg_data ,
3047 		   p_clev_rec            => l_clev_rec  ,
3048 		   p_klev_rec            => l_klev_rec,
3049 		   x_clev_rec            => lx_clev_rec,
3050 		   x_klev_rec            => lx_klev_rec
3051 		   );
3052 
3053 		   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3054               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3055             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3056               RAISE OKC_API.G_EXCEPTION_ERROR;
3057             END IF;
3058 		   l_cimv_rec.object_version_number := 1;
3059   		   l_cimv_rec.cle_id := lx_clev_rec.ID ;
3060 		   l_cimv_rec.dnz_chr_id  := p_ipyv_rec.KHR_ID ;
3061   		   l_cimv_rec.chr_id  := p_ipyv_rec.KHR_ID ;
3062 		   l_cimv_rec.object1_id1 := p_ipyv_rec.ID ;
3063 		   l_cimv_rec.object1_id2 := '#' ;
3064   		   l_cimv_rec.jtot_object1_code := 'OKL_INPOLICY';
3065 		   l_cimv_rec.exception_yn  := 'N';
3066 
3067 ----- Changes by Kanti
3068 ----- Validate the JTOT Object code, ID1 and ID2
3069 
3070           okl_la_validation_util_pvt.VALIDATE_STYLE_JTOT (p_api_version    => l_api_version,
3071                                                           p_init_msg_list  => OKC_API.G_FALSE,
3072                                                           x_return_status  => l_return_status,
3073                                                           x_msg_count	   => x_msg_count,
3074                                                           x_msg_data	   => x_msg_data,
3075                                                           p_object_name    => l_cimv_rec.jtot_object1_code,
3076                                                           p_id1            => l_cimv_rec.object1_id1,
3077                                                           p_id2            => l_cimv_rec.object1_id2);
3078 	    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3079               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3080             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3081               RAISE OKC_API.G_EXCEPTION_ERROR;
3082             END IF;
3083 
3084 ----  Changes End
3085 
3086 
3087            	 OKC_CONTRACT_ITEM_PUB.create_contract_item(p_api_version	=> l_api_version ,
3088 			 								p_init_msg_list           => OKC_API.G_FALSE,
3089 											x_return_status      => l_return_status    ,
3090 											x_msg_count           => x_msg_count,
3091 											x_msg_data            => x_msg_data ,
3092                               				p_cimv_rec	=>	l_cimv_rec,
3093                               				x_cimv_rec	=> lx_cimv_rec
3094 							  				);
3095 	    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3096               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3097             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3098               RAISE OKC_API.G_EXCEPTION_ERROR;
3099             END IF;
3100    		 x_kle_id := lx_klev_rec.ID ;
3101       	 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3102 EXCEPTION
3103           WHEN OKC_API.G_EXCEPTION_ERROR THEN
3104             x_return_status := OKC_API.HANDLE_EXCEPTIONS
3105             (
3106               l_api_name,
3107               G_PKG_NAME,
3108               'OKC_API.G_RET_STS_ERROR',
3109               x_msg_count,
3110               x_msg_data,
3111               '_PROCESS'
3112             );
3113           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3114             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3115             (
3116               l_api_name,
3117               G_PKG_NAME,
3118               'OKC_API.G_RET_STS_UNEXP_ERROR',
3119               x_msg_count,
3120               x_msg_data,
3121               '_PROCESS'
3122             );
3123           WHEN OTHERS THEN
3124             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3125             (
3126               l_api_name,
3127               G_PKG_NAME,
3128               'OTHERS',
3129               x_msg_count,
3130               x_msg_data,
3131               '_PROCESS'
3132             );
3133 END create_contract_line;
3134   ---------------------------------------------------------------------------
3135   -- FUNCTION get_rec for: OKL_INS_POLICIES_V
3136   ---------------------------------------------------------------------------
3137   FUNCTION get_rec (
3138     p_ipyv_rec                     IN ipyv_rec_type,
3139     x_no_data_found                OUT NOCOPY BOOLEAN
3140   ) RETURN ipyv_rec_type IS
3141     CURSOR okl_ipyv_pk_csr (p_id                 IN NUMBER) IS
3142     SELECT
3143             ID,
3144             ADJUSTMENT,
3145             CALCULATED_PREMIUM,
3146             OBJECT_VERSION_NUMBER,
3147             AGENCY_NUMBER,
3148             SFWT_FLAG,
3149             IPF_CODE,
3150             INT_ID,
3151             KHR_ID,
3152             ISU_ID,
3153             IPT_ID,
3154             IPY_ID,
3155             IPE_CODE,
3156             CRX_CODE,
3157             AGENCY_SITE_ID,
3158             ISS_CODE,
3159             KLE_ID,
3160             AGENT_SITE_ID,
3161             IPY_TYPE,
3162             POLICY_NUMBER,
3163             QUOTE_YN,
3164             ENDORSEMENT,
3165             INSURANCE_FACTOR,
3166             FACTOR_CODE,
3167             COVERED_AMOUNT,
3168             ADJUSTED_BY_ID,
3169             FACTOR_VALUE,
3170             DATE_QUOTED,
3171             SALES_REP_ID,
3172             DATE_PROOF_REQUIRED,
3173             DATE_QUOTE_EXPIRY,
3174             DEDUCTIBLE,
3175             PAYMENT_FREQUENCY,
3176             DATE_PROOF_PROVIDED,
3177             DATE_FROM,
3178             NAME_OF_INSURED,
3179             DATE_TO,
3180             DESCRIPTION,
3181             ON_FILE_YN,
3182             PREMIUM,
3183             COMMENTS,
3184             ACTIVATION_DATE,
3185             PRIVATE_LABEL_YN,
3186             LESSOR_INSURED_YN,
3187             LESSOR_PAYEE_YN,
3188             CANCELLATION_DATE,
3189             CANCELLATION_COMMENT,
3190             AGENT_YN,
3191             ATTRIBUTE_CATEGORY,
3192             ATTRIBUTE1,
3193             ATTRIBUTE2,
3194             ATTRIBUTE3,
3195             ATTRIBUTE4,
3196             ATTRIBUTE5,
3197             ATTRIBUTE6,
3198             ATTRIBUTE7,
3199             ATTRIBUTE8,
3200             ATTRIBUTE9,
3201             ATTRIBUTE10,
3202             ATTRIBUTE11,
3203             ATTRIBUTE12,
3204             ATTRIBUTE13,
3205             ATTRIBUTE14,
3206             ATTRIBUTE15,
3207             ORG_ID,
3208             REQUEST_ID,
3209             PROGRAM_APPLICATION_ID,
3210             PROGRAM_ID,
3211             PROGRAM_UPDATE_DATE,
3212             CREATED_BY,
3213             CREATION_DATE,
3214             LAST_UPDATED_BY,
3215             LAST_UPDATE_DATE,
3216             LAST_UPDATE_LOGIN,
3217             TERRITORY_CODE
3218       FROM Okl_Ins_Policies_V
3219      WHERE okl_ins_policies_v.id = p_id;
3220     l_okl_ipyv_pk                  okl_ipyv_pk_csr%ROWTYPE;
3221     l_ipyv_rec                     ipyv_rec_type;
3222   BEGIN
3223     x_no_data_found := TRUE;
3224     -- Get current database values
3225     OPEN okl_ipyv_pk_csr (p_ipyv_rec.id);
3226     FETCH okl_ipyv_pk_csr INTO
3227               l_ipyv_rec.ID,
3228               l_ipyv_rec.ADJUSTMENT,
3229               l_ipyv_rec.CALCULATED_PREMIUM,
3230               l_ipyv_rec.OBJECT_VERSION_NUMBER,
3231               l_ipyv_rec.AGENCY_NUMBER,
3232               l_ipyv_rec.SFWT_FLAG,
3233               l_ipyv_rec.IPF_CODE,
3234               l_ipyv_rec.INT_ID,
3235               l_ipyv_rec.KHR_ID,
3236               l_ipyv_rec.ISU_ID,
3237               l_ipyv_rec.IPT_ID,
3238               l_ipyv_rec.IPY_ID,
3239               l_ipyv_rec.IPE_CODE,
3240               l_ipyv_rec.CRX_CODE,
3241               l_ipyv_rec.AGENCY_SITE_ID,
3242               l_ipyv_rec.ISS_CODE,
3243               l_ipyv_rec.KLE_ID,
3244               l_ipyv_rec.AGENT_SITE_ID,
3245               l_ipyv_rec.IPY_TYPE,
3246               l_ipyv_rec.POLICY_NUMBER,
3247               l_ipyv_rec.QUOTE_YN,
3248               l_ipyv_rec.ENDORSEMENT,
3249               l_ipyv_rec.INSURANCE_FACTOR,
3250               l_ipyv_rec.FACTOR_CODE,
3251               l_ipyv_rec.COVERED_AMOUNT,
3252               l_ipyv_rec.ADJUSTED_BY_ID,
3253               l_ipyv_rec.FACTOR_VALUE,
3254               l_ipyv_rec.DATE_QUOTED,
3255               l_ipyv_rec.SALES_REP_ID,
3256               l_ipyv_rec.DATE_PROOF_REQUIRED,
3257               l_ipyv_rec.DATE_QUOTE_EXPIRY,
3258               l_ipyv_rec.DEDUCTIBLE,
3259               l_ipyv_rec.PAYMENT_FREQUENCY,
3260               l_ipyv_rec.DATE_PROOF_PROVIDED,
3261               l_ipyv_rec.DATE_FROM,
3262               l_ipyv_rec.NAME_OF_INSURED,
3263               l_ipyv_rec.DATE_TO,
3264               l_ipyv_rec.DESCRIPTION,
3265               l_ipyv_rec.ON_FILE_YN,
3266               l_ipyv_rec.PREMIUM,
3267               l_ipyv_rec.COMMENTS,
3268               l_ipyv_rec.ACTIVATION_DATE,
3269               l_ipyv_rec.PRIVATE_LABEL_YN,
3270               l_ipyv_rec.LESSOR_INSURED_YN,
3271               l_ipyv_rec.LESSOR_PAYEE_YN,
3272               l_ipyv_rec.CANCELLATION_DATE,
3273               l_ipyv_rec.CANCELLATION_COMMENT,
3274               l_ipyv_rec.AGENT_YN,
3275               l_ipyv_rec.ATTRIBUTE_CATEGORY,
3276               l_ipyv_rec.ATTRIBUTE1,
3277               l_ipyv_rec.ATTRIBUTE2,
3278               l_ipyv_rec.ATTRIBUTE3,
3279               l_ipyv_rec.ATTRIBUTE4,
3280               l_ipyv_rec.ATTRIBUTE5,
3281               l_ipyv_rec.ATTRIBUTE6,
3282               l_ipyv_rec.ATTRIBUTE7,
3283               l_ipyv_rec.ATTRIBUTE8,
3284               l_ipyv_rec.ATTRIBUTE9,
3285               l_ipyv_rec.ATTRIBUTE10,
3286               l_ipyv_rec.ATTRIBUTE11,
3287               l_ipyv_rec.ATTRIBUTE12,
3288               l_ipyv_rec.ATTRIBUTE13,
3289               l_ipyv_rec.ATTRIBUTE14,
3290               l_ipyv_rec.ATTRIBUTE15,
3291               l_ipyv_rec.ORG_ID,
3292               l_ipyv_rec.REQUEST_ID,
3293               l_ipyv_rec.PROGRAM_APPLICATION_ID,
3294               l_ipyv_rec.PROGRAM_ID,
3295               l_ipyv_rec.PROGRAM_UPDATE_DATE,
3296               l_ipyv_rec.CREATED_BY,
3297               l_ipyv_rec.CREATION_DATE,
3298               l_ipyv_rec.LAST_UPDATED_BY,
3299               l_ipyv_rec.LAST_UPDATE_DATE,
3300               l_ipyv_rec.LAST_UPDATE_LOGIN,
3301               l_ipyv_rec.TERRITORY_CODE;
3302     x_no_data_found := okl_ipyv_pk_csr%NOTFOUND;
3303     CLOSE okl_ipyv_pk_csr;
3304     RETURN(l_ipyv_rec);
3305   END get_rec;
3306   FUNCTION get_rec (
3307     p_ipyv_rec       IN ipyv_rec_type
3308   ) RETURN ipyv_rec_type IS
3309     l_row_notfound                 BOOLEAN := TRUE;
3310   BEGIN
3311     RETURN(get_rec(p_ipyv_rec, l_row_notfound));
3312   END get_rec;
3313 -----------------------------------------------------------------------------------
3314   PROCEDURE accept_lease_quote(
3315          p_api_version                  IN NUMBER,
3316          p_init_msg_list                IN VARCHAR2 ,
3317          x_return_status                OUT NOCOPY VARCHAR2,
3318          x_msg_count                    OUT NOCOPY NUMBER,
3319          x_msg_data                     OUT NOCOPY VARCHAR2,
3320          p_quote_id                     IN NUMBER,
3321          x_policy_number 	 OUT NOCOPY VARCHAR2) IS
3322     l_api_version                 CONSTANT NUMBER := 1;
3323     l_api_name                     CONSTANT VARCHAR2(30) := 'accept_lease_quote';
3324     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
3325     l_quote_type                   VARCHAR2(30);
3326     l_ipyv_rec 			           ipyv_rec_type ;
3327     l_inqv_rec                     ipyv_rec_type ;
3328 	lx_inqv_rec                    ipyv_rec_type ;
3329     lx_ipyv_rec                   ipyv_rec_type ;
3330     l_row_notfound    BOOLEAN := TRUE ;
3331 	l_kle_id          NUMBER ;
3332 
3333 
3334   --3379317 Modified by smoduga added new parameter p_to_date
3335    CURSOR C_accepted_policy_exist ( p_khr_id NUMBER ,  p_date DATE,p_to_date DATE) IS
3336           select 'x'
3337           FROM OKL_INS_POLICIES_B IPYB
3338           WHERE IPYB.IPY_TYPE = 'LEASE_POLICY'
3339           AND IPYB.ISS_CODE IN ('ACCEPTED', 'PENDING')
3340           AND IPYB.KHR_ID  = p_khr_id
3341           AND (p_date BETWEEN  IPYB.DATE_FROM  AND IPYB.DATE_TO
3342                OR IPYB.DATE_FROM between p_date and p_to_date);
3343 
3344 	l_dummy           VARCHAR2(1);
3345   --3379317 Modified by smoduga added new parameter p_to_date
3346       CURSOR C_policy_exist ( p_khr_id NUMBER ,  p_date DATE,p_to_date DATE) IS
3347           SELECT 'x'
3348          FROM   OKL_INS_POLICIES_B OIPB
3349          WHERE  OIPB.KHR_ID = p_khr_id AND
3350             OIPB.IPY_TYPE = 'LEASE_POLICY' AND
3351             OIPB.QUOTE_YN = 'N' AND
3352             OIPB.ISS_CODE = 'ACTIVE' AND
3353             (p_date BETWEEN  OIPB.DATE_FROM  AND OIPB.DATE_TO
3354              OR OIPB.DATE_FROM BETWEEN p_date and p_to_date);
3355 
3356 
3357 
3358 
3359 	FUNCTION insert_policy_assets (
3360               l_inqv_rec               IN   ipyv_rec_type,
3361               policyid                 IN   NUMBER
3362             ) RETURN VARCHAR2 IS
3363 		CURSOR okl_inav_pk_csr (p_id       NUMBER) IS
3364 	     SELECT
3365             ID,
3366             OBJECT_VERSION_NUMBER,
3367             IPY_ID,
3368             KLE_ID,
3369             ASSET_PREMIUM,
3370             LESSOR_PREMIUM,
3371 			CALCULATED_PREMIUM,
3372             ATTRIBUTE_CATEGORY,
3373             ATTRIBUTE1,
3374             ATTRIBUTE2,
3375             ATTRIBUTE3,
3376             ATTRIBUTE4,
3377             ATTRIBUTE5,
3378             ATTRIBUTE6,
3379             ATTRIBUTE7,
3380             ATTRIBUTE8,
3381             ATTRIBUTE9,
3382             ATTRIBUTE10,
3383             ATTRIBUTE11,
3384             ATTRIBUTE12,
3385             ATTRIBUTE13,
3386             ATTRIBUTE14,
3387             ATTRIBUTE15,
3388 			ORG_ID,
3389             REQUEST_ID,
3390             PROGRAM_APPLICATION_ID,
3391             PROGRAM_ID,
3392             PROGRAM_UPDATE_DATE,
3393             CREATED_BY,
3394             CREATION_DATE,
3395             LAST_UPDATED_BY,
3396             LAST_UPDATE_DATE,
3397             LAST_UPDATE_LOGIN
3398       FROM OKL_INS_ASSETS
3399      WHERE OKL_INS_ASSETS.IPY_ID  = p_id;
3400 	 l_okl_inav_pk_csr    okl_inav_pk_csr%ROWTYPE;
3401     l_inav_rec                     inav_rec_type;
3402 	lx_inav_rec                     inav_rec_type;
3403   BEGIN
3404 --    x_no_data_found := TRUE;
3405     -- Get current database values
3406 
3407       OPEN okl_inav_pk_csr (l_inqv_rec.ID)	;
3408 	  LOOP
3409        FETCH okl_inav_pk_csr INTO l_okl_inav_pk_csr;
3410 	      EXIT WHEN okl_inav_pk_csr%NOTFOUND;
3411               l_inav_rec.ID := l_okl_inav_pk_csr.ID ;
3412               l_inav_rec.OBJECT_VERSION_NUMBER := l_okl_inav_pk_csr.OBJECT_VERSION_NUMBER ;
3413               l_inav_rec.IPY_ID  := policyid ;
3414               l_inav_rec.KLE_ID  := l_okl_inav_pk_csr.KLE_ID ;
3415               l_inav_rec.ASSET_PREMIUM  := l_okl_inav_pk_csr.ASSET_PREMIUM ;
3416 			  l_inav_rec.CALCULATED_PREMIUM  := l_okl_inav_pk_csr.CALCULATED_PREMIUM ;
3417               l_inav_rec.LESSOR_PREMIUM  := l_okl_inav_pk_csr.LESSOR_PREMIUM ;
3418               l_inav_rec.ATTRIBUTE_CATEGORY  := l_okl_inav_pk_csr.ATTRIBUTE_CATEGORY ;
3419               l_inav_rec.ATTRIBUTE1  := l_okl_inav_pk_csr.ATTRIBUTE1 ;
3420               l_inav_rec.ATTRIBUTE2  := l_okl_inav_pk_csr.ATTRIBUTE2 ;
3421               l_inav_rec.ATTRIBUTE3  := l_okl_inav_pk_csr.ATTRIBUTE3 ;
3422               l_inav_rec.ATTRIBUTE4  := l_okl_inav_pk_csr.ATTRIBUTE4 ;
3423               l_inav_rec.ATTRIBUTE5  := l_okl_inav_pk_csr.ATTRIBUTE5 ;
3424               l_inav_rec.ATTRIBUTE6  := l_okl_inav_pk_csr.ATTRIBUTE6 ;
3425               l_inav_rec.ATTRIBUTE7  := l_okl_inav_pk_csr.ATTRIBUTE7 ;
3426               l_inav_rec.ATTRIBUTE8  := l_okl_inav_pk_csr.ATTRIBUTE8 ;
3427               l_inav_rec.ATTRIBUTE9  := l_okl_inav_pk_csr.ATTRIBUTE9 ;
3428               l_inav_rec.ATTRIBUTE10  := l_okl_inav_pk_csr.ATTRIBUTE10 ;
3429               l_inav_rec.ATTRIBUTE11  := l_okl_inav_pk_csr.ATTRIBUTE11 ;
3430               l_inav_rec.ATTRIBUTE12  := l_okl_inav_pk_csr.ATTRIBUTE12 ;
3431               l_inav_rec.ATTRIBUTE13  := l_okl_inav_pk_csr.ATTRIBUTE13 ;
3432               l_inav_rec.ATTRIBUTE14  := l_okl_inav_pk_csr.ATTRIBUTE14 ;
3433               l_inav_rec.ATTRIBUTE15  := l_okl_inav_pk_csr.ATTRIBUTE15 ;
3434 
3435 	SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
3436              DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
3437              DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
3438              DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
3439              MO_GLOBAL.GET_CURRENT_ORG_ID()
3440              INTO l_inav_rec.REQUEST_ID,
3441                                                                  l_inav_rec.PROGRAM_APPLICATION_ID,
3442                                                                  l_inav_rec.PROGRAM_ID,
3443                                                                  l_inav_rec.PROGRAM_UPDATE_DATE,
3444                                                            	 	 l_inav_rec.org_id FROM dual;
3445               l_inav_rec.CREATED_BY := l_okl_inav_pk_csr.CREATED_BY ;
3446               l_inav_rec.CREATION_DATE := l_okl_inav_pk_csr.CREATION_DATE ;
3447               l_inav_rec.LAST_UPDATED_BY := l_okl_inav_pk_csr.LAST_UPDATED_BY ;
3448               l_inav_rec.LAST_UPDATE_DATE := l_okl_inav_pk_csr.LAST_UPDATE_DATE ;
3449               l_inav_rec.LAST_UPDATE_LOGIN := l_okl_inav_pk_csr.LAST_UPDATE_LOGIN ;
3450 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Assets_Pub.insert_ins_assets
3451   IF(L_DEBUG_ENABLED='Y') THEN
3452     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
3453     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
3454   END IF;
3455   IF(IS_DEBUG_PROCEDURE_ON) THEN
3456     BEGIN
3457         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Assets_Pub.insert_ins_assets ');
3458     END;
3459   END IF;
3460 		Okl_Ins_Assets_Pub.insert_ins_assets(
3461 	          p_api_version                  => p_api_version,
3462           	  p_init_msg_list                => OKC_API.G_FALSE,
3463           	  x_return_status                => l_return_status,
3464               x_msg_count                    => x_msg_count,
3465               x_msg_data                     => x_msg_data,
3466               p_inav_rec                     => l_inav_rec,
3467               x_inav_rec                     => lx_inav_rec
3468           		);
3469   IF(IS_DEBUG_PROCEDURE_ON) THEN
3470     BEGIN
3471         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Assets_Pub.insert_ins_assets ');
3472     END;
3473   END IF;
3474 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Assets_Pub.insert_ins_assets
3475           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3476 	  	    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3477 	     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3478 	  	    RAISE OKC_API.G_EXCEPTION_ERROR;
3479           END IF;
3480 	END LOOP ;
3481   --     x_no_data_found := okl_inav_pk_csr%NOTFOUND;
3482       CLOSE okl_inav_pk_csr;
3483 	    RETURN(l_return_status);
3484     END insert_policy_assets;
3485     FUNCTION get_lease_policy (
3486               l_inqv_rec               IN   ipyv_rec_type
3487             ) RETURN ipyv_rec_type IS
3488               l_ipyv_rec 			   ipyv_rec_type ;
3489               l_seq                    NUMBER ;
3490               l_policy_symbol          VARCHAR2(10) ;
3491               CURSOR c_policy_symbol IS
3492               SELECT POLICY_SYMBOL
3493                FROM OKL_INS_PRODUCTS_B
3494                WHERE id = l_ipyv_rec.ipt_id;
3495             BEGIN
3496             l_ipyv_rec := l_inqv_rec ;
3497                     BEGIN
3498                       SELECT OKL_IPY_SEQ.NEXTVAL INTO l_seq FROM dual;
3499                     EXCEPTION
3500                     WHEN NO_DATA_FOUND THEN
3501                         -- store SQL error message on message stack for caller
3502                        OKC_API.set_message(G_APP_NAME,  'OKL_NO_SEQUENCE'  );
3503                     WHEN OTHERS THEN
3504                     -- store SQL error message on message stack for caller
3505                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,
3506                         G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3507         		      -- notify caller of an UNEXPECTED error
3508         		      l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3509         		      -- verify that cursor was closed
3510   		            END ;
3511                OPEN c_policy_symbol;
3512                FETCH c_policy_symbol INTO l_policy_symbol ;
3513                   IF( c_policy_symbol%NOTFOUND) THEN
3514                  	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
3515 					  p_msg_name		=> G_INVALID_VALUE,
3516 					  p_token1		=> g_col_name_token,
3517 					  p_token1_value	=> 'Policy Symbol');
3518                    END IF;
3519                close c_policy_symbol ;
3520 			l_ipyv_rec.POLICY_NUMBER := l_policy_symbol || TO_CHAR(l_seq) ;
3521 	        l_ipyv_rec.object_version_number := 1 ;
3522 	        l_ipyv_rec.ISS_CODE := 'ACCEPTED';
3523 	        l_ipyv_rec.QUOTE_YN  := 'N' ;
3524 	        l_ipyv_rec.DATE_QUOTED := OKC_API.G_MISS_DATE ;
3525 	        l_ipyv_rec.DATE_QUOTE_EXPIRY := OKC_API.G_MISS_DATE ;
3526 			  SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
3527              DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
3528              DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
3529              DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
3530              MO_GLOBAL.GET_CURRENT_ORG_ID()
3531              INTO l_ipyv_rec.REQUEST_ID,
3532                                                                  l_ipyv_rec.PROGRAM_APPLICATION_ID,
3533                                                                  l_ipyv_rec.PROGRAM_ID,
3534                                                                  l_ipyv_rec.PROGRAM_UPDATE_DATE,
3535                                                            	 l_ipyv_rec.org_id FROM dual;
3536 	        l_ipyv_rec.created_by          :=   OKC_API.G_MISS_NUM;
3537 	        l_ipyv_rec.creation_date       := OKC_API.G_MISS_DATE ;
3538 	        l_ipyv_rec.last_updated_by     :=   OKC_API.G_MISS_NUM;
3539 	        l_ipyv_rec.last_update_date    := OKC_API.G_MISS_DATE ;
3540             l_ipyv_rec.last_update_login   :=   OKC_API.G_MISS_NUM;
3541               	RETURN(l_ipyv_rec);
3542           END get_lease_policy;
3543      BEGIN
3544           l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3545                                                      G_PKG_NAME,
3546                                                     p_init_msg_list,
3547                                                     l_api_version,
3548                                                     p_api_version,
3549                                                     '_PROCESS',
3550                                                     x_return_status);
3551           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3552             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3553           ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3554             RAISE OKC_API.G_EXCEPTION_ERROR;
3555           END IF;
3556 
3557           -- Assigning ID to record
3558           l_inqv_rec.id := p_quote_id ;
3559 
3560           -- Get the current quote from database
3561       	  l_inqv_rec := get_rec(l_inqv_rec);
3562 
3563           -- KHR id check to get validate record
3564 
3565 
3566 
3567           -- New Validation for one accepted Policy only
3568 
3569         BEGIN
3570          l_dummy := '?' ;
3571   --3379317 Modified by smoduga added new parameter p_to_date
3572          OPEN    C_accepted_policy_exist (l_inqv_rec.KHR_ID ,l_inqv_rec.DATE_FROM,l_inqv_rec.DATE_TO) ;
3573          FETCH  C_accepted_policy_exist INTO l_dummy ;
3574          CLOSE  C_accepted_policy_exist ;
3575               EXCEPTION
3576                     WHEN OTHERS THEN
3577                     -- store SQL error message on message stack for caller
3578                      OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3579         		      -- notify caller of an UNEXPECTED error
3580         		      l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3581                       RAISE G_EXCEPTION_HALT_VALIDATION ;
3582         		      -- verify that cursor was closed
3583       	 END ;
3584             IF   ( l_dummy = 'x') THEN
3585                OKC_API.set_message(G_APP_NAME, 'OKL_ACCEPTED_POLICY_EXIST' );
3586         		      -- notify caller of an UNEXPECTED error
3587         		      l_return_status := OKC_API.G_RET_STS_ERROR;
3588                      RAISE OKC_API.G_EXCEPTION_ERROR;
3589             END IF;
3590 		  -- Validate whether it is accetable quote or not
3591 		/*
3592 		      1. Quote should not be expired
3593 		      2. Status of Quote should be quote
3594           	      3. It should not be Third party policy
3595 	        */
3596 		   -- Check for Status
3597 		   IF (l_inqv_rec.ISS_CODE <> 'QUOTE' AND l_inqv_rec.QUOTE_YN <> 'Y'  ) THEN
3598 		      OKC_API.set_message(G_APP_NAME,
3599 	               	G_INVALID_QUOTE );
3600                 RAISE OKC_API.G_EXCEPTION_ERROR;
3601            	END IF;
3602 
3603 			-- Quote should not be expired
3604 		   IF (l_inqv_rec.DATE_QUOTE_EXPIRY < SYSDATE ) THEN
3605 		      OKC_API.set_message(G_APP_NAME,
3606 	               	G_EXPIRED_QUOTE );
3607                RAISE OKC_API.G_EXCEPTION_ERROR;
3608 			END IF;
3609        ------------------------------------------------------------------------
3610       -- Check for Lease Policy
3611       ------------------------------------------------------------------------
3612       BEGIN
3613          l_dummy := '?' ;
3614   --3379317 Modified by smoduga added new parameter p_to_date
3615          OPEN    C_policy_exist (l_inqv_rec.KHR_ID ,l_inqv_rec.DATE_FROM,l_inqv_rec.DATE_TO) ;
3616          FETCH  C_policy_exist INTO l_dummy ;
3617          CLOSE  C_policy_exist ;
3618               EXCEPTION
3619                     WHEN OTHERS THEN
3620                     -- store SQL error message on message stack for caller
3621                      OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3622         		      -- notify caller of an UNEXPECTED error
3623         		      l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3624                       RAISE G_EXCEPTION_HALT_VALIDATION ;
3625         		      -- verify that cursor was closed
3626   		            END ;
3627             IF   ( l_dummy = 'x') THEN
3628                OKC_API.set_message(G_APP_NAME, 'OKL_POLICY_EXIST' );
3629         		      -- notify caller of an UNEXPECTED error
3630         		      l_return_status := OKC_API.G_RET_STS_ERROR;
3631                      RAISE OKC_API.G_EXCEPTION_ERROR;
3632             END IF;
3633 
3634 			-- Check for Third Party is taken care in deciding policy type
3635          -- Make Policy related changes
3636          l_ipyv_rec := get_lease_policy(l_inqv_rec);
3637 
3638           -- Insert Policy
3639 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
3640   IF(IS_DEBUG_PROCEDURE_ON) THEN
3641     BEGIN
3642         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
3643     END;
3644   END IF;
3645           Okl_Ins_Policies_Pub.insert_ins_policies(
3646          p_api_version                  => p_api_version,
3647           p_init_msg_list                => OKC_API.G_FALSE,
3648           x_return_status                => l_return_status,
3649           x_msg_count                    => x_msg_count,
3650           x_msg_data                     => x_msg_data,
3651           p_ipyv_rec                     => l_ipyv_rec,
3652           x_ipyv_rec                     => lx_ipyv_rec
3653           );
3654   IF(IS_DEBUG_PROCEDURE_ON) THEN
3655     BEGIN
3656         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
3657     END;
3658   END IF;
3659 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
3660 
3661       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3662 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3663 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3664 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3665       END IF;
3666       l_ipyv_rec.id := lx_ipyv_rec.id ;
3667 	-- Insert Assets
3668 	 l_return_status :=  insert_policy_assets(l_inqv_rec,lx_ipyv_rec.ID );
3669 
3670 	  IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3671 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3672 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3673 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3674       END IF;
3675 	  -- Create Line
3676 	create_contract_line(
3677          p_api_version                  => l_api_version,
3678          p_init_msg_list                => Okc_Api.G_FALSE,
3679          x_return_status                => l_return_status,
3680          x_msg_count                    => x_msg_count,
3681          x_msg_data                     => x_msg_data,
3682          p_ipyv_rec                     => l_ipyv_rec,
3683          x_kle_id 		                => l_kle_id );
3684 
3685       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3686 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3687 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3688 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3689       END IF;
3690 	  l_ipyv_rec.KLE_ID := l_kle_id ;
3691     -- Create Stream
3692               create_ins_streams(
3693          p_api_version                    => l_api_version,
3694          p_init_msg_list                => Okc_Api.G_FALSE,
3695          x_return_status                => l_return_status,
3696          x_msg_count                    => x_msg_count,
3697          x_msg_data                     => x_msg_data,
3698          p_ipyv_rec                     => l_ipyv_rec
3699          );
3700 
3701       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3702       	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3703 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3704 
3705 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3706       END IF;
3707 
3708       create_insinc_streams(
3709          p_api_version                    => l_api_version,
3710          p_init_msg_list                => Okc_Api.G_FALSE,
3711          x_return_status                => l_return_status,
3712          x_msg_count                    => x_msg_count,
3713          x_msg_data                     => x_msg_data,
3714          p_ipyv_rec                     => l_ipyv_rec
3715         );
3716 
3717       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3718       	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3719 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3720 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3721       END IF;
3722 
3723 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
3724   IF(IS_DEBUG_PROCEDURE_ON) THEN
3725     BEGIN
3726         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
3727     END;
3728   END IF;
3729       Okl_Ins_Policies_Pub.update_ins_policies(
3730 	         p_api_version                  => p_api_version,
3731 	          p_init_msg_list                => OKC_API.G_FALSE,
3732 	          x_return_status                => l_return_status,
3733 	          x_msg_count                    => x_msg_count,
3734 	          x_msg_data                     => x_msg_data,
3735 	          p_ipyv_rec                     => l_ipyv_rec,
3736 	          x_ipyv_rec                     => lx_ipyv_rec
3737 	          );
3738   IF(IS_DEBUG_PROCEDURE_ON) THEN
3739     BEGIN
3740         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
3741     END;
3742   END IF;
3743 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
3744    	          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3745 
3746 		  	  	 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3747 		  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3748 
3749 		  	     RAISE OKC_API.G_EXCEPTION_ERROR;
3750 	          END IF;
3751               l_ipyv_rec := lx_ipyv_rec ;
3752      -- activate stream
3753 	 	 	activate_ins_stream(
3754 	          p_api_version                    => l_api_version,
3755 	          p_init_msg_list                => Okc_Api.G_FALSE,
3756 	          x_return_status                => l_return_status,
3757 	          x_msg_count                    => x_msg_count,
3758 	          x_msg_data                     => x_msg_data,
3759 	          p_ipyv_rec                     => l_ipyv_rec
3760 	          );
3761 
3762 	       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3763 
3764 	 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3765 	 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3766 
3767 	 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
3768 		  ELSIF	(l_return_status = G_NOT_ACTIVE) THEN
3769             -- Need to take care
3770 			  NULL;
3771           --ELSE
3772 
3773           END IF;
3774 
3775 			  -- update quote
3776           -- Put Policy Number in Quote record
3777           l_inqv_rec.IPY_ID := lx_ipyv_rec.ID;
3778 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
3779   IF(IS_DEBUG_PROCEDURE_ON) THEN
3780     BEGIN
3781         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
3782     END;
3783   END IF;
3784           Okl_Ins_Policies_Pub.update_ins_policies(
3785 	      p_api_version                  => p_api_version,
3786 	      p_init_msg_list                => OKC_API.G_FALSE,
3787 	      x_return_status                => l_return_status,
3788 	      x_msg_count                    => x_msg_count,
3789 	      x_msg_data                     => x_msg_data,
3790 	      p_ipyv_rec                     => l_inqv_rec,
3791 	      x_ipyv_rec                     => lx_inqv_rec   	);
3792   IF(IS_DEBUG_PROCEDURE_ON) THEN
3793     BEGIN
3794         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
3795     END;
3796   END IF;
3797 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
3798 
3799           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3800 
3801 		  	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3802 	  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3803 
3804 	  	       RAISE OKC_API.G_EXCEPTION_ERROR;
3805 	      END IF;
3806     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3807       EXCEPTION
3808         WHEN OKC_API.G_EXCEPTION_ERROR THEN
3809           x_return_status := OKC_API.HANDLE_EXCEPTIONS
3810           (
3811             l_api_name,
3812             G_PKG_NAME,
3813             'OKC_API.G_RET_STS_ERROR',
3814             x_msg_count,
3815             x_msg_data,
3816             '_PROCESS'
3817           );
3818         WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3819           x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3820           (
3821             l_api_name,
3822             G_PKG_NAME,
3823             'OKC_API.G_RET_STS_UNEXP_ERROR',
3824             x_msg_count,
3825             x_msg_data,
3826             '_PROCESS'
3827           );
3828         WHEN OTHERS THEN
3829           x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3830           (
3831             l_api_name,
3832             G_PKG_NAME,
3833             'OTHERS',
3834             x_msg_count,
3835             x_msg_data,
3836             '_PROCESS'
3837           );
3838   END accept_lease_quote;
3839 -------------------------------------------------------------------------------
3840   ---------------------------------------------------------------------------
3841   -- PROCEDURE save_quote
3842   ---------------------------------------------------------------------------
3843     PROCEDURE save_quote(
3844      p_api_version                  IN NUMBER,
3845      p_init_msg_list                IN VARCHAR2 ,
3846      x_return_status                OUT NOCOPY VARCHAR2,
3847      x_msg_count                    OUT NOCOPY NUMBER,
3848      x_msg_data                     OUT NOCOPY VARCHAR2,
3849      px_ipyv_rec                     IN OUT NOCOPY  ipyv_rec_type,
3850      x_message                      OUT NOCOPY  VARCHAR2  )IS
3851      l_msg_count                   NUMBER ;
3852      l_msg_data                      VARCHAR2(2000);
3853      l_api_version                 CONSTANT NUMBER := 1;
3854      l_api_name                     CONSTANT VARCHAR2(30) := 'save_quote';
3855      l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
3856      p_contract_id                 NUMBER ;
3857      l_ipyv_rec            Okl_Ins_Policies_Pub.ipyv_rec_type ;
3858      lx_ipyv_rec           Okl_Ins_Policies_Pub.ipyv_rec_type ;
3859      l_iasset_tbl  	   iasset_tbl_type ;
3860      l_message      	   VARCHAR2(200);
3861      l_inav_tbl            Okl_Ina_Pvt.inav_tbl_type;
3862      lx_inav_tbl           Okl_Ina_Pvt.inav_tbl_type;
3863      l_seq                    NUMBER ;
3864      l_policy_symbol          VARCHAR2(10) ;
3865       CURSOR c_policy_symbol(product_id NUMBER) IS
3866        SELECT POLICY_SYMBOL , FACTOR_NAME ,FACTOR_CODE
3867           FROM OKL_INS_PRODUCTS_V
3868           WHERE id = product_id;
3869 	 BEGIN
3870        x_return_status := Okc_Api.G_RET_STS_SUCCESS;
3871        l_return_status := OKC_API.START_ACTIVITY(l_api_name, G_PKG_NAME,
3872                                             p_init_msg_list,l_api_version,
3873                                             p_api_version,'_PROCESS',
3874                                                       l_return_status);
3875             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3876                x_return_status := l_return_status ;
3877               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3878             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3879               x_return_status := l_return_status ;
3880               RAISE OKC_API.G_EXCEPTION_ERROR;
3881             END IF;
3882             x_message := '1';
3883 		   l_ipyv_rec := px_ipyv_rec ;
3884 
3885 		   l_ipyv_rec.date_proof_provided := OKC_API.G_MISS_DATE ;
3886 		   l_ipyv_rec.date_proof_required := OKC_API.G_MISS_DATE ;
3887 		   l_ipyv_rec.cancellation_date := OKC_API.G_MISS_DATE ;
3888                    l_ipyv_rec.activation_date := OKC_API.G_MISS_DATE ;
3889 
3890 
3891    -- For Optional Insurance
3892 	IF (l_ipyv_rec.ipy_type = 'OPTIONAL_POLICY' ) THEN
3893 
3894 			l_ipyv_rec.SFWT_FLAG := 'T' ;
3895 			         -- Policy Number // Quote Number generation
3896             BEGIN
3897               SELECT OKL_IPY_SEQ.NEXTVAL INTO l_seq FROM dual;
3898              EXCEPTION
3899           WHEN NO_DATA_FOUND THEN
3900                 -- store SQL error message on message stack for caller
3901                  OKC_API.set_message(G_APP_NAME,  'OKL_NO_SEQUENCE'  );
3902              WHEN OTHERS THEN
3903                  -- store SQL error message on message stack for caller
3904                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3905         		-- notify caller of an UNEXPECTED error
3906         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3907         		-- verify that cursor was closed
3908   		   END ;
3909              OPEN c_policy_symbol (l_ipyv_rec.IPT_ID) ;
3910              FETCH  c_policy_symbol INTO l_policy_symbol, l_ipyv_rec.INSURANCE_FACTOR,l_ipyv_rec.FACTOR_CODE ;
3911              --
3912               -- Take Care of Policy Symbol
3913              ---
3914              close  c_policy_symbol ;
3915 	    l_ipyv_rec.POLICY_NUMBER := l_policy_symbol || TO_CHAR(l_seq) ;
3916 	    l_ipyv_rec.QUOTE_YN := 'Y' ;
3917 	    l_ipyv_rec.ISS_CODE := 'QUOTE' ;
3918             IF (l_ipyv_rec.ADJUSTMENT IS NULL OR l_ipyv_rec.ADJUSTMENT = OKC_API.G_MISS_NUM) THEN
3919                l_ipyv_rec.ADJUSTMENT := 0 ;
3920             END IF;
3921             l_ipyv_rec.PREMIUM := l_ipyv_rec.CALCULATED_PREMIUM + l_ipyv_rec.ADJUSTMENT ;
3922              x_message := px_ipyv_rec.ADJUSTMENT;
3923 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
3924   IF(L_DEBUG_ENABLED='Y') THEN
3925     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
3926     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
3927   END IF;
3928   IF(IS_DEBUG_PROCEDURE_ON) THEN
3929     BEGIN
3930         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
3931     END;
3932   END IF;
3933            Okl_Ins_Policies_Pub.insert_ins_policies(
3934            p_api_version                  => l_api_version,
3935            p_init_msg_list                => OKC_API.G_FALSE,
3936            x_return_status                => l_return_status,
3937            x_msg_count                    => x_msg_count,
3938            x_msg_data                     => x_msg_data,
3939            p_ipyv_rec                     => l_ipyv_rec,
3940            x_ipyv_rec                     => lx_ipyv_rec
3941           );
3942   IF(IS_DEBUG_PROCEDURE_ON) THEN
3943     BEGIN
3944         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
3945     END;
3946   END IF;
3947 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
3948 
3949 	      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3950                x_return_status := l_return_status ;
3951              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3952           ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3953               x_return_status := l_return_status ;
3954               RAISE OKC_API.G_EXCEPTION_ERROR;
3955           END IF;
3956           px_ipyv_rec.ID :=   lx_ipyv_rec.ID;
3957   -- For Lease Insurance
3958      ELSIF (l_ipyv_rec.ipy_type = 'LEASE_POLICY' ) THEN
3959 		calc_lease_premium(
3960          p_api_version                   =>l_api_version,
3961     	 p_init_msg_list                => Okc_Api.G_FALSE,
3962          x_return_status                => l_return_status,
3963          x_msg_count                    =>  x_msg_count,
3964          x_msg_data                     => x_msg_data,
3965          px_ipyv_rec                     => l_ipyv_rec,
3966          x_message                      => l_message,
3967         x_iasset_tbl                  => l_iasset_tbl );
3968                      x_message := '2';
3969 
3970     	 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3971                 x_return_status := l_return_status ;
3972               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3973             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3974                x_return_status := l_return_status ;
3975               RAISE OKC_API.G_EXCEPTION_ERROR;
3976             END IF;
3977              x_message := '3';
3978 	     l_ipyv_rec.SFWT_FLAG := 'T' ;
3979             l_ipyv_rec.deductible := 0 ;
3980             -- Policy Number // Quote Number generation
3981             BEGIN
3982               SELECT OKL_IPY_SEQ.NEXTVAL INTO l_seq FROM dual;
3983              EXCEPTION
3984           WHEN NO_DATA_FOUND THEN
3985                 -- store SQL error message on message stack for caller
3986                  OKC_API.set_message(G_APP_NAME,  'OKL_NO_SEQUENCE'  );
3987              WHEN OTHERS THEN
3988                  -- store SQL error message on message stack for caller
3989                  OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
3990         		-- notify caller of an UNEXPECTED error
3991         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3992                 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3993         		-- verify that cursor was closed
3994   		   END ;
3995              OPEN c_policy_symbol (l_ipyv_rec.IPT_ID) ;
3996              FETCH  c_policy_symbol INTO l_policy_symbol , l_ipyv_rec.INSURANCE_FACTOR,l_ipyv_rec.FACTOR_CODE;
3997              ---Need to check for No Data Founf
3998              close  c_policy_symbol ;
3999              l_ipyv_rec.POLICY_NUMBER := l_policy_symbol || TO_CHAR(l_seq) ;
4000 	     l_ipyv_rec.QUOTE_YN := 'Y' ;
4001 	     l_ipyv_rec.ISS_CODE := 'QUOTE' ;
4002 
4003 	     IF (px_ipyv_rec.ADJUSTMENT IS NULL OR px_ipyv_rec.ADJUSTMENT = OKC_API.G_MISS_NUM) THEN
4004 	         l_ipyv_rec.ADJUSTMENT := 0 ;
4005 	     ELSE
4006 	       l_ipyv_rec.ADJUSTMENT  := px_ipyv_rec.ADJUSTMENT;
4007 	     END IF;
4008             l_ipyv_rec.PREMIUM := l_ipyv_rec.CALCULATED_PREMIUM + l_ipyv_rec.ADJUSTMENT ;
4009 
4010              x_message := px_ipyv_rec.ADJUSTMENT;
4011 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
4012   IF(IS_DEBUG_PROCEDURE_ON) THEN
4013     BEGIN
4014         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
4015     END;
4016   END IF;
4017            Okl_Ins_Policies_Pub.insert_ins_policies(
4018            p_api_version                  => l_api_version,
4019            p_init_msg_list                => OKC_API.G_FALSE,
4020            x_return_status                => l_return_status,
4021            x_msg_count                    => x_msg_count,
4022            x_msg_data                     => x_msg_data,
4023            p_ipyv_rec                     => l_ipyv_rec,
4024            x_ipyv_rec                     => lx_ipyv_rec
4025           );
4026   IF(IS_DEBUG_PROCEDURE_ON) THEN
4027     BEGIN
4028         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
4029     END;
4030   END IF;
4031 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
4032 
4033 	      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4034                x_return_status := l_return_status ;
4035              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4036           ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4037               x_return_status := l_return_status ;
4038               RAISE OKC_API.G_EXCEPTION_ERROR;
4039           END IF;
4040      px_ipyv_rec.ID :=   lx_ipyv_rec.ID;
4041    IF l_iasset_tbl IS NOT NULL THEN
4042      IF l_iasset_tbl.COUNT > 0 THEN
4043          FOR i IN l_iasset_tbl.first..l_iasset_tbl.last LOOP
4044          IF l_iasset_tbl.EXISTS(i) THEN
4045 	    l_inav_tbl(i).KLE_ID := l_iasset_tbl(i).KLE_ID ;
4046 	    l_inav_tbl(i).asset_premium := l_iasset_tbl(i).PREMIUM ;
4047 	    l_inav_tbl(i).IPY_ID  := lx_ipyv_rec.ID ;
4048             l_inav_tbl(i).LESSOR_premium := l_iasset_tbl(i).LESSOR_PREMIUM ;
4049 	    l_inav_tbl(i).ORG_ID := lx_ipyv_rec.ORG_ID ; --added by zrehman as part of Bug#6363652 9-Oct-2007
4050 	  END IF;
4051     END LOOP;
4052 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Assets_Pub.insert_ins_assets
4053   IF(IS_DEBUG_PROCEDURE_ON) THEN
4054     BEGIN
4055         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Assets_Pub.insert_ins_assets ');
4056     END;
4057   END IF;
4058     	Okl_Ins_Assets_Pub.insert_ins_assets(
4059 	          p_api_version                  => l_api_version,
4060           	  p_init_msg_list                => OKC_API.G_FALSE,
4061           	  x_return_status                => l_return_status,
4062                   x_msg_count                    => x_msg_count,
4063                   x_msg_data                     => x_msg_data,
4064                   p_inav_tbl                     => l_inav_tbl,
4065                   x_inav_tbl                     => lx_inav_tbl
4066           		);
4067   IF(IS_DEBUG_PROCEDURE_ON) THEN
4068     BEGIN
4069         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Assets_Pub.insert_ins_assets ');
4070     END;
4071   END IF;
4072 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Assets_Pub.insert_ins_assets
4073 
4074               IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4075                  x_return_status := l_return_status ;
4076 	  	        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4077       	     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4078                   x_return_status := l_return_status ;
4079 	  	        RAISE OKC_API.G_EXCEPTION_ERROR;
4080             END IF;
4081      END IF;
4082    END IF;
4083  END IF ;
4084  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4085                   x_message := 'ab2';
4086     EXCEPTION
4087           WHEN OKC_API.G_EXCEPTION_ERROR THEN
4088             x_return_status := OKC_API.HANDLE_EXCEPTIONS
4089             (
4090              l_api_name,
4091               G_PKG_NAME,
4092               'OKC_API.G_RET_STS_ERROR',
4093               x_msg_count,
4094               x_msg_data,
4095               '_PROCESS'
4096             );
4097           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4098             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4099             (
4100               l_api_name,
4101               G_PKG_NAME,
4102               'OKC_API.G_RET_STS_UNEXP_ERROR',
4103               x_msg_count,
4104               x_msg_data,
4105               '_PROCESS'
4106             );
4107           WHEN OTHERS THEN
4108             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4109             (
4110               l_api_name,
4111               G_PKG_NAME,
4112               'OTHERS',
4113               x_msg_count,
4114               x_msg_data,
4115               '_PROCESS'
4116             );
4117 	 END save_quote ;
4118   ---------------------------------------------------------------------------
4119   -- PROCEDURE save_accept_quote
4120   ---------------------------------------------------------------------------
4121   PROCEDURE save_accept_quote(
4122      p_api_version                  IN NUMBER,
4123      p_init_msg_list                IN VARCHAR2 ,
4124      x_return_status                OUT NOCOPY VARCHAR2,
4125      x_msg_count                    OUT NOCOPY NUMBER,
4126      x_msg_data                     OUT NOCOPY VARCHAR2,
4127      p_ipyv_rec                     IN  ipyv_rec_type,
4128 	 x_message                      OUT NOCOPY  VARCHAR2  )
4129 	 IS
4130 	 	 l_msg_count                   NUMBER ;
4131 	l_msg_data                      VARCHAR2(2000);
4132 	l_api_version                 CONSTANT NUMBER := 1;
4133     l_api_name                     CONSTANT VARCHAR2(30) := 'save_ACCEPT_quote';
4134     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
4135 	p_contract_id                 NUMBER ;
4136 	l_ipyv_rec            ipyv_rec_type ;
4137 	lx_ipyv_rec  ipyv_rec_type ;
4138    l_iaaset_tbl  iasset_tbl_type ;
4139    l_message      VARCHAR2(200);
4140    l_inav_tbl                     Okl_Ina_Pvt.inav_tbl_type;
4141    l_policy_number                    NUMBER;
4142 	 BEGIN
4143      x_return_status := Okc_Api.G_RET_STS_SUCCESS ;
4144      x_message := 'a' ;
4145              l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4146                                              G_PKG_NAME,
4147                                             p_init_msg_list,
4148                                             l_api_version,
4149                                             p_api_version,
4150                                                       '_PROCESS',
4151                                                       l_return_status);
4152             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4153               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4154             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4155               RAISE OKC_API.G_EXCEPTION_ERROR;
4156             END IF;
4157 		l_ipyv_rec := P_ipyv_rec 	;
4158 
4159 	 save_quote(
4160       p_api_version                  =>l_api_version ,
4161       p_init_msg_list                => Okc_Api.G_FALSE,
4162       x_return_status                => x_return_status,
4163       x_msg_count                  =>  x_msg_count,
4164       x_msg_data                   =>  x_msg_data,
4165       px_ipyv_rec                   =>  l_ipyv_rec,
4166 	  x_message                   =>   x_message  );
4167           x_message :=  TO_CHAR(l_ipyv_rec.ID) ;
4168             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4169               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4170             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4171               RAISE OKC_API.G_EXCEPTION_ERROR;
4172             END IF;
4173     	 accept_quote(p_api_version => l_api_version,
4174            		      p_init_msg_list => p_init_msg_list ,
4175            		      x_return_status => l_return_status  ,
4176 	        	      x_msg_count => x_msg_count  ,
4177 	        	      x_msg_data => x_msg_data ,
4178 	        	      p_quote_id => l_ipyv_rec.ID
4179      			      );
4180 
4181 			 	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4182 
4183 	         	   RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4184 				 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4185 
4186 	          	 	  RAISE OKC_API.G_EXCEPTION_ERROR;
4187 	        	 END IF;
4188     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4189     EXCEPTION
4190           WHEN OKC_API.G_EXCEPTION_ERROR THEN
4191             x_return_status := OKC_API.HANDLE_EXCEPTIONS
4192             (
4193               l_api_name,
4194               G_PKG_NAME,
4195               'OKC_API.G_RET_STS_ERROR',
4196               x_msg_count,
4197               x_msg_data,
4198               '_PROCESS'
4199             );
4200           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4201             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4202             (
4203               l_api_name,
4204               G_PKG_NAME,
4205               'OKC_API.G_RET_STS_UNEXP_ERROR',
4206               x_msg_count,
4207               x_msg_data,
4208               '_PROCESS'
4209             );
4210           WHEN OTHERS THEN
4211             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4212             (
4213               l_api_name,
4214               G_PKG_NAME,
4215               'OTHERS',
4216               x_msg_count,
4217               x_msg_data,
4218               '_PROCESS'
4219             );
4220 	 END save_accept_quote ;
4221   ---------------------------------------------------------------------------
4222   -- PROCEDURE calc_lease_premium
4223   ---------------------------------------------------------------------------
4224   -- Start of comments
4225   --
4226   -- PROCEDURE Name	: calc_lease_premium
4227   -- Description	:ToCalculate Lease Premium for Contract
4228   -- Business Rules	:
4229   -- Parameters		:
4230   -- Version		: 1.0
4231   -- Changes
4232          --SSDESHPA Bug# 6318957 Fixed for Inv Org Data not getting Populated
4233   -- End of Comments
4234 ---------------------------------------------------------------------------
4235 
4236      PROCEDURE   calc_lease_premium(
4237          p_api_version                   IN NUMBER,
4238 	     p_init_msg_list                IN VARCHAR2 ,
4239          x_return_status                OUT NOCOPY VARCHAR2,
4240          x_msg_count                    OUT NOCOPY NUMBER,
4241          x_msg_data                     OUT NOCOPY VARCHAR2,
4242          px_ipyv_rec                     IN OUT NOCOPY ipyv_rec_type,
4243 	 x_message                      OUT NOCOPY VARCHAR2,
4244          x_iasset_tbl                  OUT NOCOPY  iasset_tbl_type
4245      )IS
4246 	l_msg_count                   NUMBER ;
4247 	l_msg_data                      VARCHAR2(2000);
4248 	l_api_version                 CONSTANT NUMBER := 1;
4249     l_api_name                     CONSTANT VARCHAR2(30) := 'calc_lease_premium';
4250     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
4251     p_contract_id                 NUMBER ;
4252     -- Cursor to get ASSET information of passed contract
4253 	CURSOR okl_k_assets_csr (p_k_id       NUMBER) IS -- Bug 4105057
4254 SELECT OTAT.DESCRIPTION ASSET_DESCRIPTION,
4255        OTAB.current_units QUANTITY,
4256        KLE_TOP.OEC OEC,
4257        TL.NAME ASSET_CATEGORY,
4258        OICC.IAC_CODE INSURANCE_CLASS_code,
4259        KLE_TOP.ID KLE_ID,
4260        OTAB.ASSET_NUMBER ASSET_NUMBER
4261 FROM OKL_TXL_ASSETS_B OTAB,
4262      OKL_TXL_ASSETS_TL OTAT,
4263      OKX_ASST_CATGRS_V TL,
4264      OKL_INS_CLASS_CATS OICC,
4265      OKL_K_LINES KLE,
4266      OKL_K_LINES KLE_TOP,
4267      OKC_K_LINES_B CLE
4268 WHERE KLE.ID = OTAB.KLE_ID
4269   AND KLE.ID = CLE.ID
4270   AND CLE.CLE_ID = KLE_TOP.ID
4271   AND TL.CATEGORY_ID = OTAB.DEPRECIATION_ID
4272   AND OTAB.ID = OTAT.ID
4273   AND OICC.IAY_ID = OTAB.DEPRECIATION_ID
4274   AND SYSDATE BETWEEN OICC.DATE_FROM AND NVL(OICC.DATE_TO, SYSDATE +1)
4275   AND OTAT.LANGUAGE = USERENV ('LANG')
4276   AND NOT EXISTS
4277       (Select '1'
4278        from okc_k_items cim
4279        where cim.cle_id = otab.kle_id
4280        AND cim.object1_id1 is not null)
4281   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4282   AND OTAB.DNZ_KHR_ID  = p_k_id
4283 UNION
4284 SELECT OTAT.DESCRIPTION ASSET_DESCRIPTION,
4285        OTAB.current_units QUANTITY,
4286        KLE_TOP.OEC OEC,
4287        TL.NAME ASSET_CATEGORY,
4288        OICC.IAC_CODE INSURANCE_CLASS_code,
4289        KLE_TOP.ID KLE_ID,
4290        OTAB.ASSET_NUMBER ASSET_NUMBER
4291 FROM OKL_TXL_ASSETS_B OTAB,
4292      OKL_TXL_ASSETS_TL OTAT,
4293      OKX_ASST_CATGRS_V TL,
4294      OKL_INS_CLASS_CATS OICC,
4295      OKL_K_LINES KLE ,
4296      OKL_K_LINES KLE_TOP ,
4297      OKC_K_LINES_B CLE ,
4298      OKL_K_HEADERS KHR
4299 WHERE KLE.ID = OTAB.KLE_ID
4300   AND KLE.ID = CLE.ID
4301   AND CLE.CLE_ID = KLE_TOP.ID
4302   AND TL.CATEGORY_ID = KLE_TOP.ITEM_INSURANCE_CATEGORY
4303   AND OTAB.ID = OTAT.ID
4304   AND OICC.IAY_ID = KLE_TOP.ITEM_INSURANCE_CATEGORY
4305   AND SYSDATE BETWEEN OICC.DATE_FROM AND NVL(OICC.DATE_TO, SYSDATE +1)
4306   AND OTAT.LANGUAGE = USERENV('LANG')
4307   AND NOT EXISTS
4308       (Select '1'
4309        from okc_k_items cim
4310        where cim.cle_id = otab.kle_id
4311        AND cim.object1_id1 is not null)
4312   AND khr.id = CLE.DNZ_CHR_ID
4313   AND khr.deal_type = 'LOAN'
4314   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED','BOOKED' )
4315   AND OTAB.DNZ_KHR_ID  = p_k_id
4316 UNION
4317 SELECT  OTL.ITEM_DESCRIPTION ASSET_DESCRIPTION,
4318        MODEL.NUMBER_OF_ITEMS QUANTITY,
4319        KLE.OEC OEC,
4320        TL.NAME ASSET_CATEGORY,
4321        OICC.IAC_CODE INSURANCE_CLASS_code,
4322        KLE.ID KLE_ID,
4323        FAD.ASSET_NUMBER ASSET_NUMBER
4324 FROM OKL_K_LINES KLE ,
4325      OKC_K_LINES_B CLE,
4326      OKC_LINE_STYLES_B LS,
4327      OKC_K_ITEMS CIM,
4328      OKC_K_LINES_TL OTL,
4329      OKC_K_LINES_B ITEM_CLE,
4330      OKC_LINE_STYLES_B ITEM_LS,
4331      OKC_K_ITEMS MODEL ,
4332      OKX_ASST_CATGRS_V TL,
4333      OKL_INS_CLASS_CATS OICC,
4334      FA_ADDITIONS_B FAd,
4335      OKC_K_LINES_B FINAC_CLE,
4336      OKC_LINE_STYLES_B FINAC_LS
4337 WHERE FINAC_LS.LTY_CODE = 'FREE_FORM1'
4338   AND FINAC_CLE.LSE_ID = FINAC_LS.ID
4339   AND FINAC_CLE.ID = KLE.ID
4340   AND OICC.IAY_ID = FAD.ASSET_CATEGORY_ID
4341   AND SYSDATE BETWEEN OICC.DATE_FROM AND NVL(OICC.DATE_TO, SYSDATE +1)
4342   AND FAD.ASSET_ID = CIM.OBJECT1_ID1
4343   AND CIM.OBJECT1_ID2 = '#'
4344   AND TL.CATEGORY_ID = FAD.ASSET_CATEGORY_ID
4345   AND MODEL.JTOT_OBJECT1_CODE = 'OKX_SYSITEM'
4346   AND MODEL.DNZ_CHR_ID = ITEM_CLE.DNZ_CHR_ID
4347   AND MODEL.cle_id = ITEM_CLE.ID
4348   AND ITEM_LS.LTY_CODE = 'ITEM'
4349   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
4350   AND ITEM_CLE.CLE_ID = FINAC_CLE.ID
4351   AND OTL.ID = CLE.ID
4352   AND OTL.LANGUAGE = USERENV('LANG')
4353   AND CIM.DNZ_CHR_ID = CLE.DNZ_CHR_ID
4354   AND CIM.CLE_ID = CLE.ID
4355   AND CIM.JTOT_OBJECT1_CODE = 'OKX_ASSET'
4356   AND LS.ID = CLE.LSE_ID
4357   AND LS.LTY_CODE = 'FIXED_ASSET'
4358   AND CLE.CLE_ID = FINAC_CLE.ID
4359   AND FINAC_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4360   AND CLE.DNZ_CHR_ID = p_k_id
4361 UNION
4362 SELECT OTL.ITEM_DESCRIPTION ASSET_DESCRIPTION,
4363        MODEL.NUMBER_OF_ITEMS QUANTITY,
4364        KLE.OEC OEC,
4365        TL.NAME ASSET_CATEGORY,
4366        OICC.IAC_CODE INSURANCE_CLASS_code,
4367        KLE.ID KLE_ID,
4368        FINAN_CLET.NAME ASSET_NUMBER
4369 FROM OKL_K_LINES KLE,
4370      OKX_ASST_CATGRS_V TL,
4371      OKL_INS_CLASS_CATS OICC,
4372      OKC_K_LINES_B CLE,
4373      OKC_K_LINES_TL OTL,
4374      OKC_LINE_STYLES_B LS,
4375      OKC_K_LINES_B ITEM_CLE,
4376      OKC_LINE_STYLES_B ITEM_LS,
4377      OKC_K_ITEMS MODEL ,
4378      OKL_K_HEADERS KHR ,
4379      OKC_K_LINES_B FINAN_CLE ,
4380      OKC_K_LINES_TL FINAN_CLET
4381 WHERE MODEL.cle_id = ITEM_CLE.ID
4382   AND MODEL.DNZ_CHR_ID = ITEM_CLE.DNZ_CHR_ID
4383   AND ITEM_LS.LTY_CODE = 'ITEM'
4384   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
4385   AND ITEM_CLE.CLE_ID = FINAN_CLE.ID
4386   AND ITEM_CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
4387   AND CLE.CLE_ID = FINAN_CLE.ID
4388   AND CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
4389   AND TL.CATEGORY_ID = kle.ITEM_INSURANCE_CATEGORY
4390   AND OICC.IAY_ID = kle.ITEM_INSURANCE_CATEGORY
4391   AND SYSDATE BETWEEN OICC.DATE_FROM AND NVL(OICC.DATE_TO, SYSDATE +1)
4392   AND OTL.ID = CLE.ID
4393   AND OTL.LANGUAGE = USERENV('LANG')
4394   AND LS.ID = CLE.LSE_ID
4395   AND LS.LTY_CODE = 'FIXED_ASSET'
4396   AND FINAN_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4397   AND FINAN_CLET.LANGUAGE = USERENV('LANG')
4398   AND FINAN_CLET.ID = FINAN_CLE.ID
4399   AND KLE.ID = FINAN_CLE.ID
4400   AND FINAN_CLE.DNZ_CHR_ID = KHR.ID
4401   AND FINAN_CLE.CHR_ID = KHR.ID
4402   AND FINAN_CLE.CLE_ID is null
4403   AND KHR.DEAL_TYPE = 'LOAN'
4404   AND CLE.DNZ_CHR_ID = p_k_id;
4405 
4406 	 l_okl_k_assets_csr    okl_k_assets_csr%ROWTYPE;
4407 
4408    --- Cursor For Restrition country and asset
4409     CURSOR  okl_country_restriction (p_country_code VARCHAR2, p_asset_category NUMBER)  IS
4410        SELECT 'x'
4411        FROM OKL_INS_EXCLUSIONS_B
4412        WHERE COUNTRY_ID = p_country_code
4413        AND COLL_CODE = p_asset_category;
4414 
4415   --- Cursor For Restrition  and asset categor and SIC CODE
4416      CURSOR  okl_country_restriction (p_country_code VARCHAR2, p_asset_category NUMBER
4417      ,p_sic_code VARCHAR2)  IS
4418        SELECT 'x'
4419        FROM OKL_INS_EXCLUSIONS_B
4420        WHERE COUNTRY_ID = p_country_code
4421        AND COLL_CODE = p_asset_category
4422        AND SIC_CODE  =  p_sic_code;
4423 
4424   --- Cursor to check ASSET_CATEGORY
4425      cursor c_asset_category_valid (p_khr_id NUMBER) IS
4426      select 'x',OTAB.ASSET_NUMBER
4427      from OKL_TXL_ASSETS_B OTAB,
4428      OKL_K_LINES KLE,
4429      OKC_K_LINES_B CLE,
4430      OKC_LINE_STYLES_B LS
4431      WHERE OTAB.DNZ_KHR_ID = p_khr_id AND
4432      KLE.ID = OTAB.KLE_ID
4433      AND CLE.ID =  KLE.ID
4434      AND LS.ID = CLE.LSE_ID
4435      AND LS.LTY_CODE = 'FIXED_ASSET' -- Bug# 4102231
4436      and CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4437      and OTAB.DEPRECIATION_ID IS NULL
4438      UNION
4439      SELECT 'x', FAD.ASSET_NUMBER
4440      from
4441      OKC_K_LINES_B CLE,
4442      OKC_LINE_STYLES_B  LS,
4443      OKC_K_ITEMS CIM,
4444      FA_ADDITIONS_B FAD
4445      where
4446       FAD.ASSET_CATEGORY_ID IS  NULL
4447      AND FAD.ASSET_ID = CIM.OBJECT1_ID1
4448      AND CIM.DNZ_CHR_ID = CLE.DNZ_CHR_ID
4449      AND CIM.JTOT_OBJECT1_CODE   = 'OKX_ASSET'
4450      AND CIM.OBJECT1_ID1  = '#'
4451      AND CIM.CLE_ID = CLE.ID
4452      AND LS.LTY_CODE = 'FIXED_ASSET'
4453      AND LS.ID = CLE.LSE_ID
4454      and CLE.DNZ_CHR_ID = p_khr_id
4455      and CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' ) ;
4456 
4457 
4458 
4459 
4460 
4461     -- To get capital amount of contarct
4462     CURSOR okl_k_capital_amt_csr (p_khr_id       NUMBER) IS
4463 	 SELECT SUM(KLE.CAPITAL_AMOUNT) --,SUM(KLE.OEC)
4464 		FROM OKC_K_LINES_B CLEB,OKL_K_LINES KLE
4465 		  WHERE CLEB.ID = KLE.ID
4466           AND   CLEB.DNZ_CHR_ID = p_khr_id
4467           AND CLEB.CLE_ID IS NULL
4468 	   GROUP BY  CLEB.DNZ_CHR_ID ;
4469        -- To get deal size  in months
4470 
4471    	 	CURSOR okl_k_deal_size_csr (p_khr_id       NUMBER) IS
4472         SELECT MONTHS_BETWEEN(END_DATE,START_DATE), CONTRACT_NUMBER ----20-Jan-2005 Bug# 4056484 PAGARG removing rounding
4473 		FROM OKC_K_HEADERS_B
4474 		WHERE ID =  p_khr_id ;
4475         -- To get sum of oec
4476 CURSOR okl_k_total_oec_csr (p_khr_id       NUMBER) IS -- Bug 4105057
4477 SELECT SUM(OEC)
4478 FROM
4479 (
4480 SELECT  OTAB.DNZ_KHR_ID CONTRACT_ID,
4481         KLE_TOP.OEC OEC,
4482         OTAB.ASSET_NUMBER ASSET_NUMBER
4483 FROM OKL_TXL_ASSETS_B OTAB,
4484        OKL_K_LINES KLE,
4485        OKL_K_LINES KLE_TOP,
4486        OKC_K_LINES_B CLE
4487 WHERE KLE.ID = OTAB.KLE_ID
4488   AND KLE.ID = CLE.ID
4489   AND CLE.CLE_ID = KLE_TOP.ID
4490   AND NOT EXISTS
4491       (Select '1'
4492        from okc_k_items cim
4493        where cim.cle_id = otab.kle_id
4494        AND cim.object1_id1 is not null)
4495   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4496   AND OTAB.DNZ_KHR_ID  = p_khr_id
4497 UNION
4498 SELECT OTAB.DNZ_KHR_ID CONTRACT_ID,KLE_TOP.OEC OEC,
4499 OTAB.ASSET_NUMBER ASSET_NUMBER
4500 FROM OKL_TXL_ASSETS_B OTAB,
4501      OKL_K_LINES KLE ,
4502      OKL_K_LINES KLE_TOP ,
4503      OKC_K_LINES_B CLE ,
4504      OKL_K_HEADERS KHR
4505 WHERE KLE.ID = OTAB.KLE_ID
4506   AND KLE.ID = CLE.ID
4507   AND CLE.CLE_ID = KLE_TOP.ID
4508   AND NOT EXISTS
4509       (Select '1'
4510        from okc_k_items cim
4511        where cim.cle_id = otab.kle_id
4512        AND cim.object1_id1 is not null)
4513   AND khr.id = CLE.DNZ_CHR_ID
4514   AND khr.deal_type = 'LOAN'
4515   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED','BOOKED' )
4516   AND OTAB.DNZ_KHR_ID  = p_khr_id
4517 UNION
4518 select CLE.DNZ_CHR_ID CONTRACT_ID,
4519        KLE.OEC OEC,
4520        FAD.ASSET_NUMBER ASSET_NUMBER
4521 from OKL_K_LINES KLE ,
4522      OKC_K_LINES_B CLE,
4523      OKC_LINE_STYLES_B LS,
4524      OKC_K_ITEMS CIM,
4525      OKC_K_LINES_B ITEM_CLE,
4526      OKC_LINE_STYLES_B ITEM_LS,
4527      OKC_K_ITEMS MODEL ,
4528      FA_ADDITIONS_B FAd,
4529      OKC_K_LINES_B FINAC_CLE,
4530      OKC_LINE_STYLES_B FINAC_LS
4531 where FINAC_LS.LTY_CODE = 'FREE_FORM1'
4532   AND FINAC_CLE.LSE_ID = FINAC_LS.ID
4533   AND FINAC_CLE.ID = KLE.ID
4534   AND FAD.ASSET_ID = CIM.OBJECT1_ID1
4535   AND CIM.OBJECT1_ID2 = '#'
4536   AND MODEL.JTOT_OBJECT1_CODE = 'OKX_SYSITEM'
4537   AND MODEL.DNZ_CHR_ID = CLE.DNZ_CHR_ID
4538   AND MODEL.cle_id = ITEM_CLE.ID
4539   AND ITEM_LS.LTY_CODE = 'ITEM'
4540   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
4541   AND ITEM_CLE.CLE_ID = FINAC_CLE.ID
4542   AND CIM.DNZ_CHR_ID = CLE.DNZ_CHR_ID
4543   AND CIM.CLE_ID = CLE.ID
4544   AND CIM.JTOT_OBJECT1_CODE = 'OKX_ASSET'
4545   AND LS.ID = CLE.LSE_ID
4546   AND LS.LTY_CODE = 'FIXED_ASSET'
4547   AND CLE.CLE_ID = FINAC_CLE.ID
4548   AND FINAC_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4549   AND CLE.DNZ_CHR_ID = p_khr_id
4550 union
4551 SELECT CLE.DNZ_CHR_ID CONTRACT_ID,
4552        KLE.OEC OEC,
4553        FINAN_CLET.NAME ASSET_NUMBER
4554 FROM OKL_K_LINES KLE,
4555      OKC_K_LINES_B CLE,
4556      OKC_LINE_STYLES_B LS,
4557      OKC_K_LINES_B ITEM_CLE,
4558      OKC_LINE_STYLES_B ITEM_LS,
4559      OKC_K_ITEMS MODEL ,
4560      OKL_K_HEADERS KHR ,
4561      OKC_K_LINES_B FINAN_CLE ,
4562      OKC_K_LINES_TL FINAN_CLET
4563 WHERE MODEL.cle_id = ITEM_CLE.ID
4564   AND MODEL.DNZ_CHR_ID = ITEM_CLE.DNZ_CHR_ID
4565   AND ITEM_LS.LTY_CODE = 'ITEM'
4566   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
4567   AND ITEM_CLE.CLE_ID = FINAN_CLE.ID
4568   AND ITEM_CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
4569   AND CLE.CLE_ID = FINAN_CLE.ID
4570   AND CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
4571   AND LS.ID = CLE.LSE_ID
4572   AND LS.LTY_CODE = 'FIXED_ASSET'
4573   AND FINAN_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4574   AND FINAN_CLET.LANGUAGE = USERENV('LANG')
4575   AND FINAN_CLET.ID = FINAN_CLE.ID
4576   AND KLE.ID = FINAN_CLE.ID
4577   AND FINAN_CLE.DNZ_CHR_ID = KHR.ID
4578   AND FINAN_CLE.CHR_ID = KHR.ID
4579   AND FINAN_CLE.CLE_ID is null
4580   AND KHR.DEAL_TYPE = 'LOAN'
4581   AND CLE.DNZ_CHR_ID = p_khr_id)
4582   GROUP BY CONTRACT_ID;
4583 
4584 -- To get insurance product based on total oec, sysdate and insurer
4585 
4586          l_prt_count NUMBER := 0;
4587 
4588          -- inventory org change
4589          CURSOR okl_count_k_product_csr(p_isu_id NUMBER, p_total_oec NUMBER, p_from_date DATE ,p_inv_org_id NUMBER) IS
4590 	 SELECT COUNT(*) --Bug:3825159
4591          FROM OKL_INS_PRODUCTS_B IPTB,
4592     	      MTL_SYSTEM_ITEMS_B_KFV MSIB
4593       	 WHERE IPTB.IPD_ID =MSIB.INVENTORY_ITEM_ID
4594 	 AND iptb.isu_id  = p_isu_id
4595  	 AND IPTB.IPT_TYPE = 'LEASE_PRODUCT'
4596   	 AND p_total_oec BETWEEN IPTB.FACTOR_MIN AND IPTB.FACTOR_MAX
4597   	 AND p_from_date BETWEEN IPTB.DATE_FROM AND DECODE(IPTB.DATE_TO,NULL,p_from_date,IPTB.DATE_TO)
4598   	 AND MSIB.ORGANIZATION_ID = p_inv_org_id;
4599 
4600 
4601          l_product_name VARCHAR2(256);
4602          -- inventory org change
4603 		CURSOR 	okl_k_product_csr(p_isu_id NUMBER, p_total_oec NUMBER, p_from_date DATE ,p_inv_org_id NUMBER) IS
4604 			SELECT iptb.ID ,iptt.NAME --Bug:3825159
4605                         FROM OKL_INS_PRODUCTS_TL IPTT,
4606     			     OKL_INS_PRODUCTS_B IPTB,
4607 			     MTL_SYSTEM_ITEMS_B_KFV MSIB
4608 			WHERE IPTB.ID = IPTT.ID
4609 			AND IPTT.LANGUAGE = USERENV('LANG')
4610  			AND IPTB.IPD_ID = MSIB.INVENTORY_ITEM_ID
4611  			AND iptb.isu_id  = p_isu_id
4612  			AND IPTB.IPT_TYPE = 'LEASE_PRODUCT'
4613  			AND p_total_oec BETWEEN IPTB.FACTOR_MIN AND IPTB.FACTOR_MAX
4614  		        AND p_from_date BETWEEN IPTB.DATE_FROM AND DECODE(IPTB.DATE_TO,NULL,p_from_date,IPTB.DATE_TO)
4615  			AND MSIB.ORGANIZATION_ID =p_inv_org_id;
4616 
4617             -- To get insurance rate based on oec of asset_category insurance product , insurance class ,country,  from date and payment frequency
4618             CURSOR okl_ins_rate_csr(p_location_code VARCHAR2, p_oec NUMBER, p_ipt_id NUMBER , p_ins_class  VARCHAR2, p_from_date DATE, p_freq_factor NUMBER) IS
4619 		  		SELECT ((INSURED_RATE * p_oec )/100 ) * p_freq_factor,((INSURER_RATE * p_oec )/100 ) * p_freq_factor
4620 				FROM OKL_INS_RATES INR
4621 				WHERE INR.IPT_ID = p_ipt_id
4622                      AND INR.IAC_CODE = p_ins_class
4623                      AND INR.IC_ID = p_location_code
4624                      AND p_oec BETWEEN INR.FACTOR_RANGE_START AND INR.FACTOR_RANGE_END
4625                      AND p_from_date BETWEEN INR.DATE_FROM AND DECODE(INR.DATE_TO,NULL,p_from_date,INR.DATE_TO) ;
4626             -- tO SELECT INSURER
4627 		    CURSOR  l_isu_csr(p_isu_id NUMBER) IS
4628             SELECT 'x'
4629             FROM OKX_INS_PROVIDER_V
4630             WHERE PARTY_ID = p_isu_id	;
4631         l_ipyv_rec                     ipyv_rec_type;
4632     	l_max_deal  NUMBER ;
4633 	    l_max_term  NUMBER;
4634         l_min_term  NUMBER;
4635 	    l_freq_factor  NUMBER;
4636 	    l_con_deal_amount NUMBER;
4637 	    l_deal_size NUMBER;
4638 	    l_con_oec       NUMBER ;
4639 	    l_func_oec       NUMBER ;
4640 	    l_ins_class VARCHAR(30) ;
4641 	    l_con_total_oec NUMBER ;
4642 	    l_func_premium   NUMBER;
4643 	    l_func_lessor_premium NUMBER;
4644 	    l_product   NUMBER ;
4645             i           NUMBER  := 0 ;
4646 	    l_dummy_var VARCHAR(1) := '?' ;
4647 	    l_khr_st_date  DATE;
4648 	    l_khr_end_date  DATE;
4649         l_asset_number VARCHAR2(15);
4650         l_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE ;
4651 
4652         ----- For Multi Currency
4653         l_functional_currency  okl_k_headers_full_v.currency_code%TYPE := okl_accounting_util.get_func_curr_code;
4654 
4655 		x_contract_currency   okl_k_headers_full_v.currency_code%TYPE;
4656 		x_currency_conversion_type  okl_k_headers_full_v.currency_conversion_type%TYPE;
4657 		x_currency_conversion_rate  okl_k_headers_full_v.currency_conversion_rate%TYPE;
4658 		x_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
4659 		x_functional_covered_amt  NUMBER ;
4660 		p_contract_currency      fnd_currencies_vl.currency_code%TYPE ;
4661 
4662 		CURSOR l_contract_currency_csr(p_khr_id    IN   NUMBER) IS
4663 		    SELECT  currency_code , deal_type, AUTHORING_ORG_ID
4664 		    FROM    okl_k_headers_full_v
4665 	         WHERE   id = p_khr_id;
4666 
4667         l_fun_deal_amount NUMBER;
4668         l_fun_total_oec  NUMBER;
4669         l_authoring_org_id okl_k_headers_full_v.authoring_org_id%TYPE;
4670          --- for Organization
4671         l_inv_org_id NUMBER;
4672 
4673         --- Loan Contract
4674         CURSOR c_loan_asset_category(p_khr_id NUMBER) IS
4675         select 'x',CLE.NAME , cle.id
4676 	from OKL_K_LINES KLE,
4677 	 OKC_K_LINES_V CLE, OKC_LINE_STYLES_B  LS
4678 	WHERE CLE.ID =  KLE.ID
4679 	and CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
4680 	and KLE.ITEM_INSURANCE_CATEGORY IS NULL
4681 	AND LS.LTY_CODE = 'FREE_FORM1'
4682 	AND LS.ID = CLE.LSE_ID
4683 	AND CLE.chr_id = p_khr_id ;
4684 
4685 	CURSOR c_loan_item_category(p_financial_line_id NUMBER) IS
4686 	SELECT   mtl.ASSET_CATEGORY_ID, MTL.DESCRIPTION
4687 	FROM
4688 	  MTL_SYSTEM_ITEMS MTL,
4689 	  OKC_K_items FA_ITEM ,
4690 	  OKC_K_LINES_B MODEL,
4691 	  OKC_LINE_STYLES_B LS_MODEL
4692 	WHERE
4693 	  MTL.INVENTORY_ITEM_ID = FA_ITEM.object1_id1
4694 	  AND MTL.ORGANIZATION_ID =  FA_ITEM.object1_id2
4695 	   AND FA_ITEM.JTOT_OBJECT1_CODE = 'OKX_SYSITEM'
4696 	   AND MODEL.ID = FA_ITEM.cle_id
4697 	   AND LS_MODEL.ID = MODEL.LSE_ID
4698 	   AND LS_MODEL.LTY_CODE = 'ITEM'
4699            and MODEL.cle_id =p_financial_line_id;
4700 
4701            l_clev_rec	okl_okc_migration_pvt.clev_rec_type;
4702 	   lx_clev_rec	okl_okc_migration_pvt.clev_rec_type;
4703 	   l_klev_rec	Okl_Kle_Pvt.klev_rec_type ;
4704     	   lx_klev_rec	Okl_Kle_Pvt.klev_rec_type ;
4705 
4706     l_financial_line_id    NUMBER ;
4707     l_item      MTL_SYSTEM_ITEMS.DESCRIPTION%TYPE ;
4708     l_deal_type VARCHAR2(30);
4709     l_item_category NUMBER;
4710 
4711   BEGIN
4712    x_message  :=   Okc_Api.G_RET_STS_SUCCESS;
4713    x_return_status := OKC_API.START_ACTIVITY(l_api_name,
4714                                              G_PKG_NAME,
4715                                             p_init_msg_list,
4716                                             l_api_version,
4717                                             p_api_version,
4718                                             '_PROCESS',
4719                                             x_return_status);
4720     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4721        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4722     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4723        RAISE OKC_API.G_EXCEPTION_ERROR;
4724     END IF;
4725           -- data is required
4726    --- Check for INSURANCE PROVIDER'S VALADITY
4727     IF ( ( px_ipyv_rec.isu_id IS NULL)  OR  (px_ipyv_rec.isu_id = OKC_API.G_MISS_NUM)) THEN
4728           OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'isu_id');
4729           -- notify caller of an error
4730           x_return_status := OKC_API.G_RET_STS_ERROR;
4731           RAISE OKC_API.G_EXCEPTION_ERROR;
4732     ELSE
4733 		 OPEN   l_isu_csr(px_ipyv_rec.isu_id) ;
4734          FETCH l_isu_csr INTO l_dummy_var ;
4735          CLOSE l_isu_csr ;
4736           	-- still set to default means data was not found
4737          IF ( l_dummy_var = '?' ) THEN
4738             OKC_API.set_message(g_app_name,g_no_parent_record,
4739           				g_col_name_token,'isu_code',
4740 		  			g_parent_table_token ,
4741           		  	    	'OKX_INS_PROVIDER_V');
4742   	    x_return_status := OKC_API.G_RET_STS_ERROR;
4743             RAISE OKC_API.G_EXCEPTION_ERROR;
4744          END IF;
4745     END IF;
4746 
4747 
4748   -- For Payment frequency
4749   IF ((px_ipyv_rec.ipf_code IS NULL ) OR (px_ipyv_rec.ipf_code = OKC_API.G_MISS_CHAR )) THEN
4750 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'ipf_code');
4751 	x_return_status := OKC_API.G_RET_STS_ERROR;
4752 	RAISE OKC_API.G_EXCEPTION_ERROR;
4753 		-- Message --
4754   ELSE
4755 		   l_return_status := Okl_Util.check_lookup_code( G_FND_LOOKUP_PAYMENT_FREQ,px_ipyv_rec.ipf_code);
4756 	   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4757    	          x_return_status := l_return_status;
4758               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4759        ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4760 	       OKC_API.set_message(g_app_name,G_NO_PARENT_RECORD,g_col_name_token,
4761           		  	    	'Payment Frequency' ,g_parent_table_token ,'FND_LOOKUPS');
4762               x_return_status := l_return_status;
4763               RAISE OKC_API.G_EXCEPTION_ERROR;
4764        END IF;
4765  END IF;
4766         -- For Contract ID
4767 IF ((px_ipyv_rec.khr_id IS NULL ) OR (px_ipyv_rec.khr_id = OKC_API.G_MISS_NUM )) THEN
4768    x_return_status := OKC_API.G_RET_STS_ERROR;
4769    OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Contract ID');
4770    RAISE OKC_API.G_EXCEPTION_ERROR;
4771 ELSE
4772 
4773 
4774    	OPEN  l_contract_currency_csr(px_ipyv_rec.khr_id) ;
4775         FETCH l_contract_currency_csr INTO p_contract_currency, l_deal_type, l_authoring_org_id ;
4776         CLOSE l_contract_currency_csr ;
4777 
4778 
4779 
4780    l_dummy_var := '?';
4781    IF l_deal_type <>'LOAN' THEN --smoduga added check for loan contract dealtype.As part
4782                                   -- item_insurance_category changes.
4783   --  Validate Category
4784 
4785    	OPEN   c_asset_category_valid(px_ipyv_rec.khr_id) ;
4786          FETCH c_asset_category_valid INTO l_dummy_var, l_asset_number ;
4787          CLOSE c_asset_category_valid ;
4788           	-- still set to default means data was not found
4789          IF ( l_dummy_var = 'x' ) THEN
4790           		OKC_API.set_message(g_app_name,
4791                      'OKL_NO_CATEGORY',
4792           	    g_col_name_token,
4793                      l_asset_number
4794                     );
4795   			x_return_status := OKC_API.G_RET_STS_ERROR;
4796             RAISE OKC_API.G_EXCEPTION_ERROR;
4797          END IF;
4798 
4799     -- Validate Insurance Class
4800    ELSE
4801    -- To check item category in OKL_K_LINE
4802      OPEN   c_loan_asset_category(px_ipyv_rec.khr_id) ;
4803 
4804      LOOP
4805      	FETCH c_loan_asset_category INTO
4806      	    l_dummy_var,
4807      	    l_asset_number,
4808      	    l_financial_line_id ;
4809      	EXIT WHEN c_loan_asset_category%NOTFOUND;
4810      	  -- still set to default means data was not found
4811      	 IF ( l_dummy_var = 'x' ) THEN
4812      	    -- To check inventory setup
4813      	    l_item_category := NULL;
4814      	    OPEN   c_loan_item_category(l_financial_line_id) ;
4815      	    FETCH c_loan_item_category INTO
4816      	    l_item_category,l_item ;
4817      	    CLOSE c_loan_item_category;
4818      	    IF (l_item_category IS NULL) THEN  -- setup is incomplete
4819      	    -- otherwise throw an error
4820      	       		OKC_API.set_message(g_app_name,
4821 	                           'OKL_NO_ITEM_CATEGORY',
4822 	                	    'ITEM',
4823 	                           l_item
4824 	                          );
4825 	        	x_return_status := OKC_API.G_RET_STS_ERROR;
4826 	        	CLOSE c_loan_asset_category ;
4827 
4828 	                RAISE OKC_API.G_EXCEPTION_ERROR;
4829 
4830 
4831      	    ELSE -- need to poplate value in okl_k_lines (financial)
4832      	    -- If asset_category in inventory setup, populate it in OKL_K_LINES
4833      	       l_clev_rec.ID := l_financial_line_id ;
4834 	       l_klev_rec.ID := l_financial_line_id ;
4835 	       l_klev_rec.ITEM_INSURANCE_CATEGORY := l_item_category ;
4836 	        Okl_Contract_Pub.update_contract_line
4837 	            (
4838 	               p_api_version      => l_api_version ,
4839 	            p_init_msg_list           => OKC_API.G_FALSE,
4840 	            x_return_status      => x_return_status    ,
4841 	            x_msg_count           => x_msg_count,
4842 	            x_msg_data            => x_msg_data ,
4843 	            p_clev_rec            => l_clev_rec  ,
4844 	            p_klev_rec            => l_klev_rec,
4845 	            x_clev_rec            => lx_clev_rec,
4846 	            x_klev_rec            => lx_klev_rec );
4847 
4848      	         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4849      	                  CLOSE c_loan_asset_category ;
4850 	                    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4851 	          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4852 	          	CLOSE c_loan_asset_category ;
4853 	                    RAISE OKC_API.G_EXCEPTION_ERROR;
4854                   END IF;
4855 
4856 
4857 
4858 
4859      	    END IF;
4860 
4861      	  END IF;
4862        l_dummy_var := '?';
4863      END LOOP ;
4864      CLOSE c_loan_asset_category ;
4865 
4866 
4867    END IF;
4868 
4869 
4870 END IF;
4871  -- For From Date
4872 IF ((px_ipyv_rec.date_from IS NULL ) OR (px_ipyv_rec.date_from = OKC_API.G_MISS_DATE )) THEN
4873 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Effective From');
4874         x_return_status := OKC_API.G_RET_STS_ERROR;
4875 	RAISE OKC_API.G_EXCEPTION_ERROR;
4876 END IF;
4877 -- For To date
4878 IF ((px_ipyv_rec.date_to IS NULL ) OR (px_ipyv_rec.date_to = OKC_API.G_MISS_DATE )) THEN
4879 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Effective To');
4880         x_return_status := OKC_API.G_RET_STS_ERROR;
4881 	RAISE OKC_API.G_EXCEPTION_ERROR;
4882 END IF;
4883 -- Quote date
4884 IF ((px_ipyv_rec.DATE_QUOTED  IS NULL ) OR (px_ipyv_rec.DATE_QUOTED  = OKC_API.G_MISS_DATE )) THEN
4885 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Quote Effective From');
4886         x_return_status := OKC_API.G_RET_STS_ERROR;
4887 	RAISE OKC_API.G_EXCEPTION_ERROR;
4888 END IF;
4889 -- Quote expiry date
4890 IF ((px_ipyv_rec.DATE_QUOTE_EXPIRY IS NULL ) OR (px_ipyv_rec.DATE_QUOTE_EXPIRY = OKC_API.G_MISS_DATE )) THEN
4891 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Quote Effective To');
4892         x_return_status := OKC_API.G_RET_STS_ERROR;
4893 	RAISE OKC_API.G_EXCEPTION_ERROR;
4894 END IF;
4895 
4896  l_return_status:= Okl_Util.check_from_to_date_range( px_ipyv_rec.date_from
4897                       ,px_ipyv_rec.date_to );
4898        IF(l_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
4899                           -- store SQL error message on message stack for caller
4900              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
4901                                                 SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
4902  		     x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
4903              RAISE G_EXCEPTION_HALT_VALIDATION;
4904 	ELSIF (l_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
4905 		Okc_Api.set_message(p_app_name     => g_app_name,
4906 	 	 		p_msg_name     => 'OKL_INVALID_END_DATE', -- 3745151 fix for wrong error message
4907 	 	 		p_token1       => 'COL_NAME1',
4908 	 	 		p_token1_value => 'Effective To',
4909 	 	 		p_token2       => 'COL_NAME2',
4910 	 	 		p_token2_value => 'Effective From');
4911 		x_return_status := OKC_API.G_RET_STS_ERROR;
4912 		RAISE OKC_API.G_EXCEPTION_ERROR;
4913           END IF;
4914     	--- Get Contract Term
4915        BEGIN
4916              get_contract_term(px_ipyv_rec.khr_id ,
4917                  l_khr_st_date ,
4918                  l_khr_end_date  ,
4919                  l_return_status );
4920          IF(l_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
4921                           -- store SQL error message on message stack for caller
4922  		     x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
4923              RAISE G_EXCEPTION_HALT_VALIDATION;
4924 	 ELSIF (l_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
4925 		x_return_status := OKC_API.G_RET_STS_ERROR;
4926 		RAISE OKC_API.G_EXCEPTION_ERROR;
4927           END IF;
4928         		      -- verify that cursor was closed
4929   	 END ;
4930 
4931   ---  To validate with contract term
4932 
4933 	  IF (px_ipyv_rec.date_from < l_khr_st_date) OR (px_ipyv_rec.date_from > l_khr_end_date) THEN
4934                -- store SQL error message on message stack for caller
4935               Okc_Api.set_message( p_app_name     => g_app_name,
4936 	 	                  p_msg_name     => G_INVALID_INSURANCE_TERM );
4937 	 	x_return_status := OKC_API.G_RET_STS_ERROR;
4938 		RAISE OKC_API.G_EXCEPTION_ERROR;
4939            ELSIF (px_ipyv_rec.date_to < l_khr_st_date) OR (px_ipyv_rec.date_to > l_khr_end_date) THEN
4940                           Okc_Api.set_message( p_app_name     => g_app_name,
4941 	 	         p_msg_name     => G_INVALID_INSURANCE_TERM );
4942 	 	x_return_status := OKC_API.G_RET_STS_ERROR;
4943 		RAISE OKC_API.G_EXCEPTION_ERROR;
4944            END IF;
4945 
4946           -- gboomina Bug 4744724 - Added - Validate Quote's date with Insurance Term - Start
4947 	  IF (px_ipyv_rec.DATE_QUOTE_EXPIRY > px_ipyv_rec.date_to) THEN
4948                -- store SQL error message on message stack for caller
4949               Okc_Api.set_message( p_app_name     => g_app_name,
4950 	 	                  p_msg_name     => G_INVALID_QUOTE_TERM );
4951 	 	x_return_status := OKC_API.G_RET_STS_ERROR;
4952 		RAISE OKC_API.G_EXCEPTION_ERROR;
4953           END IF;
4954           -- gboomina Bug 4744724 - Added - Validate Quote's date with Insurance Term - End
4955 
4956 
4957 		-- For IPY TYPE
4958 IF ((px_ipyv_rec.ipy_type IS NULL ) OR (px_ipyv_rec.ipy_type = OKC_API.G_MISS_CHAR )) THEN
4959 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Type');
4960 	x_return_status := OKC_API.G_RET_STS_ERROR;
4961 	RAISE OKC_API.G_EXCEPTION_ERROR;
4962 ELSE
4963   IF(  px_ipyv_rec.ipy_type <> 'LEASE_POLICY' )THEN
4964 	OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Policy Type',G_COL_VALUE_TOKEN, 'Lease Policy' );
4965 	x_return_status := OKC_API.G_RET_STS_ERROR;
4966 	RAISE OKC_API.G_EXCEPTION_ERROR;
4967   END IF ;
4968 END IF;
4969 -- For Location
4970 IF ((px_ipyv_rec.territory_code IS NULL ) OR (px_ipyv_rec.territory_code = OKC_API.G_MISS_CHAR )) THEN
4971 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Location');
4972 	x_return_status := OKC_API.G_RET_STS_ERROR;
4973 	RAISE OKC_API.G_EXCEPTION_ERROR;
4974 END IF ;
4975 
4976 	OPEN okl_k_capital_amt_csr(px_ipyv_rec.KHR_ID);
4977 	FETCH okl_k_capital_amt_csr INTO l_con_deal_amount ;
4978 	IF( okl_k_capital_amt_csr%NOTFOUND) THEN
4979            OKC_API.set_message(G_APP_NAME, G_NO_CAPITAL_AMOUNT );
4980 	   IF okl_k_capital_amt_csr%ISOPEN THEN
4981 		CLOSE okl_k_capital_amt_csr;
4982 	    END IF;
4983 		x_return_status := OKC_API.G_RET_STS_ERROR;
4984 		RAISE OKC_API.G_EXCEPTION_ERROR;
4985 	END IF;
4986 	CLOSE okl_k_capital_amt_csr;
4987 
4988 
4989   -- Get  System Profile value of maximum deal amount....
4990 	l_max_deal := fnd_profile.value('OKLINMAXDEALSIZE');
4991 IF ((l_max_deal IS NULL ) OR (l_max_deal = OKC_API.G_MISS_NUM )) THEN
4992       x_return_status := OKC_API.G_RET_STS_ERROR;
4993 	OKC_API.set_message(G_APP_NAME, G_NO_SYSTEM_PROFILE,G_SYS_PROFILE_NAME,'OKLINMAXDEALSIZE' );
4994     x_message := OKL_INS_QUOTE_PVT.G_NO_INS ;
4995 	RAISE OKC_API.G_EXCEPTION_ERROR;
4996 END IF ;
4997 
4998 ---- Get deal amount in functional Currency
4999 OKL_ACCOUNTING_UTIL.convert_to_functional_currency
5000 (
5001  px_ipyv_rec.KHR_ID,
5002  l_functional_currency,
5003  l_khr_st_date,
5004  l_con_deal_amount,
5005  x_contract_currency  ,
5006  x_currency_conversion_type ,
5007  x_currency_conversion_rate,
5008  x_currency_conversion_date,
5009  l_fun_deal_amount
5010 ) ;
5011 
5012 
5013 -- Business Rule for Maximum Coverage.
5014 IF ( l_fun_deal_amount >l_max_deal) THEN
5015 
5016 	OKC_API.set_message(G_APP_NAME, G_NO_INSURANCE,G_COL_NAME_TOKEN,
5017    l_contract_number,'SYS_VALUE', 'Maximum Deal Amount'  );
5018 	x_return_status := OKC_API.G_RET_STS_ERROR;
5019     x_message := OKL_INS_QUOTE_PVT.G_NO_INS ;
5020 					-- Message --
5021 	RAISE OKC_API.G_EXCEPTION_ERROR;
5022 END IF;
5023 -- Get deal term in months
5024 
5025 		OPEN okl_k_deal_size_csr(px_ipyv_rec.KHR_ID);
5026 		-- Changed Contract ID to Contract Number 05/16/02
5027 		FETCH okl_k_deal_size_csr INTO l_deal_size, l_contract_number ;
5028 		IF( okl_k_deal_size_csr%NOTFOUND) THEN
5029 		  OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,l_contract_number );
5030 		  IF okl_k_deal_size_csr%ISOPEN THEN
5031 		    CLOSE okl_k_deal_size_csr;
5032 		  END IF;
5033 		  x_return_status := OKC_API.G_RET_STS_ERROR;
5034 		  RAISE OKC_API.G_EXCEPTION_ERROR;
5035 		END IF;
5036 		CLOSE okl_k_deal_size_csr;
5037 
5038     -- get max deal term for insurance providing
5039 	l_max_term := fnd_profile.value('OKLINMAXTERMFORINS');
5040 	IF ((l_max_term IS NULL ) OR (l_max_term = OKC_API.G_MISS_NUM )) THEN
5041 		OKC_API.set_message(G_APP_NAME, G_NO_SYSTEM_PROFILE,G_SYS_PROFILE_NAME,'OKLINMAXTERMFORINS' );
5042 	 	  x_return_status := OKC_API.G_RET_STS_ERROR;
5043 		RAISE OKC_API.G_EXCEPTION_ERROR;
5044 	END IF ;
5045     -- get min deal term for insurance providing
5046 	l_min_term := fnd_profile.value('OKLINMINTERMFORINS');
5047 	IF ((l_min_term IS NULL ) OR (l_min_term = OKC_API.G_MISS_NUM )) THEN
5048 		OKC_API.set_message(G_APP_NAME, G_NO_SYSTEM_PROFILE,
5049 		G_SYS_PROFILE_NAME,'OKLINMINTERMFORINS' );
5050 		  x_return_status := OKC_API.G_RET_STS_ERROR;
5051 		RAISE OKC_API.G_EXCEPTION_ERROR;
5052 	END IF ;
5053 
5054   -- Business Rule for term for which we can sell insurance
5055 	IF ( (l_deal_size >l_max_term) OR  (l_deal_size < l_min_term) ) THEN
5056         x_message := OKL_INS_QUOTE_PVT.G_NO_INS ;
5057 
5058         OKC_API.set_message(G_APP_NAME, G_NO_INSURANCE,G_COL_NAME_TOKEN,
5059 	   l_contract_number,'SYS_VALUE', 'Deal Term'  );
5060   	   x_return_status := OKC_API.G_RET_STS_ERROR;
5061 		RAISE OKC_API.G_EXCEPTION_ERROR;
5062 	END IF;
5063 
5064 --- To get INSURANCE oec total
5065 	OPEN okl_k_total_oec_csr(px_ipyv_rec.KHR_ID);
5066 	FETCH okl_k_total_oec_csr INTO l_con_total_oec ;
5067 	IF(okl_k_total_oec_csr%NOTFOUND) THEN
5068 	    OKC_API.set_message(G_APP_NAME, 'OKL_NO_CAPITAL_AMOUNT' );
5069 	    IF okl_k_total_oec_csr%ISOPEN THEN
5070 		CLOSE okl_k_total_oec_csr;
5071 	    END IF;
5072 	    x_return_status := OKC_API.G_RET_STS_ERROR;
5073 	    RAISE OKC_API.G_EXCEPTION_ERROR;
5074 	END IF ;
5075 	CLOSE okl_k_total_oec_csr;
5076 
5077 
5078 --- To Check total oec as zero
5079 IF ((l_con_total_oec IS NULL ) OR (l_con_total_oec = OKC_API.G_MISS_NUM ) or  (l_con_total_oec = 0 )) THEN
5080         OKC_API.set_message(G_APP_NAME, 'OKL_NO_CAPITAL_AMOUNT' );
5081 	x_return_status := OKC_API.G_RET_STS_ERROR;
5082 	RAISE OKC_API.G_EXCEPTION_ERROR;
5083 END IF ;
5084 px_ipyv_rec.covered_amount := l_con_total_oec ;
5085 
5086 
5087 
5088 ---- Convert total OEC to functional
5089   OKL_ACCOUNTING_UTIL.convert_to_functional_currency
5090   (
5091    px_ipyv_rec.KHR_ID,
5092    l_functional_currency,
5093    l_khr_st_date,
5094    l_con_total_oec,
5095    x_contract_currency  ,
5096    x_currency_conversion_type ,
5097    x_currency_conversion_rate,
5098    x_currency_conversion_date,
5099    l_fun_total_oec ) ;
5100 
5101   -- changes for Inventory org
5102   --Bug # 6318957 SSDESHPA Changes Start
5103   -- get min deal term for insurance providing
5104   --P1 bug 6318957
5105     IF px_ipyv_rec.ORG_ID IS NULL OR px_ipyv_rec.ORG_ID = OKC_API.G_MISS_NUM THEN
5106        px_ipyv_rec.ORG_ID := l_authoring_org_id;
5107     END IF;
5108    l_inv_org_id := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_ITEM_INV_ORG_ID,px_ipyv_rec.ORG_ID);
5109    IF ((l_inv_org_id IS NULL ) OR (l_inv_org_id = OKC_API.G_MISS_NUM )) THEN
5110   	OKC_API.set_message(G_APP_NAME, G_NO_SYSTEM_PROFILE,
5111    		G_SYS_PROFILE_NAME,'OKL_K_ITEMS_INVENTORY_ORG' );
5112    		  x_return_status := OKC_API.G_RET_STS_ERROR;
5113    		RAISE OKC_API.G_EXCEPTION_ERROR;
5114    END IF ;
5115    --Bug # 6318957 SSDESHPA Changes End
5116          -- inventory org change
5117          OPEN okl_count_k_product_csr(px_ipyv_rec.ISU_ID,l_fun_total_oec,px_ipyv_rec.date_from,l_inv_org_id );
5118      	  FETCH okl_count_k_product_csr INTO l_prt_count ;
5119 	  CLOSE okl_count_k_product_csr;
5120 
5121 
5122          -- inventory org change
5123 	OPEN okl_k_product_csr(px_ipyv_rec.ISU_ID,l_fun_total_oec,px_ipyv_rec.date_from ,l_inv_org_id );
5124 	FETCH okl_k_product_csr INTO l_product, l_product_name ;
5125 	IF(okl_k_product_csr%NOTFOUND) THEN
5126        		x_message := OKL_INS_QUOTE_PVT.G_NOT_ABLE ;
5127 		OKC_API.set_message(G_APP_NAME, 'OKL_NO_INSPRODUCT',
5128        		   G_COL_NAME_TOKEN,l_contract_number );
5129 		IF okl_k_product_csr%ISOPEN THEN
5130 		  	CLOSE okl_k_product_csr;
5131 		END IF;
5132 		x_return_status := OKC_API.G_RET_STS_ERROR;
5133 		RAISE OKC_API.G_EXCEPTION_ERROR;
5134 	ELSE
5135 
5136 	  IF(l_prt_count > 1 ) THEN
5137 	    x_message := l_product_name  ;
5138 	   LOOP
5139 	     FETCH okl_k_product_csr INTO l_product, l_product_name ;
5140 	     EXIT WHEN okl_k_product_csr%NOTFOUND;
5141 	     x_message := x_message || ',' || l_product_name ;
5142            END LOOP ;
5143 
5144 
5145 	   OKC_API.set_message(G_APP_NAME, 'OKL_MULTIPLE_LSEINS_PRODUCTS',
5146 	          		   G_COL_NAME_TOKEN,x_message );
5147 	   IF okl_k_product_csr%ISOPEN THEN
5148 	   	CLOSE okl_k_product_csr;
5149 	   END IF;
5150 	   x_return_status := OKC_API.G_RET_STS_ERROR;
5151 	   RAISE OKC_API.G_EXCEPTION_ERROR;
5152 	  END IF;
5153 	END IF;
5154     px_ipyv_rec.IPT_ID  := l_product ;
5155 	CLOSE okl_k_product_csr;
5156 
5157 -- To implement term of policy can not be greater or less than deal term
5158    	IF(px_ipyv_rec.ipf_code = 'MONTHLY') THEN
5159 		l_freq_factor := 1;
5160 	ELSIF(px_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
5161 		l_freq_factor := 1/2;
5162 	ELSIF(px_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
5163 			   l_freq_factor := 6;	--- ETC.
5164 	ELSIF(px_ipyv_rec.ipf_code = 'QUARTERLY') THEN
5165 			 	l_freq_factor := 3;
5166 	ELSIF(px_ipyv_rec.ipf_code = 'YEARLY') THEN
5167 			 	l_freq_factor := 12;
5168 --	ELSIF(px_ipyv_rec.ipf_code = 'LEASE_FREQUENCY') THEN
5169 			  -- To be implement
5170 --			 	l_freq_factor := 12;
5171 	ELSIF(px_ipyv_rec.ipf_code = 'LUMP_SUM') THEN
5172 	 	l_freq_factor := MONTHS_BETWEEN(px_ipyv_rec.date_to,px_ipyv_rec.date_from); --20-Jan-2005 Bug# 4056484 PAGARG removing rounding
5173 	END IF;
5174 
5175         -- To get assets for passed contract
5176       OPEN okl_k_assets_csr (px_ipyv_rec.khr_id)	;
5177 	    px_ipyv_rec.CALCULATED_PREMIUM := 0 ;
5178 	    LOOP
5179 	    i := i + 1 ;
5180         FETCH okl_k_assets_csr INTO l_okl_k_assets_csr;
5181 	    EXIT WHEN okl_k_assets_csr%NOTFOUND;
5182             l_con_oec     := l_okl_k_assets_csr.OEC ;
5183 	     IF ((l_con_oec IS NULL ) OR (l_con_oec = OKC_API.G_MISS_NUM )) THEN
5184 		   OKC_API.set_message(G_APP_NAME, G_NO_OEC,G_COL_NAME_TOKEN , l_okl_k_assets_csr.ASSET_DESCRIPTION);
5185 		   x_return_status := OKC_API.G_RET_STS_ERROR;
5186 		   RAISE OKC_API.G_EXCEPTION_ERROR;
5187 	     END IF ;
5188         x_iasset_tbl(i).KLE_ID    := l_okl_k_assets_csr.KLE_ID ;
5189     	 IF ((x_iasset_tbl(i).KLE_ID IS NULL ) OR (x_iasset_tbl(i).KLE_ID = OKC_API.G_MISS_NUM )) THEN
5190 		   OKC_API.set_message(G_APP_NAME, G_NO_KLE ,G_COL_NAME_TOKEN ,l_okl_k_assets_csr.ASSET_DESCRIPTION );
5191 		   x_return_status := OKC_API.G_RET_STS_ERROR;
5192 			RAISE OKC_API.G_EXCEPTION_ERROR;
5193 	    END IF ;
5194 		l_ins_class := l_okl_k_assets_csr.INSURANCE_CLASS_code ;
5195   		IF ((l_ins_class IS NULL ) OR (l_ins_class = OKC_API.G_MISS_CHAR )) THEN
5196              --
5197 		 OKC_API.set_message(G_APP_NAME, G_NO_INS_CLASS, 'ASSET_CAT',l_okl_k_assets_csr.ASSET_CATEGORY );
5198 		 x_return_status := OKC_API.G_RET_STS_ERROR;
5199 		 RAISE OKC_API.G_EXCEPTION_ERROR;
5200 		END IF ;
5201       BEGIN
5202        -- Conver to functional OEC
5203        OKL_ACCOUNTING_UTIL.convert_to_functional_currency
5204          (
5205           px_ipyv_rec.KHR_ID,
5206           l_functional_currency,
5207           l_khr_st_date,
5208           l_con_oec,
5209           x_contract_currency  ,
5210           x_currency_conversion_type ,
5211           x_currency_conversion_rate,
5212           x_currency_conversion_date,
5213           l_func_oec ) ;
5214 
5215 
5216          OPEN okl_ins_rate_csr(px_ipyv_rec.territory_code,
5217          l_func_oec,l_product,
5218          l_ins_class , px_ipyv_rec.DATE_FROM, l_freq_factor );
5219 	    FETCH okl_ins_rate_csr INTO l_func_premium, l_func_lessor_premium ;
5220 	    IF(okl_ins_rate_csr%NOTFOUND) THEN
5221                  x_message := OKL_INS_QUOTE_PVT.G_NOT_ABLE ;
5222 		   	 OKC_API.set_message(G_APP_NAME, 'OKL_NO_INSPRODUCT_RATE',
5223                       G_COL_NAME_TOKEN,l_contract_number );
5224 		    IF okl_ins_rate_csr%ISOPEN THEN
5225 		     	CLOSE okl_ins_rate_csr;
5226 		     END IF;
5227 		     x_return_status := OKC_API.G_RET_STS_ERROR;
5228 			 RAISE OKC_API.G_EXCEPTION_ERROR;
5229 	      END IF ;
5230 	      -- get lessor premium in contract currency
5231 
5232 	      OKL_ACCOUNTING_UTIL.convert_to_contract_currency
5233 	      (
5234 	       px_ipyv_rec.KHR_ID,
5235 	       l_functional_currency,
5236 	       px_ipyv_rec.DATE_FROM,
5237 	       l_func_lessor_premium,
5238 	       x_contract_currency  ,
5239 	       x_currency_conversion_type ,
5240 	       x_currency_conversion_rate ,
5241 	       x_currency_conversion_date ,
5242 	       x_iasset_tbl(i).LESSOR_PREMIUM
5243               ) ;
5244 
5245 	        x_iasset_tbl(i).LESSOR_PREMIUM :=
5246 	      okl_accounting_util.cross_currency_round_amount(p_amount =>
5247 	      x_iasset_tbl(i).LESSOR_PREMIUM,
5248                            p_currency_code => x_contract_currency);
5249 
5250 	      --- get asset premium in contract currency
5251 	      OKL_ACCOUNTING_UTIL.convert_to_contract_currency
5252 	      	      ( px_ipyv_rec.KHR_ID,
5253 	      	       l_functional_currency,
5254 	      	       px_ipyv_rec.DATE_FROM,
5255 	      	       l_func_premium,
5256 	      	       x_contract_currency  ,
5257 	      	       x_currency_conversion_type ,
5258 	      	       x_currency_conversion_rate ,
5259 	      	       x_currency_conversion_date ,
5260 	      	       x_iasset_tbl(i).PREMIUM  ) ;
5261 
5262 	      	      x_iasset_tbl(i).PREMIUM :=
5263 	      okl_accounting_util.cross_currency_round_amount(p_amount =>
5264 	               x_iasset_tbl(i).PREMIUM,
5265                        p_currency_code => x_contract_currency);
5266 
5267 		CLOSE okl_ins_rate_csr;
5268 
5269 		EXCEPTION
5270         WHEN OKC_API.G_EXCEPTION_ERROR THEN
5271 			  RAISE OKC_API.G_EXCEPTION_ERROR;
5272 		  WHEN OTHERS THEN
5273                     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
5274                    SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
5275 		      IF okl_ins_rate_csr%ISOPEN THEN
5276   	      	      CLOSE okl_ins_rate_csr;
5277   	          END IF;
5278   	          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR ;
5279 			  RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR ;
5280 	   END;
5281 		 px_ipyv_rec.CALCULATED_PREMIUM := px_ipyv_rec.CALCULATED_PREMIUM+ x_iasset_tbl(i).PREMIUM ;
5282 	END LOOP ;
5283      CLOSE okl_k_assets_csr ;
5284 	  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5285     EXCEPTION
5286           WHEN OKC_API.G_EXCEPTION_ERROR THEN
5287             x_return_status := OKC_API.HANDLE_EXCEPTIONS
5288             (
5289               l_api_name,
5290               G_PKG_NAME,
5291               'OKC_API.G_RET_STS_ERROR',
5292               x_msg_count,
5293               x_msg_data,
5294               '_PROCESS'
5295             );
5296           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5297             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5298             (
5299               l_api_name,
5300               G_PKG_NAME,
5301               'OKC_API.G_RET_STS_UNEXP_ERROR',
5302               x_msg_count,
5303               x_msg_data,
5304               '_PROCESS'
5305             );
5306           WHEN OTHERS THEN
5307             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5308             (
5309               l_api_name,
5310               G_PKG_NAME,
5311               'OTHERS',
5312               x_msg_count,
5313               x_msg_data,
5314               '_PROCESS'
5315             );
5316 END calc_lease_premium ;
5317 ----------------------------------------
5318   ---------------------------------------------------------------------------
5319   -- PROCEDURE calc_optional_premium
5320   ---------------------------------------------------------------------------
5321      PROCEDURE   calc_optional_premium(
5322          p_api_version                   IN NUMBER,
5323 		 p_init_msg_list                IN VARCHAR2 ,
5324          x_return_status                OUT NOCOPY VARCHAR2,
5325          x_msg_count                    OUT NOCOPY NUMBER,
5326          x_msg_data                     OUT NOCOPY VARCHAR2,
5327          p_ipyv_rec                     IN  ipyv_rec_type,
5328 	 x_message                      OUT NOCOPY VARCHAR2,
5329          x_ipyv_rec                  OUT NOCOPY  ipyv_rec_type
5330      )IS
5331 	l_msg_count                   NUMBER ;
5332 	l_msg_data                      VARCHAR2(2000);
5333 	l_api_version                 CONSTANT NUMBER := 1;
5334     l_api_name                     CONSTANT VARCHAR2(30) := 'calc_optional_premium';
5335     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
5336 	p_contract_id                 NUMBER ;
5337 
5338    	CURSOR okl_k_deal_size_csr (p_khr_id       NUMBER) IS
5339        -- Bug# 4056484 PAGARG removing rounding
5340        SELECT MONTHS_BETWEEN(END_DATE,START_DATE), CONTRACT_NUMBER
5341 		FROM OKC_K_HEADERS_B
5342 		WHERE ID =  p_khr_id ;
5343 
5344 
5345         CURSOR okl_ins_rate_csr(p_territory_code VARCHAR2,p_covered_amount NUMBER, p_ipt_id NUMBER , p_from_date DATE, p_freq_factor NUMBER, p_fact_val NUMBER) IS
5346 		  SELECT ((INSURED_RATE * p_covered_amount )/100 ) * p_freq_factor
5347 			FROM OKL_INS_RATES INR
5348 			WHERE INR.IPT_ID = p_ipt_id AND
5349 			p_fact_val BETWEEN INR.FACTOR_RANGE_START AND INR.FACTOR_RANGE_END AND
5350 			p_from_date BETWEEN INR.DATE_FROM AND DECODE(INR.DATE_TO,NULL,p_from_date,INR.DATE_TO)
5351             AND IC_ID = p_territory_code;
5352 
5353 	   CURSOR  l_isu_csr(p_isu_id NUMBER) IS
5354             SELECT 'x'
5355             FROM OKX_INSURER_V
5356             WHERE PARTY_ID = p_isu_id	;
5357          l_ipyv_rec                     ipyv_rec_type;
5358 	 l_max_deal  NUMBER ;
5359 	 l_max_term  NUMBER;
5360          l_min_term  NUMBER;
5361 	l_freq_factor  NUMBER;
5362 	l_deal_amount NUMBER;
5363 	l_deal_size NUMBER;
5364 	l_oec       NUMBER ;
5365 	l_ins_class VARCHAR(30) ;
5366 	l_total_oec NUMBER ;
5367 	l_product   NUMBER ;
5368         i           NUMBER  := 0 ;
5369 	l_dummy_var VARCHAR(1) := '?' ;
5370 	l_contract_number  OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE ;
5371 
5372 
5373 	l_functional_currency  okl_k_headers_full_v.currency_code%TYPE := okl_accounting_util.get_func_curr_code;
5374 
5375 	x_contract_currency   okl_k_headers_full_v.currency_code%TYPE;
5376 	x_currency_conversion_type  okl_k_headers_full_v.currency_conversion_type%TYPE;
5377 	x_currency_conversion_rate  okl_k_headers_full_v.currency_conversion_rate%TYPE;
5378 	x_currency_conversion_date okl_k_headers_full_v.currency_conversion_date%TYPE;
5379 	x_functional_covered_amt  NUMBER ;
5380 	p_contract_currency      fnd_currencies_vl.currency_code%TYPE ;
5381 
5382 	CURSOR l_contract_currency_csr(p_khr_id    IN   NUMBER) IS
5383 	    SELECT  currency_code, start_date
5384 	    FROM    okl_k_headers_full_v
5385          WHERE   id = p_khr_id;
5386          x_func_calculated_premium NUMBER ;
5387          l_con_start_date   DATE ;
5388 
5389   BEGIN
5390 
5391 --    x_no_data_found := TRUE;
5392 -- Get current database values
5393     x_message  :=   Okc_Api.G_RET_STS_SUCCESS;
5394    x_return_status := OKC_API.START_ACTIVITY(l_api_name,
5395                                              G_PKG_NAME,
5396                                             p_init_msg_list,
5397                                             l_api_version,
5398                                             p_api_version,
5399                                                '_PROCESS',
5400                                               x_return_status);
5401             IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5402               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5403             ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5404               RAISE OKC_API.G_EXCEPTION_ERROR;
5405             END IF;
5406    ------------------------------------------------------------------
5407 
5408            -- For Factor Value
5409    IF ((p_ipyv_rec.factor_value IS NULL ) OR (p_ipyv_rec.factor_value = OKC_API.G_MISS_NUM )) THEN
5410       x_return_status := OKC_API.G_RET_STS_ERROR;
5411       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Factor Value');
5412       RAISE OKC_API.G_EXCEPTION_ERROR;
5413    END IF;
5414 
5415 
5416 
5417     -- For Payment frequency
5418   IF ((p_ipyv_rec.ipf_code IS NULL ) OR (p_ipyv_rec.ipf_code = OKC_API.G_MISS_CHAR )) THEN
5419 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Payment Frequency');
5420 	x_return_status := OKC_API.G_RET_STS_ERROR;
5421 	RAISE OKC_API.G_EXCEPTION_ERROR;
5422 		-- Message --
5423   ELSE
5424 		   l_return_status := Okl_Util.check_lookup_code( G_FND_LOOKUP_PAYMENT_FREQ,p_ipyv_rec.ipf_code);
5425 	   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5426 	      x_return_status := l_return_status;
5427               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5428            ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5429 	     OKC_API.set_message(g_app_name,G_NO_PARENT_RECORD,g_col_name_token,
5430           		  	    	'Payment Frequency' ,g_parent_table_token ,'FND_LOOKUPS');
5431               x_return_status := l_return_status;
5432               RAISE OKC_API.G_EXCEPTION_ERROR;
5433            END IF;
5434  END IF;
5435         -- For Contract ID
5436 IF ((p_ipyv_rec.khr_id IS NULL ) OR (p_ipyv_rec.khr_id = OKC_API.G_MISS_NUM )) THEN
5437    x_return_status := OKC_API.G_RET_STS_ERROR;
5438    OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Contract ID');
5439    RAISE OKC_API.G_EXCEPTION_ERROR;
5440 ELSE
5441    -- TEMP validate contract id
5442    NULL;
5443 END IF;
5444 
5445  -- For From Date
5446 IF ((p_ipyv_rec.date_from IS NULL ) OR (p_ipyv_rec.date_from = OKC_API.G_MISS_DATE )) THEN
5447 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Effective From');
5448         x_return_status := OKC_API.G_RET_STS_ERROR;
5449 	RAISE OKC_API.G_EXCEPTION_ERROR;
5450 END IF;
5451 -- For To date
5452 IF ((p_ipyv_rec.date_to IS NULL ) OR (p_ipyv_rec.date_to = OKC_API.G_MISS_DATE )) THEN
5453 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Effective To');
5454         x_return_status := OKC_API.G_RET_STS_ERROR;
5455 	RAISE OKC_API.G_EXCEPTION_ERROR;
5456 END IF;
5457 
5458 -- Quote date
5459 IF ((p_ipyv_rec.DATE_QUOTED  IS NULL ) OR (p_ipyv_rec.DATE_QUOTED  = OKC_API.G_MISS_DATE )) THEN
5460 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Quote Effective From');
5461         x_return_status := OKC_API.G_RET_STS_ERROR;
5462 	RAISE OKC_API.G_EXCEPTION_ERROR;
5463 END IF;
5464 -- Quote expiry date
5465 IF ((p_ipyv_rec.DATE_QUOTE_EXPIRY IS NULL ) OR (p_ipyv_rec.DATE_QUOTE_EXPIRY = OKC_API.G_MISS_DATE )) THEN
5466 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Quote Effective To');
5467         x_return_status := OKC_API.G_RET_STS_ERROR;
5468 	RAISE OKC_API.G_EXCEPTION_ERROR;
5469 END IF;
5470 
5471  --- From and To Date
5472  l_return_status:= Okl_Util.check_from_to_date_range( p_ipyv_rec.date_from  ,p_ipyv_rec.date_to );
5473  IF(l_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
5474                           -- store SQL error message on message stack for caller
5475              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,
5476                                                 SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
5477  		     x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR ;
5478              RAISE G_EXCEPTION_HALT_VALIDATION;
5479  ELSIF (l_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
5480 	Okc_Api.set_message(
5481 	p_app_name     => g_app_name,
5482 	p_msg_name     => 'OKL_GREATER_THAN',
5483 	p_token1       => 'COL_NAME1',
5484 	p_token1_value => 'End Date',
5485 	p_token2       => 'COL_NAME2',
5486 	p_token2_value => 'Start Date'
5487 	);
5488      x_return_status := OKC_API.G_RET_STS_ERROR;
5489      RAISE OKC_API.G_EXCEPTION_ERROR;
5490  END IF;
5491 
5492 -- For Covered Amount Check
5493 IF ((p_ipyv_rec.COVERED_AMOUNT IS NULL ) OR (p_ipyv_rec.COVERED_AMOUNT = OKC_API.G_MISS_NUM )) THEN
5494 	OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Covered Amount');
5495         x_return_status := OKC_API.G_RET_STS_ERROR;
5496 	RAISE OKC_API.G_EXCEPTION_ERROR;
5497 END IF;
5498 ------------------------------------------------------------------
5499 -- For IPY TYPE
5500 IF ((p_ipyv_rec.ipy_type IS NULL ) OR (p_ipyv_rec.ipy_type = OKC_API.G_MISS_CHAR )) THEN
5501 		 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Policy Type');
5502 			x_return_status := OKC_API.G_RET_STS_ERROR;
5503 		RAISE OKC_API.G_EXCEPTION_ERROR;
5504 ELSE
5505 		IF(  p_ipyv_rec.ipy_type <> 'OPTIONAL_POLICY' )THEN
5506 			  OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'Policy Type',G_COL_VALUE_TOKEN, 'Optional Policy' );
5507 			   x_return_status := OKC_API.G_RET_STS_ERROR;
5508 			   RAISE OKC_API.G_EXCEPTION_ERROR;
5509 		END IF ;
5510 END IF;
5511 
5512 
5513 		OPEN okl_k_deal_size_csr(p_ipyv_rec.KHR_ID);
5514 		FETCH okl_k_deal_size_csr INTO l_deal_size , l_contract_number ;
5515 		IF( okl_k_deal_size_csr%NOTFOUND) THEN
5516 		    	   OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,l_contract_number );
5517 		  				x_return_status := OKC_API.G_RET_STS_ERROR;
5518 		  	IF okl_k_deal_size_csr%ISOPEN THEN
5519 		    	   CLOSE okl_k_deal_size_csr;
5520 		    	 END IF;
5521 			RAISE OKC_API.G_EXCEPTION_ERROR;
5522 		END IF;
5523 		CLOSE okl_k_deal_size_csr;
5524 
5525 
5526 
5527 
5528 
5529 
5530      		 IF(p_ipyv_rec.ipf_code = 'MONTHLY') THEN
5531 			   l_freq_factor := 1;
5532 		 ELSIF(p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
5533 			l_freq_factor := 6;	--- ETC.
5534 		 ELSIF(p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
5535 			l_freq_factor := 3;
5536 		 ELSIF(p_ipyv_rec.ipf_code = 'YEARLY') THEN
5537 			l_freq_factor := 12;
5538 --		 ELSIF(p_ipyv_rec.ipf_code = 'LEASE_FREQUENCY') THEN
5539 			  -- To be implement
5540 --		 	l_freq_factor := 12;
5541 		 ELSIF(p_ipyv_rec.ipf_code = 'LUMP_SUM') THEN
5542 		 -- To be implement
5543 			 	l_freq_factor := MONTHS_BETWEEN( p_ipyv_rec.date_to,p_ipyv_rec.date_from); --Bug# 4056484 PAGARG removing rounding
5544                 ELSE
5545                   OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,
5546                      G_COL_VALUE_TOKEN,'Payment Frequency' );
5547 		    x_return_status := OKC_API.G_RET_STS_ERROR;
5548            	    RAISE OKC_API.G_EXCEPTION_ERROR;
5549 		END IF;
5550 		x_ipyv_rec.CALCULATED_PREMIUM := 0 ;
5551 
5552          -- Convert covered amount to functional currency
5553          --1 Get Contract Currency
5554 
5555 
5556 	 	OPEN l_contract_currency_csr(p_ipyv_rec.KHR_ID);
5557 	 	FETCH l_contract_currency_csr INTO  p_contract_currency, l_con_start_date;
5558 	 	IF( l_contract_currency_csr%NOTFOUND) THEN
5559 	 	  OKC_API.set_message(G_APP_NAME, G_NO_K_TERM,G_COL_VALUE_TOKEN,l_contract_number );
5560 			x_return_status := OKC_API.G_RET_STS_ERROR;
5561 		  IF l_contract_currency_csr%ISOPEN THEN
5562 			CLOSE l_contract_currency_csr;
5563 		  END IF;
5564 	 	  RAISE OKC_API.G_EXCEPTION_ERROR;
5565 	 	END IF;
5566 	 	CLOSE l_contract_currency_csr;
5567 
5568 
5569          --2 get converted amount
5570          OKL_ACCOUNTING_UTIL.convert_to_functional_currency
5571 	 (
5572 	  p_ipyv_rec.khr_id,
5573 	  l_functional_currency ,
5574 	  l_con_start_date,
5575 	  p_ipyv_rec.COVERED_AMOUNT,
5576 	  x_contract_currency  ,
5577 	  x_currency_conversion_type ,
5578 	  x_currency_conversion_rate  ,
5579 	  x_currency_conversion_date,
5580 	  x_functional_covered_amt
5581           ) ;
5582 
5583 	 OPEN okl_ins_rate_csr(p_ipyv_rec.territory_code,x_functional_covered_amt
5584 	 ,p_ipyv_rec.ipt_id , p_ipyv_rec.DATE_FROM, l_freq_factor,
5585 	  p_ipyv_rec.factor_value );
5586 	  FETCH okl_ins_rate_csr INTO x_func_calculated_premium ;
5587 	 IF(okl_ins_rate_csr%NOTFOUND) THEN
5588 		OKC_API.set_message(G_APP_NAME, 'OKL_NO_OPTINSPRODUCT_RATE');
5589 		x_return_status := OKC_API.G_RET_STS_ERROR;
5590 	   IF okl_ins_rate_csr%ISOPEN THEN
5591   	      	      CLOSE okl_ins_rate_csr;
5592   	    END IF;
5593 			  RAISE OKC_API.G_EXCEPTION_ERROR;
5594 	END IF;
5595 	CLOSE okl_ins_rate_csr;
5596 
5597 	OKL_ACCOUNTING_UTIL.convert_to_contract_currency
5598 		 	 (
5599 			  p_ipyv_rec.khr_id,
5600 		 	  l_functional_currency,
5601 		 	  p_ipyv_rec.DATE_FROM,
5602 		 	  x_func_calculated_premium,
5603 		 	  x_contract_currency  ,
5604 		 	  x_currency_conversion_type ,
5605 		 	  x_currency_conversion_rate  ,
5606 		 	  x_currency_conversion_date,
5607 		 	  x_ipyv_rec.CALCULATED_PREMIUM
5608                   ) ;
5609                     x_ipyv_rec.CALCULATED_PREMIUM :=
5610 		  okl_accounting_util.cross_currency_round_amount(p_amount =>
5611 		    x_ipyv_rec.CALCULATED_PREMIUM,
5612                     p_currency_code => x_contract_currency);
5613 
5614 
5615 	  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5616     EXCEPTION
5617           WHEN OKC_API.G_EXCEPTION_ERROR THEN
5618             x_return_status := OKC_API.HANDLE_EXCEPTIONS
5619             (
5620               l_api_name,
5621               G_PKG_NAME,
5622               'OKC_API.G_RET_STS_ERROR',
5623               x_msg_count,
5624               x_msg_data,
5625               '_PROCESS'
5626             );
5627           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5628             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5629             (
5630               l_api_name,
5631               G_PKG_NAME,
5632               'OKC_API.G_RET_STS_UNEXP_ERROR',
5633               x_msg_count,
5634               x_msg_data,
5635               '_PROCESS'
5636             );
5637           WHEN OTHERS THEN
5638             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5639             (
5640               l_api_name,
5641               G_PKG_NAME,
5642               'OTHERS',
5643               x_msg_count,
5644               x_msg_data,
5645               '_PROCESS'
5646             );
5647 END calc_optional_premium ;
5648 
5649 ---------------------------------------------------------------------------
5650 -- Start of comments
5651 --skgautam
5652 -- Function Name	: calc_total_premium
5653 --workflow
5654 -- Description		:Calculates the total premium
5655 -- Business Rules	:
5656 -- Parameters		:
5657 -- Version		: 1.0
5658 -- End of Comments
5659 ---------------------------------------------------------------------------
5660 -- Added as part of fix of bug:3967640
5661 
5662 PROCEDURE calc_total_premium(p_api_version                  IN NUMBER,
5663                              p_init_msg_list                IN VARCHAR2 ,
5664                              x_return_status                OUT NOCOPY VARCHAR2,
5665                              x_msg_count                    OUT NOCOPY NUMBER,
5666                              x_msg_data                     OUT NOCOPY VARCHAR2,
5667                              p_pol_qte_id                   IN  VARCHAR2,
5668                              x_total_premium                OUT NOCOPY NUMBER) IS
5669 
5670  l_msg_count                   NUMBER ;
5671  l_msg_data                    VARCHAR2(2000);
5672  l_api_version                 CONSTANT NUMBER := 1;
5673  l_api_name                    CONSTANT VARCHAR2(30) := 'calc_total_premium';
5674  l_return_status               VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
5675 
5676  l_ipf_code                    VARCHAR2(50);
5677  l_freq_factor                 NUMBER;
5678  l_date_to                     DATE;
5679  l_date_from                   DATE;
5680  l_premium                     NUMBER := 0;
5681  l_pol_durs                    NUMBER := 0;
5682  l_tot_durs                    NUMBER := 0;
5683  l_tot_premium                 NUMBER := 0;
5684 
5685 --bug:3967640
5686  l_contract_id                 OKC_K_HEADERS_B.ID%TYPE;
5687  l_currency                    OKC_K_HEADERS_B.CURRENCY_CODE%TYPE;
5688  l_precision                   NUMBER:= 0;
5689 
5690 --Declaring cursor to get policy/quote premium,frequny info.
5691 CURSOR c_pol_qte_dtl(c_id NUMBER) IS
5692 SELECT premium,ipf_code,date_from,date_to,khr_id
5693 FROM   OKL_INS_POLICIES_B
5694 WHERE  ID = c_id;
5695 
5696 --Get contract currency
5697 CURSOR c_contract_currency_csr(p_khr_id    IN   NUMBER) IS
5698 SELECT  CURRENCY_CODE
5699 FROM    OKC_K_HEADERS_B
5700 WHERE   ID = p_khr_id;
5701 
5702 --Get contract currency Precision
5703 CURSOR c_currency_precision(p_currency_code VARCHAR2) IS
5704 SELECT PRECISION
5705 FROM fnd_currencies_vl
5706 WHERE currency_code = p_currency_code
5707 AND enabled_flag = 'Y'
5708 AND TRUNC(NVL(start_date_active, SYSDATE)) <= TRUNC(SYSDATE)
5709 AND TRUNC(NVL(end_date_active, SYSDATE))   >= TRUNC(SYSDATE);
5710 BEGIN
5711 
5712 x_return_status := OKC_API.START_ACTIVITY(l_api_name,
5713                                             G_PKG_NAME,
5714                                             p_init_msg_list,
5715                                             l_api_version,
5716                                             p_api_version,
5717                                             '_PROCESS',
5718                                             l_return_status);
5719             IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5720               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5721             ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5722               RAISE OKC_API.G_EXCEPTION_ERROR;
5723             END IF;
5724 
5725 --Open cursor for QOTE or POLICY
5726 OPEN c_pol_qte_dtl(p_pol_qte_id);
5727 FETCH c_pol_qte_dtl INTO l_premium,l_ipf_code,l_date_from,l_date_to,l_contract_id;
5728 CLOSE c_pol_qte_dtl;
5729 
5730 -- bug:3967640
5731 -- Open cursor to get currency code
5732 OPEN  c_contract_currency_csr(l_contract_id) ;
5733 FETCH c_contract_currency_csr INTO l_currency;
5734 CLOSE c_contract_currency_csr ;
5735 
5736 -- bug:3967640
5737 -- Open cursor to get currency precision
5738 OPEN c_currency_precision(l_currency);
5739 FETCH c_currency_precision INTO l_precision;
5740 CLOSE c_currency_precision;
5741 
5742 --getting the total policy duration
5743     l_pol_durs  := ROUND(MONTHS_BETWEEN( l_date_to,l_date_from));
5744 
5745 --setting frequency factor value based on payment frequency
5746     IF(l_ipf_code = 'MONTHLY') THEN
5747 			  l_freq_factor := 1;
5748     ELSIF(l_ipf_code = 'BI_MONTHLY') THEN
5749         l_freq_factor := 1/2;
5750 		 ELSIF(l_ipf_code = 'HALF_YEARLY') THEN
5751 			  l_freq_factor := 6;
5752 		 ELSIF(l_ipf_code = 'QUARTERLY') THEN
5753 			  l_freq_factor := 3;
5754 		 ELSIF(l_ipf_code = 'YEARLY') THEN
5755 			  l_freq_factor := 12;
5756 		 ELSE
5757         OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,
5758         G_COL_VALUE_TOKEN,'Payment Frequency' );
5759         x_return_status := OKC_API.G_RET_STS_ERROR;
5760         RAISE OKC_API.G_EXCEPTION_ERROR;
5761     END IF;
5762 	l_tot_durs    := l_pol_durs/l_freq_factor;
5763 -- calculating total premium
5764 	l_tot_premium := l_premium * l_tot_durs;
5765         l_tot_premium := TRUNC(l_tot_premium,l_precision); --bug:3967640
5766 	x_total_premium := l_tot_premium;
5767 
5768 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5769     EXCEPTION
5770           WHEN OKC_API.G_EXCEPTION_ERROR THEN
5771             x_return_status := OKC_API.HANDLE_EXCEPTIONS
5772             (
5773               l_api_name,
5774               G_PKG_NAME,
5775               'OKC_API.G_RET_STS_ERROR',
5776               x_msg_count,
5777               x_msg_data,
5778               '_PROCESS'
5779             );
5780           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5781             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5782             (
5783               l_api_name,
5784               G_PKG_NAME,
5785               'OKC_API.G_RET_STS_UNEXP_ERROR',
5786               x_msg_count,
5787               x_msg_data,
5788               '_PROCESS'
5789             );
5790           WHEN OTHERS THEN
5791             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5792             (
5793               l_api_name,
5794               G_PKG_NAME,
5795               'OTHERS',
5796               x_msg_count,
5797               x_msg_data,
5798               '_PROCESS'
5799             );
5800 END calc_total_premium;
5801 
5802   ---------------------------------------------------------------------------
5803   -- PROCEDURE api_copy
5804   ---------------------------------------------------------------------------
5805   PROCEDURE api_copy IS
5806   BEGIN
5807     NULL;
5808   END api_copy;
5809     FUNCTION get_stream_header (
5810     p_stmv_rec                     IN Okl_Stm_Pvt.stmv_rec_type,
5811     x_no_data_found                OUT NOCOPY BOOLEAN
5812   ) RETURN Okl_Stm_Pvt.stmv_rec_type IS
5813     CURSOR okl_stmv_pk_csr (p_khr_id            IN NUMBER,
5814 	p_kle_id   IN NUMBER,
5815 	p_sty_id IN NUMBER) IS
5816     SELECT  ID,
5817             OBJECT_VERSION_NUMBER,
5818             SGN_CODE,
5819             SAY_CODE,
5820             STY_ID,
5821             KLE_ID,
5822             KHR_ID,
5823             ACTIVE_YN,
5824             DATE_CURRENT,
5825             DATE_WORKING,
5826             DATE_HISTORY,
5827             COMMENTS,
5828             CREATED_BY,
5829             CREATION_DATE,
5830             LAST_UPDATED_BY,
5831             LAST_UPDATE_DATE,
5832             PROGRAM_ID,
5833             REQUEST_ID,
5834             PROGRAM_APPLICATION_ID,
5835             PROGRAM_UPDATE_DATE,
5836             LAST_UPDATE_LOGIN
5837       FROM Okl_Streams_V
5838      WHERE okl_streams_v.khr_id     = p_khr_id AND
5839 	 okl_streams_v.kle_id     = p_kle_id
5840 	 AND okl_streams_v.sty_id     = p_sty_id;
5841     l_okl_stmv_pk                  okl_stmv_pk_csr%ROWTYPE;
5842     l_stmv_rec                     Okl_Stm_Pvt.stmv_rec_type;
5843   BEGIN
5844     x_no_data_found := TRUE;
5845     -- Get current database values
5846     OPEN okl_stmv_pk_csr (p_stmv_rec.khr_id,p_stmv_rec.kle_id,p_stmv_rec.sty_id  );
5847     FETCH okl_stmv_pk_csr INTO
5848               l_stmv_rec.ID,
5849               l_stmv_rec.OBJECT_VERSION_NUMBER,
5850               l_stmv_rec.SGN_CODE,
5851               l_stmv_rec.SAY_CODE,
5852               l_stmv_rec.STY_ID,
5853               l_stmv_rec.KLE_ID,
5854               l_stmv_rec.KHR_ID,
5855               l_stmv_rec.ACTIVE_YN,
5856               l_stmv_rec.DATE_CURRENT,
5857               l_stmv_rec.DATE_WORKING,
5858               l_stmv_rec.DATE_HISTORY,
5859               l_stmv_rec.COMMENTS,
5860               l_stmv_rec.CREATED_BY,
5861               l_stmv_rec.CREATION_DATE,
5862               l_stmv_rec.LAST_UPDATED_BY,
5863               l_stmv_rec.LAST_UPDATE_DATE,
5864               l_stmv_rec.PROGRAM_ID,
5865               l_stmv_rec.REQUEST_ID,
5866               l_stmv_rec.PROGRAM_APPLICATION_ID,
5867               l_stmv_rec.PROGRAM_UPDATE_DATE,
5868               l_stmv_rec.LAST_UPDATE_LOGIN;
5869     x_no_data_found := okl_stmv_pk_csr%NOTFOUND;
5870     CLOSE okl_stmv_pk_csr;
5871     RETURN(l_stmv_rec);
5872   END get_stream_header;
5873   ----------------------------------------------------------------------------
5874   ------- activate_ins_streams
5875   ----------------------------------------------------------------------------
5876     PROCEDURE  activate_ins_streams(
5877      p_api_version                   IN NUMBER,
5878      p_init_msg_list                IN VARCHAR2 ,
5879      x_return_status                OUT NOCOPY  VARCHAR2,
5880      x_msg_count                    OUT NOCOPY NUMBER,
5881      x_msg_data                     OUT NOCOPY VARCHAR2,
5882      p_contract_id                  IN NUMBER
5883          ) IS
5884 	l_msg_count                   NUMBER ;
5885 	l_msg_data                      VARCHAR2(2000);
5886 	l_api_version                 CONSTANT NUMBER := 1;
5887     l_api_name                     CONSTANT VARCHAR2(30) := 'ACTIVATE_INS_STREAMS';
5888     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
5889 	CURSOR okl_ipyv_pk_csr (p_id       NUMBER) IS
5890 	     SELECT
5891             ID,
5892             OBJECT_VERSION_NUMBER,
5893             KHR_ID,
5894 	    KLE_ID,
5895             ISS_CODE,
5896             IPY_TYPE
5897       FROM Okl_Ins_Policies_V
5898      WHERE Okl_Ins_Policies_V.KHR_ID  = p_id
5899            AND ISS_CODE = 'ACCEPTED' ;
5900 	 l_okl_ipyv_pk_csr    okl_ipyv_pk_csr%ROWTYPE;
5901     l_ipyv_rec                     ipyv_rec_type;
5902 	lx_ipyv_rec                     ipyv_rec_type;
5903   BEGIN
5904 --    x_no_data_found := TRUE;
5905 -- Get current database values
5906    l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5907                                                        G_PKG_NAME,
5908                                                       p_init_msg_list,
5909                                                       l_api_version,
5910                                                       p_api_version,
5911                                                       '_PROCESS',
5912                                                       l_return_status);
5913 
5914             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5915               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5916             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5917               RAISE OKC_API.G_EXCEPTION_ERROR;
5918             END IF;
5919 
5920       OPEN okl_ipyv_pk_csr (p_contract_id)	;
5921 	  LOOP
5922        FETCH okl_ipyv_pk_csr INTO l_okl_ipyv_pk_csr;
5923 	      EXIT WHEN okl_ipyv_pk_csr%NOTFOUND;
5924               l_ipyv_rec.ID := l_okl_ipyv_pk_csr.ID ;
5925               l_ipyv_rec.OBJECT_VERSION_NUMBER := l_okl_ipyv_pk_csr.OBJECT_VERSION_NUMBER ;
5926               l_ipyv_rec.KLE_ID  := l_okl_ipyv_pk_csr.KLE_ID ;
5927 			  l_ipyv_rec.KHR_ID  := l_okl_ipyv_pk_csr.KHR_ID ;
5928 			  l_ipyv_rec.ISS_CODE := l_okl_ipyv_pk_csr.ISS_CODE ;
5929               l_ipyv_rec.IPY_TYPE  := l_okl_ipyv_pk_csr.IPY_TYPE ;
5930 	 	activate_ins_stream(
5931 	          p_api_version                    => l_api_version,
5932 	          p_init_msg_list                => Okc_Api.G_FALSE,
5933 	          x_return_status                => l_return_status,
5934 	          x_msg_count                    => x_msg_count,
5935 	          x_msg_data                     => x_msg_data,
5936 	          p_ipyv_rec                     => l_ipyv_rec
5937 	          );
5938 	       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5939             CLOSE okl_ipyv_pk_csr;
5940 	 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5941 	 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5942             CLOSE okl_ipyv_pk_csr;
5943 	 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
5944 	       END IF;
5945    		l_ipyv_rec.ISS_CODE := 'PENDING' ;
5946 
5947 		-- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
5948 		  IF(IS_DEBUG_PROCEDURE_ON) THEN
5949 		    BEGIN
5950 		        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
5951 		    END;
5952 		  END IF;
5953 		Okl_Ins_Policies_Pub.update_ins_policies(
5954 			         p_api_version                  => p_api_version,
5955 			          p_init_msg_list                => OKC_API.G_FALSE,
5956 			          x_return_status                => l_return_status,
5957 			          x_msg_count                    => x_msg_count,
5958 			          x_msg_data                     => x_msg_data,
5959 			          p_ipyv_rec                     => l_ipyv_rec,
5960 			          x_ipyv_rec                     => lx_ipyv_rec
5961 			          );
5962 		  IF(IS_DEBUG_PROCEDURE_ON) THEN
5963 		    BEGIN
5964 		        OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
5965 		    END;
5966 		  END IF;
5967 		-- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
5968 
5969 		 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5970 		    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5971 		 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5972 		    RAISE OKC_API.G_EXCEPTION_ERROR;
5973 		 END IF;
5974 
5975 	END LOOP ;
5976 	OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5977   --     x_no_data_found := okl_inav_pk_csr%NOTFOUND;
5978       CLOSE okl_ipyv_pk_csr;
5979     EXCEPTION
5980           WHEN OKC_API.G_EXCEPTION_ERROR THEN
5981             x_return_status := OKC_API.HANDLE_EXCEPTIONS
5982             (
5983               l_api_name,
5984               G_PKG_NAME,
5985               'OKC_API.G_RET_STS_ERROR',
5986               x_msg_count,
5987               x_msg_data,
5988               '_PROCESS'
5989             );
5990           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5991             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5992             (
5993               l_api_name,
5994               G_PKG_NAME,
5995               'OKC_API.G_RET_STS_UNEXP_ERROR',
5996               x_msg_count,
5997               x_msg_data,
5998               '_PROCESS'
5999             );
6000           WHEN OTHERS THEN
6001             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6002             (
6003               l_api_name,
6004               G_PKG_NAME,
6005               'OTHERS',
6006               x_msg_count,
6007               x_msg_data,
6008               '_PROCESS'
6009             );
6010 END activate_ins_streams ;
6011  ---------------------------------------------------------------------------
6012   -- FUNCTION validate_contract_line
6013   ---------------------------------------------------------------------------
6014  FUNCTION validate_contract_line (
6015           p_kle_id IN  NUMBER
6016         ) RETURN VARCHAR2 IS
6017           l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6018 		  l_dummy_var		VARCHAR2(1) := '?' ;
6019           CURSOR okl_k_line_csr(p_kle_id  IN NUMBER) IS
6020 	        SELECT 'x'
6021 	        FROM  OKL_K_LINES
6022        WHERE  OKL_K_LINES.ID = p_kle_id;
6023         BEGIN
6024           OPEN  okl_k_line_csr(p_kle_id);
6025          FETCH okl_k_line_csr INTO l_dummy_var ;
6026          CLOSE okl_k_line_csr ;
6027 		     	-- still set to default means data was not found
6028     		IF ( l_dummy_var = '?' ) THEN
6029     			OKC_API.set_message(g_app_name,
6030     						G_INVALID_CONTRACT_LINE);
6031     			l_return_status := OKC_API.G_RET_STS_ERROR;
6032     		END IF;
6033          RETURN(l_return_status);
6034          EXCEPTION
6035            WHEN OTHERS THEN
6036                -- store SQL error message on message stack for caller
6037                OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6038       		-- notify caller of an UNEXPECTED error
6039       		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6040       		-- verify that cursor was closed
6041 		IF okl_k_line_csr%ISOPEN THEN
6042 		   CLOSE okl_k_line_csr;
6043 		END IF;
6044           	RETURN(l_return_status);
6045       END validate_contract_line;
6046 -----------------------------------------------------------------------
6047    PROCEDURE  activate_ins_streams(
6048 		 errbuf           OUT NOCOPY VARCHAR2,
6049 		 retcode          OUT NOCOPY NUMBER
6050       )  IS
6051 	l_init_msg_list              VARCHAR2(1) := Okc_Api.G_FALSE ;
6052 	l_msg_count                   NUMBER ;
6053 	l_msg_data                      VARCHAR2(2000);
6054 	l_api_version                 CONSTANT NUMBER := 1;
6055     l_api_name                     CONSTANT VARCHAR2(30) := 'ACTIVATE_INS_STREAMS';
6056     l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
6057 	l_percentage_criteria         NUMBER ;
6058 	l_afterlease_criteria         NUMBER ;
6059 
6060     l_policy_id                   NUMBER;
6061     l_policy_number               VARCHAR2(50);
6062     activated_pol_tbl             OKL_INS_QUOTE_PVT.policy_tbl_type ;
6063     nonactivated_pol_tbl          OKL_INS_QUOTE_PVT.policy_tbl_type;
6064     l_activated_counter           NUMBER := 0;
6065     l_notactivated_counter        NUMBER := 0;
6066     l_khr_number                  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE := OKC_API.G_MISS_CHAR ;
6067 
6068     -- Bug 3742614 Modified Cursor definition
6069     CURSOR okl_eli_policies_csr(l_afterlease_criteria  IN NUMBER,l_percentage_criteria IN NUMBER )
6070     IS
6071       SELECT IPY.ID
6072             ,IPY.POLICY_NUMBER
6073             ,OKHB.CONTRACT_NUMBER
6074       FROM OKC_K_HEADERS_B OKHB
6075           ,OKL_INS_POLICIES_B IPY
6076           ,OKL_TRX_CONTRACTS CTRX
6077           ,OKC_STATUSES_B OSTS
6078       WHERE OKHB.ID = IPY.KHR_ID
6079         AND OKHB.ID = CTRX.KHR_ID
6080         AND OKHB.STS_CODE = OSTS.CODE
6081         AND OSTS.STE_CODE = 'ACTIVE'
6082         AND IPY.ISS_CODE = 'PENDING'
6083         AND CTRX.TCN_TYPE = 'BKG'
6084        --rkuttiya added for 12.1.1 Multi GAAP
6085         AND CTRX.REPRESENTATION_TYPE = 'PRIMARY'
6086        --
6087         AND (CTRX.DATE_TRANSACTION_OCCURRED + l_afterlease_criteria) < SYSDATE
6088 
6089       UNION
6090 
6091       SELECT IPY.ID
6092             ,IPY.POLICY_NUMBER
6093             ,OKHB.CONTRACT_NUMBER
6094       FROM OKC_K_HEADERS_B OKHB
6095           ,OKL_INS_POLICIES_B IPY
6096           ,OKL_IN_RAMOUNT_BC_V KLRA -- Bug 5897792
6097       WHERE KLRA.KLE_ID = IPY.KLE_ID
6098         AND OKHB.ID = IPY.KHR_ID -- smoduga fix for 4383565
6099         AND KLRA.AMOUNT_RECEIVED >= (IPY.PREMIUM * l_percentage_criteria);
6100 
6101     l_okl_eli_policies_csr	okl_eli_policies_csr%ROWTYPE;
6102 	BEGIN
6103 
6104       -- Bug 3742614 Formatted Output
6105       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'-------------------------------------------------------------');
6106       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'---      Automatic Insurance Activation Start      ---');
6107       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'-------------------------------------------------------------');
6108       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'--Request: '|| FND_GLOBAL.CONC_REQUEST_ID|| ' ---------Date: '||TO_CHAR(SYSDATE)||'  ---');
6109       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'-------------------------------------------------------------');
6110 
6111 	-- Get values from system profile
6112 	l_afterlease_criteria := fnd_profile.value('OKLINDAYSFORACTIVATION');
6113     -- Bug 3742614 changed the profile name and output message
6114 	l_percentage_criteria := fnd_profile.value('OKLINPERCENTFORACTIVATION');
6115 	-- Check for NULL values and return if either of these is null
6116 	IF l_afterlease_criteria = Okc_Api.G_MISS_NUM OR l_afterlease_criteria IS NULL    THEN
6117 		 Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'SYSTEM PROFILE FOR OKLINDAYSFORACTIVATION IS NOT defined');
6118 	   RETURN;
6119     END IF;
6120 		-- Check for NULL values and return if any of these is null
6121 	IF l_percentage_criteria = Okc_Api.G_MISS_NUM OR     l_percentage_criteria IS NULL    THEN
6122         Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'SYSTEM PROFILE FOR OKLINPERCENTFORACTIVATION IS NOT defined');
6123         RETURN;
6124     END IF;
6125     OPEN  okl_eli_policies_csr(l_afterlease_criteria ,l_percentage_criteria );
6126 	LOOP
6127       FETCH okl_eli_policies_csr INTO l_okl_eli_policies_csr;
6128 	    EXIT WHEN okl_eli_policies_csr%NOTFOUND;
6129 
6130         l_policy_id := l_okl_eli_policies_csr.ID;
6131         l_policy_number := l_okl_eli_policies_csr.POLICY_NUMBER;
6132         l_khr_number := l_okl_eli_policies_csr.CONTRACT_NUMBER;
6133 
6134         -- Bug 3742614 Calling different procedure to activate policy
6135 	 	activate_ins_policy(
6136 	          p_api_version                    => l_api_version,
6137 	          p_init_msg_list                => Okc_Api.G_TRUE,
6138 	          x_return_status                => l_return_status,
6139 	          x_msg_count                    => l_msg_count,
6140 	          x_msg_data                     => l_msg_data,
6141 	          p_ins_policy_id                => l_policy_id
6142 	          );
6143 
6144         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6145           -- Bug 3742614 building the table for Formated output for activated and
6146           -- errored policies with reasons
6147           Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'Policy Number : ' ||l_policy_number|| ' Can not be Activated' );
6148           Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'--Reason IS ----' );
6149           FOR i IN 1..l_msg_count
6150           LOOP
6151             JTF_PLSQL_API.get_messages(i,l_msg_data);
6152             Fnd_File.PUT_LINE(Fnd_File.OUTPUT,l_msg_data );
6153           END LOOP;
6154           l_notactivated_counter := l_notactivated_counter + 1;
6155           nonactivated_pol_tbl(l_notactivated_counter).CONTRACT_NUMBER := l_khr_number;
6156           nonactivated_pol_tbl(l_notactivated_counter).POLICY_NUMBER := l_policy_number;
6157           RETURN;
6158         ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR)
6159         THEN
6160           Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'Policy Number : ' ||l_policy_number || ' Can not be Activated' );
6161           Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'--Reason is ----' );
6162           FOR i IN 1..l_msg_count
6163           LOOP
6164             JTF_PLSQL_API.get_messages(i,l_msg_data);
6165             Fnd_File.PUT_LINE(Fnd_File.OUTPUT,l_msg_data );
6166           END LOOP;
6167           l_notactivated_counter:= l_notactivated_counter + 1 ;
6168           nonactivated_pol_tbl(l_notactivated_counter).CONTRACT_NUMBER := l_khr_number;
6169           nonactivated_pol_tbl(l_notactivated_counter).POLICY_NUMBER := l_policy_number;
6170         ELSE
6171           l_activated_counter:= l_activated_counter + 1;
6172           activated_pol_tbl(l_activated_counter).CONTRACT_NUMBER := l_khr_number;
6173           activated_pol_tbl(l_activated_counter).POLICY_NUMBER := l_policy_number;
6174         END IF;
6175 
6176 	END LOOP ;
6177     CLOSE okl_eli_policies_csr ;
6178 
6179     -- Bug 3742614 Formated output
6180     Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'---------------------- Summary -----------------------------');
6181     IF (activated_pol_tbl.COUNT > 0)
6182     THEN
6183       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'---- Policies Activated -----');
6184       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||'Contract Number     Policy Number ' );
6185       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||'--------------------------------' );
6186 
6187       FOR i IN activated_pol_tbl.first..activated_pol_tbl.last
6188       LOOP
6189         Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||activated_pol_tbl(i).CONTRACT_NUMBER  ||'    ' ||activated_pol_tbl(i).POLICY_NUMBER  );
6190       END LOOP;
6191 
6192       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'Total    = ' || activated_pol_tbl.COUNT);
6193     END IF;
6194 
6195     IF (nonactivated_pol_tbl.COUNT > 0)
6196     THEN
6197       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'---- Policies Not Activated -----');
6198       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||'Contract Number     Policy Number ' );
6199       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||'--------------------------------' );
6200 
6201       FOR n IN nonactivated_pol_tbl.first..nonactivated_pol_tbl.last
6202       LOOP
6203         Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'                            '||nonactivated_pol_tbl(n).CONTRACT_NUMBER  ||'    ' ||nonactivated_pol_tbl(n).POLICY_NUMBER );
6204       END LOOP;
6205 
6206       Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'Total   = ' || nonactivated_pol_tbl.COUNT);
6207     END IF;
6208 
6209     Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'-------------------------------------------------------------');
6210     Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'---      Automatic Insurance Activation End      ---');
6211     Fnd_File.PUT_LINE(Fnd_File.OUTPUT,'-------------------------------------------------------------');
6212 
6213   END  activate_ins_streams ;
6214 ---------------------------------------------------------------------------
6215   -- PROCEDURE activate_ins_stream
6216   ---------------------------------------------------------------------------
6217 PROCEDURE  activate_ins_stream(
6218      p_api_version                   IN NUMBER,
6219      p_init_msg_list                IN VARCHAR2 ,
6220      x_return_status                OUT NOCOPY  VARCHAR2,
6221      x_msg_count                    OUT NOCOPY NUMBER,
6222      x_msg_data                     OUT NOCOPY VARCHAR2,
6223      p_ipyv_rec                     IN ipyv_rec_type
6224          )IS
6225 
6226         p_sty_id NUMBER;
6227 	l_stmv_rec		     Okl_Streams_Pvt.stmv_rec_type;
6228 	l_row_notfound                 BOOLEAN := TRUE;
6229 	l_msg_count                   NUMBER ;
6230 	l_msg_data                      VARCHAR2(2000);
6231 	l_api_version                 CONSTANT NUMBER := 1;
6232     	l_api_name                     CONSTANT VARCHAR2(30) := 'ACTIVATE_INS_STREAM';
6233     	l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
6234 	x_stmv_rec		   Okl_Streams_Pvt.stmv_rec_type;
6235 	l_khr_status                    VARCHAR2 (30) ;
6236 	lx_ipyv_rec       				ipyv_rec_type ;
6237 	l_ipyv_rec                     ipyv_rec_type ;
6238         l_contract_number           VARCHAR2(120); --3745151 Invalid error message fix.
6239    BEGIN
6240 		   l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6241                                                        G_PKG_NAME,
6242                                                       p_init_msg_list,
6243                                                       l_api_version,
6244                                                       p_api_version,
6245                                                       '_PROCESS',
6246                                                       l_return_status);
6247 
6248             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6249               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6250             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6251               RAISE OKC_API.G_EXCEPTION_ERROR;
6252             END IF;
6253 
6254 -------------------------------------------------------------------------
6255 ---- Check for Status of Contract
6256 ---------------------------------------------------------------------------
6257 	l_return_status :=	get_contract_status(p_ipyv_rec.khr_id, l_khr_status);
6258 
6259     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6260        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6261     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6262        RAISE OKC_API.G_EXCEPTION_ERROR;
6263     END IF;
6264 
6265 
6266 -------------------------------------------------------------------------
6267 ---- Check for Policy Statuses
6268 ---------------------------------------------------------------------------
6269 
6270    IF (p_ipyv_rec.ISS_CODE <> 'ACCEPTED' ) THEN
6271       OKC_API.set_message(G_APP_NAME,'OKL_INVALID_POLICY' );
6272 	  l_return_status := OKC_API.G_RET_STS_ERROR ;
6273 	   RAISE OKC_API.G_EXCEPTION_ERROR;
6274    END IF ;
6275 
6276 
6277 -------------------------------------------------------------------------
6278 ---- Check for Contract Line
6279 ---------------------------------------------------------------------------
6280 l_return_status :=	validate_contract_line(p_ipyv_rec.kle_id);
6281 
6282     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6283        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6284     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6285        RAISE OKC_API.G_EXCEPTION_ERROR;
6286     END IF;
6287 ---------------------------------------------------------------------
6288 ----------- get stream
6289 -------------------------------------------------------------------
6290         --  get Stream type
6291 
6292      -- Call to get the stream type id, change made for insurance user defined streams,  bug 3924300
6293 
6294            OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
6295                                                    'INSURANCE_RECEIVABLE',
6296                                                    l_return_status,
6297                                                    p_sty_id);
6298 
6299         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6300          OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
6301                       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6302            ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6303                      OKC_API.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE RECEIVABLE'); --bug 4024785
6304                      RAISE OKC_API.G_EXCEPTION_ERROR;
6305            END IF;
6306 
6307 
6308 
6309         	-- SET values to retrieve record
6310 	     l_stmv_rec.khr_id :=  p_ipyv_rec.khr_id ;
6311 	     l_stmv_rec.kle_id :=  p_ipyv_rec.kle_id ;
6312 	     l_stmv_rec.sty_id :=  p_sty_id ;
6313 
6314 
6315 	     -- get Stream Record
6316 		  l_stmv_rec := get_stream_header(l_stmv_rec,l_row_notfound );
6317 
6318 	      IF (l_row_notfound = TRUE ) THEN
6319 			 OKC_API.set_message(G_APP_NAME,
6320              	   G_NO_STREAM_REC_FOUND
6321                			   );
6322 		     RAISE OKC_API.G_EXCEPTION_ERROR;
6323 		  END IF;
6324 
6325 		 IF (   UPPER(l_stmv_rec.active_yn)= 'Y'  ) THEN
6326                     SELECT contract_number INTO l_contract_number
6327                     from OKC_K_HEADERS_B
6328                     WHERE ID = p_ipyv_rec.khr_id;
6329 	       OKC_API.set_message(G_APP_NAME,
6330                G_STREAM_ALREADY_ACTIVE,'COL_NAME',l_contract_number);
6331 
6332 		     RAISE OKC_API.G_EXCEPTION_ERROR;
6333 		  END IF;
6334 		  l_stmv_rec.active_yn := 'Y' ;
6335 		  l_stmv_rec.date_current := SYSDATE ;
6336           l_stmv_rec.SAY_CODE := 'CURR' ;
6337 -- Start of wraper code generated automatically by Debug code generator for Okl_Streams_Pub.update_streams
6338   IF(L_DEBUG_ENABLED='Y') THEN
6339     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
6340     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
6341   END IF;
6342   IF(IS_DEBUG_PROCEDURE_ON) THEN
6343     BEGIN
6344         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Streams_Pub.update_streams   ');
6345     END;
6346   END IF;
6347 		  Okl_Streams_Pub.update_streams  (
6348 	   p_api_version                   => l_api_version,
6349        p_init_msg_list                => Okc_Api.G_FALSE  ,
6350        x_return_status                => l_return_status  ,
6351        x_msg_count                    => x_msg_count,
6352        x_msg_data                     => x_msg_data ,
6353        p_stmv_rec                     =>  l_stmv_rec,
6354        x_stmv_rec                       => x_stmv_rec);
6355   IF(IS_DEBUG_PROCEDURE_ON) THEN
6356     BEGIN
6357         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Streams_Pub.update_streams   ');
6358     END;
6359   END IF;
6360 -- End of wraper code generated automatically by Debug code generator for Okl_Streams_Pub.update_streams
6361 
6362 	        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6363 
6364               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6365             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6366 
6367               RAISE OKC_API.G_EXCEPTION_ERROR;
6368             END IF;
6369 			l_ipyv_rec  := p_ipyv_rec ;
6370 			l_ipyv_rec.ISS_CODE := 'PENDING' ;
6371 
6372 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
6373   IF(IS_DEBUG_PROCEDURE_ON) THEN
6374     BEGIN
6375         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
6376     END;
6377   END IF;
6378              Okl_Ins_Policies_Pub.update_ins_policies(
6379 	         p_api_version                  => p_api_version,
6380 	          p_init_msg_list                => OKC_API.G_FALSE,
6381 	          x_return_status                => l_return_status,
6382 	          x_msg_count                    => x_msg_count,
6383 	          x_msg_data                     => x_msg_data,
6384 	          p_ipyv_rec                     => l_ipyv_rec,
6385 	          x_ipyv_rec                     => lx_ipyv_rec
6386 	          );
6387   IF(IS_DEBUG_PROCEDURE_ON) THEN
6388     BEGIN
6389         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
6390     END;
6391   END IF;
6392 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
6393 
6394           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6395               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6396             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6397               RAISE OKC_API.G_EXCEPTION_ERROR;
6398             END IF;
6399 
6400           -- gboomina start - Bug 4728636
6401           OKL_BILLING_CONTROLLER_PVT.track_next_bill_date ( p_ipyv_rec.khr_id );
6402           -- gboomina end - Bug 4728636
6403 
6404 	  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6405 	  EXCEPTION
6406           WHEN OKC_API.G_EXCEPTION_ERROR THEN
6407             x_return_status := OKC_API.HANDLE_EXCEPTIONS
6408             (
6409               l_api_name,
6410               G_PKG_NAME,
6411               'OKC_API.G_RET_STS_ERROR',
6412               x_msg_count,
6413               x_msg_data,
6414               '_PROCESS'
6415             );
6416           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6417             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6418             (
6419               l_api_name,
6420               G_PKG_NAME,
6421               'OKC_API.G_RET_STS_UNEXP_ERROR',
6422               x_msg_count,
6423               x_msg_data,
6424               '_PROCESS'
6425             );
6426           WHEN OTHERS THEN
6427             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6428             (
6429               l_api_name,
6430               G_PKG_NAME,
6431               'OTHERS',
6432               x_msg_count,
6433               x_msg_data,
6434               '_PROCESS'
6435             );
6436 END  activate_ins_stream ;
6437 
6438  ---------------------------------------------------------------------------
6439   -- PROCEDURE policy_payment
6440   ---------------------------------------------------------------------------
6441   PROCEDURE        policy_payment(
6442      p_api_version                   IN NUMBER,
6443      p_init_msg_list                IN VARCHAR2 ,
6444      x_return_status                OUT NOCOPY VARCHAR2,
6445      x_msg_count                    OUT NOCOPY NUMBER,
6446      x_msg_data                     OUT NOCOPY VARCHAR2,
6447       p_ipyv_rec                   IN  ipyv_rec_type)
6448       IS
6449       	 l_api_version                 CONSTANT NUMBER := 1;
6450          l_api_name                     CONSTANT VARCHAR2(30) := 'policy_payment';
6451          l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
6452          l_lessor_premium              NUMBER;
6453          l_yearly_payment              NUMBER;
6454          CURSOR okl_lessor_premium(p_ipy_id NUMBER) IS
6455          SELECT SUM(LESSOR_PREMIUM)
6456          FROM OKL_INS_ASSETS INA
6457          WHERE  INA.IPY_ID = p_ipy_id ;
6458 
6459          l_percentage NUMBER ;
6460          l_term NUMBER;
6461          l_not_yearly_pay NUMBER;
6462          l_strm_type_id  NUMBER;
6463 
6464 
6465        l_factor  NUMBER;
6466 
6467        l_payment_tbl  NUMBER := 0 ;
6468 
6469         CURSOR okl_ins_rate_csr(p_territory_code VARCHAR2,
6470            p_ipt_id NUMBER , p_from_date DATE, p_fact_val NUMBER) IS
6471 		  SELECT INSURER_RATE/ INSURED_RATE
6472 			FROM OKL_INS_RATES INR
6473 			WHERE INR.IPT_ID = p_ipt_id AND
6474 			p_fact_val BETWEEN INR.FACTOR_RANGE_START AND INR.FACTOR_RANGE_END AND
6475 			p_from_date BETWEEN INR.DATE_FROM AND DECODE(INR.DATE_TO,NULL,p_from_date + 1,INR.DATE_TO)
6476             AND IC_ID = p_territory_code;
6477 
6478 
6479 
6480     CURSOR c_trx_type (cp_name VARCHAR2, cp_language VARCHAR2) IS
6481       SELECT  id
6482       FROM    okl_trx_types_tl
6483       WHERE   name      = cp_name
6484       AND     language  = cp_language;
6485 
6486 
6487 
6488        l_payment  NUMBER;
6489        l_yearly_payment_freq NUMBER := 0 ;
6490        j NUMBER := 0;
6491        l_ptid NUMBER ;
6492        l_trx_type_ID NUMBER ;
6493        lnsexp_tbl_type insexp_tbl_type;
6494        lnsexp_index  NUMBER ;
6495        l_payment_tbl_type payment_tbl_type;
6496 
6497       BEGIN
6498 
6499                    l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6500                                                      G_PKG_NAME,
6501                                                       p_init_msg_list,
6502                                                       l_api_version,
6503                                                       p_api_version,
6504                                                       '_PROCESS',
6505                                                       x_return_status);
6506      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6507         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6508      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6509         RAISE OKC_API.G_EXCEPTION_ERROR;
6510      END IF;
6511 
6512 
6513 -- gboomina starts Bug#4661337 Changed OKLINPERCENTTOTOTALPAYMENT tO OKLINPERCENTTOTALPAYMENT
6514                 l_percentage  := fnd_profile.value('OKLINPERCENTTOTALPAYMENT');
6515 -- gboomina ends Bug#4661337
6516               IF((l_percentage IS NULL ) OR (l_percentage = OKC_API.G_MISS_NUM )) THEN
6517                  l_percentage := 1;
6518               ELSE
6519                 l_percentage := l_percentage /100 ;
6520               END IF;
6521 
6522 
6523 
6524 
6525 
6526               -- GET stream type
6527    -- Cursor replaced with the call to get the stream type id, change made for insurance user defined streams,  bug 3924300
6528 
6529      OKL_STREAMS_UTIL.get_primary_stream_type(p_ipyv_rec.khr_id,
6530                                                    'INSURANCE_PAYABLE',
6531                                                    l_return_status,
6532                                                    l_strm_type_id);
6533 
6534      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6535                    RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6536      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6537                    Okc_Api.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE', G_PURPOSE_TOKEN,'INSURANCE_PAYABLE'); --bug 4024785
6538                    x_return_status := OKC_API.G_RET_STS_ERROR ;
6539                    RAISE OKC_API.G_EXCEPTION_ERROR;
6540       END IF;
6541 
6542 
6543                OPEN c_trx_type ('Disbursement', 'US');
6544                FETCH c_trx_type INTO l_trx_type_ID;
6545                IF(c_trx_type%NOTFOUND) THEN
6546                          Okc_Api.set_message(G_APP_NAME,'OKL_AM_NO_TRX_TYPE_FOUND',
6547                            'TRY_NAME','Disbursement'); --Changed message code for bug 3745151
6548                          x_return_status := OKC_API.G_RET_STS_ERROR ;
6549                          CLOSE c_trx_type ;
6550                      RAISE OKC_API.G_EXCEPTION_ERROR;
6551                END if ;
6552                CLOSE c_trx_type ;
6553 
6554 
6555          IF (p_ipyv_rec.IPY_TYPE = 'LEASE_POLICY'  ) THEN
6556            OPEN okl_lessor_premium(p_ipyv_rec.id) ;
6557            FETCH  okl_lessor_premium INTO l_lessor_premium ;
6558            IF (okl_lessor_premium%NOTFOUND) THEN
6559              		  OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,
6560                    G_COL_NAME_TOKEN,'Policy Number' );
6561                    CLOSE  okl_lessor_premium ;
6562         		  RAISE OKC_API.G_EXCEPTION_ERROR;
6563            END IF;
6564            CLOSE  okl_lessor_premium ;
6565 
6566                	IF(p_ipyv_rec.ipf_code = 'MONTHLY') THEN
6567             		l_yearly_payment := l_percentage * l_lessor_premium * 12;
6568             	ELSIF(p_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
6569             		l_yearly_payment := l_percentage * l_lessor_premium * 24;
6570             	ELSIF(p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
6571 			       l_yearly_payment := l_percentage * l_lessor_premium * 2;	--- ETC.
6572             	ELSIF(p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
6573 			     	l_yearly_payment := l_percentage * l_lessor_premium * 4 ;
6574             	ELSIF(p_ipyv_rec.ipf_code = 'YEARLY') THEN
6575 			     	l_yearly_payment := l_percentage * l_lessor_premium ;
6576             	END IF;
6577           ELSIF (P_ipyv_rec.IPY_TYPE = 'OPTIONAL_POLICY'  ) THEN
6578 
6579              OPEN okl_ins_rate_csr(p_ipyv_rec.territory_code , p_ipyv_rec.ipt_id  ,
6580              p_ipyv_rec.date_from , p_ipyv_rec.factor_value );
6581             FETCH okl_ins_rate_csr INTO l_factor ;
6582             IF(okl_ins_rate_csr%NOTFOUND) THEN
6583 		OKC_API.set_message(G_APP_NAME, 'OKL_NO_OPTINSPRODUCT_RATE');
6584                 x_return_status := OKC_API.G_RET_STS_ERROR ;
6585              CLOSE okl_ins_rate_csr ;
6586              RAISE OKC_API.G_EXCEPTION_ERROR;
6587              END if ;
6588             CLOSE okl_ins_rate_csr;
6589 
6590 
6591 --            l_factor := l_insurer_rate / l_insured_rate ;
6592 
6593                	IF(p_ipyv_rec.ipf_code = 'MONTHLY') THEN
6594             		l_yearly_payment := l_percentage * (p_ipyv_rec.CALCULATED_PREMIUM * l_factor) * 12;
6595             	ELSIF(p_ipyv_rec.ipf_code = 'BI_MONTHLY') THEN
6596             		l_yearly_payment := l_percentage * (p_ipyv_rec.CALCULATED_PREMIUM * l_factor) * 24;
6597             	ELSIF(p_ipyv_rec.ipf_code = 'HALF_YEARLY') THEN
6598 			       l_yearly_payment := l_percentage * (p_ipyv_rec.CALCULATED_PREMIUM * l_factor) * 2;	--- ETC.
6599             	ELSIF(p_ipyv_rec.ipf_code = 'QUARTERLY') THEN
6600 			     	l_yearly_payment := l_percentage * (p_ipyv_rec.CALCULATED_PREMIUM * l_factor) * 4 ;
6601             	ELSIF(p_ipyv_rec.ipf_code = 'YEARLY') THEN
6602 			     	l_yearly_payment := l_percentage * (p_ipyv_rec.CALCULATED_PREMIUM * l_factor) ;
6603             	END IF;
6604           END IF;
6605 
6606                 l_term := MONTHS_BETWEEN(p_ipyv_rec.DATE_TO, p_ipyv_rec.DATE_FROM); --Bug# 4056484 PAGARG removing rounding
6607 
6608                 l_yearly_payment_freq := ROUND(l_term / 12) ;
6609                 --gboomina Bug 4774011 - Round of l_term - Start
6610                 l_not_yearly_pay :=  mod(ROUND(l_term), 12);
6611                 --gboomina Bug 4774011 - Round of l_term - End
6612 
6613                 lnsexp_tbl_type(1).AMOUNT  :=  l_yearly_payment /12 ;
6614                 lnsexp_tbl_type(1).PERIOD  :=  l_term;
6615 
6616 
6617                 IF (l_yearly_payment_freq > 0 ) then
6618 
6619                     FOR i IN 1..l_yearly_payment_freq LOOP
6620                      j := i - 1 ;
6621 
6622                     -- CREATE table for expense
6623                 l_payment_tbl := l_payment_tbl + 1;
6624                 l_payment_tbl_type(l_payment_tbl).DUE_DATE :=add_months(p_ipyv_rec.date_from, (j )*12) ; -- Bug 4213633
6625                 l_payment_tbl_type(l_payment_tbl).AMOUNT :=l_yearly_payment ;
6626 
6627                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6628                     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6629                  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6630                     RAISE OKC_API.G_EXCEPTION_ERROR;
6631                  END IF;
6632                  END LOOP;
6633              END IF;
6634 
6635              IF (l_not_yearly_pay > 0 ) THEN
6636               --j := j + 1; bug 4056603
6637 
6638 
6639                 l_payment := l_not_yearly_pay * (l_yearly_payment/12) ;
6640 
6641                 l_payment_tbl := l_payment_tbl + 1;
6642                 --gboomina Bug 4774011 - Changing the calculation of Due date - Start
6643                 l_payment_tbl_type(l_payment_tbl).DUE_DATE := add_months(p_ipyv_rec.date_from, (l_yearly_payment_freq)*12) ; --bug 4056603
6644                 --gboomina Bug 4774011 - Changing the calculation of Due date - End
6645                 l_payment_tbl_type(l_payment_tbl).AMOUNT :=l_payment ;
6646              END IF ;
6647 
6648 
6649          payment_stream(
6650                     p_api_version                  =>l_api_version,
6651                     p_init_msg_list             => OKC_API.G_FALSE,
6652                     x_return_status             =>   l_return_status,
6653                     x_msg_count                =>    x_msg_count,
6654                     x_msg_data                  =>  x_msg_data ,
6655                    p_ipyv_rec                 => p_ipyv_rec,
6656                  p_payment_tbl_type   =>  l_payment_tbl_type );
6657 
6658                   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6659                     RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6660                  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6661                     RAISE OKC_API.G_EXCEPTION_ERROR;
6662                  END IF;
6663 
6664 
6665 
6666 
6667              -- Create accrual streams
6668 	     	 create_insexp_streams(
6669 	     		            p_api_version                  =>l_api_version,
6670 				    p_init_msg_list             => OKC_API.G_FALSE,
6671 				    x_return_status             => l_return_status,
6672 				    x_msg_count                =>  x_msg_count,
6673                 		    x_msg_data                  =>  x_msg_data ,
6674 	     		            p_insexp_tbl                => lnsexp_tbl_type,
6675 	     		            p_khr_id          => p_ipyv_rec.khr_id ,
6676                    		    p_kle_id          => p_ipyv_rec.kle_id,
6677 	     		            p_date_from       => p_ipyv_rec.date_from  );
6678 
6679 
6680 	     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6681 	     	 RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6682 	      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6683 	     	 RAISE OKC_API.G_EXCEPTION_ERROR;
6684 	      END IF;
6685 
6686 
6687 	 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6688      EXCEPTION
6689           WHEN OKC_API.G_EXCEPTION_ERROR THEN
6690             x_return_status := OKC_API.HANDLE_EXCEPTIONS
6691             (
6692               l_api_name,
6693               G_PKG_NAME,
6694               'OKC_API.G_RET_STS_ERROR',
6695               x_msg_count,
6696               x_msg_data,
6697               '_PROCESS'
6698             );
6699           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6700             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6701             (
6702               l_api_name,
6703               G_PKG_NAME,
6704               'OKC_API.G_RET_STS_UNEXP_ERROR',
6705               x_msg_count,
6706               x_msg_data,
6707               '_PROCESS'
6708             );
6709           WHEN OTHERS THEN
6710             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6711             (
6712               l_api_name,
6713               G_PKG_NAME,
6714               'OTHERS',
6715               x_msg_count,
6716               x_msg_data,
6717               '_PROCESS'
6718             );
6719        END policy_payment;
6720 
6721  ---------------------------------------------------------------------------
6722   -- PROCEDURE activate_insurance_policy
6723   ---------------------------------------------------------------------------
6724 PROCEDURE   activate_ins_policy(
6725          p_api_version                   IN NUMBER,
6726      p_init_msg_list                IN VARCHAR2 ,
6727      x_return_status                OUT NOCOPY VARCHAR2,
6728      x_msg_count                    OUT NOCOPY NUMBER,
6729      x_msg_data                     OUT NOCOPY VARCHAR2,
6730      p_ins_policy_id                     IN NUMBER
6731          ) IS
6732 
6733          CURSOR c_vendor_exist (p_khr_id NUMBER , p_isu_id  NUMBER) IS
6734          select 'x'
6735             from
6736               OKC_K_PARTY_ROLES_B CPLB
6737             where  CPLB.CHR_ID = p_khr_id
6738                and CPLB.DNZ_CHR_ID = p_khr_id
6739                and CPLB.OBJECT1_ID1 = p_isu_id
6740                and CPLB.JTOT_OBJECT1_CODE = 'OKX_VENDOR'
6741                and CPLB.RLE_CODE = 'OKL_VENDOR';
6742 
6743 
6744 
6745 
6746 	       	CURSOR  C_OKL_STRM_TYPE_REC2_V IS
6747 			select ID
6748 			from OKL_STRM_TYPE_TL
6749 			where NAME = 'INSURANCE EXPENSE'
6750 	       	AND  LANGUAGE = 'US';
6751 
6752 
6753 
6754     ---- For accrual
6755     CURSOR c_okl_strem_rec_acc (l_recv_strm_id NUMBER,
6756        p_contract_line NUMBER,
6757        p_contract_id NUMBER  ) IS
6758        SELECT STM.ID , STM.active_yn
6759        FROM  OKL_STREAMS STM
6760        WHERE  STM.STY_ID = l_recv_strm_id
6761       AND STM.KLE_ID = p_contract_line
6762       AND STM.KHR_ID = p_contract_id
6763       AND STM.PURPOSE_CODE IS NULL;
6764 
6765 
6766     ---- For Reporting accrual
6767     CURSOR c_okl_strem_rec_repacc (l_recv_strm_id NUMBER ,
6768        p_contract_line NUMBER,
6769        p_contract_id NUMBER ) IS
6770        SELECT STM.ID , STM.active_yn
6771        FROM  OKL_STREAMS STM
6772        WHERE  STM.STY_ID = l_recv_strm_id
6773       AND STM.KLE_ID = p_contract_line
6774       AND STM.KHR_ID = p_contract_id
6775       AND STM.PURPOSE_CODE ='REPORT';
6776 
6777 
6778 	l_stmv_rec		     Okl_Streams_Pvt.stmv_rec_type;
6779 	l_stmv_rec2		     Okl_Streams_Pvt.stmv_rec_type;
6780 	l_stmv_rec3		     Okl_Streams_Pvt.stmv_rec_type;
6781 	l_stmv_rec4		     Okl_Streams_Pvt.stmv_rec_type;
6782 
6783 	x_stmv_rec		   Okl_Streams_Pvt.stmv_rec_type;
6784 
6785         lx_ipyv_rec                    	ipyv_rec_type ;
6786 	l_ipyv_rec                     	ipyv_rec_type ;
6787 	 l_api_version                 	CONSTANT NUMBER := 1;
6788          l_api_name                     CONSTANT VARCHAR2(30) := 'activate_ins_policy';
6789          l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
6790          l_clev_rec			okl_okc_migration_pvt.clev_rec_type;
6791          lx_clev_rec		        okl_okc_migration_pvt.clev_rec_type;
6792 	 l_klev_rec			Okl_Kle_Pvt.klev_rec_type ;
6793 	 l_dummy                    	VARCHAR2(1) := '?';
6794          lx_klev_rec		        Okl_Kle_Pvt.klev_rec_type ;
6795          l_row_notfound                 BOOLEAN := TRUE;
6796 	 l_khr_status                 	VARCHAR2(30) ;
6797          l_cplv_rec_type                okl_okc_migration_pvt.cplv_rec_type;
6798          x_cplv_rec_type                okl_okc_migration_pvt.cplv_rec_type;
6799          p_sty_id                       NUMBER;
6800          l_total_oec                    NUMBER;
6801 
6802 	 --gboomina 26-Oct-05 Bug#4558486 - Added - Start
6803          l_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
6804          lx_kplv_rec     okl_k_party_roles_pvt.kplv_rec_type;
6805          --gboomina 26-Oct-05 Bug#4558486 - Added - End
6806 
6807 
6808 CURSOR okl_k_total_oec_csr (p_khr_id       NUMBER ) IS --Bug 4105057
6809 SELECT SUM(OEC)
6810 FROM
6811 (
6812 SELECT  OTAB.DNZ_KHR_ID CONTRACT_ID,
6813         KLE_TOP.OEC OEC,
6814         OTAB.ASSET_NUMBER ASSET_NUMBER
6815 FROM OKL_TXL_ASSETS_B OTAB,
6816        OKL_K_LINES KLE,
6817        OKL_K_LINES KLE_TOP,
6818        OKC_K_LINES_B CLE
6819 WHERE KLE.ID = OTAB.KLE_ID
6820   AND KLE.ID = CLE.ID
6821   AND CLE.CLE_ID = KLE_TOP.ID
6822   AND NOT EXISTS
6823       (Select '1'
6824        from okc_k_items cim
6825        where cim.cle_id = otab.kle_id
6826        AND cim.object1_id1 is not null)
6827   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
6828   AND OTAB.DNZ_KHR_ID  = p_khr_id
6829 UNION
6830 SELECT OTAB.DNZ_KHR_ID CONTRACT_ID,KLE_TOP.OEC OEC,
6831 OTAB.ASSET_NUMBER ASSET_NUMBER
6832 FROM OKL_TXL_ASSETS_B OTAB,
6833      OKL_K_LINES KLE ,
6834      OKL_K_LINES KLE_TOP ,
6835      OKC_K_LINES_B CLE ,
6836      OKL_K_HEADERS KHR
6837 WHERE KLE.ID = OTAB.KLE_ID
6838   AND KLE.ID = CLE.ID
6839   AND CLE.CLE_ID = KLE_TOP.ID
6840   AND NOT EXISTS
6841       (Select '1'
6842        from okc_k_items cim
6843        where cim.cle_id = otab.kle_id
6844        AND cim.object1_id1 is not null)
6845   AND khr.id = CLE.DNZ_CHR_ID
6846   AND khr.deal_type = 'LOAN'
6847   AND CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED','BOOKED' )
6848   AND OTAB.DNZ_KHR_ID  = p_khr_id
6849 UNION
6850 select CLE.DNZ_CHR_ID CONTRACT_ID,
6851        KLE.OEC OEC,
6852        FAD.ASSET_NUMBER ASSET_NUMBER
6853 from OKL_K_LINES KLE ,
6854      OKC_K_LINES_B CLE,
6855      OKC_LINE_STYLES_B LS,
6856      OKC_K_ITEMS CIM,
6857      OKC_K_LINES_B ITEM_CLE,
6858      OKC_LINE_STYLES_B ITEM_LS,
6859      OKC_K_ITEMS MODEL ,
6860      FA_ADDITIONS_B FAd,
6861      OKC_K_LINES_B FINAC_CLE,
6862      OKC_LINE_STYLES_B FINAC_LS
6863 where FINAC_LS.LTY_CODE = 'FREE_FORM1'
6864   AND FINAC_CLE.LSE_ID = FINAC_LS.ID
6865   AND FINAC_CLE.ID = KLE.ID
6866   AND FAD.ASSET_ID = CIM.OBJECT1_ID1
6867   AND CIM.OBJECT1_ID2 = '#'
6868   AND MODEL.JTOT_OBJECT1_CODE = 'OKX_SYSITEM'
6869   AND MODEL.DNZ_CHR_ID = CLE.DNZ_CHR_ID
6870   AND MODEL.cle_id = ITEM_CLE.ID
6871   AND ITEM_LS.LTY_CODE = 'ITEM'
6872   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
6873   AND ITEM_CLE.CLE_ID = FINAC_CLE.ID
6874   AND CIM.DNZ_CHR_ID = CLE.DNZ_CHR_ID
6875   AND CIM.CLE_ID = CLE.ID
6876   AND CIM.JTOT_OBJECT1_CODE = 'OKX_ASSET'
6877   AND LS.ID = CLE.LSE_ID
6878   AND LS.LTY_CODE = 'FIXED_ASSET'
6879   AND CLE.CLE_ID = FINAC_CLE.ID
6880   AND FINAC_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
6881   AND CLE.DNZ_CHR_ID = p_khr_id
6882 union
6883 SELECT CLE.DNZ_CHR_ID CONTRACT_ID,
6884        KLE.OEC OEC,
6885        FINAN_CLET.NAME ASSET_NUMBER
6886 FROM OKL_K_LINES KLE,
6887      OKC_K_LINES_B CLE,
6888      OKC_LINE_STYLES_B LS,
6889      OKC_K_LINES_B ITEM_CLE,
6890      OKC_LINE_STYLES_B ITEM_LS,
6891      OKC_K_ITEMS MODEL ,
6892      OKL_K_HEADERS KHR ,
6893      OKC_K_LINES_B FINAN_CLE ,
6894      OKC_K_LINES_TL FINAN_CLET
6895 WHERE MODEL.cle_id = ITEM_CLE.ID
6896   AND MODEL.DNZ_CHR_ID = ITEM_CLE.DNZ_CHR_ID
6897   AND ITEM_LS.LTY_CODE = 'ITEM'
6898   AND ITEM_LS.ID = ITEM_CLE.LSE_ID
6899   AND ITEM_CLE.CLE_ID = FINAN_CLE.ID
6900   AND ITEM_CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
6901   AND CLE.CLE_ID = FINAN_CLE.ID
6902   AND CLE.DNZ_CHR_ID = FINAN_CLE.DNZ_CHR_ID
6903   AND LS.ID = CLE.LSE_ID
6904   AND LS.LTY_CODE = 'FIXED_ASSET'
6905   AND FINAN_CLE.STS_CODE NOT IN ( 'TERMINATED' , 'EXPIRED','ABANDONED' )
6906   AND FINAN_CLET.LANGUAGE = USERENV('LANG')
6907   AND FINAN_CLET.ID = FINAN_CLE.ID
6908   AND KLE.ID = FINAN_CLE.ID
6909   AND FINAN_CLE.DNZ_CHR_ID = KHR.ID
6910   AND FINAN_CLE.CHR_ID = KHR.ID
6911   AND FINAN_CLE.CLE_ID is null
6912   AND KHR.DEAL_TYPE = 'LOAN'
6913   AND CLE.DNZ_CHR_ID = p_khr_id)
6914   GROUP BY CONTRACT_ID;
6915 	BEGIN
6916         l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6917                                                        G_PKG_NAME,
6918                                                       p_init_msg_list,
6919                                                       l_api_version,
6920                                                       p_api_version,
6921                                                       '_PROCESS',
6922                                                       x_return_status);
6923             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6924               x_return_status := Okc_Api.G_RET_STS_ERROR;
6925               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6926             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6927               -- Status temp
6928               RAISE OKC_API.G_EXCEPTION_ERROR;
6929             END IF;
6930 
6931 ----------------------------------------------------------------------
6932 -----------  get Record ---------------------------------------
6933 ---------------------------------------------------------------------
6934        l_ipyv_rec.ID := p_ins_policy_id ;
6935        l_ipyv_rec :=   get_rec (l_ipyv_rec, l_row_notfound );
6936 --------------------------------------------------------------------------
6937 ----  Check for Quote or Policy
6938 ------------------------------------------------------------------------
6939 
6940 -- check for Third Party
6941    IF (l_ipyv_rec.IPY_TYPE = 'THIRD_PARTY_POLICY'  ) THEN
6942 		  OKC_API.set_message(G_APP_NAME,G_INVALID_FOR_ACTIVE_TYPE,
6943            G_COL_NAME_TOKEN,l_ipyv_rec.IPY_TYPE );
6944             -- Status temp
6945 		  RAISE OKC_API.G_EXCEPTION_ERROR;
6946 	END IF;
6947 -------------------------------------------------------------------------
6948 ------ Check for Policy Status
6949 -------------------------------------------------------------------------
6950  -- Check for Status
6951 	IF (l_ipyv_rec.ISS_CODE <> 'PENDING' ) THEN
6952 		  OKC_API.set_message(G_APP_NAME,G_INVALID_FOR_ACTIVE_STATUS ); --3745151 Fix for invalid error message.
6953 		  RAISE OKC_API.G_EXCEPTION_ERROR;
6954 	END IF;
6955 
6956 -------------------------------------------------------------------------
6957 ---- Check for Status of Contract
6958 ---------------------------------------------------------------------------
6959 	l_return_status :=	get_contract_status(l_ipyv_rec.khr_id, l_khr_status);
6960     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6961        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6962     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6963        RAISE OKC_API.G_EXCEPTION_ERROR;
6964     END IF;
6965 
6966    IF (l_khr_status <> 'ACTIVE' ) THEN
6967       OKC_API.set_message(G_APP_NAME,G_K_NOT_ACTIVE );
6968 	  RAISE OKC_API.G_EXCEPTION_ERROR;
6969    END IF ;
6970 
6971    ------------------------------------------------------------------
6972    ---------- Compare OEC
6973    --------------------------------------------------
6974    IF (l_ipyv_rec.IPY_TYPE = 'LEASE_POLICY') THEN
6975 
6976         OPEN okl_k_total_oec_csr(l_ipyv_rec.KHR_ID );
6977         FETCH okl_k_total_oec_csr INTO l_total_oec ;
6978         CLOSE okl_k_total_oec_csr ;
6979        IF ((l_total_oec IS NULL ) OR l_total_oec  = OKC_API.G_MISS_NUM  ) THEN
6980 		OKC_API.set_message(G_APP_NAME,'OKL_INVALID_VALUE',
6981 		G_COL_NAME_TOKEN,'OEC' );
6982 		RAISE OKC_API.G_EXCEPTION_ERROR;
6983 	ELSIF( l_total_oec <>  l_ipyv_rec.COVERED_AMOUNT ) THEN
6984 	  	OKC_API.set_message(G_APP_NAME,'OKL_STRUCTURE_CHANGED');
6985 		RAISE OKC_API.G_EXCEPTION_ERROR;
6986 	END IF;
6987 
6988 
6989    END IF ;
6990 
6991    ------------------------------
6992 
6993 			-- Set Values in OKC_CONTRACT_LINE
6994 ---------------------------------------------------------------------------
6995 			l_clev_rec.ID := l_ipyv_rec.KLE_ID ;
6996   			l_clev_rec.sts_code :=  'BOOKED';
6997 			l_klev_rec.ID := l_ipyv_rec.KLE_ID ;
6998 
6999 		  Okl_Contract_Pub.update_contract_line
7000 		   (
7001     	   p_api_version      => l_api_version ,
7002 		   p_init_msg_list           => OKC_API.G_FALSE,
7003 		   x_return_status      => l_return_status    ,
7004 		   x_msg_count           => x_msg_count,
7005 		   x_msg_data            => x_msg_data ,
7006 		   p_clev_rec            => l_clev_rec  ,
7007 		   p_klev_rec            => l_klev_rec,
7008 		   x_clev_rec            => lx_clev_rec,
7009 		   x_klev_rec            => lx_klev_rec
7010 		   );
7011 
7012             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7013               -- Status temp
7014               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7015             ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7016 
7017               -- Status temp
7018               RAISE OKC_API.G_EXCEPTION_ERROR;
7019             END IF;
7020             -- CREATE  Role only if vendor is not there
7021             OPEN c_vendor_exist(l_ipyv_rec.KHR_ID ,l_ipyv_rec.ISU_ID );
7022             FETCH c_vendor_exist INTO l_dummy ;
7023             CLOSE c_vendor_exist ;
7024 
7025             IF ( l_dummy = '?' ) THEN
7026 
7027             	l_cplv_rec_type.sfwt_flag := 'N';
7028             	l_cplv_rec_type.CHR_ID := l_ipyv_rec.KHR_ID ;
7029             	l_cplv_rec_type.DNZ_CHR_ID := l_ipyv_rec.KHR_ID ;
7030             	l_cplv_rec_type.RLE_CODE := 'OKL_VENDOR' ;
7031             	l_cplv_rec_type.OBJECT1_ID1 := l_ipyv_rec.ISU_ID ;
7032             	l_cplv_rec_type.OBJECT1_ID2 := '#' ;
7033             	l_cplv_rec_type.JTOT_OBJECT1_CODE :=  'OKX_VENDOR' ;
7034 -- Start of wraper code generated automatically by Debug code generator for okl_k_party_roles_pvt.create_k_party_role
7035   IF(L_DEBUG_ENABLED='Y') THEN
7036     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
7037     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
7038   END IF;
7039   IF(IS_DEBUG_PROCEDURE_ON) THEN
7040     BEGIN
7041         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role ');
7042     END;
7043   END IF;
7044   -- gboomina 26-Oct-05 Bug#4558486 Start - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
7045             	okl_k_party_roles_pvt.create_k_party_role(
7046         		p_api_version                  =>l_api_version,
7047         		p_init_msg_list             => OKC_API.G_FALSE,
7048         		x_return_status             =>   l_return_status,
7049         		 x_msg_count                =>    x_msg_count,
7050         		x_msg_data                  =>  x_msg_data ,
7051         		p_cplv_rec                     =>  l_cplv_rec_type,
7052         		x_cplv_rec                  =>    x_cplv_rec_type,
7053 			p_kplv_rec                  => l_kplv_rec,
7054                         x_kplv_rec                  => lx_kplv_rec);
7055 
7056 -- gboomina 26-Oct-05 Bug#4558486 End - Changed okl_okc_migration_pvt.create_k_party_role to okl_k_party_roles_pvt.create_k_party_role
7057   IF(IS_DEBUG_PROCEDURE_ON) THEN
7058     BEGIN
7059         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call okl_k_party_roles_pvt.create_k_party_role ');
7060     END;
7061   END IF;
7062 -- End of wraper code generated automatically by Debug code generator for okl_k_party_roles_pvt.create_k_party_role
7063         	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7064 
7065              	  RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7066         	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7067         	  RAISE OKC_API.G_EXCEPTION_ERROR;
7068         	END IF;
7069           END IF ;
7070 
7071 
7072         	-- Payment Call Temp
7073 
7074           	policy_payment(
7075               p_api_version                  => p_api_version,
7076 	      p_init_msg_list                => OKC_API.G_FALSE,
7077 	      x_return_status                => l_return_status,
7078 	      x_msg_count                    => x_msg_count,
7079 	      x_msg_data                     => x_msg_data,
7080 	      p_ipyv_rec                     => l_ipyv_rec );
7081 
7082 
7083                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7084 		  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7085 	  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7086 	  	       RAISE OKC_API.G_EXCEPTION_ERROR;
7087 	        END IF;
7088 
7089 
7090           -------- Activate Policy
7091 		  l_ipyv_rec.ISS_CODE := 'ACTIVE' ;
7092           l_ipyv_rec.ACTIVATION_DATE := SYSDATE ;
7093 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
7094   IF(IS_DEBUG_PROCEDURE_ON) THEN
7095     BEGIN
7096         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
7097     END;
7098   END IF;
7099           Okl_Ins_Policies_Pub.update_ins_policies(
7100 	      p_api_version                  => p_api_version,
7101 	      p_init_msg_list                => OKC_API.G_FALSE,
7102 	      x_return_status                => l_return_status,
7103 	      x_msg_count                    => x_msg_count,
7104 	      x_msg_data                     => x_msg_data,
7105 	      p_ipyv_rec                     => l_ipyv_rec,
7106 	      x_ipyv_rec                     => lx_ipyv_rec	);
7107   IF(IS_DEBUG_PROCEDURE_ON) THEN
7108     BEGIN
7109         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
7110     END;
7111   END IF;
7112 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
7113 
7114           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7115 		RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7116 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7117 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7118 	  END IF;
7119 
7120 
7121 
7122 	      -- Activate Income Accrual Streams
7123 
7124                    -- cursor fetch replaced with  the call, change made for user defined streams,  bug 3924300
7125                 OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
7126                                                    'INSURANCE_INCOME_ACCRUAL',
7127                                                    l_return_status,
7128                                                    p_sty_id);
7129 
7130                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7131                      OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7132                         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7133                 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7134                         OKC_API.set_message(G_APP_NAME, 'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_INCOME_ACCRUAL' ); --bug 4024785
7135                         RAISE OKC_API.G_EXCEPTION_ERROR;
7136                 END IF;
7137 
7138 
7139 
7140 
7141 		   --- For Accrual
7142 		       OPEN c_okl_strem_rec_acc(p_sty_id,
7143 		        l_ipyv_rec.kle_id,
7144 		        l_ipyv_rec.khr_id);
7145 		       FETCH c_okl_strem_rec_acc INTO  l_stmv_rec.id, l_stmv_rec.active_yn;
7146 		  	 IF(l_stmv_rec.id IS NOT NULL AND l_stmv_rec.id <> OKC_API.G_MISS_NUM) THEN
7147 
7148 		  	    IF (   UPPER(l_stmv_rec.active_yn)= 'Y'  ) THEN
7149 			   	OKC_API.set_message(G_APP_NAME,
7150 			   	G_STREAM_ALREADY_ACTIVE  );
7151 
7152 			   	RAISE OKC_API.G_EXCEPTION_ERROR;
7153 	      		    END IF;
7154 
7155 	      		    l_stmv_rec.active_yn := 'Y' ;
7156 			    l_stmv_rec.date_current := SYSDATE ;
7157 			    l_stmv_rec.SAY_CODE := 'CURR' ;
7158 
7159 
7160 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7161   IF(IS_DEBUG_PROCEDURE_ON) THEN
7162     BEGIN
7163         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7164     END;
7165   END IF;
7166 		              OKL_STREAMS_PUB.update_streams(
7167 		                  p_api_version
7168 		                 ,p_init_msg_list
7169 		                  ,x_return_status
7170 		                  ,x_msg_count
7171 		                  ,x_msg_data
7172 		                  ,l_stmv_rec
7173 		                  ,x_stmv_rec
7174 		               );
7175   IF(IS_DEBUG_PROCEDURE_ON) THEN
7176     BEGIN
7177         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7178     END;
7179   END IF;
7180 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7181 
7182 		           IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7183 		              CLOSE c_okl_strem_rec_acc ;
7184 		              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7185 		           ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7186 		              CLOSE c_okl_strem_rec_acc ;
7187 		              RAISE OKC_API.G_EXCEPTION_ERROR;
7188 		           END IF;
7189 		        END IF;
7190                      CLOSE c_okl_strem_rec_acc ;
7191 
7192 
7193 
7194 
7195                      --- For Reporting Accrual
7196 		       OPEN c_okl_strem_rec_repacc(p_sty_id,
7197 		        l_ipyv_rec.kle_id,
7198 		        l_ipyv_rec.khr_id);
7199 		       FETCH c_okl_strem_rec_repacc INTO  l_stmv_rec2.id, l_stmv_rec2.active_yn;
7200 		  	 IF(l_stmv_rec2.id IS NOT NULL AND l_stmv_rec2.id <> OKC_API.G_MISS_NUM) THEN
7201 
7202 		  	    IF (   UPPER(l_stmv_rec2.SAY_CODE)= 'CURR'  ) THEN --3965948
7203 			   	OKC_API.set_message(G_APP_NAME,
7204 			   	G_STREAM_ALREADY_ACTIVE  );
7205 
7206 			   	CLOSE c_okl_strem_rec_repacc ;
7207 			   	RAISE OKC_API.G_EXCEPTION_ERROR;
7208 	      		    END IF;
7209 
7210                                     -- Made stream inactive bug 3965948
7211 	      		    l_stmv_rec2.active_yn := 'N' ;
7212 			    l_stmv_rec2.date_current := SYSDATE ;
7213 			    l_stmv_rec2.SAY_CODE := 'CURR' ;
7214 
7215 
7216 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7217   IF(IS_DEBUG_PROCEDURE_ON) THEN
7218     BEGIN
7219         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7220     END;
7221   END IF;
7222 		              OKL_STREAMS_PUB.update_streams(
7223 		                  p_api_version
7224 		                 ,p_init_msg_list
7225 		                  ,x_return_status
7226 		                  ,x_msg_count
7227 		                  ,x_msg_data
7228 		                  ,l_stmv_rec2
7229 		                  ,x_stmv_rec
7230 		               );
7231   IF(IS_DEBUG_PROCEDURE_ON) THEN
7232     BEGIN
7233         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7234     END;
7235   END IF;
7236 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7237 
7238 		           IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7239 		              CLOSE c_okl_strem_rec_repacc ;
7240 		              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7241 		           ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7242 		              CLOSE c_okl_strem_rec_repacc ;
7243 		              RAISE OKC_API.G_EXCEPTION_ERROR;
7244 		           END IF;
7245 		        END IF;
7246                      CLOSE c_okl_strem_rec_repacc ;
7247 
7248 
7249  	      		---- For expense
7250 
7251                         -- cursor fetch replaced with function call, change done for user defined streams,  bug 3924300
7252 
7253 
7254 		         OKL_STREAMS_UTIL.get_primary_stream_type(l_ipyv_rec.khr_id,
7255                                                    'INSURANCE_EXPENSE_ACCRUAL',
7256                                                    l_return_status,
7257                                                    p_sty_id);
7258 
7259 		     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7260                      OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7261                         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7262 		     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7263                         OKC_API.set_message(G_APP_NAME,'OKL_NO_STREAM_TYPE',G_PURPOSE_TOKEN,'INSURANCE_EXPENSE_ACCRUAL'); --bug 4024785
7264                         RAISE OKC_API.G_EXCEPTION_ERROR;
7265 		     END IF;
7266 
7267 
7268 
7269 			   --- For Accrual
7270 			       OPEN c_okl_strem_rec_acc(p_sty_id,
7271 				l_ipyv_rec.kle_id,
7272 				l_ipyv_rec.khr_id);
7273 			       FETCH c_okl_strem_rec_acc INTO  l_stmv_rec3.id, l_stmv_rec3.active_yn;
7274 				 IF(l_stmv_rec3.id IS NOT NULL AND l_stmv_rec3.id <> OKC_API.G_MISS_NUM) THEN
7275 
7276 				    IF (   UPPER(l_stmv_rec3.active_yn)= 'Y'  ) THEN
7277 					OKC_API.set_message(G_APP_NAME,
7278 					G_STREAM_ALREADY_ACTIVE  );
7279 
7280 					RAISE OKC_API.G_EXCEPTION_ERROR;
7281 				    END IF;
7282 
7283 				    l_stmv_rec3.active_yn := 'Y' ;
7284 				    l_stmv_rec3.date_current := SYSDATE ;
7285 				    l_stmv_rec3.SAY_CODE := 'CURR' ;
7286 
7287 
7288 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7289   IF(IS_DEBUG_PROCEDURE_ON) THEN
7290     BEGIN
7291         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7292     END;
7293   END IF;
7294 				      OKL_STREAMS_PUB.update_streams(
7295 					  p_api_version
7296 					 ,p_init_msg_list
7297 					  ,x_return_status
7298 					  ,x_msg_count
7299 					  ,x_msg_data
7300 					  ,l_stmv_rec3
7301 					  ,x_stmv_rec
7302 				       );
7303   IF(IS_DEBUG_PROCEDURE_ON) THEN
7304     BEGIN
7305         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7306     END;
7307   END IF;
7308 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7309 
7310 				   IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7311 				      CLOSE c_okl_strem_rec_acc ;
7312 				      RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7313 				   ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7314 				      CLOSE c_okl_strem_rec_acc ;
7315 				      RAISE OKC_API.G_EXCEPTION_ERROR;
7316 				   END IF;
7317 				END IF;
7318 			     CLOSE c_okl_strem_rec_acc ;
7319 
7320 
7321 
7322 
7323 			     --- For Reporting Accrual
7324 			       OPEN c_okl_strem_rec_repacc(p_sty_id,
7325 				l_ipyv_rec.kle_id,
7326 				l_ipyv_rec.khr_id);
7327 			       FETCH c_okl_strem_rec_repacc INTO  l_stmv_rec4.id, l_stmv_rec4.active_yn;
7328 				 IF(l_stmv_rec4.id IS NOT NULL AND l_stmv_rec4.id <> OKC_API.G_MISS_NUM) THEN
7329 
7330 				    IF (   UPPER(l_stmv_rec4.SAY_CODE)= 'CURR'  ) THEN -- 3965948
7331 					OKC_API.set_message(G_APP_NAME,
7332 					G_STREAM_ALREADY_ACTIVE  );
7333 
7334 					CLOSE c_okl_strem_rec_repacc ;
7335 					RAISE OKC_API.G_EXCEPTION_ERROR;
7336 				    END IF;
7337 
7338                                     -- Made Stream inactive bug 3965948
7339 				    l_stmv_rec4.active_yn := 'N' ;
7340 				    l_stmv_rec4.date_current := SYSDATE ;
7341 				    l_stmv_rec4.SAY_CODE := 'CURR' ;
7342 
7343 
7344 -- Start of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7345   IF(IS_DEBUG_PROCEDURE_ON) THEN
7346     BEGIN
7347         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7348     END;
7349   END IF;
7350 				      OKL_STREAMS_PUB.update_streams(
7351 					  p_api_version
7352 					 ,p_init_msg_list
7353 					  ,x_return_status
7354 					  ,x_msg_count
7355 					  ,x_msg_data
7356 					  ,l_stmv_rec4
7357 					  ,x_stmv_rec
7358 				       );
7359   IF(IS_DEBUG_PROCEDURE_ON) THEN
7360     BEGIN
7361         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call OKL_STREAMS_PUB.update_streams ');
7362     END;
7363   END IF;
7364 -- End of wraper code generated automatically by Debug code generator for OKL_STREAMS_PUB.update_streams
7365 
7366 				   IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7367 				      CLOSE c_okl_strem_rec_repacc ;
7368 				      RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7369 				   ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7370 				      CLOSE c_okl_strem_rec_repacc ;
7371 				      RAISE OKC_API.G_EXCEPTION_ERROR;
7372 				   END IF;
7373 				END IF;
7374                      CLOSE c_okl_strem_rec_repacc ;
7375 
7376 
7377 	  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7378      EXCEPTION
7379           WHEN OKC_API.G_EXCEPTION_ERROR THEN
7380             x_return_status := OKC_API.HANDLE_EXCEPTIONS
7381             (
7382               l_api_name,
7383               G_PKG_NAME,
7384               'OKC_API.G_RET_STS_ERROR',
7385               x_msg_count,
7386               x_msg_data,
7387               '_PROCESS'
7388             );
7389           WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7390             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7391             (
7392               l_api_name,
7393               G_PKG_NAME,
7394               'OKC_API.G_RET_STS_UNEXP_ERROR',
7395               x_msg_count,
7396               x_msg_data,
7397               '_PROCESS'
7398             );
7399           WHEN OTHERS THEN
7400             x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7401             (
7402               l_api_name,
7403               G_PKG_NAME,
7404               'OTHERS',
7405               x_msg_count,
7406               x_msg_data,
7407               '_PROCESS'
7408             );
7409 		END  activate_ins_policy;
7410 --------------------------------------------------------------------------------
7411 
7412   ----------------------------------------------------------------
7413     --- Accept Optional Quote --------
7414     ----------------------------------------------------------------
7415     PROCEDURE accept_optional_quote(
7416            p_api_version                  IN NUMBER,
7417            p_init_msg_list                IN VARCHAR2 ,
7418            x_return_status                OUT NOCOPY VARCHAR2,
7419            x_msg_count                    OUT NOCOPY NUMBER,
7420            x_msg_data                     OUT NOCOPY VARCHAR2,
7421            p_quote_id                     IN NUMBER,
7422            x_policy_number 		  OUT NOCOPY VARCHAR2
7423            ) IS
7424  l_api_version                 CONSTANT NUMBER := 1;
7425      l_api_name                     CONSTANT VARCHAR2(30) := 'accept_optional_quote';
7426      l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
7427      l_quote_type                   VARCHAR2(30);
7428      l_ipyv_rec 			           ipyv_rec_type ;
7429      l_inqv_rec                     ipyv_rec_type ;
7430  	lx_inqv_rec                    ipyv_rec_type ;
7431      lx_ipyv_rec                   ipyv_rec_type ;
7432      l_row_notfound    BOOLEAN := TRUE ;
7433 	 l_kle_id    NUMBER ;
7434 	 l_khr_status  VARCHAR2(30);
7435      FUNCTION get_optional_policy (
7436                l_inqv_rec               IN   ipyv_rec_type
7437              ) RETURN ipyv_rec_type IS
7438                l_ipyv_rec 			   ipyv_rec_type ;
7439 
7440             -- Smoduga Fix for 3232868 Increment policy number for optional quotes.
7441 
7442                l_seq                    NUMBER ;
7443                l_policy_symbol          VARCHAR2(10) ;
7444 
7445               CURSOR c_policy_symbol IS
7446               SELECT POLICY_SYMBOL
7447                FROM OKL_INS_PRODUCTS_B
7448                WHERE id = l_ipyv_rec.ipt_id;
7449 
7450             -- END Smoduga Fix for 3232868 Increment policy number for optional quotes.
7451 
7452              BEGIN
7453              	l_ipyv_rec := l_inqv_rec ;
7454 
7455              -- Smoduga Fix for 3232868 Increment policy number for optional quotes.
7456                     BEGIN
7457                       SELECT OKL_IPY_SEQ.NEXTVAL INTO l_seq FROM dual;
7458                     EXCEPTION
7459                     WHEN NO_DATA_FOUND THEN
7460                         -- store SQL error message on message stack for caller
7461                        OKC_API.set_message(G_APP_NAME,  'OKL_NO_SEQUENCE'  );
7462                     WHEN OTHERS THEN
7463                         -- store SQL error message on message stack for caller
7464                        OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,
7465                         G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7466                  	-- notify caller of an UNEXPECTED error
7467         		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7468 	            END ;
7469                OPEN c_policy_symbol;
7470                FETCH c_policy_symbol INTO l_policy_symbol ;
7471                   IF( c_policy_symbol%NOTFOUND) THEN
7472                  	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
7473 					  p_msg_name		=> G_INVALID_VALUE,
7474 					  p_token1		=> g_col_name_token,
7475 					  p_token1_value	=> 'Policy Symbol');
7476                    END IF;
7477                close c_policy_symbol ;
7478 
7479 	        l_ipyv_rec.POLICY_NUMBER := l_policy_symbol || TO_CHAR(l_seq) ;
7480 
7481             -- END Smoduga Fix for 3232868 Increment policy number for optional quotes.
7482 
7483  	        l_ipyv_rec.ID := OKC_API.G_MISS_NUM ;
7484  	        l_ipyv_rec.object_version_number := 1 ;
7485  	        l_ipyv_rec.ISS_CODE := 'ACCEPTED'; -- Fix for bug 2522378
7486  	        l_ipyv_rec.QUOTE_YN  := 'N' ;
7487  	        l_ipyv_rec.DATE_QUOTED := OKC_API.G_MISS_DATE ;
7488  	        l_ipyv_rec.DATE_QUOTE_EXPIRY := OKC_API.G_MISS_DATE ;
7489  	        l_ipyv_rec.ORG_ID := OKC_API.G_MISS_NUM;
7490  	        l_ipyv_rec.REQUEST_ID := OKC_API.G_MISS_NUM;
7491  	        l_ipyv_rec.PROGRAM_APPLICATION_ID := OKC_API.G_MISS_NUM;
7492  	        l_ipyv_rec.PROGRAM_ID := OKC_API.G_MISS_NUM;
7493  	        l_ipyv_rec.PROGRAM_UPDATE_DATE := OKC_API.G_MISS_DATE ;
7494  	        l_ipyv_rec.created_by          :=   OKC_API.G_MISS_NUM;
7495  	        l_ipyv_rec.creation_date       := OKC_API.G_MISS_DATE ;
7496  	        l_ipyv_rec.last_updated_by     :=   OKC_API.G_MISS_NUM;
7497  	        l_ipyv_rec.last_update_date    := OKC_API.G_MISS_DATE ;
7498              l_ipyv_rec.last_update_login   :=   OKC_API.G_MISS_NUM;
7499                	RETURN(l_ipyv_rec);
7500            END get_optional_policy;
7501       BEGIN
7502            l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7503                                                       G_PKG_NAME,
7504                                                      p_init_msg_list,
7505                                                      l_api_version,
7506                                                      p_api_version,
7507                                                      '_PROCESS',
7508                                                      x_return_status);
7509            IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7510              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7511            ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7512              RAISE OKC_API.G_EXCEPTION_ERROR;
7513            END IF;
7514            -- Assigning ID to record
7515            l_inqv_rec.id := p_quote_id ;
7516            -- Get the current quote from database
7517        	  l_inqv_rec := get_rec(l_inqv_rec);
7518  	    -- Validate whether it is accetable quote or not
7519  		/*
7520  		      1. Quote should not be expired
7521  		      2. Status of Quote should be quote
7522  		      3. It should not be Third party policy
7523  			  */
7524  		   -- Check for Status
7525  		   IF (l_inqv_rec.ISS_CODE <> 'QUOTE' AND l_inqv_rec.QUOTE_YN <> 'YES'  ) THEN
7526  		      OKC_API.set_message(G_APP_NAME,
7527  	               	G_INVALID_QUOTE );
7528                 RAISE OKC_API.G_EXCEPTION_ERROR;
7529  			END IF;
7530  			-- Check for Status
7531  		   IF (l_inqv_rec.DATE_QUOTE_EXPIRY < SYSDATE ) THEN
7532  		      OKC_API.set_message(G_APP_NAME,
7533  	               	G_EXPIRED_QUOTE );
7534              RAISE OKC_API.G_EXCEPTION_ERROR;
7535  			END IF;
7536  			-- Check for Third Party is taken care in deciding policy type
7537           -- Make Policy related changes
7538           l_ipyv_rec := get_optional_policy(l_inqv_rec);
7539            -- Insert Policy
7540 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
7541   IF(L_DEBUG_ENABLED='Y') THEN
7542     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
7543     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
7544   END IF;
7545   IF(IS_DEBUG_PROCEDURE_ON) THEN
7546     BEGIN
7547         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
7548     END;
7549   END IF;
7550            Okl_Ins_Policies_Pub.insert_ins_policies(
7551           p_api_version                  => p_api_version,
7552            p_init_msg_list                => OKC_API.G_FALSE,
7553            x_return_status                => l_return_status,
7554            x_msg_count                    => x_msg_count,
7555            x_msg_data                     => x_msg_data,
7556            p_ipyv_rec                     => l_ipyv_rec,
7557            x_ipyv_rec                     => lx_ipyv_rec
7558            );
7559   IF(IS_DEBUG_PROCEDURE_ON) THEN
7560     BEGIN
7561         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.insert_ins_policies ');
7562     END;
7563   END IF;
7564 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.insert_ins_policies
7565            IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7566  	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7567  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7568  	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7569            END IF;
7570         l_ipyv_rec.id := lx_ipyv_rec.id ;
7571  	  -- Create Line
7572  	create_contract_line(
7573           p_api_version                  => l_api_version,
7574           p_init_msg_list                => Okc_Api.G_FALSE,
7575           x_return_status                => l_return_status,
7576           x_msg_count                    => x_msg_count,
7577           x_msg_data                     => x_msg_data,
7578           p_ipyv_rec                     => l_ipyv_rec,
7579           x_kle_id 		=> l_kle_id );
7580        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7581  	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7582  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7583  	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7584        END IF;
7585     	l_ipyv_rec.KLE_ID := l_kle_id ;
7586     -- Create Stream
7587               create_ins_streams(
7588          p_api_version                    => l_api_version,
7589          p_init_msg_list                => Okc_Api.G_FALSE,
7590          x_return_status                => l_return_status,
7591          x_msg_count                    => x_msg_count,
7592          x_msg_data                     => x_msg_data,
7593          p_ipyv_rec                     => l_ipyv_rec
7594          );
7595 
7596       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7597 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7598 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7599 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7600       END IF;
7601 
7602           create_insinc_streams(
7603          p_api_version                    => l_api_version,
7604          p_init_msg_list                => Okc_Api.G_FALSE,
7605          x_return_status                => l_return_status,
7606          x_msg_count                    => x_msg_count,
7607          x_msg_data                     => x_msg_data,
7608          p_ipyv_rec                     => l_ipyv_rec
7609         );
7610 
7611       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7612       	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7613 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7614 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7615       END IF;
7616 
7617      -- activate stream
7618 	 -------------------------------------------------------------------------
7619 ---- Check for Status of Contract
7620 ---------------------------------------------------------------------------
7621 	l_return_status :=	get_contract_status(l_ipyv_rec.khr_id, l_khr_status);
7622     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7623        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7624     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7625        RAISE OKC_API.G_EXCEPTION_ERROR;
7626     END IF;
7627 
7628 
7629 	 	 	activate_ins_stream(
7630 	          p_api_version                    => l_api_version,
7631 	          p_init_msg_list                => Okc_Api.G_FALSE,
7632 	          x_return_status                => l_return_status,
7633 	          x_msg_count                    => x_msg_count,
7634 	          x_msg_data                     => x_msg_data,
7635 	          p_ipyv_rec                     => l_ipyv_rec
7636 	          );
7637 
7638 	       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7639 	 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7640 	 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7641 	 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7642 		  ELSIF	(l_return_status = G_NOT_ACTIVE) THEN
7643 			  NULL;
7644 	       END IF;
7645 	  IF (l_khr_status = 'ACTIVE' ) THEN
7646 		-- activate policy
7647 		   activate_ins_policy(
7648 	          p_api_version                    => l_api_version,
7649 	          p_init_msg_list                => Okc_Api.G_FALSE,
7650 	          x_return_status                => l_return_status,
7651 	          x_msg_count                    => x_msg_count,
7652 	          x_msg_data                     => x_msg_data,
7653 			   p_ins_policy_id               => l_ipyv_rec.id
7654 	          );
7655 	       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7656 	 	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7657 	 	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7658 	 	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7659 	       END IF;
7660 	  END IF;
7661 	  -----
7662      -- update quote
7663            -- Put Policy Number in Quote record
7664            l_inqv_rec.IPY_ID := l_ipyv_rec.ID;
7665 -- Start of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
7666   IF(IS_DEBUG_PROCEDURE_ON) THEN
7667     BEGIN
7668         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
7669     END;
7670   END IF;
7671            Okl_Ins_Policies_Pub.update_ins_policies(
7672  	      p_api_version                  => p_api_version,
7673  	      p_init_msg_list                => OKC_API.G_FALSE,
7674  	      x_return_status                => l_return_status,
7675  	      x_msg_count                    => x_msg_count,
7676  	      x_msg_data                     => x_msg_data,
7677  	      p_ipyv_rec                     => l_inqv_rec,
7678  	      x_ipyv_rec                     => lx_inqv_rec
7679            	);
7680   IF(IS_DEBUG_PROCEDURE_ON) THEN
7681     BEGIN
7682         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLRINQB.pls call Okl_Ins_Policies_Pub.update_ins_policies ');
7683     END;
7684   END IF;
7685 -- End of wraper code generated automatically by Debug code generator for Okl_Ins_Policies_Pub.update_ins_policies
7686            IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7687  	  	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7688  	  ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7689  	  	RAISE OKC_API.G_EXCEPTION_ERROR;
7690  	  END IF;
7691      OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7692        EXCEPTION
7693          WHEN OKC_API.G_EXCEPTION_ERROR THEN
7694            x_return_status := OKC_API.HANDLE_EXCEPTIONS
7695            (
7696              l_api_name,
7697              G_PKG_NAME,
7698              'OKC_API.G_RET_STS_ERROR',
7699              x_msg_count,
7700              x_msg_data,
7701              '_PROCESS'
7702            );
7703          WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7704            x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7705            (
7706              l_api_name,
7707              G_PKG_NAME,
7708              'OKC_API.G_RET_STS_UNEXP_ERROR',
7709              x_msg_count,
7710              x_msg_data,
7711              '_PROCESS'
7712            );
7713          WHEN OTHERS THEN
7714            x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7715            (
7716              l_api_name,
7717              G_PKG_NAME,
7718              'OTHERS',
7719              x_msg_count,
7720              x_msg_data,
7721              '_PROCESS'
7722            );
7723     END accept_optional_quote;
7724 -----------------------------------------
7725    PROCEDURE accept_quote(
7726        p_api_version                  IN NUMBER,
7727        p_init_msg_list                IN VARCHAR2 ,
7728        x_return_status                OUT NOCOPY VARCHAR2,
7729        x_msg_count                    OUT NOCOPY NUMBER,
7730        x_msg_data                     OUT NOCOPY VARCHAR2,
7731        p_quote_id                     IN NUMBER ) IS
7732   l_api_version                 CONSTANT NUMBER := 1;
7733   l_api_name                     CONSTANT VARCHAR2(30) := 'accept_quote';
7734   l_return_status                VARCHAR2(1) := Okc_Api.G_RET_STS_SUCCESS;
7735   l_quote_type                   VARCHAR2(30);
7736   l_policy_number                VARCHAR2(20);
7737   l_khr_id                       NUMBER;
7738   l_missing_streams              VARCHAR2(500);
7739   l_st_gen_tmpt_set              VARCHAR2(100);
7740   l_pdt_id                       NUMBER;
7741 
7742 -- The following two cursors written for user defined streams,  bug 3924300
7743    Cursor check_insurance_streams_csr(p_contract_id NUMBER) is
7744         select stream_type_purpose from okl_strm_type_b
7745         where stream_type_purpose like 'INSURANCE%'
7746         AND stream_type_purpose  NOT IN
7747         (select stl.primary_sty_purpose
7748         from OKL_STRM_TMPT_LINES_UV stl,
7749              okc_k_headers_b chr,
7750              okl_k_headers oklchr
7751         where stl.primary_sty_purpose like 'INSURANCE%'
7752         and  stl.primary_yn = 'Y'
7753         and  stl.pdt_id = oklchr.pdt_id
7754         and (STL.START_DATE <= chr.start_date)
7755         and (STL.END_DATE >= chr.start_date OR STL.END_DATE IS NULL)
7756         and chr.id = p_contract_id
7757         and chr.id = oklchr.id);
7758 
7759   Cursor get_contract_id(p_quote_id NUMBER) is
7760      Select khr_id --Bug:3825159
7761      from OKL_INS_POLICIES_B
7762      where id = p_quote_id;
7763 
7764  Cursor get_product_id(p_contract_id NUMBER) is
7765     Select pdt_id
7766     from okl_k_headers
7767     where id = p_contract_id;
7768 
7769  Cursor get_st_gen_template_set_name(p_pdt_id NUMBER) is
7770     Select st_gen_tmpt_set_name
7771     from  OKL_STRM_TMPT_LINES_UV
7772     where pdt_id = p_pdt_id
7773     and rownum<2;
7774 
7775   FUNCTION get_quote_type (
7776           p_quote_id IN  NUMBER,
7777           x_quote_type OUT NOCOPY VARCHAR2
7778         ) RETURN VARCHAR2 IS
7779           l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7780           CURSOR inq_type_csr (quote_id  IN NUMBER) IS
7781 	        SELECT IPY_TYPE
7782 	        FROM OKL_INS_POLICIES_V
7783        WHERE OKL_INS_POLICIES_V.ID = quote_id;
7784         BEGIN
7785           OPEN  inq_type_csr(p_quote_id);
7786          FETCH inq_type_csr INTO x_quote_type ;
7787          IF (inq_type_csr%NOTFOUND) THEN
7788                  -- store SQL error message on message stack for caller
7789                OKC_API.set_message(G_APP_NAME,
7790                			   G_INVALID_QUOTE
7791                              );
7792                    CLOSE inq_type_csr;
7793                    l_return_status := OKC_API.G_RET_STS_ERROR;
7794                     RAISE OKC_API.G_EXCEPTION_ERROR;
7795          END IF;
7796          CLOSE inq_type_csr ;
7797          RETURN(l_return_status);
7798          EXCEPTION
7799            WHEN OTHERS THEN
7800                -- store SQL error message on message stack for caller
7801                OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE, G_SQLERRM_TOKEN, SQLERRM);
7802       		-- notify caller of an UNEXPECTED error
7803       		l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7804       		-- verify that cursor was closed
7805 		IF inq_type_csr%ISOPEN THEN
7806 		   CLOSE inq_type_csr;
7807 		END IF;
7808           	RETURN(l_return_status);
7809       END get_quote_type;
7810    BEGIN
7811     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7812                                                    G_PKG_NAME,
7813                                                   p_init_msg_list,
7814                                                   l_api_version,
7815                                                   p_api_version,
7816                                                   '_PROCESS',
7817                                                   x_return_status);
7818         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7819           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7820         ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7821           RAISE OKC_API.G_EXCEPTION_ERROR;
7822         END IF;
7823 
7824 
7825         -- Check to see if all the insurance stream type purposes are associated with the if
7826         -- stream generation template used by the current contract
7827          -- Check implemented for Insurance user defined streams,  bug 3924300
7828 
7829 
7830            Open get_contract_id(p_quote_id);
7831            Fetch get_contract_id into l_khr_id;
7832            If get_contract_id%NOTFOUND then
7833                close get_contract_id;
7834                RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7835            End if;
7836            Close get_contract_id;
7837 
7838           Open get_product_id(l_khr_id);
7839           Fetch get_product_id into l_pdt_id;
7840           If get_product_id%NOTFOUND then
7841                close get_product_id;
7842                RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7843            End if;
7844           Close get_product_id;
7845 
7846           Open get_st_gen_template_set_name(l_pdt_id); --bug 4001494
7847           Fetch get_st_gen_template_set_name  into l_st_gen_tmpt_set;
7848           If get_st_gen_template_set_name%NOTFOUND then
7849                close get_st_gen_template_set_name;
7850                RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7851            End if;
7852           Close get_st_gen_template_set_name;
7853 
7854           for streams_rec in check_insurance_streams_csr(l_khr_id)  loop
7855             if streams_rec.stream_type_purpose is not null then
7856                  l_missing_streams := l_missing_streams||streams_rec.stream_type_purpose||', ';
7857             end if;
7858           end loop;
7859                if l_missing_streams is not null then
7860                     l_missing_streams := substr(l_missing_streams,1,length(l_missing_streams)-2);
7861                      -- message to display the missing streams in the stream generation template
7862                             OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
7863                             p_msg_name     => 'OKL_INS_STRM_PURPOSE_NOT_FOUND',
7864                             p_token1       => 'STRM_TEM_NAME',
7865                             p_token1_value => l_st_gen_tmpt_set,
7866                             p_token2       => 'PURPOSES',
7867                             p_token2_value => l_missing_streams);
7868                     RAISE OKC_API.G_EXCEPTION_ERROR;
7869                end if;
7870 
7871 
7872          -- End the check for insurance stream type purpose existence
7873 
7874         l_return_status := get_quote_type(p_quote_id, l_quote_type);
7875         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7876 	          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7877     	ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7878 	          RAISE OKC_API.G_EXCEPTION_ERROR;
7879         END IF;
7880     	IF  ((l_quote_type IS NULL ) OR (l_quote_type = OKC_API.G_MISS_CHAR )) THEN
7881 
7882   		     OKC_API.set_message(G_APP_NAME,
7883 	               	G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Quote Type' ); -- 3745151 Fix for invalid error message.
7884                RAISE OKC_API.G_EXCEPTION_ERROR;
7885     	END IF;
7886         IF (l_quote_type = 'LEASE_POLICY' ) THEN
7887 
7888 	           accept_lease_quote(p_api_version => l_api_version,
7889            		      p_init_msg_list => p_init_msg_list ,
7890            		      x_return_status => l_return_status  ,
7891 	        	      x_msg_count => x_msg_count  ,
7892 	        	      x_msg_data => x_msg_data ,
7893 	        	      p_quote_id => p_quote_id,
7894      			      x_policy_number => l_policy_number
7895      			      );
7896 			 	IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7897 	         	   RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7898 				 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7899 	          	 	   RAISE OKC_API.G_EXCEPTION_ERROR;
7900 	        	 END IF;
7901          ELSIF (l_quote_type = 'OPTIONAL_POLICY' ) THEN
7902 		accept_optional_quote(p_api_version => l_api_version,
7903            		      p_init_msg_list => p_init_msg_list ,
7904            		      x_return_status => l_return_status  ,
7905 	        	      x_msg_count => x_msg_count  ,
7906 	        	      x_msg_data => x_msg_data ,
7907 	        	      p_quote_id => p_quote_id,
7908      			      x_policy_number => l_policy_number
7909      			      );
7910 		IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7911 	          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7912 		ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7913 	          RAISE OKC_API.G_EXCEPTION_ERROR;
7914 	    END IF;
7915         ELSE
7916 			OKC_API.set_message(G_APP_NAME,
7917 	               	G_INVALID_QUOTE_TYPE,G_COL_NAME_TOKEN,l_quote_type ); -- 3745151  Fix for invalid error message.
7918 	END IF;
7919   OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7920     EXCEPTION
7921       WHEN OKC_API.G_EXCEPTION_ERROR THEN
7922         x_return_status := OKC_API.HANDLE_EXCEPTIONS
7923         (
7924           l_api_name,
7925           G_PKG_NAME,
7926           'OKC_API.G_RET_STS_ERROR',
7927           x_msg_count,
7928           x_msg_data,
7929           '_PROCESS'
7930         );
7931       WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7932         x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7933         (
7934           l_api_name,
7935           G_PKG_NAME,
7936           'OKC_API.G_RET_STS_UNEXP_ERROR',
7937           x_msg_count,
7938           x_msg_data,
7939           '_PROCESS'
7940         );
7941       WHEN OTHERS THEN
7942         x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7943         (
7944           l_api_name,
7945           G_PKG_NAME,
7946           'OTHERS',
7947           x_msg_count,
7948           x_msg_data,
7949           '_PROCESS'
7950         );
7951 END accept_quote;
7952 END Okl_Ins_Quote_Pvt;