DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_QUOTE_TO_CONTRACT_PVT

Source


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