[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;