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