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