[Home] [Help]
PACKAGE BODY: APPS.OKL_QUOTE_TO_CONTRACT_PVT
Source
1 PACKAGE BODY OKL_QUOTE_TO_CONTRACT_PVT AS
2 /* $Header: OKLRLQCB.pls 120.35.12010000.2 2008/11/17 12:02:31 gboomina ship $ */
3
4 L_MODULE FND_LOG_MESSAGES.MODULE%TYPE;
5 L_DEBUG_ENABLED VARCHAR2(10);
6 IS_DEBUG_PROCEDURE_ON BOOLEAN;
7 IS_DEBUG_STATEMENT_ON BOOLEAN;
8
9 l_qte_cntrct_ast_tbl qte_cntrct_ast_tbl_type;
10
11 --Get the lease app header information
12 CURSOR c_get_leaseapp_hdr(p_lap_id IN okl_lease_applications_v.ID%TYPE) IS
13 SELECT olav.ID,
14 olav.REFERENCE_NUMBER,
15 olav.PROSPECT_ID,
16 olav.PROSPECT_ADDRESS_ID,
17 olav.CUST_ACCT_ID,
18 olav.PROGRAM_AGREEMENT_ID,
19 olav.CURRENCY_CODE,
20 olav.CURRENCY_CONVERSION_TYPE,
21 olav.CURRENCY_CONVERSION_RATE,
22 olav.CURRENCY_CONVERSION_DATE,
23 olav.CREDIT_LINE_ID,
24 olav.MASTER_LEASE_ID,
25 olav.PARENT_LEASEAPP_ID,
26 olav.SALES_REP_ID,
27 olav.ORG_ID,
28 olav.INV_ORG_ID,
29 olqv.EXPECTED_START_DATE,
30 olqv.REFERENCE_NUMBER QUOTE_NUMBER,
31 olqv.TERM,
32 olqv.PRODUCT_ID,
33 olqv.PROPERTY_TAX_APPLICABLE,
34 olqv.PROPERTY_TAX_BILLING_TYPE,
35 olqv.UPFRONT_TAX_TREATMENT,
36 olqv.UPFRONT_TAX_STREAM_TYPE,
37 olqv.TRANSFER_OF_TITLE,
38 olqv.AGE_OF_EQUIPMENT,
39 olqv.PURCHASE_OF_LEASE,
40 olqv.SALE_AND_LEASE_BACK,
41 olqv.INTEREST_DISCLOSED,
42 olqv.ID QUOTE_ID,
43 olqv.EXPECTED_DELIVERY_DATE,
44 olqv.EXPECTED_FUNDING_DATE,
45 olqv.LEGAL_ENTITY_ID,
46 olqv.LINE_INTENDED_USE -- Bug 5908845. eBTax Enhancement Project
47 FROM okl_lease_applications_v olav,
48 okl_lease_quotes_v olqv
49 WHERE olqv.PARENT_OBJECT_CODE = 'LEASEAPP'
50 AND olqv.PARENT_OBJECT_ID = olav.ID
51 AND olav.APPLICATION_STATUS = 'CR-APPROVED'
52 AND olqv.primary_quote = 'Y'
53 AND olav.ID = p_lap_id;
54
55 --Get the lease opp header information
56 CURSOR c_get_leaseopp_hdr(p_lop_id IN okl_lease_opportunities_v.ID%TYPE) IS
57 SELECT olov.ID,
58 olov.REFERENCE_NUMBER,
59 olov.PROSPECT_ID,
60 olov.PROSPECT_ADDRESS_ID,
61 olov.CUST_ACCT_ID,
62 olov.PROGRAM_AGREEMENT_ID,
63 olov.CURRENCY_CODE,
64 olov.CURRENCY_CONVERSION_TYPE,
65 olov.CURRENCY_CONVERSION_RATE,
66 olov.CURRENCY_CONVERSION_DATE,
67 NULL CREDIT_LINE_ID,
68 olov.MASTER_LEASE_ID,
69 NULL PARENT_LEASEAPP_ID,
70 olov.SALES_REP_ID,
71 olov.ORG_ID,
72 olov.INV_ORG_ID,
73 olqv.EXPECTED_START_DATE,
74 olqv.REFERENCE_NUMBER QUOTE_NUMBER,
75 olqv.TERM,
76 olqv.PRODUCT_ID,
77 olqv.PROPERTY_TAX_APPLICABLE,
78 olqv.PROPERTY_TAX_BILLING_TYPE,
79 olqv.UPFRONT_TAX_TREATMENT,
80 olqv.UPFRONT_TAX_STREAM_TYPE,
81 olqv.TRANSFER_OF_TITLE,
82 olqv.AGE_OF_EQUIPMENT,
83 olqv.PURCHASE_OF_LEASE,
84 olqv.SALE_AND_LEASE_BACK,
85 olqv.INTEREST_DISCLOSED,
86 olqv.ID QUOTE_ID,
87 olqv.EXPECTED_DELIVERY_DATE,
88 olqv.EXPECTED_FUNDING_DATE,
89 olqv.LEGAL_ENTITY_ID,
90 olqv.LINE_INTENDED_USE -- Bug 5908845. eBTax Enhancement Project
91 FROM okl_lease_opportunities_v olov,
92 okl_lease_quotes_v olqv
93 WHERE olqv.PARENT_OBJECT_CODE = 'LEASEOPP'
94 AND olqv.PARENT_OBJECT_ID = olov.ID
95 AND olqv.status = 'CT-ACCEPTED'
96 AND olov.ID = p_lop_id;
97
98 ------------------------------------------------------------------------------
99 -- PROCEDURE create_contract_val
100 ------------------------------------------------------------------------------
101 -- Start of comments
102 --
103 -- Procedure Name : create_contract_val
104 -- Description : This procedure validates the contract creation from given
105 -- lease quote.
106 -- Business Rules : This procedure validates the contract creation from given
107 -- lease quote.
108 -- Parameters :
109 -- Version : 1.0
110 -- History : 12-Apr-2006 ASAWANKA created Bug 5115741
111 --
112 -- End of comments
113 PROCEDURE create_contract_val(
114 p_api_version IN NUMBER,
115 p_init_msg_list IN VARCHAR2,
116 p_quote_id IN OKL_LEASE_QUOTES_B.ID%TYPE,
117 x_return_status OUT NOCOPY VARCHAR2,
118 x_msg_count OUT NOCOPY NUMBER,
119 x_msg_data OUT NOCOPY VARCHAR2)
120 IS
121 -- Variables Declarations
122
123 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CREATE_CONTRACT_VAL';
124 l_return_status VARCHAR2(1);
125
126 --Cursor to check if contract already created from lease app linked to the
127 --lease opp of this quote
128 CURSOR l_uniq_contract_csr(p_qte_id NUMBER)
129 IS
130 SELECT LAB.REFERENCE_NUMBER LSE_APP
131 , CHR.CONTRACT_NUMBER CONTRACT_NUMBER
132 FROM OKL_LEASE_APPLICATIONS_B LAB
133 , OKL_LEASE_QUOTES_B QTE
134 , OKC_K_HEADERS_B CHR
135 , OKC_STATUSES_V CSTS
136 WHERE LAB.LEASE_OPPORTUNITY_ID = QTE.PARENT_OBJECT_ID
137 AND QTE.PARENT_OBJECT_CODE = 'LEASEOPP'
138 AND LAB.APPLICATION_STATUS = 'CONV-K'
139 AND LAB.ID = CHR.ORIG_SYSTEM_ID1
140 AND CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_LEASE_APP'
141 AND CHR.STS_CODE = CSTS.CODE
142 AND CSTS.STE_CODE <> 'CANCELLED'
143 AND QTE.ID = p_qte_id;
144 l_uniq_contract_rec l_uniq_contract_csr%ROWTYPE;
145
146 --Cursor to check if contract already created directly from quote
147 CURSOR l_uniq_qte_contract_csr(p_quote_id NUMBER)
148 IS
149 SELECT LSQ.REFERENCE_NUMBER LSE_QTE
150 , LOP.REFERENCE_NUMBER LSE_OPP
151 , CHR.CONTRACT_NUMBER CONTRACT_NUMBER
152 FROM OKL_LEASE_QUOTES_B LSQ
153 , OKL_LEASE_OPPORTUNITIES_B LOP
154 , OKC_K_HEADERS_B CHR
155 , OKC_STATUSES_V CSTS
156 WHERE CHR.ORIG_SYSTEM_ID1 = LOP.ID
157 AND CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_QUOTE'
158 AND CSTS.CODE = CHR.STS_CODE
159 AND CSTS.STE_CODE <> 'CANCELLED'
160 AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
161 AND LSQ.PARENT_OBJECT_ID = LOP.ID
162 AND LSQ.STATUS = 'CT-ACCEPTED'
163 AND LSQ.ID = p_quote_id;
164 l_uniq_qte_contract_rec l_uniq_qte_contract_csr%ROWTYPE;
165 BEGIN
166 l_return_status := OKL_API.G_RET_STS_SUCCESS;
167
168 -- call START_ACTIVITY to create savepoint, check compatibility
169 -- and initialize message list
170 l_return_status := OKL_API.START_ACTIVITY(
171 p_api_name => l_api_name
172 ,p_pkg_name => G_PKG_NAME
173 ,p_init_msg_list => p_init_msg_list
174 ,l_api_version => p_api_version
175 ,p_api_version => p_api_version
176 ,p_api_type => G_API_TYPE
177 ,x_return_status => l_return_status);
178
179 -- check if activity started successfully
180 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
181 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
182 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
183 RAISE OKL_API.G_EXCEPTION_ERROR;
184 END IF;
185
186 --Validate that only one contract being created from source Lease Opp through
187 --any Lease App
188 OPEN l_uniq_contract_csr(p_quote_id);
189 FETCH l_uniq_contract_csr INTO l_uniq_contract_rec;
190 IF l_uniq_contract_csr%FOUND
191 THEN
192 l_return_status := OKL_API.G_RET_STS_ERROR;
193 OKL_API.SET_MESSAGE(
194 p_app_name => G_APP_NAME,
195 p_msg_name => 'OKL_CNTRCT_CRT_THRU_QUOTE',
196 p_token1 => 'CONTRACT',
197 p_token1_value => l_uniq_contract_rec.contract_number,
198 p_token2 => 'LSE_APP',
199 p_token2_value => l_uniq_contract_rec.lse_app);
200 RAISE OKL_API.G_EXCEPTION_ERROR;
201 END IF;
202 CLOSE l_uniq_contract_csr;
203
204 --Validate that only one contract being created from Lease Opp through
205 --accepted Lease Quote
206 OPEN l_uniq_qte_contract_csr(p_quote_id);
207 FETCH l_uniq_qte_contract_csr INTO l_uniq_qte_contract_rec;
208 IF l_uniq_qte_contract_csr%FOUND
209 THEN
210 l_return_status := OKL_API.G_RET_STS_ERROR;
211 OKL_API.SET_MESSAGE(
212 p_app_name => G_APP_NAME,
213 p_msg_name => 'OKL_CNTRCT_CRT_THRU_QUOTE',
214 p_token1 => 'LSE_OPP',
215 p_token1_value => l_uniq_qte_contract_rec.lse_opp,
216 p_token2 => 'CONTRACT',
217 p_token2_value => l_uniq_qte_contract_rec.contract_number);
218 RAISE OKL_API.G_EXCEPTION_ERROR;
219 END IF;
220 CLOSE l_uniq_qte_contract_csr;
221
222
223 x_return_status := l_return_status;
224 OKL_API.END_ACTIVITY(
225 x_msg_count => x_msg_count
226 ,x_msg_data => x_msg_data);
227 EXCEPTION
228 WHEN OKL_API.G_EXCEPTION_ERROR THEN
229
230 --Check if Unique Contract cursor is open
231 IF l_uniq_contract_csr%ISOPEN
232 THEN
233 CLOSE l_uniq_contract_csr;
234 END IF;
235 --Check if Unique Contract from quote cursor is open
236 IF l_uniq_qte_contract_csr%ISOPEN
237 THEN
238 CLOSE l_uniq_qte_contract_csr;
239 END IF;
240 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
241 p_api_name => l_api_name,
242 p_pkg_name => G_PKG_NAME,
243 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
244 x_msg_count => x_msg_count,
245 x_msg_data => x_msg_data,
246 p_api_type => G_API_TYPE);
247 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
248
249 --Check if Unique Contract cursor is open
250 IF l_uniq_contract_csr%ISOPEN
251 THEN
252 CLOSE l_uniq_contract_csr;
253 END IF;
254 --Check if Unique Contract from quote cursor is open
255 IF l_uniq_qte_contract_csr%ISOPEN
256 THEN
257 CLOSE l_uniq_qte_contract_csr;
258 END IF;
259 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
260 p_api_name => l_api_name,
261 p_pkg_name => G_PKG_NAME,
262 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
263 x_msg_count => x_msg_count,
264 x_msg_data => x_msg_data,
265 p_api_type => G_API_TYPE);
266 WHEN OTHERS THEN
267
268 --Check if Unique Contract cursor is open
269 IF l_uniq_contract_csr%ISOPEN
270 THEN
271 CLOSE l_uniq_contract_csr;
272 END IF;
273 --Check if Unique Contract from quote cursor is open
274 IF l_uniq_qte_contract_csr%ISOPEN
275 THEN
276 CLOSE l_uniq_qte_contract_csr;
277 END IF;
278 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
279 p_api_name => l_api_name,
280 p_pkg_name => G_PKG_NAME,
281 p_exc_name => 'OTHERS',
282 x_msg_count => x_msg_count,
283 x_msg_data => x_msg_data,
284 p_api_type => G_API_TYPE);
285 END create_contract_val;
286
287
288 -----------------------------------------------------------------------------
289 -- PROCEDURE update_leaseapp_status
290 -----------------------------------------------------------------------------
291 -- Start of comments
292 --
293 -- Procedure Name : update_leaseapp_status
294 -- Description : This Procedure updates the status of lease app
295 -- : to Converted to Contract after contract creation from lease app
296 -- Business Rules :
297 -- Parameters : p_lap_id
298 -- Version : 1.0
299 -- History : 28-Oct-2005 SKGAUTAM created
300 --
301 -- End of comments
302 PROCEDURE update_leaseapp_status(p_api_version IN NUMBER,
303 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
304 x_return_status OUT NOCOPY VARCHAR2,
305 x_msg_count OUT NOCOPY NUMBER,
306 x_msg_data OUT NOCOPY VARCHAR2,
307 p_lap_id IN OKL_LEASE_APPLICATIONS_B.ID%TYPE) IS
308 -- Variables Declarations
309 l_api_version CONSTANT NUMBER DEFAULT 1.0;
310 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'UPD_LP_STS';
311 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
312 l_debug_enabled VARCHAR2(10);
313 lx_return_status VARCHAR2(1);
314
315 x_lapv_rec OKL_LAP_PVT.LAPV_REC_TYPE;
316 x_lsqv_rec OKL_LSQ_PVT.LSQV_REC_TYPE;
317 BEGIN
318 x_return_status := OKL_API.G_RET_STS_SUCCESS;
319 -- check for logging on PROCEDURE level
320 l_debug_enabled := okl_debug_pub.check_log_enabled;
321 -- call START_ACTIVITY to create savepoint, check compatibility
322 -- and initialize message list
323 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
324 ,p_pkg_name => G_PKG_NAME
325 ,p_init_msg_list => p_init_msg_list
326 ,l_api_version => l_api_version
327 ,p_api_version => p_api_version
328 ,p_api_type => g_api_type
329 ,x_return_status => x_return_status);
330 -- check if activity started successfully
331 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
332 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
333 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
334 RAISE OKL_API.G_EXCEPTION_ERROR;
335 END IF;
336 IF(l_debug_enabled='Y') THEN
337 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_LEASE_APP_PVT.set_lease_app_status'
338 ,'begin debug call lease_app_upd');
339 END IF;
340 OKL_LEASE_APP_PVT.set_lease_app_status(p_api_version => p_api_version,
341 p_init_msg_list => p_init_msg_list,
342 x_return_status => x_return_status,
343 x_msg_count => x_msg_count,
344 x_msg_data => x_msg_data,
345 p_lap_id => p_lap_id,
346 p_lap_status => 'CONV-K'
347 );
348 IF(l_debug_enabled='Y') THEN
349 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_LEASE_APP_PVT.set_lease_app_status'
350 ,'end debug call lease_app_upd');
351 END IF;
352 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
353 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
354 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
355 RAISE OKL_API.G_EXCEPTION_ERROR;
356 END IF;
357
358
359 x_return_status := okc_api.G_RET_STS_SUCCESS;
360 OKL_API.END_ACTIVITY(
361 x_msg_count => x_msg_count
362 ,x_msg_data => x_msg_data);
363 EXCEPTION
364 WHEN OKL_API.G_EXCEPTION_ERROR THEN
365 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
366 p_api_name => l_api_name,
367 p_pkg_name => G_PKG_NAME,
368 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
369 x_msg_count => x_msg_count,
370 x_msg_data => x_msg_data,
371 p_api_type => G_API_TYPE);
372 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
373 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
374 p_api_name => l_api_name,
375 p_pkg_name => G_PKG_NAME,
376 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
377 x_msg_count => x_msg_count,
378 x_msg_data => x_msg_data,
379 p_api_type => G_API_TYPE);
380 WHEN OTHERS THEN
381 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
382 p_api_name => l_api_name,
383 p_pkg_name => G_PKG_NAME,
384 p_exc_name => 'OTHERS',
385 x_msg_count => x_msg_count,
386 x_msg_data => x_msg_data,
387 p_api_type => G_API_TYPE);
388 END update_leaseapp_status;
389 -------------------------------------------------------------------------------
390 -- PROCEDURE create_vendor
391 -------------------------------------------------------------------------------
392 -- Start of comments
393 --
394 -- Procedure Name : create_vendor
395 -- Description : This procedure is a wrapper that creates create_vendor
396
397 -- End of comments
398 PROCEDURE create_vendor(p_api_version IN NUMBER,
399 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
400 x_return_status OUT NOCOPY VARCHAR2,
401 x_msg_count OUT NOCOPY NUMBER,
402 x_msg_data OUT NOCOPY VARCHAR2,
403 p_chr_id IN NUMBER,
404 p_cle_id IN NUMBER,
405 p_vendor_id IN NUMBER)IS
406 -- Variables Declarations
407 l_api_version CONSTANT NUMBER DEFAULT 1.0;
408 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_PTY_RLS';
409 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
410 l_debug_enabled VARCHAR2(10);
411 row_count NUMBER DEFAULT 0;
412 lp_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
413 lx_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
414 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
415 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
416
417 --Check for the existing party roles
418 CURSOR check_line_party_csr IS
419 SELECT COUNT(1)
420 FROM okc_k_party_roles_v
421 WHERE dnz_chr_id = p_chr_id
422 AND chr_id = p_chr_id
423 AND rle_code = 'OKL_VENDOR'
424 AND JTOT_OBJECT1_CODE = 'OKX_VENDOR'
425 AND cle_id = p_cle_id
426 AND object1_id1 = p_vendor_id;
427
428 CURSOR check_top_party_csr IS
429 SELECT COUNT(1)
430 FROM okc_k_party_roles_v
431 WHERE dnz_chr_id = p_chr_id
432 AND chr_id = p_chr_id
433 AND rle_code = 'OKL_VENDOR'
434 AND JTOT_OBJECT1_CODE = 'OKX_VENDOR'
435 AND cle_id is null
436 AND object1_id1 = p_vendor_id;
437
438
439 BEGIN
440 x_return_status := OKL_API.G_RET_STS_SUCCESS;
441 -- check for logging on PROCEDURE level
442 l_debug_enabled := okl_debug_pub.check_log_enabled;
443 -- call START_ACTIVITY to create savepoint, check compatibility
444 -- and initialize message list
445 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
446 ,p_pkg_name => G_PKG_NAME
447 ,p_init_msg_list => p_init_msg_list
448 ,l_api_version => l_api_version
449 ,p_api_version => p_api_version
450 ,p_api_type => g_api_type
451 ,x_return_status => x_return_status);
452 -- check if activity started successfully
453 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
454 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
455 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
456 RAISE OKL_API.G_EXCEPTION_ERROR;
457 END IF;
458
459 lp_cplv_rec.object_version_number := 1.0;
460 lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
461 lp_cplv_rec.dnz_chr_id := p_chr_id;
462 lp_cplv_rec.chr_id := p_chr_id;
463 lp_cplv_rec.cle_id := p_cle_id;
464 lp_cplv_rec.object1_id1 := p_vendor_id;
465 lp_cplv_rec.object1_id2 := '#';
466 lp_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
467 lp_cplv_rec.rle_code := 'OKL_VENDOR';
468 IF p_cle_id IS NOT NULL THEN
469 lp_cplv_rec.chr_id := NULL;
470 OPEN check_line_party_csr;
471 FETCH check_line_party_csr INTO row_count;
472 CLOSE check_line_party_csr;
473 ELSE
474 OPEN check_top_party_csr;
475 FETCH check_top_party_csr INTO row_count;
476 CLOSE check_top_party_csr;
477 END IF;
478
479
480 IF row_count = 0 THEN
481 lp_kplv_rec.validate_dff_yn := 'Y';
482 IF(l_debug_enabled='Y') THEN
483 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
484 ,'begin debug call create_k_party_role');
485 END IF;
486
487 okl_k_party_roles_pvt.create_k_party_role(
488 p_api_version => p_api_version,
489 p_init_msg_list => p_init_msg_list,
490 x_return_status => x_return_status,
491 x_msg_count => x_msg_count,
492 x_msg_data => x_msg_data,
493 p_cplv_rec => lp_cplv_rec,
494 x_cplv_rec => lx_cplv_rec,
495 p_kplv_rec => lp_kplv_rec,
496 x_kplv_rec => lx_kplv_rec);
497 IF(l_debug_enabled='Y') THEN
498 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
499 ,'end debug call create_k_party_role');
500 END IF;
501 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
502 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
503 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
504 RAISE OKL_API.G_EXCEPTION_ERROR;
505 END IF;
506 END IF;
507 x_return_status := okc_api.G_RET_STS_SUCCESS;
508 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
509 ,x_msg_data => x_msg_data);
510 EXCEPTION
511 WHEN OKL_API.G_EXCEPTION_ERROR THEN
512 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
513 p_api_name => l_api_name,
514 p_pkg_name => G_PKG_NAME,
515 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
516 x_msg_count => x_msg_count,
517 x_msg_data => x_msg_data,
518 p_api_type => g_api_type);
519 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
520 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
521 p_api_name => l_api_name,
522 p_pkg_name => G_PKG_NAME,
523 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
524 x_msg_count => x_msg_count,
525 x_msg_data => x_msg_data,
526 p_api_type => g_api_type);
527 WHEN OTHERS THEN
528 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
529 p_api_name => l_api_name,
530 p_pkg_name => G_PKG_NAME,
531 p_exc_name => 'OTHERS',
532 x_msg_count => x_msg_count,
533 x_msg_data => x_msg_data,
534 p_api_type => g_api_type);
535 END create_vendor;
536
537
538 -----------------------------------------------------------------------------
539 -- FUNCTION get_fin_line_id
540 -----------------------------------------------------------------------------
541 -- Start of comments
542 --
543 -- Function Name : get_fin_line_id
544 -- Description : This function returns the fin asset line id
545 -- :for respective quote asset id
546 -- Business Rules :
547 -- Parameters :
548 -- Version : 1.0
549 -- History : 27-Sep-2005 SKGAUTAM created
550 --
551 -- End of comments
552 FUNCTION get_fin_line_id (p_qte_asset_id IN NUMBER)
553 RETURN NUMBER IS
554 BEGIN
555
556 FOR i in l_qte_cntrct_ast_tbl.FIRST .. l_qte_cntrct_ast_tbl.LAST LOOP
557 IF l_qte_cntrct_ast_tbl.EXISTS(i) THEN
558 IF l_qte_cntrct_ast_tbl(i).qte_asset_id = p_qte_asset_id THEN
559 RETURN l_qte_cntrct_ast_tbl(i).cntrct_asset_id;
560 END IF;
561 END IF;
562 END LOOP;
563 RETURN NULL;
564 END;
565
566 -----------------------------------------------------------------------------
567 -- PROCEDURE populate_rule_record
568 -----------------------------------------------------------------------------
569 -- Start of comments
570 --
571 -- Procedure Name : populate_rule_record
572 -- Description : This Procedure populates the default values
573 -- : for rule record
574 -- Business Rules :
575 -- Parameters : p_chr_id, p_rgp_id, p_rule_name,x_rulv_rec
576 -- Version : 1.0
577 -- History : 20-Jun-2005 SKGAUTAM created
578 --
579 -- End of comments
580 PROCEDURE populate_rule_record( p_chr_id IN NUMBER,
581 p_rgp_id IN NUMBER,
582 p_rule_name IN VARCHAR2,
583 x_rulv_rec OUT NOCOPY okc_rule_pub.rulv_rec_type) IS
584 l_rulv_rec okc_rule_pub.rulv_rec_type;
585 BEGIN
586 l_rulv_rec.dnz_chr_id := p_chr_id;
587 l_rulv_rec.rgp_id := p_rgp_id;
588 l_rulv_rec.std_template_yn := 'N';
589 l_rulv_rec.warn_yn := 'N';
590 l_rulv_rec.template_yn := 'N';
591 l_rulv_rec.rule_information_category := p_rule_name;
592 x_rulv_rec := l_rulv_rec;
593 END populate_rule_record;
594
595 -----------------------------------------------------------------------------
596 -- PROCEDURE create_rule_group
597 -----------------------------------------------------------------------------
598 -- Start of comments
599 --
600 -- Procedure Name : create_rule_group
601 -- Description : This Procedure creates the rulegroup and
602 -- : returns rule group id
603 -- Business Rules :
604 -- Parameters : p_chr_id, p_cle_id, p_rgd_code,x_rgp_id
605 -- Version : 1.0
606 -- History : 20-Jun-2005 SKGAUTAM created
607 --
608 -- End of comments
609 PROCEDURE create_rule_group(p_api_version IN NUMBER,
610 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
611 x_return_status OUT NOCOPY VARCHAR2,
612 x_msg_count OUT NOCOPY NUMBER,
613 x_msg_data OUT NOCOPY VARCHAR2,
614 p_cle_id IN NUMBER,
615 p_chr_id IN NUMBER,
616 p_rgd_code IN VARCHAR2,
617 x_rgp_id OUT NOCOPY NUMBER) IS
618 -- Variables Declarations
619 l_api_version CONSTANT NUMBER DEFAULT 1.0;
620 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_RL_GRP';
621 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
622 l_debug_enabled VARCHAR2(10);
623 lx_return_status VARCHAR2(1);
624
625 l_rgpv_rec okc_rule_pub.rgpv_rec_type;
626 lx_rgpv_rec okc_rule_pub.rgpv_rec_type;
627 BEGIN
628 x_return_status := OKL_API.G_RET_STS_SUCCESS;
629 -- check for logging on PROCEDURE level
630 l_debug_enabled := okl_debug_pub.check_log_enabled;
631 -- call START_ACTIVITY to create savepoint, check compatibility
632 -- and initialize message list
633 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
634 ,p_pkg_name => G_PKG_NAME
635 ,p_init_msg_list => p_init_msg_list
636 ,l_api_version => l_api_version
637 ,p_api_version => p_api_version
638 ,p_api_type => g_api_type
639 ,x_return_status => x_return_status);
640 -- check if activity started successfully
641 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
642 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
643 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
644 RAISE OKL_API.G_EXCEPTION_ERROR;
645 END IF;
646 l_rgpv_rec.rgp_type := 'KRG';
647 l_rgpv_rec.cle_id := p_cle_id;
648 l_rgpv_rec.dnz_chr_id := p_chr_id;
649 l_rgpv_rec.rgd_code := p_rgd_code;
650 IF(l_debug_enabled='Y') THEN
651 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule_group'
652 ,'begin debug call create_rule_group');
653 END IF;
654 okc_rule_pub.create_rule_group(p_api_version => p_api_version,
655 p_init_msg_list => p_init_msg_list,
656 x_return_status => x_return_status,
657 x_msg_count => x_msg_count,
658 x_msg_data => x_msg_data,
659 p_rgpv_rec => l_rgpv_rec,
660 x_rgpv_rec => lx_rgpv_rec);
661 IF(l_debug_enabled='Y') THEN
662 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule_group'
663 ,'end debug call create_rule_group');
664 END IF;
665 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
666 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
667 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
668 RAISE OKL_API.G_EXCEPTION_ERROR;
669 END IF;
670 x_rgp_id := lx_rgpv_rec.id;
671 x_return_status := okc_api.G_RET_STS_SUCCESS;
672 OKL_API.END_ACTIVITY(
673 x_msg_count => x_msg_count
674 ,x_msg_data => x_msg_data);
675 EXCEPTION
676 WHEN OKL_API.G_EXCEPTION_ERROR THEN
677 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
678 p_api_name => l_api_name,
679 p_pkg_name => G_PKG_NAME,
680 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
681 x_msg_count => x_msg_count,
682 x_msg_data => x_msg_data,
683 p_api_type => G_API_TYPE);
684 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
685 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
686 p_api_name => l_api_name,
687 p_pkg_name => G_PKG_NAME,
688 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
689 x_msg_count => x_msg_count,
690 x_msg_data => x_msg_data,
691 p_api_type => G_API_TYPE);
692 WHEN OTHERS THEN
693 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
694 p_api_name => l_api_name,
695 p_pkg_name => G_PKG_NAME,
696 p_exc_name => 'OTHERS',
697 x_msg_count => x_msg_count,
698 x_msg_data => x_msg_data,
699 p_api_type => G_API_TYPE);
700 END create_rule_group;
701
702 -----------------------------------------------------------------------------
703 -- FUNCTION is_lasll_modified
704 -----------------------------------------------------------------------------
705 -- Start of comments
706 --
707 -- Procedure Name : is_lasll_modified
708 -- Description : This function checks whether LASLL line is modified
709 -- : or not returns boolean
710 -- Business Rules :
711 -- Parameters :p_payment_levels_rec,p_payment_frequency,p_payment_arrears
712 -- Version : 1.0
713 -- History : 20-Jun-2005 SKGAUTAM created
714 --
715 -- End of comments
716 FUNCTION is_lasll_modified(p_payment_levels_rec IN payment_levels_rec_type,
717 p_payment_frequency IN VARCHAR2,
718 p_payment_arrears IN VARCHAR2) RETURN BOOLEAN IS
719 -- cursor to retrieve the details of the LASLL rule
720 CURSOR find_lasll_dtls_csr(p_rul_id NUMBER) IS
721 SELECT object1_id1 frequency, object2_id1 laslh_id, fnd_date.canonical_to_date(rule_information2) start_date,
722 rule_information3 periods, rule_information6 amount,
723 rule_information5 payment_structure, rule_information13 rate,
724 rule_information7 stub_days, rule_information8 stub_amount, rule_information10 arrears
725 FROM okc_rules_b
726 WHERE id = p_rul_id;
727 BEGIN
728 FOR l_lasll_csr_rec IN find_lasll_dtls_csr(p_rul_id => p_payment_levels_rec.payment_level_id)
729 LOOP
730 IF(l_lasll_csr_rec.frequency <> p_payment_frequency) THEN
731 RETURN TRUE;
732 ELSIF(l_lasll_csr_rec.arrears <> p_payment_arrears) THEN
733 RETURN TRUE;
734 ELSIF(l_lasll_csr_rec.amount IS NULL AND p_payment_levels_rec.amount IS NOT NULL) THEN
735 RETURN TRUE;
736 ELSIF(l_lasll_csr_rec.amount IS NOT NULL AND p_payment_levels_rec.amount IS NULL) THEN
737 RETURN TRUE;
738 ELSIF(l_lasll_csr_rec.amount <> p_payment_levels_rec.amount) THEN
739 RETURN TRUE;
740 ELSIF(l_lasll_csr_rec.periods IS NULL AND p_payment_levels_rec.periods IS NOT NULL) THEN
741 RETURN TRUE;
742 ELSIF(l_lasll_csr_rec.periods IS NOT NULL AND p_payment_levels_rec.periods IS NULL) THEN
743 RETURN TRUE;
744 ELSIF(l_lasll_csr_rec.periods <> p_payment_levels_rec.periods) THEN
745 RETURN TRUE;
746 ELSIF(l_lasll_csr_rec.stub_days IS NULL AND p_payment_levels_rec.stub_days IS NOT NULL) THEN
747 RETURN TRUE;
748 ELSIF(l_lasll_csr_rec.stub_days IS NOT NULL AND p_payment_levels_rec.stub_days IS NULL) THEN
749 RETURN TRUE;
750 ELSIF(l_lasll_csr_rec.stub_days <> p_payment_levels_rec.stub_days) THEN
751 RETURN TRUE;
752 ELSIF(l_lasll_csr_rec.stub_amount IS NULL AND p_payment_levels_rec.stub_amount IS NOT NULL) THEN
753 RETURN TRUE;
754 ELSIF(l_lasll_csr_rec.stub_amount IS NOT NULL AND p_payment_levels_rec.stub_amount IS NULL) THEN
755 RETURN TRUE;
756 ELSIF(l_lasll_csr_rec.stub_amount <> p_payment_levels_rec.stub_amount) THEN
757 RETURN TRUE;
758 ELSIF(l_lasll_csr_rec.rate IS NULL AND p_payment_levels_rec.rate IS NOT NULL) THEN
759 RETURN TRUE;
760 ELSIF(l_lasll_csr_rec.rate IS NOT NULL AND p_payment_levels_rec.rate IS NULL) THEN
761 RETURN TRUE;
762 ELSIF(l_lasll_csr_rec.rate <> p_payment_levels_rec.rate) THEN
763 RETURN TRUE;
764 ELSIF(l_lasll_csr_rec.payment_structure <> p_payment_levels_rec.payment_structure) THEN
765 RETURN TRUE;
766 ELSIF(l_lasll_csr_rec.start_date <> p_payment_levels_rec.start_date) THEN
767 RETURN TRUE;
768 ELSE
769 RETURN FALSE;
770 END IF;
771 END LOOP;
772 END is_lasll_modified;
773
774 -----------------------------------------------------------------------------
775 -- PROCEDURE check_redundant_levels
776 -----------------------------------------------------------------------------
777 PROCEDURE check_redundant_levels (p_payment_levels_tbl IN payment_levels_tbl_type,
778 p_pricing_method IN VARCHAR2,
779 x_return_status OUT NOCOPY VARCHAR2) IS
780 l_prev_sll_stub_yn VARCHAR2(1);
781 l_prev_sll_rate NUMBER;
782 l_prev_sll_amount NUMBER;
783 i BINARY_INTEGER;
784 l_program_name CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||'check_redundant_levels';
785 BEGIN
786 IF p_payment_levels_tbl.COUNT > 0 THEN
787 i := p_payment_levels_tbl.FIRST;
788 -- level rows are ordered by level start date
789 -- upstream validations in place to ensure amount, stub amount and rate cannot be negative
790 -- existence of stub days is the definitive indication of a level being
791 LOOP
792 IF p_payment_levels_tbl.EXISTS(i) THEN
793 IF (p_payment_levels_tbl(i).stub_days IS NULL) AND (l_prev_sll_stub_yn = 'N') THEN
794 IF p_pricing_method IN ('SY', 'NA') THEN
795 IF p_payment_levels_tbl(i).amount = l_prev_sll_amount THEN
796 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
797 p_msg_name => 'OKL_REDUNDANT_PAYMENT_LEVELS');
798 RAISE OKL_API.G_EXCEPTION_ERROR;
799 END IF;
800 ELSIF p_pricing_method = 'SP' THEN
801 IF p_payment_levels_tbl(i).rate = l_prev_sll_rate THEN
802 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
803 p_msg_name => 'OKL_REDUNDANT_PAYMENT_LEVELS2');
804 RAISE OKL_API.G_EXCEPTION_ERROR;
805 END IF;
806 ELSIF p_pricing_method = 'SM' THEN
807 IF (p_payment_levels_tbl(i).rate = l_prev_sll_rate) AND (p_payment_levels_tbl(i).amount = l_prev_sll_amount) THEN
808 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
809 p_msg_name => 'OKL_REDUNDANT_PAYMENT_LEVELS3');
810 RAISE OKL_API.G_EXCEPTION_ERROR;
811 END IF;
812 END IF;
813 END IF;
814 IF p_payment_levels_tbl(i).stub_days IS NOT NULL THEN
815 l_prev_sll_stub_yn := 'Y';
816 ELSE
817 l_prev_sll_stub_yn := 'N';
818 END IF;
819 IF p_payment_levels_tbl(i).amount IS NOT NULL THEN
820 l_prev_sll_amount := p_payment_levels_tbl(i).amount;
821 ELSE
822 l_prev_sll_amount := NULL;
823 END IF;
824 IF p_payment_levels_tbl(i).rate IS NOT NULL THEN
825 l_prev_sll_rate := p_payment_levels_tbl(i).rate;
826 ELSE
827 l_prev_sll_rate := NULL;
828 END IF;
829 EXIT WHEN (i = p_payment_levels_tbl.LAST);
830 i := p_payment_levels_tbl.NEXT(i);
831 END IF;
832 END LOOP;
833 END IF;
834 x_return_status := OKL_API.G_RET_STS_SUCCESS;
835 EXCEPTION
836 WHEN OKL_API.G_EXCEPTION_ERROR THEN
837 x_return_status := OKL_API.G_RET_STS_ERROR;
838 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
839 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
840 WHEN OTHERS THEN
841 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
842 p_msg_name => G_DB_ERROR,
843 p_token1 => G_PROG_NAME_TOKEN,
844 p_token1_value => l_program_name,
845 p_token2 => G_SQLCODE_TOKEN,
846 p_token2_value => sqlcode,
847 p_token3 => G_SQLERRM_TOKEN,
848 p_token3_value => sqlerrm);
849 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
850 END check_redundant_levels;
851
852 -----------------------------------------------------------------------------
853 -- FUNCTION calculate_end_date
854 -----------------------------------------------------------------------------
855 -- Start of comments
856 --
857 -- Procedure Name : calculate_end_date
858 -- Description : This function calculates contract end date
859 -- Business Rules :
860 -- Parameters : p_start_date, p_periods, p_frequency
861 -- Version : 1.0
862 -- History : 20-Jun-2005 SKGAUTAM created
863 --
864 -- End of comments
865 FUNCTION calculate_end_date(p_start_date DATE,
866 p_periods NUMBER,
867 p_frequency VARCHAR2) RETURN DATE IS
868 CURSOR find_months_per_period_csr(p_frequency VARCHAR2) IS
869 SELECT DECODE(p_frequency,'M',1,'Q',3,'S',6,'A',12) months_per_period
870 FROM DUAL;
871 l_period_end_date DATE;
872 BEGIN
873 FOR l_months_per_period_csr IN find_months_per_period_csr(p_frequency => p_frequency)
874 LOOP
875 l_period_end_date := ADD_MONTHS(p_start_date,(l_months_per_period_csr.months_per_period)*p_periods);
876 END LOOP;
877 RETURN (l_period_end_date - 1);
878 END calculate_end_date;
879
880 -----------------------------------------------------------------------------
881 -- PROCEDURE validate_payment_details
882 -----------------------------------------------------------------------------
883 -- Start of comments
884 --
885 -- Procedure Name : validate_payment_details
886 -- Description : This Procedure validates the payment details
887 -- : fin_line id and amount of the assets as input
888 -- Business Rules :
889 -- Parameters : p_cle_id, p_chr_id, p_amount, p_asset_id_tbl
890 -- Version : 1.0
891 -- History : 20-Jun-2005 SKGAUTAM created
892 --
893 -- End of comments
894 PROCEDURE validate_payment_details(p_api_version IN NUMBER,
895 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
896 x_return_status OUT NOCOPY VARCHAR2,
897 x_msg_count OUT NOCOPY NUMBER,
898 x_msg_data OUT NOCOPY VARCHAR2,
899 p_chr_id IN NUMBER,
900 p_payment_type_id IN NUMBER,
901 p_payment_frequency IN VARCHAR2,
902 p_payment_arrears IN VARCHAR2,
903 p_effective_from_date IN DATE,
904 p_pricing_method IN VARCHAR2,
905 p_pricing_engine IN VARCHAR2,
906 p_payment_levels_tbl IN payment_levels_tbl_type,
907 x_payment_levels_tbl OUT NOCOPY payment_levels_tbl_type
908 ) IS
909 -- Variables Declarations
910 l_api_version CONSTANT NUMBER DEFAULT 1.0;
911 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'VLD_PMT_DTL';
912 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
913 i BINARY_INTEGER;
914 l_payment_levels_tbl payment_levels_tbl_type;
915 l_level_end_date DATE;
916 l_level_start_date DATE;
917 l_contract_end_date DATE;
918 l_term NUMBER;
919 l_mpp NUMBER;
920 l_missing_count NUMBER := 0;
921 l_stub_count NUMBER := 0;
922 BEGIN
923 x_return_status := OKL_API.G_RET_STS_SUCCESS;
924 -- check for logging on PROCEDURE level
925 l_debug_enabled := okl_debug_pub.check_log_enabled;
926 -- call START_ACTIVITY to create savepoint, check compatibility
927 -- and initialize message list
928 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
929 ,p_pkg_name => G_PKG_NAME
930 ,p_init_msg_list => p_init_msg_list
931 ,l_api_version => l_api_version
932 ,p_api_version => p_api_version
933 ,p_api_type => g_api_type
934 ,x_return_status => x_return_status);
935 -- check if activity started successfully
936 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
937 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
938 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
939 RAISE OKL_API.G_EXCEPTION_ERROR;
940 END IF;
941 l_payment_levels_tbl := p_payment_levels_tbl;
942 SELECT end_date,
943 term_duration
944 INTO l_contract_end_date,
945 l_term
946 FROM okc_k_headers_b chr,
947 okl_k_headers khr
948 WHERE chr.id = p_chr_id
949 AND chr.id = khr.id;
950 SELECT DECODE(p_payment_frequency, 'A', 12, 'S', 6, 'Q', 3, 'M', 1)
951 INTO l_mpp
952 FROM dual;
953 ----------------------------------------------------------------------------------------------
954 -- Explanation of validations available in file 'SO Error Messages.xls' (see reference number)
955 ----------------------------------------------------------------------------------------------
956 -- 1.
957 IF (p_payment_type_id IS NOT NULL AND p_payment_levels_tbl.COUNT = 0) OR
958 (p_pricing_method <> 'NA' AND p_payment_levels_tbl.COUNT = 0) THEN
959 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
960 p_msg_name => 'OKL_LEVEL_REQD_LEVELS');
961 RAISE OKL_API.G_EXCEPTION_ERROR;
962 END IF;
963 -- 2.
964 IF (p_payment_type_id IS NULL AND p_payment_levels_tbl.COUNT > 0) THEN
965 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
966 p_msg_name => 'OKL_LEVEL_REQD_PAYMENTTYPE');
967 RAISE OKL_API.G_EXCEPTION_ERROR;
968 END IF;
969 -- 12.
970 IF p_pricing_method = 'TR' THEN
971 IF TRUNC(l_term / l_mpp) <> (l_term / l_mpp) THEN
972 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
973 p_msg_name => 'OKL_TERM_FREQ_MISMATCH');
974 RAISE OKL_API.G_EXCEPTION_ERROR;
975 END IF;
976 END IF;
977 IF (p_payment_levels_tbl.COUNT > 0) THEN
978 i := p_payment_levels_tbl.FIRST;
979 l_level_start_date := p_effective_from_date;
980 LOOP
981 -- 16.
982 IF (p_payment_levels_tbl(i).periods IS NOT NULL) AND (p_payment_levels_tbl(i).periods <= 0) THEN
983 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
984 p_msg_name => 'OKL_LEVEL_PERIOD_ZERO');
985 RAISE OKL_API.G_EXCEPTION_ERROR;
986 END IF;
987 -- 17.
988 IF (p_payment_levels_tbl(i).periods IS NOT NULL) AND
989 (TRUNC(p_payment_levels_tbl(i).periods) <> p_payment_levels_tbl(i).periods) THEN
990 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
991 p_msg_name => 'OKL_LEVEL_PERIOD_FRACTION');
992 RAISE OKL_API.G_EXCEPTION_ERROR;
993 END IF;
994 -- 18.
995 IF (p_payment_levels_tbl(i).stub_days IS NOT NULL) AND (p_payment_levels_tbl(i).stub_days <= 0) THEN
996 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
997 p_msg_name => 'OKL_LEVEL_STUBDAYS_ZERO');
998 RAISE OKL_API.G_EXCEPTION_ERROR;
999 END IF;
1000 -- 19.
1001 IF (p_payment_levels_tbl(i).stub_days IS NOT NULL) AND
1002 (TRUNC(p_payment_levels_tbl(i).stub_days) <> p_payment_levels_tbl(i).stub_days) THEN
1003 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1004 p_msg_name => 'OKL_LEVEL_STUBDAYS_FRACTION');
1005 RAISE OKL_API.G_EXCEPTION_ERROR;
1006 END IF;
1007 -- 20.
1008 IF (p_payment_levels_tbl(i).amount IS NOT NULL) AND (p_payment_levels_tbl(i).amount < 0) THEN
1009 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1010 p_msg_name => 'OKL_LEVEL_AMOUNT_ZERO');
1011 RAISE OKL_API.G_EXCEPTION_ERROR;
1012 END IF;
1013 -- 21.
1014 IF (p_payment_levels_tbl(i).stub_amount IS NOT NULL) AND (p_payment_levels_tbl(i).stub_amount < 0) THEN
1015 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1016 p_msg_name => 'OKL_LEVEL_STUBAMT_ZERO');
1017 RAISE OKL_API.G_EXCEPTION_ERROR;
1018 END IF;
1019 -- 22.
1020 IF (p_payment_levels_tbl(i).rate IS NOT NULL) AND (p_payment_levels_tbl(i).rate <= 0) THEN
1021 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1022 p_msg_name => 'OKL_LEVEL_RATE_ZERO');
1023 RAISE OKL_API.G_EXCEPTION_ERROR;
1024 END IF;
1025 -- 3.
1026 IF (p_pricing_engine = 'I') AND (i <> p_payment_levels_tbl.FIRST) AND
1027 (p_payment_levels_tbl(i).stub_days IS NOT NULL OR p_payment_levels_tbl(i).stub_amount IS NOT NULL) THEN
1028 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1029 p_msg_name => 'OKL_LEVEL_PLANSTUB_NA');
1030 RAISE OKL_API.G_EXCEPTION_ERROR;
1031 END IF;
1032 /* -- Commented by gboomina for Bug#6869998
1033 -- 4.
1034 -- Validation : To check if payment structure has stub line at other than first position
1035 IF (p_pricing_engine = 'NA') AND (i <> p_payment_levels_tbl.FIRST) AND
1036 (p_payment_levels_tbl(i).stub_days IS NOT NULL OR p_payment_levels_tbl(i).stub_amount IS NOT NULL) THEN
1037 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1038 p_msg_name => 'OKL_LEVEL_STUB_NA');
1039 RAISE OKL_API.G_EXCEPTION_ERROR;
1040 END IF;
1041 */
1042 -- 5.
1043 IF (p_pricing_method IN ('SP', 'SM') AND p_payment_levels_tbl(i).rate IS NULL) THEN
1044 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1045 p_msg_name => 'OKL_LEVEL_REQD_RATE');
1046 RAISE OKL_API.G_EXCEPTION_ERROR;
1047 END IF;
1048 -- 6.
1049 IF (p_payment_levels_tbl(i).stub_days IS NULL) AND (p_payment_levels_tbl(i).periods IS NULL) THEN
1050 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1051 p_msg_name => 'OKL_LEVEL_NO_STUB_AND_PER');
1052 RAISE OKL_API.G_EXCEPTION_ERROR;
1053 END IF;
1054 -- 7.
1055 IF (p_payment_levels_tbl(i).stub_days IS NOT NULL) AND (p_payment_levels_tbl(i).periods IS NOT NULL) THEN
1056 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1057 p_msg_name => 'OKL_LEVEL_BOTH_STUB_AND_PER');
1058 RAISE OKL_API.G_EXCEPTION_ERROR;
1059 END IF;
1060 -- 8.
1061 IF (p_payment_levels_tbl(i).stub_amount IS NOT NULL) AND (p_payment_levels_tbl(i).stub_days IS NULL) THEN
1062 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1063 p_msg_name => 'OKL_LEVEL_STUBAMT_WO_DAYS');
1064 RAISE OKL_API.G_EXCEPTION_ERROR;
1065 END IF;
1066 -- 9.
1067 IF (p_payment_levels_tbl(i).amount IS NOT NULL) AND (p_payment_levels_tbl(i).periods IS NULL) THEN
1068 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1069 p_msg_name => 'OKL_LEVEL_AMOUNT_WO_PERIODS');
1070 RAISE OKL_API.G_EXCEPTION_ERROR;
1071 END IF;
1072 -- 10.
1073 IF (p_pricing_method IN ('SY', 'NA') AND p_payment_levels_tbl(i).amount IS NULL AND
1074 p_payment_levels_tbl(i).stub_days IS NULL) THEN
1075 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1076 p_msg_name => 'OKL_LEVEL_REQD_AMOUNT');
1077 RAISE OKL_API.G_EXCEPTION_ERROR;
1078 END IF;
1079 IF (p_payment_levels_tbl(i).stub_days IS NOT NULL AND p_payment_levels_tbl(i).stub_amount IS NULL) THEN
1080 l_missing_count := l_missing_count + 1;
1081 END IF;
1082 IF (p_payment_levels_tbl(i).stub_days IS NULL AND p_payment_levels_tbl(i).amount IS NULL) THEN
1083 l_missing_count := l_missing_count + 1;
1084 END IF;
1085 IF p_payment_levels_tbl(i).stub_days IS NOT NULL THEN
1086 l_stub_count := l_stub_count + 1;
1087 END IF;
1088 IF (l_payment_levels_tbl(i).stub_days IS NULL) THEN
1089 l_level_end_date := calculate_end_date(p_start_date => l_level_start_date,
1090 p_periods => l_payment_levels_tbl(i).periods,
1091 p_frequency => p_payment_frequency);
1092 ELSE
1093 l_level_end_date := l_level_start_date + l_payment_levels_tbl(i).stub_days - 1;
1094 END IF;
1095 l_payment_levels_tbl(i).start_date := l_level_start_date;
1096 l_level_start_date := l_level_end_date + 1;
1097 EXIT WHEN (i = l_payment_levels_tbl.LAST);
1098 i := l_payment_levels_tbl.NEXT(i);
1099 END LOOP;
1100 -- 15.
1101 IF (l_stub_count = p_payment_levels_tbl.COUNT) THEN
1102 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1103 p_msg_name => 'OKL_LEVEL_ALL_STUBS');
1104 RAISE OKL_API.G_EXCEPTION_ERROR;
1105 END IF;
1106 -- 11.
1107 IF l_level_end_date > l_contract_end_date THEN
1108 OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
1109 p_msg_name => 'OKL_LEVEL_EXTENDS_K_END');
1110 RAISE OKL_API.G_EXCEPTION_ERROR;
1111 END IF;
1112 END IF;
1113 x_payment_levels_tbl := l_payment_levels_tbl;
1114 x_return_status := okc_api.G_RET_STS_SUCCESS;
1115 OKL_API.END_ACTIVITY(
1116 x_msg_count => x_msg_count
1117 ,x_msg_data => x_msg_data);
1118 EXCEPTION
1119 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1120 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1121 p_api_name => l_api_name,
1122 p_pkg_name => G_PKG_NAME,
1123 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1124 x_msg_count => x_msg_count,
1125 x_msg_data => x_msg_data,
1126 p_api_type => G_API_TYPE);
1127 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1128 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1129 p_api_name => l_api_name,
1130 p_pkg_name => G_PKG_NAME,
1131 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1132 x_msg_count => x_msg_count,
1133 x_msg_data => x_msg_data,
1134 p_api_type => G_API_TYPE);
1135 WHEN OTHERS THEN
1136 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1137 p_api_name => l_api_name,
1138 p_pkg_name => G_PKG_NAME,
1139 p_exc_name => 'OTHERS',
1140 x_msg_count => x_msg_count,
1141 x_msg_data => x_msg_data,
1142 p_api_type => G_API_TYPE);
1143 END validate_payment_details;
1144
1145 -----------------------------------------------------------------------------
1146 -- PROCEDURE create_payment_plans
1147 -----------------------------------------------------------------------------
1148 -- Start of comments
1149 --
1150 -- Procedure Name : create_payment_plans
1151 -- Description : This procedure creates the payment lines
1152 -- Business Rules :
1153 -- Parameters : p_cle_id,p_chr_id,p_payment_arrears,p_payment_type_id
1154 -- : p_payment_levels_tbl
1155 -- Version : 1.0
1156 -- History : 20-Jun-2005 SKGAUTAM created
1157 --
1158 -- End of comments
1159 PROCEDURE create_payment_plans(p_api_version IN NUMBER,
1160 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1161 p_transaction_control IN VARCHAR2 DEFAULT OKL_API.G_TRUE,
1162 p_cle_id IN NUMBER,
1163 p_chr_id IN NUMBER,
1164 p_payment_type_id IN NUMBER,
1165 p_payment_frequency IN VARCHAR2,
1166 p_payment_arrears IN VARCHAR2,
1167 p_payment_structure IN VARCHAR2 DEFAULT NULL,
1168 p_rate_type IN VARCHAR2 DEFAULT NULL,
1169 p_payment_levels_tbl IN payment_levels_tbl_type,
1170 x_return_status OUT NOCOPY VARCHAR2,
1171 x_msg_count OUT NOCOPY NUMBER,
1172 x_msg_data OUT NOCOPY VARCHAR2) IS
1173 -- Variables Declarations
1174 l_api_version CONSTANT NUMBER DEFAULT 1.0;
1175 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_PMT_PLN';
1176 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1177 l_payment_levels_tbl payment_levels_tbl_type;
1178 l_laslh_rec okc_rule_pub.rulv_rec_type;
1179 l_lasll_rec okc_rule_pub.rulv_rec_type;
1180 lx_rgpv_rec okc_rule_pub.rgpv_rec_type;
1181 lx_rulv_rec okc_rule_pub.rulv_rec_type;
1182 line_number NUMBER := 0;
1183 l_laslh_id NUMBER;
1184 l_rgp_id NUMBER := NULL;
1185 l_start_date DATE;
1186 l_lty_code VARCHAR2(30);
1187 l_pricing_method VARCHAR2(2) := 'NA';
1188 l_pricing_engine VARCHAR2(2) := 'NA';
1189 l_rgrp_id OKC_RULE_GROUPS_V.ID%TYPE := OKL_API.G_MISS_NUM;
1190 CURSOR find_payment_hdr_csr IS
1191 SELECT id
1192 FROM okc_rule_groups_b
1193 WHERE rgd_code = 'LALEVL' AND cle_id = p_cle_id;
1194 CURSOR find_laslh_dtls_csr(p_rgp_id NUMBER) IS
1195 SELECT id, object1_id1 payment_type_id, rule_information2 rate_type
1196 FROM okc_rules_b
1197 WHERE rgp_id = p_rgp_id AND rule_information_category = 'LASLH';
1198 CURSOR RGP_CLE_CSR(P_CHR_ID IN NUMBER, P_CLE_ID IN NUMBER)IS
1199 SELECT
1200 ID
1201 FROM OKC_RULE_GROUPS_V RG WHERE
1202 RG.DNZ_CHR_ID = P_CHR_ID AND RG.CHR_ID IS NULL
1203 AND RGD_CODE = 'LALEVL'
1204 AND RG.CLE_ID = P_CLE_ID;
1205 BEGIN
1206 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1207 -- check for logging on PROCEDURE level
1208 l_debug_enabled := okl_debug_pub.check_log_enabled;
1209 -- call START_ACTIVITY to create savepoint, check compatibility
1210 -- and initialize message list
1211 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
1212 ,p_pkg_name => G_PKG_NAME
1213 ,p_init_msg_list => p_init_msg_list
1214 ,l_api_version => l_api_version
1215 ,p_api_version => p_api_version
1216 ,p_api_type => g_api_type
1217 ,x_return_status => x_return_status);
1218 -- check if activity started successfully
1219 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1220 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1221 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1222 RAISE OKL_API.G_EXCEPTION_ERROR;
1223 END IF;
1224
1225 SELECT lse.lty_code
1226 INTO l_lty_code
1227 FROM okc_k_lines_b cle,
1228 okc_line_styles_b lse
1229 WHERE cle.id = p_cle_id
1230 AND cle.lse_id = lse.id;
1231
1232 IF l_lty_code = 'SO_PAYMENT' THEN
1233 SELECT pricing_method_code,
1234 pricing_engine_code
1235 INTO l_pricing_method,
1236 l_pricing_engine
1237 FROM okl_so_plan_details_uv
1238 WHERE payment_plan_id = p_cle_id;
1239 END IF;
1240 IF(p_payment_type_id IS NOT NULL) THEN
1241 OPEN RGP_CLE_CSR(p_chr_id, p_cle_id);
1242 FETCH RGP_CLE_CSR into l_rgrp_id;
1243 CLOSE RGP_CLE_CSR;
1244 IF(l_rgrp_id IS NULL OR l_rgrp_id = OKL_API.G_MISS_NUM) THEN
1245 IF(l_debug_enabled='Y') THEN
1246 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_rule_group'
1247 ,'begin debug call create_rule_group');
1248 END IF;
1249 -- call create rule group
1250 create_rule_group(p_api_version => p_api_version,
1251 p_init_msg_list => p_init_msg_list,
1252 x_return_status => x_return_status,
1253 x_msg_count => x_msg_count,
1254 x_msg_data => x_msg_data,
1255 p_cle_id => p_cle_id,
1256 p_chr_id => p_chr_id,
1257 p_rgd_code => 'LALEVL',
1258 x_rgp_id => l_rgp_id);
1259 IF(l_debug_enabled='Y') THEN
1260 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_rule_group'
1261 ,'end debug call create_rule_group');
1262 END IF;
1263 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1265 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1266 RAISE OKL_API.G_EXCEPTION_ERROR;
1267 END IF;
1268 ELSE
1269 l_rgp_id := l_rgrp_id;
1270 END IF;
1271 END IF;
1272 IF(p_payment_type_id IS NOT NULL) THEN
1273 -- create rule for payment type
1274 -- populate defaults and mandatory fields
1275 populate_rule_record(p_chr_id => p_chr_id,
1276 p_rgp_id => l_rgp_id,
1277 p_rule_name => 'LASLH',
1278 x_rulv_rec => l_laslh_rec);
1279 l_laslh_rec.object1_id1 := p_payment_type_id;
1280 l_laslh_rec.object1_id2 := '#';
1281 l_laslh_rec.jtot_object1_code := 'OKL_STRMTYP';
1282 l_laslh_rec.rule_information2 := p_rate_type;
1283
1284 IF(l_debug_enabled='Y') THEN
1285 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule'
1286 ,'begin debug call create_rule');
1287 END IF;
1288 -- create rule for LASLH (payment header)
1289 okc_rule_pub.create_rule(p_api_version => p_api_version,
1290 p_init_msg_list => p_init_msg_list,
1291 x_msg_count => x_msg_count,
1292 x_msg_data => x_msg_data,
1293 x_return_status => l_return_status,
1294 p_rulv_rec => l_laslh_rec,
1295 x_rulv_rec => lx_rulv_rec);
1296 IF(l_debug_enabled='Y') THEN
1297 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule'
1298 ,'end debug call create_rule');
1299 END IF;
1300 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1301 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1302 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1303 RAISE OKL_API.G_EXCEPTION_ERROR;
1304 END IF;
1305 l_laslh_id := lx_rulv_rec.id;
1306 END IF;
1307 IF (p_payment_levels_tbl.COUNT > 0) THEN
1308 SELECT start_date INTO l_start_date FROM okc_k_lines_b where id = p_cle_id;
1309
1310 IF(l_debug_enabled='Y') THEN
1311 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.validate_payment_details'
1312 ,'begin debug call validate_payment_details');
1313 END IF;
1314 validate_payment_details(p_api_version => p_api_version,
1315 p_init_msg_list => p_init_msg_list,
1316 x_return_status => x_return_status,
1317 x_msg_count => x_msg_count,
1318 x_msg_data => x_msg_data,
1319 p_chr_id => p_chr_id,
1320 p_payment_type_id => p_payment_type_id,
1321 p_payment_frequency => p_payment_frequency,
1322 p_payment_arrears => p_payment_arrears,
1323 p_effective_from_date => l_start_date,
1324 p_pricing_method => l_pricing_method,
1325 p_pricing_engine => l_pricing_engine,
1326 p_payment_levels_tbl => p_payment_levels_tbl,
1327 x_payment_levels_tbl => l_payment_levels_tbl
1328 );
1329 IF(l_debug_enabled='Y') THEN
1330 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.validate_payment_details'
1331 ,'end debug call validate_payment_details');
1332 END IF;
1333 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1334 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1335 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1336 RAISE OKL_API.G_EXCEPTION_ERROR;
1337 END IF;
1338 check_redundant_levels(p_payment_levels_tbl => l_payment_levels_tbl,
1339 p_pricing_method => l_pricing_method,
1340 x_return_status => l_return_status);
1341 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1342 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1343 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1344 RAISE OKL_API.G_EXCEPTION_ERROR;
1345 END IF;
1346 line_number := l_payment_levels_tbl.FIRST;
1347 FOR line_number IN l_payment_levels_tbl.FIRST..l_payment_levels_tbl.LAST
1348 LOOP
1349 IF(l_debug_enabled='Y') THEN
1350 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1351 ,'begin debug call populate_rule_record');
1352 END IF;
1353 -- populate the defaults and mandatory fields
1354 populate_rule_record(p_chr_id => p_chr_id,
1355 p_rgp_id => l_rgp_id,
1356 p_rule_name => 'LASLL',
1357 x_rulv_rec => l_lasll_rec);
1358 IF(l_debug_enabled='Y') THEN
1359 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1360 ,'end debug call populate_rule_record');
1361 END IF;
1362
1363 l_lasll_rec.object1_id1 := p_payment_frequency;
1364 l_lasll_rec.object1_id2 := '#';
1365 l_lasll_rec.jtot_object1_code := 'OKL_TUOM';
1366 l_lasll_rec.object2_id1 := l_laslh_id;
1367 l_lasll_rec.object2_id2 := '#';
1368 l_lasll_rec.jtot_object2_code := 'OKL_STRMHDR';
1369 l_lasll_rec.rule_information3 := l_payment_levels_tbl(line_number).periods;
1370 l_lasll_rec.rule_information6 := l_payment_levels_tbl(line_number).amount;
1371 l_lasll_rec.rule_information10 := p_payment_arrears;
1372 l_lasll_rec.rule_information5 := NVL(p_payment_structure, '0');
1373 l_lasll_rec.rule_information13 := l_payment_levels_tbl(line_number).rate;
1374 l_lasll_rec.rule_information2 := fnd_date.date_to_canonical(l_payment_levels_tbl(line_number).start_date);
1375 -- stub information will be null except for the first line ( validation done before)
1376 l_lasll_rec.rule_information7 := l_payment_levels_tbl(line_number).stub_days;
1377 l_lasll_rec.rule_information8 := l_payment_levels_tbl(line_number).stub_amount;
1378
1379 IF(l_debug_enabled='Y') THEN
1380 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule'
1381 ,'begin debug call create_rule');
1382 END IF;
1383 okc_rule_pub.create_rule(p_api_version => p_api_version,
1384 p_init_msg_list => p_init_msg_list,
1385 x_return_status => x_return_status,
1386 x_msg_count => x_msg_count,
1387 x_msg_data => x_msg_data,
1388 p_rulv_rec => l_lasll_rec,
1389 x_rulv_rec => lx_rulv_rec);
1390 IF(l_debug_enabled='Y') THEN
1391 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okc_rule_pub.create_rule'
1392 ,'end debug call create_rule');
1393 END IF;
1394 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1395 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1396 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1397 RAISE OKL_API.G_EXCEPTION_ERROR;
1398 END IF;
1399 END LOOP; -- end of payment_level_table
1400 END IF; -- if payment_level_tbl has any records
1401 x_return_status := okc_api.G_RET_STS_SUCCESS;
1402 OKL_API.END_ACTIVITY(
1403 x_msg_count => x_msg_count
1404 ,x_msg_data => x_msg_data);
1405 EXCEPTION
1406 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1407 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1408 p_api_name => l_api_name,
1409 p_pkg_name => G_PKG_NAME,
1410 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1411 x_msg_count => x_msg_count,
1412 x_msg_data => x_msg_data,
1413 p_api_type => G_API_TYPE);
1414 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1415 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1416 p_api_name => l_api_name,
1417 p_pkg_name => G_PKG_NAME,
1418 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1419 x_msg_count => x_msg_count,
1420 x_msg_data => x_msg_data,
1421 p_api_type => G_API_TYPE);
1422 WHEN OTHERS THEN
1423 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1424 p_api_name => l_api_name,
1425 p_pkg_name => G_PKG_NAME,
1426 p_exc_name => 'OTHERS',
1427 x_msg_count => x_msg_count,
1428 x_msg_data => x_msg_data,
1429 p_api_type => G_API_TYPE);
1430 END create_payment_plans;
1431 -------------------------------------------------------------------------------
1432 -- PROCEDURE create_link_assets
1433 -------------------------------------------------------------------------------
1434 -- Start of comments
1435 --
1436 -- Procedure Name : create_link_assets
1437 -- Description : This procedure is a wrapper that creates assets linked with fee/service
1438 --
1439 -- Business Rules : This procedure is a wrapper that creates assets linked with fee/service
1440 --
1441 -- Parameters :
1442 -- Version : 1.0
1443 -- History : 20-Jun-2005 SKGAUTAM created
1444 -- 04-Jan-2008 RRAVIKIR modified for Bug#6707125 for correct allocation of
1445 -- amount to associated assets of a Fee Line
1446 -- End of comments
1447 PROCEDURE create_link_assets (p_api_version IN NUMBER,
1448 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1449 x_return_status OUT NOCOPY VARCHAR2,
1450 x_msg_count OUT NOCOPY NUMBER,
1451 x_msg_data OUT NOCOPY VARCHAR2,
1452 p_cle_id IN NUMBER,
1453 p_chr_id IN NUMBER,
1454 p_capitalize_yn IN VARCHAR2,
1455 p_qte_fee_srv_id IN NUMBER,
1456 --p_derive_assoc_amt IN VARCHAR2, -- Commented by rravikir for Bug#6707125
1457 p_line_type IN VARCHAR2) IS
1458 -- Variables Declarations
1459 l_api_version CONSTANT NUMBER DEFAULT 1.0;
1460 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_LNK_AST';
1461 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1462 l_debug_enabled VARCHAR2(10);
1463 l_create_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
1464 l_update_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
1465 lx_line_item_tbl okl_contract_line_item_pvt.line_item_tbl_type;
1466 l_link_asset_tbl link_asset_tbl_type;
1467 k BINARY_INTEGER := 1; -- create table index
1468 m BINARY_INTEGER := 1; -- update table index
1469 i NUMBER := 0;
1470 l_line_amount NUMBER;
1471 l_asset_oec NUMBER;
1472 l_oec_total NUMBER := 0;
1473 l_assoc_amount NUMBER;
1474 l_assoc_total NUMBER := 0;
1475 l_currency_code VARCHAR2(15);
1476 l_compare_amt NUMBER;
1477 l_diff NUMBER;
1478 l_adj_rec BINARY_INTEGER;
1479 lx_return_status VARCHAR2(1);
1480 --Cursor declaration
1481 --Get the assets details linked with fee lines
1482 CURSOR c_fee_srv_asset_dtls(lp_fee_srv_id OKL_FEES_B.ID%TYPE) IS
1483 SELECT olrb.SOURCE_LINE_ID,
1484 olrb.amount
1485 FROM okl_line_relationships_b olrb
1486
1487 WHERE olrb.RELATED_LINE_ID = lp_fee_srv_id
1488 AND olrb.RELATED_LINE_TYPE = p_line_type
1489 AND olrb.SOURCE_LINE_TYPE= 'ASSET';
1490
1491 BEGIN
1492 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1493 -- check for logging on PROCEDURE level
1494 l_debug_enabled := okl_debug_pub.check_log_enabled;
1495 -- call START_ACTIVITY to create savepoint, check compatibility
1496 -- and initialize message list
1497 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
1498 ,p_pkg_name => G_PKG_NAME
1499 ,p_init_msg_list => p_init_msg_list
1500 ,l_api_version => l_api_version
1501 ,p_api_version => p_api_version
1502 ,p_api_type => g_api_type
1503 ,x_return_status => x_return_status);
1504 -- check if activity started successfully
1505 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1506 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1507 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1508 RAISE OKL_API.G_EXCEPTION_ERROR;
1509 END IF;
1510
1511 SELECT NVL(amount, 0)
1512 INTO l_line_amount
1513 FROM okl_k_lines
1514 WHERE id = p_cle_id;
1515
1516 SELECT currency_code
1517 INTO l_currency_code
1518 FROM okc_k_headers_b
1519 WHERE id = p_chr_id;
1520
1521 FOR l_fee_srv_asset_rec IN c_fee_srv_asset_dtls(p_qte_fee_srv_id) loop
1522 i:=i+1;
1523 l_link_asset_tbl(i).fin_asset_id := get_fin_line_id(l_fee_srv_asset_rec.SOURCE_LINE_ID);
1524 l_link_asset_tbl(i).amount:= l_fee_srv_asset_rec.amount;
1525
1526 END LOOP;
1527 IF (l_link_asset_tbl.COUNT > 0) THEN
1528 ------------------------------------------------------------------
1529 -- 1. Loop through to get OEC total of all assets being associated
1530 ------------------------------------------------------------------
1531 FOR i IN l_link_asset_tbl.FIRST .. l_link_asset_tbl.LAST LOOP
1532 IF l_link_asset_tbl.EXISTS(i) THEN
1533
1534 SELECT NVL(oec, 0)
1535 INTO l_asset_oec
1536 FROM okl_k_lines
1537 WHERE id = l_link_asset_tbl(i).fin_asset_id;
1538 l_oec_total := l_oec_total + l_asset_oec;
1539 END IF;
1540 END LOOP;
1541 ----------------------------------------------------------------------------
1542 -- 2. Loop through to determine associated amounts
1543 ----------------------------------------------------------------------------
1544 FOR i IN l_link_asset_tbl.FIRST .. l_link_asset_tbl.LAST LOOP
1545 IF l_link_asset_tbl.EXISTS(i) THEN
1546
1547 /*
1548 -- Start : Commented by rravikir for Bug#6707125
1549
1550 IF p_derive_assoc_amt = 'N' THEN
1551 l_assoc_amount := l_link_asset_tbl(i).amount;
1552 ELSIF l_oec_total = 0 THEN
1553 l_assoc_amount := l_line_amount / l_link_asset_tbl.COUNT;
1554 ELSE
1555
1556 -- LLA APIs ensure asset OEC and line amount are rounded
1557 SELECT NVL(oec, 0)
1558 INTO l_asset_oec
1559 FROM okl_k_lines
1560 WHERE id = l_link_asset_tbl(i).fin_asset_id;
1561 IF l_link_asset_tbl.COUNT = 1 THEN
1562 l_assoc_amount := l_line_amount;
1563 ELSE
1564 l_assoc_amount := l_line_amount * l_asset_oec / l_oec_total;
1565 END IF;
1566 END IF;
1567 l_assoc_amount := okl_accounting_util.round_amount(p_amount => l_assoc_amount,
1568 p_currency_code => l_currency_code);
1569
1570 -- End : Commented by rravikir for Bug#6707125
1571 */
1572 l_assoc_amount := l_link_asset_tbl(i).amount; -- Added by rravikir for Bug#6707125
1573 l_assoc_total := l_assoc_total + l_assoc_amount;
1574
1575 -- l_link_asset_tbl(i).amount := l_assoc_amount; -- Commented by rravikir for Bug#6707125
1576 END IF;
1577 END LOOP;
1578 ----------------------------------------------------------------------------------------------------
1579 -- 3. Adjust associated amount if associated total does not tally up with line amount after rounding
1580 ----------------------------------------------------------------------------------------------------
1581 IF l_assoc_total <> l_line_amount THEN
1582 l_diff := ABS(l_assoc_total - l_line_amount);
1583 FOR i IN l_link_asset_tbl.FIRST .. l_link_asset_tbl.LAST LOOP
1584 IF l_link_asset_tbl.EXISTS(i) THEN
1585 -- if the total split amount is less than line amount add the difference amount to the
1586 -- asset with less amount and if the total split amount is greater than the line amount
1587 -- than subtract the difference amount from the asset with highest amount
1588 IF i = l_link_asset_tbl.FIRST THEN
1589 l_adj_rec := i;
1590 l_compare_amt := l_link_asset_tbl(i).amount;
1591 ELSIF (l_assoc_total < l_line_amount) AND (l_link_asset_tbl(i).amount <= l_compare_amt) OR
1592 (l_assoc_total > l_line_amount) AND (l_link_asset_tbl(i).amount >= l_compare_amt) THEN
1593 l_adj_rec := i;
1594 l_compare_amt := l_link_asset_tbl(i).amount;
1595 END IF;
1596 END IF;
1597 END LOOP;
1598 IF l_assoc_total < l_line_amount THEN
1599 l_link_asset_tbl(l_adj_rec).amount := l_link_asset_tbl(l_adj_rec).amount + l_diff;
1600 ELSE
1601 l_link_asset_tbl(l_adj_rec).amount := l_link_asset_tbl(l_adj_rec).amount - l_diff;
1602 END IF;
1603 END IF;
1604 ------------------------------------------------------
1605 -- 4. Prepare arrays to pass to create and update APIs
1606 ------------------------------------------------------
1607 FOR i IN l_link_asset_tbl.FIRST .. l_link_asset_tbl.LAST LOOP
1608 IF l_link_asset_tbl.EXISTS(i) THEN
1609 l_assoc_amount := l_link_asset_tbl(i).amount;
1610 l_create_line_item_tbl(k).chr_id := p_chr_id;
1611 l_create_line_item_tbl(k).parent_cle_id := p_cle_id;
1612 l_create_line_item_tbl(k).item_id1 := l_link_asset_tbl(i).fin_asset_id;
1613 l_create_line_item_tbl(k).item_id2 := '#';
1614 l_create_line_item_tbl(k).item_object1_code := 'OKX_COVASST';
1615 l_create_line_item_tbl(k).serv_cov_prd_id := NULL;
1616
1617 SELECT txl.asset_number
1618 INTO l_create_line_item_tbl(k).name
1619 FROM okc_k_lines_b cle,
1620 okc_line_styles_b lse,
1621 okl_txl_assets_b txl
1622 WHERE cle.id = txl.kle_id
1623 AND cle.lse_id = lse.id
1624 AND lse.lty_code = 'FIXED_ASSET'
1625 AND cle.cle_id = l_link_asset_tbl(i).fin_asset_id;
1626 -- The linked amount is always passed in as 'capital_amount' even though capital amount
1627 -- is applicable only for CAPITALIZED fee types. The LLA API will ensure that
1628 -- the linked amount is stored in the appropriate column (AMOUNT vs CAPITAL_AMOUNT)
1629 l_create_line_item_tbl(k).capital_amount := l_assoc_amount;
1630 k := k + 1;
1631 END IF;
1632 END LOOP;
1633 IF l_create_line_item_tbl.COUNT > 0 THEN
1634 IF(l_debug_enabled='Y') THEN
1635 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_contract_line_item_pvt.create_contract_line_item'
1636 ,'begin debug call create_contract_line_item');
1637 END IF;
1638 okl_contract_line_item_pvt.create_contract_line_item( p_api_version => p_api_version,
1639 p_init_msg_list => p_init_msg_list,
1640 x_return_status => x_return_status,
1641 x_msg_count => x_msg_count,
1642 x_msg_data => x_msg_data,
1643 p_line_item_tbl => l_create_line_item_tbl,
1644 x_line_item_tbl => lx_line_item_tbl);
1645 IF(l_debug_enabled='Y') THEN
1646 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_contract_line_item_pvt.create_contract_line_item'
1647 ,'end debug call create_contract_line_item');
1648 END IF;
1649 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1650 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1651 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1652 RAISE OKL_API.G_EXCEPTION_ERROR;
1653 END IF;
1654 END IF;
1655 END IF;
1656 x_return_status := okc_api.G_RET_STS_SUCCESS;
1657 OKL_API.END_ACTIVITY(
1658 x_msg_count => x_msg_count
1659 ,x_msg_data => x_msg_data);
1660 EXCEPTION
1661 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1662 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1663 p_api_name => l_api_name,
1664 p_pkg_name => G_PKG_NAME,
1665 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1666 x_msg_count => x_msg_count,
1667 x_msg_data => x_msg_data,
1668 p_api_type => G_API_TYPE);
1669 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1670 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1671 p_api_name => l_api_name,
1672 p_pkg_name => G_PKG_NAME,
1673 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1674 x_msg_count => x_msg_count,
1675 x_msg_data => x_msg_data,
1676 p_api_type => G_API_TYPE);
1677 WHEN OTHERS THEN
1678 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1679 p_api_name => l_api_name,
1680 p_pkg_name => G_PKG_NAME,
1681 p_exc_name => 'OTHERS',
1682 x_msg_count => x_msg_count,
1683 x_msg_data => x_msg_data,
1684 p_api_type => G_API_TYPE);
1685 END create_link_assets;
1686 -----------------------------------------------------------------------------
1687 -- PROCEDURE create_expense_dtls
1688 -----------------------------------------------------------------------------
1689 -- Start of comments
1690 --
1691 -- Procedure Name : create_expense_dtls
1692 -- Description : This procedure creates fee/service expense details
1693 -- Business Rules :
1694 -- Parameters : p_periods, p_periodic_amount, p_exp_frequency
1695 -- : p_cle_id, p_chr_id
1696 -- Version : 1.0
1697 -- History : 20-Jun-2005 SKGAUTAM created
1698 --
1699 -- End of comments
1700 PROCEDURE create_expense_dtls(p_api_version IN NUMBER,
1701 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1702 x_return_status OUT NOCOPY VARCHAR2,
1703 x_msg_count OUT NOCOPY NUMBER,
1704 x_msg_data OUT NOCOPY VARCHAR2,
1705 p_cle_id IN NUMBER,
1706 p_chr_id IN NUMBER,
1707 p_periods IN NUMBER,
1708 p_periodic_amount IN NUMBER,
1709 p_exp_frequency IN VARCHAR2) IS
1710 -- Variables Declarations
1711 l_api_version CONSTANT NUMBER DEFAULT 1.0;
1712 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_EXT_DTL';
1713 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1714 l_debug_enabled VARCHAR2(10);
1715 lx_return_status VARCHAR2(1);
1716 lx_rulv_rec okc_rule_pub.rulv_rec_type;
1717 l_lafreq_rec okc_rule_pub.rulv_rec_type;
1718 l_lafexp_rec okc_rule_pub.rulv_rec_type;
1719 l_rgp_id NUMBER;
1720 -- find the LAFEXP rule group id
1721 CURSOR find_fexprg_csr IS
1722 SELECT id
1723 FROM okc_rule_groups_b
1724 WHERE rgd_code = 'LAFEXP' AND cle_id = p_cle_id;
1725 -- find the rule information for LAFEXP
1726 CURSOR find_lafexp_dtls_csr(p_rgp_id NUMBER) IS
1727 SELECT id, rule_information1 periods, rule_information2 periodic_amount
1728 FROM okc_rules_b
1729 WHERE rgp_id = p_rgp_id AND rule_information_category = 'LAFEXP';
1730 -- find the rule information for LAFREQ
1731 CURSOR find_lafreq_dtls_csr(p_rgp_id NUMBER) IS
1732 SELECT id, object1_id1 frequency
1733 FROM okc_rules_b
1734 WHERE rgp_id = p_rgp_id AND rule_information_category = 'LAFREQ';
1735 BEGIN
1736 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1737 -- check for logging on PROCEDURE level
1738 l_debug_enabled := okl_debug_pub.check_log_enabled;
1739 -- call START_ACTIVITY to create savepoint, check compatibility
1740 -- and initialize message list
1741 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
1742 ,p_pkg_name => G_PKG_NAME
1743 ,p_init_msg_list => p_init_msg_list
1744 ,l_api_version => l_api_version
1745 ,p_api_version => p_api_version
1746 ,p_api_type => g_api_type
1747 ,x_return_status => x_return_status);
1748 -- check if activity started successfully
1749 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1750 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1751 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1752 RAISE OKL_API.G_EXCEPTION_ERROR;
1753 END IF;
1754 FOR l_lafexprg_csr_rec IN find_fexprg_csr
1755 LOOP
1756 l_rgp_id := l_lafexprg_csr_rec.id;
1757 END LOOP;
1758 IF(l_rgp_id IS NULL) THEN
1759 -- create rule group for service expenses
1760 IF(l_debug_enabled='Y') THEN
1761 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_rule_group'
1762 ,'begin debug call create_rule_group');
1763 END IF;
1764 create_rule_group(p_api_version => p_api_version,
1765 p_init_msg_list => p_init_msg_list,
1766 x_return_status => x_return_status,
1767 x_msg_count => x_msg_count,
1768 x_msg_data => x_msg_data,
1769 p_cle_id => p_cle_id,
1770 p_chr_id => p_chr_id,
1771 p_rgd_code => 'LAFEXP',
1772 x_rgp_id => l_rgp_id);
1773 IF(l_debug_enabled='Y') THEN
1774 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_rule_group'
1775 ,'end debug call create_rule_group');
1776 END IF;
1777 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1778 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1779 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1780 RAISE OKL_API.G_EXCEPTION_ERROR;
1781 END IF;
1782 END IF; -- end of creating rule group
1783 -- create rule for frequency
1784 -- populate defaults and mandatory fields
1785 IF(l_debug_enabled='Y') THEN
1786 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1787 ,'begin debug call populate_rule_record');
1788 END IF;
1789 populate_rule_record(p_chr_id => p_chr_id,
1790 p_rgp_id => l_rgp_id,
1791 p_rule_name => 'LAFREQ',
1792 x_rulv_rec => l_lafreq_rec);
1793 IF(l_debug_enabled='Y') THEN
1794 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1795 ,'end debug call populate_rule_record');
1796 END IF;
1797 l_lafreq_rec.object1_id1 := p_exp_frequency;
1798 l_lafreq_rec.object1_id2 := '#';
1799 l_lafreq_rec.jtot_object1_code := 'OKL_TUOM';
1800 -- create the rule
1801 IF(l_lafreq_rec.id IS NULL OR l_lafreq_rec.id = OKL_API.G_MISS_NUM) THEN
1802 IF(l_debug_enabled='Y') THEN
1803 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsqlokc_rule_pub.create_rule'
1804 ,'begin debug call create_rule');
1805 END IF;
1806 okc_rule_pub.create_rule(p_api_version => p_api_version,
1807 p_init_msg_list => p_init_msg_list,
1808 x_return_status => x_return_status,
1809 x_msg_count => x_msg_count,
1810 x_msg_data => x_msg_data,
1811 p_rulv_rec => l_lafreq_rec,
1812 x_rulv_rec => lx_rulv_rec);
1813 IF(l_debug_enabled='Y') THEN
1814 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsqlokc_rule_pub.create_rule'
1815 ,'end debug call create_rule');
1816 END IF;
1817 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1818 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1819 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1820 RAISE OKL_API.G_EXCEPTION_ERROR;
1821 END IF;
1822 END IF; -- end of create
1823 -- populate defaults and mandatory fields
1824 IF(l_debug_enabled='Y') THEN
1825 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1826 ,'begin debug call creatpopulate_rule_record');
1827 END IF;
1828 populate_rule_record(p_chr_id => p_chr_id,
1829 p_rgp_id => l_rgp_id,
1830 p_rule_name => 'LAFEXP',
1831 x_rulv_rec => l_lafexp_rec);
1832 IF(l_debug_enabled='Y') THEN
1833 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.populate_rule_record'
1834 ,'end debug call creatpopulate_rule_record');
1835 END IF;
1836 l_lafexp_rec.rule_information1 := p_periods;
1837 l_lafexp_rec.rule_information2 := p_periodic_amount;
1838 -- create the rule
1839 IF(l_lafexp_rec.id IS NULL OR l_lafexp_rec.id = OKL_API.G_MISS_NUM) THEN
1840 IF(l_debug_enabled='Y') THEN
1841 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsqlokc_rule_pub.create_rule'
1842 ,'begin debug call create_rule');
1843 END IF;
1844 okc_rule_pub.create_rule(p_api_version => p_api_version,
1845 p_init_msg_list => p_init_msg_list,
1846 x_return_status => x_return_status,
1847 x_msg_count => x_msg_count,
1848 x_msg_data => x_msg_data,
1849 p_rulv_rec => l_lafexp_rec,
1850 x_rulv_rec => lx_rulv_rec);
1851 IF(l_debug_enabled='Y') THEN
1852 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsqlokc_rule_pub.create_rule'
1853 ,'end debug call create_rule');
1854 END IF;
1855 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1858 RAISE OKL_API.G_EXCEPTION_ERROR;
1859 END IF;
1860 END IF; -- end of create
1861 x_return_status := okc_api.G_RET_STS_SUCCESS;
1862 OKL_API.END_ACTIVITY(
1863 x_msg_count => x_msg_count
1864 ,x_msg_data => x_msg_data);
1865 EXCEPTION
1866 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1867 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1868 p_api_name => l_api_name,
1869 p_pkg_name => G_PKG_NAME,
1870 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1871 x_msg_count => x_msg_count,
1872 x_msg_data => x_msg_data,
1873 p_api_type => G_API_TYPE);
1874 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1875 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1876 p_api_name => l_api_name,
1877 p_pkg_name => G_PKG_NAME,
1878 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1879 x_msg_count => x_msg_count,
1880 x_msg_data => x_msg_data,
1881 p_api_type => G_API_TYPE);
1882 WHEN OTHERS THEN
1883 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1884 p_api_name => l_api_name,
1885 p_pkg_name => G_PKG_NAME,
1886 p_exc_name => 'OTHERS',
1887 x_msg_count => x_msg_count,
1888 x_msg_data => x_msg_data,
1889 p_api_type => G_API_TYPE);
1890 END create_expense_dtls;
1891 -----------------------------------------------------------------------------
1892 -- PROCEDURE create_insurance_lines
1893 -----------------------------------------------------------------------------
1894 -- Start of comments
1895 --
1896 -- Procedure Name : create_insurance_lines
1897 -- Description : This procedure creates third part insurance policy
1898 -- : associated with lease application
1899 -- Business Rules :
1900 -- Parameters : p_chr_id
1901 -- Version : 1.0
1902 -- History : 20-Jun-2005 SKGAUTAM created
1903 --
1904 -- End of comments
1905 PROCEDURE create_insurance_lines (p_api_version IN NUMBER,
1906 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1907 x_return_status OUT NOCOPY VARCHAR2,
1908 x_msg_count OUT NOCOPY NUMBER,
1909 x_msg_data OUT NOCOPY VARCHAR2,
1910 p_chr_id IN NUMBER) IS
1911 -- Variables Declarations
1912 l_api_version CONSTANT NUMBER DEFAULT 1.0;
1913 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_INS_LNS';
1914 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1915 l_debug_enabled VARCHAR2(10);
1916
1917 x_ipyv_rec ipyv_rec_type;
1918 BEGIN
1919 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1920 -- check for logging on PROCEDURE level
1921 l_debug_enabled := okl_debug_pub.check_log_enabled;
1922 -- call START_ACTIVITY to create savepoint, check compatibility
1923 -- and initialize message list
1924 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
1925 ,p_pkg_name => G_PKG_NAME
1926 ,p_init_msg_list => p_init_msg_list
1927 ,l_api_version => l_api_version
1928 ,p_api_version => p_api_version
1929 ,p_api_type => g_api_type
1930 ,x_return_status => x_return_status);
1931 -- check if activity started successfully
1932 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1933 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1934 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1935 RAISE OKL_API.G_EXCEPTION_ERROR;
1936 END IF;
1937 -- set the org id and organization id
1938 OKL_CONTEXT.set_okc_org_context(p_chr_id => p_chr_id);
1939 IF(l_debug_enabled='Y') THEN
1940 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_INS_QUOTE_PVT.lseapp_thrdprty_to_ctrct'
1941 ,'begin debug OKLRINQB.pls call lseapp_thrdprty_to_ctrct');
1942 END IF;
1943 OKL_INS_QUOTE_PVT.lseapp_thrdprty_to_ctrct(
1944 p_api_version => p_api_version,
1945 p_init_msg_list => p_init_msg_list,
1946 x_return_status => x_return_status,
1947 x_msg_count => x_msg_count,
1948 x_msg_data => x_msg_data,
1949 p_lakhr_id => p_chr_id,
1950 x_ipyv_rec => x_ipyv_rec);
1951 IF(l_debug_enabled='Y') THEN
1952 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_INS_QUOTE_PVT.lseapp_thrdprty_to_ctrct'
1953 ,'end debug OKLRINQB.pls call lseapp_thrdprty_to_ctrct');
1954 END IF;
1955 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1956 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1957 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1958 RAISE OKL_API.G_EXCEPTION_ERROR;
1959 END IF;
1960 x_return_status := okc_api.G_RET_STS_SUCCESS;
1961 OKL_API.END_ACTIVITY(
1962 x_msg_count => x_msg_count
1963 ,x_msg_data => x_msg_data);
1964 EXCEPTION
1965 WHEN OKL_API.G_EXCEPTION_ERROR THEN
1966 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1967 p_api_name => l_api_name,
1968 p_pkg_name => G_PKG_NAME,
1969 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
1970 x_msg_count => x_msg_count,
1971 x_msg_data => x_msg_data,
1972 p_api_type => G_API_TYPE);
1973 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1974 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1975 p_api_name => l_api_name,
1976 p_pkg_name => G_PKG_NAME,
1977 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1978 x_msg_count => x_msg_count,
1979 x_msg_data => x_msg_data,
1980 p_api_type => G_API_TYPE);
1981 WHEN OTHERS THEN
1982 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1983 p_api_name => l_api_name,
1984 p_pkg_name => G_PKG_NAME,
1985 p_exc_name => 'OTHERS',
1986 x_msg_count => x_msg_count,
1987 x_msg_data => x_msg_data,
1988 p_api_type => G_API_TYPE);
1989 END create_insurance_lines;
1990
1991 -----------------------------------------------------------------------------
1992 -- PROCEDURE create_service_lines
1993 -----------------------------------------------------------------------------
1994 -- Start of comments
1995 --
1996 -- Procedure Name : create_service_lines
1997 -- Description : This procedure creates service header and other lines
1998 -- : associated with it
1999 -- Business Rules :
2000 -- Parameters : p_quote_fee_rec, p_payment_levels_tbl, p_asset_id_tbl
2001 -- Version : 1.0
2002 -- History : 20-Jun-2005 SKGAUTAM created
2003 --
2004 -- End of comments
2005 PROCEDURE create_service_lines (p_api_version IN NUMBER,
2006 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2007 x_return_status OUT NOCOPY VARCHAR2,
2008 x_msg_count OUT NOCOPY NUMBER,
2009 x_msg_data OUT NOCOPY VARCHAR2,
2010 p_quote_id IN NUMBER,
2011 p_chr_id IN NUMBER) IS
2012 -- Variables Declarations
2013 l_api_version CONSTANT NUMBER DEFAULT 1.0;
2014 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'SRT_SER_LNS';
2015 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2016 l_debug_enabled VARCHAR2(10);
2017 l_klev_rec okl_kle_pvt.klev_rec_type;
2018 lx_klev_rec okl_kle_pvt.klev_rec_type;
2019 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
2020 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
2021 l_cimv_rec okl_okc_migration_pvt.cimv_rec_type;
2022 lx_cimv_rec okl_okc_migration_pvt.cimv_rec_type;
2023 l_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
2024 lx_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
2025 l_quote_service_rec quote_service_rec_type;
2026 line_number NUMBER := 0;
2027 lx_chr_id NUMBER;
2028 lx_cle_id NUMBER;
2029 --l_derive_assoc_amt VARCHAR2(1); -- Commented by rravikir for Bug#6707125
2030 lx_return_status VARCHAR2(1);
2031 l_periods NUMBER;
2032 l_periodic_amount NUMBER;
2033 l_exp_frequency VARCHAR2(1);
2034 l_cle_id NUMBER;
2035 l_pymnt_counter NUMBER := 0;
2036 l_exp_counter NUMBER := 0;
2037 l_payment_levels_tbl payment_levels_tbl_type;
2038 l_expense_levels_tbl payment_levels_tbl_type;
2039
2040 CURSOR c_get_service_dtls(p_qte_id okl_lease_quotes_b.ID%TYPE) IS
2041 SELECT ID,
2042 INV_ITEM_ID,
2043 EFFECTIVE_FROM,
2044 SUPPLIER_ID
2045 FROM okl_services_b osb
2046 WHERE osb.PARENT_OBJECT_CODE = 'LEASEQUOTE'
2047 AND osb.PARENT_OBJECT_ID = p_qte_id;
2048
2049 --Get service payment details
2050 CURSOR c_get_service_payment_dtls(p_service_id okl_fees_b.ID%TYPE) IS
2051 SELECT ocf.STY_ID payment_type_id,
2052 ocf.DUE_ARREARS_YN Arrears_YN,
2053 cfl.FQY_CODE Frequency_Code,
2054 cfl.START_DATE,
2055 cfl.STUB_DAYS,
2056 cfl.STUB_AMOUNT,
2057 cfl.NUMBER_OF_PERIODS,
2058 cfl.AMOUNT
2059 FROM OKL_CASH_FLOW_OBJECTS cfo,
2060 OKL_CASH_FLOWS ocf,
2061 OKL_CASH_FLOW_LEVELS cfl
2062 WHERE cfl.caf_id = ocf.ID
2063 AND ocf.CFO_ID = cfo.ID
2064 AND cfo.SOURCE_TABLE = 'OKL_SERVICES_B'
2065 AND cfo.SOURCE_ID = p_service_id
2066 AND ocf.cft_code = 'PAYMENT_SCHEDULE';
2067 --Get service expense details
2068 CURSOR c_get_service_expense_dtls(p_service_id okl_fees_b.ID%TYPE) IS
2069 SELECT ocf.STY_ID payment_type_id,
2070 ocf.DUE_ARREARS_YN Arrears_YN,
2071 cfl.FQY_CODE Frequency_Code,
2072 cfl.START_DATE,
2073 cfl.STUB_DAYS,
2074 cfl.STUB_AMOUNT,
2075 cfl.NUMBER_OF_PERIODS,
2076 cfl.AMOUNT
2077 FROM OKL_CASH_FLOW_OBJECTS cfo,
2078 OKL_CASH_FLOWS ocf,
2079 OKL_CASH_FLOW_LEVELS cfl
2080 WHERE cfl.caf_id = ocf.ID
2081 AND ocf.CFO_ID = cfo.ID
2082 AND cfo.SOURCE_TABLE = 'OKL_SERVICES_B'
2083 AND cfo.SOURCE_ID = p_service_id
2084 AND ocf.cft_code = 'OUTFLOW_SCHEDULE';
2085 BEGIN
2086 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2087 -- check for logging on PROCEDURE level
2088 l_debug_enabled := okl_debug_pub.check_log_enabled;
2089 -- call START_ACTIVITY to create savepoint, check compatibility
2090 -- and initialize message list
2091 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
2092 ,p_pkg_name => G_PKG_NAME
2093 ,p_init_msg_list => p_init_msg_list
2094 ,l_api_version => l_api_version
2095 ,p_api_version => p_api_version
2096 ,p_api_type => g_api_type
2097 ,x_return_status => x_return_status);
2098 -- check if activity started successfully
2099 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2100 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2101 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2102 RAISE OKL_API.G_EXCEPTION_ERROR;
2103 END IF;
2104 -- set the org id and organization id
2105 OKL_CONTEXT.set_okc_org_context(p_chr_id => p_chr_id);
2106 FOR l_quote_service_rec IN c_get_service_dtls(p_quote_id)LOOP
2107 l_pymnt_counter := 0;
2108 l_payment_levels_tbl.DELETE;
2109 FOR l_service_payment_rec IN c_get_service_payment_dtls(l_quote_service_rec.ID) LOOP
2110 l_payment_levels_tbl(l_pymnt_counter).START_DATE := l_service_payment_rec.START_DATE;
2111 l_payment_levels_tbl(l_pymnt_counter).PERIODS := l_service_payment_rec.NUMBER_OF_PERIODS;
2112 l_payment_levels_tbl(l_pymnt_counter).AMOUNT := l_service_payment_rec.AMOUNT;
2113 l_payment_levels_tbl(l_pymnt_counter).STUB_DAYS := l_service_payment_rec.STUB_DAYS;
2114 l_payment_levels_tbl(l_pymnt_counter).STUB_AMOUNT := l_service_payment_rec.STUB_AMOUNT;
2115 l_payment_levels_tbl(l_pymnt_counter).PAYMENT_TYPE_ID := l_service_payment_rec.PAYMENT_TYPE_ID;
2116 l_payment_levels_tbl(l_pymnt_counter).FREQUENCY_CODE := l_service_payment_rec.FREQUENCY_CODE;
2117 l_payment_levels_tbl(l_pymnt_counter).ARREARS_YN := l_service_payment_rec.ARREARS_YN;
2118 l_pymnt_counter := l_pymnt_counter + 1;
2119 END LOOP;
2120 l_exp_counter := 0;
2121 l_expense_levels_tbl.DELETE;
2122 FOR l_service_expense_rec IN c_get_service_expense_dtls(l_quote_service_rec.ID) LOOP
2123 l_expense_levels_tbl(l_exp_counter).START_DATE := l_service_expense_rec.START_DATE;
2124 l_expense_levels_tbl(l_exp_counter).PERIODS := l_service_expense_rec.NUMBER_OF_PERIODS;
2125 l_expense_levels_tbl(l_exp_counter).AMOUNT := l_service_expense_rec.AMOUNT;
2126 l_expense_levels_tbl(l_exp_counter).STUB_DAYS := l_service_expense_rec.STUB_DAYS;
2127 l_expense_levels_tbl(l_exp_counter).STUB_AMOUNT := l_service_expense_rec.STUB_AMOUNT;
2128 l_expense_levels_tbl(l_exp_counter).PAYMENT_TYPE_ID := l_service_expense_rec.PAYMENT_TYPE_ID;
2129 l_expense_levels_tbl(l_exp_counter).FREQUENCY_CODE := l_service_expense_rec.FREQUENCY_CODE;
2130 l_expense_levels_tbl(l_exp_counter).ARREARS_YN := l_service_expense_rec.ARREARS_YN;
2131 l_exp_counter := l_exp_counter + 1;
2132 END LOOP;
2133 -- assign the values to the respective rec structures
2134 l_clev_rec.dnz_chr_id := p_chr_id;
2135 l_clev_rec.start_date := l_quote_service_rec.effective_from;
2136 l_klev_rec.amount := (l_expense_levels_tbl(0).periods)*(l_expense_levels_tbl(0).amount);
2137 l_cimv_rec.object1_id1 := l_quote_service_rec.INV_ITEM_ID;
2138 l_cplv_rec.object1_id1 := l_quote_service_rec.supplier_id;
2139 -- call process api to create_service_line
2140 IF(l_debug_enabled='Y') THEN
2141 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_SERVICE_LINE_PROCESS_PVT.create_service_line'
2142 ,'begin debug call create_service_line');
2143 END IF;
2144
2145 OKL_SERVICE_LINE_PROCESS_PVT.create_service_line( p_api_version => p_api_version,
2146 p_init_msg_list => p_init_msg_list,
2147 x_return_status => x_return_status,
2148 x_msg_count => x_msg_count,
2149 x_msg_data => x_msg_data,
2150 p_clev_rec => l_clev_rec,
2151 p_klev_rec => l_klev_rec,
2152 p_cimv_rec => l_cimv_rec ,
2153 p_cplv_rec => l_cplv_rec,
2154 x_clev_rec => lx_clev_rec,
2155 x_klev_rec => lx_klev_rec,
2156 x_cimv_rec => lx_cimv_rec,
2157 x_cplv_rec => lx_cplv_rec);
2158 IF(l_debug_enabled='Y') THEN
2159 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_SERVICE_LINE_PROCESS_PVT.create_service_line'
2160 ,'end debug call create_service_line');
2161 END IF;
2162 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2163 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2164 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR)THEN
2165 RAISE OKL_API.G_EXCEPTION_ERROR;
2166 END IF;
2167 l_cle_id := lx_clev_rec.id;
2168 IF(l_debug_enabled='Y') THEN
2169 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_link_assets'
2170 ,'begin debug call create_link_assets');
2171 END IF;
2172
2173 create_link_assets ( p_api_version => p_api_version,
2174 p_init_msg_list => p_init_msg_list,
2175 x_return_status => x_return_status,
2176 x_msg_count => x_msg_count,
2177 x_msg_data => x_msg_data,
2178 p_cle_id => l_cle_id,
2179 p_chr_id => p_chr_id,
2180 p_capitalize_yn => 'N',
2181 p_qte_fee_srv_id => l_quote_service_rec.ID,
2182 --p_derive_assoc_amt => l_derive_assoc_amt, -- Commented by rravikir for Bug#6707125
2183 p_line_type => 'SERVICE');
2184 IF(l_debug_enabled='Y') THEN
2185 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_link_assets'
2186 ,'end debug call create_link_assets');
2187 END IF;
2188 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2189 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2190 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR)THEN
2191 RAISE OKL_API.G_EXCEPTION_ERROR;
2192 END IF;
2193 -- method for creating service expense details
2194 IF(l_debug_enabled='Y') THEN
2195 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_expense_dtls'
2196 ,'begin debug call create_expense_dtls');
2197 END IF;
2198 create_expense_dtls(p_api_version => p_api_version,
2199 p_init_msg_list => p_init_msg_list,
2200 x_return_status => x_return_status,
2201 x_msg_count => x_msg_count,
2202 x_msg_data => x_msg_data,
2203 p_cle_id => l_cle_id,
2204 p_chr_id => p_chr_id,
2205 p_periods => l_expense_levels_tbl(0).periods,
2206 p_periodic_amount => l_expense_levels_tbl(0).amount,
2207 p_exp_frequency => l_expense_levels_tbl(0).frequency_code);
2208 IF(l_debug_enabled='Y') THEN
2209 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_expense_dtls'
2210 ,'end debug call create_expense_dtls');
2211 END IF;
2212 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2213 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2214 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR)THEN
2215 RAISE OKL_API.G_EXCEPTION_ERROR;
2216 END IF;
2217 -- create EPT payment
2218 IF l_payment_levels_tbl.COUNT > 0 THEN
2219 IF(l_debug_enabled='Y') THEN
2220 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
2221 ,'begin debug call create_payment_plans');
2222 END IF;
2223 create_payment_plans(p_api_version => p_api_version,
2224 p_init_msg_list => p_init_msg_list,
2225 x_return_status => x_return_status,
2226 x_msg_count => x_msg_count,
2227 x_msg_data => x_msg_data,
2228 p_transaction_control => OKL_API.G_FALSE,
2229 p_cle_id => l_cle_id,
2230 p_chr_id => p_chr_id,
2231 p_payment_type_id => l_payment_levels_tbl(0).payment_type_id,
2232 p_payment_frequency => l_payment_levels_tbl(0).frequency_code,
2233 p_payment_arrears => l_payment_levels_tbl(0).arrears_yn,
2234 p_payment_structure => NULL,
2235 p_rate_type => NULL,
2236 p_payment_levels_tbl => l_payment_levels_tbl);
2237 IF(l_debug_enabled='Y') THEN
2238 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
2239 ,'end debug call create_payment_plans');
2240 END IF;
2241 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2242 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2243 ELSIF x_return_status = G_RET_STS_ERROR THEN
2244 RAISE OKL_API.G_EXCEPTION_ERROR;
2245 END IF;
2246 END IF;
2247 -- create the party as vendor for the supplier present on the service
2248 IF l_quote_service_rec.supplier_id IS NOT NULL THEN
2249 IF(l_debug_enabled='Y') THEN
2250 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2251 ,'begin debug call create_vendor');
2252 END IF;
2253
2254 create_vendor( p_api_version => p_api_version,
2255 p_init_msg_list => p_init_msg_list,
2256 x_return_status => x_return_status,
2257 x_msg_count => x_msg_count,
2258 x_msg_data => x_msg_data,
2259 p_chr_id => p_chr_id,
2260 p_cle_id => NULL,
2261 p_vendor_id => l_quote_service_rec.supplier_id);
2262
2263 IF(l_debug_enabled='Y') THEN
2264 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2265 ,'end debug call create_vendor');
2266 END IF;
2267 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2268 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2269 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2270 RAISE OKL_API.G_EXCEPTION_ERROR;
2271 END IF;
2272
2273 IF(l_debug_enabled='Y') THEN
2274 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2275 ,'begin debug call create_vendor');
2276 END IF;
2277 create_vendor( p_api_version => p_api_version,
2278 p_init_msg_list => p_init_msg_list,
2279 x_return_status => x_return_status,
2280 x_msg_count => x_msg_count,
2281 x_msg_data => x_msg_data,
2282 p_chr_id => p_chr_id,
2283 p_cle_id => lx_clev_rec.id,
2284 p_vendor_id => l_quote_service_rec.supplier_id);
2285
2286 IF(l_debug_enabled='Y') THEN
2287 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2288 ,'end debug call create_vendor');
2289 END IF;
2290 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2291 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2292 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2293 RAISE OKL_API.G_EXCEPTION_ERROR;
2294 END IF;
2295 END IF;
2296
2297 END LOOP;
2298 x_return_status := okc_api.G_RET_STS_SUCCESS;
2299 OKL_API.END_ACTIVITY(
2300 x_msg_count => x_msg_count
2301 ,x_msg_data => x_msg_data);
2302 EXCEPTION
2303 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2304 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2305 p_api_name => l_api_name,
2306 p_pkg_name => G_PKG_NAME,
2307 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2308 x_msg_count => x_msg_count,
2309 x_msg_data => x_msg_data,
2310 p_api_type => G_API_TYPE);
2311 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2312 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2313 p_api_name => l_api_name,
2314 p_pkg_name => G_PKG_NAME,
2315 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2316 x_msg_count => x_msg_count,
2317 x_msg_data => x_msg_data,
2318 p_api_type => G_API_TYPE);
2319 WHEN OTHERS THEN
2320 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2321 p_api_name => l_api_name,
2322 p_pkg_name => G_PKG_NAME,
2323 p_exc_name => 'OTHERS',
2324 x_msg_count => x_msg_count,
2325 x_msg_data => x_msg_data,
2326 p_api_type => G_API_TYPE);
2327 END create_service_lines;
2328 -------------------------------------------------------------------------------
2329 -- PROCEDURE create_fee_lines
2330 -------------------------------------------------------------------------------
2331 -- Start of comments
2332 --
2333 -- Procedure Name : create_fee_lines
2334 -- Description : This procedure is a wrapper that creates contract fee lines from lease application/quote header
2335 --
2336 -- Business Rules : this procedure is used to create a contract fee lines from lease application/quote header
2337 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
2338 -- : Lease Application Header fee line details
2339 -- Parameters :
2340 -- Version : 1.0
2341 -- History : 20-Jun-2005 SKGAUTAM created
2342 -- End of comments
2343 PROCEDURE create_fee_lines(p_api_version IN NUMBER,
2344 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2345 x_return_status OUT NOCOPY VARCHAR2,
2346 x_msg_count OUT NOCOPY NUMBER,
2347 x_msg_data OUT NOCOPY VARCHAR2,
2348 p_quote_id IN NUMBER,
2349 p_chr_id IN NUMBER) IS
2350 -- Variables Declarations
2351 l_api_version CONSTANT NUMBER DEFAULT 1.0;
2352 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_FEE_LNS';
2353 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2354 l_debug_enabled VARCHAR2(10);
2355 l_fee_types_rec okl_maintain_fee_pvt.fee_types_rec_type;
2356 lx_fee_types_rec okl_maintain_fee_pvt.fee_types_rec_type;
2357 l_k_effective_from DATE;
2358 l_k_effective_to DATE;
2359 l_cle_id NUMBER;
2360 --l_derive_assoc_amt VARCHAR2(1); -- Commented by rravikir for Bug#6707125
2361 l_capitalize_yn VARCHAR2(1) := 'N';
2362 lx_return_status VARCHAR2(1);
2363 l_periods NUMBER;
2364 l_periodic_amount NUMBER;
2365 l_exp_frequency VARCHAR2(1);
2366 l_pymnt_counter NUMBER := 0;
2367 l_payment_levels_tbl payment_levels_tbl_type;
2368
2369 CURSOR c_get_fee_dtls(p_qte_id okl_lease_quotes_b.ID%TYPE) IS
2370 SELECT ID,
2371 STREAM_TYPE_ID,
2372 FEE_TYPE ,
2373 RATE_CARD_ID,
2374 RATE_TEMPLATE_ID,
2375 EFFECTIVE_FROM,
2376 EFFECTIVE_TO,
2377 SUPPLIER_ID,
2378 ROLLOVER_QUOTE_ID,
2379 INITIAL_DIRECT_COST,
2380 FEE_AMOUNT AMOUNT,
2381 FEE_PURPOSE_CODE
2382 FROM okl_fees_b ofb
2383 WHERE ofb.PARENT_OBJECT_CODE = 'LEASEQUOTE'
2384 AND ofb.PARENT_OBJECT_ID = p_qte_id;
2385
2386 --Get fee payment details
2387 CURSOR c_get_fee_payment_dtls(p_fee_id okl_fees_b.ID%TYPE) IS
2388 SELECT ocf.STY_ID payment_type_id,
2389 ocf.DUE_ARREARS_YN Arrears_YN,
2390 cfl.FQY_CODE Frequency_Code,
2391 cfl.START_DATE,
2392 cfl.STUB_DAYS,
2393 cfl.STUB_AMOUNT,
2394 cfl.NUMBER_OF_PERIODS,
2395 cfl.AMOUNT
2396 FROM OKL_CASH_FLOW_OBJECTS cfo,
2397 OKL_CASH_FLOWS ocf,
2398 OKL_CASH_FLOW_LEVELS cfl
2399 WHERE cfl.caf_id = ocf.ID
2400 AND ocf.CFO_ID = cfo.ID
2401 AND cfo.SOURCE_TABLE = 'OKL_FEES_B'
2402 AND ocf.CFT_CODE ='PAYMENT_SCHEDULE'
2403 AND cfo.SOURCE_ID = p_fee_id;
2404
2405 --Get fee expense details
2406 CURSOR c_get_fee_expense_dtls(p_fee_id okl_fees_b.ID%TYPE) IS
2407 SELECT ocf.STY_ID payment_type_id,
2408 ocf.DUE_ARREARS_YN Arrears_YN,
2409 cfl.FQY_CODE Frequency_Code,
2410 cfl.START_DATE,
2411 cfl.STUB_DAYS,
2412 cfl.STUB_AMOUNT,
2413 cfl.NUMBER_OF_PERIODS,
2414 cfl.AMOUNT
2415 FROM OKL_CASH_FLOW_OBJECTS cfo,
2416 OKL_CASH_FLOWS ocf,
2417 OKL_CASH_FLOW_LEVELS cfl
2418 WHERE cfl.caf_id = ocf.ID
2419 AND ocf.CFO_ID = cfo.ID
2420 AND cfo.SOURCE_TABLE = 'OKL_FEES_B'
2421 AND ocf.CFT_CODE ='OUTFLOW_SCHEDULE'
2422 AND cfo.SOURCE_ID = p_fee_id;
2423 BEGIN
2424 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2425 -- check for logging on PROCEDURE level
2426 l_debug_enabled := okl_debug_pub.check_log_enabled;
2427 -- call START_ACTIVITY to create savepoint, check compatibility
2428 -- and initialize message list
2429 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
2430 ,p_pkg_name => G_PKG_NAME
2431 ,p_init_msg_list => p_init_msg_list
2432 ,l_api_version => l_api_version
2433 ,p_api_version => p_api_version
2434 ,p_api_type => g_api_type
2435 ,x_return_status => x_return_status);
2436 -- check if activity started successfully
2437 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2438 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2439 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2440 RAISE OKL_API.G_EXCEPTION_ERROR;
2441 END IF;
2442 ------------------------------------
2443 -- Defaulting missing fee REC values
2444 ------------------------------------
2445 SELECT start_date,
2446 end_date
2447 INTO l_k_effective_from,
2448 l_k_effective_to
2449 FROM okc_k_headers_b
2450 WHERE id = p_chr_id;
2451 FOR l_quote_fee_rec IN c_get_fee_dtls(p_quote_id)LOOP
2452 -- placeholder recurring expense
2453 IF l_quote_fee_rec.fee_type IN ('ABSORBED' , 'FINANCED') THEN
2454 l_periods := 1;
2455 l_exp_frequency := 'M';
2456 l_periodic_amount := l_quote_fee_rec.amount;
2457 END IF;
2458 -- denormalized fee amount
2459 IF l_quote_fee_rec.fee_type IN ('EXPENSE' , 'MISCELLANEOUS') THEN
2460 FOR l_fee_expense_rec IN c_get_fee_expense_dtls(l_quote_fee_rec.ID) LOOP
2461 l_periods := l_fee_expense_rec.NUMBER_OF_PERIODS;
2462 l_periodic_amount := l_fee_expense_rec.AMOUNT;
2463 l_exp_frequency := l_fee_expense_rec.Frequency_Code;
2464 END LOOP;
2465 END IF;
2466
2467 OKL_CONTEXT.set_okc_org_context(p_chr_id => p_chr_id);
2468 ------------------------------------
2469 -- Defaulting missing fee REC values
2470 ------------------------------------
2471 l_fee_types_rec.line_id := NULL;
2472 l_fee_types_rec.dnz_chr_id := p_chr_id;
2473 l_fee_types_rec.fee_type := l_quote_fee_rec.fee_type;
2474 l_fee_types_rec.item_id := NULL;
2475 l_fee_types_rec.item_id1 := l_quote_fee_rec.STREAM_TYPE_ID;
2476 l_fee_types_rec.item_id2 := '#';
2477 l_fee_types_rec.party_id := NULL;
2478 l_fee_types_rec.party_name := NULL;
2479 l_fee_types_rec.party_id1 := l_quote_fee_rec.supplier_id;
2480 l_fee_types_rec.party_id2 := '#';
2481 l_fee_types_rec.effective_from := l_quote_fee_rec.EFFECTIVE_FROM;
2482 l_fee_types_rec.effective_to := l_k_effective_to;
2483 l_fee_types_rec.amount := l_quote_fee_rec.amount;
2484 l_fee_types_rec.initial_direct_cost := l_quote_fee_rec.INITIAL_DIRECT_COST;
2485 l_fee_types_rec.qte_id := l_quote_fee_rec.ROLLOVER_QUOTE_ID;
2486
2487 l_fee_types_rec.fee_purpose_code := l_quote_fee_rec.fee_purpose_code;
2488 --l_fee_types_rec.funding_date := l_quote_fee_rec.funding_date;
2489
2490 IF l_quote_fee_rec.fee_type IN ('MISCELLANEOUS', 'EXPENSE', 'CAPITALIZED', 'FINANCED') THEN
2491 -- create the party as vendor for the supplier present on the subsidy
2492 IF l_quote_fee_rec.supplier_id IS NOT NULL THEN
2493 IF(l_debug_enabled='Y') THEN
2494 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2495 ,'begin debug call create_vendor');
2496 END IF;
2497 create_vendor( p_api_version => p_api_version,
2498 p_init_msg_list => p_init_msg_list,
2499 x_return_status => x_return_status,
2500 x_msg_count => x_msg_count,
2501 x_msg_data => x_msg_data,
2502 p_chr_id => p_chr_id,
2503 p_cle_id => NULL,
2504 p_vendor_id => l_quote_fee_rec.supplier_id);
2505
2506 IF(l_debug_enabled='Y') THEN
2507 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2508 ,'end debug call create_vendor');
2509 END IF;
2510 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2511 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2512 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2513 RAISE OKL_API.G_EXCEPTION_ERROR;
2514 END IF;
2515 END IF;
2516 END IF;
2517 --Bug # 5129446 ssdeshpa start
2518 /*
2519 The lookup code for Security Deposit is not matching in lease applications/quote and contract.
2520 It is 'SECDEPOSIT' in Contracts.Lease applications/Quote uses 'SEC_DEPOSIT' as lookup code
2521 Same lookup code should be used while creating Security Deposit Fees on Contract
2522 **/
2523 IF l_fee_types_rec.fee_type = 'SEC_DEPOSIT' THEN
2524 l_fee_types_rec.fee_type := 'SECDEPOSIT';
2525 END IF;
2526 --Bug # 5129446 ssdeshpa end;
2527 IF(l_debug_enabled='Y') THEN
2528 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_maintain_fee_pvt.create_fee_type'
2529 ,'begin debug call create_fee_type');
2530 END IF;
2531 okl_maintain_fee_pvt.create_fee_type( p_api_version => p_api_version,
2532 p_init_msg_list => p_init_msg_list,
2533 x_return_status => x_return_status,
2534 x_msg_count => x_msg_count,
2535 x_msg_data => x_msg_data,
2536 p_fee_types_rec => l_fee_types_rec,
2537 x_fee_types_rec => lx_fee_types_rec);
2538 IF(l_debug_enabled='Y') THEN
2539 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_maintain_fee_pvt.create_fee_type'
2540 ,'end debug call create_fee_type');
2541 END IF;
2542 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2543 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2544 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2545 RAISE OKL_API.G_EXCEPTION_ERROR;
2546 END IF;
2547 l_cle_id := lx_fee_types_rec.line_id;
2548 IF l_quote_fee_rec.fee_type IN ('MISCELLANEOUS', 'EXPENSE', 'CAPITALIZED', 'FINANCED','INCOME','ROLLOVER') THEN
2549 IF l_quote_fee_rec.fee_type = 'CAPITALIZED' THEN
2550 l_capitalize_yn := 'Y';
2551 END IF;
2552 IF(l_debug_enabled='Y') THEN
2553 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_link_assets'
2554 ,'begin debug call create_link_assets');
2555 END IF;
2556 create_link_assets (p_api_version => p_api_version,
2557 p_init_msg_list => p_init_msg_list,
2558 x_return_status => x_return_status,
2559 x_msg_count => x_msg_count,
2560 x_msg_data => x_msg_data,
2561 p_cle_id => l_cle_id,
2562 p_chr_id => p_chr_id,
2563 p_capitalize_yn => l_capitalize_yn,
2564 p_qte_fee_srv_id => l_quote_fee_rec.ID,
2565 --p_derive_assoc_amt => l_derive_assoc_amt, -- Commented by rravikir for Bug#6707125
2566 p_line_type => l_quote_fee_rec.fee_type);
2567 IF(l_debug_enabled='Y') THEN
2568 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_link_assets'
2569 ,'end debug call create_link_assets');
2570 END IF;
2571 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2572 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2573 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2574 RAISE OKL_API.G_EXCEPTION_ERROR;
2575 END IF;
2576 END IF;
2577
2578 IF l_quote_fee_rec.fee_type IN ('MISCELLANEOUS', 'EXPENSE', 'ABSORBED', 'FINANCED') THEN
2579 IF(l_debug_enabled='Y') THEN
2580 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_expense_dtls'
2581 ,'begin debug call create_expense_dtls');
2582 END IF;
2583 create_expense_dtls(p_api_version => p_api_version,
2584 p_init_msg_list => p_init_msg_list,
2585 x_return_status => x_return_status,
2586 x_msg_count => x_msg_count,
2587 x_msg_data => x_msg_data,
2588 p_cle_id => l_cle_id,
2589 p_chr_id => p_chr_id,
2590 p_periods => l_periods,
2591 p_periodic_amount => l_periodic_amount,
2592 p_exp_frequency => l_exp_frequency);
2593 IF(l_debug_enabled='Y') THEN
2594 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_expense_dtls'
2595 ,'end debug call create_expense_dtls');
2596 END IF;
2597 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2598 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2599 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2600 RAISE OKL_API.G_EXCEPTION_ERROR;
2601 END IF;
2602 END IF;
2603 IF l_quote_fee_rec.fee_type IN ('MISCELLANEOUS', 'PASSTHROUGH', 'FINANCED', 'INCOME', 'ROLLOVER', 'SEC_DEPOSIT') THEN
2604 l_pymnt_counter := 0;
2605 l_payment_levels_tbl.DELETE;
2606 FOR l_fee_payment_rec IN c_get_fee_payment_dtls(l_quote_fee_rec.ID) LOOP
2607 l_payment_levels_tbl(l_pymnt_counter).START_DATE := l_fee_payment_rec.START_DATE;
2608 l_payment_levels_tbl(l_pymnt_counter).PERIODS := l_fee_payment_rec.NUMBER_OF_PERIODS;
2609 l_payment_levels_tbl(l_pymnt_counter).AMOUNT := l_fee_payment_rec.AMOUNT;
2610 l_payment_levels_tbl(l_pymnt_counter).STUB_DAYS := l_fee_payment_rec.STUB_DAYS;
2611 l_payment_levels_tbl(l_pymnt_counter).STUB_AMOUNT := l_fee_payment_rec.STUB_AMOUNT;
2612 l_payment_levels_tbl(l_pymnt_counter).PAYMENT_TYPE_ID := l_fee_payment_rec.PAYMENT_TYPE_ID;
2613 l_payment_levels_tbl(l_pymnt_counter).FREQUENCY_CODE := l_fee_payment_rec.FREQUENCY_CODE;
2614 l_payment_levels_tbl(l_pymnt_counter).ARREARS_YN := l_fee_payment_rec.ARREARS_YN;
2615 l_pymnt_counter := l_pymnt_counter + 1;
2616 END LOOP;
2617 -- create EPT payment
2618 IF l_payment_levels_tbl.COUNT > 0 THEN
2619
2620 IF(l_debug_enabled='Y') THEN
2621 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
2622 ,'begin debug call create_payment_plans');
2623 END IF;
2624 create_payment_plans(p_api_version => p_api_version,
2625 p_init_msg_list => p_init_msg_list,
2626 x_return_status => x_return_status,
2627 x_msg_count => x_msg_count,
2628 x_msg_data => x_msg_data,
2629 p_transaction_control => OKL_API.G_FALSE,
2630 p_cle_id => l_cle_id,
2631 p_chr_id => p_chr_id,
2632 p_payment_type_id => l_payment_levels_tbl(0).payment_type_id,
2633 p_payment_frequency => l_payment_levels_tbl(0).frequency_code,
2634 p_payment_arrears => l_payment_levels_tbl(0).arrears_yn,
2635 p_payment_structure => NULL,
2636 p_rate_type => NULL,
2637 p_payment_levels_tbl => l_payment_levels_tbl);
2638 IF(l_debug_enabled='Y') THEN
2639 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
2640 ,'end debug call create_payment_plans');
2641 END IF;
2642 IF x_return_status = G_RET_STS_UNEXP_ERROR THEN
2643 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2644 ELSIF x_return_status = G_RET_STS_ERROR THEN
2645 RAISE OKL_API.G_EXCEPTION_ERROR;
2646 END IF;
2647 END IF;
2648 END IF;
2649 END LOOP;
2650 x_return_status := okc_api.G_RET_STS_SUCCESS;
2651 OKL_API.END_ACTIVITY(
2652 x_msg_count => x_msg_count
2653 ,x_msg_data => x_msg_data);
2654 EXCEPTION
2655 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2656 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2657 p_api_name => l_api_name,
2658 p_pkg_name => G_PKG_NAME,
2659 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2660 x_msg_count => x_msg_count,
2661 x_msg_data => x_msg_data,
2662 p_api_type => G_API_TYPE);
2663 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2664 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2665 p_api_name => l_api_name,
2666 p_pkg_name => G_PKG_NAME,
2667 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2668 x_msg_count => x_msg_count,
2669 x_msg_data => x_msg_data,
2670 p_api_type => G_API_TYPE);
2671 WHEN OTHERS THEN
2672 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2673 p_api_name => l_api_name,
2674 p_pkg_name => G_PKG_NAME,
2675 p_exc_name => 'OTHERS',
2676 x_msg_count => x_msg_count,
2677 x_msg_data => x_msg_data,
2678 p_api_type => G_API_TYPE);
2679 END create_fee_lines;
2680
2681 -----------------------------------------------------------------------------
2682 -- PROCEDURE create_asset_addon
2683 -----------------------------------------------------------------------------
2684 -- Start of comments
2685 --
2686 -- Procedure Name : asset_addon
2687 -- Description : This procedure creates the addons for the
2688 -- : given asset
2689 -- Business Rules :
2690 -- Parameters : p_quote_asset_rec, p_addon_tbl,
2691 -- : x_return_status, x_msg_count, x_msg_data
2692 -- Version : 1.0
2693 -- History : 20-Jun-2005 SKGAUTAM created
2694 --
2695 -- End of comments
2696 PROCEDURE create_asset_addon( p_api_version IN NUMBER,
2697 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2698 x_return_status OUT NOCOPY VARCHAR2,
2699 x_msg_count OUT NOCOPY NUMBER,
2700 x_msg_data OUT NOCOPY VARCHAR2,
2701 p_clev_fin_rec IN clev_fin_rec,
2702 p_asset_id IN NUMBER) IS
2703 -- Variables Declarations
2704 l_api_version CONSTANT NUMBER DEFAULT 1.0;
2705 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_AST_ADN';
2706 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2707 l_debug_enabled VARCHAR2(10);
2708 l_cre_klev_tbl OKL_CREATE_KLE_PVT.klev_tbl_type;
2709 l_cre_clev_tbl OKL_CREATE_KLE_PVT.clev_tbl_type;
2710 l_cre_cimv_tbl OKL_CREATE_KLE_PVT.cimv_tbl_type;
2711 lx_cre_klev_tbl OKL_CREATE_KLE_PVT.klev_tbl_type;
2712 lx_cre_clev_tbl OKL_CREATE_KLE_PVT.clev_tbl_type;
2713 lx_cre_cimv_tbl OKL_CREATE_KLE_PVT.cimv_tbl_type;
2714 lx_cre_fin_clev_rec OKL_CREATE_KLE_PVT.clev_rec_type;
2715 lx_cre_fin_klev_rec OKL_CREATE_KLE_PVT.klev_rec_type;
2716 l_cre_counter NUMBER;
2717 l_line_number NUMBER;
2718 l_asset_number VARCHAR2(150);
2719 lx_return_status VARCHAR2(1);
2720 l_model_line_id okc_k_lines_b.id%TYPE;
2721 l_addon_item_id okc_k_items.object1_id1%TYPE;
2722 l_addon_unit_cost okc_k_lines_b.price_unit%TYPE;
2723 l_addon_modified BOOLEAN;
2724 TYPE qte_cntrct_addon_rec_type IS RECORD (qte_addon_id NUMBER,
2725 addon_supplier_id NUMBER,
2726 cntrct_addon_id NUMBER);
2727 l_qte_cntrct_addon_tbl qte_cntrct_addon_rec_type;
2728
2729 CURSOR find_model_line_id_csr (p_fin_line_id NUMBER) IS
2730 -- to find id for model line style 34 which is parent of ADD ON Line
2731 SELECT cle.id MODEL_LINE_ID
2732 FROM okc_k_lines_b cle,
2733 okc_line_styles_b cls
2734 WHERE cle.cle_id = p_fin_line_id
2735 AND cle.lse_id = cls.id
2736 AND cls.lty_code = 'ITEM';
2737 -- to find the asset_num
2738 CURSOR find_asset_num_csr(p_fin_line_id NUMBER) IS
2739 SELECT name
2740 FROM OKC_K_LINES_V
2741 WHERE id = p_fin_line_id;
2742 --get asset add ons
2743 CURSOR c_get_asset_addons(p_ast_id okl_assets_b.ID%TYPE) IS
2744 SELECT oab.ID,
2745 oab.ASSET_NUMBER,
2746 oab.INSTALL_SITE_ID,
2747 oab.RATE_CARD_ID,
2748 oab.RATE_TEMPLATE_ID,
2749 oab.OEC,
2750 oab.END_OF_TERM_VALUE_DEFAULT,
2751 oab.END_OF_TERM_VALUE,
2752 oab.OEC_PERCENTAGE,
2753 oab.DESCRIPTION,
2754 oacb.INV_ITEM_ID,
2755 oacb.SUPPLIER_ID,
2756 oacb.PRIMARY_COMPONENT,
2757 oacb.UNIT_COST,
2758 oacb.NUMBER_OF_UNITS,
2759 oacb.MANUFACTURER_NAME,
2760 oacb.YEAR_MANUFACTURED,
2761 oacb.MODEL_NUMBER,
2762 oacb.id qte_add_on_id
2763 FROM okl_assets_v oab,
2764 okl_asset_components_b oacb
2765 WHERE oab.ID = oacb.ASSET_ID
2766 AND oab.PARENT_OBJECT_CODE = 'LEASEQUOTE'
2767 AND oacb.PRIMARY_COMPONENT = 'NO'
2768 AND oacb.ASSET_ID = p_ast_id;
2769 BEGIN
2770 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2771 -- check for logging on PROCEDURE level
2772 l_debug_enabled := okl_debug_pub.check_log_enabled;
2773 -- call START_ACTIVITY to create savepoint, check compatibility
2774 -- and initialize message list
2775 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
2776 ,p_pkg_name => G_PKG_NAME
2777 ,p_init_msg_list => p_init_msg_list
2778 ,l_api_version => l_api_version
2779 ,p_api_version => p_api_version
2780 ,p_api_type => g_api_type
2781 ,x_return_status => x_return_status);
2782 -- check if activity started successfully
2783 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2784 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2785 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2786 RAISE OKL_API.G_EXCEPTION_ERROR;
2787 END IF;
2788 -- find asset number and set it
2789 open find_asset_num_csr(p_clev_fin_rec.ID);
2790 fetch find_asset_num_csr into l_asset_number;
2791 close find_asset_num_csr;
2792 l_cre_counter := 0;
2793 FOR l_model_line_id_csr_rec in find_model_line_id_csr ( p_fin_line_id => p_clev_fin_rec.ID)
2794 LOOP
2795 l_model_line_id := l_model_line_id_csr_rec.model_line_id;
2796 END LOOP;
2797 FOR l_asset_addon_rec IN c_get_asset_addons(p_asset_id) LOOP
2798 l_cre_counter := 0;
2799 l_cre_clev_tbl.DELETE;
2800 l_cre_cimv_tbl.DELETE;
2801 l_cre_klev_tbl.DELETE;
2802 l_cre_clev_tbl(l_cre_counter).chr_id := NULL;
2803 l_cre_clev_tbl(l_cre_counter).cle_id := l_model_line_id;
2804 l_cre_clev_tbl(l_cre_counter).price_unit := l_asset_addon_rec.unit_cost;
2805 l_cre_clev_tbl(l_cre_counter).dnz_chr_id := p_clev_fin_rec.chr_id;
2806 l_cre_clev_tbl(l_cre_counter).exception_yn := 'N';
2807 l_cre_cimv_tbl(l_cre_counter).exception_yn := 'N';
2808 l_cre_cimv_tbl(l_cre_counter).number_of_items := l_asset_addon_rec.number_of_units;
2809 l_cre_cimv_tbl(l_cre_counter).object1_id1 := l_asset_addon_rec.INV_ITEM_ID;
2810 -- assigning OKL_K_ITEMS_INVENTORY_ORG instead of ORG_ID
2811 l_cre_cimv_tbl(l_cre_counter).object1_id2 := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_ITEM_INV_ORG_ID);
2812 l_cre_klev_tbl(l_cre_counter).manufacturer_name := l_asset_addon_rec.manufacturer_name;
2813 l_cre_klev_tbl(l_cre_counter).model_number := l_asset_addon_rec.model_number;
2814 l_cre_klev_tbl(l_cre_counter).year_of_manufacture := l_asset_addon_rec.year_manufactured;
2815
2816
2817 /* END LOOP; -- for addon table
2818 IF ( l_cre_counter > 0 ) THEN*/
2819 IF(l_debug_enabled='Y') THEN
2820 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CREATE_KLE_PVT.create_add_on_line'
2821 ,'begin debug call create_add_on_line');
2822 END IF;
2823
2824 OKL_CREATE_KLE_PVT.create_add_on_line(p_api_version => p_api_version,
2825 p_init_msg_list => p_init_msg_list,
2826 x_return_status => x_return_status,
2827 x_msg_count => x_msg_count,
2828 x_msg_data => x_msg_data,
2829 p_new_yn => 'Y',
2830 p_asset_number => l_asset_number,
2831 p_clev_tbl => l_cre_clev_tbl,
2832 p_klev_tbl => l_cre_klev_tbl,
2833 p_cimv_tbl => l_cre_cimv_tbl,
2834 x_clev_tbl => lx_cre_clev_tbl,
2835 x_klev_tbl => lx_cre_klev_tbl,
2836 x_fin_clev_rec => lx_cre_fin_clev_rec,
2837 x_fin_klev_rec => lx_cre_fin_klev_rec,
2838 x_cimv_tbl => lx_cre_cimv_tbl);
2839
2840 IF(l_debug_enabled='Y') THEN
2841 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CREATE_KLE_PVT.create_add_on_line'
2842 ,'end debug call create_add_on_line');
2843 END IF;
2844 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2845 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2846 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2847 RAISE OKL_API.G_EXCEPTION_ERROR;
2848 END IF;
2849
2850 -- create the party as vendor for the supplier present on the asset
2851 IF l_asset_addon_rec.supplier_id IS NOT NULL THEN
2852 IF(l_debug_enabled='Y') THEN
2853 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2854 ,'begin debug call create_vendor');
2855 END IF;
2856
2857 create_vendor( p_api_version => p_api_version,
2858 p_init_msg_list => p_init_msg_list,
2859 x_return_status => x_return_status,
2860 x_msg_count => x_msg_count,
2861 x_msg_data => x_msg_data,
2862 p_chr_id => p_clev_fin_rec.chr_id,
2863 p_cle_id => NULL,
2864 p_vendor_id => l_asset_addon_rec.supplier_id);
2865
2866 IF(l_debug_enabled='Y') THEN
2867 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2868 ,'end debug call create_vendor');
2869 END IF;
2870 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2871 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2872 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2873 RAISE OKL_API.G_EXCEPTION_ERROR;
2874 END IF;
2875 IF(l_debug_enabled='Y') THEN
2876 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2877 ,'begin debug call create_vendor');
2878 END IF;
2879 create_vendor( p_api_version => p_api_version,
2880 p_init_msg_list => p_init_msg_list,
2881 x_return_status => x_return_status,
2882 x_msg_count => x_msg_count,
2883 x_msg_data => x_msg_data,
2884 p_chr_id => p_clev_fin_rec.chr_id,
2885 p_cle_id => lx_cre_clev_tbl(lx_cre_clev_tbl.FIRST).id,
2886 p_vendor_id => l_asset_addon_rec.supplier_id);
2887
2888 IF(l_debug_enabled='Y') THEN
2889 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
2890 ,'end debug call create_vendor');
2891 END IF;
2892 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2893 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2894 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2895 RAISE OKL_API.G_EXCEPTION_ERROR;
2896 END IF;
2897 END IF;
2898
2899
2900 END LOOP;
2901 -- END IF;
2902 x_return_status := okc_api.G_RET_STS_SUCCESS;
2903 OKL_API.END_ACTIVITY(
2904 x_msg_count => x_msg_count
2905 ,x_msg_data => x_msg_data);
2906 EXCEPTION
2907 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2908 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2909 p_api_name => l_api_name,
2910 p_pkg_name => G_PKG_NAME,
2911 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
2912 x_msg_count => x_msg_count,
2913 x_msg_data => x_msg_data,
2914 p_api_type => G_API_TYPE);
2915 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2916 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2917 p_api_name => l_api_name,
2918 p_pkg_name => G_PKG_NAME,
2919 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2920 x_msg_count => x_msg_count,
2921 x_msg_data => x_msg_data,
2922 p_api_type => G_API_TYPE);
2923 WHEN OTHERS THEN
2924 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2925 p_api_name => l_api_name,
2926 p_pkg_name => G_PKG_NAME,
2927 p_exc_name => 'OTHERS',
2928 x_msg_count => x_msg_count,
2929 x_msg_data => x_msg_data,
2930 p_api_type => G_API_TYPE);
2931 END create_asset_addon;
2932 -----------------------------------------------------------------------------
2933 -- PROCEDURE create_asset_subsidy
2934 -----------------------------------------------------------------------------
2935 -- Start of comments
2936 --
2937 -- Procedure Name : create_asset_subsidy
2938 -- Description : This procedure creates and updates the subsidies for the
2939 -- : given asset
2940 -- Business Rules :
2941 -- Parameters : p_quote_asset_rec, p_subsidy_tbl,
2942 -- : x_return_status, x_msg_count, x_msg_data
2943 -- Version : 1.0
2944 -- History : 20-Jun-2005 SKGAUTAM created
2945 -- 04-Jan-2008 RRAVIKIR modified for bug#6707125 to handle
2946 -- the subsidy creation for Financed
2947 -- Amount Subsidy
2948 --
2949 -- End of comments
2950 PROCEDURE create_asset_subsidy (p_api_version IN NUMBER,
2951 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2952 x_return_status OUT NOCOPY VARCHAR2,
2953 x_msg_count OUT NOCOPY NUMBER,
2954 x_msg_data OUT NOCOPY VARCHAR2,
2955 --p_clev_fin_rec IN clev_fin_rec, -- Commented by rravikir for bug#6707125
2956 --p_asset_id IN NUMBER, -- Commented by rravikir for bug#6707125
2957 p_quote_id IN NUMBER, -- Added by rravikir for bug#6707125
2958 p_chr_id IN NUMBER) IS
2959 -- Variables Declarations
2960 l_api_version CONSTANT NUMBER DEFAULT 1.0;
2961 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_AST_SUB';
2962 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2963 l_debug_enabled VARCHAR2(10);
2964
2965 -- Start : Added by rravikir for Bug#6707125
2966 CURSOR c_get_asset_id(p_qte_id okl_lease_quotes_b.ID%TYPE) IS
2967 SELECT oab.ID asset_id
2968 FROM okl_assets_v oab,
2969 okl_asset_components_b oacb
2970 WHERE oab.ID = oacb.ASSET_ID
2971 AND oab.PARENT_OBJECT_CODE = 'LEASEQUOTE'
2972 AND oacb.PRIMARY_COMPONENT = 'YES'
2973 AND oab.PARENT_OBJECT_ID = p_qte_id;
2974 -- End : Added by rravikir for Bug#6707125
2975
2976 CURSOR c_get_asset_subsidy(p_ast_id okl_assets_b.ID%TYPE) IS
2977 SELECT ADJUSTMENT_SOURCE_ID,
2978 VALUE,
2979 SUPPLIER_ID,
2980 default_subsidy_amount
2981 FROM okl_cost_adjustments_b
2982 WHERE PARENT_OBJECT_CODE = 'ASSET'
2983 AND ADJUSTMENT_SOURCE_TYPE = 'SUBSIDY'
2984 AND PARENT_OBJECT_ID = p_ast_id;
2985 l_cre_asb_tbl OKL_ASSET_SUBSIDY_PVT.asb_tbl_type;
2986 lx_cre_asb_tbl OKL_ASSET_SUBSIDY_PVT.asb_tbl_type;
2987 l_cre_asb_tmp_tbl OKL_ASSET_SUBSIDY_PVT.asb_tbl_type; --temporary table for initialization
2988 l_cre_counter NUMBER;
2989 l_fin_line_id NUMBER; -- Added by rravikir for Bug#6707125
2990 lx_return_status VARCHAR2(1);
2991
2992 BEGIN
2993 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2994 -- check for logging on PROCEDURE level
2995 l_debug_enabled := okl_debug_pub.check_log_enabled;
2996 -- call START_ACTIVITY to create savepoint, check compatibility
2997 -- and initialize message list
2998 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
2999 ,p_pkg_name => G_PKG_NAME
3000 ,p_init_msg_list => p_init_msg_list
3001 ,l_api_version => l_api_version
3002 ,p_api_version => p_api_version
3003 ,p_api_type => g_api_type
3004 ,x_return_status => x_return_status);
3005 -- check if activity started successfully
3006 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3007 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3008 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3009 RAISE OKL_API.G_EXCEPTION_ERROR;
3010 END IF;
3011
3012 -- Outer Loop : Added by rravikir for bug#6707125
3013 FOR l_get_asset_rec IN c_get_asset_id(p_quote_id) LOOP
3014 l_cre_counter := 0;
3015 l_cre_asb_tbl := l_cre_asb_tmp_tbl; --Initialization of table
3016 l_fin_line_id := get_fin_line_id(l_get_asset_rec.asset_id);
3017 IF l_fin_line_id IS NOT NULL THEN
3018 --FOR l_asset_subsidy_rec IN c_get_asset_subsidy(p_asset_id) LOOP
3019 FOR l_asset_subsidy_rec IN c_get_asset_subsidy(l_get_asset_rec.asset_id) LOOP
3020 l_cre_asb_tbl(l_cre_counter).subsidy_id := l_asset_subsidy_rec.ADJUSTMENT_SOURCE_ID;
3021 --l_cre_asb_tbl(l_cre_counter).asset_cle_id := p_clev_fin_rec.id;
3022 l_cre_asb_tbl(l_cre_counter).asset_cle_id := l_fin_line_id;
3023 l_cre_asb_tbl(l_cre_counter).amount := l_asset_subsidy_rec.default_subsidy_amount;
3024 l_cre_asb_tbl(l_cre_counter).subsidy_override_amount := l_asset_subsidy_rec.value;
3025 --l_cre_asb_tbl(l_cre_counter).dnz_chr_id := p_clev_fin_rec.chr_id;
3026 l_cre_asb_tbl(l_cre_counter).dnz_chr_id := p_chr_id;
3027 l_cre_asb_tbl(l_cre_counter).vendor_id := l_asset_subsidy_rec.SUPPLIER_ID;
3028
3029 -- create the party as vendor for the supplier present on the subsidy
3030 IF l_asset_subsidy_rec.SUPPLIER_ID IS NOT NULL THEN
3031 IF(l_debug_enabled='Y') THEN
3032 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3033 ,'begin debug call create_vendor');
3034 END IF;
3035
3036 create_vendor( p_api_version => p_api_version,
3037 p_init_msg_list => p_init_msg_list,
3038 x_return_status => x_return_status,
3039 x_msg_count => x_msg_count,
3040 x_msg_data => x_msg_data,
3041 p_chr_id => p_chr_id,
3042 p_cle_id => NULL,
3043 p_vendor_id => l_asset_subsidy_rec.SUPPLIER_ID);
3044
3045 IF(l_debug_enabled='Y') THEN
3046 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3047 ,'end debug call create_vendor');
3048 END IF;
3049 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3050 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3051 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3052 RAISE OKL_API.G_EXCEPTION_ERROR;
3053 END IF;
3054 END IF;
3055
3056 l_cre_counter := l_cre_counter + 1;
3057 END LOOP;
3058
3059 IF l_cre_counter > 0 THEN
3060 IF(l_debug_enabled='Y') THEN
3061 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_asset_subsidy_pvt.create_asset_subsidy'
3062 ,'begin debug call create_asset_subsidy');
3063 END IF;
3064
3065 okl_asset_subsidy_pvt.create_asset_subsidy( p_api_version => p_api_version,
3066 p_init_msg_list => p_init_msg_list,
3067 x_return_status => x_return_status,
3068 x_msg_count => x_msg_count,
3069 x_msg_data => x_msg_data,
3070 p_asb_tbl => l_cre_asb_tbl,
3071 x_asb_tbl => lx_cre_asb_tbl);
3072 IF(l_debug_enabled='Y') THEN
3073 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_asset_subsidy_pvt.create_asset_subsidy'
3074 ,'end debug call create_asset_subsidy');
3075 END IF;
3076
3077 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3078 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3079 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3080 RAISE OKL_API.G_EXCEPTION_ERROR;
3081 END IF;
3082 END IF;
3083 END IF;
3084 END LOOP; -- Outer Loop Added by rravikir for bug#6707125
3085
3086 x_return_status := okc_api.G_RET_STS_SUCCESS;
3087
3088 OKL_API.END_ACTIVITY(
3089 x_msg_count => x_msg_count
3090 ,x_msg_data => x_msg_data);
3091 EXCEPTION
3092 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3093 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3094 p_api_name => l_api_name,
3095 p_pkg_name => G_PKG_NAME,
3096 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3097 x_msg_count => x_msg_count,
3098 x_msg_data => x_msg_data,
3099 p_api_type => G_API_TYPE);
3100 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3101 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3102 p_api_name => l_api_name,
3103 p_pkg_name => G_PKG_NAME,
3104 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3105 x_msg_count => x_msg_count,
3106 x_msg_data => x_msg_data,
3107 p_api_type => G_API_TYPE);
3108 WHEN OTHERS THEN
3109 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3110 p_api_name => l_api_name,
3111 p_pkg_name => G_PKG_NAME,
3112 p_exc_name => 'OTHERS',
3113 x_msg_count => x_msg_count,
3114 x_msg_data => x_msg_data,
3115 p_api_type => G_API_TYPE);
3116 END create_asset_subsidy;
3117
3118 -----------------------------------------------------------------------------
3119 -- PROCEDURE create_asset_down_payment
3120 -----------------------------------------------------------------------------
3121 -- Start of comments
3122 --
3123 -- Procedure Name : create_asset_down_payment
3124 -- Description : This procedure creates down payment for an asset
3125 -- End of comments
3126 PROCEDURE create_asset_down_payment (p_api_version IN NUMBER,
3127 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3128 x_return_status OUT NOCOPY VARCHAR2,
3129 x_msg_count OUT NOCOPY NUMBER,
3130 x_msg_data OUT NOCOPY VARCHAR2,
3131 p_clev_fin_rec IN clev_fin_rec,
3132 p_asset_id IN NUMBER) IS
3133 -- Variables Declarations
3134 l_api_version CONSTANT NUMBER DEFAULT 1.0;
3135 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_AST_DP';
3136 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3137 l_debug_enabled VARCHAR2(10);
3138 l_asset_number VARCHAR2(240);
3139 l_top_line_id NUMBER;
3140 l_dnz_chr_id NUMBER;
3141 l_capital_reduction NUMBER;
3142 l_capital_reduction_percent NUMBER;
3143 l_oec NUMBER;
3144 l_cap_down_pay_yn VARCHAR2(5);
3145 l_down_payment_receiver VARCHAR2(30);
3146 l_dp_exists BOOLEAN := FALSE;
3147
3148 --cursor to fetch asset down payment adjustment details
3149 CURSOR get_asset_dp_details(p_ast_id IN okl_Assets_b.id%TYPE) IS
3150 SELECT
3151 id
3152 ,parent_object_code
3153 ,parent_object_id
3154 ,adjustment_source_type
3155 ,adjustment_source_id
3156 ,basis
3157 ,value
3158 ,processing_type
3159 ,supplier_id
3160 ,default_subsidy_amount
3161 ,short_description
3162 ,description
3163 ,comments
3164 ,percent_basis_value
3165 FROM OKL_COST_ADJUSTMENTS_V
3166 WHERE parent_object_id = p_ast_id
3167 AND parent_object_code = 'ASSET'
3168 AND adjustment_source_type = 'DOWN_PAYMENT';
3169
3170 BEGIN
3171 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3172 -- check for logging on PROCEDURE level
3173 l_debug_enabled := okl_debug_pub.check_log_enabled;
3174 -- call START_ACTIVITY to create savepoint, check compatibility
3175 -- and initialize message list
3176 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
3177 ,p_pkg_name => G_PKG_NAME
3178 ,p_init_msg_list => p_init_msg_list
3179 ,l_api_version => l_api_version
3180 ,p_api_version => p_api_version
3181 ,p_api_type => g_api_type
3182 ,x_return_status => x_return_status);
3183 -- check if activity started successfully
3184 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3185 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3186 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3187 RAISE OKL_API.G_EXCEPTION_ERROR;
3188 END IF;
3189 SELECT ASSET_NUMBER
3190 INTO l_asset_number
3191 FROM OKL_ASSET_ADJUST_UV
3192 WHERE ID = p_clev_fin_rec.id;
3193 l_top_line_id := p_clev_fin_rec.id;
3194 l_dnz_chr_id := p_clev_fin_rec.dnz_chr_id;
3195 SELECT oec
3196 INTO l_oec
3197 FROM OKL_K_LINES
3198 WHERE ID = p_clev_fin_rec.id;
3199 l_down_payment_receiver := 'LESSOR';
3200 FOR l_asset_dp_rec IN get_asset_dp_details(p_asset_id) LOOP
3201 l_dp_exists := TRUE;
3202 l_capital_reduction := l_asset_dp_rec.value;
3203 l_capital_reduction_percent := null;
3204 IF l_asset_dp_rec.processing_type = 'BILL' THEN
3205 l_cap_down_pay_yn := 'N';
3206 ELSE
3207 l_cap_down_pay_yn := 'Y';
3208 END IF;
3209 END LOOP;
3210 IF l_dp_exists THEN
3211 IF(l_debug_enabled='Y') THEN
3212 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.Okl_La_Asset_Pvt.update_Fin_Cap_Cost'
3213 ,'begin debug call update_Fin_Cap_Cost');
3214 END IF;
3215 Okl_La_Asset_Pvt.update_Fin_Cap_Cost(
3216 p_api_version,
3217 p_init_msg_list,
3218 x_return_status,
3219 x_msg_count,
3220 x_msg_data,
3221 'N',
3222 l_asset_number,
3223 l_top_line_id,
3224 l_dnz_chr_id,
3225 l_capital_reduction,
3226 l_capital_reduction_percent,
3227 l_oec,
3228 l_cap_down_pay_yn,
3229 l_down_payment_receiver
3230 );
3231 IF(l_debug_enabled='Y') THEN
3232 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.Okl_La_Asset_Pvt.update_Fin_Cap_Cost'
3233 ,'end debug call update_Fin_Cap_Cost');
3234 END IF;
3235 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3236 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3237 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3238 RAISE OKL_API.G_EXCEPTION_ERROR;
3239 END IF;
3240 END IF;
3241 x_return_status := okc_api.G_RET_STS_SUCCESS;
3242
3243 OKL_API.END_ACTIVITY(
3244 x_msg_count => x_msg_count
3245 ,x_msg_data => x_msg_data);
3246 EXCEPTION
3247 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3248 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3249 p_api_name => l_api_name,
3250 p_pkg_name => G_PKG_NAME,
3251 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3252 x_msg_count => x_msg_count,
3253 x_msg_data => x_msg_data,
3254 p_api_type => G_API_TYPE);
3255 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3256 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3257 p_api_name => l_api_name,
3258 p_pkg_name => G_PKG_NAME,
3259 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3260 x_msg_count => x_msg_count,
3261 x_msg_data => x_msg_data,
3262 p_api_type => G_API_TYPE);
3263 WHEN OTHERS THEN
3264 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3265 p_api_name => l_api_name,
3266 p_pkg_name => G_PKG_NAME,
3267 p_exc_name => 'OTHERS',
3268 x_msg_count => x_msg_count,
3269 x_msg_data => x_msg_data,
3270 p_api_type => G_API_TYPE);
3271 END create_asset_down_payment;
3272 -----------------------------------------------------------------------------
3273 -- PROCEDURE create_asset_tradein
3274 -----------------------------------------------------------------------------
3275 -- Start of comments
3276 --
3277 -- Procedure Name : create_asset_tradein
3278 -- Description : This procedure creates trade in for an asset
3279 -- End of comments
3280 PROCEDURE create_asset_tradein (p_api_version IN NUMBER,
3281 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3282 x_return_status OUT NOCOPY VARCHAR2,
3283 x_msg_count OUT NOCOPY NUMBER,
3284 x_msg_data OUT NOCOPY VARCHAR2,
3285 p_clev_fin_rec IN clev_fin_rec,
3286 p_asset_id IN NUMBER) IS
3287 -- Variables Declarations
3288 l_api_version CONSTANT NUMBER DEFAULT 1.0;
3289 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_AST_DP';
3290 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3291 l_debug_enabled VARCHAR2(10);
3292 l_tradein_rec Okl_La_Tradein_Pvt.tradein_rec_type;
3293 x_tradein_rec Okl_La_Tradein_Pvt.tradein_rec_type;
3294 l_chr_id okl_k_headers.id%TYPE;
3295 l_ti_exists BOOLEAN := false;
3296
3297 --cursor to fetch asset trade in adjustment details
3298 CURSOR get_asset_ti_details(p_ast_id IN okl_Assets_b.id%TYPE) IS
3299 SELECT
3300 id
3301 ,parent_object_code
3302 ,parent_object_id
3303 ,adjustment_source_type
3304 ,adjustment_source_id
3305 ,basis
3306 ,value
3307 ,processing_type
3308 ,supplier_id
3309 ,default_subsidy_amount
3310 ,short_description
3311 ,description
3312 ,comments
3313 ,percent_basis_value
3314 FROM OKL_COST_ADJUSTMENTS_V
3315 WHERE parent_object_id = p_ast_id
3316 AND parent_object_code = 'ASSET'
3317 AND adjustment_source_type = 'TRADEIN';
3318
3319 BEGIN
3320 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3321 -- check for logging on PROCEDURE level
3322 l_debug_enabled := okl_debug_pub.check_log_enabled;
3323 -- call START_ACTIVITY to create savepoint, check compatibility
3324 -- and initialize message list
3325 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
3326 ,p_pkg_name => G_PKG_NAME
3327 ,p_init_msg_list => p_init_msg_list
3328 ,l_api_version => l_api_version
3329 ,p_api_version => p_api_version
3330 ,p_api_type => g_api_type
3331 ,x_return_status => x_return_status);
3332 -- check if activity started successfully
3333 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3334 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3335 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3336 RAISE OKL_API.G_EXCEPTION_ERROR;
3337 END IF;
3338 SELECT ASSET_NUMBER
3339 INTO l_tradein_rec.asset_number
3340 FROM OKL_ASSET_ADJUST_UV
3341 WHERE ID = p_clev_fin_rec.id;
3342 l_tradein_rec.id := p_clev_fin_rec.id;
3343 l_tradein_rec.asset_id := p_clev_fin_rec.id;
3344 l_chr_id := p_clev_fin_rec.dnz_chr_id;
3345 FOR l_asset_ti_rec IN get_asset_ti_details(p_asset_id) LOOP
3346 l_tradein_rec.tradein_amount:= l_asset_ti_rec.value;
3347 l_ti_exists := TRUE;
3348 END LOOP;
3349
3350 IF(l_debug_enabled='Y') THEN
3351 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.Okl_La_Tradein_Pvt.create_Tradein'
3352 ,'begin debug call create_Tradein');
3353 END IF;
3354
3355 IF l_ti_exists THEN
3356
3357 Okl_La_Tradein_Pvt.create_Tradein(p_api_version,
3358 p_init_msg_list,
3359 x_return_status,
3360 x_msg_count,
3361 x_msg_data,
3362 l_chr_id,
3363 l_tradein_rec,
3364 x_tradein_rec);
3365
3366 IF(l_debug_enabled='Y') THEN
3367 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.Okl_La_Tradein_Pvt.create_Tradein'
3368 ,'end debug call create_Tradein');
3369 END IF;
3370 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3371 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3372 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3373 RAISE OKL_API.G_EXCEPTION_ERROR;
3374 END IF;
3375
3376 END IF;
3377 x_return_status := okc_api.G_RET_STS_SUCCESS;
3378
3379 OKL_API.END_ACTIVITY(
3380 x_msg_count => x_msg_count
3381 ,x_msg_data => x_msg_data);
3382 EXCEPTION
3383 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3384 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3385 p_api_name => l_api_name,
3386 p_pkg_name => G_PKG_NAME,
3387 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
3388 x_msg_count => x_msg_count,
3389 x_msg_data => x_msg_data,
3390 p_api_type => G_API_TYPE);
3391 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3392 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3393 p_api_name => l_api_name,
3394 p_pkg_name => G_PKG_NAME,
3395 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3396 x_msg_count => x_msg_count,
3397 x_msg_data => x_msg_data,
3398 p_api_type => G_API_TYPE);
3399 WHEN OTHERS THEN
3400 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3401 p_api_name => l_api_name,
3402 p_pkg_name => G_PKG_NAME,
3403 p_exc_name => 'OTHERS',
3404 x_msg_count => x_msg_count,
3405 x_msg_data => x_msg_data,
3406 p_api_type => G_API_TYPE);
3407 END create_asset_tradein;
3408
3409 -------------------------------------------------------------------------------
3410 -- PROCEDURE create_asset_lines
3411 -------------------------------------------------------------------------------
3412 -- Start of comments
3413 --
3414 -- Procedure Name : create_asset_lines
3415 -- Description : This procedure is a wrapper that creates contract asset lines from lease application/quote header
3416 --
3417 -- Business Rules : this procedure is used to create a contract asset lines from lease application/quote header
3418 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
3419 -- : Lease Application Header asset line details
3420 -- Parameters :
3421 -- Version : 1.0
3422 -- History : 20-Jun-2005 SKGAUTAM created
3423 -- End of comments
3424 PROCEDURE create_asset_lines(p_api_version IN NUMBER,
3425 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3426 x_return_status OUT NOCOPY VARCHAR2,
3427 x_msg_count OUT NOCOPY NUMBER,
3428 x_msg_data OUT NOCOPY VARCHAR2,
3429 p_chr_id IN NUMBER,
3430 p_lapv_rec IN c_get_leaseapp_hdr%ROWTYPE)IS
3431 -- Variables Declarations
3432 l_api_version CONSTANT NUMBER DEFAULT 1.0;
3433 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_AST_LNS';
3434 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3435 l_debug_enabled VARCHAR2(10);
3436 l_new_yn VARCHAR2(1);
3437 l_update_date DATE;
3438 l_chr_id NUMBER;
3439 l_pymnt_counter NUMBER := 0;
3440 l_ast_counter NUMBER:=0;
3441 l_lapv_rec c_get_leaseapp_hdr%ROWTYPE;
3442 --asset rec
3443 l_clev_fin_rec okl_okc_migration_pvt.clev_rec_type;
3444 l_klev_fin_rec okl_kle_pvt.klev_rec_type;
3445 l_cimv_model_rec okl_okc_migration_pvt.cimv_rec_type;
3446 l_clev_fa_rec okl_okc_migration_pvt.clev_rec_type;
3447 l_cimv_fa_rec okl_okc_migration_pvt.cimv_rec_type;
3448 l_talv_fa_rec okl_tal_pvt.talv_rec_type;
3449 l_itiv_tbl okl_iti_pvt.itiv_tbl_type;
3450 lx_clev_fin_rec okl_okc_migration_pvt.clev_rec_type;
3451 lx_clev_model_rec okl_okc_migration_pvt.clev_rec_type;
3452 lx_clev_fa_rec okl_okc_migration_pvt.clev_rec_type;
3453 lx_clev_ib_rec okl_okc_migration_pvt.clev_rec_type;
3454 l_payment_levels_tbl payment_levels_tbl_type;
3455 l_qte_payment_levels_tbl payment_levels_tbl_type;
3456 l_pym_hdr_rec okl_la_payments_pvt.pym_hdr_rec_type;
3457 l_pym_tbl okl_la_payments_pvt.pym_tbl_type;
3458 lx_rulv_tbl okl_la_payments_pvt.rulv_tbl_type;
3459 l_payment_type_id Number;
3460 l_eot_type VARCHAR2(40);
3461 l_ti_amt NUMBER := NULL;
3462 l_ti_desc OKL_COST_ADJUSTMENTS_V.description%TYPE;
3463
3464 --Cursor declarations
3465 --Get asset line details
3466 CURSOR c_get_asset_dtls(p_qte_id okl_lease_quotes_b.ID%TYPE) IS
3467 SELECT oab.ID,
3468 oab.ASSET_NUMBER,
3469 oab.INSTALL_SITE_ID,
3470 oab.RATE_CARD_ID,
3471 oab.RATE_TEMPLATE_ID,
3472 oab.OEC,
3473 oab.END_OF_TERM_VALUE_DEFAULT,
3474 oab.END_OF_TERM_VALUE,
3475 oab.OEC_PERCENTAGE,
3476 oab.SHORT_DESCRIPTION,
3477 oacb.INV_ITEM_ID,
3478 oacb.SUPPLIER_ID,
3479 oacb.PRIMARY_COMPONENT,
3480 oacb.UNIT_COST,
3481 oacb.NUMBER_OF_UNITS,
3482 oacb.MANUFACTURER_NAME,
3483 oacb.YEAR_MANUFACTURED,
3484 oacb.MODEL_NUMBER
3485 FROM okl_assets_v oab,
3486 okl_asset_components_b oacb
3487 WHERE oab.ID = oacb.ASSET_ID
3488 AND oab.PARENT_OBJECT_CODE = 'LEASEQUOTE'
3489 AND oacb.PRIMARY_COMPONENT = 'YES'
3490 AND oab.PARENT_OBJECT_ID = p_qte_id;
3491
3492 --Get asset rent payment details
3493 CURSOR c_get_asset_payment_dtls(p_ast_id okl_assets_b.ID%TYPE) IS
3494 SELECT ocf.STY_ID payment_type_id,
3495 ocf.DUE_ARREARS_YN Arrears_YN,
3496 cfl.FQY_CODE Frequency_Code,
3497 cfl.START_DATE,
3498 cfl.STUB_DAYS,
3499 cfl.STUB_AMOUNT,
3500 cfl.NUMBER_OF_PERIODS,
3501 cfl.AMOUNT
3502 FROM OKL_CASH_FLOW_OBJECTS cfo,
3503 OKL_CASH_FLOWS ocf,
3504 OKL_CASH_FLOW_LEVELS cfl
3505 WHERE cfl.caf_id = ocf.ID
3506 AND ocf.CFO_ID = cfo.ID
3507 AND cfo.SOURCE_TABLE = 'OKL_ASSETS_B'
3508 AND cfo.OTY_CODE = 'QUOTED_ASSET'
3509 AND cfo.SOURCE_ID = p_ast_id;
3510
3511 --Get asset billed down payment details
3512 CURSOR c_get_asset_dppayment_dtls(p_ast_id okl_assets_b.ID%TYPE) IS
3513 SELECT ocf.STY_ID payment_type_id,
3514 ocf.DUE_ARREARS_YN Arrears_YN,
3515 cfl.FQY_CODE Frequency_Code,
3516 cfl.START_DATE,
3517 cfl.STUB_DAYS,
3518 cfl.STUB_AMOUNT,
3519 cfl.NUMBER_OF_PERIODS,
3520 cfl.AMOUNT
3521 FROM OKL_CASH_FLOW_OBJECTS cfo,
3522 OKL_CASH_FLOWS ocf,
3523 OKL_CASH_FLOW_LEVELS cfl
3524 WHERE cfl.caf_id = ocf.ID
3525 AND ocf.CFO_ID = cfo.ID
3526 AND cfo.SOURCE_TABLE = 'OKL_ASSETS_B'
3527 AND cfo.OTY_CODE = 'QUOTED_ASSET_DOWN_PAYMENT'
3528 AND cfo.SOURCE_ID = p_ast_id;
3529
3530 --Get asset estimated property tax payment details
3531 CURSOR c_get_asset_eptpayment_dtls(p_ast_id okl_assets_b.ID%TYPE) IS
3532 SELECT ocf.STY_ID payment_type_id,
3533 ocf.DUE_ARREARS_YN Arrears_YN,
3534 cfl.FQY_CODE Frequency_Code,
3535 cfl.START_DATE,
3536 cfl.STUB_DAYS,
3537 cfl.STUB_AMOUNT,
3538 cfl.NUMBER_OF_PERIODS,
3539 cfl.AMOUNT
3540 FROM OKL_CASH_FLOW_OBJECTS cfo,
3541 OKL_CASH_FLOWS ocf,
3542 OKL_CASH_FLOW_LEVELS cfl
3543 WHERE cfl.caf_id = ocf.ID
3544 AND ocf.CFO_ID = cfo.ID
3545 AND cfo.SOURCE_TABLE = 'OKL_ASSETS_B'
3546 AND cfo.OTY_CODE = 'QUOTED_ASSET_PROPERTY_TAX'
3547 AND cfo.SOURCE_ID = p_ast_id;
3548
3549 --Get quote level payment details
3550 CURSOR c_get_quote_payment_dtls(p_qte_id okl_lease_quotes_b.ID%TYPE) IS
3551 SELECT ocf.STY_ID payment_type_id,
3552 ocf.DUE_ARREARS_YN Arrears_YN,
3553 cfl.FQY_CODE Frequency_Code,
3554 cfl.START_DATE,
3555 cfl.STUB_DAYS,
3556 cfl.STUB_AMOUNT,
3557 cfl.NUMBER_OF_PERIODS,
3558 cfl.AMOUNT
3559 FROM OKL_CASH_FLOW_OBJECTS cfo,
3560 OKL_CASH_FLOWS ocf,
3561 OKL_CASH_FLOW_LEVELS cfl
3562 WHERE cfl.caf_id = ocf.ID
3563 AND ocf.CFO_ID = cfo.ID
3564 AND cfo.SOURCE_TABLE = 'OKL_LEASE_QUOTES_B'
3565 AND cfo.SOURCE_ID = p_qte_id;
3566
3567 --get the item description
3568 CURSOR itm_dtls_csr(p_inv_itm_id IN NUMBER, p_organization_id IN NUMBER) IS
3569 SELECT TL.DESCRIPTION DESCRIPTION
3570 FROM MTL_SYSTEM_ITEMS_TL TL
3571 WHERE TL.ORGANIZATION_ID = p_organization_id
3572 AND TL.INVENTORY_ITEM_ID = p_inv_itm_id
3573 AND TL.LANGUAGE = USERENV('LANG');
3574
3575 --get the eot type
3576 CURSOR c_get_eot_type(p_qte_id IN okl_lease_quotes_b.ID%TYPE) IS
3577 SELECT eoth.eot_type_code
3578 FROM OKL_FE_EO_TERM_VERS EOTV,
3579 OKL_FE_EO_TERMS_ALL_B EOTH,
3580 OKL_LEASE_QUOTES_B QTE
3581 WHERE QTE.END_OF_TERM_OPTION_ID = EOTV.END_OF_TERM_VER_ID
3582 AND EOTV.END_OF_TERM_ID = EOTH.END_OF_TERM_ID
3583 AND QTE.ID = p_qte_id;
3584
3585 --cursor to fetch total trade in amount and description
3586 CURSOR get_ti_amt(p_qte_id IN okl_lease_quotes_b.ID%TYPE) IS
3587 SELECT sum(cdj.value) total_tradein
3588 FROM OKL_COST_ADJUSTMENTS_b cdj,
3589 OKL_ASSETS_B ast
3590 WHERE cdj.parent_object_id = ast.id
3591 AND cdj.parent_object_code = 'ASSET'
3592 AND cdj.adjustment_source_type = 'TRADEIN'
3593 AND ast.parent_object_id = p_qte_id
3594 AND ast.parent_object_code ='LEASEQUOTE';
3595
3596 --cursor to fetch trade in description for any one asset
3597 CURSOR get_ti_desc(p_qte_id IN okl_lease_quotes_b.ID%TYPE) IS
3598 SELECT cdj.description
3599 FROM OKL_COST_ADJUSTMENTS_V cdj,
3600 OKL_ASSETS_B ast
3601 WHERE cdj.parent_object_id = ast.id
3602 AND cdj.parent_object_code = 'ASSET'
3603 AND cdj.adjustment_source_type = 'TRADEIN'
3604 AND ast.parent_object_id = p_qte_id
3605 AND ast.parent_object_code ='LEASEQUOTE'
3606 AND rownum = 1;
3607
3608 -- cursor to fetch lease
3609 BEGIN
3610 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3611 -- check for logging on PROCEDURE level
3612 l_debug_enabled := okl_debug_pub.check_log_enabled;
3613 -- call START_ACTIVITY to create savepoint, check compatibility
3614 -- and initialize message list
3615 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
3616 ,p_pkg_name => G_PKG_NAME
3617 ,p_init_msg_list => p_init_msg_list
3618 ,l_api_version => l_api_version
3619 ,p_api_version => p_api_version
3620 ,p_api_type => g_api_type
3621 ,x_return_status => x_return_status);
3622 -- check if activity started successfully
3623 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3624 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3625 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3626 RAISE OKL_API.G_EXCEPTION_ERROR;
3627 END IF;
3628 l_chr_id := p_chr_id;
3629 l_lapv_rec := p_lapv_rec;
3630 --create asset line
3631 FOR l_quote_asset_rec IN c_get_asset_dtls(l_lapv_rec.quote_id) LOOP
3632 l_cimv_model_rec.object1_id1 := l_quote_asset_rec.INV_ITEM_ID;
3633 l_cimv_model_rec.object1_id2 := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_ITEM_INV_ORG_ID);
3634 okl_context.set_okc_org_context(p_chr_id => l_chr_id);
3635 l_clev_fin_rec.exception_yn := 'N';
3636 l_clev_fin_rec.dnz_chr_id := l_chr_id;
3637 IF l_quote_asset_rec.short_description IS NOT NULL THEN
3638 l_clev_fin_rec.item_description := l_quote_asset_rec.short_description;
3639 ELSE
3640 FOR l_itm_rec IN itm_dtls_csr(l_cimv_model_rec.object1_id1,l_cimv_model_rec.object1_id2) LOOP
3641 l_clev_fin_rec.item_description := l_itm_rec.description;
3642 END LOOP;
3643 END IF;
3644 -- passing G_MISS_NUM may cause error in LLA APIs
3645
3646 FOR l_eot_typ_rec IN c_get_eot_type(l_lapv_rec.quote_id) LOOP
3647 l_eot_type := l_eot_typ_rec.eot_type_code;
3648 END LOOP;
3649 IF l_eot_type IN ('AMOUNT','RESIDUAL_AMOUNT') THEN
3650 l_klev_fin_rec.residual_value := nvl(l_quote_asset_rec.end_of_term_value,l_quote_asset_rec.end_of_term_value_default);
3651 l_klev_fin_rec.residual_percentage := NULL;
3652 ELSE
3653 l_klev_fin_rec.residual_value := NULL;
3654 l_klev_fin_rec.residual_percentage := nvl(l_quote_asset_rec.end_of_term_value,l_quote_asset_rec.end_of_term_value_default);
3655 END IF;
3656
3657 l_talv_fa_rec.dnz_khr_id := l_clev_fin_rec.dnz_chr_id;
3658 l_talv_fa_rec.asset_number := l_quote_asset_rec.ASSET_NUMBER;
3659 l_talv_fa_rec.description := l_clev_fin_rec.item_description;
3660 l_talv_fa_rec.fa_location_id := NULL;
3661 l_talv_fa_rec.original_cost := l_quote_asset_rec.unit_cost;
3662 l_talv_fa_rec.current_units := l_quote_asset_rec.NUMBER_OF_UNITS;
3663 l_talv_fa_rec.model_number := l_quote_asset_rec.MODEL_NUMBER;
3664 l_talv_fa_rec.year_manufactured := l_quote_asset_rec.YEAR_MANUFACTURED;
3665 l_talv_fa_rec.manufacturer_name := l_quote_asset_rec.MANUFACTURER_NAME;
3666 l_talv_fa_rec.used_asset_yn := NULL;
3667 l_talv_fa_rec.fa_location_id := null;
3668 l_new_yn := 'Y';
3669 l_itiv_tbl(1).mfg_serial_number_yn := 'N';
3670 l_itiv_tbl(1).object_id1_new := l_quote_asset_rec.install_site_id;
3671 l_itiv_tbl(1).object_id2_new := '#';
3672 l_itiv_tbl(1).jtot_object_code_new := 'OKX_PARTYSITE';
3673
3674 -- call create_all_lines to create asset lines
3675 IF(l_debug_enabled='Y') THEN
3676 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_create_kle_pvt.create_all_line'
3677 ,'begin debug call create_all_line');
3678 END IF;
3679 okl_create_kle_pvt.create_all_line( p_api_version => p_api_version,
3680 p_init_msg_list => p_init_msg_list,
3681 x_return_status => x_return_status,
3682 x_msg_count => x_msg_count,
3683 x_msg_data => x_msg_data,
3684 p_new_yn => l_new_yn,
3685 p_asset_number => NULL,
3686 p_clev_fin_rec => l_clev_fin_rec,
3687 p_klev_fin_rec => l_klev_fin_rec,
3688 p_cimv_model_rec => l_cimv_model_rec,
3689 p_clev_fa_rec => l_clev_fa_rec,
3690 p_cimv_fa_rec => l_cimv_fa_rec,
3691 p_talv_fa_rec => l_talv_fa_rec,
3692 p_itiv_ib_tbl => l_itiv_tbl,
3693 x_clev_fin_rec => lx_clev_fin_rec,
3694 x_clev_model_rec => lx_clev_model_rec,
3695 x_clev_fa_rec => lx_clev_fa_rec,
3696 x_clev_ib_rec => lx_clev_ib_rec);
3697 IF(l_debug_enabled='Y') THEN
3698 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_create_kle_pvt.create_all_line'
3699 ,'end debug call create_all_line');
3700 END IF;
3701 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3702 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3703 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3704 RAISE OKL_API.G_EXCEPTION_ERROR;
3705 END IF;
3706 --populate quote contract asset id mapping table
3707 l_qte_cntrct_ast_tbl(l_ast_counter).qte_asset_id := l_quote_asset_rec.ID;
3708 l_qte_cntrct_ast_tbl(l_ast_counter).cntrct_asset_id := lx_clev_fin_rec.id;
3709 l_ast_counter := l_ast_counter+1;
3710 -- create addons lines
3711 IF(l_debug_enabled='Y') THEN
3712 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_addon'
3713 ,'begin debug call create_asset_addon');
3714 END IF;
3715 create_asset_addon(p_api_version => p_api_version,
3716 p_init_msg_list => p_init_msg_list,
3717 x_return_status => x_return_status,
3718 x_msg_count => x_msg_count,
3719 x_msg_data => x_msg_data,
3720 p_clev_fin_rec => lx_clev_fin_rec,
3721 p_asset_id => l_quote_asset_rec.ID);
3722
3723 IF(l_debug_enabled='Y') THEN
3724 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_addon'
3725 ,'end debug call create_asset_addon');
3726 END IF;
3727 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3728 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3729 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3730 RAISE OKL_API.G_EXCEPTION_ERROR;
3731 END IF;
3732 -- create the party as vendor for the supplier present on the asset
3733 IF l_quote_asset_rec.supplier_id IS NOT NULL THEN
3734 IF(l_debug_enabled='Y') THEN
3735 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3736 ,'begin debug call create_vendor');
3737 END IF;
3738
3739 create_vendor( p_api_version => p_api_version,
3740 p_init_msg_list => p_init_msg_list,
3741 x_return_status => x_return_status,
3742 x_msg_count => x_msg_count,
3743 x_msg_data => x_msg_data,
3744 p_chr_id => p_chr_id,
3745 p_cle_id => NULL,
3746 p_vendor_id => l_quote_asset_rec.supplier_id);
3747
3748 IF(l_debug_enabled='Y') THEN
3749 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3750 ,'end debug call create_vendor');
3751 END IF;
3752 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3753 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3754 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3755 RAISE OKL_API.G_EXCEPTION_ERROR;
3756 END IF;
3757 IF(l_debug_enabled='Y') THEN
3758 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3759 ,'begin debug call create_vendor');
3760 END IF;
3761 create_vendor( p_api_version => p_api_version,
3762 p_init_msg_list => p_init_msg_list,
3763 x_return_status => x_return_status,
3764 x_msg_count => x_msg_count,
3765 x_msg_data => x_msg_data,
3766 p_chr_id => p_chr_id,
3767 p_cle_id => lx_clev_model_rec.id,
3768 p_vendor_id => l_quote_asset_rec.supplier_id);
3769
3770 IF(l_debug_enabled='Y') THEN
3771 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_vendor'
3772 ,'end debug call create_vendor');
3773 END IF;
3774 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3776 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3777 RAISE OKL_API.G_EXCEPTION_ERROR;
3778 END IF;
3779 END IF;
3780
3781 /*
3782 -- Start : Commented by rravikir for bug#6707125
3783
3784 -- Procedure create_asset_subsidy is now invoked from
3785 -- create_contract prodecure after creation of Asset Lines
3786 -- and Fee Lines
3787
3788 -- create subsidy lines
3789 IF(l_debug_enabled='Y') THEN
3790 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_subsidy'
3791 ,'begin debug call create_asset_subsidy');
3792 END IF;
3793 create_asset_subsidy( p_api_version => p_api_version,
3794 p_init_msg_list => p_init_msg_list,
3795 x_return_status => x_return_status,
3796 x_msg_count => x_msg_count,
3797 x_msg_data => x_msg_data,
3798 p_clev_fin_rec => lx_clev_fin_rec,
3799 p_asset_id => l_quote_asset_rec.ID,
3800 p_chr_id => p_chr_id);
3801
3802 IF(l_debug_enabled='Y') THEN
3803 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_subsidy'
3804 ,'end debug call create_asset_subsidy');
3805 END IF;
3806 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3807 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3808 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3809 RAISE OKL_API.G_EXCEPTION_ERROR;
3810 END IF;
3811
3812 End : Commented by rravikir for bug#6707125
3813 */
3814
3815 -- create down payment
3816 IF(l_debug_enabled='Y') THEN
3817 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_down_payment'
3818 ,'begin debug call create_asset_down_payment');
3819 END IF;
3820 create_asset_down_payment( p_api_version => p_api_version,
3821 p_init_msg_list => p_init_msg_list,
3822 x_return_status => x_return_status,
3823 x_msg_count => x_msg_count,
3824 x_msg_data => x_msg_data,
3825 p_clev_fin_rec => lx_clev_fin_rec,
3826 p_asset_id => l_quote_asset_rec.ID);
3827
3828 IF(l_debug_enabled='Y') THEN
3829 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_down_payment'
3830 ,'end debug call create_asset_down_payment');
3831 END IF;
3832 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3833 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3834 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3835 RAISE OKL_API.G_EXCEPTION_ERROR;
3836 END IF;
3837 -- create trade in
3838 IF(l_debug_enabled='Y') THEN
3839 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_tradein'
3840 ,'begin debug call create_asset_tradein');
3841 END IF;
3842
3843 create_asset_tradein( p_api_version => p_api_version,
3844 p_init_msg_list => p_init_msg_list,
3845 x_return_status => x_return_status,
3846 x_msg_count => x_msg_count,
3847 x_msg_data => x_msg_data,
3848 p_clev_fin_rec => lx_clev_fin_rec,
3849 p_asset_id => l_quote_asset_rec.ID);
3850
3851 IF(l_debug_enabled='Y') THEN
3852 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_tradein'
3853 ,'end debug call create_asset_tradein');
3854 END IF;
3855 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3857 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3858 RAISE OKL_API.G_EXCEPTION_ERROR;
3859 END IF;
3860 --create asset rent payments
3861 l_pymnt_counter := 0;
3862 l_payment_levels_tbl.DELETE;
3863 FOR l_asset_payment_rec IN c_get_asset_payment_dtls(l_quote_asset_rec.ID) LOOP
3864 l_payment_levels_tbl(l_pymnt_counter).START_DATE := l_asset_payment_rec.START_DATE;
3865 l_payment_levels_tbl(l_pymnt_counter).PERIODS := l_asset_payment_rec.NUMBER_OF_PERIODS;
3866 l_payment_levels_tbl(l_pymnt_counter).AMOUNT := l_asset_payment_rec.AMOUNT;
3867 l_payment_levels_tbl(l_pymnt_counter).STUB_DAYS := l_asset_payment_rec.STUB_DAYS;
3868 l_payment_levels_tbl(l_pymnt_counter).STUB_AMOUNT := l_asset_payment_rec.STUB_AMOUNT;
3869 l_payment_levels_tbl(l_pymnt_counter).PAYMENT_TYPE_ID := l_asset_payment_rec.PAYMENT_TYPE_ID;
3870 l_payment_levels_tbl(l_pymnt_counter).FREQUENCY_CODE := l_asset_payment_rec.FREQUENCY_CODE;
3871 l_payment_levels_tbl(l_pymnt_counter).ARREARS_YN := l_asset_payment_rec.ARREARS_YN;
3872 l_pymnt_counter := l_pymnt_counter + 1;
3873 END LOOP;
3874 -- create EPT payment
3875 IF l_payment_levels_tbl.COUNT > 0 THEN
3876 IF(l_debug_enabled='Y') THEN
3877 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3878 ,'begin call create_payment_plans');
3879 END IF;
3880 create_payment_plans(p_api_version => p_api_version,
3881 p_init_msg_list => p_init_msg_list,
3882 x_return_status => x_return_status,
3883 x_msg_count => x_msg_count,
3884 x_msg_data => x_msg_data,
3885 p_transaction_control => OKL_API.G_FALSE,
3886 p_cle_id => lx_clev_fin_rec.ID,
3887 p_chr_id => l_clev_fin_rec.dnz_chr_id ,
3888 p_payment_type_id => l_payment_levels_tbl(0).PAYMENT_TYPE_ID,
3889 p_payment_frequency => l_payment_levels_tbl(0).FREQUENCY_CODE,
3890 p_payment_arrears => l_payment_levels_tbl(0).ARREARS_YN,
3891 p_payment_structure => NULL,
3892 p_rate_type => NULL,
3893 p_payment_levels_tbl => l_payment_levels_tbl);
3894 IF(l_debug_enabled='Y') THEN
3895 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3896 ,'end debug call create_payment_plans');
3897 END IF;
3898 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3899 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3900 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3901 RAISE OKL_API.G_EXCEPTION_ERROR;
3902 END IF;
3903 END IF;
3904
3905 --create asset billed down payment details
3906 l_pymnt_counter := 0;
3907 l_payment_levels_tbl.DELETE;
3908 FOR l_asset_payment_rec IN c_get_asset_dppayment_dtls(l_quote_asset_rec.ID) LOOP
3909 l_payment_levels_tbl(l_pymnt_counter).START_DATE := l_asset_payment_rec.START_DATE;
3910 l_payment_levels_tbl(l_pymnt_counter).PERIODS := l_asset_payment_rec.NUMBER_OF_PERIODS;
3911 l_payment_levels_tbl(l_pymnt_counter).AMOUNT := l_asset_payment_rec.AMOUNT;
3912 l_payment_levels_tbl(l_pymnt_counter).STUB_DAYS := l_asset_payment_rec.STUB_DAYS;
3913 l_payment_levels_tbl(l_pymnt_counter).STUB_AMOUNT := l_asset_payment_rec.STUB_AMOUNT;
3914 l_payment_levels_tbl(l_pymnt_counter).PAYMENT_TYPE_ID := l_asset_payment_rec.PAYMENT_TYPE_ID;
3915 l_payment_levels_tbl(l_pymnt_counter).FREQUENCY_CODE := l_asset_payment_rec.FREQUENCY_CODE;
3916 l_payment_levels_tbl(l_pymnt_counter).ARREARS_YN := l_asset_payment_rec.ARREARS_YN;
3917 l_pymnt_counter := l_pymnt_counter + 1;
3918 END LOOP;
3919
3920 IF l_payment_levels_tbl.COUNT > 0 THEN
3921 IF(l_debug_enabled='Y') THEN
3922 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3923 ,'begin call create_payment_plans');
3924 END IF;
3925 create_payment_plans(p_api_version => p_api_version,
3926 p_init_msg_list => p_init_msg_list,
3927 x_return_status => x_return_status,
3928 x_msg_count => x_msg_count,
3929 x_msg_data => x_msg_data,
3930 p_transaction_control => OKL_API.G_FALSE,
3931 p_cle_id => lx_clev_fin_rec.ID,
3932 p_chr_id => l_clev_fin_rec.dnz_chr_id ,
3933 p_payment_type_id => l_payment_levels_tbl(0).PAYMENT_TYPE_ID,
3934 p_payment_frequency => l_payment_levels_tbl(0).FREQUENCY_CODE,
3935 p_payment_arrears => l_payment_levels_tbl(0).ARREARS_YN,
3936 p_payment_structure => NULL,
3937 p_rate_type => NULL,
3938 p_payment_levels_tbl => l_payment_levels_tbl);
3939 IF(l_debug_enabled='Y') THEN
3940 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3941 ,'end debug call create_payment_plans');
3942 END IF;
3943 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3944 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3945 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3946 RAISE OKL_API.G_EXCEPTION_ERROR;
3947 END IF;
3948 END IF;
3949
3950 --create asset estimated property tax payments
3951 l_pymnt_counter := 0;
3952 l_payment_levels_tbl.DELETE;
3953 FOR l_asset_payment_rec IN c_get_asset_eptpayment_dtls(l_quote_asset_rec.ID) LOOP
3954 l_payment_levels_tbl(l_pymnt_counter).START_DATE := l_asset_payment_rec.START_DATE;
3955 l_payment_levels_tbl(l_pymnt_counter).PERIODS := l_asset_payment_rec.NUMBER_OF_PERIODS;
3956 l_payment_levels_tbl(l_pymnt_counter).AMOUNT := l_asset_payment_rec.AMOUNT;
3957 l_payment_levels_tbl(l_pymnt_counter).STUB_DAYS := l_asset_payment_rec.STUB_DAYS;
3958 l_payment_levels_tbl(l_pymnt_counter).STUB_AMOUNT := l_asset_payment_rec.STUB_AMOUNT;
3959 l_payment_levels_tbl(l_pymnt_counter).PAYMENT_TYPE_ID := l_asset_payment_rec.PAYMENT_TYPE_ID;
3960 l_payment_levels_tbl(l_pymnt_counter).FREQUENCY_CODE := l_asset_payment_rec.FREQUENCY_CODE;
3961 l_payment_levels_tbl(l_pymnt_counter).ARREARS_YN := l_asset_payment_rec.ARREARS_YN;
3962 l_pymnt_counter := l_pymnt_counter + 1;
3963 END LOOP;
3964 -- create EPT payment
3965 IF l_payment_levels_tbl.COUNT > 0 THEN
3966 IF(l_debug_enabled='Y') THEN
3967 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3968 ,'begin call create_payment_plans');
3969 END IF;
3970 create_payment_plans(p_api_version => p_api_version,
3971 p_init_msg_list => p_init_msg_list,
3972 x_return_status => x_return_status,
3973 x_msg_count => x_msg_count,
3974 x_msg_data => x_msg_data,
3975 p_transaction_control => OKL_API.G_FALSE,
3976 p_cle_id => lx_clev_fin_rec.ID,
3977 p_chr_id => l_clev_fin_rec.dnz_chr_id ,
3978 p_payment_type_id => l_payment_levels_tbl(0).PAYMENT_TYPE_ID,
3979 p_payment_frequency => l_payment_levels_tbl(0).FREQUENCY_CODE,
3980 p_payment_arrears => l_payment_levels_tbl(0).ARREARS_YN,
3981 p_payment_structure => NULL,
3982 p_rate_type => NULL,
3983 p_payment_levels_tbl => l_payment_levels_tbl);
3984 IF(l_debug_enabled='Y') THEN
3985 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
3986 ,'end debug call create_payment_plans');
3987 END IF;
3988 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3989 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3990 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3991 RAISE OKL_API.G_EXCEPTION_ERROR;
3992 END IF;
3993 END IF;
3994 END LOOP;
3995
3996 --update contract header with total trade in amount and date
3997 FOR l_ti_amt_rec IN get_ti_amt(l_lapv_rec.QUOTE_ID) LOOP
3998 l_ti_amt := l_ti_amt_rec.total_tradein;
3999 END LOOP;
4000 FOR l_ti_des_rec IN get_ti_desc(l_lapv_rec.QUOTE_ID) LOOP
4001 l_ti_desc := l_ti_des_rec.description;
4002 END LOOP;
4003 IF l_ti_amt IS NOT NULL THEN
4004 IF(l_debug_enabled='Y') THEN
4005 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_tradein'
4006 ,'begin debug call create_asset_tradein');
4007 END IF;
4008 okl_la_tradein_pvt.update_contract( p_api_version => p_api_version,
4009 p_init_msg_list => p_init_msg_list,
4010 x_return_status => x_return_status,
4011 x_msg_count => x_msg_count,
4012 x_msg_data => x_msg_data,
4013 p_chr_id => l_chr_id,
4014 p_tradein_date => l_lapv_rec.expected_start_date,
4015 p_tradein_amount => l_ti_amt,
4016 p_tradein_desc => l_ti_desc);
4017
4018 IF(l_debug_enabled='Y') THEN
4019 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_tradein'
4020 ,'end debug call create_asset_tradein');
4021 END IF;
4022 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4023 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4024 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4025 RAISE OKL_API.G_EXCEPTION_ERROR;
4026 END IF;
4027 END IF;
4028 /*
4029 --create contract level payment
4030 l_pymnt_counter := 1;
4031 FOR l_quote_payment_rec IN c_get_quote_payment_dtls(l_lapv_rec.QUOTE_ID) LOOP
4032 l_pym_tbl(l_pymnt_counter).PERIOD := l_quote_payment_rec.NUMBER_OF_PERIODS;
4033 l_pym_tbl(l_pymnt_counter).AMOUNT := l_quote_payment_rec.AMOUNT;
4034 l_pym_tbl(l_pymnt_counter).STUB_DAYS := l_quote_payment_rec.STUB_DAYS;
4035 l_pym_tbl(l_pymnt_counter).STUB_AMOUNT := l_quote_payment_rec.STUB_AMOUNT;
4036 l_pym_tbl(l_pymnt_counter).UPDATE_TYPE := 'CREATE';
4037 l_pym_hdr_rec.ARREARS := l_quote_payment_rec.ARREARS_YN;
4038 l_pym_hdr_rec.frequency := l_quote_payment_rec.FREQUENCY_CODE;
4039 l_payment_type_id := l_quote_payment_rec.payment_type_id;
4040 l_pymnt_counter := l_pymnt_counter + 1;
4041 END LOOP;
4042 -- createcontract level payment
4043 IF l_pym_tbl.COUNT > 0 THEN
4044 IF(l_debug_enabled='Y') THEN
4045 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
4046 ,'begin call okl_la_payments_pvt.process_payment');
4047 END IF;
4048 okl_la_payments_pvt.process_payment(p_api_version => p_api_version,
4049 p_init_msg_list => p_init_msg_list,
4050 x_return_status => x_return_status,
4051 x_msg_count => x_msg_count,
4052 x_msg_data => x_msg_data,
4053 p_chr_id => l_chr_id ,
4054 p_service_fee_id => NULL,
4055 p_asset_id => NULL,
4056 p_payment_id => l_payment_type_id,
4057 p_pym_hdr_rec => l_pym_hdr_rec,
4058 p_pym_tbl => l_pym_tbl,
4059 p_update_type => 'UPDATE',
4060 x_rulv_tbl => lx_rulv_tbl);
4061 IF(l_debug_enabled='Y') THEN
4062 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_payment_plans'
4063 ,'end debug call okl_la_payments_pvt.process_payment');
4064 END IF;
4065 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4066 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4067 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4068 RAISE OKL_API.G_EXCEPTION_ERROR;
4069 END IF;
4070 END IF;
4071 */
4072 x_return_status := okc_api.G_RET_STS_SUCCESS;
4073 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
4074 ,x_msg_data => x_msg_data);
4075 EXCEPTION
4076 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4077 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4078 p_api_name => l_api_name,
4079 p_pkg_name => G_PKG_NAME,
4080 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4081 x_msg_count => x_msg_count,
4082 x_msg_data => x_msg_data,
4083 p_api_type => g_api_type);
4084 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4085 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4086 p_api_name => l_api_name,
4087 p_pkg_name => G_PKG_NAME,
4088 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4089 x_msg_count => x_msg_count,
4090 x_msg_data => x_msg_data,
4091 p_api_type => g_api_type);
4092 WHEN OTHERS THEN
4093 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4094 p_api_name => l_api_name,
4095 p_pkg_name => G_PKG_NAME,
4096 p_exc_name => 'OTHERS',
4097 x_msg_count => x_msg_count,
4098 x_msg_data => x_msg_data,
4099 p_api_type => g_api_type);
4100 END create_asset_lines;
4101 -------------------------------------------------------------------------------
4102 -- PROCEDURE create_rules
4103 -------------------------------------------------------------------------------
4104 -- Start of comments
4105 --
4106 -- Procedure Name : create_rules
4107 -- Description : This procedure is a wrapper that creates contract rules(Terms and Conditions) from lease application/quote header
4108 --
4109 -- Business Rules : this procedure is used to create a contract rules(Terms and Conditions) from lease application/quote header
4110 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
4111 -- : Lease Application Header party details
4112 -- Parameters :
4113 -- Version : 1.0
4114 -- History : 20-Jun-2005 SKGAUTAM created
4115 -- End of comments
4116 PROCEDURE create_rules(p_api_version IN NUMBER,
4117 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4118 x_return_status OUT NOCOPY VARCHAR2,
4119 x_msg_count OUT NOCOPY NUMBER,
4120 x_msg_data OUT NOCOPY VARCHAR2,
4121 p_chr_id IN NUMBER,
4122 p_lapv_rec IN c_get_leaseapp_hdr%ROWTYPE)IS
4123 -- Variables Declarations
4124 l_api_version CONSTANT NUMBER DEFAULT 1.0;
4125 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_RUL';
4126 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4127 l_debug_enabled VARCHAR2(10);
4128 lx_rgp_id NUMBER;
4129 l_contract_temp_id NUMBER;
4130 l_chr_id NUMBER;
4131 l_lapv_rec c_get_leaseapp_hdr%ROWTYPE;
4132
4133 --rule rec
4134 lp_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
4135 lx_rgpv_rec OKL_RULE_PUB.rgpv_rec_type;
4136 lp_rgpv_tbl OKL_RULE_PUB.rgpv_tbl_type;
4137 lx_rgpv_tbl OKL_RULE_PUB.rgpv_tbl_type;
4138 lp_rulv_rec OKL_RULE_PUB.rulv_rec_type;
4139 lx_rulv_rec OKL_RULE_PUB.rulv_rec_type;
4140 lp_rulv_tbl OKL_RULE_PUB.rulv_tbl_type;
4141 lx_rulv_tbl OKL_RULE_PUB.rulv_tbl_type;
4142 lp_rgr_rec OKL_RGRP_RULES_PROCESS_PVT.rgr_rec_type;
4143 lp_rgr_tbl OKL_RGRP_RULES_PROCESS_PVT.rgr_tbl_type;
4144 i NUMBER;
4145 --Cursor declaration
4146 --Get the contract template id associated with lease app template
4147 CURSOR c_get_contract_temp(p_lap_id IN okl_lease_applications_v.ID%TYPE) IS
4148 SELECT olav.ID,olvv.CONTRACT_TEMPLATE_ID
4149 FROM okl_leaseapp_templ_versions_v olvv,
4150 okl_lease_applications_v olav
4151 WHERE olav.leaseapp_template_id = olvv.ID
4152 AND olav.ID = p_lap_id;
4153
4154 CURSOR c_rgpv (p_chr_tmp_id okl_leaseapp_templ_versions_v.CONTRACT_TEMPLATE_ID%TYPE)IS
4155 SELECT rgp.id
4156 FROM okc_rule_groups_b rgp, okc_subclass_rg_defs rg_defs
4157 WHERE rgp.dnz_chr_id = p_chr_tmp_id
4158 AND rgp.rgd_code = rg_defs.rgd_code
4159 AND rg_defs.scs_code = 'LEASE'
4160 AND rgp.cle_id IS NULL
4161 AND rgp.rgd_code NOT IN ('LATOWN','CURRENCY');
4162 BEGIN
4163 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4164 -- check for logging on PROCEDURE level
4165 l_debug_enabled := okl_debug_pub.check_log_enabled;
4166 -- call START_ACTIVITY to create savepoint, check compatibility
4167 -- and initialize message list
4168 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
4169 ,p_pkg_name => G_PKG_NAME
4170 ,p_init_msg_list => p_init_msg_list
4171 ,l_api_version => l_api_version
4172 ,p_api_version => p_api_version
4173 ,p_api_type => g_api_type
4174 ,x_return_status => x_return_status);
4175 -- check if activity started successfully
4176 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4177 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4178 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4179 RAISE OKL_API.G_EXCEPTION_ERROR;
4180 END IF;
4181 l_chr_id := p_chr_id;
4182 l_lapv_rec := p_lapv_rec;
4183 -- create rules
4184 OPEN c_get_contract_temp(l_lapv_rec.ID);
4185 FETCH c_get_contract_temp INTO l_lapv_rec.ID,l_contract_temp_id;
4186 CLOSE c_get_contract_temp;
4187 IF l_lapv_rec.ID IS NULL THEN
4188 OKL_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'quote_chr_id_not_found');
4189 x_return_status := OKL_API.g_ret_sts_error;
4190 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4191 END IF;
4192 IF l_contract_temp_id IS NOT NULL THEN
4193 FOR l_c_rgpv IN c_rgpv(l_contract_temp_id) LOOP
4194 IF(l_debug_enabled='Y') THEN
4195 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_COPY_CONTRACT_PUB.copy_rules'
4196 ,'begin debug call copy_rules');
4197 END IF;
4198 OKL_COPY_CONTRACT_PUB.copy_rules (p_api_version => p_api_version,
4199 p_init_msg_list => p_init_msg_list,
4200 x_return_status => x_return_status,
4201 x_msg_count => x_msg_count,
4202 x_msg_data => x_msg_data,
4203 p_rgp_id => l_c_rgpv.id,
4204 p_cle_id => NULL,
4205 p_chr_id => l_chr_id, -- the new generated contract header id
4206 p_to_template_yn => 'N',
4207 x_rgp_id => lx_rgp_id);
4208 IF(l_debug_enabled='Y') THEN
4209 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_COPY_CONTRACT_PUB.copy_rules'
4210 ,'end debug call copy_rules');
4211 END IF;
4212 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4213 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4214 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4215 RAISE OKL_API.G_EXCEPTION_ERROR;
4216 END IF;
4217 END LOOP;
4218 END IF;
4219 i := 1;
4220 --create property trax rule if required.
4221 IF (l_lapv_rec.PROPERTY_TAX_APPLICABLE IS NOT NULL AND
4222 l_lapv_rec.PROPERTY_TAX_BILLING_TYPE IS NOT NULL )
4223 THEN
4224 lp_rgr_tbl(i).rgd_code := 'LAHDTX';
4225 lp_rgr_tbl(i).object_version_number := '1.0';
4226 lp_rgr_tbl(i).sfwt_flag := OKC_API.G_FALSE;
4227 lp_rgr_tbl(i).std_template_yn := 'N';
4228 lp_rgr_tbl(i).warn_yn := 'N';
4229 lp_rgr_tbl(i).template_yn := 'N';
4230 lp_rgr_tbl(i).rule_information_category := 'LAPRTX';
4231 lp_rgr_tbl(i).rule_information1 := l_lapv_rec.PROPERTY_TAX_APPLICABLE;
4232 lp_rgr_tbl(i).rule_information2 := 'N';
4233 lp_rgr_tbl(i).rule_information3 := l_lapv_rec.PROPERTY_TAX_BILLING_TYPE;
4234 i := i+1;
4235 END IF;
4236 --create sales tax rule if required
4237 IF l_lapv_rec.UPFRONT_TAX_TREATMENT IS NOT NULL AND
4238 l_lapv_rec.UPFRONT_TAX_STREAM_TYPE IS NOT NULL
4239 THEN
4240 lp_rgr_tbl(i).rgd_code := 'LAHDTX';
4241 lp_rgr_tbl(i).object_version_number := '1.0';
4242 lp_rgr_tbl(i).sfwt_flag := OKC_API.G_FALSE;
4243 lp_rgr_tbl(i).std_template_yn := 'N';
4244 lp_rgr_tbl(i).warn_yn := 'N';
4245 lp_rgr_tbl(i).template_yn := 'N';
4246 lp_rgr_tbl(i).rule_information_category := 'LASTPR';
4247 lp_rgr_tbl(i).rule_information1 := l_lapv_rec.UPFRONT_TAX_TREATMENT;
4248 lp_rgr_tbl(i).rule_information3 := l_lapv_rec.UPFRONT_TAX_STREAM_TYPE;
4249 --Bug 5908845. eBTax Enhancement Project
4250 lp_rgr_tbl(i).rule_information5 := l_lapv_rec.LINE_INTENDED_USE;
4251 -- End Bug 5908845. eBTax Enhancement Project
4252 i := i+1;
4253 END IF;
4254 --copy tax parameters
4255 IF (l_lapv_rec.TRANSFER_OF_TITLE IS NOT NULL OR
4256 l_lapv_rec.AGE_OF_EQUIPMENT IS NOT NULL OR
4257 l_lapv_rec.PURCHASE_OF_LEASE IS NOT NULL OR
4258 l_lapv_rec.SALE_AND_LEASE_BACK IS NOT NULL OR
4259 l_lapv_rec.INTEREST_DISCLOSED IS NOT NULL)
4260 THEN
4261 lp_rgr_tbl(i).rgd_code := 'LAHDTX';
4262 lp_rgr_tbl(i).object_version_number := '1.0';
4263 lp_rgr_tbl(i).sfwt_flag := OKC_API.G_FALSE;
4264 lp_rgr_tbl(i).std_template_yn := 'N';
4265 lp_rgr_tbl(i).warn_yn := 'N';
4266 lp_rgr_tbl(i).template_yn := 'N';
4267 lp_rgr_tbl(i).rule_information_category := 'LASTCL';
4268 lp_rgr_tbl(i).rule_information1 := 'N';
4269 lp_rgr_tbl(i).rule_information2 := l_lapv_rec.INTEREST_DISCLOSED;
4270 lp_rgr_tbl(i).rule_information3 := l_lapv_rec.TRANSFER_OF_TITLE;
4271 lp_rgr_tbl(i).rule_information4 := l_lapv_rec.SALE_AND_LEASE_BACK;
4272 lp_rgr_tbl(i).rule_information5 := l_lapv_rec.PURCHASE_OF_LEASE;
4273 lp_rgr_tbl(i).rule_information7 := l_lapv_rec.AGE_OF_EQUIPMENT;
4274 i := i+1;
4275 END IF;
4276
4277 lp_rgr_tbl(i).rgd_code := 'LAHDTX';
4278 lp_rgr_tbl(i).object_version_number := '1.0';
4279 -- create all rules under this rule group
4280 lp_rgr_tbl(i).sfwt_flag := OKC_API.G_FALSE;
4281 lp_rgr_tbl(i).std_template_yn := 'N';
4282 lp_rgr_tbl(i).warn_yn := 'N';
4283 lp_rgr_tbl(i).template_yn := 'N';
4284 lp_rgr_tbl(i).rule_information_category := 'LAMETX';
4285 lp_rgr_tbl(i).rule_information1 := 'N';
4286 i := i+1;
4287
4288 lp_rgr_tbl(i).rgd_code := 'LAHDTX';
4289 lp_rgr_tbl(i).object_version_number := '1.0';
4290 -- create all rules under this rule group
4291 lp_rgr_tbl(i).sfwt_flag := OKC_API.G_FALSE;
4292 lp_rgr_tbl(i).std_template_yn := 'N';
4293 lp_rgr_tbl(i).warn_yn := 'N';
4294 lp_rgr_tbl(i).template_yn := 'N';
4295 lp_rgr_tbl(i).rule_information_category := 'LAAUTX';
4296 lp_rgr_tbl(i).rule_information1 := 'N';
4297
4298 IF(l_debug_enabled='Y') THEN
4299 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_RGRP_RULES_PROCESS_PUB.process_rule_group_rules'
4300 ,'begin debug call process_rule_group_rules');
4301 END IF;
4302 OKL_RGRP_RULES_PROCESS_PUB.process_rule_group_rules( p_api_version => p_api_version,
4303 p_init_msg_list => p_init_msg_list,
4304 x_return_status => x_return_status,
4305 x_msg_count => x_msg_count,
4306 x_msg_data => x_msg_data,
4307 p_chr_id => l_chr_id,
4308 p_line_id => NULL,
4309 p_cpl_id => NULL,
4310 p_rrd_id => NULL,
4311 p_rgr_tbl => lp_rgr_tbl);
4312 IF(l_debug_enabled='Y') THEN
4313 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_RGRP_RULES_PROCESS_PUB.process_rule_group_rules'
4314 ,'end debug call process_rule_group_rules');
4315 END IF;
4316 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4317 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4318 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4319 RAISE OKL_API.G_EXCEPTION_ERROR;
4320 END IF;
4321
4322 x_return_status := okc_api.G_RET_STS_SUCCESS;
4323 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
4324 ,x_msg_data => x_msg_data);
4325 EXCEPTION
4326 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4327 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4328 p_api_name => l_api_name,
4329 p_pkg_name => G_PKG_NAME,
4330 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4331 x_msg_count => x_msg_count,
4332 x_msg_data => x_msg_data,
4333 p_api_type => g_api_type);
4334 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4335 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4336 p_api_name => l_api_name,
4337 p_pkg_name => G_PKG_NAME,
4338 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4339 x_msg_count => x_msg_count,
4340 x_msg_data => x_msg_data,
4341 p_api_type => g_api_type);
4342 WHEN OTHERS THEN
4343 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4344 p_api_name => l_api_name,
4345 p_pkg_name => G_PKG_NAME,
4346 p_exc_name => 'OTHERS',
4347 x_msg_count => x_msg_count,
4348 x_msg_data => x_msg_data,
4349 p_api_type => g_api_type);
4350 END create_rules;
4351 -------------------------------------------------------------------------------
4352 -- PROCEDURE create_party_roles
4353 -------------------------------------------------------------------------------
4354 -- Start of comments
4355 --
4356 -- Procedure Name : create_lease_app_template
4357 -- Description : This procedure is a wrapper that creates t contract party roles from lease application/quote header
4358 --
4359 -- Business Rules : this procedure is used to create a contract party roles from lease application/quote header
4360 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
4361 -- : Lease Application Header party details
4362 -- Parameters :
4363 -- Version : 1.0
4364 -- History : 20-Jun-2005 SKGAUTAM created
4365 -- End of comments
4366 PROCEDURE create_party_roles(p_api_version IN NUMBER,
4367 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4368 x_return_status OUT NOCOPY VARCHAR2,
4369 x_msg_count OUT NOCOPY NUMBER,
4370 x_msg_data OUT NOCOPY VARCHAR2,
4371 p_chr_id IN NUMBER,
4372 p_lapv_rec IN c_get_leaseapp_hdr%ROWTYPE)IS
4373 -- Variables Declarations
4374 l_api_version CONSTANT NUMBER DEFAULT 1.0;
4375 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_PTY_RLS';
4376 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4377 l_debug_enabled VARCHAR2(10);
4378 l_chr_id NUMBER;
4379 l_access_level OKC_ROLE_SOURCES.access_level%TYPE;
4380 row_count NUMBER DEFAULT 0;
4381 l_cplv_id NUMBER;
4382 l_party_name VARCHAR2(200);
4383 l_party_desc VARCHAR2(2000);
4384 l_lapv_rec c_get_leaseapp_hdr%ROWTYPE;
4385 -- Record/Table Type Declarations
4386 --party rec
4387 lp_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
4388 lx_cplv_rec okl_okc_migration_pvt.cplv_rec_type;
4389 --party contacts rec
4390 lp_ctcv_rec OKC_CONTRACT_PARTY_PUB.ctcv_rec_type;
4391 lx_ctcv_rec OKC_CONTRACT_PARTY_PUB.ctcv_rec_type;
4392
4393 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
4394 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
4395 --Check for the existing party roles
4396 CURSOR check_party_csr(p_chr_id NUMBER,p_customer_id NUMBER) IS
4397 SELECT COUNT(1)
4398 FROM okc_k_party_roles_v
4399 WHERE dnz_chr_id = p_chr_id
4400 AND chr_id = p_chr_id
4401 AND rle_code = G_RLE_CODE
4402 AND object1_id1 = p_customer_id;
4403 CURSOR role_csr(p_rle_code VARCHAR2) IS
4404 SELECT access_level
4405 FROM OKC_ROLE_SOURCES
4406 WHERE rle_code = p_rle_code
4407 AND buy_or_sell = 'S';
4408 --Get the vendor id
4409 CURSOR c_cplv (p_khr_id IN okl_lease_applications_v.PROGRAM_AGREEMENT_ID%TYPE) IS
4410 SELECT cpl.id, cpl.object1_id1
4411 FROM okc_k_party_roles_b cpl, okc_subclass_roles ROLES
4412 WHERE dnz_chr_id = p_khr_id
4413 AND cpl.rle_code = ROLES.rle_code
4414 AND cpl.rle_code = 'OKL_VENDOR'
4415 AND ROLES.scs_code = 'LEASE'
4416 AND cpl.cle_id IS NULL;
4417 BEGIN
4418 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4419 -- check for logging on PROCEDURE level
4420 l_debug_enabled := okl_debug_pub.check_log_enabled;
4421 -- call START_ACTIVITY to create savepoint, check compatibility
4422 -- and initialize message list
4423 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
4424 ,p_pkg_name => G_PKG_NAME
4425 ,p_init_msg_list => p_init_msg_list
4426 ,l_api_version => l_api_version
4427 ,p_api_version => p_api_version
4428 ,p_api_type => g_api_type
4429 ,x_return_status => x_return_status);
4430 -- check if activity started successfully
4431 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4432 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4433 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4434 RAISE OKL_API.G_EXCEPTION_ERROR;
4435 END IF;
4436 l_chr_id := p_chr_id;
4437 l_lapv_rec := p_lapv_rec;
4438 -- now we attach the party to the header
4439 lp_cplv_rec.object_version_number := 1.0;
4440 lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
4441 lp_cplv_rec.dnz_chr_id := l_chr_id;
4442 lp_cplv_rec.chr_id := l_chr_id;
4443 lp_cplv_rec.cle_id := NULL;
4444 lp_cplv_rec.object1_id1 := l_lapv_rec.PROSPECT_ID;
4445 lp_cplv_rec.object1_id2 := '#';
4446 lp_cplv_rec.jtot_object1_code := 'OKX_PARTY';
4447 lp_cplv_rec.rle_code := G_RLE_CODE;
4448
4449 OPEN check_party_csr(l_chr_id,l_lapv_rec.PROSPECT_ID);
4450 FETCH check_party_csr INTO row_count;
4451 CLOSE check_party_csr;
4452 IF row_count = 1 THEN
4453 x_return_status := OKC_API.g_ret_sts_error;
4454 OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
4455 RAISE OKL_API.G_EXCEPTION_ERROR;
4456 END IF;
4457
4458 -- Validate the JTOT Object code, ID1 and ID2
4459 OPEN role_csr(lp_cplv_rec.rle_code);
4460 FETCH role_csr INTO l_access_level;
4461 CLOSE role_csr;
4462 IF (l_access_level = 'S') THEN
4463 IF(l_debug_enabled='Y') THEN
4464 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4465 ,'begin debug call VALIDATE_ROLE_JTOT');
4466 END IF;
4467 okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version => p_api_version,
4468 p_init_msg_list => OKC_API.G_FALSE,
4469 x_return_status => x_return_status,
4470 x_msg_count => x_msg_count,
4471 x_msg_data => x_msg_data,
4472 p_object_name => lp_cplv_rec.jtot_object1_code,
4473 p_id1 => lp_cplv_rec.object1_id1,
4474 p_id2 => lp_cplv_rec.object1_id2);
4475 IF(l_debug_enabled='Y') THEN
4476 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4477 ,'end debug call VALIDATE_ROLE_JTOT');
4478 END IF;
4479 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4480 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4481 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4482 RAISE OKL_API.G_EXCEPTION_ERROR;
4483 END IF;
4484 END IF;
4485 IF(l_debug_enabled='Y') THEN
4486 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4487 ,'begin debug call create_k_party_role');
4488 END IF;
4489
4490 lp_kplv_rec.validate_dff_yn := 'Y';
4491
4492 okl_k_party_roles_pvt.create_k_party_role(
4493 p_api_version => p_api_version,
4494 p_init_msg_list => p_init_msg_list,
4495 x_return_status => x_return_status,
4496 x_msg_count => x_msg_count,
4497 x_msg_data => x_msg_data,
4498 p_cplv_rec => lp_cplv_rec,
4499 x_cplv_rec => lx_cplv_rec,
4500 p_kplv_rec => lp_kplv_rec,
4501 x_kplv_rec => lx_kplv_rec);
4502 IF(l_debug_enabled='Y') THEN
4503 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4504 ,'end debug call create_k_party_role');
4505 END IF;
4506 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4507 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4508 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4509 RAISE OKL_API.G_EXCEPTION_ERROR;
4510 END IF;
4511 -- Create Lessor
4512 -- now we attach the party to the header
4513 lp_cplv_rec.object_version_number := 1.0;
4514 lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
4515 lp_cplv_rec.dnz_chr_id := l_chr_id;
4516 lp_cplv_rec.chr_id := l_chr_id;
4517 lp_cplv_rec.cle_id := NULL;
4518 lp_cplv_rec.object1_id1 := l_lapv_rec.ORG_ID;
4519 lp_cplv_rec.object1_id2 := '#';
4520 lp_cplv_rec.jtot_object1_code := 'OKX_OPERUNIT';
4521 lp_cplv_rec.rle_code := 'LESSOR';
4522
4523 OPEN check_party_csr(l_chr_id,l_lapv_rec.ORG_ID);
4524 FETCH check_party_csr INTO row_count;
4525 CLOSE check_party_csr;
4526 IF row_count = 1 THEN
4527 x_return_status := OKC_API.g_ret_sts_error;
4528 OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
4529 RAISE OKL_API.G_EXCEPTION_ERROR;
4530 END IF;
4531 --Validate the JTOT Object code, ID1 and ID2
4532 OPEN role_csr(lp_cplv_rec.rle_code);
4533 FETCH role_csr INTO l_access_level;
4534 CLOSE role_csr;
4535 IF (l_access_level = 'S') THEN
4536 IF(l_debug_enabled='Y') THEN
4537 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4538 ,'begin debug call VALIDATE_ROLE_JTOT');
4539 END IF;
4540 okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version => p_api_version,
4541 p_init_msg_list => OKC_API.G_FALSE,
4542 x_return_status => x_return_status,
4543 x_msg_count => x_msg_count,
4544 x_msg_data => x_msg_data,
4545 p_object_name => lp_cplv_rec.jtot_object1_code,
4546 p_id1 => lp_cplv_rec.object1_id1,
4547 p_id2 => lp_cplv_rec.object1_id2);
4548 IF(l_debug_enabled='Y') THEN
4549 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4550 ,'end debug call VALIDATE_ROLE_JTOT');
4551 END IF;
4552 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4553 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4554 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4555 RAISE OKL_API.G_EXCEPTION_ERROR;
4556 END IF;
4557 END IF;
4558 IF(l_debug_enabled='Y') THEN
4559 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4560 ,'begin debug call create_k_party_role');
4561 END IF;
4562
4563 lp_kplv_rec.validate_dff_yn := 'Y';
4564
4565 okl_k_party_roles_pvt.create_k_party_role(
4566 p_api_version => p_api_version,
4567 p_init_msg_list => p_init_msg_list,
4568 x_return_status => x_return_status,
4569 x_msg_count => x_msg_count,
4570 x_msg_data => x_msg_data,
4571 p_cplv_rec => lp_cplv_rec,
4572 x_cplv_rec => lx_cplv_rec,
4573 p_kplv_rec => lp_kplv_rec,
4574 x_kplv_rec => lx_kplv_rec);
4575 IF(l_debug_enabled='Y') THEN
4576 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4577 ,'end debug call create_k_party_role');
4578 END IF;
4579 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4581 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4582 RAISE OKL_API.G_EXCEPTION_ERROR;
4583 END IF;
4584 l_cplv_id := lx_cplv_rec.ID;
4585 lp_ctcv_rec.object_version_number := 1.0;
4586 lp_ctcv_rec.cpl_id := l_cplv_id;
4587 lp_ctcv_rec.cro_code := 'SALESPERSON';
4588 lp_ctcv_rec.dnz_chr_id := l_chr_id;
4589 lp_ctcv_rec.object1_id1 := l_lapv_rec.SALES_REP_ID;
4590 lp_ctcv_rec.object1_id2 := '#';
4591 lp_ctcv_rec.jtot_object1_code := 'OKX_SALEPERS';
4592 IF(l_debug_enabled='Y') THEN
4593 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKC_CONTRACT_PARTY_PUB.create_contact'
4594 ,'begin debug call create_contact');
4595 END IF;
4596 OKC_CONTRACT_PARTY_PUB.create_contact(p_api_version => p_api_version,
4597 p_init_msg_list => p_init_msg_list,
4598 x_return_status => l_return_status,
4599 x_msg_count => x_msg_count,
4600 x_msg_data => x_msg_data,
4601 p_ctcv_rec => lp_ctcv_rec,
4602 x_ctcv_rec => lx_ctcv_rec);
4603 IF(l_debug_enabled='Y') THEN
4604 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKC_CONTRACT_PARTY_PUB.create_contact'
4605 ,'end debug call create_contact');
4606 END IF;
4607 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4608 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4609 x_return_status := l_return_status;
4610 RAISE G_EXCEPTION_HALT_VALIDATION;
4611 ELSE
4612 x_return_status := OKC_API.G_RET_STS_WARNING;
4613 okc_util.get_name_desc_from_jtfv(p_object_code => lx_cplv_rec.jtot_object1_code,
4614 p_id1 => lx_cplv_rec.object1_id1,
4615 p_id2 => lx_cplv_rec.object1_id2,
4616 x_name => l_party_name,
4617 x_description => l_party_desc);
4618 OKC_API.set_message(G_APP_NAME,'OKC_CONTACT_NOT_COPIED','PARTY_NAME',l_party_name);
4619 END IF;
4620 END IF;
4621 -- create vendor
4622 FOR l_c_cplv IN c_cplv(l_lapv_rec.PROGRAM_AGREEMENT_ID) LOOP
4623 lp_cplv_rec.object_version_number := 1.0;
4624 lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
4625 lp_cplv_rec.dnz_chr_id := l_chr_id;
4626 lp_cplv_rec.chr_id := l_chr_id;
4627 lp_cplv_rec.cle_id := NULL;
4628 lp_cplv_rec.object1_id1 := l_c_cplv.object1_id1;
4629 lp_cplv_rec.object1_id2 := '#';
4630 lp_cplv_rec.jtot_object1_code := 'OKX_VENDOR';
4631 lp_cplv_rec.rle_code := 'OKL_VENDOR';
4632
4633 OPEN check_party_csr(l_chr_id,l_c_cplv.object1_id1);
4634 FETCH check_party_csr INTO row_count;
4635 CLOSE check_party_csr;
4636 IF row_count = 1 THEN
4637 x_return_status := OKC_API.g_ret_sts_error;
4638 OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
4639 RAISE OKL_API.G_EXCEPTION_ERROR;
4640 END IF;
4641 --Validate the JTOT Object code, ID1 and ID2
4642 OPEN role_csr(lp_cplv_rec.rle_code);
4643 FETCH role_csr INTO l_access_level;
4644 CLOSE role_csr;
4645 IF (l_access_level = 'S') THEN
4646 IF(l_debug_enabled='Y') THEN
4647 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4648 ,'begin debug call VALIDATE_ROLE_JTOT');
4649 END IF;
4650 okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version => p_api_version,
4651 p_init_msg_list => OKC_API.G_FALSE,
4652 x_return_status => x_return_status,
4653 x_msg_count => x_msg_count,
4654 x_msg_data => x_msg_data,
4655 p_object_name => lp_cplv_rec.jtot_object1_code,
4656 p_id1 => lp_cplv_rec.object1_id1,
4657 p_id2 => lp_cplv_rec.object1_id2);
4658 IF(l_debug_enabled='Y') THEN
4659 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT'
4660 ,'end debug call VALIDATE_ROLE_JTOT');
4661 END IF;
4662 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4663 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4664 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4665 RAISE OKL_API.G_EXCEPTION_ERROR;
4666 END IF;
4667 END IF;
4668 IF(l_debug_enabled='Y') THEN
4669 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4670 ,'begin debug call create_k_party_role');
4671 END IF;
4672
4673
4674 okl_k_party_roles_pvt.create_k_party_role(
4675 p_api_version => p_api_version,
4676 p_init_msg_list => p_init_msg_list,
4677 x_return_status => x_return_status,
4678 x_msg_count => x_msg_count,
4679 x_msg_data => x_msg_data,
4680 p_cplv_rec => lp_cplv_rec,
4681 x_cplv_rec => lx_cplv_rec,
4682 p_kplv_rec => lp_kplv_rec,
4683 x_kplv_rec => lx_kplv_rec);
4684 IF(l_debug_enabled='Y') THEN
4685 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_k_party_roles_pvt.create_k_party_role'
4686 ,'end debug call create_k_party_role');
4687 END IF;
4688
4689 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4690 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4691 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4692 RAISE OKL_API.G_EXCEPTION_ERROR;
4693 END IF;
4694 END LOOP;
4695 x_return_status := okc_api.G_RET_STS_SUCCESS;
4696 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
4697 ,x_msg_data => x_msg_data);
4698 EXCEPTION
4699 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4700 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4701 p_api_name => l_api_name,
4702 p_pkg_name => G_PKG_NAME,
4703 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4704 x_msg_count => x_msg_count,
4705 x_msg_data => x_msg_data,
4706 p_api_type => g_api_type);
4707 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4708 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4709 p_api_name => l_api_name,
4710 p_pkg_name => G_PKG_NAME,
4711 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4712 x_msg_count => x_msg_count,
4713 x_msg_data => x_msg_data,
4714 p_api_type => g_api_type);
4715 WHEN OTHERS THEN
4716 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4717 p_api_name => l_api_name,
4718 p_pkg_name => G_PKG_NAME,
4719 p_exc_name => 'OTHERS',
4720 x_msg_count => x_msg_count,
4721 x_msg_data => x_msg_data,
4722 p_api_type => g_api_type);
4723 END create_party_roles;
4724 -------------------------------------------------------------------------------
4725 -- PROCEDURE create_contract_header
4726 -------------------------------------------------------------------------------
4727 -- Start of comments
4728 --
4729 -- Procedure Name : create_lease_app_template
4730 -- Description : This procedure is a wrapper that creates contract header info from lease application/quote header
4731 --
4732 -- Business Rules : this procedure is used to create a contract header from lease application/quote header
4733 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
4734 -- : Lease Application Header details
4735 -- Parameters :
4736 -- Version : 1.0
4737 -- History : 20-Jun-2005 SKGAUTAM created
4738 -- End of comments
4739 PROCEDURE create_contract_header(p_api_version IN NUMBER,
4740 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4741 x_return_status OUT NOCOPY VARCHAR2,
4742 x_msg_count OUT NOCOPY NUMBER,
4743 x_msg_data OUT NOCOPY VARCHAR2,
4744 p_contract_number IN VARCHAR2,
4745 p_parent_object_id IN VARCHAR2,
4746 p_lapv_rec IN c_get_leaseapp_hdr%ROWTYPE,
4747 x_chr_id OUT NOCOPY NUMBER)IS
4748 -- Variables Declarations
4749 l_api_version CONSTANT NUMBER DEFAULT 1.0;
4750 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_CNT_HDR';
4751 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4752 l_debug_enabled VARCHAR2(10);
4753 l_lapv_rec c_get_leaseapp_hdr%ROWTYPE;
4754 -- Record/Table Type Declarations
4755 lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4756 lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4757 lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4758 lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4759 --master lease/credit line rec
4760 lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
4761 lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
4762
4763 -- Added by rravikir (Bug 5142890)
4764 ln_qcl_id OKC_K_HEADERS_B.QCL_ID%TYPE;
4765 CURSOR l_qcl_csr IS
4766 SELECT qcl.id
4767 FROM OKC_QA_CHECK_LISTS_TL qcl,
4768 OKC_QA_CHECK_LISTS_B qclv
4769 WHERE qclv.Id = qcl.id
4770 AND UPPER(qcl.name) = 'OKL LA QA CHECK LIST'
4771 AND qcl.LANGUAGE = USERENV('LANG');
4772 -- End (Bug 5142890)
4773
4774 BEGIN
4775 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4776 -- check for logging on PROCEDURE level
4777 l_debug_enabled := okl_debug_pub.check_log_enabled;
4778 -- call START_ACTIVITY to create savepoint, check compatibility
4779 -- and initialize message list
4780 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
4781 ,p_pkg_name => G_PKG_NAME
4782 ,p_init_msg_list => p_init_msg_list
4783 ,l_api_version => l_api_version
4784 ,p_api_version => p_api_version
4785 ,p_api_type => g_api_type
4786 ,x_return_status => x_return_status);
4787 -- check if activity started successfully
4788 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4789 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4790 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4791 RAISE OKL_API.G_EXCEPTION_ERROR;
4792 END IF;
4793 l_lapv_rec := p_lapv_rec;
4794 lp_chrv_rec.id := NULL;
4795 lp_chrv_rec.scs_code := 'LEASE';
4796 lp_khrv_rec.id := NULL;
4797 lp_chrv_rec.sfwt_flag := 'N';
4798 lp_chrv_rec.object_version_number := 1.0;
4799 lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
4800 lp_chrv_rec.contract_number := p_contract_number;
4801 lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
4802 lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
4803 lp_chrv_rec.cust_acct_id := l_lapv_rec.CUST_ACCT_ID;
4804 lp_chrv_rec.currency_code := l_lapv_rec.CURRENCY_CODE;
4805 lp_chrv_rec.currency_code_renewed := NULL;
4806 lp_chrv_rec.template_yn := 'N';
4807 lp_chrv_rec.chr_type := 'CYA';
4808 lp_chrv_rec.archived_yn := 'N';
4809 lp_chrv_rec.deleted_yn := 'N';
4810 lp_chrv_rec.buy_or_sell := 'S';
4811 lp_chrv_rec.issue_or_receive := 'I';
4812
4813 -- Added by rravikir (Bug 5142890)
4814 OPEN l_qcl_csr;
4815 FETCH l_qcl_csr INTO ln_qcl_id;
4816 CLOSE l_qcl_csr;
4817
4818 lp_chrv_rec.qcl_id := ln_qcl_id;
4819 -- End (Bug 5142890)
4820
4821 --11/06/05 SNAMBIAR - As per AVSINGH, orig_syste_source_code
4822 --is changed to OKL_LEASE_APP instead of OKL_LEASEAPP
4823
4824 IF p_parent_object_id = 'LEASEAPP' THEN
4825 lp_chrv_rec.orig_system_source_code := 'OKL_LEASE_APP';
4826 ELSIF p_parent_object_id = 'LEASEOPP' THEN
4827 lp_chrv_rec.orig_system_source_code := 'OKL_QUOTE'; -- Bug 5098124
4828 END IF;
4829 lp_chrv_rec.orig_system_id1 := l_lapv_rec.id;
4830 lp_chrv_rec.START_DATE := l_lapv_rec.EXPECTED_START_DATE;
4831 lp_chrv_rec.END_DATE := ADD_MONTHS(l_lapv_rec.EXPECTED_START_DATE,l_lapv_rec.TERM);
4832 lp_khrv_rec.expected_delivery_date := l_lapv_rec.expected_delivery_date;
4833 lp_khrv_rec.date_funding_expected := l_lapv_rec.expected_funding_date;
4834 lp_khrv_rec.object_version_number := 1.0;
4835 lp_khrv_rec.generate_accrual_yn := 'Y';
4836 lp_khrv_rec.generate_accrual_override_yn := 'N';
4837 lp_khrv_rec.currency_conversion_type := l_lapv_rec.CURRENCY_CONVERSION_TYPE;
4838 lp_khrv_rec.currency_conversion_date := l_lapv_rec.CURRENCY_CONVERSION_DATE;
4839 lp_khrv_rec.currency_conversion_rate := l_lapv_rec.CURRENCY_CONVERSION_RATE;
4840 lp_khrv_rec.khr_id := l_lapv_rec.PROGRAM_AGREEMENT_ID;
4841 lp_khrv_rec.pdt_id := l_lapv_rec.PRODUCT_ID;
4842 lp_khrv_rec.TERM_DURATION := l_lapv_rec.TERM;
4843 lp_khrv_rec.LEGAL_ENTITY_ID := l_lapv_rec.LEGAL_ENTITY_ID;
4844 IF(l_debug_enabled='Y') THEN
4845 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CONTRACT_PUB.validate_contract_header'
4846 ,'begin debug call validate_contract_header');
4847 END IF;
4848 -- call the TAPI insert_row to create a lease application template
4849 OKL_CONTRACT_PUB.validate_contract_header(p_api_version => p_api_version,
4850 p_init_msg_list => p_init_msg_list,
4851 x_return_status => x_return_status,
4852 x_msg_count => x_msg_count,
4853 x_msg_data => x_msg_data,
4854 p_chrv_rec => lp_chrv_rec,
4855 p_khrv_rec => lp_khrv_rec);
4856
4857 IF(l_debug_enabled='Y') THEN
4858 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CONTRACT_PUB.validate_contract_header'
4859 ,'end debug call validate_contract_header');
4860 END IF;
4861 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4862 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4863 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4864 RAISE OKL_API.G_EXCEPTION_ERROR;
4865 END IF;
4866 IF(l_debug_enabled='Y') THEN
4867 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CONTRACT_PUB.create_contract_header'
4868 ,'begin debug call create_contract_header');
4869 END IF;
4870 OKL_CONTRACT_PUB.create_contract_header(p_api_version => p_api_version,
4871 p_init_msg_list => p_init_msg_list,
4872 x_return_status => x_return_status,
4873 x_msg_count => x_msg_count,
4874 x_msg_data => x_msg_data,
4875 p_chrv_rec => lp_chrv_rec,
4876 p_khrv_rec => lp_khrv_rec,
4877 x_chrv_rec => lx_chrv_rec,
4878 x_khrv_rec => lx_khrv_rec);
4879
4880 IF(l_debug_enabled='Y') THEN
4881 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_CONTRACT_PUB.create_contract_header'
4882 ,'end debug call create_contract_header');
4883 END IF;
4884 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4885 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4886 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4887 RAISE OKL_API.G_EXCEPTION_ERROR;
4888 END IF;
4889 x_chr_id := lx_chrv_rec.id;
4890 -- copy master lease
4891 IF( l_lapv_rec.MASTER_LEASE_ID IS NOT NULL) THEN
4892 lp_mla_gvev_rec.id := NULL;
4893 lp_mla_gvev_rec.dnz_chr_id := x_chr_id;
4894 lp_mla_gvev_rec.chr_id := x_chr_id;
4895 lp_mla_gvev_rec.chr_id_referred := l_lapv_rec.MASTER_LEASE_ID;
4896 lp_mla_gvev_rec.copied_only_yn := 'N';
4897 IF(l_debug_enabled='Y') THEN
4898 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_OKC_MIGRATION_PVT.create_governance'
4899 ,'begin debug call create_governance');
4900 END IF;
4901 OKL_OKC_MIGRATION_PVT.create_governance(p_api_version => p_api_version,
4902 p_init_msg_list => p_init_msg_list,
4903 x_return_status => x_return_status,
4904 x_msg_count => x_msg_count,
4905 x_msg_data => x_msg_data,
4906 p_gvev_rec => lp_mla_gvev_rec,
4907 x_gvev_rec => lx_mla_gvev_rec);
4908
4909 IF(l_debug_enabled='Y') THEN
4910 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_OKC_MIGRATION_PVT.create_governance'
4911 ,'end debug call create_governance');
4912 END IF;
4913 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4914 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4915 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4916 RAISE OKL_API.G_EXCEPTION_ERROR;
4917 END IF;
4918 END IF;
4919 -- copy credit line
4920 IF( l_lapv_rec.CREDIT_LINE_ID IS NOT NULL) THEN
4921 lp_mla_gvev_rec.id := NULL;
4922 lp_mla_gvev_rec.dnz_chr_id := x_chr_id;
4923 lp_mla_gvev_rec.chr_id := x_chr_id;
4924 lp_mla_gvev_rec.chr_id_referred := l_lapv_rec.CREDIT_LINE_ID;
4925 lp_mla_gvev_rec.copied_only_yn := 'N';
4926 IF(l_debug_enabled='Y') THEN
4927 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_OKC_MIGRATION_PVT.create_governance'
4928 ,'begin debug call create_governance');
4929 END IF;
4930 OKL_OKC_MIGRATION_PVT.create_governance(p_api_version => p_api_version,
4931 p_init_msg_list => p_init_msg_list,
4932 x_return_status => x_return_status,
4933 x_msg_count => x_msg_count,
4934 x_msg_data => x_msg_data,
4935 p_gvev_rec => lp_mla_gvev_rec,
4936 x_gvev_rec => lx_mla_gvev_rec);
4937
4938 IF(l_debug_enabled='Y') THEN
4939 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.OKL_OKC_MIGRATION_PVT.create_governance'
4940 ,'end debug call create_governance');
4941 END IF;
4942 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4943 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4944 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4945 RAISE OKL_API.G_EXCEPTION_ERROR;
4946 END IF;
4947 END IF;
4948 x_return_status := okc_api.G_RET_STS_SUCCESS;
4949 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
4950 ,x_msg_data => x_msg_data);
4951 EXCEPTION
4952 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4953 IF (l_qcl_csr%ISOPEN) THEN
4954 CLOSE l_qcl_csr;
4955 END IF;
4956 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4957 p_api_name => l_api_name,
4958 p_pkg_name => G_PKG_NAME,
4959 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
4960 x_msg_count => x_msg_count,
4961 x_msg_data => x_msg_data,
4962 p_api_type => g_api_type);
4963 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4964 IF (l_qcl_csr%ISOPEN) THEN
4965 CLOSE l_qcl_csr;
4966 END IF;
4967 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4968 p_api_name => l_api_name,
4969 p_pkg_name => G_PKG_NAME,
4970 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4971 x_msg_count => x_msg_count,
4972 x_msg_data => x_msg_data,
4973 p_api_type => g_api_type);
4974 WHEN OTHERS THEN
4975 IF (l_qcl_csr%ISOPEN) THEN
4976 CLOSE l_qcl_csr;
4977 END IF;
4978 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4979 p_api_name => l_api_name,
4980 p_pkg_name => G_PKG_NAME,
4981 p_exc_name => 'OTHERS',
4982 x_msg_count => x_msg_count,
4983 x_msg_data => x_msg_data,
4984 p_api_type => g_api_type);
4985 END create_contract_header;
4986 -------------------------------------------------------------------------------
4987 -- PROCEDURE create_contract
4988 -------------------------------------------------------------------------------
4989 -- Start of comments
4990 --
4991 -- Procedure Name : create_lease_app_template
4992 -- Description : This procedure is a wrapper that creates transaction records for
4993 -- : lease application template.
4994 --
4995 -- Business Rules : this procedure is used to create a contract from lease application
4996 -- : The following details are copied to a Lease Contract from a credit approved Lease Application
4997 -- : Lease Application Header details
4998 -- : Customer accepted Configuration, Financing Adjustments, Payments, Terms and Conditions from
4999 -- : the Contract Template associated with the Lease Application Template on the Lease Application
5000 -- : Guarantor on Credit data is copied over as a party with role Guarantor on the contract
5001 -- : Terms and Conditionss from Contract Template associated to Lease Application Template are copied over as Terms and Conditionss on contract
5002 -- : System defaults the Contract Start Date from the Expected Start Date field on the lease application header
5003 -- : System changes the status on the Lease Application to Converted to Contract
5004 --
5005 -- Parameters :
5006 -- Version : 1.0
5007 -- History : 20-Jun-2005 SKGAUTAM created
5008 -- 04-Jan-2008 RRAVIKIR code added to invoke procedure create_asset_subsidy for subsidy creation
5009 -- End of comments
5010 PROCEDURE create_contract(p_api_version IN NUMBER,
5011 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5012 x_return_status OUT NOCOPY VARCHAR2,
5013 x_msg_count OUT NOCOPY NUMBER,
5014 x_msg_data OUT NOCOPY VARCHAR2,
5015 p_contract_number IN VARCHAR2,
5016 p_parent_object_code IN VARCHAR2,
5017 p_parent_object_id IN NUMBER,
5018 x_chr_id OUT NOCOPY NUMBER,
5019 x_contract_number OUT NOCOPY VARCHAR2)IS
5020 -- Variables Declarations
5021 l_api_version CONSTANT NUMBER DEFAULT 1.0;
5022 l_api_name CONSTANT VARCHAR2(30) DEFAULT 'CRT_CNT';
5023 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5024 l_debug_enabled VARCHAR2(10);
5025 l_chr_id NUMBER;
5026 l_parent_object_code VARCHAR2(15);
5027 l_parent_object_id NUMBER;
5028 l_lapv_rec c_get_leaseapp_hdr%ROWTYPE;
5029 -- Bug#4741121 - viselvar - Modified - Start
5030 l_parameter_list wf_parameter_list_t;
5031 p_event_name VARCHAR2(240) := 'oracle.apps.okl.sales.leaseapplication.contract_created';
5032 -- Bug#4741121 - viselvar - Modified - End
5033
5034 -- Added by rravikir (Bug 4901292) - Start
5035 l_contractevent_name VARCHAR2(240) := 'oracle.apps.okl.sales.leaseapplication.khr_created_with_lap';
5036 -- End (Bug 4901292)
5037
5038 l_exists VARCHAR2(3) := 'N';
5039 l_count NUMBER;
5040 l_contract_number VARCHAR2(240);
5041 --cursor to check existance of contract number
5042 CURSOR chk_cntrct_exists(lc_contract_number IN VARCHAR2 )IS
5043 SELECT 'Y'
5044 FROM okc_k_headers_b
5045 where contract_number = lc_contract_number;
5046 --cursor to count the contract numbers which are like the one we want to create
5047 CURSOR chk_count IS
5048 SELECT count(1)
5049 FROM okc_k_headers_b
5050 WHERE contract_number like p_contract_number || '%';
5051
5052 CURSOR c_get_leaseopp IS
5053 SELECT parent_object_id
5054 FROM okl_lease_quotes_b
5055 WHERE id = p_parent_object_id;
5056
5057 BEGIN
5058 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5059 -- check for logging on PROCEDURE level
5060 l_debug_enabled := okl_debug_pub.check_log_enabled;
5061 -- call START_ACTIVITY to create savepoint, check compatibility
5062 -- and initialize message list
5063 l_return_status := OKL_API.START_ACTIVITY( p_api_name => l_api_name
5064 ,p_pkg_name => G_PKG_NAME
5065 ,p_init_msg_list => p_init_msg_list
5066 ,l_api_version => l_api_version
5067 ,p_api_version => p_api_version
5068 ,p_api_type => g_api_type
5069 ,x_return_status => x_return_status);
5070 -- check if activity started successfully
5071 IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5072 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5073 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5074 RAISE OKL_API.G_EXCEPTION_ERROR;
5075 END IF;
5076
5077 /* Commented by rravikir (Bug 5086044)
5078
5079 l_contract_number := p_contract_number;
5080 OPEN chk_cntrct_exists(p_contract_number);
5081 FETCH chk_cntrct_exists INTO l_exists;
5082 CLOSE chk_cntrct_exists;
5083
5084 IF l_exists = 'Y' THEN
5085 OPEN chk_count;
5086 FETCH chk_count INTO l_count;
5087 CLOSE chk_count;
5088 l_contract_number := p_contract_number || to_Char(l_count);
5089 END IF;
5090
5091 l_exists := 'N';
5092 OPEN chk_cntrct_exists(l_contract_number);
5093 FETCH chk_cntrct_exists INTO l_exists;
5094 CLOSE chk_cntrct_exists;
5095
5096 WHILE l_exists = 'Y' LOOP
5097 l_count := l_count+1;
5098 l_contract_number := p_contract_number || to_Char(l_count);
5099 l_exists := 'N';
5100 OPEN chk_cntrct_exists(l_contract_number);
5101 FETCH chk_cntrct_exists INTO l_exists;
5102 CLOSE chk_cntrct_exists;
5103 END LOOP;
5104
5105 */
5106
5107 -- Added by rravikir (Bug 5086044)
5108 -- Commented out code for bug#6765840
5109 /* -- Generate Contract Number from the sequence
5110 IF (p_contract_number IS NULL) THEN -- Bug 6649617
5111
5112 OKC_CONTRACT_PVT.GENERATE_CONTRACT_NUMBER(
5113 p_scs_code => 'LEASE',
5114 p_modifier => null,
5115 x_return_status => x_return_status,
5116 x_contract_number => x_contract_number);
5117 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5118 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5119 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5120 RAISE OKL_API.G_EXCEPTION_ERROR;
5121 END IF;
5122
5123 l_contract_number := x_contract_number;
5124 ELSE
5125 l_contract_number := p_contract_number;
5126 x_contract_number := p_contract_number;
5127 END IF; -- End Bug 6649617
5128 -- End (Bug 5086044) */
5129
5130 l_parent_object_code := p_parent_object_code;
5131 l_parent_object_id := p_parent_object_id;
5132 IF l_parent_object_code = 'LEASEAPP' THEN
5133 OPEN c_get_leaseapp_hdr(l_parent_object_id);
5134 FETCH c_get_leaseapp_hdr INTO
5135 l_lapv_rec.ID,
5136 l_lapv_rec.REFERENCE_NUMBER,
5137 l_lapv_rec.PROSPECT_ID,
5138 l_lapv_rec.PROSPECT_ADDRESS_ID,
5139 l_lapv_rec.CUST_ACCT_ID,
5140 l_lapv_rec.PROGRAM_AGREEMENT_ID,
5141 l_lapv_rec.CURRENCY_CODE,
5142 l_lapv_rec.CURRENCY_CONVERSION_TYPE,
5143 l_lapv_rec.CURRENCY_CONVERSION_RATE,
5144 l_lapv_rec.CURRENCY_CONVERSION_DATE,
5145 l_lapv_rec.CREDIT_LINE_ID,
5146 l_lapv_rec.MASTER_LEASE_ID,
5147 l_lapv_rec.PARENT_LEASEAPP_ID,
5148 l_lapv_rec.SALES_REP_ID,
5149 l_lapv_rec.ORG_ID,
5150 l_lapv_rec.INV_ORG_ID,
5151 l_lapv_rec.EXPECTED_START_DATE,
5152 l_lapv_rec.QUOTE_NUMBER,
5153 l_lapv_rec.TERM,
5154 l_lapv_rec.PRODUCT_ID,
5155 l_lapv_rec.PROPERTY_TAX_APPLICABLE,
5156 l_lapv_rec.PROPERTY_TAX_BILLING_TYPE,
5157 l_lapv_rec.UPFRONT_TAX_TREATMENT,
5158 l_lapv_rec.UPFRONT_TAX_STREAM_TYPE,
5159 l_lapv_rec.TRANSFER_OF_TITLE,
5160 l_lapv_rec.AGE_OF_EQUIPMENT,
5161 l_lapv_rec.PURCHASE_OF_LEASE,
5162 l_lapv_rec.SALE_AND_LEASE_BACK,
5163 l_lapv_rec.INTEREST_DISCLOSED,
5164 l_lapv_rec.QUOTE_ID,
5165 l_lapv_rec.EXPECTED_DELIVERY_DATE,
5166 l_lapv_rec.EXPECTED_FUNDING_DATE,
5167 l_lapv_rec.LEGAL_ENTITY_ID,
5168 l_lapv_rec.LINE_INTENDED_USE; -- Bug 5908845. eBTax Enhancement Project
5169 CLOSE c_get_leaseapp_hdr;
5170
5171 OKL_LEASE_APP_PVT.CREATE_CONTRACT_VAL(
5172 p_api_version => p_api_version
5173 ,p_init_msg_list => OKL_API.G_FALSE
5174 ,x_return_status => x_return_status
5175 ,x_msg_count => x_msg_count
5176 ,x_msg_data => x_msg_data
5177 ,p_lap_id => l_lapv_rec.ID);
5178
5179 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5180 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5181 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5182 RAISE OKL_API.G_EXCEPTION_ERROR;
5183 END IF;
5184
5185 ELSIF l_parent_object_code = 'LEASEOPP' THEN
5186
5187 -- Fetch the Lease opportunity id from the accepted Quote
5188 OPEN c_get_leaseopp;
5189 FETCH c_get_leaseopp INTO l_parent_object_id;
5190 CLOSE c_get_leaseopp;
5191
5192 OPEN c_get_leaseopp_hdr(l_parent_object_id);
5193 FETCH c_get_leaseopp_hdr INTO
5194 l_lapv_rec.ID,
5195 l_lapv_rec.REFERENCE_NUMBER,
5196 l_lapv_rec.PROSPECT_ID,
5197 l_lapv_rec.PROSPECT_ADDRESS_ID,
5198 l_lapv_rec.CUST_ACCT_ID,
5199 l_lapv_rec.PROGRAM_AGREEMENT_ID,
5200 l_lapv_rec.CURRENCY_CODE,
5201 l_lapv_rec.CURRENCY_CONVERSION_TYPE,
5202 l_lapv_rec.CURRENCY_CONVERSION_RATE,
5203 l_lapv_rec.CURRENCY_CONVERSION_DATE,
5204 l_lapv_rec.CREDIT_LINE_ID,
5205 l_lapv_rec.MASTER_LEASE_ID,
5206 l_lapv_rec.PARENT_LEASEAPP_ID,
5207 l_lapv_rec.SALES_REP_ID,
5208 l_lapv_rec.ORG_ID,
5209 l_lapv_rec.INV_ORG_ID,
5210 l_lapv_rec.EXPECTED_START_DATE,
5211 l_lapv_rec.QUOTE_NUMBER,
5212 l_lapv_rec.TERM,
5213 l_lapv_rec.PRODUCT_ID,
5214 l_lapv_rec.PROPERTY_TAX_APPLICABLE,
5215 l_lapv_rec.PROPERTY_TAX_BILLING_TYPE,
5216 l_lapv_rec.UPFRONT_TAX_TREATMENT,
5217 l_lapv_rec.UPFRONT_TAX_STREAM_TYPE,
5218 l_lapv_rec.TRANSFER_OF_TITLE,
5219 l_lapv_rec.AGE_OF_EQUIPMENT,
5220 l_lapv_rec.PURCHASE_OF_LEASE,
5221 l_lapv_rec.SALE_AND_LEASE_BACK,
5222 l_lapv_rec.INTEREST_DISCLOSED,
5223 l_lapv_rec.QUOTE_ID,
5224 l_lapv_rec.EXPECTED_DELIVERY_DATE,
5225 l_lapv_rec.EXPECTED_FUNDING_DATE,
5226 l_lapv_rec.LEGAL_ENTITY_ID,
5227 l_lapv_rec.LINE_INTENDED_USE; -- Bug 5908845. eBTax Enhancement Project
5228 CLOSE c_get_leaseopp_hdr;
5229
5230 CREATE_CONTRACT_VAL(
5231 p_api_version => p_api_version
5232 ,p_init_msg_list => OKL_API.G_FALSE
5233 ,x_return_status => x_return_status
5234 ,x_msg_count => x_msg_count
5235 ,x_msg_data => x_msg_data
5236 ,p_quote_id => p_parent_object_id);
5237
5238 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5239 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5240 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5241 RAISE OKL_API.G_EXCEPTION_ERROR;
5242 END IF;
5243 END IF;
5244
5245 IF l_lapv_rec.id IS NULL THEN
5246 OKL_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'quote_chr_id_not_found');
5247 x_return_status := OKL_API.g_ret_sts_error;
5248 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5249 END IF;
5250 IF(l_debug_enabled='Y') THEN
5251 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_contract_header'
5252 ,'begin debug call create_contract_header');
5253 END IF;
5254
5255 OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
5256 p_org_id => l_lapv_rec.org_id,
5257 p_organization_id => l_lapv_rec.INV_ORG_ID);
5258
5259 -- moved code here for bug#6765840 start
5260 IF (p_contract_number IS NULL) THEN
5261
5262 OKC_CONTRACT_PVT.GENERATE_CONTRACT_NUMBER(
5263 p_scs_code => 'LEASE',
5264 p_modifier => null,
5265 x_return_status => x_return_status,
5266 x_contract_number => x_contract_number);
5267 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5268 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5269 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5270 RAISE OKL_API.G_EXCEPTION_ERROR;
5271 END IF;
5272
5273 l_contract_number := x_contract_number;
5274 ELSE
5275 l_contract_number := p_contract_number;
5276 x_contract_number := p_contract_number;
5277 END IF;
5278 -- moved code here for bug#6765840 End
5279
5280 create_contract_header(p_api_version => p_api_version,
5281 p_init_msg_list => OKC_API.G_FALSE,
5282 x_return_status => x_return_status,
5283 x_msg_count => x_msg_count,
5284 x_msg_data => x_msg_data,
5285 p_contract_number => l_contract_number,
5286 p_parent_object_id => l_parent_object_code,
5287 p_lapv_rec => l_lapv_rec,
5288 x_chr_id => l_chr_id);
5289
5290 IF(l_debug_enabled='Y') THEN
5291 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_contract_header'
5292 ,'end debug call create_contract_header');
5293 END IF;
5294 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5295 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5296 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5297 RAISE OKL_API.G_EXCEPTION_ERROR;
5298 END IF;
5299 IF(l_debug_enabled='Y') THEN
5300 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_party_roles'
5301 ,'begin debug call create_party_roles');
5302 END IF;
5303
5304 create_party_roles(p_api_version => p_api_version,
5305 p_init_msg_list => OKC_API.G_FALSE,
5306 x_return_status => x_return_status,
5307 x_msg_count => x_msg_count,
5308 x_msg_data => x_msg_data,
5309 p_chr_id => l_chr_id,
5310 p_lapv_rec => l_lapv_rec);
5311
5312 IF(l_debug_enabled='Y') THEN
5313 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_ccreate_party_roles'
5314 ,'end debug call create_party_roles');
5315 END IF;
5316 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5317 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5318 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5319 RAISE OKL_API.G_EXCEPTION_ERROR;
5320 END IF;
5321 IF(l_debug_enabled='Y') THEN
5322 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_pcreate_rulesarty_roles'
5323 ,'begin debug call create_rules');
5324 END IF;
5325 create_rules(p_api_version => p_api_version,
5326 p_init_msg_list => OKC_API.G_FALSE,
5327 x_return_status => x_return_status,
5328 x_msg_count => x_msg_count,
5329 x_msg_data => x_msg_data,
5330 p_chr_id => l_chr_id,
5331 p_lapv_rec => l_lapv_rec);
5332
5333 IF(l_debug_enabled='Y') THEN
5334 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_rules'
5335 ,'end debug call create_rules');
5336 END IF;
5337 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5338 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5339 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5340 RAISE OKL_API.G_EXCEPTION_ERROR;
5341 END IF;
5342 --create asset lines
5343 IF(l_debug_enabled='Y') THEN
5344 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_lines'
5345 ,'begin debug call create_asset_lines');
5346 END IF;
5347
5348 create_asset_lines(p_api_version => p_api_version,
5349 p_init_msg_list => OKC_API.G_FALSE,
5350 x_return_status => x_return_status,
5351 x_msg_count => x_msg_count,
5352 x_msg_data => x_msg_data,
5353 p_chr_id => l_chr_id,
5354 p_lapv_rec => l_lapv_rec);
5355
5356 IF(l_debug_enabled='Y') THEN
5357 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_asset_lines'
5358 ,'end debug call create_asset_lines');
5359 END IF;
5360 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5361 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5362 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5363 RAISE OKL_API.G_EXCEPTION_ERROR;
5364 END IF;
5365
5366 --create fee lines
5367 IF(l_debug_enabled='Y') THEN
5368 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_fee_lines'
5369 ,'begin debug call create_fee_lines');
5370 END IF;
5371 create_fee_lines(p_api_version => p_api_version,
5372 p_init_msg_list => p_init_msg_list,
5373 x_return_status => x_return_status,
5374 x_msg_count => x_msg_count,
5375 x_msg_data => x_msg_data,
5376 p_quote_id => l_lapv_rec.quote_id,
5377 p_chr_id => l_chr_id);
5378 IF(l_debug_enabled='Y') THEN
5379 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_fee_lines'
5380 ,'end debug call create_fee_lines');
5381 END IF;
5382 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5383 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5384 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5385 RAISE OKL_API.G_EXCEPTION_ERROR;
5386 END IF;
5387
5388 --Start : Added by rravikir for Bug#6707125
5389 --create asset subsidy
5390 IF(l_debug_enabled='Y') THEN
5391 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create asset subsidy'
5392 ,'begin debug call create_asset_subsidy');
5393 END IF;
5394 create_asset_subsidy(p_api_version => p_api_version,
5395 p_init_msg_list => OKC_API.G_FALSE,
5396 x_return_status => x_return_status,
5397 x_msg_count => x_msg_count,
5398 x_msg_data => x_msg_data,
5399 p_quote_id => l_lapv_rec.quote_id,
5400 p_chr_id => l_chr_id);
5401 IF(l_debug_enabled='Y') THEN
5402 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create asset subsidy'
5403 ,'end debug call create_asset_subsidy');
5404 END IF;
5405 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5406 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5407 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5408 RAISE OKL_API.G_EXCEPTION_ERROR;
5409 END IF;
5410 --End : Added by rravikir for Bug#6707125
5411
5412 --create service lines
5413 IF(l_debug_enabled='Y') THEN
5414 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_service_lines'
5415 ,'begin debug call create_service_lines');
5416 END IF;
5417 create_service_lines(p_api_version => p_api_version,
5418 p_init_msg_list => p_init_msg_list,
5419 x_return_status => x_return_status,
5420 x_msg_count => x_msg_count,
5421 x_msg_data => x_msg_data,
5422 p_quote_id => l_lapv_rec.quote_id,
5423 p_chr_id => l_chr_id);
5424 IF(l_debug_enabled='Y') THEN
5425 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_service_lines'
5426 ,'end debug call create_service_lines');
5427 END IF;
5428 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5429 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5430 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5431 RAISE OKL_API.G_EXCEPTION_ERROR;
5432 END IF;
5433 IF l_parent_object_code = 'LEASEAPP' THEN
5434 IF(l_debug_enabled='Y') THEN
5435 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_insurance_lines'
5436 ,'begin debug call create_insurance_lines');
5437 END IF;
5438 create_insurance_lines (p_api_version => p_api_version,
5439 p_init_msg_list => p_init_msg_list,
5440 x_return_status => x_return_status,
5441 x_msg_count => x_msg_count,
5442 x_msg_data => x_msg_data,
5443 p_chr_id => l_chr_id);
5444 IF(l_debug_enabled='Y') THEN
5445 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.create_insurance_lines'
5446 ,'end debug call create_insurance_lines');
5447 END IF;
5448 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5449 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5450 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5451 RAISE OKL_API.G_EXCEPTION_ERROR;
5452 END IF;
5453 --asawanka bug 4930456 changes start
5454 --create the cheklist for the contract
5455 OKL_CHECKLIST_PVT.CREATE_CONTRACT_CHECKLIST(p_api_version => p_api_version,
5456 p_init_msg_list => p_init_msg_list,
5457 x_return_status => x_return_status,
5458 x_msg_count => x_msg_count,
5459 x_msg_data => x_msg_data,
5460 p_chr_id => l_chr_id);
5461
5462 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5463 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5464 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5465 RAISE OKL_API.G_EXCEPTION_ERROR;
5466 END IF;
5467 --asawanka bug 4930456 changes end
5468 --Update Lease App status
5469 IF(l_debug_enabled='Y') THEN
5470 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.update_leaseapp_status'
5471 ,'begin debug call update_leaseapp_status');
5472 END IF;
5473 update_leaseapp_status(p_api_version => p_api_version,
5474 p_init_msg_list => p_init_msg_list,
5475 x_return_status => x_return_status,
5476 x_msg_count => x_msg_count,
5477 x_msg_data => x_msg_data,
5478 p_lap_id => l_lapv_rec.id);
5479
5480 IF(l_debug_enabled='Y') THEN
5481 okl_debug_pub.log_debug(FND_LOG.LEVEL_PROCEDURE,'okl.plsql.okl_quote_to_contract_pvt.update_leaseapp_status'
5482 ,'end debug call update_leaseapp_status');
5483 END IF;
5484 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5485 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5486 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5487 RAISE OKL_API.G_EXCEPTION_ERROR;
5488 END IF;
5489
5490 END IF; --Lease App end if
5491 x_chr_id := l_chr_id;
5492 -- Bug#4741121 - viselvar - Modified - Start
5493 IF (p_parent_object_code='LEASEAPP') THEN
5494 -- raise the business event passing the lease application id added to the parameter list
5495
5496 wf_event.addparametertolist('LAPP_ID'
5497 ,p_parent_object_id
5498 ,l_parameter_list);
5499
5500 okl_wf_pvt.raise_event(p_api_version => p_api_version
5501 ,p_init_msg_list => p_init_msg_list
5502 ,x_return_status => x_return_status
5503 ,x_msg_count => x_msg_count
5504 ,x_msg_data => x_msg_data
5505 ,p_event_name => p_event_name
5506 ,p_parameters => l_parameter_list);
5507
5508 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5509 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5510 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5511 RAISE OKL_API.G_EXCEPTION_ERROR;
5512 END IF;
5513
5514 -- Added by rravikir (Bug 4901292)
5515 -- Business event for the Contract Created with Lease Application as Source
5516 wf_event.addparametertolist('CONTRACT_ID'
5517 ,l_chr_id
5518 ,l_parameter_list);
5519
5520 okl_wf_pvt.raise_event(p_api_version => p_api_version
5521 ,p_init_msg_list => p_init_msg_list
5522 ,x_return_status => x_return_status
5523 ,x_msg_count => x_msg_count
5524 ,x_msg_data => x_msg_data
5525 ,p_event_name => l_contractevent_name
5526 ,p_parameters => l_parameter_list);
5527 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5528 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5529 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5530 RAISE OKL_API.G_EXCEPTION_ERROR;
5531 END IF;
5532 -- End Bug 4901292
5533
5534 END IF;
5535 -- Bug#4741121 - viselvar - Modified - End
5536
5537 x_return_status := okc_api.G_RET_STS_SUCCESS;
5538 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count
5539 ,x_msg_data => x_msg_data);
5540 EXCEPTION
5541 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5542 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5543 p_api_name => l_api_name,
5544 p_pkg_name => G_PKG_NAME,
5545 p_exc_name => 'OKL_API.G_RET_STS_ERROR',
5546 x_msg_count => x_msg_count,
5547 x_msg_data => x_msg_data,
5548 p_api_type => g_api_type);
5549 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5550 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5551 p_api_name => l_api_name,
5552 p_pkg_name => G_PKG_NAME,
5553 p_exc_name => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5554 x_msg_count => x_msg_count,
5555 x_msg_data => x_msg_data,
5556 p_api_type => g_api_type);
5557 WHEN OTHERS THEN
5558 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5559 p_api_name => l_api_name,
5560 p_pkg_name => G_PKG_NAME,
5561 p_exc_name => 'OTHERS',
5562 x_msg_count => x_msg_count,
5563 x_msg_data => x_msg_data,
5564 p_api_type => g_api_type);
5565 END create_contract;
5566 END OKL_QUOTE_TO_CONTRACT_PVT;