DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_LEASE_APP_PVT

Source


1 PACKAGE BODY OKL_LEASE_APP_PVT AS
2   /* $Header: OKLRLAPB.pls 120.93.12010000.10 2010/02/10 08:31:01 smadhava ship $*/
3   -- Bug#4741121 - smadhava  - Modified - Start
4   G_WF_EVT_LEASE_APP_WDW_PENDING    CONSTANT wf_events.name%TYPE DEFAULT 'oracle.apps.okl.sales.leaseapplication.withdrawn';
5   G_WF_LEASE_APP_ID     CONSTANT  VARCHAR2(50)       := 'LA_ID';
6   -- Bug#4741121 - smadhava  - Modified - Start
7 
8   L_MODULE                   FND_LOG_MESSAGES.MODULE%TYPE;
9   L_DEBUG_ENABLED            VARCHAR2(10);
10   IS_DEBUG_PROCEDURE_ON      BOOLEAN;
11   IS_DEBUG_STATEMENT_ON      BOOLEAN;
12 
13   -- Record type for the credit Application
14   TYPE crr_rec_type IS RECORD(
15     l_commit                    VARCHAR2(15),
16     validation_level            VARCHAR2(50),
17     application_number          AR_CMGT_CREDIT_REQUESTS.APPLICATION_NUMBER%TYPE,
18     application_date            AR_CMGT_CREDIT_REQUESTS.APPLICATION_DATE%TYPE,
19     requestor_type              AR_CMGT_CREDIT_REQUESTS.REQUESTOR_TYPE%TYPE,
20     requestor_id                AR_CMGT_CREDIT_REQUESTS.REQUESTOR_ID%TYPE,
21     review_type                 AR_CMGT_CREDIT_REQUESTS.REVIEW_TYPE%TYPE,
22     credit_classification       AR_CMGT_CREDIT_REQUESTS.CREDIT_CLASSIFICATION%TYPE,
23     requested_amount            AR_CMGT_CREDIT_REQUESTS.LIMIT_AMOUNT%TYPE,
24     requested_currency          AR_CMGT_CREDIT_REQUESTS.LIMIT_CURRENCY%TYPE,
25     trx_amount                  AR_CMGT_CREDIT_REQUESTS.TRX_AMOUNT%TYPE,
26     trx_currency                AR_CMGT_CREDIT_REQUESTS.TRX_CURRENCY%TYPE,
27     credit_type                 AR_CMGT_CREDIT_REQUESTS.CREDIT_TYPE%TYPE,
28     term_length                 AR_CMGT_CREDIT_REQUESTS.TERM_LENGTH%TYPE,
29     credit_check_rule_id        AR_CMGT_CREDIT_REQUESTS.CREDIT_CHECK_RULE_ID%TYPE,
30     credit_request_status       AR_CMGT_CREDIT_REQUESTS.STATUS%TYPE,
31     party_id                    AR_CMGT_CREDIT_REQUESTS.PARTY_ID%TYPE,
32     cust_account_id             AR_CMGT_CREDIT_REQUESTS.CUST_ACCOUNT_ID%TYPE,
33     cust_acct_site_id           AR_CMGT_CREDIT_REQUESTS.CUST_ACCT_SITE_ID%TYPE,
34     site_use_id                 AR_CMGT_CREDIT_REQUESTS.SITE_USE_ID%TYPE,
35     contact_party_id            AR_CMGT_CREDIT_REQUESTS.CONTACT_PARTY_ID%TYPE,
36     notes                       AR_CMGT_CREDIT_REQUESTS.NOTES%TYPE,
37     source_org_id               AR_CMGT_CREDIT_REQUESTS.SOURCE_ORG_ID%TYPE,
38     source_user_id              AR_CMGT_CREDIT_REQUESTS.SOURCE_USER_ID%TYPE,
39     source_resp_id              AR_CMGT_CREDIT_REQUESTS.SOURCE_RESP_ID%TYPE,
40     source_appln_id             AR_CMGT_CREDIT_REQUESTS.SOURCE_RESP_APPLN_ID%TYPE,
41     source_security_group_id    AR_CMGT_CREDIT_REQUESTS.SOURCE_SECURITY_GROUP_ID%TYPE,
42     source_name                 AR_CMGT_CREDIT_REQUESTS.SOURCE_NAME%TYPE,
43     source_column1              AR_CMGT_CREDIT_REQUESTS.SOURCE_COLUMN1%TYPE,
44     source_column2              AR_CMGT_CREDIT_REQUESTS.SOURCE_COLUMN2%TYPE,
45     source_column3              AR_CMGT_CREDIT_REQUESTS.SOURCE_COLUMN3%TYPE,
46     credit_request_id           AR_CMGT_CREDIT_REQUESTS.CREDIT_REQUEST_ID%TYPE,
47     review_cycle                AR_CMGT_CREDIT_REQUESTS.REVIEW_CYCLE%TYPE,
48     case_folder_number          AR_CMGT_CREDIT_REQUESTS.CASE_FOLDER_NUMBER%TYPE,
49     score_model_id              AR_CMGT_CREDIT_REQUESTS.SCORE_MODEL_ID%TYPE,
50     parent_credit_request_id    AR_CMGT_CREDIT_REQUESTS.PARENT_CREDIT_REQUEST_ID%TYPE,
51     credit_request_type         AR_CMGT_CREDIT_REQUESTS.CREDIT_REQUEST_TYPE%TYPE
52   );
53   --Added Bug 5647107 ssdeshpa start
54   -----------------------------------
55   -- PROCEDURE validate_le_id
56   -----------------------------------
57   PROCEDURE validate_le_id(p_le_id IN NUMBER ,
58                            x_return_status  OUT NOCOPY VARCHAR2) IS
59 
60   l_program_name      CONSTANT VARCHAR2(30) := 'validate_le_id';
61   l_api_name          CONSTANT VARCHAR2(61) := G_PKG_NAME||'.'||l_program_name;
62   l_ou_tax_upfront_yn VARCHAR2(1);
63 
64   CURSOR  l_systemparams_csr IS
65     SELECT NVL(tax_upfront_yn,'N')
66     FROM   OKL_SYSTEM_PARAMS;
67 
68   BEGIN
69     OPEN l_systemparams_csr;
70     FETCH l_systemparams_csr INTO l_ou_tax_upfront_yn;
71     CLOSE l_systemparams_csr;
72 
73      IF(l_ou_tax_upfront_yn = 'Y') THEN
74         IF(p_le_id IS NULL) THEN
75            OKL_API.SET_MESSAGE (
76             p_app_name     => G_APP_NAME
77            ,p_msg_name     => 'OKL_SO_LSE_APP_LE_ERR');
78            RAISE OKL_API.G_EXCEPTION_ERROR;
79         END IF;
80      END IF;
81      x_return_status := OKL_API.G_RET_STS_SUCCESS;
82   EXCEPTION
83     WHEN OKL_API.G_EXCEPTION_ERROR THEN
84       x_return_status := OKL_API.G_RET_STS_ERROR;
85 
86     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
87       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
88 
89     WHEN OTHERS THEN
90       OKL_API.SET_MESSAGE(
91           p_app_name     => G_APP_NAME,
92           p_msg_name     => G_UNEXPECTED_ERROR,
93           p_token1       => G_SQLCODE_TOKEN,
94           p_token1_value => SQLCODE,
95           p_token2       => G_SQLERRM_TOKEN,
96           p_token2_value => SQLERRM);
97       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
98   END validate_le_id;
99   --Added Bug 5647107 ssdeshpa end
100   -------------------------------------------------------------------------------
101   -- FUNCTION get_lookup_meaning
102   -------------------------------------------------------------------------------
103   -- Start of comments
104   --
105   -- Function Name   : get_lookup_meaning
106   -- Description     : This function returns the meaning for given lookup type
107   --                   and code
108   -- Business Rules  : This function returns the meaning for given lookup type
109   --                   and code
110   -- Parameters      :
111   -- Version         : 1.0
112   -- History         : 23-Dec-2005 PAGARG created
113   -- End of comments
114   FUNCTION get_lookup_meaning(
115            p_lookup_type     IN VARCHAR2,
116            p_lookup_code     IN VARCHAR2)
117     RETURN VARCHAR2
118   IS
119     --Local variables
120     l_meaning           VARCHAR2(80);
121 
122     --Cursor to check for Approve or Reject recommendation for a
123     --given Lease Application
124     CURSOR lkup_meaning_csr(p_lookup_type VARCHAR2, p_lookup_code VARCHAR2) IS
125       SELECT MEANING
126       FROM FND_LOOKUPS FL
127       WHERE FL.LOOKUP_TYPE = p_lookup_type
128         AND FL.LOOKUP_CODE = p_lookup_code;
129 
130   BEGIN
131     IF p_lookup_type IS NOT NULL
132        AND p_lookup_code IS NOT NULL
133     THEN
134       OPEN lkup_meaning_csr(p_lookup_type, p_lookup_code);
135       FETCH lkup_meaning_csr INTO l_meaning;
136       CLOSE lkup_meaning_csr;
137     END IF;
138 
139     RETURN l_meaning;
140   EXCEPTION
141 	WHEN OTHERS
142 	THEN
143       --Lookup Meaning Cursor
144       IF lkup_meaning_csr%ISOPEN
145       THEN
146         CLOSE lkup_meaning_csr;
147       END IF;
148       OKL_API.SET_MESSAGE(
149           p_app_name     => G_APP_NAME,
150           p_msg_name     => G_UNEXPECTED_ERROR,
151           p_token1       => G_SQLCODE_TOKEN,
152           p_token1_value => SQLCODE,
153           p_token2       => G_SQLERRM_TOKEN,
154           p_token2_value => SQLERRM);
155       RETURN NULL;
156   END get_lookup_meaning;
157 
158    -- Bug# 7140398 - Start
159    ------------------------------------------------------------------------------
160    -- FUNCTION is_primary_quote_declined
161    ------------------------------------------------------------------------------
162    -- Start of comments
163    --
164    -- Function Name  : is_primary_quote_declined
165    -- Description     : This procedure checks if the primary quote on the lease app
166    --                   is in status Credit Declined
167    -- Parameters      :
168    -- Version         : 1.0
169    -- History         : 24-Apr-2009 nikshah created Bug 7140398
170    --
171    -- End of comments
172    FUNCTION is_primary_quote_declined(p_lap_id IN OKL_LEASE_APPLICATIONS_B.ID%TYPE)
173    RETURN BOOLEAN
174    IS
175     is_primary_declined BOOLEAN := FALSE;
176     l_flag NUMBER;
177      -- Cursor to check if primary quote on the lease app is credit declined
178      CURSOR get_primary_quote_declined IS
179            SELECT 1
180              FROM OKL_LEASE_APPLICATIONS_B LAP
181                     , OKL_LEASE_QUOTES_B LSQ
182             WHERE LAP.ID = p_lap_id
183               AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
184                   AND LSQ.PARENT_OBJECT_ID = LAP.ID
185               AND LSQ.PRIMARY_QUOTE = 'Y'
186               AND LSQ.STATUS = 'CR-DECLINED';
187    BEGIN
188      OPEN get_primary_quote_declined;
189            FETCH get_primary_quote_declined INTO l_flag;
190            IF get_primary_quote_declined%FOUND THEN
191              is_primary_declined := TRUE;
192            END IF;
193          CLOSE get_primary_quote_declined;
194 
195      return is_primary_declined;
196    END is_primary_quote_declined;
197 
198    -- Bug# 7140398 - End
199 
200 --Bug 4872214 PAGARG Added functions to return credit decision
201   -------------------------------------------------------------------------------
202   -- FUNCTION get_credit_decision
203   -------------------------------------------------------------------------------
204   -- Start of comments
205   --
206   -- Function Name   : get_credit_decision
207   -- Description     : This function returns the Credit Decision on the given
208   --                   Lease Application
209   -- Business Rules  : This function returns the Credit Decision on the given
210   --                   Lease Application
211   -- Parameters      :
212   -- Version         : 1.0
213   -- History         : 14-Dec-2005 PAGARG created
214   --                 : 20 Dec 2005 PAGARG Bug 4897011 returning Credit Approved
215   --                   or Credit Rejected instead of Approved or Rejected
216   --                   19 Nov 2008 gboomina Bug 6971371 Modified the logic to return
217   --                   credit decision based on status of Credit Recommendations
218   -- End of comments
219   FUNCTION get_credit_decision(
220            p_lease_app_id       IN NUMBER)
221     RETURN VARCHAR2
222   IS
223     --Local variables
224     l_cr_decision           VARCHAR2(50);
225     l_cr_recom              AR_CMGT_CF_RECOMMENDS.CREDIT_RECOMMENDATION%TYPE;
226     l_cr_status             AR_CMGT_CF_RECOMMENDS.STATUS%TYPE;
227 
228     --Cursor to check for Approve or Reject recommendation for a
229     --given Lease Application
230     CURSOR credit_recom_csr(cp_lap_id NUMBER) IS
231       SELECT RCM.CREDIT_RECOMMENDATION
232            , RCM.STATUS
233       FROM AR_CMGT_CF_RECOMMENDS RCM
234          , AR_CMGT_CREDIT_REQUESTS CCR
235       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
236         AND RCM.CREDIT_RECOMMENDATION IN ('REJECT', 'APPROVE')
237         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
238         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
239 
240     --Cursor to check for Approve or Reject recommendation for a
241     --given Lease Application
242     CURSOR credit_decision_csr(p_decision_code VARCHAR2) IS
243       SELECT MEANING
244       FROM FND_LOOKUPS FL
245       WHERE FL.LOOKUP_TYPE = 'OKL_LEASE_APP_STATUS'
246         AND FL.LOOKUP_CODE = p_decision_code;
247 
248   BEGIN
249     IF ( p_lease_app_id IS NULL )
250 	THEN
251       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
252     END IF;
253 
254     OPEN credit_recom_csr(p_lease_app_id);
255     FETCH credit_recom_csr INTO l_cr_recom, l_cr_status;
256     CLOSE credit_recom_csr;
257 
258     IF l_cr_recom = 'APPROVE' AND l_cr_status = 'I'
259     THEN
260       OPEN credit_decision_csr('CR-APPROVED');
261       FETCH credit_decision_csr INTO l_cr_decision;
262       CLOSE credit_decision_csr;
263     ELSIF l_cr_recom = 'REJECT' AND l_cr_status = 'I'
264     THEN
265       OPEN credit_decision_csr('CR-REJECTED');
266       FETCH credit_decision_csr INTO l_cr_decision;
267       CLOSE credit_decision_csr;
268     ELSIF ((l_cr_recom = 'REJECT' OR l_cr_recom = 'APPROVE') AND
269                l_cr_status = 'R')
270     THEN
271          OPEN credit_decision_csr('RECOM_NOT_APPROVED');
272          FETCH credit_decision_csr INTO l_cr_decision;
273          CLOSE credit_decision_csr;
274     END IF;
275 
276     RETURN l_cr_decision;
277   EXCEPTION
278     WHEN OKL_API.G_EXCEPTION_ERROR
279 	THEN
280 	  RETURN NULL;
281 	WHEN OTHERS
282 	THEN
283       --Credit Recommendations Cursor
284       IF credit_recom_csr%ISOPEN
285       THEN
286         CLOSE credit_recom_csr;
287       END IF;
288       --Credit Decision Cursor
289       IF credit_decision_csr%ISOPEN
290       THEN
291         CLOSE credit_decision_csr;
292       END IF;
293       OKL_API.SET_MESSAGE(
294           p_app_name     => G_APP_NAME,
295           p_msg_name     => G_UNEXPECTED_ERROR,
296           p_token1       => G_SQLCODE_TOKEN,
297           p_token1_value => SQLCODE,
298           p_token2       => G_SQLERRM_TOKEN,
299           p_token2_value => SQLERRM);
300       RETURN NULL;
301   END get_credit_decision;
302 
303 --Bug 4872214 PAGARG Added functions to return approval expiration date
304   -------------------------------------------------------------------------------
305   -- FUNCTION get_approval_exp_date
306   -------------------------------------------------------------------------------
307   -- Start of comments
308   --
309   -- Function Name   : get_approval_exp_date
310   -- Description     : This function returns the Credit Approval Expiration Date
311   --                   for the given Lease Application
312   -- Business Rules  : This function returns the Credit Approval Expiration Date
313   --                   for the given Lease Application
314   -- Parameters      :
315   -- Version         : 1.0
316   -- History         : 14-Dec-2005 PAGARG created
317   --
318   -- End of comments
319   FUNCTION get_approval_exp_date(
320            p_lease_app_id       IN NUMBER)
321     RETURN DATE
322   IS
323     --Local variables
324     l_cr_recom_count        NUMBER;
325     l_exp_date              DATE;
326 
327     --Cursor to check for Approve or Reject recommendation for a
328     --given Lease Application
329     CURSOR credit_recom_csr(cp_lap_id NUMBER) IS
330       SELECT COUNT(*)
331       FROM AR_CMGT_CF_RECOMMENDS RCM
332          , AR_CMGT_CREDIT_REQUESTS CCR
333       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
334         AND RCM.CREDIT_RECOMMENDATION IN ('APPROVE', 'EXPIRATION_DATE')
335         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
336         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
337 
338     --Cursor to check for Approve or Reject recommendation for a
339     --given Lease Application
340     CURSOR case_folder_csr(p_lap_id NUMBER)
341     IS
342       SELECT LAP.CR_EXP_DAYS + TRUNC(LAST_UPDATED) APPR_EXP_DATE
343       FROM AR_CMGT_CASE_FOLDERS CCF
344          , AR_CMGT_CREDIT_REQUESTS CCR
345          , OKL_LEASE_APPLICATIONS_B LAP
346       WHERE CCR.CREDIT_REQUEST_ID = CCF.CREDIT_REQUEST_ID
347         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
348         AND CCR.SOURCE_COLUMN1 = LAP.ID
349         AND CCF.STATUS = 'CLOSED'
350 		AND LAP.ID = p_lap_id;
351   BEGIN
352     IF ( p_lease_app_id IS NULL )
353 	THEN
354       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
355     END IF;
356 
357     OPEN credit_recom_csr(p_lease_app_id);
358     FETCH credit_recom_csr INTO l_cr_recom_count;
359     CLOSE credit_recom_csr;
360 
361     IF l_cr_recom_count = 2
362     THEN
363       OPEN case_folder_csr(p_lease_app_id);
364       FETCH case_folder_csr INTO l_exp_date;
365       CLOSE case_folder_csr;
366     END IF;
367 
368     RETURN l_exp_date;
369   EXCEPTION
370     WHEN OKL_API.G_EXCEPTION_ERROR
371 	THEN
372 	  RETURN NULL;
373 	WHEN OTHERS
374 	THEN
375       --Credit Recommendations Cursor
376       IF credit_recom_csr%ISOPEN
377       THEN
378         CLOSE credit_recom_csr;
379       END IF;
380       --Case Folder Cursor
381       IF case_folder_csr%ISOPEN
382       THEN
383         CLOSE case_folder_csr;
384       END IF;
385       OKL_API.SET_MESSAGE(
386           p_app_name     => G_APP_NAME,
387           p_msg_name     => G_UNEXPECTED_ERROR,
388           p_token1       => G_SQLCODE_TOKEN,
389           p_token1_value => SQLCODE,
390           p_token2       => G_SQLERRM_TOKEN,
391           p_token2_value => SQLERRM);
392       RETURN NULL;
393   END get_approval_exp_date;
394 
395   --Bug 4872271 PAGARG Added two functions: one to return Credit Decision Appeal
396   --Flag and other to return Expiration Date Appeal Flag
397   --Start
398   -------------------------------------------------------------------------------
399   -- FUNCTION get_cr_dec_appeal_flag
400   -------------------------------------------------------------------------------
401   -- Start of comments
402   --
403   -- Function Name   : get_cr_dec_appeal_flag
404   -- Description     : This function returns the appeal flag for Credit Decision
405   --                   on the given Lease Application
406   -- Business Rules  : This function returns the appeal flag for Credit Decision
407   --                   on the given Lease Application
408   -- Parameters      :
409   -- Version         : 1.0
410   -- History         : 28-Mar-2006 PAGARG created
411   --
412   -- End of comments
413   FUNCTION get_cr_dec_appeal_flag(
414            p_lease_app_id       IN NUMBER)
415     RETURN VARCHAR2
416   IS
417     --Local variables
418     l_cr_dec_appeal_flag    VARCHAR2(3);
419     l_cr_recom              VARCHAR2(30);
420 
421     --Cursor to check for Approve or Reject recommendation for a
422     --given Lease Application
423     CURSOR credit_recom_csr(cp_lap_id NUMBER) IS
424       SELECT RCM.CREDIT_RECOMMENDATION
425            , RCM.APPEALED_FLAG
426       FROM AR_CMGT_CF_RECOMMENDS RCM
427          , AR_CMGT_CREDIT_REQUESTS CCR
428       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
429         AND RCM.CREDIT_RECOMMENDATION IN ('REJECT', 'APPROVE')
430         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
431         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
432   BEGIN
433     IF ( p_lease_app_id IS NULL )
434 	THEN
435       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
436     END IF;
437 
438     OPEN credit_recom_csr(p_lease_app_id);
439     FETCH credit_recom_csr INTO l_cr_recom, l_cr_dec_appeal_flag;
440     CLOSE credit_recom_csr;
441 
442     RETURN l_cr_dec_appeal_flag;
443   EXCEPTION
444     WHEN OKL_API.G_EXCEPTION_ERROR
445 	THEN
446 	  RETURN NULL;
447 	WHEN OTHERS
448 	THEN
449       --Credit Recommendations Cursor
450       IF credit_recom_csr%ISOPEN
451       THEN
452         CLOSE credit_recom_csr;
453       END IF;
454       OKL_API.SET_MESSAGE(
455           p_app_name     => G_APP_NAME,
456           p_msg_name     => G_UNEXPECTED_ERROR,
457           p_token1       => G_SQLCODE_TOKEN,
458           p_token1_value => SQLCODE,
459           p_token2       => G_SQLERRM_TOKEN,
460           p_token2_value => SQLERRM);
461       RETURN NULL;
462   END get_cr_dec_appeal_flag;
463 
464   -------------------------------------------------------------------------------
465   -- FUNCTION get_exp_date_appeal_flag
466   -------------------------------------------------------------------------------
467   -- Start of comments
468   --
469   -- Function Name   : get_exp_date_appeal_flag
470   -- Description     : This function returns the appeal flag for Credit Approval
471   --                   Expiration Date for the given Lease Application
472   -- Business Rules  : This function returns the appeal flag for Credit Approval
473   --                   Expiration Date for the given Lease Application
474   -- Parameters      :
475   -- Version         : 1.0
476   -- History         : 28-Mar-2006 PAGARG created
477   --
478   -- End of comments
479   FUNCTION get_exp_date_appeal_flag(
480            p_lease_app_id       IN NUMBER)
481     RETURN VARCHAR2
482   IS
483     --Local variables
484     l_cr_recom_count        NUMBER;
485     l_exp_date_appeal_flag  VARCHAR2(3);
486 
487     --Cursor to check for Approve or Reject recommendation for a
488     --given Lease Application
489     CURSOR credit_recom_csr(cp_lap_id NUMBER) IS
490       SELECT COUNT(*)
491       FROM AR_CMGT_CF_RECOMMENDS RCM
492          , AR_CMGT_CREDIT_REQUESTS CCR
493       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
494         AND RCM.CREDIT_RECOMMENDATION IN ('APPROVE', 'EXPIRATION_DATE')
495         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
496         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
497 
498     --Cursor to check for Approve or Reject recommendation for a
499     --given Lease Application
500     CURSOR appeal_flag_csr(p_lap_id NUMBER)
501     IS
502       SELECT RCM.APPEALED_FLAG
503       FROM AR_CMGT_CF_RECOMMENDS RCM
504          , AR_CMGT_CREDIT_REQUESTS CCR
505       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
506         AND RCM.CREDIT_RECOMMENDATION = 'EXPIRATION_DATE'
507         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
508         AND CCR.SOURCE_COLUMN1 = p_lap_id;
509   BEGIN
510     IF ( p_lease_app_id IS NULL )
511 	THEN
512       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
513     END IF;
514 
515     OPEN credit_recom_csr(p_lease_app_id);
516     FETCH credit_recom_csr INTO l_cr_recom_count;
517     CLOSE credit_recom_csr;
518 
519     IF l_cr_recom_count = 2
520     THEN
521       OPEN appeal_flag_csr(p_lease_app_id);
522       FETCH appeal_flag_csr INTO l_exp_date_appeal_flag;
523       CLOSE appeal_flag_csr;
524     END IF;
525 
526     RETURN l_exp_date_appeal_flag;
527   EXCEPTION
528     WHEN OKL_API.G_EXCEPTION_ERROR
529 	THEN
530 	  RETURN NULL;
531 	WHEN OTHERS
532 	THEN
533       --Credit Recommendations Cursor
534       IF credit_recom_csr%ISOPEN
535       THEN
536         CLOSE credit_recom_csr;
537       END IF;
538       --Case Folder Cursor
539       IF appeal_flag_csr%ISOPEN
540       THEN
541         CLOSE appeal_flag_csr;
542       END IF;
543       OKL_API.SET_MESSAGE(
544           p_app_name     => G_APP_NAME,
545           p_msg_name     => G_UNEXPECTED_ERROR,
546           p_token1       => G_SQLCODE_TOKEN,
547           p_token1_value => SQLCODE,
548           p_token2       => G_SQLERRM_TOKEN,
549           p_token2_value => SQLERRM);
550       RETURN NULL;
551   END get_exp_date_appeal_flag;
552   --Bug 4872271 PAGARG End
553 
554   ------------------------------------------------------------------------------
555   -- FUNCTION get_next_seq_num
556   ------------------------------------------------------------------------------
557   -- Start of comments
558   --
559   -- Function Name   : get_next_seq_num
560   -- Description     : This function returns the next unique value from the sequence
561   --                   for given column column in the table.
562   -- Parameters      :
563   -- Version         : 1.0
564   -- History         : 01-Dec-2005 PAGARG Created Bug 4867953
565   --
566   -- End of comments
567   --Bug 7022258-Modified by kkorrapo
568   /*FUNCTION get_next_seq_num(
569            p_seq_name           IN VARCHAR2,
570            p_table_name         IN VARCHAR2,
571            p_col_name           IN VARCHAR2)
572   RETURN NUMBER
573   IS
574     l_next_val          NUMBER;
575     l_col_value         VARCHAR2(150);
576     l_seq_stmt          VARCHAR2(100);
577     l_query_stmt        VARCHAR2(100);
578     TYPE l_csr_typ IS REF CURSOR;
579     l_ref_csr l_csr_typ;
580   BEGIN
581     l_next_val   := 0;
582     l_seq_stmt   := 'SELECT ' || p_seq_name || '.NEXTVAL FROM DUAL';
583     l_query_stmt := 'SELECT ' ||
584                     p_col_name ||
585                     ' FROM ' ||
586                     p_table_name ||
587                     ' WHERE '||
588                     p_col_name || ' = :1 ';
589     LOOP
590       --Execute the dynamic sql for obtaining next value of sequence
591       OPEN l_ref_csr FOR l_seq_stmt;
592       FETCH l_ref_csr INTO l_next_val;
593         IF l_ref_csr%NOTFOUND THEN
594           EXIT;
595         END IF;
596       CLOSE l_ref_csr;
597 
598       --Execute the dynamic sql for validating uniqueness of the next value from sequence
599       OPEN l_ref_csr FOR l_query_stmt USING TO_CHAR(l_next_val);
600       FETCH l_ref_csr INTO l_col_value;
601         IF l_ref_csr%NOTFOUND THEN
602           EXIT;
603         END IF;
604       CLOSE l_ref_csr;
605     END LOOP;
606     RETURN l_next_val;
607   EXCEPTION
608     WHEN OTHERS
609     THEN
610       IF l_ref_csr%ISOPEN
611       THEN
612         CLOSE l_ref_csr;
613       END IF;
614       RETURN 0;
615       END get_next_seq_num; */
616 
617     FUNCTION get_next_seq_num(
618 	      p_seq_name           IN VARCHAR2,
619 	      p_table_name         IN VARCHAR2,
620 	      p_col_name           IN VARCHAR2)
621      RETURN VARCHAR2
622      IS
623        l_next_val          NUMBER;
624        l_col_value         VARCHAR2(150);
625        l_seq_stmt          VARCHAR2(100);
626        l_query_stmt        VARCHAR2(100);
627        TYPE l_csr_typ IS REF CURSOR;
628        l_ref_csr l_csr_typ;
629        CURSOR c_get_prefix(c_table_name IN VARCHAR2) IS
630        SELECT DECODE(c_table_name,'OKL_LEASE_QUOTES_B',LSEQTE_SEQ_PREFIX_TXT,'OKL_QUICK_QUOTES_B',QCKQTE_SEQ_PREFIX_TXT,'OKL_LEASE_OPPORTUNITIES_B',LSEOPP_SEQ_PREFIX_TXT,'OKL_LEASE_APPLICATIONS_B',LSEAPP_SEQ_PREFIX_TXT)
631        FROM okl_system_params;
632        l_prefix VARCHAR2(30);
633        l_value  VARCHAR(250);
634      BEGIN
635        l_next_val   := 0;
636        l_seq_stmt   := 'SELECT ' || p_seq_name || '.NEXTVAL FROM DUAL';
637        l_query_stmt := 'SELECT ' ||
638 		       p_col_name ||
639 		       ' FROM ' ||
640 		       p_table_name ||
641 		       ' WHERE '||
642 		       p_col_name || ' = :1 ';
643        --get prefix
644        OPEN c_get_prefix(p_table_name);
645        FETCH c_get_prefix INTO l_prefix;
646        CLOSE c_get_prefix;
647 
648        LOOP
649 	 --Execute the dynamic sql for obtaining next value of sequence
650 	 OPEN l_ref_csr FOR l_seq_stmt;
651 	 FETCH l_ref_csr INTO l_next_val;
652 	   IF l_ref_csr%NOTFOUND THEN
653 	     EXIT;
654 	   END IF;
655 	 CLOSE l_ref_csr;
656 
657 
658 	 IF l_prefix IS NOT NULL THEN
659 	  l_value := l_prefix || TO_CHAR(l_next_val);
660 	 ELSE
661 	  l_value := TO_CHAR(l_next_val);
662 	 END IF;
663 
664 	 --Execute the dynamic sql for validating uniqueness of the next value from sequence
665 	 OPEN l_ref_csr FOR l_query_stmt USING l_value;
666 	 FETCH l_ref_csr INTO l_col_value;
667 	   IF l_ref_csr%NOTFOUND THEN
668 	     EXIT;
669 	   END IF;
670 	 CLOSE l_ref_csr;
671        END LOOP;
672        RETURN l_value;
673      EXCEPTION
674        WHEN OTHERS
675        THEN
676 	 IF l_ref_csr%ISOPEN
677 	 THEN
678 	   CLOSE l_ref_csr;
679 	 END IF;
680 	 RETURN 0;
681   --Bug 7022258--Modification end
682   END get_next_seq_num;
683 
684   -------------------------------------------------------------------------------
685   -- PROCEDURE populate_ec_rec
686   -------------------------------------------------------------------------------
687   -- Start of comments
688   --
689   -- Procedure Name  : populate_ec_rec
690   -- Description     : This procedure populates okl_ec_rec_type
691   -- Business Rules  : This procedure populates okl_ec_rec_type
692   -- Parameters      :
693   -- Version         : 1.0
694   -- History         : 27-Oct-2005 PAGARG created
695   --
696   -- End of comments
697   PROCEDURE populate_ec_rec(
698             p_api_version        IN  NUMBER,
699             p_init_msg_list      IN  VARCHAR2,
700             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
701             x_return_status      OUT NOCOPY VARCHAR2,
702             x_msg_count          OUT NOCOPY NUMBER,
703             x_msg_data           OUT NOCOPY VARCHAR2,
704             lx_okl_ec_rec     IN OUT NOCOPY OKL_ECC_PUB.okl_ec_rec_type)
705   IS
706     -- Variables Declarations
707     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
708     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'POPULATE_EC_REC';
709     l_return_status          VARCHAR2(1);
710     l_counter                NUMBER;
711 
712     l_item_tbl               okl_ec_evaluate_pvt.okl_number_table_type;
713 
714     --Cursor to obtain Lease Application Details
715     CURSOR lse_app_dtls_csr(cp_lse_app_id NUMBER) IS
716       SELECT VALID_FROM VALID_FROM
717            , PROSPECT_ID PROSPECT_ID
718            , CUST_ACCT_ID CUST_ACCT_ID
719            , CURRENCY_CODE CURRENCY_CODE
720         FROM OKL_LEASE_APPLICATIONS_B LAB
721        WHERE LAB.ID = cp_lse_app_id;
722     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
723 
724     --Cursor to obtain the details of lease quote line of Lease App
725     CURSOR l_lsq_dtls_csr(p_lap_id NUMBER)
726 	IS
727       SELECT LSQ.ID LSQ_ID
728            , LSQ.TERM
729       FROM OKL_LEASE_QUOTES_B LSQ
730       WHERE LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
731         AND LSQ.PRIMARY_QUOTE= 'Y'
732         AND LSQ.PARENT_OBJECT_ID = p_lap_id;
733     l_lsq_dtls_rec l_lsq_dtls_csr%ROWTYPE;
734 
735     --Cursor to obtain the inventory items of Lease Quote
736     CURSOR l_item_csr(p_lsq_id NUMBER)
737 	IS
738       SELECT INV_ITEM_ID
739       FROM OKL_ASSET_COMPONENTS_B ASTC
740          , OKL_ASSETS_B AST
741       WHERE ASTC.ASSET_ID = AST.ID
742         AND AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
743         AND AST.PARENT_OBJECT_ID = p_lsq_id;
744     l_item_rec l_item_csr%ROWTYPE;
745 
746     --Cursor to obtain the sum of adjustments of Lease Quote
747     CURSOR l_adj_sum_csr(p_lsq_id IN NUMBER, cp_adj_src_type IN VARCHAR2)
748 	IS
749       SELECT SUM(ADJ.VALUE)
750         FROM OKL_ASSETS_B AST
751            , OKL_COST_ADJUSTMENTS_B ADJ
752        WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
753          AND ADJ.PARENT_OBJECT_ID = AST.ID
754          AND AST.PARENT_OBJECT_ID = p_lsq_id
755          AND ADJ.ADJUSTMENT_SOURCE_TYPE = cp_adj_src_type;
756 
757   BEGIN
758     l_return_status := OKL_API.G_RET_STS_SUCCESS;
759     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.POPULATE_EC_REC';
760 
761     -- check for logging on PROCEDURE level
762     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
763     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
764     -- check for logging on STATEMENT level
765     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
766 
767     -- call START_ACTIVITY to create savepoint, check compatibility
768     -- and initialize message list
769     l_return_status := OKL_API.START_ACTIVITY(
770                            p_api_name      => l_api_name
771                           ,p_pkg_name      => G_PKG_NAME
772                           ,p_init_msg_list => p_init_msg_list
773                           ,l_api_version   => l_api_version
774                           ,p_api_version   => p_api_version
775                           ,p_api_type      => G_API_TYPE
776                           ,x_return_status => l_return_status);
777 
778     -- check if activity started successfully
779     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
780       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
781     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
782       RAISE OKL_API.G_EXCEPTION_ERROR;
783     END IF;
784 
785     --Populate Eligibility criteria rec
786     OPEN lse_app_dtls_csr(p_lap_id);
787     FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
788     CLOSE lse_app_dtls_csr;
789 
790     --Obtain the details of Lease Quote line of Lease App
791     OPEN l_lsq_dtls_csr(p_lap_id);
792     FETCH l_lsq_dtls_csr INTO l_lsq_dtls_rec;
793     CLOSE l_lsq_dtls_csr;
794 
795     lx_okl_ec_rec.target_id := p_lap_id;
796     lx_okl_ec_rec.target_type := 'LEASE_APP';
797     lx_okl_ec_rec.target_eff_from := lse_app_dtls_rec.valid_from;
798     lx_okl_ec_rec.term := l_lsq_dtls_rec.term;
799     lx_okl_ec_rec.deal_size := get_financed_Amount(l_lsq_dtls_rec.lsq_id);
800     lx_okl_ec_rec.customer_credit_class := get_credit_classfication(lse_app_dtls_rec.prospect_id, lse_app_dtls_rec.cust_acct_id, NULL);
801     lx_okl_ec_rec.currency_code := lse_app_dtls_rec.currency_code;
802 
803     OPEN l_adj_sum_csr(l_lsq_dtls_rec.lsq_id, 'DOWN_PAYMENT');
804     FETCH l_adj_sum_csr INTO lx_okl_ec_rec.down_payment;
805     CLOSE l_adj_sum_csr;
806 
807     OPEN l_adj_sum_csr(l_lsq_dtls_rec.lsq_id, 'TRADEIN');
808     FETCH l_adj_sum_csr INTO lx_okl_ec_rec.trade_in_value;
809     CLOSE l_adj_sum_csr;
810 
811     l_counter := 1;
812     FOR l_item_rec IN l_item_csr(l_lsq_dtls_rec.lsq_id)
813     LOOP
814       l_item_tbl(l_counter) := l_item_rec.inv_item_id;
815     END LOOP;
816     lx_okl_ec_rec.item_table := l_item_tbl;
817 
818     x_return_status := l_return_status;
819 
820     OKL_API.END_ACTIVITY(
821         x_msg_count => x_msg_count
822        ,x_msg_data  => x_msg_data);
823 
824   EXCEPTION
825     WHEN OKL_API.G_EXCEPTION_ERROR THEN
826       --Lease Application Details cursor
827       IF lse_app_dtls_csr%ISOPEN
828       THEN
829         CLOSE lse_app_dtls_csr;
830       END IF;
831       --Lease Quote Details Cursor
832       IF l_lsq_dtls_csr%ISOPEN
833       THEN
834         CLOSE l_lsq_dtls_csr;
835       END IF;
836       --Inventory Item Id Cursor
837       IF l_item_csr%ISOPEN
838       THEN
839         CLOSE l_item_csr;
840       END IF;
841       --Sum of Adjustment Cursor
842       IF l_adj_sum_csr%ISOPEN
843       THEN
844         CLOSE l_adj_sum_csr;
845       END IF;
846       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
847                            p_api_name  => l_api_name,
848                            p_pkg_name  => G_PKG_NAME,
849                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
850                            x_msg_count => x_msg_count,
851                            x_msg_data  => x_msg_data,
852                            p_api_type  => G_API_TYPE);
853 
854     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
855       --Lease Application Details cursor
856       IF lse_app_dtls_csr%ISOPEN
857       THEN
858         CLOSE lse_app_dtls_csr;
859       END IF;
860       --Lease Quote Details Cursor
861       IF l_lsq_dtls_csr%ISOPEN
862       THEN
863         CLOSE l_lsq_dtls_csr;
864       END IF;
865       --Inventory Item Id Cursor
866       IF l_item_csr%ISOPEN
867       THEN
868         CLOSE l_item_csr;
869       END IF;
870       --Sum of Adjustment Cursor
871       IF l_adj_sum_csr%ISOPEN
872       THEN
873         CLOSE l_adj_sum_csr;
874       END IF;
875       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
876                            p_api_name  => l_api_name,
877                            p_pkg_name  => G_PKG_NAME,
878                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
879                            x_msg_count => x_msg_count,
880                            x_msg_data  => x_msg_data,
881                            p_api_type  => G_API_TYPE);
882 
883     WHEN OTHERS THEN
884       --Lease Application Details cursor
885       IF lse_app_dtls_csr%ISOPEN
886       THEN
887         CLOSE lse_app_dtls_csr;
888       END IF;
889       --Lease Quote Details Cursor
890       IF l_lsq_dtls_csr%ISOPEN
891       THEN
892         CLOSE l_lsq_dtls_csr;
893       END IF;
894       --Inventory Item Id Cursor
895       IF l_item_csr%ISOPEN
896       THEN
897         CLOSE l_item_csr;
898       END IF;
899       --Sum of Adjustment Cursor
900       IF l_adj_sum_csr%ISOPEN
901       THEN
902         CLOSE l_adj_sum_csr;
903       END IF;
904       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
905                            p_api_name  => l_api_name,
906                            p_pkg_name  => G_PKG_NAME,
907                            p_exc_name  => 'OTHERS',
908                            x_msg_count => x_msg_count,
909                            x_msg_data  => x_msg_data,
910                            p_api_type  => G_API_TYPE);
911   END populate_ec_rec;
912 
913   -------------------------------------------------------------------------------
914   -- FUNCTION get_financed_amount
915   -------------------------------------------------------------------------------
916   -- Start of comments
917   --
918   -- Function Name   : get_financed_amount
919   -- Description     : This function returns the financed amount for given
920   --                   Lease Quote
921   -- Business Rules  : This function returns the financed amount for given
922   --                   Lease Quote
923   -- Parameters      :
924   -- Version         : 1.0
925   -- History         : 23-SEP-2005 PAGARG created
926   --
927   -- End of comments
928   FUNCTION get_financed_amount(
929            p_lease_qte_id       IN NUMBER)
930     RETURN NUMBER
931   IS
932     --cursor to find total capital amount
933     CURSOR l_cap_amnt_csr(p_lsq_id NUMBER)
934 	IS
935       SELECT NVL(SUM(ASS.OEC), 0) ASSET_AMOUNT
936       FROM OKL_ASSETS_B ASS
937       WHERE ASS.PARENT_OBJECT_CODE = 'LEASEQUOTE'
938         AND ASS.PARENT_OBJECT_ID = p_lsq_id;
939 
940     -- cursor to find total Rollover Fee Amount for a Lease Application
941     CURSOR l_fee_csr(p_lsq_id NUMBER, p_fee_type VARCHAR2)
942 	IS
943       SELECT NVL(SUM(FEE.FEE_AMOUNT), 0) FEE_AMOUNT
944       FROM OKL_FEES_B FEE
945       WHERE FEE.FEE_TYPE = p_fee_type
946         AND FEE.PARENT_OBJECT_CODE = 'LEASEQUOTE'
947         AND FEE.PARENT_OBJECT_ID = p_lsq_id;
948 
949     -- added for bug 6596860 --
950     CURSOR l_adj_sum_csr(p_lsq_id IN NUMBER)
951    	IS
952          SELECT NVL(SUM(VALUE), 0 )
953            FROM OKL_ASSETS_B AST
954               , OKL_COST_ADJUSTMENTS_B ADJ
955           WHERE AST.PARENT_OBJECT_CODE = 'LEASEQUOTE'
956             AND ADJ.PARENT_OBJECT_ID = AST.ID
957             AND ADJ.ADJUSTMENT_SOURCE_TYPE  IN ('DOWN_PAYMENT', 'TRADEIN')
958             AND AST.PARENT_OBJECT_ID = p_lsq_id;
959 
960 
961     l_rollover_fee     NUMBER;
962     l_capital_amount   NUMBER;
963     l_financed_fee     NUMBER;
964     l_financed_amount  NUMBER;
965     l_adj_amount 	   NUMBER;   -- added for bug 6596860 --
966     l_capitalized_fee  NUMBER; --added for bug 6697231 --
967 
968   BEGIN
969     IF ( p_lease_qte_id IS NULL )
970 	THEN
971       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
972     END IF;
973 
974     l_capital_amount := 0;
975     l_financed_fee   := 0;
976     l_financed_amount := 0;
977     l_rollover_fee := 0;
978     l_adj_amount :=0;   -- added for bug 6596860 --
979     l_capitalized_fee:=0; --added for bug 6697231 --
980 
981     OPEN l_cap_amnt_csr(p_lease_qte_id);
982     FETCH l_cap_amnt_csr INTO l_capital_amount;
983     CLOSE l_cap_amnt_csr;
984 
985     OPEN l_fee_csr(p_lease_qte_id, 'ROLLOVER');
986     FETCH l_fee_csr INTO l_rollover_fee;
987     CLOSE l_fee_csr;
988 
989     OPEN l_fee_csr(p_lease_qte_id, 'FINANCED');
990     FETCH l_fee_csr INTO l_financed_fee;
991     CLOSE l_fee_csr;
992 
993     --added for bug 6697231
994     OPEN l_fee_csr(p_lease_qte_id, 'CAPITALIZED');
995     FETCH l_fee_csr INTO l_capitalized_fee;
996     CLOSE l_fee_csr;
997     --added for bug 6697231:End
998 
999     -- added for bug 6596860 --
1000     OPEN l_adj_sum_csr(p_lease_qte_id);
1001     FETCH l_adj_sum_csr INTO l_adj_amount;
1002     CLOSE l_adj_sum_csr;
1003 
1004     --bug 6697231: added capitalized fee
1005     l_financed_amount := l_capital_amount + l_financed_fee + l_rollover_fee + l_capitalized_fee - l_adj_amount ; -- Subtract adjusted amount (Bug 6596860)
1006 
1007     RETURN l_financed_amount;
1008   EXCEPTION
1009     WHEN OKL_API.G_EXCEPTION_ERROR
1010 	THEN
1011 	  RETURN 0;
1012 	WHEN OTHERS
1013 	THEN
1014       --Capital Amount cursor
1015       IF l_cap_amnt_csr%ISOPEN
1016       THEN
1017         CLOSE l_cap_amnt_csr;
1018       END IF;
1019       --Fee Amount cursor
1020       IF l_fee_csr%ISOPEN
1021       THEN
1022         CLOSE l_fee_csr;
1023       END IF;
1024       OKL_API.SET_MESSAGE(
1025           p_app_name     => G_APP_NAME,
1026           p_msg_name     => G_UNEXPECTED_ERROR,
1027           p_token1       => G_SQLCODE_TOKEN,
1028           p_token1_value => SQLCODE,
1029           p_token2       => G_SQLERRM_TOKEN,
1030           p_token2_value => SQLERRM);
1031       RETURN 0;
1032   END get_financed_amount;
1033 
1034   -------------------------------------------------------------------------------
1035   -- PROCEDURE populate_lease_app
1036   -------------------------------------------------------------------------------
1037   -- Start of comments
1038   --
1039   -- Procedure Name  : populate_lease_app
1040   -- Description     : This procedure populates lapv_rec and lsqv_rec with the
1041   --                 : database values for a given lease application.
1042   -- Business Rules  : This procedure populates lapv_rec and lsqv_rec with the
1043   --                 : database values for a given lease application.
1044   -- Parameters      :
1045   -- Version         : 1.0
1046   -- History         : 30-MAY-2005 PAGARG created
1047   --
1048   -- End of comments
1049   PROCEDURE populate_lease_app(
1050             p_api_version        IN  NUMBER,
1051             p_init_msg_list      IN  VARCHAR2,
1052             x_return_status      OUT NOCOPY VARCHAR2,
1053             x_msg_count          OUT NOCOPY NUMBER,
1054             x_msg_data           OUT NOCOPY VARCHAR2,
1055             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
1056             x_lapv_rec           OUT NOCOPY lapv_rec_type,
1057             x_lsqv_rec           OUT NOCOPY lsqv_rec_type) IS
1058 
1059     -- Variables Declarations
1060     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
1061     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'POPULATE_LEASE_APP';
1062     l_return_status          VARCHAR2(1);
1063 
1064     -- Record/Table Type Declarations
1065     l_lapv_rec		lapv_rec_type;
1066     l_lsqv_rec      lsqv_rec_type;
1067 
1068     --Cursor to populate Lease Application details from database
1069     CURSOR lap_db_val_csr(cp_lap_id NUMBER) IS
1070       SELECT LAB.ID ID
1071            , LAB.REFERENCE_NUMBER LEASE_APPL_NUMBER
1072            , LAB.APPLICATION_STATUS LEASE_APPL_STATUS_CODE
1073            , LAB.VALID_FROM VALID_FROM
1074            , LAB.VALID_TO VALID_TO
1075            , LAB.PROSPECT_ID PROSPECT_ID
1076            , LAB.PROSPECT_ADDRESS_ID PROSPECT_ADDRESS_ID
1077            , LAB.CUST_ACCT_ID CUST_ACCT_ID
1078            , LAB.CURRENCY_CODE CURRENCY_CODE
1079            , LAB.CURRENCY_CONVERSION_TYPE CONVERSION_TYPE
1080            , LAB.CURRENCY_CONVERSION_RATE CONVERSION_RATE
1081            , LAB.CURRENCY_CONVERSION_DATE CONVERSION_DATE
1082            , LAB.LEASEAPP_TEMPLATE_ID LEASEAPP_TEMPLATE_ID
1083            , LAB.LEASE_OPPORTUNITY_ID LEASE_OPPORTUNITY_ID
1084            , LAB.CREDIT_LINE_ID CREDIT_LINE_ID
1085            , LAB.PROGRAM_AGREEMENT_ID PROGRAM_AGREEMENT_ID
1086            , LAB.MASTER_LEASE_ID MASTER_LEASE_ID
1087            , LAB.SALES_REP_ID SALES_REP_ID
1088            , LAB.SALES_TERRITORY_ID SALES_TERRITORY_ID
1089            , LAB.INDUSTRY_CODE INDUSTRY_CODE
1090            , LAB.INDUSTRY_CLASS INDUSTRY_CLASS
1091            , LAT.SHORT_DESCRIPTION DESCRIPTION
1092            , LAB.ORG_ID ORG_ID
1093            , LAB.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER
1094            , LAB.CREATED_BY CREATED_BY
1095            , LAB.CREATION_DATE CREATION_DATE
1096            , LAB.PARENT_LEASEAPP_ID PARENT_LEASEAPP_ID
1097            , LAB.ACTION ACTION
1098            , LAB.ORIG_STATUS ORIG_STATUS
1099            , LQ.ID LSE_QTE_ID
1100            , LQ.REFERENCE_NUMBER QUOTE_NUMBER
1101            , LQ.STATUS STATUS_CODE
1102            , LQ.VALID_FROM LQ_VALID_FROM
1103            , LQ.VALID_TO LQ_VALID_TO
1104            , LQ.PRICING_METHOD PRICING_METHOD_CODE
1105            , LQ.TERM TERM
1106            , LQ.PRODUCT_ID PRODUCT_ID
1107            , LQ.END_OF_TERM_OPTION_ID END_OF_TERM_OPTION_ID
1108            , LQ.PROPERTY_TAX_APPLICABLE PROPERTY_TAX_APPLICABLE_CODE
1109            , LQ.PROPERTY_TAX_BILLING_TYPE PROPERTY_TAX_BILLING_TYPE_CODE
1110            , LQ.UPFRONT_TAX_TREATMENT UPFRONT_TAX_TREATMENT_CODE
1111            , LQ.PURCHASE_OF_LEASE PURCHASE_OF_LEASE_CODE
1112            , LQ.SALE_AND_LEASE_BACK SALE_AND_LEASE_BACK_CODE
1113            , LQ.INTEREST_DISCLOSED INTEREST_DISCLOSED_CODE
1114            , LQ.TRANSFER_OF_TITLE TRANSFER_OF_TITLE_CODE
1115            , LQ.USAGE_CATEGORY USAGE_CATEGORY
1116            , LQ.AGE_OF_EQUIPMENT AGE_OF_EQUIPMENT
1117            , LQ.UPFRONT_TAX_STREAM_TYPE UPFRONT_TAX_STY_ID
1118            , LQ.PARENT_OBJECT_CODE PARENT_OBJECT_CODE
1119            , LQ.PARENT_OBJECT_ID PARENT_OBJECT_ID
1120            , LQ.EXPECTED_START_DATE LQ_EXPECTED_START_DATE
1121            , LQ.OBJECT_VERSION_NUMBER LQ_OBJECT_VERSION_NUMBER
1122             --asawanka bug 4721141 start
1123            , LQ.EXPECTED_FUNDING_DATE LQ_EXPECTED_FUNDING_DATE
1124            , LQ.EXPECTED_DELIVERY_DATE LQ_EXPECTED_DELIVERY_DATE
1125             --asawanka bug 4721141 end
1126 	    --Added Bug 5647107 ssdeshpa start
1127            , LQ.LEGAL_ENTITY_ID LEGAL_ENTITY_ID
1128            --Added Bug 5647107 ssdeshpa start
1129       FROM OKL_LEASE_APPLICATIONS_B LAB
1130          , OKL_LEASE_APPLICATIONS_TL LAT
1131          , OKL_LEASE_QUOTES_B LQ
1132       WHERE LAB.ID = LAT.ID
1133         AND LAT.LANGUAGE = USERENV('LANG')
1134         AND LQ.PARENT_OBJECT_ID = LAB.ID
1135         AND LQ.PARENT_OBJECT_CODE = 'LEASEAPP'
1136         AND LQ.PRIMARY_QUOTE = 'Y'
1137         AND LAB.ID = cp_lap_id;
1138     lap_db_val_rec lap_db_val_csr%ROWTYPE;
1139 
1140   BEGIN
1141     l_return_status := OKL_API.G_RET_STS_SUCCESS;
1142     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.POPULATE_LEASE_APP';
1143 
1144     -- check for logging on PROCEDURE level
1145     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
1146     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
1147     -- check for logging on STATEMENT level
1148     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
1149 
1150     -- call START_ACTIVITY to create savepoint, check compatibility
1151     -- and initialize message list
1152     l_return_status := OKL_API.START_ACTIVITY(
1153                            p_api_name      => l_api_name
1154                           ,p_pkg_name      => G_PKG_NAME
1155                           ,p_init_msg_list => p_init_msg_list
1156                           ,l_api_version   => l_api_version
1157                           ,p_api_version   => p_api_version
1158                           ,p_api_type      => G_API_TYPE
1159                           ,x_return_status => l_return_status);
1160 
1161     -- check if activity started successfully
1162     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1163       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1164     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1165       RAISE OKL_API.G_EXCEPTION_ERROR;
1166     END IF;
1167 
1168     --Populate lease application rec with database values
1169     IF(p_lap_id IS NOT NULL AND
1170        p_lap_id <> OKL_API.G_MISS_NUM)
1171     THEN
1172       OPEN lap_db_val_csr(p_lap_id);
1173       FETCH lap_db_val_csr INTO lap_db_val_rec;
1174         IF(lap_db_val_csr%NOTFOUND)
1175         THEN
1176           l_return_status := OKL_API.G_RET_STS_ERROR;
1177           OKL_API.SET_MESSAGE(
1178               p_app_name      => G_APP_NAME,
1179               p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
1180           RAISE OKL_API.G_EXCEPTION_ERROR;
1181         ELSE
1182           l_lapv_rec.id := lap_db_val_rec.id;
1183           l_lapv_rec.reference_number := lap_db_val_rec.lease_appl_number;
1184           l_lapv_rec.application_status := lap_db_val_rec.lease_appl_status_code;
1185           l_lapv_rec.valid_from := lap_db_val_rec.valid_from;
1186           l_lapv_rec.valid_to := lap_db_val_rec.valid_to;
1187           l_lapv_rec.prospect_id := lap_db_val_rec.prospect_id;
1188           l_lapv_rec.prospect_address_id := lap_db_val_rec.prospect_address_id;
1189           l_lapv_rec.cust_acct_id := lap_db_val_rec.cust_acct_id;
1190           l_lapv_rec.currency_code := lap_db_val_rec.currency_code;
1191           l_lapv_rec.currency_conversion_type := lap_db_val_rec.conversion_type;
1192           l_lapv_rec.currency_conversion_rate := lap_db_val_rec.conversion_rate;
1193           l_lapv_rec.currency_conversion_date := lap_db_val_rec.conversion_date;
1194           l_lapv_rec.leaseapp_template_id := lap_db_val_rec.leaseapp_template_id;
1195           l_lapv_rec.lease_opportunity_id := lap_db_val_rec.lease_opportunity_id;
1196           l_lapv_rec.credit_line_id := lap_db_val_rec.credit_line_id;
1197           l_lapv_rec.program_agreement_id := lap_db_val_rec.program_agreement_id;
1198           l_lapv_rec.master_lease_id := lap_db_val_rec.master_lease_id;
1199           l_lapv_rec.sales_rep_id := lap_db_val_rec.sales_rep_id;
1200           l_lapv_rec.sales_territory_id := lap_db_val_rec.sales_territory_id;
1201           l_lapv_rec.industry_code := lap_db_val_rec.industry_code;
1202           l_lapv_rec.industry_class := lap_db_val_rec.industry_class;
1203           l_lapv_rec.short_description := lap_db_val_rec.description;
1204           l_lapv_rec.org_id := lap_db_val_rec.org_id;
1205           l_lapv_rec.object_version_number := lap_db_val_rec.object_version_number;
1206           l_lapv_rec.parent_leaseapp_id := lap_db_val_rec.parent_leaseapp_id;
1207           l_lapv_rec.action := lap_db_val_rec.action;
1208           l_lapv_rec.orig_status := lap_db_val_rec.orig_status;
1209           l_lsqv_rec.id := lap_db_val_rec.lse_qte_id;
1210           l_lsqv_rec.reference_number := lap_db_val_rec.quote_number;
1211           l_lsqv_rec.status := lap_db_val_rec.status_code;
1212           l_lsqv_rec.valid_from := lap_db_val_rec.lq_valid_from;
1213           l_lsqv_rec.valid_to := lap_db_val_rec.lq_valid_to;
1214           l_lsqv_rec.pricing_method := lap_db_val_rec.pricing_method_code;
1215           l_lsqv_rec.term := lap_db_val_rec.term;
1216           l_lsqv_rec.product_id := lap_db_val_rec.product_id;
1217           l_lsqv_rec.end_of_term_option_id := lap_db_val_rec.end_of_term_option_id;
1218           l_lsqv_rec.property_tax_applicable := lap_db_val_rec.property_tax_applicable_code;
1219           l_lsqv_rec.property_tax_billing_type := lap_db_val_rec.property_tax_billing_type_code;
1220           l_lsqv_rec.upfront_tax_treatment := lap_db_val_rec.upfront_tax_treatment_code;
1221           l_lsqv_rec.purchase_of_lease := lap_db_val_rec.purchase_of_lease_code;
1222           l_lsqv_rec.sale_and_lease_back := lap_db_val_rec.sale_and_lease_back_code;
1223           l_lsqv_rec.interest_disclosed := lap_db_val_rec.interest_disclosed_code;
1224           l_lsqv_rec.transfer_of_title := lap_db_val_rec.transfer_of_title_code;
1225           l_lsqv_rec.usage_category := lap_db_val_rec.usage_category;
1226           l_lsqv_rec.age_of_equipment := lap_db_val_rec.age_of_equipment;
1227           l_lsqv_rec.upfront_tax_stream_type := lap_db_val_rec.upfront_tax_sty_id;
1228           l_lsqv_rec.parent_object_code := lap_db_val_rec.parent_object_code;
1229           l_lsqv_rec.parent_object_id := lap_db_val_rec.parent_object_id;
1230           l_lsqv_rec.expected_start_date := lap_db_val_rec.lq_expected_start_date;
1231           l_lsqv_rec.object_version_number := lap_db_val_rec.lq_object_version_number;
1232           --asawanka bug 4721141 start
1233           l_lsqv_rec.expected_funding_date := lap_db_val_rec.lq_expected_funding_date;
1234           l_lsqv_rec.expected_delivery_date := lap_db_val_rec.lq_expected_delivery_date;
1235           --asawanka bug 4721141 end
1236 	  --Added Bug 5647107 ssdeshpa start
1237           l_lsqv_rec.legal_entity_id := lap_db_val_rec.legal_entity_id;
1238           --Added Bug 5647107 ssdeshpa end
1239         END IF;
1240       CLOSE lap_db_val_csr;
1241     ELSE
1242       l_return_status := OKL_API.G_RET_STS_ERROR;
1243       OKL_API.SET_MESSAGE(
1244           p_app_name      => G_APP_NAME,
1245           p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
1246       RAISE OKL_API.G_EXCEPTION_ERROR;
1247     END IF; --Lease Application Id is null or G_MISS_NUM
1248 
1249     x_lapv_rec := l_lapv_rec;
1250     x_lsqv_rec := l_lsqv_rec;
1251     x_return_status := l_return_status;
1252 
1253     OKL_API.END_ACTIVITY(
1254         x_msg_count => x_msg_count
1255        ,x_msg_data  => x_msg_data);
1256   EXCEPTION
1257     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1258       --Lease Application Details cursor
1259       IF lap_db_val_csr%ISOPEN
1260       THEN
1261         CLOSE lap_db_val_csr;
1262       END IF;
1263       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1264                            p_api_name  => l_api_name,
1265                            p_pkg_name  => G_PKG_NAME,
1266                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
1267                            x_msg_count => x_msg_count,
1268                            x_msg_data  => x_msg_data,
1269                            p_api_type  => G_API_TYPE);
1270 
1271     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1272       --Lease Application Details cursor
1273       IF lap_db_val_csr%ISOPEN
1274       THEN
1275         CLOSE lap_db_val_csr;
1276       END IF;
1277       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1278                            p_api_name  => l_api_name,
1279                            p_pkg_name  => G_PKG_NAME,
1280                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1281                            x_msg_count => x_msg_count,
1282                            x_msg_data  => x_msg_data,
1283                            p_api_type  => G_API_TYPE);
1284 
1285     WHEN OTHERS THEN
1286       --Lease Application Details cursor
1287       IF lap_db_val_csr%ISOPEN
1288       THEN
1289         CLOSE lap_db_val_csr;
1290       END IF;
1291       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1292                            p_api_name  => l_api_name,
1293                            p_pkg_name  => G_PKG_NAME,
1294                            p_exc_name  => 'OTHERS',
1295                            x_msg_count => x_msg_count,
1296                            x_msg_data  => x_msg_data,
1297                            p_api_type  => G_API_TYPE);
1298   END populate_lease_app;
1299 
1300   -------------------------------------------------------------------------------
1301   -- PROCEDURE pop_checklist_item
1302   -------------------------------------------------------------------------------
1303   -- Start of comments
1304   --
1305   -- Procedure Name  : pop_checklist_item
1306   -- Description     : This procedure populates cldv_rec with the database values
1307   --                   for a given Checklist Item Id.
1308   -- Business Rules  : This procedure populates cldv_rec with the database values
1309   --                   for a given Checklist Item Id.
1310   -- Parameters      :
1311   -- Version         : 1.0
1312   -- History         : 28-MAR-2006 PAGARG created
1313   --
1314   -- End of comments
1315   PROCEDURE pop_checklist_item(
1316             p_api_version        IN  NUMBER,
1317             p_init_msg_list      IN  VARCHAR2,
1318             p_cld_id             IN  OKL_CHECKLIST_DETAILS.ID%TYPE,
1319             x_cldv_rec           OUT NOCOPY OKL_CLD_PVT.CLDV_REC_TYPE,
1320             x_return_status      OUT NOCOPY VARCHAR2,
1321             x_msg_count          OUT NOCOPY NUMBER,
1322             x_msg_data           OUT NOCOPY VARCHAR2)
1323   IS
1324     -- Variables Declarations
1325     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
1326     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'POP_CHECKLIST_ITEM';
1327     l_return_status          VARCHAR2(1);
1328 
1329     -- Record/Table Type Declarations
1330     l_cldv_rec      OKL_CLD_PVT.CLDV_REC_TYPE;
1331 
1332     --Cursor to populate Lease Application details from database
1333     CURSOR cld_db_val_csr(cp_cld_id NUMBER) IS
1334       SELECT CLD.ID ID
1335            , CLD.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER
1336            , CLD.CKL_ID CKL_ID
1337            , CLD.TODO_ITEM_CODE TODO_ITEM_CODE
1338            , CLD.ATTRIBUTE_CATEGORY ATTRIBUTE_CATEGORY
1339            , CLD.ATTRIBUTE1 ATTRIBUTE1
1340            , CLD.ATTRIBUTE2 ATTRIBUTE2
1341            , CLD.ATTRIBUTE3 ATTRIBUTE3
1342            , CLD.ATTRIBUTE4 ATTRIBUTE4
1343            , CLD.ATTRIBUTE5 ATTRIBUTE5
1344            , CLD.ATTRIBUTE6 ATTRIBUTE6
1345            , CLD.ATTRIBUTE7 ATTRIBUTE7
1346            , CLD.ATTRIBUTE8 ATTRIBUTE8
1347            , CLD.ATTRIBUTE9 ATTRIBUTE9
1348            , CLD.ATTRIBUTE10 ATTRIBUTE10
1349            , CLD.ATTRIBUTE11 ATTRIBUTE11
1350            , CLD.ATTRIBUTE12 ATTRIBUTE12
1351            , CLD.ATTRIBUTE13 ATTRIBUTE13
1352            , CLD.ATTRIBUTE14 ATTRIBUTE14
1353            , CLD.ATTRIBUTE15 ATTRIBUTE15
1354            , CLD.ORG_ID ORG_ID
1355            , CLD.MANDATORY_FLAG MANDATORY_FLAG
1356            , CLD.USER_COMPLETE_FLAG USER_COMPLETE_FLAG
1357            , CLD.ADMIN_NOTE ADMIN_NOTE
1358            , CLD.USER_NOTE USER_NOTE
1359            , CLD.FUNCTION_VALIDATE_RSTS FUNCTION_VALIDATE_RSTS
1360            , CLD.FUNCTION_VALIDATE_MSG FUNCTION_VALIDATE_MSG
1361            , CLD.DNZ_CHECKLIST_OBJ_ID DNZ_CHECKLIST_OBJ_ID
1362            , CLD.FUNCTION_ID FUNCTION_ID
1363            , CLD.INST_CHECKLIST_TYPE INST_CHECKLIST_TYPE
1364            , CLD.APPEAL_FLAG APPEAL_FLAG
1365       FROM OKL_CHECKLIST_DETAILS CLD
1366       WHERE CLD.ID = cp_cld_id;
1367     cld_db_val_rec cld_db_val_csr%ROWTYPE;
1368   BEGIN
1369     l_return_status := OKL_API.G_RET_STS_SUCCESS;
1370     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.POP_CHECKLIST_ITEM';
1371 
1372     -- check for logging on PROCEDURE level
1373     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
1374     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
1375     -- check for logging on STATEMENT level
1376     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
1377 
1378     -- call START_ACTIVITY to create savepoint, check compatibility
1379     -- and initialize message list
1380     l_return_status := OKL_API.START_ACTIVITY(
1381                            p_api_name      => l_api_name
1382                           ,p_pkg_name      => G_PKG_NAME
1383                           ,p_init_msg_list => p_init_msg_list
1384                           ,l_api_version   => l_api_version
1385                           ,p_api_version   => p_api_version
1386                           ,p_api_type      => G_API_TYPE
1387                           ,x_return_status => l_return_status);
1388 
1389     -- check if activity started successfully
1390     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1391       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1392     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1393       RAISE OKL_API.G_EXCEPTION_ERROR;
1394     END IF;
1395 
1396     --Populate lease application rec with database values
1397     IF(p_cld_id IS NOT NULL AND
1398        p_cld_id <> OKL_API.G_MISS_NUM)
1399     THEN
1400       OPEN cld_db_val_csr(p_cld_id);
1401       FETCH cld_db_val_csr INTO cld_db_val_rec;
1402         IF(cld_db_val_csr%FOUND)
1403         THEN
1404           l_cldv_rec.id := cld_db_val_rec.id;
1405           l_cldv_rec.object_version_number := cld_db_val_rec.object_version_number;
1406           l_cldv_rec.ckl_id := cld_db_val_rec.ckl_id;
1407           l_cldv_rec.todo_item_code := cld_db_val_rec.todo_item_code;
1408           l_cldv_rec.attribute_category := cld_db_val_rec.attribute_category;
1409           l_cldv_rec.attribute1 := cld_db_val_rec.attribute1;
1410           l_cldv_rec.attribute2 := cld_db_val_rec.attribute2;
1411           l_cldv_rec.attribute3 := cld_db_val_rec.attribute3;
1412           l_cldv_rec.attribute4 := cld_db_val_rec.attribute4;
1413           l_cldv_rec.attribute5 := cld_db_val_rec.attribute5;
1414           l_cldv_rec.attribute6 := cld_db_val_rec.attribute6;
1415           l_cldv_rec.attribute7 := cld_db_val_rec.attribute7;
1416           l_cldv_rec.attribute8 := cld_db_val_rec.attribute8;
1417           l_cldv_rec.attribute9 := cld_db_val_rec.attribute9;
1418           l_cldv_rec.attribute10 := cld_db_val_rec.attribute10;
1419           l_cldv_rec.attribute11 := cld_db_val_rec.attribute11;
1420           l_cldv_rec.attribute12 := cld_db_val_rec.attribute12;
1421           l_cldv_rec.attribute13 := cld_db_val_rec.attribute13;
1422           l_cldv_rec.attribute14 := cld_db_val_rec.attribute14;
1423           l_cldv_rec.attribute15 := cld_db_val_rec.attribute15;
1424           l_cldv_rec.org_id := cld_db_val_rec.org_id;
1425           l_cldv_rec.mandatory_flag := cld_db_val_rec.mandatory_flag;
1426           l_cldv_rec.user_complete_flag := cld_db_val_rec.user_complete_flag;
1427           l_cldv_rec.admin_note := cld_db_val_rec.admin_note;
1428           l_cldv_rec.user_note := cld_db_val_rec.user_note;
1429           l_cldv_rec.function_validate_rsts := cld_db_val_rec.function_validate_rsts;
1430           l_cldv_rec.function_validate_msg := cld_db_val_rec.function_validate_msg;
1431           l_cldv_rec.dnz_checklist_obj_id := cld_db_val_rec.dnz_checklist_obj_id;
1432           l_cldv_rec.function_id := cld_db_val_rec.function_id;
1433           l_cldv_rec.inst_checklist_type := cld_db_val_rec.inst_checklist_type;
1434           l_cldv_rec.appeal_flag := cld_db_val_rec.appeal_flag;
1435         END IF;
1436       CLOSE cld_db_val_csr;
1437     END IF;--Checklist Details Id is null or G_MISS_NUM
1438 
1439     x_cldv_rec := l_cldv_rec;
1440     x_return_status := l_return_status;
1441     OKL_API.END_ACTIVITY(
1442         x_msg_count => x_msg_count
1443        ,x_msg_data  => x_msg_data);
1444   EXCEPTION
1445     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1446       --Checklist Details cursor
1447       IF cld_db_val_csr%ISOPEN
1448       THEN
1449         CLOSE cld_db_val_csr;
1450       END IF;
1451       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1452                            p_api_name  => l_api_name,
1453                            p_pkg_name  => G_PKG_NAME,
1454                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
1455                            x_msg_count => x_msg_count,
1456                            x_msg_data  => x_msg_data,
1457                            p_api_type  => G_API_TYPE);
1458 
1459     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1460       --Checklist Details cursor
1461       IF cld_db_val_csr%ISOPEN
1462       THEN
1463         CLOSE cld_db_val_csr;
1464       END IF;
1465       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1466                            p_api_name  => l_api_name,
1467                            p_pkg_name  => G_PKG_NAME,
1468                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1469                            x_msg_count => x_msg_count,
1470                            x_msg_data  => x_msg_data,
1471                            p_api_type  => G_API_TYPE);
1472 
1473     WHEN OTHERS THEN
1474       --Checklist Details cursor
1475       IF cld_db_val_csr%ISOPEN
1476       THEN
1477         CLOSE cld_db_val_csr;
1478       END IF;
1479       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1480                            p_api_name  => l_api_name,
1481                            p_pkg_name  => G_PKG_NAME,
1482                            p_exc_name  => 'OTHERS',
1483                            x_msg_count => x_msg_count,
1484                            x_msg_data  => x_msg_data,
1485                            p_api_type  => G_API_TYPE);
1486   END pop_checklist_item;
1487 
1488   ------------------------------------------------------------------------------
1489   -- PROCEDURE set_in_progress_status
1490   ------------------------------------------------------------------------------
1491   -- Start of comments
1492   --
1493   -- Procedure Name  : set_in_progress_status
1494   -- Description     : This procedure sets the in progress status for lease
1495   --                   application based on the type of action
1496   --                   THIS PROCEDURE IS ONLY FOR OKL INTERNAL DEVELOPMENT PURPOSE
1497   -- Business Rules  : This procedure sets the in progress status for lease
1498   --                   application based on the type of action. It will store the
1499   --                   current status in orig_status
1500   -- Parameters      :
1501   -- Version         : 1.0
1502   -- History         : 28-Feb-2006 PAGARG created Bug 4872271
1503   --
1504   -- End of comments
1505   PROCEDURE set_in_progress_status(
1506             p_api_version        IN  NUMBER,
1507             p_init_msg_list      IN  VARCHAR2,
1508             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
1509             p_action             IN  VARCHAR2,
1510 			x_return_status      OUT NOCOPY VARCHAR2,
1511             x_msg_count          OUT NOCOPY NUMBER,
1512             x_msg_data           OUT NOCOPY VARCHAR2)
1513   IS
1514     -- Variables Declarations
1515     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
1516     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'SET_IN_PROGRESS_STATUS';
1517     l_return_status            VARCHAR2(1);
1518 
1519     -- Record/Table Type Declarations
1520     l_lapv_rec		lapv_rec_type;
1521     x_lapv_rec		lapv_rec_type;
1522     x_lsqv_rec      lsqv_rec_type;
1523   BEGIN
1524     l_return_status := OKL_API.G_RET_STS_SUCCESS;
1525     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.SET_IN_PROGRESS_STATUS';
1526 
1527     -- check for logging on PROCEDURE level
1528     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
1529     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
1530     -- check for logging on STATEMENT level
1531     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
1532 
1533     -- call START_ACTIVITY to create savepoint, check compatibility
1534     -- and initialize message list
1535     l_return_status := OKL_API.START_ACTIVITY(
1536                            p_api_name      => l_api_name
1537                           ,p_pkg_name      => G_PKG_NAME
1538                           ,p_init_msg_list => p_init_msg_list
1539                           ,l_api_version   => l_api_version
1540                           ,p_api_version   => p_api_version
1541                           ,p_api_type      => G_API_TYPE
1542                           ,x_return_status => l_return_status);
1543 
1544     -- check if activity started successfully
1545     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1546       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1547     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1548       RAISE OKL_API.G_EXCEPTION_ERROR;
1549     END IF;
1550 
1551     --Populate Lease Application rec with the values from database.
1552     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1553     THEN
1554       OKL_DEBUG_PUB.LOG_DEBUG(
1555           FND_LOG.LEVEL_PROCEDURE
1556          ,L_MODULE
1557          ,'begin debug call POPULATE_LEASE_APP');
1558     END IF;
1559 
1560     POPULATE_LEASE_APP(
1561         p_api_version           => p_api_version
1562        ,p_init_msg_list         => OKL_API.G_FALSE
1563        ,x_return_status         => l_return_status
1564        ,x_msg_count             => x_msg_count
1565        ,x_msg_data              => x_msg_data
1566        ,p_lap_id                => p_lap_id
1567        ,x_lapv_rec              => x_lapv_rec
1568        ,x_lsqv_rec              => x_lsqv_rec);
1569 
1570     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1571     THEN
1572       OKL_DEBUG_PUB.LOG_DEBUG(
1573           FND_LOG.LEVEL_PROCEDURE
1574          ,L_MODULE
1575          ,'end debug call POPULATE_LEASE_APP');
1576     END IF;
1577 
1578     -- write to log
1579     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
1580       OKL_DEBUG_PUB.LOG_DEBUG(
1581           FND_LOG.LEVEL_STATEMENT
1582          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
1583          ,'l_return_status ' || l_return_status);
1584     END IF; -- end of statement level debug
1585 
1586     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
1587       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1588     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
1589       RAISE OKL_API.G_EXCEPTION_ERROR;
1590     END IF;
1591 
1592     l_lapv_rec := x_lapv_rec;
1593     l_lapv_rec.orig_status := l_lapv_rec.application_status;
1594     IF(p_action = 'APPEAL')
1595     THEN
1596       l_lapv_rec.application_status := 'APPEALINPROG';
1597     ELSIF(p_action = 'RESUBMIT')
1598     THEN
1599       l_lapv_rec.application_status := 'RESUBMITINPROG';
1600     END IF;
1601 
1602     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1603     THEN
1604       OKL_DEBUG_PUB.LOG_DEBUG(
1605           FND_LOG.LEVEL_PROCEDURE
1606          ,L_MODULE
1607          ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
1608     END IF;
1609 
1610     OKL_LAP_PVT.UPDATE_ROW(
1611         p_api_version           => p_api_version
1612        ,p_init_msg_list         => OKL_API.G_FALSE
1613        ,x_return_status         => l_return_status
1614        ,x_msg_count             => x_msg_count
1615        ,x_msg_data              => x_msg_data
1616        ,p_lapv_rec              => l_lapv_rec
1617        ,x_lapv_rec              => x_lapv_rec);
1618 
1619     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1620     THEN
1621       OKL_DEBUG_PUB.LOG_DEBUG(
1622           FND_LOG.LEVEL_PROCEDURE
1623          ,L_MODULE
1624          ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
1625     END IF;
1626 
1627     -- write to log
1628     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
1629       OKL_DEBUG_PUB.LOG_DEBUG(
1630           FND_LOG.LEVEL_STATEMENT
1631          ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
1632          ,'l_return_status ' || l_return_status);
1633     END IF; -- end of statement level debug
1634 
1635     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
1636       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1637     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
1638       RAISE OKL_API.G_EXCEPTION_ERROR;
1639     END IF;
1640 
1641     x_return_status := l_return_status;
1642     OKL_API.END_ACTIVITY(
1643          x_msg_count    => x_msg_count
1644         ,x_msg_data	    => x_msg_data);
1645   EXCEPTION
1646     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1647       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1648                            p_api_name  => l_api_name,
1649                            p_pkg_name  => G_PKG_NAME,
1650                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
1651                            x_msg_count => x_msg_count,
1652                            x_msg_data  => x_msg_data,
1653                            p_api_type  => G_API_TYPE);
1654 
1655     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1656       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1657                            p_api_name  => l_api_name,
1658                            p_pkg_name  => G_PKG_NAME,
1659                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1660                            x_msg_count => x_msg_count,
1661                            x_msg_data  => x_msg_data,
1662                            p_api_type  => G_API_TYPE);
1663 
1664     WHEN OTHERS THEN
1665       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1666                            p_api_name  => l_api_name,
1667                            p_pkg_name  => G_PKG_NAME,
1668                            p_exc_name  => 'OTHERS',
1669                            x_msg_count => x_msg_count,
1670                            x_msg_data  => x_msg_data,
1671                            p_api_type  => G_API_TYPE);
1672   END set_in_progress_status;
1673 
1674   ------------------------------------------------------------------------------
1675   -- PROCEDURE revert_to_orig_status
1676   ------------------------------------------------------------------------------
1677   -- Start of comments
1678   --
1679   -- Procedure Name  : revert_to_orig_status
1680   -- Description     : This procedure updates the status of parent lease
1681   --                   application with the status stored in orig_status
1682   --                   THIS PROCEDURE IS ONLY FOR OKL INTERNAL DEVELOPMENT PURPOSE
1683   -- Business Rules  : This procedure updates the status of parent lease
1684   --                   application with the status stored in orig_status. It will
1685   --                   then clear the value in orig_status
1686   -- Parameters      :
1687   -- Version         : 1.0
1688   -- History         : 28-Feb-2006 PAGARG created Bug 4872271
1689   --
1690   -- End of comments
1691   PROCEDURE revert_to_orig_status(
1692             p_api_version        IN  NUMBER,
1693             p_init_msg_list      IN  VARCHAR2,
1694             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
1695             x_return_status      OUT NOCOPY VARCHAR2,
1696             x_msg_count          OUT NOCOPY NUMBER,
1697             x_msg_data           OUT NOCOPY VARCHAR2)
1698   IS
1699     -- Variables Declarations
1700     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
1701     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'REVERT_TO_ORIG_STATUS';
1702     l_return_status            VARCHAR2(1);
1703 
1704     -- Record/Table Type Declarations
1705     l_lapv_rec		lapv_rec_type;
1706     x_lapv_rec		lapv_rec_type;
1707     x_lsqv_rec      lsqv_rec_type;
1708 
1709     --Cursor to obtain Parent Lease Application Details
1710     CURSOR lse_app_dtls_csr(cp_lse_app_id NUMBER) IS
1711       SELECT PLAB.ID PARENT_LSE_APP_ID
1712            , PLAB.APPLICATION_STATUS PARENT_LSE_APP_STS
1713         FROM OKL_LEASE_APPLICATIONS_B LAB
1714            , OKL_LEASE_APPLICATIONS_B PLAB
1715        WHERE LAB.ID = cp_lse_app_id
1716          AND PLAB.ID = LAB.PARENT_LEASEAPP_ID;
1717     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
1718   BEGIN
1719     l_return_status := OKL_API.G_RET_STS_SUCCESS;
1720     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.REVERT_TO_ORIG_STATUS';
1721 
1722     -- check for logging on PROCEDURE level
1723     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
1724     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
1725     -- check for logging on STATEMENT level
1726     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
1727 
1728     -- call START_ACTIVITY to create savepoint, check compatibility
1729     -- and initialize message list
1730     l_return_status := OKL_API.START_ACTIVITY(
1731                            p_api_name      => l_api_name
1732                           ,p_pkg_name      => G_PKG_NAME
1733                           ,p_init_msg_list => p_init_msg_list
1734                           ,l_api_version   => l_api_version
1735                           ,p_api_version   => p_api_version
1736                           ,p_api_type      => G_API_TYPE
1737                           ,x_return_status => l_return_status);
1738 
1739     -- check if activity started successfully
1740     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1741       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1742     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1743       RAISE OKL_API.G_EXCEPTION_ERROR;
1744     END IF;
1745 
1746     OPEN lse_app_dtls_csr(p_lap_id);
1747     FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
1748     CLOSE lse_app_dtls_csr;
1749 
1750     IF(lse_app_dtls_rec.parent_lse_app_id IS NOT NULL
1751        AND lse_app_dtls_rec.parent_lse_app_sts IN ('APPEALINPROG', 'RESUBMITINPROG') )
1752     THEN
1753       --Populate Lease Application rec with the values from database.
1754       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1755       THEN
1756         OKL_DEBUG_PUB.LOG_DEBUG(
1757             FND_LOG.LEVEL_PROCEDURE
1758            ,L_MODULE
1759            ,'begin debug call POPULATE_LEASE_APP');
1760       END IF;
1761 
1762       POPULATE_LEASE_APP(
1763           p_api_version           => p_api_version
1764          ,p_init_msg_list         => OKL_API.G_FALSE
1765          ,x_return_status         => l_return_status
1766          ,x_msg_count             => x_msg_count
1767          ,x_msg_data              => x_msg_data
1768          ,p_lap_id                => lse_app_dtls_rec.parent_lse_app_id
1769          ,x_lapv_rec              => x_lapv_rec
1770          ,x_lsqv_rec              => x_lsqv_rec);
1771 
1772       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1773       THEN
1774         OKL_DEBUG_PUB.LOG_DEBUG(
1775             FND_LOG.LEVEL_PROCEDURE
1776            ,L_MODULE
1777            ,'end debug call POPULATE_LEASE_APP');
1778       END IF;
1779 
1780       -- write to log
1781       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
1782         OKL_DEBUG_PUB.LOG_DEBUG(
1783             FND_LOG.LEVEL_STATEMENT
1784            ,L_MODULE || ' Result of POPULATE_LEASE_APP'
1785            ,'l_return_status ' || l_return_status);
1786       END IF; -- end of statement level debug
1787 
1788       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
1789         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1790       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
1791         RAISE OKL_API.G_EXCEPTION_ERROR;
1792       END IF;
1793 
1794       l_lapv_rec := x_lapv_rec;
1795       l_lapv_rec.application_status := l_lapv_rec.orig_status;
1796       l_lapv_rec.orig_status := NULL;
1797 
1798       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1799       THEN
1800         OKL_DEBUG_PUB.LOG_DEBUG(
1801             FND_LOG.LEVEL_PROCEDURE
1802            ,L_MODULE
1803            ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
1804       END IF;
1805 
1806       OKL_LAP_PVT.UPDATE_ROW(
1807           p_api_version           => p_api_version
1808          ,p_init_msg_list         => OKL_API.G_FALSE
1809          ,x_return_status         => l_return_status
1810          ,x_msg_count             => x_msg_count
1811          ,x_msg_data              => x_msg_data
1812          ,p_lapv_rec              => l_lapv_rec
1813          ,x_lapv_rec              => x_lapv_rec);
1814 
1815       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
1816       THEN
1817         OKL_DEBUG_PUB.LOG_DEBUG(
1818             FND_LOG.LEVEL_PROCEDURE
1819            ,L_MODULE
1820            ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
1821       END IF;
1822 
1823       -- write to log
1824       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
1825         OKL_DEBUG_PUB.LOG_DEBUG(
1826             FND_LOG.LEVEL_STATEMENT
1827            ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
1828            ,'l_return_status ' || l_return_status);
1829       END IF; -- end of statement level debug
1830 
1831       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
1832         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1833       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
1834         RAISE OKL_API.G_EXCEPTION_ERROR;
1835       END IF;
1836     END IF;--if parent lease app id is not null and status is in progress status
1837 
1838     x_return_status := l_return_status;
1839     OKL_API.END_ACTIVITY(
1840          x_msg_count    => x_msg_count
1841         ,x_msg_data	    => x_msg_data);
1842   EXCEPTION
1843     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1844       --Lease Application Details cursor
1845       IF lse_app_dtls_csr%ISOPEN
1846       THEN
1847         CLOSE lse_app_dtls_csr;
1848       END IF;
1849       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1850                            p_api_name  => l_api_name,
1851                            p_pkg_name  => G_PKG_NAME,
1852                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
1853                            x_msg_count => x_msg_count,
1854                            x_msg_data  => x_msg_data,
1855                            p_api_type  => G_API_TYPE);
1856     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1857       --Lease Application Details cursor
1858       IF lse_app_dtls_csr%ISOPEN
1859       THEN
1860         CLOSE lse_app_dtls_csr;
1861       END IF;
1862       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1863                            p_api_name  => l_api_name,
1864                            p_pkg_name  => G_PKG_NAME,
1865                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
1866                            x_msg_count => x_msg_count,
1867                            x_msg_data  => x_msg_data,
1868                            p_api_type  => G_API_TYPE);
1869     WHEN OTHERS THEN
1870       --Lease Application Details cursor
1871       IF lse_app_dtls_csr%ISOPEN
1872       THEN
1873         CLOSE lse_app_dtls_csr;
1874       END IF;
1875       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1876                            p_api_name  => l_api_name,
1877                            p_pkg_name  => G_PKG_NAME,
1878                            p_exc_name  => 'OTHERS',
1879                            x_msg_count => x_msg_count,
1880                            x_msg_data  => x_msg_data,
1881                            p_api_type  => G_API_TYPE);
1882   END revert_to_orig_status;
1883 
1884   -------------------------------------------------------------------------------
1885   -- PROCEDURE check_lease_quote_defaults
1886   -------------------------------------------------------------------------------
1887   -- Start of comments
1888   --
1889   -- Procedure Name  : check_lease_quote_defaults
1890   -- Description     : This procedure checks the values defaulted in lease
1891   --                 : application from lease quote.
1892   -- Business Rules  : If default values from lease quote are not changed then
1893   --                 : set the status as Pricing Approved else Incomplete
1894   -- Parameters      :
1895   -- Version         : 1.0
1896   -- History         : 30-MAY-2005 PAGARG created
1897   --                 : 02 Jan 2006 PAGARG Bug 4902717 Fixed the cursor to compare
1898   --                   default values
1899   --                 : 18 Jan 2006 PAGARG BUG 4951955 Instead of lapv_rec, take source
1900   --                   Lease Quote Id as input so that this procedure can be reused
1901   --                 : 17 Feb 2006 PAGARG BUG 4905261 Included comparison of some
1902   --                   header level attributes to identify if there are any changes done
1903   -- End of comments
1904   PROCEDURE check_lease_quote_defaults(
1905             p_api_version        IN  NUMBER,
1906             p_init_msg_list      IN  VARCHAR2,
1907             x_return_status      OUT NOCOPY VARCHAR2,
1908             x_msg_count          OUT NOCOPY NUMBER,
1909             x_msg_data           OUT NOCOPY VARCHAR2,
1910             p_source_lsq_id      IN  OKL_LEASE_QUOTES_B.ID%TYPE,
1911             p_lapv_rec           IN  lapv_rec_type,
1912             p_lsqv_rec           IN  lsqv_rec_type)
1913   IS
1914     -- Variables Declarations
1915     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
1916     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'CHECK_LEASE_QUOTE_DEFAULTS';
1917     l_return_status          VARCHAR2(1);
1918 
1919     --02 Jan 2006 PAGARG Bug 4902717 Fixed the condition to compare default values
1920     --as values passed from java layer will not be null but G_MISS
1921     --BUG 4936112 PAGARG Removed the check for pricing method
1922     --BUG 4951955 PAGARG Instead of Lease Opp id, Lease Quote id is the input
1923     --Cursor to query the default values from lease quote
1924     CURSOR lsq_db_val_csr(cp_lsq_id NUMBER, cp_lsqv_rec lsqv_rec_type) IS
1925       SELECT LQ.REFERENCE_NUMBER REFERENCE_NUMBER
1926       FROM OKL_LEASE_QUOTES_B LQ
1927       WHERE LQ.ID = cp_lsq_id
1928 --        AND NVL(LQ.PRICING_METHOD, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.PRICING_METHOD, OKL_API.G_MISS_CHAR)
1929         AND NVL(LQ.EXPECTED_START_DATE, OKL_API.G_MISS_DATE) = NVL(cp_lsqv_rec.EXPECTED_START_DATE, OKL_API.G_MISS_DATE)
1930         AND NVL(LQ.VALID_FROM, OKL_API.G_MISS_DATE) = NVL(cp_lsqv_rec.VALID_FROM, OKL_API.G_MISS_DATE)
1931         AND NVL(LQ.VALID_TO, OKL_API.G_MISS_DATE) = NVL(cp_lsqv_rec.VALID_TO, OKL_API.G_MISS_DATE)
1932         AND NVL(LQ.TERM, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.TERM, OKL_API.G_MISS_NUM)
1933         AND NVL(LQ.PRODUCT_ID, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.PRODUCT_ID, OKL_API.G_MISS_NUM)
1934         AND NVL(LQ.END_OF_TERM_OPTION_ID, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.END_OF_TERM_OPTION_ID, OKL_API.G_MISS_NUM)
1935         AND NVL(LQ.PROPERTY_TAX_APPLICABLE, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.PROPERTY_TAX_APPLICABLE, OKL_API.G_MISS_CHAR)
1936         AND NVL(LQ.PROPERTY_TAX_BILLING_TYPE, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.PROPERTY_TAX_BILLING_TYPE, OKL_API.G_MISS_CHAR)
1937         AND NVL(LQ.USAGE_CATEGORY, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.USAGE_CATEGORY, OKL_API.G_MISS_CHAR)
1938         AND NVL(LQ.UPFRONT_TAX_TREATMENT, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.UPFRONT_TAX_TREATMENT, OKL_API.G_MISS_CHAR)
1939         AND NVL(LQ.UPFRONT_TAX_STREAM_TYPE, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.UPFRONT_TAX_STREAM_TYPE, OKL_API.G_MISS_NUM)
1940         AND NVL(LQ.TRANSFER_OF_TITLE, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.TRANSFER_OF_TITLE, OKL_API.G_MISS_CHAR)
1941         AND NVL(LQ.AGE_OF_EQUIPMENT, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.AGE_OF_EQUIPMENT, OKL_API.G_MISS_NUM)
1942         AND NVL(LQ.PURCHASE_OF_LEASE, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.PURCHASE_OF_LEASE, OKL_API.G_MISS_CHAR)
1943         AND NVL(LQ.SALE_AND_LEASE_BACK, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.SALE_AND_LEASE_BACK, OKL_API.G_MISS_CHAR)
1944         AND NVL(LQ.INTEREST_DISCLOSED, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.INTEREST_DISCLOSED, OKL_API.G_MISS_CHAR)
1945 	    --Added Bug # 5647107 start
1946 	    AND NVL(LQ.LEGAL_ENTITY_ID, OKL_API.G_MISS_NUM) = NVL(cp_lsqv_rec.LEGAL_ENTITY_ID, OKL_API.G_MISS_NUM)
1947         --Added Bug # 5647107 end
1948         -- Bug 5908845. eBTax Enhancement Project
1949         AND NVL(LQ.LINE_INTENDED_USE, OKL_API.G_MISS_CHAR) = NVL(cp_lsqv_rec.LINE_INTENDED_USE, OKL_API.G_MISS_CHAR);
1950         -- End Bug 5908845. eBTax Enhancement Project
1951 
1952     lsq_db_val_rec lsq_db_val_csr%ROWTYPE;
1953 
1954     --Cursor to compare the db values of lease app header with the one in rec
1955     CURSOR lap_db_val_csr(cp_lap_id NUMBER, cp_lapv_rec lapv_rec_type) IS
1956       SELECT LAP.REFERENCE_NUMBER REFERENCE_NUMBER
1957       FROM OKL_LEASE_APPLICATIONS_B LAP
1958       WHERE LAP.ID = cp_lap_id
1959         AND NVL(LAP.PROSPECT_ADDRESS_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.prospect_address_id, OKL_API.G_MISS_NUM)
1960         AND NVL(LAP.CUST_ACCT_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.cust_acct_id, OKL_API.G_MISS_NUM)
1961         AND NVL(LAP.MASTER_LEASE_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.master_lease_id, OKL_API.G_MISS_NUM)
1962         AND NVL(LAP.CURRENCY_CODE, OKL_API.G_MISS_CHAR) = NVL(cp_lapv_rec.currency_code, OKL_API.G_MISS_CHAR)
1963         AND NVL(LAP.CURRENCY_CONVERSION_TYPE, OKL_API.G_MISS_CHAR) = NVL(cp_lapv_rec.currency_conversion_type, OKL_API.G_MISS_CHAR)
1964         AND NVL(LAP.CURRENCY_CONVERSION_RATE, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.currency_conversion_rate, OKL_API.G_MISS_NUM)
1965         AND NVL(LAP.CURRENCY_CONVERSION_DATE, OKL_API.G_MISS_DATE) = NVL(cp_lapv_rec.currency_conversion_date, OKL_API.G_MISS_DATE);
1966     lap_db_val_rec lap_db_val_csr%ROWTYPE;
1967 
1968     --Cursor to compare the db values of lease app header with the one in rec
1969     CURSOR lop_db_val_csr(cp_lop_id NUMBER, cp_lapv_rec lapv_rec_type) IS
1970       SELECT LOP.REFERENCE_NUMBER REFERENCE_NUMBER
1971       FROM OKL_LEASE_OPPORTUNITIES_B LOP
1972       WHERE LOP.ID = cp_lop_id
1973         AND NVL(LOP.PROSPECT_ADDRESS_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.prospect_address_id, OKL_API.G_MISS_NUM)
1974         AND NVL(LOP.CUST_ACCT_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.cust_acct_id, OKL_API.G_MISS_NUM)
1975         AND NVL(LOP.MASTER_LEASE_ID, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.master_lease_id, OKL_API.G_MISS_NUM)
1976         AND NVL(LOP.CURRENCY_CODE, OKL_API.G_MISS_CHAR) = NVL(cp_lapv_rec.currency_code, OKL_API.G_MISS_CHAR)
1977         AND NVL(LOP.CURRENCY_CONVERSION_TYPE, OKL_API.G_MISS_CHAR) = NVL(cp_lapv_rec.currency_conversion_type, OKL_API.G_MISS_CHAR)
1978         AND NVL(LOP.CURRENCY_CONVERSION_RATE, OKL_API.G_MISS_NUM) = NVL(cp_lapv_rec.currency_conversion_rate, OKL_API.G_MISS_NUM)
1979         AND NVL(LOP.CURRENCY_CONVERSION_DATE, OKL_API.G_MISS_DATE) = NVL(cp_lapv_rec.currency_conversion_date, OKL_API.G_MISS_DATE);
1980     lop_db_val_rec lop_db_val_csr%ROWTYPE;
1981 
1982     --Cursor to obtain parent object information of lease quote
1983     CURSOR lsq_parent_csr(cp_lsq_id NUMBER) IS
1984       SELECT LQ.PARENT_OBJECT_CODE PARENT_OBJECT_CODE
1985            , LQ.PARENT_OBJECT_ID PARENT_OBJECT_ID
1986       FROM OKL_LEASE_QUOTES_B LQ
1987       WHERE LQ.ID = cp_lsq_id;
1988     lsq_parent_rec lsq_parent_csr%ROWTYPE;
1989   BEGIN
1990     l_return_status := OKL_API.G_RET_STS_SUCCESS;
1991     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CHECK_LEASE_QUOTE_DEFAULTS';
1992 
1993     -- check for logging on PROCEDURE level
1994     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
1995     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
1996     -- check for logging on STATEMENT level
1997     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
1998 
1999     -- call START_ACTIVITY to create savepoint, check compatibility
2000     -- and initialize message list
2001     l_return_status := OKL_API.START_ACTIVITY(
2002                            p_api_name      => l_api_name
2003                           ,p_pkg_name      => G_PKG_NAME
2004                           ,p_init_msg_list => p_init_msg_list
2005                           ,l_api_version   => l_api_version
2006                           ,p_api_version   => p_api_version
2007                           ,p_api_type      => G_API_TYPE
2008                           ,x_return_status => l_return_status);
2009 
2010     -- check if activity started successfully
2011     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2012       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2013     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2014       RAISE OKL_API.G_EXCEPTION_ERROR;
2015     END IF;
2016 
2017     --Populate lease application rec with database values
2018     IF(p_source_lsq_id IS NOT NULL AND
2019        p_source_lsq_id <> OKL_API.G_MISS_NUM)
2020     THEN
2021       OPEN lsq_parent_csr(p_source_lsq_id);
2022       FETCH lsq_parent_csr INTO lsq_parent_rec;
2023         IF(lsq_parent_csr%NOTFOUND)
2024         THEN
2025           l_return_status := OKL_API.G_RET_STS_ERROR;
2026         END IF;
2027       CLOSE lsq_parent_csr;
2028 
2029       IF(l_return_status = OKL_API.G_RET_STS_SUCCESS)
2030       THEN
2031         IF(lsq_parent_rec.parent_object_code = 'LEASEAPP')
2032         THEN
2033           OPEN lap_db_val_csr(lsq_parent_rec.parent_object_id, p_lapv_rec);
2034           FETCH lap_db_val_csr INTO lap_db_val_rec;
2035             IF(lap_db_val_csr%NOTFOUND)
2036             THEN
2037               l_return_status := OKL_API.G_RET_STS_ERROR;
2038             END IF;
2039           CLOSE lap_db_val_csr;
2040         ELSIF(lsq_parent_rec.parent_object_code = 'LEASEOPP')
2041         THEN
2042           OPEN lop_db_val_csr(lsq_parent_rec.parent_object_id, p_lapv_rec);
2043           FETCH lop_db_val_csr INTO lop_db_val_rec;
2044             IF(lop_db_val_csr%NOTFOUND)
2045             THEN
2046               l_return_status := OKL_API.G_RET_STS_ERROR;
2047             END IF;
2048           CLOSE lop_db_val_csr;
2049         END IF;
2050       END IF;
2051 
2052       IF(l_return_status = OKL_API.G_RET_STS_SUCCESS)
2053       THEN
2054         OPEN lsq_db_val_csr(p_source_lsq_id, p_lsqv_rec);
2055         FETCH lsq_db_val_csr INTO lsq_db_val_rec;
2056           IF(lsq_db_val_csr%NOTFOUND)
2057           THEN
2058             l_return_status := OKL_API.G_RET_STS_ERROR;
2059           END IF;
2060         CLOSE lsq_db_val_csr;
2061       END IF;
2062     ELSE
2063       l_return_status := OKL_API.G_RET_STS_ERROR;
2064     END IF;--Source Lease Quote Id is null or G_MISS_NUM
2065 
2066     x_return_status := l_return_status;
2067     OKL_API.END_ACTIVITY(
2068         x_msg_count => x_msg_count
2069        ,x_msg_data  => x_msg_data);
2070   EXCEPTION
2071     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2072       --Lease Quote Details cursor
2073       IF lsq_db_val_csr%ISOPEN
2074       THEN
2075         CLOSE lsq_db_val_csr;
2076       END IF;
2077       --Lease App Details cursor
2078       IF lap_db_val_csr%ISOPEN
2079       THEN
2080         CLOSE lap_db_val_csr;
2081       END IF;
2082       --Lease Opp Details cursor
2083       IF lop_db_val_csr%ISOPEN
2084       THEN
2085         CLOSE lop_db_val_csr;
2086       END IF;
2087       --Lease Quote parent Details cursor
2088       IF lsq_parent_csr%ISOPEN
2089       THEN
2090         CLOSE lsq_parent_csr;
2091       END IF;
2092       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2093                            p_api_name  => l_api_name,
2094                            p_pkg_name  => G_PKG_NAME,
2095                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
2096                            x_msg_count => x_msg_count,
2097                            x_msg_data  => x_msg_data,
2098                            p_api_type  => G_API_TYPE);
2099     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2100       --Lease Quote Details cursor
2101       IF lsq_db_val_csr%ISOPEN
2102       THEN
2103         CLOSE lsq_db_val_csr;
2104       END IF;
2105       --Lease App Details cursor
2106       IF lap_db_val_csr%ISOPEN
2107       THEN
2108         CLOSE lap_db_val_csr;
2109       END IF;
2110       --Lease Opp Details cursor
2111       IF lop_db_val_csr%ISOPEN
2112       THEN
2113         CLOSE lop_db_val_csr;
2114       END IF;
2115       --Lease Quote parent Details cursor
2116       IF lsq_parent_csr%ISOPEN
2117       THEN
2118         CLOSE lsq_parent_csr;
2119       END IF;
2120       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2121                            p_api_name  => l_api_name,
2122                            p_pkg_name  => G_PKG_NAME,
2123                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2124                            x_msg_count => x_msg_count,
2125                            x_msg_data  => x_msg_data,
2126                            p_api_type  => G_API_TYPE);
2127     WHEN OTHERS THEN
2128       --Lease Quote Details cursor
2129       IF lsq_db_val_csr%ISOPEN
2130       THEN
2131         CLOSE lsq_db_val_csr;
2132       END IF;
2133       --Lease App Details cursor
2134       IF lap_db_val_csr%ISOPEN
2135       THEN
2136         CLOSE lap_db_val_csr;
2137       END IF;
2138       --Lease Opp Details cursor
2139       IF lop_db_val_csr%ISOPEN
2140       THEN
2141         CLOSE lop_db_val_csr;
2142       END IF;
2143       --Lease Quote parent Details cursor
2144       IF lsq_parent_csr%ISOPEN
2145       THEN
2146         CLOSE lsq_parent_csr;
2147       END IF;
2148       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2149                            p_api_name  => l_api_name,
2150                            p_pkg_name  => G_PKG_NAME,
2151                            p_exc_name  => 'OTHERS',
2152                            x_msg_count => x_msg_count,
2153                            x_msg_data  => x_msg_data,
2154                            p_api_type  => G_API_TYPE);
2155   END check_lease_quote_defaults;
2156 
2157   -------------------------------------------------------------------------------
2158   -- PROCEDURE raise_business_event
2159   -------------------------------------------------------------------------------
2160   -- Start of comments
2161   --
2162   -- Procedure Name  : raise_business_event
2163   -- Description     : This procedure is a wrapper to raise workflow event
2164   -- Business Rules  : This procedure is a wrapper to raise workflow event
2165   -- Parameters      :
2166   -- Version         : 1.0
2167   -- History         : 01-June-2005 PAGARG created
2168   --
2169   -- End of comments
2170   PROCEDURE raise_business_event(
2171               p_transaction_id     IN NUMBER,
2172               p_event_name         IN VARCHAR2) IS
2173 
2174     -- Variables Declarations
2175     l_parameter_list        wf_parameter_list_t;
2176     l_key                   VARCHAR2(240);
2177     l_seq                   NUMBER;
2178 
2179     -- Selects the nextval from sequence, used later for defining event key
2180     CURSOR okl_key_csr IS
2181       SELECT okl_wf_item_s.nextval
2182         FROM dual;
2183 
2184   BEGIN
2185     SAVEPOINT raise_event;
2186 
2187     OPEN okl_key_csr;
2188     FETCH okl_key_csr INTO l_seq;
2189     CLOSE okl_key_csr;
2190 
2191     l_key := p_event_name || l_seq ;
2192 
2193     wf_event.AddParameterToList('TRANSACTION_ID', p_transaction_id, l_parameter_list);
2194 
2195     -- Raise Event
2196     wf_event.raise(p_event_name  => p_event_name
2197                   ,p_event_key   => l_key
2198                   ,p_parameters  => l_parameter_list);
2199 
2200     l_parameter_list.DELETE;
2201   EXCEPTION
2202     WHEN OTHERS THEN
2203       FND_MESSAGE.SET_NAME('OKL', 'OKL_API_OTHERS_EXCEP');
2204       FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2205       FND_MSG_PUB.ADD;
2206       IF okl_key_csr%ISOPEN
2207       THEN
2208         CLOSE okl_key_csr;
2209       END IF;
2210 
2211       ROLLBACK TO raise_event;
2212   END raise_business_event;
2213 
2214   -------------------------------------------------------------------------------
2215   -- PROCEDURE create_credit_app
2216   -------------------------------------------------------------------------------
2217   -- Start of comments
2218   --
2219   -- Procedure Name  : create_credit_app
2220   -- Description     : This procedure is a wrapper that creates credit application
2221   -- Business Rules  : This procedure creates credit application
2222   -- Parameters      :
2223   -- Version         : 1.0
2224   -- History         : 21-JUNE-2005 PAGARG created
2225   --                 : 20 Jan 2006 PAGARG BUG 4968010 Passing requestor id and
2226   --                   type appropriately to create Credit Application
2227   -- End of comments
2228   PROCEDURE create_credit_app(
2229             p_api_version        IN  NUMBER,
2230             p_init_msg_list      IN  VARCHAR2,
2231             x_return_status      OUT NOCOPY VARCHAR2,
2232             x_msg_count          OUT NOCOPY NUMBER,
2233             x_msg_data           OUT NOCOPY VARCHAR2,
2234             p_lapv_rec           IN  lapv_rec_type,
2235             p_crr_rec            IN  crr_rec_type,
2236             x_crr_rec            OUT NOCOPY crr_rec_type) IS
2237 
2238     -- Variables Declarations
2239     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
2240     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'CREATE_CREDIT_APP';
2241     l_return_status          VARCHAR2(1);
2242     l_cm_installed           BOOLEAN;
2243 
2244     --Variables for create Credit Application call
2245     l_init_msg_list               VARCHAR2(32767);
2246 
2247     -- Record/Table Type Declarations
2248     l_crr_rec                crr_rec_type;
2249 
2250     --Cursor to obtain Lease Application Details
2251     CURSOR lse_app_dtls_csr(cp_lse_app_id NUMBER) IS
2252       SELECT LAB.REFERENCE_NUMBER REFERENCE_NUMBER
2253             ,LSQ.EXPECTED_START_DATE EXPECTED_START_DATE
2254             ,LAT.CREDIT_REVIEW_PURPOSE REVIEW_TYPE
2255             ,LAT.CUST_CREDIT_CLASSIFICATION CREDIT_CLASSIFICATION
2256             ,LAB.CURRENCY_CODE CURRENCY_CODE
2257             ,LSQ.TERM TERM
2258             ,LAB.PROSPECT_ID PROSPECT_ID
2259             ,LAB.CUST_ACCT_ID CUST_ACCT_ID
2260             ,LAB.ORG_ID ORG_ID
2261             ,LAB.CREDIT_LINE_ID CREDIT_LINE_ID
2262             ,LSQ.ID LSQ_ID
2263         FROM OKL_LEASE_APPLICATIONS_B LAB
2264             ,OKL_LEASEAPP_TEMPLATES LAT
2265             ,OKL_LEASE_QUOTES_B LSQ
2266             ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
2267        WHERE LATV.ID = LAB.LEASEAPP_TEMPLATE_ID
2268          AND LAT.ID = LATV.LEASEAPP_TEMPLATE_ID
2269          AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
2270          AND LSQ.PARENT_OBJECT_ID = LAB.ID
2271          AND LSQ.PRIMARY_QUOTE = 'Y'
2272          AND LAB.ID = cp_lse_app_id;
2273     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
2274 
2275   BEGIN
2276     l_return_status := OKL_API.G_RET_STS_SUCCESS;
2277     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CREATE_CREDIT_APP';
2278 
2279     -- check for logging on PROCEDURE level
2280     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
2281     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
2282     -- check for logging on STATEMENT level
2283     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
2284 
2285     -- call START_ACTIVITY to create savepoint, check compatibility
2286     -- and initialize message list
2287     l_return_status := OKL_API.START_ACTIVITY(
2288                            p_api_name      => l_api_name
2289                           ,p_pkg_name      => G_PKG_NAME
2290                           ,p_init_msg_list => p_init_msg_list
2291                           ,l_api_version   => l_api_version
2292                           ,p_api_version   => p_api_version
2293                           ,p_api_type      => G_API_TYPE
2294                           ,x_return_status => l_return_status);
2295 
2296     -- check if activity started successfully
2297     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2298       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2299     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2300       RAISE OKL_API.G_EXCEPTION_ERROR;
2301     END IF;
2302 
2303     l_cm_installed := AR_CMGT_CREDIT_REQUEST_API.is_Credit_Management_Installed;
2304     IF NOT l_cm_installed
2305     THEN
2306       l_return_status := OKL_API.G_RET_STS_ERROR;
2307       OKL_API.set_message(p_app_name      => OKL_API.G_APP_NAME,
2308                           p_msg_name      => 'OKL_CM_NOTINSTALLED');
2309       RAISE OKL_API.G_EXCEPTION_ERROR;
2310     END IF;
2311 
2312     l_crr_rec := p_crr_rec;
2313 
2314     OPEN lse_app_dtls_csr(p_lapv_rec.id);
2315     FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
2316     CLOSE lse_app_dtls_csr;
2317 
2318     l_crr_rec.application_number := lse_app_dtls_rec.reference_number;
2319     l_crr_rec.application_date := lse_app_dtls_rec.expected_start_date;
2320     --BUG 4968010 PAGARG Passing requestor id and type based on the value of
2321     --employee id
2322     IF FND_GLOBAL.EMPLOYEE_ID = -1
2323     THEN
2324       l_crr_rec.requestor_type := 'FND_USER';
2325       l_crr_rec.requestor_id := FND_GLOBAL.USER_ID;
2326     ELSE
2327       l_crr_rec.requestor_type := 'EMPLOYEE';
2328       l_crr_rec.requestor_id := FND_GLOBAL.EMPLOYEE_ID;
2329     END IF;
2330     l_crr_rec.review_type := lse_app_dtls_rec.review_type;
2331     l_crr_rec.credit_classification := lse_app_dtls_rec.credit_classification;
2332     l_crr_rec.requested_amount := get_financed_Amount(lse_app_dtls_rec.lsq_id);
2333     l_crr_rec.requested_currency := lse_app_dtls_rec.currency_code;
2334     l_crr_rec.trx_amount := get_financed_Amount(lse_app_dtls_rec.lsq_id); -- Added for bug 6596860
2335     --l_crr_rec.trx_amount := l_crr_rec.requested_amount; -- Commented for for bug 6596860
2336     l_crr_rec.trx_currency := l_crr_rec.requested_currency;
2337     IF(l_crr_rec.credit_type IS NULL)
2338     THEN
2339       l_crr_rec.credit_type := 'TERM';
2340     END IF;
2341     IF(l_crr_rec.credit_request_status IS NULL)
2342     THEN
2343       l_crr_rec.credit_request_status := 'SAVE';
2344     END IF;
2345     l_crr_rec.term_length := lse_app_dtls_rec.term;
2346     l_crr_rec.party_id := lse_app_dtls_rec.prospect_id;
2347     l_crr_rec.cust_account_id := lse_app_dtls_rec.cust_acct_id;
2348     l_crr_rec.source_org_id := lse_app_dtls_rec.org_id;
2349     l_crr_rec.source_user_id := FND_GLOBAL.USER_ID;
2350     l_crr_rec.source_resp_id := FND_GLOBAL.RESP_ID;
2351     l_crr_rec.source_appln_id := 540;
2352     l_crr_rec.source_security_group_id := FND_GLOBAL.SECURITY_GROUP_ID;
2353     l_crr_rec.source_name := 'OKL';
2354     l_crr_rec.source_column1 := p_lapv_rec.id;
2355     --Bug 4728360 Interchanged the values populated for source_column2 and 3
2356     l_crr_rec.source_column2 := p_lapv_rec.reference_number;
2357     l_crr_rec.source_column3 := 'LEASEAPP';
2358 
2359     --Call to create Credit Application
2360     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2361     THEN
2362       OKL_DEBUG_PUB.LOG_DEBUG(
2363           FND_LOG.LEVEL_PROCEDURE
2364          ,L_MODULE
2365          ,'begin debug call AR_CMGT_CREDIT_REQUEST_API.CREATE_CREDIT_REQUEST');
2366     END IF;
2367 
2368     AR_CMGT_CREDIT_REQUEST_API.CREATE_CREDIT_REQUEST(
2369        p_api_version                =>     l_api_version,
2370        p_init_msg_list              =>     OKL_API.G_FALSE,
2371        p_commit                     =>     l_crr_rec.l_commit,
2372        p_validation_level           =>     l_crr_rec.validation_level,
2373        x_return_status              =>     l_return_status,
2374        x_msg_count                  =>     x_msg_count,
2375        x_msg_data                   =>     x_msg_data,
2376        p_application_number         =>     l_crr_rec.application_number,
2377        p_application_date           =>     l_crr_rec.application_date,
2378        p_requestor_type             =>     l_crr_rec.requestor_type,
2379        p_requestor_id               =>     l_crr_rec.requestor_id,
2380        p_review_type                =>     l_crr_rec.review_type,
2381        p_credit_classification      =>     l_crr_rec.credit_classification,
2382        p_requested_amount           =>     l_crr_rec.requested_amount,
2383        p_requested_currency         =>     l_crr_rec.requested_currency,
2384        p_trx_amount                 =>     l_crr_rec.trx_amount,
2385        p_trx_currency               =>     l_crr_rec.trx_currency,
2386        p_credit_type                =>     l_crr_rec.credit_type,
2387        p_term_length                =>     l_crr_rec.term_length,
2388        p_credit_check_rule_id       =>     l_crr_rec.credit_check_rule_id,
2389        p_credit_request_status      =>     l_crr_rec.credit_request_status,
2390        p_party_id                   =>     l_crr_rec.party_id,
2391        p_cust_account_id            =>     l_crr_rec.cust_account_id,
2392        p_cust_acct_site_id          =>     l_crr_rec.cust_acct_site_id,
2393        p_site_use_id                =>     l_crr_rec.site_use_id,
2394        p_contact_party_id           =>     l_crr_rec.contact_party_id,
2395        p_notes                      =>     l_crr_rec.notes,
2396        p_source_org_id              =>     l_crr_rec.source_org_id,
2397        p_source_user_id             =>     l_crr_rec.source_user_id,
2398        p_source_resp_id             =>     l_crr_rec.source_resp_id,
2399        p_source_appln_id            =>     l_crr_rec.source_appln_id,
2400        p_source_security_group_id   =>     l_crr_rec.source_security_group_id,
2401        p_source_name                =>     l_crr_rec.source_name,
2402        p_source_column1             =>     l_crr_rec.source_column1,
2403        p_source_column2             =>     l_crr_rec.source_column2,
2404        p_source_column3             =>     l_crr_rec.source_column3,
2405        p_credit_request_id          =>     l_crr_rec.credit_request_id,
2406        p_review_cycle               =>     l_crr_rec.review_cycle,
2407        p_case_folder_number         =>     l_crr_rec.case_folder_number,
2408        p_score_model_id             =>     l_crr_rec.score_model_id,
2409        p_parent_credit_request_id   =>     l_crr_rec.parent_credit_request_id,
2410        p_credit_request_type        =>     l_crr_rec.credit_request_type,
2411        p_reco                       =>     'OKL_CR_MGMT_RECOMMENDATION' );
2412 
2413     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2414     THEN
2415       OKL_DEBUG_PUB.LOG_DEBUG(
2416           FND_LOG.LEVEL_PROCEDURE
2417          ,L_MODULE
2418          ,'end debug call AR_CMGT_CREDIT_REQUEST_API.CREATE_CREDIT_REQUEST');
2419     END IF;
2420 
2421     -- write to log
2422     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
2423       OKL_DEBUG_PUB.LOG_DEBUG(
2424           FND_LOG.LEVEL_STATEMENT
2425          ,L_MODULE || ' Result of AR_CMGT_CREDIT_REQUEST_API.CREATE_CREDIT_REQUEST'
2426          ,'l_return_status ' || l_return_status);
2427     END IF; -- end of statement level debug
2428 
2429     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2430       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2431     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
2432       RAISE OKL_API.G_EXCEPTION_ERROR;
2433     END IF;
2434 
2435     x_crr_rec := l_crr_rec;
2436     x_return_status := l_return_status;
2437 
2438     OKL_API.END_ACTIVITY(
2439         x_msg_count => x_msg_count
2440        ,x_msg_data  => x_msg_data);
2441 
2442   EXCEPTION
2443     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2444       --Lease Application Details Cursor
2445       IF lse_app_dtls_csr%ISOPEN
2446       THEN
2447         CLOSE lse_app_dtls_csr;
2448       END IF;
2449       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2450                            p_api_name  => l_api_name,
2451                            p_pkg_name  => G_PKG_NAME,
2452                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
2453                            x_msg_count => x_msg_count,
2454                            x_msg_data  => x_msg_data,
2455                            p_api_type  => G_API_TYPE);
2456 
2457     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2458       --Lease Application Details Cursor
2459       IF lse_app_dtls_csr%ISOPEN
2460       THEN
2461         CLOSE lse_app_dtls_csr;
2462       END IF;
2463       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2464                            p_api_name  => l_api_name,
2465                            p_pkg_name  => G_PKG_NAME,
2466                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2467                            x_msg_count => x_msg_count,
2468                            x_msg_data  => x_msg_data,
2469                            p_api_type  => G_API_TYPE);
2470 
2471     WHEN OTHERS THEN
2472       --Lease Application Details Cursor
2473       IF lse_app_dtls_csr%ISOPEN
2474       THEN
2475         CLOSE lse_app_dtls_csr;
2476       END IF;
2477       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2478                            p_api_name  => l_api_name,
2479                            p_pkg_name  => G_PKG_NAME,
2480                            p_exc_name  => 'OTHERS',
2481                            x_msg_count => x_msg_count,
2482                            x_msg_data  => x_msg_data,
2483                            p_api_type  => G_API_TYPE);
2484   END create_credit_app;
2485 
2486   -------------------------------------------------------------------------------
2487   -- PROCEDURE checklist_inst_cre
2488   -------------------------------------------------------------------------------
2489   -- Start of comments
2490   --
2491   -- Procedure Name  : checklist_inst_cre
2492   -- Description     : This procedure is a wrapper that creates checklist instance
2493   -- Business Rules  : This procedure creates checklist instance
2494   -- Parameters      :
2495   -- Version         : 1.0
2496   -- History         : 24-JUNE-2005 PAGARG created
2497   --
2498   -- End of comments
2499   PROCEDURE checklist_inst_cre(
2500             p_api_version        IN  NUMBER,
2501             p_init_msg_list      IN  VARCHAR2,
2502             x_return_status      OUT NOCOPY VARCHAR2,
2503             x_msg_count          OUT NOCOPY NUMBER,
2504             x_msg_data           OUT NOCOPY VARCHAR2,
2505             p_lap_id             IN  NUMBER,
2506 			p_chklst_tmpl_id     IN  NUMBER) IS
2507 
2508     -- Variables Declarations
2509     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
2510     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'CHECKLIST_INST_CRE';
2511     l_return_status          VARCHAR2(1);
2512     l_counter                NUMBER;
2513 
2514     -- Record/Table Type Declarations
2515     l_clhv_rec OKL_CLH_PVT.CLHV_REC_TYPE;
2516     x_clhv_rec OKL_CLH_PVT.CLHV_REC_TYPE;
2517     l_cldv_tbl OKL_CLD_PVT.CLDV_TBL_TYPE;
2518     x_cldv_tbl OKL_CLD_PVT.CLDV_TBL_TYPE;
2519 
2520     -- Bug#4741121 - viselvar  - Modified - Start
2521     l_parameter_list  wf_parameter_list_t;
2522     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.checklist_associated';
2523     -- Bug#4741121 - viselvar  - Modified - End
2524 
2525 
2526     --Cursor to obtain Lease App details
2527     CURSOR lse_app_dtls_csr(cp_lap_id NUMBER)
2528     IS
2529     SELECT LAP.ORG_ID ORG_ID
2530          , LAP.VALID_FROM VALID_FROM
2531          , LAP.VALID_TO VALID_TO
2532     FROM OKL_LEASE_APPLICATIONS_B LAP
2533     WHERE LAP.ID = cp_lap_id;
2534     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
2535 
2536     --Cursor to obtain Checklist Header Id and details
2537     CURSOR chk_hdr_dtls_csr(cp_chk_id NUMBER)
2538     IS
2539     SELECT CHK.ID ID
2540           ,CHK.START_DATE START_DATE
2541           ,CHK.END_DATE END_DATE
2542           ,CHK.DESCRIPTION
2543           ,CHK.SHORT_DESCRIPTION
2544     FROM OKL_CHECKLISTS CHK
2545     WHERE CHK.ID = cp_chk_id;
2546     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
2547 
2548     --Bug 4893077 PAGARG Querying checklist type from header while querying
2549     --data for source checklist items
2550     --Cursor to obtain Checklist details for given checklist
2551     CURSOR chk_ln_dtls_csr(cp_chk_id NUMBER)
2552     IS
2553     SELECT CHKD.TODO_ITEM_CODE ITEM_CODE
2554          , CHK.CHECKLIST_TYPE CHECKLIST_TYPE
2555          , CHKD.FUNCTION_ID FUNCTION_ID
2556     FROM OKL_CHECKLIST_DETAILS CHKD
2557        , OKL_CHECKLISTS CHK
2558     WHERE CHKD.CKL_ID = CHK.ID
2559      --removing the condition for bug 5167776
2560      -- AND CHK.CHECKLIST_PURPOSE_CODE <> 'CHECKLIST_INSTANCE'
2561       AND (CHK.ID = cp_chk_id OR CHK.CKL_ID = cp_chk_id );
2562 
2563     --Curosr to obtain existing checklist instances with given lease application
2564     CURSOR lap_chk_dtls_csr(cp_lap_id NUMBER)
2565     IS
2566       SELECT CHK.ID ID
2567             ,CHK.START_DATE START_DATE
2568             ,CHK.END_DATE END_DATE
2569             ,CHK.DESCRIPTION DESCRIPTION
2570             ,CHK.SHORT_DESCRIPTION SHORT_DESCRIPTION
2571             ,CHK.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER
2572       FROM OKL_CHECKLISTS CHK
2573       WHERE CHK.CHECKLIST_OBJ_TYPE_CODE = 'LEASE_APPL'
2574         AND CHK.CHECKLIST_OBJ_ID = cp_lap_id;
2575     lap_chk_dtls_rec lap_chk_dtls_csr%ROWTYPE;
2576 
2577   BEGIN
2578     l_return_status := OKL_API.G_RET_STS_SUCCESS;
2579     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CHECKLIST_INST_CRE';
2580 
2581     -- check for logging on PROCEDURE level
2582     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
2583     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
2584     -- check for logging on STATEMENT level
2585     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
2586 
2587     -- call START_ACTIVITY to create savepoint, check compatibility
2588     -- and initialize message list
2589     l_return_status := OKL_API.START_ACTIVITY(
2590                            p_api_name      => l_api_name
2591                           ,p_pkg_name      => G_PKG_NAME
2592                           ,p_init_msg_list => p_init_msg_list
2593                           ,l_api_version   => l_api_version
2594                           ,p_api_version   => p_api_version
2595                           ,p_api_type      => G_API_TYPE
2596                           ,x_return_status => l_return_status);
2597 
2598     -- check if activity started successfully
2599     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2600       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2601     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2602       RAISE OKL_API.G_EXCEPTION_ERROR;
2603     END IF;
2604 
2605     FOR lap_chk_dtls_rec IN lap_chk_dtls_csr(p_lap_id)
2606     LOOP
2607       l_clhv_rec.id := lap_chk_dtls_rec.id;
2608       l_clhv_rec.CHECKLIST_OBJ_ID := NULL;
2609       l_clhv_rec.CHECKLIST_OBJ_TYPE_CODE := NULL;
2610 
2611       --Call to update Checklist Instance header to remove already association
2612       --with lease application
2613       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2614       THEN
2615         OKL_DEBUG_PUB.LOG_DEBUG(
2616             FND_LOG.LEVEL_PROCEDURE
2617            ,L_MODULE
2618            ,'begin debug call OKL_CHECKLIST_PVT.UPDATE_CHECKLIST_INST_HDR');
2619       END IF;
2620 
2621       OKL_CHECKLIST_PVT.UPDATE_CHECKLIST_INST_HDR(
2622           p_api_version   => p_api_version
2623          ,p_init_msg_list => OKL_API.G_FALSE
2624          ,x_return_status => l_return_status
2625          ,x_msg_count     => x_msg_count
2626          ,x_msg_data      => x_msg_data
2627          ,p_clhv_rec      => l_clhv_rec
2628          ,x_clhv_rec      => x_clhv_rec);
2629 
2630       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2631       THEN
2632         OKL_DEBUG_PUB.LOG_DEBUG(
2633             FND_LOG.LEVEL_PROCEDURE
2634            ,L_MODULE
2635            ,'end debug call OKL_CHECKLIST_PVT.UPDATE_CHECKLIST_INST_HDR');
2636       END IF;
2637 
2638       -- write to log
2639       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
2640         OKL_DEBUG_PUB.LOG_DEBUG(
2641             FND_LOG.LEVEL_STATEMENT
2642            ,L_MODULE || ' Result of OKL_CHECKLIST_PVT.UPDATE_CHECKLIST_INST_HDR'
2643            ,'l_return_status ' || l_return_status);
2644       END IF; -- end of statement level debug
2645 
2646       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2647         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2648       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
2649         RAISE OKL_API.G_EXCEPTION_ERROR;
2650       END IF;
2651     END LOOP;
2652 
2653     --asawanka Bug 4865418 changes start
2654     IF p_chklst_tmpl_id IS NOT NULL THEN
2655       --asawanka Bug 4865418 changes end.
2656       OPEN chk_hdr_dtls_csr(p_chklst_tmpl_id);
2657       FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
2658       CLOSE chk_hdr_dtls_csr;
2659 
2660       OPEN lse_app_dtls_csr(p_lap_id);
2661       FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
2662       CLOSE lse_app_dtls_csr;
2663 
2664       l_clhv_rec.description := chk_hdr_dtls_rec.description;
2665       l_clhv_rec.short_description := chk_hdr_dtls_rec.short_description;
2666       l_clhv_rec.org_id := lse_app_dtls_rec.org_id;
2667       l_clhv_rec.start_date := chk_hdr_dtls_rec.start_date;
2668       IF(chk_hdr_dtls_rec.end_date <= SYSDATE)
2669       THEN
2670         l_clhv_rec.end_date := SYSDATE + 30;
2671       ELSE
2672         l_clhv_rec.end_date := chk_hdr_dtls_rec.end_date;
2673       END IF;
2674       l_clhv_rec.id := NULL;
2675       --Lease Application Id
2676       l_clhv_rec.checklist_obj_id := p_lap_id;
2677       l_clhv_rec.checklist_obj_type_code := 'LEASE_APPL';
2678 
2679       --Call to create Checklist Instance
2680       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2681       THEN
2682         OKL_DEBUG_PUB.LOG_DEBUG(
2683             FND_LOG.LEVEL_PROCEDURE
2684            ,L_MODULE
2685            ,'begin debug call OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_HDR');
2686       END IF;
2687 
2688       OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_HDR(
2689           p_api_version   => p_api_version
2690          ,p_init_msg_list => OKL_API.G_FALSE
2691          ,x_return_status => l_return_status
2692          ,x_msg_count     => x_msg_count
2693          ,x_msg_data      => x_msg_data
2694          ,p_clhv_rec      => l_clhv_rec
2695          ,x_clhv_rec      => x_clhv_rec);
2696 
2697       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2698       THEN
2699         OKL_DEBUG_PUB.LOG_DEBUG(
2700             FND_LOG.LEVEL_PROCEDURE
2701            ,L_MODULE
2702            ,'end debug call OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_HDR');
2703       END IF;
2704 
2705       -- write to log
2706       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
2707         OKL_DEBUG_PUB.LOG_DEBUG(
2708             FND_LOG.LEVEL_STATEMENT
2709            ,L_MODULE || ' Result of OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_HDR'
2710            ,'l_return_status ' || l_return_status);
2711       END IF; -- end of statement level debug
2712 
2713       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2714         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2715       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
2716         RAISE OKL_API.G_EXCEPTION_ERROR;
2717       END IF;
2718 
2719       l_counter := 0;
2720       FOR chk_ln_dtls_rec in chk_ln_dtls_csr(chk_hdr_dtls_rec.id)
2721       LOOP
2722         l_counter := l_counter + 1;
2723         l_cldv_tbl(l_counter).ckl_id := x_clhv_rec.id;
2724         l_cldv_tbl(l_counter).todo_item_code := chk_ln_dtls_rec.item_code;
2725         l_cldv_tbl(l_counter).org_id := x_clhv_rec.org_id;
2726         l_cldv_tbl(l_counter).function_id := chk_ln_dtls_rec.function_id;
2727         --Bug 4893077 PAGARG Populate instance checklist type with checklist type
2728         --of checklist header of source checklist
2729         l_cldv_tbl(l_counter).inst_checklist_type := chk_ln_dtls_rec.checklist_type;
2730       END LOOP;
2731 
2732       IF(l_cldv_tbl.count > 0)
2733       THEN
2734         --Call to create Checklist Instance Details
2735         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2736         THEN
2737           OKL_DEBUG_PUB.LOG_DEBUG(
2738               FND_LOG.LEVEL_PROCEDURE
2739              ,L_MODULE
2740              ,'begin debug call OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_DTL');
2741         END IF;
2742 
2743         OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_DTL(
2744             p_api_version   => p_api_version
2745            ,p_init_msg_list => OKL_API.G_FALSE
2746            ,x_return_status => l_return_status
2747            ,x_msg_count     => x_msg_count
2748            ,x_msg_data      => x_msg_data
2749            ,p_cldv_tbl      => l_cldv_tbl
2750            ,x_cldv_tbl      => x_cldv_tbl);
2751 
2752         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2753         THEN
2754           OKL_DEBUG_PUB.LOG_DEBUG(
2755               FND_LOG.LEVEL_PROCEDURE
2756              ,L_MODULE
2757              ,'end debug call OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_DTL');
2758         END IF;
2759 
2760         -- write to log
2761         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
2762           OKL_DEBUG_PUB.LOG_DEBUG(
2763               FND_LOG.LEVEL_STATEMENT
2764              ,L_MODULE || ' Result of OKL_CHECKLIST_PVT.CREATE_CHECKLIST_INST_DTL'
2765              ,'l_return_status ' || l_return_status);
2766         END IF; -- end of statement level debug
2767 
2768         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2769           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2770         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
2771           RAISE OKL_API.G_EXCEPTION_ERROR;
2772         END IF;
2773       END IF;-- l_cldv_tbl.count > 0
2774 
2775       -- Bug#4741121 - viselvar  - Modified - Start
2776       -- raise the business event passing the Lease Application id added to the parameter list
2777 
2778       wf_event.addparametertolist('LAPP_ID'
2779                                  ,p_lap_id
2780                                  ,l_parameter_list);
2781 
2782       okl_wf_pvt.raise_event(  p_api_version   =>            p_api_version
2783                               ,p_init_msg_list =>            p_init_msg_list
2784                               ,x_return_status =>            l_return_status
2785                               ,x_msg_count     =>            x_msg_count
2786                               ,x_msg_data      =>            x_msg_data
2787                               ,p_event_name    =>            p_event_name
2788                               ,p_parameters    =>            l_parameter_list);
2789 
2790 
2791       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
2792         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2793       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
2794         RAISE OKL_API.G_EXCEPTION_ERROR;
2795       END IF;
2796 
2797       -- Bug#4741121 - viselvar  - Modified - End
2798     --asawanka Bug 4865418 changes start
2799     END IF;
2800     --asawanka Bug 4865418 changes end.
2801     x_return_status := l_return_status;
2802 
2803     OKL_API.END_ACTIVITY(
2804         x_msg_count => x_msg_count
2805        ,x_msg_data  => x_msg_data);
2806 
2807   EXCEPTION
2808     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2809       --Lease App Details Cursor
2810       IF lse_app_dtls_csr%ISOPEN
2811       THEN
2812         CLOSE lse_app_dtls_csr;
2813       END IF;
2814       --Checklist Header Details Cursor
2815       IF chk_hdr_dtls_csr%ISOPEN
2816       THEN
2817         CLOSE chk_hdr_dtls_csr;
2818       END IF;
2819       --Checklist Details Cursor
2820       IF chk_ln_dtls_csr%ISOPEN
2821       THEN
2822         CLOSE chk_ln_dtls_csr;
2823       END IF;
2824       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2825                            p_api_name  => l_api_name,
2826                            p_pkg_name  => G_PKG_NAME,
2827                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
2828                            x_msg_count => x_msg_count,
2829                            x_msg_data  => x_msg_data,
2830                            p_api_type  => G_API_TYPE);
2831 
2832     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2833       --Lease App Details Cursor
2834       IF lse_app_dtls_csr%ISOPEN
2835       THEN
2836         CLOSE lse_app_dtls_csr;
2837       END IF;
2838       --Checklist Header Details Cursor
2839       IF chk_hdr_dtls_csr%ISOPEN
2840       THEN
2841         CLOSE chk_hdr_dtls_csr;
2842       END IF;
2843       --Checklist Details Cursor
2844       IF chk_ln_dtls_csr%ISOPEN
2845       THEN
2846         CLOSE chk_ln_dtls_csr;
2847       END IF;
2848       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2849                            p_api_name  => l_api_name,
2850                            p_pkg_name  => G_PKG_NAME,
2851                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
2852                            x_msg_count => x_msg_count,
2853                            x_msg_data  => x_msg_data,
2854                            p_api_type  => G_API_TYPE);
2855 
2856     WHEN OTHERS THEN
2857       --Lease App Details Cursor
2858       IF lse_app_dtls_csr%ISOPEN
2859       THEN
2860         CLOSE lse_app_dtls_csr;
2861       END IF;
2862       --Checklist Header Details Cursor
2863       IF chk_hdr_dtls_csr%ISOPEN
2864       THEN
2865         CLOSE chk_hdr_dtls_csr;
2866       END IF;
2867       --Checklist Details Cursor
2868       IF chk_ln_dtls_csr%ISOPEN
2869       THEN
2870         CLOSE chk_ln_dtls_csr;
2871       END IF;
2872       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2873                            p_api_name  => l_api_name,
2874                            p_pkg_name  => G_PKG_NAME,
2875                            p_exc_name  => 'OTHERS',
2876                            x_msg_count => x_msg_count,
2877                            x_msg_data  => x_msg_data,
2878                            p_api_type  => G_API_TYPE);
2879   END CHECKLIST_INST_CRE;
2880 
2881   -------------------------------------------------------------------------------
2882   -- PROCEDURE lease_app_cre
2883   -------------------------------------------------------------------------------
2884   -- Start of comments
2885   --
2886   -- Procedure Name  : lease_app_cre
2887   -- Description     : This procedure is a wrapper that creates records for
2888   --                 : lease application.
2889   -- Business Rules  : This procedure inserts records into the
2890   --                   OKL_LEASE_APPLICATIONS_B and _TL table
2891   -- Parameters      :
2892   -- Version         : 1.0
2893   -- History         : 20-MAY-2005 PAGARG created
2894   --                 : 09 Feb 2006 PAGARG Bug 4960541 Added call to validations
2895   --                   API while creating Lease App from Lease Quote
2896   -- End of comments
2897   PROCEDURE lease_app_cre(
2898             p_api_version        IN  NUMBER,
2899             p_init_msg_list      IN  VARCHAR2,
2900             x_return_status      OUT NOCOPY VARCHAR2,
2901             x_msg_count          OUT NOCOPY NUMBER,
2902             x_msg_data           OUT NOCOPY VARCHAR2,
2903             p_lapv_rec           IN  lapv_rec_type,
2904             x_lapv_rec           OUT NOCOPY lapv_rec_type,
2905             p_lsqv_rec           IN  lsqv_rec_type,
2906             x_lsqv_rec           OUT NOCOPY lsqv_rec_type) IS
2907 
2908     -- Variables Declarations
2909     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
2910     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_CRE';
2911     l_return_status          VARCHAR2(1);
2912     l_qa_result              VARCHAR2(1);
2913 
2914     -- Record/Table Type Declarations
2915     l_lapv_rec		lapv_rec_type;
2916     l_lsqv_rec      lsqv_rec_type;
2917     l_crr_rec       crr_rec_type;
2918     x_crr_rec       crr_rec_type;
2919 
2920     -- Bug#4741121 - viselvar  - Modified - Start
2921     l_parameter_list  wf_parameter_list_t;
2922     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.header_created';
2923     p_event_name1     VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.sales_quote_created';
2924     -- Bug#4741121 - viselvar  - Modified - End
2925 
2926     --Cursor to obtain Checklist Header Id
2927     CURSOR chk_hdr_dtls_csr(cp_lap_id NUMBER)
2928     IS
2929     SELECT LATV.CHECKLIST_ID
2930     FROM OKL_LEASE_APPLICATIONS_B LAP
2931         ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
2932     WHERE LAP.LEASEAPP_TEMPLATE_ID = LATV.ID
2933       AND LAP.ID = cp_lap_id;
2934     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
2935 
2936     --Cursor to obtain Lease App Source details
2937       --Begin - varangan-3-11-2005- removed lease application reference for bug#4713798
2938     CURSOR lse_app_src_dtls_csr(cp_lap_id NUMBER)
2939     IS
2940       SELECT LSQ.ID LSQ_ID
2941            , LOP.ID LOP_ID
2942       FROM OKL_LEASE_OPPORTUNITIES_B LOP
2943          , OKL_LEASE_QUOTES_B LSQ
2944       WHERE
2945       LSQ.PARENT_OBJECT_ID = LOP.ID
2946         AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
2947         AND LSQ.STATUS = 'CT-ACCEPTED'
2948         AND LOP.ID = cp_lap_id;
2949       --End - varangan-3-11-2005- removed lease application reference for bug#4713798
2950     lse_app_src_dtls_rec lse_app_src_dtls_csr%ROWTYPE;
2951   BEGIN
2952     l_return_status := OKL_API.G_RET_STS_SUCCESS;
2953     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_CRE';
2954 
2955     -- check for logging on PROCEDURE level
2956     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
2957     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
2958     -- check for logging on STATEMENT level
2959     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
2960 
2961     l_lapv_rec := p_lapv_rec;
2962     l_lsqv_rec := p_lsqv_rec;
2963 
2964     -- call START_ACTIVITY to create savepoint, check compatibility
2965     -- and initialize message list
2966     l_return_status := OKL_API.START_ACTIVITY(
2967                            p_api_name      => l_api_name
2968                           ,p_pkg_name      => G_PKG_NAME
2969                           ,p_init_msg_list => p_init_msg_list
2970                           ,l_api_version   => l_api_version
2971                           ,p_api_version   => p_api_version
2972                           ,p_api_type      => G_API_TYPE
2973                           ,x_return_status => l_return_status);
2974 
2975     -- check if activity started successfully
2976     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2977       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2978     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2979       RAISE OKL_API.G_EXCEPTION_ERROR;
2980     END IF;
2981 
2982     --set the status for lease application
2983     l_lapv_rec.application_status := G_INIT_APPL_STATUS;
2984 
2985     --Validate Lease Application Template
2986     --Validate Program Agreement
2987     --Validate VP and LAT association
2988     --Validate Lease Quote
2989     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
2990     THEN
2991       OKL_DEBUG_PUB.LOG_DEBUG(
2992           FND_LOG.LEVEL_PROCEDURE
2993          ,L_MODULE
2994          ,'begin debug call LEASE_APP_VAL');
2995     END IF;
2996 
2997     LEASE_APP_VAL(
2998         p_api_version           => p_api_version
2999        ,p_init_msg_list         => OKL_API.G_FALSE
3000        ,x_return_status         => l_return_status
3001        ,x_msg_count             => x_msg_count
3002        ,x_msg_data              => x_msg_data
3003        ,p_lapv_rec              => l_lapv_rec
3004        ,p_lsqv_rec              => l_lsqv_rec);
3005 
3006     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3007     THEN
3008       OKL_DEBUG_PUB.LOG_DEBUG(
3009           FND_LOG.LEVEL_PROCEDURE
3010          ,L_MODULE
3011          ,'end debug call LEASE_APP_VAL');
3012     END IF;
3013 
3014     -- write to log
3015     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3016       OKL_DEBUG_PUB.LOG_DEBUG(
3017           FND_LOG.LEVEL_STATEMENT
3018          ,L_MODULE || ' Result of LEASE_APP_VAL'
3019          ,'l_return_status ' || l_return_status);
3020     END IF; -- end of statement level debug
3021 
3022     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3023       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3024     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3025       RAISE OKL_API.G_EXCEPTION_ERROR;
3026     END IF;
3027 
3028     IF(l_lapv_rec.lease_opportunity_id IS NOT NULL OR
3029        l_lapv_rec.lease_opportunity_id <> OKL_API.G_MISS_NUM)
3030     THEN
3031       --BUG 4951955 PAGARG Instead of Lease Opp id, pass source Lease Quote id
3032       --as parameter to check default values
3033       OPEN lse_app_src_dtls_csr(l_lapv_rec.lease_opportunity_id);
3034       FETCH lse_app_src_dtls_csr INTO lse_app_src_dtls_rec;
3035       CLOSE lse_app_src_dtls_csr;
3036 
3037       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3038       THEN
3039         OKL_DEBUG_PUB.LOG_DEBUG(
3040             FND_LOG.LEVEL_PROCEDURE
3041            ,L_MODULE
3042            ,'begin debug call CHECK_LEASE_QUOTE_DEFAULTS');
3043       END IF;
3044 
3045       check_lease_quote_defaults(
3046           p_api_version           => p_api_version
3047          ,p_init_msg_list         => OKL_API.G_FALSE
3048          ,x_return_status         => l_return_status
3049          ,x_msg_count             => x_msg_count
3050          ,x_msg_data              => x_msg_data
3051          ,p_source_lsq_id         => lse_app_src_dtls_rec.lsq_id
3052          ,p_lapv_rec              => l_lapv_rec
3053          ,p_lsqv_rec              => l_lsqv_rec);
3054 
3055       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3056       THEN
3057         OKL_DEBUG_PUB.LOG_DEBUG(
3058             FND_LOG.LEVEL_PROCEDURE
3059            ,L_MODULE
3060            ,'end debug call CHECK_LEASE_QUOTE_DEFAULTS');
3061       END IF;
3062 
3063       -- write to log
3064       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON)
3065 	  THEN
3066         OKL_DEBUG_PUB.LOG_DEBUG(
3067             FND_LOG.LEVEL_STATEMENT
3068            ,L_MODULE || ' Result of CHECK_LEASE_QUOTE_DEFAULTS'
3069            ,'l_return_status ' || l_return_status);
3070       END IF; -- end of statement level debug
3071 
3072       -- Check the status and accordingly set the Lease Application Status
3073       IF(l_return_status = OKL_API.G_RET_STS_SUCCESS)THEN
3074         l_lapv_rec.application_status := 'PR-ACCEPTED';
3075       END IF;
3076     END IF; -- LEASE_OPPORTUNITY_ID check for null and G_MISS_NUM
3077 
3078     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3079     THEN
3080       OKL_DEBUG_PUB.LOG_DEBUG(
3081           FND_LOG.LEVEL_PROCEDURE
3082          ,L_MODULE
3083          ,'begin debug call OKL_LAP_PVT.INSERT_ROW');
3084     END IF;
3085 
3086     -- call the TAPI insert_row to create a lease application
3087     OKL_LAP_PVT.INSERT_ROW(
3088         p_api_version                        => p_api_version
3089        ,p_init_msg_list                      => OKL_API.G_FALSE
3090        ,x_return_status                      => l_return_status
3091        ,x_msg_count                          => x_msg_count
3092        ,x_msg_data                           => x_msg_data
3093        ,p_lapv_rec                           => l_lapv_rec
3094        ,x_lapv_rec                           => x_lapv_rec);
3095 
3096     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3097     THEN
3098       OKL_DEBUG_PUB.LOG_DEBUG(
3099           FND_LOG.LEVEL_PROCEDURE
3100          ,L_MODULE
3101          ,'end debug call OKL_LAP_PVT.INSERT_ROW');
3102     END IF;
3103 
3104     -- write to log
3105     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3106       OKL_DEBUG_PUB.LOG_DEBUG(
3107           FND_LOG.LEVEL_STATEMENT
3108          ,L_MODULE || ' Result of OKL_LAP_PVT.INSERT_ROW'
3109          ,'l_lapv_rec.reference_number ' || to_char(l_lapv_rec.reference_number) ||
3110           ' l_lapv_rec.id '|| l_lapv_rec.id ||
3111           ' result status ' || l_return_status ||
3112           ' x_msg_data ' || x_msg_data);
3113     END IF; -- end of statement level debug
3114 
3115     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3116       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3117     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3118       RAISE OKL_API.G_EXCEPTION_ERROR;
3119     END IF;
3120 
3121     --Populate lease quote rec values
3122     l_lsqv_rec.parent_object_code := 'LEASEAPP';
3123     l_lsqv_rec.parent_object_id := x_lapv_rec.id;
3124     --Bug 4721142 PAGARG set the lease quote reference number form sequence
3125     --Bug 4867953 PAGARG instead of using the sequence directly use function
3126     l_lsqv_rec.reference_number := get_next_seq_num(
3127                                        'OKL_LSQ_REF_SEQ'
3128                                       ,'OKL_LEASE_QUOTES_B'
3129                                       ,'REFERENCE_NUMBER');
3130     --Bug Fix End
3131     l_lsqv_rec.status := 'PR-INCOMPLETE';
3132     l_lsqv_rec.primary_quote := 'Y';
3133 
3134     --if lease application is sourced from Lease Opportunity then duplicate the
3135     --underline lease quote with the header rec passed to duplicate api
3136     --This way it will duplicate lease quote with header values from rec and
3137     --rest of configuration, adjustment, pricing data from the source lease quote id
3138     IF(l_lapv_rec.lease_opportunity_id IS NOT NULL
3139        AND l_lapv_rec.lease_opportunity_id <> OKL_API.G_MISS_NUM)
3140     THEN
3141       IF(x_lapv_rec.application_status = 'PR-ACCEPTED')
3142       THEN
3143         l_lsqv_rec.status := 'CT-ACCEPTED';
3144       END IF;
3145       --Begin - varangan-3-11-2005- updated with lease opportunity id for bug#4713798
3146       OPEN lse_app_src_dtls_csr(l_lapv_rec.lease_opportunity_id);
3147       --End - varangan-3-11-2005- updated with lease opportunity id for bug#4713798
3148       FETCH lse_app_src_dtls_csr INTO lse_app_src_dtls_rec;
3149       CLOSE lse_app_src_dtls_csr;
3150 
3151       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3152       THEN
3153         OKL_DEBUG_PUB.LOG_DEBUG(
3154             FND_LOG.LEVEL_PROCEDURE
3155            ,L_MODULE
3156            ,'begin debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
3157       END IF;
3158 
3159       -- call the procedure to create lease quote line
3160       OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE(
3161           p_api_version                        => p_api_version
3162          ,p_init_msg_list                      => OKL_API.G_FALSE
3163          ,p_transaction_control                => OKL_API.G_TRUE
3164          ,p_source_quote_id                    => lse_app_src_dtls_rec.lsq_id
3165          ,p_lease_qte_rec                      => l_lsqv_rec
3166          ,x_lease_qte_rec                      => x_lsqv_rec
3167          ,x_return_status                      => l_return_status
3168          ,x_msg_count                          => x_msg_count
3169          ,x_msg_data                           => x_msg_data);
3170 
3171       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3172       THEN
3173         OKL_DEBUG_PUB.LOG_DEBUG(
3174             FND_LOG.LEVEL_PROCEDURE
3175            ,L_MODULE
3176            ,'end debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
3177       END IF;
3178 
3179       -- write to log
3180       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3181         OKL_DEBUG_PUB.LOG_DEBUG(
3182             FND_LOG.LEVEL_STATEMENT
3183            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE'
3184            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
3185             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
3186             ' result status ' || l_return_status ||
3187             ' x_msg_data ' || x_msg_data);
3188       END IF; -- end of statement level debug
3189 
3190       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3191         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3192       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3193         RAISE OKL_API.G_EXCEPTION_ERROR;
3194       END IF;
3195 
3196       --Bug 4960541 PAGARG Added call to validations API while creating Lease
3197       --App from Lease Quote. Based on qa result Lease App and Lease Quote status
3198       --are updated
3199       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3200       THEN
3201         OKL_DEBUG_PUB.LOG_DEBUG(
3202             FND_LOG.LEVEL_PROCEDURE
3203            ,L_MODULE
3204            ,'begin debug call LEASE_APP_QA_VAL');
3205       END IF;
3206 
3207       -- call the procedure to perform QA validations
3208       LEASE_APP_QA_VAL(
3209           p_api_version                => p_api_version
3210          ,p_init_msg_list              => OKL_API.G_FALSE
3211          ,p_lap_id                     => x_lapv_rec.id
3212          ,x_return_status              => l_return_status
3213          ,x_msg_count                  => x_msg_count
3214          ,x_msg_data                   => x_msg_data
3215          ,x_qa_result                  => l_qa_result);
3216 
3217       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3218       THEN
3219         OKL_DEBUG_PUB.LOG_DEBUG(
3220             FND_LOG.LEVEL_PROCEDURE
3221            ,L_MODULE
3222            ,'end debug call LEASE_APP_QA_VAL');
3223       END IF;
3224 
3225       -- write to log
3226       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3227         OKL_DEBUG_PUB.LOG_DEBUG(
3228             FND_LOG.LEVEL_STATEMENT
3229            ,L_MODULE
3230            ,' Result of LEASE_APP_QA_VAL' ||
3231             ' Result Status ' || l_return_status ||
3232             ' QA Result Status ' || l_qa_result);
3233       END IF; -- end of statement level debug
3234 
3235       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3236         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3237       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3238         RAISE OKL_API.G_EXCEPTION_ERROR;
3239       END IF;
3240 
3241       IF l_qa_result <> OKL_API.G_RET_STS_SUCCESS
3242       THEN
3243         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3244         THEN
3245           OKL_DEBUG_PUB.LOG_DEBUG(
3246               FND_LOG.LEVEL_PROCEDURE
3247              ,L_MODULE
3248              ,'begin debug call SET_LEASE_APP_STATUS');
3249         END IF;
3250 
3251         --call the procedure to update a lease application status
3252         SET_LEASE_APP_STATUS(
3253             p_api_version     => p_api_version
3254            ,p_init_msg_list   => OKL_API.G_FALSE
3255            ,p_lap_id          => x_lapv_rec.id
3256            ,p_lap_status      => G_INIT_APPL_STATUS
3257            ,x_return_status   => l_return_status
3258            ,x_msg_count       => x_msg_count
3259            ,x_msg_data        => x_msg_data);
3260 
3261         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3262         THEN
3263           OKL_DEBUG_PUB.LOG_DEBUG(
3264               FND_LOG.LEVEL_PROCEDURE
3265              ,L_MODULE
3266              ,'end debug call SET_LEASE_APP_STATUS');
3267         END IF;
3268 
3269         -- write to log
3270         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3271           OKL_DEBUG_PUB.LOG_DEBUG(
3272               FND_LOG.LEVEL_STATEMENT
3273              ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
3274              ,'return status ' || l_return_status ||
3275               ' x_msg_data ' || x_msg_data);
3276         END IF; -- end of statement level debug
3277 
3278         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3279           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3280         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3281           RAISE OKL_API.G_EXCEPTION_ERROR;
3282         END IF;
3283 
3284         l_lsqv_rec := x_lsqv_rec;
3285         l_lsqv_rec.status := 'PR-INCOMPLETE';
3286         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3287         THEN
3288           OKL_DEBUG_PUB.LOG_DEBUG(
3289               FND_LOG.LEVEL_PROCEDURE
3290              ,L_MODULE
3291              ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
3292         END IF;
3293 
3294         -- call the procedure to create lease quote line
3295         OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
3296             p_api_version                        => p_api_version
3297            ,p_init_msg_list                      => OKL_API.G_FALSE
3298            ,p_transaction_control                => OKL_API.G_TRUE
3299            ,p_lease_qte_rec                      => l_lsqv_rec
3300            ,x_lease_qte_rec                      => x_lsqv_rec
3301            ,x_return_status                      => l_return_status
3302            ,x_msg_count                          => x_msg_count
3303            ,x_msg_data                           => x_msg_data);
3304 
3305         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3306         THEN
3307           OKL_DEBUG_PUB.LOG_DEBUG(
3308               FND_LOG.LEVEL_PROCEDURE
3309              ,L_MODULE
3310              ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
3311         END IF;
3312 
3313         -- write to log
3314         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3315           OKL_DEBUG_PUB.LOG_DEBUG(
3316               FND_LOG.LEVEL_STATEMENT
3317              ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
3318              ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
3319               ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
3320               ' result status ' || l_return_status ||
3321               ' x_msg_data ' || x_msg_data);
3322         END IF; -- end of statement level debug
3323 
3324         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3325           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3326         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3327           RAISE OKL_API.G_EXCEPTION_ERROR;
3328         END IF;
3329       -- Bug 7440199: Quote Streams ER: RGOOTY: Start
3330       ELSE
3331         --Making the pricing call to generate the streams
3332         IF(x_lapv_rec.application_status = 'PR-ACCEPTED')
3333         THEN
3334            --Start Pricing API call
3335            IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3336            THEN
3337              OKL_DEBUG_PUB.LOG_DEBUG(
3338                 FND_LOG.LEVEL_PROCEDURE
3339                ,L_MODULE
3340                ,'begin debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
3341            END IF;
3342 
3343            OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE(
3344               p_api_version            => p_api_version
3345              ,p_init_msg_list          => OKL_API.G_FALSE
3346              ,p_qte_id                 => x_lsqv_rec.id
3347              ,x_return_status          => l_return_status
3348              ,x_msg_count              => x_msg_count
3349              ,x_msg_data               => x_msg_data);
3350 
3351            IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3352            THEN
3353              OKL_DEBUG_PUB.LOG_DEBUG(
3354                  FND_LOG.LEVEL_PROCEDURE
3355                 ,L_MODULE
3356                 ,'end debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
3357            END IF;
3358 
3359            -- write to log
3360            IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3361               OKL_DEBUG_PUB.LOG_DEBUG(
3362                  FND_LOG.LEVEL_STATEMENT
3363                 ,L_MODULE || ' Result of OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE'
3364                 ,'l_return_status ' || l_return_status);
3365            END IF; -- end of statement level debug
3366 
3367            IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3368              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3369            ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3370              RAISE OKL_API.G_EXCEPTION_ERROR;
3371            END IF;
3372            --End of Pricing API call
3373         END IF;
3374        -- Bug 7440199: Quote Streams ER: RGOOTY: End
3375       END IF; -- For QA Result Check
3376     ELSE -- if Lease Opportunity Id is null
3377       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3378       THEN
3379         OKL_DEBUG_PUB.LOG_DEBUG(
3380             FND_LOG.LEVEL_PROCEDURE
3381            ,L_MODULE
3382            ,'begin debug call OKL_LEASE_QUOTE_PVT.CREATE_LEASE_QTE');
3383       END IF;
3384 
3385       -- call the procedure to create lease quote line
3386       OKL_LEASE_QUOTE_PVT.CREATE_LEASE_QTE(
3387           p_api_version                        => p_api_version
3388          ,p_init_msg_list                      => OKL_API.G_FALSE
3389          ,p_transaction_control                => OKL_API.G_TRUE
3390          ,p_lease_qte_rec                      => l_lsqv_rec
3391          ,x_lease_qte_rec                      => x_lsqv_rec
3392          ,x_return_status                      => l_return_status
3393          ,x_msg_count                          => x_msg_count
3394          ,x_msg_data                           => x_msg_data);
3395 
3396       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3397       THEN
3398         OKL_DEBUG_PUB.LOG_DEBUG(
3399             FND_LOG.LEVEL_PROCEDURE
3400            ,L_MODULE
3401            ,'end debug call OKL_LEASE_QUOTE_PVT.CREATE_LEASE_QTE');
3402       END IF;
3403 
3404       -- write to log
3405       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3406         OKL_DEBUG_PUB.LOG_DEBUG(
3407             FND_LOG.LEVEL_STATEMENT
3408            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.CREATE_LEASE_QTE'
3409            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
3410             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
3411             ' result status ' || l_return_status ||
3412             ' x_msg_data ' || x_msg_data);
3413       END IF; -- end of statement level debug
3414 
3415       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3416         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3417       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3418         RAISE OKL_API.G_EXCEPTION_ERROR;
3419       END IF;
3420 
3421     END IF;
3422     -- Bug#4741121 - viselvar  - Modified - Start
3423     -- raise the business event passing the Lease Application id added to the parameter list
3424     wf_event.addparametertolist('LAPP_ID'
3425                                ,x_lapv_rec.id
3426                                ,l_parameter_list);
3427     okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
3428                             ,p_init_msg_list =>            p_init_msg_list
3429                             ,x_return_status =>            l_return_status
3430                             ,x_msg_count     =>            x_msg_count
3431                             ,x_msg_data      =>            x_msg_data
3432                             ,p_event_name    =>            p_event_name1
3433                             ,p_parameters    =>            l_parameter_list);
3434 
3435     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3436       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3437     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3438       RAISE OKL_API.G_EXCEPTION_ERROR;
3439     END IF;
3440     -- Bug#4741121 - viselvar  - Modified - End
3441 
3442     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3443     THEN
3444       OKL_DEBUG_PUB.LOG_DEBUG(
3445           FND_LOG.LEVEL_PROCEDURE
3446          ,L_MODULE
3447          ,'begin debug call CREATE_CREDIT_APP');
3448     END IF;
3449 
3450     --call to create Credit Lease Application
3451     CREATE_CREDIT_APP(
3452         p_api_version        => p_api_version
3453        ,p_init_msg_list      => OKL_API.G_FALSE
3454        ,x_return_status      => l_return_status
3455        ,x_msg_count          => x_msg_count
3456        ,x_msg_data           => x_msg_data
3457        ,p_lapv_rec           => x_lapv_rec
3458        ,p_crr_rec            => l_crr_rec
3459        ,x_crr_rec            => x_crr_rec);
3460 
3461     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3462     THEN
3463       OKL_DEBUG_PUB.LOG_DEBUG(
3464           FND_LOG.LEVEL_PROCEDURE
3465          ,L_MODULE
3466          ,'end debug call CREATE_CREDIT_APP');
3467     END IF;
3468 
3469     -- write to log
3470     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3471       OKL_DEBUG_PUB.LOG_DEBUG(
3472           FND_LOG.LEVEL_STATEMENT
3473          ,L_MODULE || ' Result of CREATE_CREDIT_APP'
3474          ,' result status ' || l_return_status);
3475     END IF; -- end of statement level debug
3476 
3477     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3478       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3479     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3480       RAISE OKL_API.G_EXCEPTION_ERROR;
3481     END IF;
3482 
3483     OPEN chk_hdr_dtls_csr(x_lapv_rec.id);
3484     FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
3485     CLOSE chk_hdr_dtls_csr;
3486 
3487     IF(chk_hdr_dtls_rec.checklist_id IS NOT NULL)
3488     THEN
3489       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3490       THEN
3491         OKL_DEBUG_PUB.LOG_DEBUG(
3492             FND_LOG.LEVEL_PROCEDURE
3493            ,L_MODULE
3494            ,'begin debug call CHECKLIST_INST_CRE');
3495       END IF;
3496 
3497       --call to create Checklist Instance
3498       CHECKLIST_INST_CRE(
3499           p_api_version        => p_api_version
3500          ,p_init_msg_list      => OKL_API.G_FALSE
3501          ,x_return_status      => l_return_status
3502          ,x_msg_count          => x_msg_count
3503          ,x_msg_data           => x_msg_data
3504          ,p_lap_id             => x_lapv_rec.id
3505 		 ,p_chklst_tmpl_id     => chk_hdr_dtls_rec.checklist_id);
3506 
3507 	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3508       THEN
3509         OKL_DEBUG_PUB.LOG_DEBUG(
3510             FND_LOG.LEVEL_PROCEDURE
3511            ,L_MODULE
3512            ,'end debug call CHECKLIST_INST_CRE');
3513       END IF;
3514 
3515       -- write to log
3516       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3517         OKL_DEBUG_PUB.LOG_DEBUG(
3518             FND_LOG.LEVEL_STATEMENT
3519            ,L_MODULE || ' Result of CHECKLIST_INST_CRE'
3520            ,' result status ' || l_return_status);
3521       END IF; -- end of statement level debug
3522 
3523       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3524         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3525       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3526         RAISE OKL_API.G_EXCEPTION_ERROR;
3527       END IF;
3528     END IF; -- Condition to check for call to create checklist instance
3529 
3530     -- Bug#4741121 - viselvar  - Modified - Start
3531     -- raise the business event passing the Lease Application id added to the parameter list
3532     wf_event.addparametertolist('LAPP_ID'
3533                                ,x_lapv_rec.id
3534                                ,l_parameter_list);
3535     okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
3536                             ,p_init_msg_list =>            p_init_msg_list
3537                             ,x_return_status =>            l_return_status
3538                             ,x_msg_count     =>            x_msg_count
3539                             ,x_msg_data      =>            x_msg_data
3540                             ,p_event_name    =>            p_event_name
3541                             ,p_parameters    =>            l_parameter_list);
3542 
3543     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3544       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3545     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3546       RAISE OKL_API.G_EXCEPTION_ERROR;
3547     END IF;
3548     -- Bug#4741121 - viselvar  - Modified - End
3549 
3550     x_return_status := l_return_status;
3551     OKL_API.END_ACTIVITY(
3552         x_msg_count => x_msg_count
3553        ,x_msg_data  => x_msg_data);
3554   EXCEPTION
3555     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3556       --Checklist Header Details Cursor
3557       IF chk_hdr_dtls_csr%ISOPEN
3558       THEN
3559         CLOSE chk_hdr_dtls_csr;
3560       END IF;
3561       --Lease Application Source Details Cursor
3562       IF lse_app_src_dtls_csr%ISOPEN
3563       THEN
3564         CLOSE lse_app_src_dtls_csr;
3565       END IF;
3566       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3567                            p_api_name  => l_api_name,
3568                            p_pkg_name  => G_PKG_NAME,
3569                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
3570                            x_msg_count => x_msg_count,
3571                            x_msg_data  => x_msg_data,
3572                            p_api_type  => G_API_TYPE);
3573     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3574       --Checklist Header Details Cursor
3575       IF chk_hdr_dtls_csr%ISOPEN
3576       THEN
3577         CLOSE chk_hdr_dtls_csr;
3578       END IF;
3579       --Lease Application Source Details Cursor
3580       IF lse_app_src_dtls_csr%ISOPEN
3581       THEN
3582         CLOSE lse_app_src_dtls_csr;
3583       END IF;
3584       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3585                            p_api_name  => l_api_name,
3586                            p_pkg_name  => G_PKG_NAME,
3587                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
3588                            x_msg_count => x_msg_count,
3589                            x_msg_data  => x_msg_data,
3590                            p_api_type  => G_API_TYPE);
3591     WHEN OTHERS THEN
3592       --Checklist Header Details Cursor
3593       IF chk_hdr_dtls_csr%ISOPEN
3594       THEN
3595         CLOSE chk_hdr_dtls_csr;
3596       END IF;
3597       --Lease Application Source Details Cursor
3598       IF lse_app_src_dtls_csr%ISOPEN
3599       THEN
3600         CLOSE lse_app_src_dtls_csr;
3601       END IF;
3602       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3603                            p_api_name  => l_api_name,
3604                            p_pkg_name  => G_PKG_NAME,
3605                            p_exc_name  => 'OTHERS',
3606                            x_msg_count => x_msg_count,
3607                            x_msg_data  => x_msg_data,
3608                            p_api_type  => G_API_TYPE);
3609   END lease_app_cre;
3610 
3611   ------------------------------------------------------------------------------
3612   -- PROCEDURE lease_app_upd
3613   ------------------------------------------------------------------------------
3614   -- Start of comments
3615   --
3616   -- Procedure Name  : lease_app_upd
3617   -- Description     : This procedure is a wrapper that updates records for
3618   --                 : lease application.
3619   -- Business Rules  : This procedure updates records into the
3620   --                   OKL_LEASE_APPLICATIONS_B and _TL table
3621   -- Parameters      :
3622   -- Version         : 1.0
3623   -- History         : 20-MAY-2005 PAGARG created
3624   --
3625   -- End of comments
3626   PROCEDURE lease_app_upd(
3627             p_api_version        IN  NUMBER,
3628             p_init_msg_list      IN  VARCHAR2,
3629             x_return_status      OUT NOCOPY VARCHAR2,
3630             x_msg_count          OUT NOCOPY NUMBER,
3631             x_msg_data           OUT NOCOPY VARCHAR2,
3632             p_lapv_rec           IN  lapv_rec_type,
3633             x_lapv_rec           OUT NOCOPY lapv_rec_type,
3634             p_lsqv_rec           IN  lsqv_rec_type,
3635             x_lsqv_rec           OUT NOCOPY lsqv_rec_type) IS
3636 
3637     -- Variables Declarations
3638     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
3639     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_UPD';
3640     l_return_status          VARCHAR2(1);
3641     l_update_quote           NUMBER;
3642 
3643     -- Record/Table Type Declarations
3644     l_lapv_rec		lapv_rec_type;
3645     l_lsqv_rec      lsqv_rec_type;
3646 
3647     -- Bug#4741121 - viselvar  - Modified - Start
3648     l_parameter_list  wf_parameter_list_t;
3649     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.saved';
3650     -- Bug#4741121 - viselvar  - Modified - Start
3651 
3652     --asawanka Bug 4865418 changes start
3653     l_credit_request_rec       OCM_CREDIT_REQUEST_UPDATE_PUB.credit_request_rec;
3654     --asawanka Bug 4865418 changes end
3655     --Cursor to obtain the details of lease quote line of Lease App
3656     CURSOR l_lsq_dtls_csr(p_lap_id NUMBER)
3657         IS
3658       SELECT LSQ.ID LSQ_ID
3659            , LSQ.STATUS STATUS
3660       FROM OKL_LEASE_QUOTES_B LSQ
3661       WHERE LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
3662         AND LSQ.PRIMARY_QUOTE= 'Y'
3663         AND LSQ.PARENT_OBJECT_ID = p_lap_id;
3664     l_lsq_dtls_rec l_lsq_dtls_csr%ROWTYPE;
3665     --asawanka Bug 4865418 changes start
3666     --cursor to obtain lease app template id used on lease application
3667     CURSOR l_lse_app_tmplt_csr(p_lap_id NUMBER)
3668         IS
3669       SELECT leaseapp_template_id
3670       FROM okl_lease_applications_b LSQ
3671       WHERE ID = p_lap_id;
3672     l_lse_app_tmplt_csr_rec l_lse_app_tmplt_csr%ROWTYPE;
3673 
3674     --Cursor to obtain Checklist Header Id
3675     CURSOR chk_hdr_dtls_csr(cp_latv_id NUMBER)
3676     IS
3677     SELECT LATV.CHECKLIST_ID
3678            ,LAT.CREDIT_REVIEW_PURPOSE
3679            ,LAT.CUST_CREDIT_CLASSIFICATION
3680     FROM OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
3681         ,OKL_LEASEAPP_TEMPLATES LAT
3682     WHERE LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
3683       AND LATV.ID = cp_latv_id;
3684     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
3685 
3686     CURSOR get_crd_app_data(cp_lap_id NUMBER)
3687     IS
3688     SELECT CREDIT_REQUEST_ID
3689           ,APPLICATION_NUMBER
3690           ,TRX_AMOUNT
3691           ,TRX_CURRENCY
3692           ,STATUS
3693           ,RECOMMENDATION_NAME
3694           ,SOURCE_COLUMN1
3695           ,SOURCE_COLUMN2
3696           ,REVIEW_TYPE
3697           ,CREDIT_CLASSIFICATION
3698           ,CUST_ACCOUNT_ID
3699     FROM AR_CMGT_CREDIT_REQUESTS
3700     WHERE SOURCE_COLUMN3 = 'LEASEAPP'
3701     AND   SOURCE_COLUMN1 = cp_lap_id;
3702     get_crd_app_data_rec get_crd_app_data%ROWTYPE;
3703     --asawanka Bug 4865418 changes end
3704   BEGIN
3705     l_return_status := OKL_API.G_RET_STS_SUCCESS;
3706     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_UPD';
3707 
3708     -- check for logging on PROCEDURE level
3709     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
3710     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
3711     -- check for logging on STATEMENT level
3712     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
3713 
3714     -- call START_ACTIVITY to create savepoint, check compatibility
3715     -- and initialize message list
3716     l_return_status := OKL_API.START_ACTIVITY(
3717                            p_api_name      => l_api_name
3718                           ,p_pkg_name      => G_PKG_NAME
3719                           ,p_init_msg_list => p_init_msg_list
3720                           ,l_api_version   => l_api_version
3721                           ,p_api_version   => p_api_version
3722                           ,p_api_type      => G_API_TYPE
3723                           ,x_return_status => l_return_status);
3724 
3725     -- check if activity started successfully
3726     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3727       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3728     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3729       RAISE OKL_API.G_EXCEPTION_ERROR;
3730     END IF;
3731 
3732     l_lapv_rec := p_lapv_rec;
3733     l_lsqv_rec := p_lsqv_rec;
3734     x_lsqv_rec := p_lsqv_rec;
3735 
3736     --Validate Lease Application Template
3737     --Validate Program Agreement
3738     --Validate VP and LAT association
3739     --Validate Lease Quote
3740     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3741     THEN
3742       OKL_DEBUG_PUB.LOG_DEBUG(
3743           FND_LOG.LEVEL_PROCEDURE
3744          ,L_MODULE
3745          ,'begin debug call LEASE_APP_VAL');
3746     END IF;
3747 
3748     LEASE_APP_VAL(
3749         p_api_version           => p_api_version
3750        ,p_init_msg_list         => OKL_API.G_FALSE
3751        ,x_return_status         => l_return_status
3752        ,x_msg_count             => x_msg_count
3753        ,x_msg_data              => x_msg_data
3754        ,p_lapv_rec              => l_lapv_rec
3755        ,p_lsqv_rec              => l_lsqv_rec);
3756 
3757     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3758     THEN
3759       OKL_DEBUG_PUB.LOG_DEBUG(
3760           FND_LOG.LEVEL_PROCEDURE
3761          ,L_MODULE
3762          ,'end debug call LEASE_APP_VAL');
3763     END IF;
3764 
3765     -- write to log
3766     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3767       OKL_DEBUG_PUB.LOG_DEBUG(
3768           FND_LOG.LEVEL_STATEMENT
3769          ,L_MODULE || ' Result of LEASE_APP_VAL'
3770          ,'l_return_status ' || l_return_status);
3771     END IF; -- end of statement level debug
3772 
3773     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3774       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3775     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3776       RAISE OKL_API.G_EXCEPTION_ERROR;
3777     END IF;
3778     --asawanka Bug 4865418 changes start
3779 
3780     --collect the existing lease application template before update
3781     OPEN l_lse_app_tmplt_csr(l_lapv_rec.id);
3782     FETCH l_lse_app_tmplt_csr INTO l_lse_app_tmplt_csr_rec;
3783     CLOSE l_lse_app_tmplt_csr;
3784     --asawanka Bug 4865418 changes end
3785 
3786     --BUG 4951955 PAGARG Call check Lease Quote defaults and accordingly set
3787     --status of Lease App and Lease Quote
3788     l_update_quote := 0;
3789     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3790     THEN
3791       OKL_DEBUG_PUB.LOG_DEBUG(
3792           FND_LOG.LEVEL_PROCEDURE
3793          ,L_MODULE
3794          ,'begin debug call CHECK_LEASE_QUOTE_DEFAULTS');
3795     END IF;
3796 
3797     CHECK_LEASE_QUOTE_DEFAULTS(
3798         p_api_version           => p_api_version
3799        ,p_init_msg_list         => OKL_API.G_FALSE
3800        ,x_return_status         => l_return_status
3801        ,x_msg_count             => x_msg_count
3802        ,x_msg_data              => x_msg_data
3803        ,p_source_lsq_id         => l_lsqv_rec.id
3804        ,p_lapv_rec              => l_lapv_rec
3805        ,p_lsqv_rec              => l_lsqv_rec);
3806 
3807     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3808     THEN
3809       OKL_DEBUG_PUB.LOG_DEBUG(
3810           FND_LOG.LEVEL_PROCEDURE
3811          ,L_MODULE
3812          ,'end debug call CHECK_LEASE_QUOTE_DEFAULTS');
3813     END IF;
3814 
3815     -- write to log
3816     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON)
3817 	THEN
3818       OKL_DEBUG_PUB.LOG_DEBUG(
3819           FND_LOG.LEVEL_STATEMENT
3820          ,L_MODULE || ' Result of CHECK_LEASE_QUOTE_DEFAULTS'
3821          ,'l_return_status ' || l_return_status);
3822     END IF; -- end of statement level debug
3823 
3824     -- Check the status and accordingly set the Lease Application Status
3825     IF(l_return_status = OKL_API.G_RET_STS_ERROR)
3826     THEN
3827       --set the status for lease application
3828       l_lapv_rec.application_status := G_INIT_APPL_STATUS;
3829       l_update_quote := 1;
3830     END IF;
3831 
3832     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3833     THEN
3834       OKL_DEBUG_PUB.LOG_DEBUG(
3835           FND_LOG.LEVEL_PROCEDURE
3836          ,L_MODULE
3837          ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
3838     END IF;
3839 
3840     -- call the TAPI update_row to update a lease application
3841     OKL_LAP_PVT.UPDATE_ROW(
3842         p_api_version                        => p_api_version
3843        ,p_init_msg_list                      => OKL_API.G_FALSE
3844        ,x_return_status                      => l_return_status
3845        ,x_msg_count                          => x_msg_count
3846        ,x_msg_data                           => x_msg_data
3847        ,p_lapv_rec                           => l_lapv_rec
3848        ,x_lapv_rec                           => x_lapv_rec);
3849 
3850     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3851     THEN
3852       OKL_DEBUG_PUB.LOG_DEBUG(
3853           FND_LOG.LEVEL_PROCEDURE
3854          ,L_MODULE
3855          ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
3856     END IF;
3857 
3858     -- write to log
3859     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3860       OKL_DEBUG_PUB.LOG_DEBUG(
3861           FND_LOG.LEVEL_STATEMENT
3862          ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
3863          ,'l_lapv_rec.reference_number ' || to_char(l_lapv_rec.reference_number) ||
3864           ' expiring lease application with status ' || l_return_status ||
3865           ' x_msg_data ' || x_msg_data);
3866     END IF; -- end of statement level debug
3867 
3868     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3869       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3870     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3871       RAISE OKL_API.G_EXCEPTION_ERROR;
3872     END IF;
3873 
3874     IF(l_update_quote = 1)
3875     THEN
3876       l_lsqv_rec.status := 'PR-INCOMPLETE';
3877 
3878       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3879       THEN
3880         OKL_DEBUG_PUB.LOG_DEBUG(
3881             FND_LOG.LEVEL_PROCEDURE
3882            ,L_MODULE
3883            ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
3884       END IF;
3885 
3886       -- call the procedure to create lease quote line
3887       OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
3888           p_api_version                        => p_api_version
3889          ,p_init_msg_list                      => OKL_API.G_FALSE
3890          ,p_transaction_control                => OKL_API.G_TRUE
3891          ,p_lease_qte_rec                      => l_lsqv_rec
3892          ,x_lease_qte_rec                      => x_lsqv_rec
3893          ,x_return_status                      => l_return_status
3894          ,x_msg_count                          => x_msg_count
3895          ,x_msg_data                           => x_msg_data);
3896 
3897       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3898       THEN
3899         OKL_DEBUG_PUB.LOG_DEBUG(
3900             FND_LOG.LEVEL_PROCEDURE
3901            ,L_MODULE
3902            ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
3903       END IF;
3904 
3905       -- write to log
3906       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3907         OKL_DEBUG_PUB.LOG_DEBUG(
3908             FND_LOG.LEVEL_STATEMENT
3909            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
3910            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
3911             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
3912             ' result status ' || l_return_status ||
3913             ' x_msg_data ' || x_msg_data);
3914       END IF; -- end of statement level debug
3915 
3916       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3917         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3918       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3919         RAISE OKL_API.G_EXCEPTION_ERROR;
3920       END IF;
3921     END IF;
3922     --BUG 4951955 PAGARG Removed the call to subsidy pool API as it was redundant
3923     --It is already called in update_lease_qte
3924 
3925     -- Bug#4741121 - viselvar  - Modified - Start
3926     -- raise the business event passing the Lease Application id added to the parameter list
3927     wf_event.addparametertolist('LAPP_ID'
3928                                ,x_lapv_rec.id
3929                                ,l_parameter_list);
3930     okl_wf_pvt.raise_event(p_api_version     =>            p_api_version
3931                             ,p_init_msg_list =>            p_init_msg_list
3932                             ,x_return_status =>            l_return_status
3933                             ,x_msg_count     =>            x_msg_count
3934                             ,x_msg_data      =>            x_msg_data
3935                             ,p_event_name    =>            p_event_name
3936                             ,p_parameters    =>            l_parameter_list);
3937 
3938     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3939       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3940     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3941       RAISE OKL_API.G_EXCEPTION_ERROR;
3942     END IF;
3943     -- Bug#4741121 - viselvar  - Modified - End
3944 
3945     --asawanka Bug 4865418 changes start
3946     --if lease application template selected on the lease application has changed
3947     --then handle the checklist instance, credit application review purpose and  credit classification
3948     IF l_lse_app_tmplt_csr_rec.leaseapp_template_id <> l_lapv_rec.LEASEAPP_TEMPLATE_ID
3949     THEN
3950       --take the checklist details for the new lease application template
3951       OPEN chk_hdr_dtls_csr(l_lapv_rec.LEASEAPP_TEMPLATE_ID);
3952       FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
3953       CLOSE chk_hdr_dtls_csr;
3954 
3955       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3956       THEN
3957         OKL_DEBUG_PUB.LOG_DEBUG(
3958             FND_LOG.LEVEL_PROCEDURE
3959            ,L_MODULE
3960            ,'begin debug call CHECKLIST_INST_CRE');
3961       END IF;
3962 
3963       --call to create Checklist Instance
3964       CHECKLIST_INST_CRE(
3965           p_api_version        => p_api_version
3966          ,p_init_msg_list      => OKL_API.G_FALSE
3967          ,x_return_status      => l_return_status
3968          ,x_msg_count          => x_msg_count
3969          ,x_msg_data           => x_msg_data
3970          ,p_lap_id             => l_lapv_rec.id
3971          ,p_chklst_tmpl_id     => chk_hdr_dtls_rec.checklist_id);
3972 
3973       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
3974       THEN
3975         OKL_DEBUG_PUB.LOG_DEBUG(
3976             FND_LOG.LEVEL_PROCEDURE
3977            ,L_MODULE
3978            ,'end debug call CHECKLIST_INST_CRE');
3979       END IF;
3980 
3981       -- write to log
3982       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
3983         OKL_DEBUG_PUB.LOG_DEBUG(
3984             FND_LOG.LEVEL_STATEMENT
3985            ,L_MODULE || ' Result of CHECKLIST_INST_CRE'
3986            ,' result status ' || l_return_status);
3987       END IF; -- end of statement level debug
3988 
3989       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
3990         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3991       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
3992         RAISE OKL_API.G_EXCEPTION_ERROR;
3993       END IF;
3994     END IF;--condition to check change of lease application template
3995 
3996     --check the review purpose, credit classification and Customer Account on the
3997     --credit application for this lease application. if any of these are
3998     --changed, call the api to update them in credit application.
3999     OPEN get_crd_app_data(l_lapv_rec.id);
4000     FETCH get_crd_app_data INTO get_crd_app_data_rec;
4001     CLOSE get_crd_app_data;
4002     IF get_crd_app_data_rec.review_type <> chk_hdr_dtls_rec.credit_review_purpose
4003        OR get_crd_app_data_rec.credit_classification <> chk_hdr_dtls_rec.cust_credit_classification
4004        OR get_crd_app_data_rec.cust_account_id <> NVL(x_lapv_rec.cust_acct_id, -99)
4005        OR get_crd_app_data_rec.application_number <> l_lapv_rec.reference_number
4006     THEN
4007       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4008       THEN
4009         OKL_DEBUG_PUB.LOG_DEBUG(
4010             FND_LOG.LEVEL_PROCEDURE
4011            ,L_MODULE
4012            ,'begin debug call OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC');
4013       END IF;
4014       --get the existing credit request data
4015       OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC(
4016           p_credit_request_id  => get_crd_app_data_rec.credit_request_id
4017          ,p_return_status      => l_return_status
4018          ,p_error_msg          => x_msg_data
4019          ,p_credit_request_rec => l_credit_request_rec);
4020 
4021       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4022       THEN
4023         OKL_DEBUG_PUB.LOG_DEBUG(
4024             FND_LOG.LEVEL_PROCEDURE
4025            ,L_MODULE
4026            ,'end debug call OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC');
4027       END IF;
4028 
4029       -- write to log
4030       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4031         OKL_DEBUG_PUB.LOG_DEBUG(
4032             FND_LOG.LEVEL_STATEMENT
4033            ,L_MODULE || ' Result of OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC'
4034            ,' result status ' || l_return_status);
4035       END IF; -- end of statement level debug
4036 
4037       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4038         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4039       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4040         RAISE OKL_API.G_EXCEPTION_ERROR;
4041       END IF;
4042 
4043       --assign the new values
4044       l_credit_request_rec.application_number := l_lapv_rec.reference_number;
4045       l_credit_request_rec.source_column2 := l_lapv_rec.reference_number;
4046       l_credit_request_rec.review_type := chk_hdr_dtls_rec.credit_review_purpose;
4047       l_credit_request_rec.credit_classification := chk_hdr_dtls_rec.cust_credit_classification;
4048       l_credit_request_rec.cust_account_id := x_lapv_rec.cust_acct_id;
4049 
4050       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4051       THEN
4052         OKL_DEBUG_PUB.LOG_DEBUG(
4053             FND_LOG.LEVEL_PROCEDURE
4054            ,L_MODULE
4055            ,'begin debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST');
4056       END IF;
4057       --update the credit application data
4058       OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST(
4059           p_api_version           => l_api_version,
4060           p_init_msg_list         => OKL_API.G_FALSE,
4061           p_commit                => NULL,
4062           p_validation_level      => NULL,
4063           x_return_status         => l_return_status,
4064           x_msg_count             => x_msg_count,
4065           x_msg_data              => x_msg_data,
4066           p_credit_request_rec    => l_credit_request_rec);
4067 
4068       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4069       THEN
4070         OKL_DEBUG_PUB.LOG_DEBUG(
4071             FND_LOG.LEVEL_PROCEDURE
4072            ,L_MODULE
4073            ,'end debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST');
4074       END IF;
4075 
4076       -- write to log
4077       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4078         OKL_DEBUG_PUB.LOG_DEBUG(
4079             FND_LOG.LEVEL_STATEMENT
4080            ,L_MODULE || ' Result of OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST'
4081            ,' result status ' || l_return_status);
4082       END IF; -- end of statement level debug
4083 
4084       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4085         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4086       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4087         RAISE OKL_API.G_EXCEPTION_ERROR;
4088       END IF;
4089     END IF;--condition to check change in credit classification or review purpose
4090     --asawanka Bug 4865418 changes end
4091 
4092     x_return_status := l_return_status;
4093     OKL_API.END_ACTIVITY(
4094         x_msg_count => x_msg_count
4095        ,x_msg_data  => x_msg_data);
4096   EXCEPTION
4097     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4098       --Lease Quote Details Cursor
4099       IF l_lsq_dtls_csr%ISOPEN
4100       THEN
4101         CLOSE l_lsq_dtls_csr;
4102       END IF;
4103       --Lease App Template Details Cursor
4104       IF l_lse_app_tmplt_csr%ISOPEN
4105       THEN
4106         CLOSE l_lse_app_tmplt_csr;
4107       END IF;
4108       --Checklist Header Details Cursor
4109       IF chk_hdr_dtls_csr%ISOPEN
4110       THEN
4111         CLOSE chk_hdr_dtls_csr;
4112       END IF;
4113       --Credit Application Details Cursor
4114       IF get_crd_app_data%ISOPEN
4115       THEN
4116         CLOSE get_crd_app_data;
4117       END IF;
4118       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4119                            p_api_name  => l_api_name,
4120                            p_pkg_name  => G_PKG_NAME,
4121                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
4122                            x_msg_count => x_msg_count,
4123                            x_msg_data  => x_msg_data,
4124                            p_api_type  => G_API_TYPE);
4125     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4126       --Lease Quote Details Cursor
4127       IF l_lsq_dtls_csr%ISOPEN
4128       THEN
4129         CLOSE l_lsq_dtls_csr;
4130       END IF;
4131       --Lease App Template Details Cursor
4132       IF l_lse_app_tmplt_csr%ISOPEN
4133       THEN
4134         CLOSE l_lse_app_tmplt_csr;
4135       END IF;
4136       --Checklist Header Details Cursor
4137       IF chk_hdr_dtls_csr%ISOPEN
4138       THEN
4139         CLOSE chk_hdr_dtls_csr;
4140       END IF;
4141       --Credit Application Details Cursor
4142       IF get_crd_app_data%ISOPEN
4143       THEN
4144         CLOSE get_crd_app_data;
4145       END IF;
4146       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4147                            p_api_name  => l_api_name,
4148                            p_pkg_name  => G_PKG_NAME,
4149                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4150                            x_msg_count => x_msg_count,
4151                            x_msg_data  => x_msg_data,
4152                            p_api_type  => G_API_TYPE);
4153     WHEN OTHERS THEN
4154       --Lease Quote Details Cursor
4155       IF l_lsq_dtls_csr%ISOPEN
4156       THEN
4157         CLOSE l_lsq_dtls_csr;
4158       END IF;
4159       --Lease App Template Details Cursor
4160       IF l_lse_app_tmplt_csr%ISOPEN
4161       THEN
4162         CLOSE l_lse_app_tmplt_csr;
4163       END IF;
4164       --Checklist Header Details Cursor
4165       IF chk_hdr_dtls_csr%ISOPEN
4166       THEN
4167         CLOSE chk_hdr_dtls_csr;
4168       END IF;
4169       --Credit Application Details Cursor
4170       IF get_crd_app_data%ISOPEN
4171       THEN
4172         CLOSE get_crd_app_data;
4173       END IF;
4174       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4175                            p_api_name  => l_api_name,
4176                            p_pkg_name  => G_PKG_NAME,
4177                            p_exc_name  => 'OTHERS',
4178                            x_msg_count => x_msg_count,
4179                            x_msg_data  => x_msg_data,
4180                            p_api_type  => G_API_TYPE);
4181   END lease_app_upd;
4182 
4183   ------------------------------------------------------------------------------
4184   -- PROCEDURE lease_app_val
4185   ------------------------------------------------------------------------------
4186   -- Start of comments
4187   --
4188   -- Procedure Name  : lease_app_val
4189   -- Description     : This procedure validates lease application.
4190   -- Business Rules  : This procedure validates lease application
4191   -- Parameters      :
4192   -- Version         : 1.0
4193   -- History         : 20-MAY-2005 PAGARG created
4194   --                 : 12-Dec-2005 PAGARG Bug 4873205 Added validation for
4195   --                   Checklist and Contract Template effectivity and also
4196   --                   fixed the VP-LAT association validation
4197   -- End of comments
4198   PROCEDURE lease_app_val(
4199             p_api_version        IN  NUMBER,
4200             p_init_msg_list      IN  VARCHAR2,
4201             x_return_status      OUT NOCOPY VARCHAR2,
4202             x_msg_count          OUT NOCOPY NUMBER,
4203             x_msg_data           OUT NOCOPY VARCHAR2,
4204             p_lapv_rec           IN  lapv_rec_type,
4205             p_lsqv_rec           IN  lsqv_rec_type) IS
4206 
4207     -- Variables Declarations
4208     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
4209     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_VAL';
4210     l_return_status            VARCHAR2(1);
4211     l_dummy                    VARCHAR2(200);
4212 
4213     -- Record/Table Type Declarations
4214     l_lapv_rec		lapv_rec_type;
4215     l_lsqv_rec		lsqv_rec_type;
4216 
4217     -- Bug#4741121 - viselvar  - Modified - Start
4218     l_parameter_list  wf_parameter_list_t;
4219     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.validated';
4220     -- Bug#4741121 - viselvar  - Modified - End
4221 
4222     --Cursor for Lease Application Template details
4223     CURSOR lat_dtls_csr(cp_tmpl_id NUMBER, cp_valid_from DATE) IS
4224       SELECT LAT.NAME LEASEAPP_TMPL_NAME
4225         FROM OKL_LEASEAPP_TEMPLATES LAT
4226             ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
4227        WHERE (LATV.VERSION_STATUS <> 'ACTIVE' OR
4228               LATV.VALID_FROM > cp_valid_from OR
4229               NVL(LATV.VALID_TO, TO_DATE('31-12-9999', 'dd-mm-yyyy')) < cp_valid_from)
4230          AND LATV.ID = cp_tmpl_id
4231 		 AND LATV.LEASEAPP_TEMPLATE_ID = LAT.ID;
4232     lat_dtls_rec lat_dtls_csr%ROWTYPE;
4233 
4234     --Cursor for Program Agreement details
4235     CURSOR pgm_agr_dtls_csr(cp_pgm_agr_id NUMBER) IS
4236       SELECT CHR.ID
4237            , CHR.CONTRACT_NUMBER
4238            , CHR.STS_CODE
4239            , PSTS.STE_CODE
4240            , CHR.START_DATE START_DATE
4241            , CHR.END_DATE END_DATE
4242         FROM OKC_K_HEADERS_B CHR
4243            , OKC_STATUSES_V PSTS
4244        WHERE CHR.SCS_CODE = 'PROGRAM'
4245          AND CHR.STS_CODE = PSTS.CODE
4246          AND CHR.ID = cp_pgm_agr_id;
4247     pgm_agr_dtls_rec pgm_agr_dtls_csr%ROWTYPE;
4248 
4249     --Cursor for Lease Quote details
4250     CURSOR lse_qte_dtls_csr(cp_lop_id NUMBER) IS
4251       SELECT LSQ.ID
4252            , LSQ.REFERENCE_NUMBER
4253            , LSQ.STATUS
4254         FROM OKL_LEASE_QUOTES_B LSQ
4255            , OKL_LEASE_OPPORTUNITIES_B LOP
4256        WHERE LOP.ID = cp_lop_id
4257 	     AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
4258 		 AND LSQ.PARENT_OBJECT_ID = LOP.ID
4259 		 AND LSQ.STATUS = 'CT-ACCEPTED';
4260     lse_qte_dtls_rec lse_qte_dtls_csr%ROWTYPE;
4261 
4262     --Cursor for Lease Application Template and Vendor Program Association validation
4263     --Bug abhsaxen 5158188 for validation of VPA is having any LAT
4264     CURSOR lat_pgm_exist_csr(cp_pgm_agr_id NUMBER) IS
4265       SELECT 'X'
4266         FROM OKC_K_HEADERS_B PGM
4267            , OKL_VP_ASSOCIATIONS_V VPA
4268            , OKL_LEASEAPP_TEMPLATES LAT
4269            , OKL_LEASEAPP_TEMPL_VERSIONS_B LATV
4270        WHERE VPA.CHR_ID = PGM.ID
4271          AND VPA.CRS_ID IS NULL
4272          AND VPA.ASSOC_OBJECT_TYPE_CODE = 'LA_TEMPLATE'
4273          AND PGM.SCS_CODE = 'PROGRAM'
4274          AND VPA.ASSOC_OBJECT_ID = LAT.ID
4275          AND VPA.ASSOC_OBJECT_VERSION = LATV.VERSION_NUMBER
4276          AND LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
4277          AND PGM.ID = cp_pgm_agr_id;
4278     lat_pgm_exist_rec lat_pgm_exist_csr%ROWTYPE;
4279     --Bug 4873205 PAGARG modified the query to validate validation
4280     CURSOR lat_pgm_val_csr(cp_pgm_agr_id NUMBER, cp_latv_id NUMBER) IS
4281       SELECT 'X'
4282         FROM OKC_K_HEADERS_B PGM
4283            , OKL_VP_ASSOCIATIONS_V VPA
4284            , OKL_LEASEAPP_TEMPLATES LAT
4285            , OKL_LEASEAPP_TEMPL_VERSIONS_B LATV
4286        WHERE VPA.CHR_ID = PGM.ID
4287          AND VPA.CRS_ID IS NULL
4288          AND VPA.ASSOC_OBJECT_TYPE_CODE = 'LA_TEMPLATE'
4289          AND PGM.SCS_CODE = 'PROGRAM'
4290          AND VPA.ASSOC_OBJECT_ID = LAT.ID
4291          AND VPA.ASSOC_OBJECT_VERSION = LATV.VERSION_NUMBER
4292          AND LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
4293          AND PGM.ID = cp_pgm_agr_id
4294          AND LATV.ID = cp_latv_id;
4295     lat_pgm_val_rec lat_pgm_val_csr%ROWTYPE;
4296 
4297     --Cursor to validate if there is any in process lease application sourced from
4298     --given Lease Quote
4299     CURSOR lap_lsq_uniq_csr(cp_lop_id NUMBER, p_lap_id NUMBER) IS
4300       SELECT REFERENCE_NUMBER
4301       FROM OKL_LEASE_APPLICATIONS_B
4302       --asawanka bug 4936130 changes start
4303       WHERE APPLICATION_STATUS NOT IN ('CR-APPROVED'
4304                                          ,'CR-REJECTED'
4305                                          ,'RECOM_NOT_APPROVED'
4306                                          ,'CONV-K'
4307                                          ,'WITHDRAWN'
4308                                          ,'CANCELED'
4309                                          ,'APPEALINPROG'
4310                                          ,'RESUBMITINPROG')
4311       --asawanka bug 4936130 changes end
4312         AND LEASE_OPPORTUNITY_ID = cp_lop_id
4313         AND ID <> NVL(p_lap_id, -1);
4314 
4315     --Bug 4873205 PAGARG Added cursors to validate Checklist and Contract Template
4316     --Validate Checklist Cursor
4317     CURSOR checklist_val_csr(p_latv_id NUMBER, p_valid_from DATE)
4318     IS
4319       SELECT CHECKLIST_NUMBER TEMPLATE_NUMBER
4320       FROM OKL_CHECKLISTS CHK
4321          , OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
4322          , OKL_LEASEAPP_TEMPLATES LAT
4323       WHERE LATV.CHECKLIST_ID = CHK.ID
4324         AND LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
4325         AND ( (p_valid_from NOT BETWEEN NVL(CHK.START_DATE, p_valid_from)
4326                AND NVL(CHK.END_DATE, p_valid_from))
4327              OR CHK.STATUS_CODE <> 'ACTIVE'
4328              OR CHK.CHECKLIST_PURPOSE_CODE NOT IN ('CHECKLIST_TEMPLATE', 'CHECKLIST_TEMPLATE_GROUP')
4329              OR CHK.ORG_ID <> LAT.ORG_ID)
4330         AND LATV.ID = p_latv_id;
4331 
4332      --Validate Contract Template Cursor
4333     CURSOR contract_tmpl_val_csr(p_latv_id NUMBER, p_valid_from DATE)
4334     IS
4335       SELECT CHR.CONTRACT_NUMBER TEMPLATE_NUMBER
4336       FROM OKC_K_HEADERS_B CHR
4337          , OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
4338          , OKL_LEASEAPP_TEMPLATES LAT
4339          , OKL_K_HEADERS KHR
4340          , OKC_STATUSES_V STS
4341       WHERE LATV.CONTRACT_TEMPLATE_ID = CHR.ID
4342         AND LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
4343         AND CHR.ID = KHR.ID
4344         AND CHR.STS_CODE = STS.CODE
4345 	/* Bug#6850094 : Include contract template with any status
4346         AND (CHR.TEMPLATE_YN <> 'Y'
4347              OR STS.STE_CODE <> 'ACTIVE'
4348              OR NVL(KHR.TEMPLATE_TYPE_CODE, 'X') <> 'LEASEAPP'
4349              OR CHR.AUTHORING_ORG_ID <> LAT.ORG_ID)
4350         */
4351        AND (CHR.TEMPLATE_YN <> 'Y'
4352                 OR (NVL(KHR.TEMPLATE_TYPE_CODE,'X') = 'LEASEAPP' AND STS.STE_CODE <> 'ACTIVE')
4353                 OR NVL(KHR.TEMPLATE_TYPE_CODE, 'X') NOT IN ('LEASEAPP','CONTRACT')
4354                 OR CHR.AUTHORING_ORG_ID <> LAT.ORG_ID)
4355        --Bug# 6850094 :End
4356         AND LATV.ID = p_latv_id;
4357   BEGIN
4358     l_return_status := OKL_API.G_RET_STS_SUCCESS;
4359     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_VAL';
4360 
4361     -- check for logging on PROCEDURE level
4362     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
4363     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
4364     -- check for logging on STATEMENT level
4365     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
4366 
4367     -- call START_ACTIVITY to create savepoint, check compatibility
4368     -- and initialize message list
4369     l_return_status := OKL_API.START_ACTIVITY(
4370                            p_api_name      => l_api_name
4371                           ,p_pkg_name      => G_PKG_NAME
4372                           ,p_init_msg_list => p_init_msg_list
4373                           ,l_api_version   => l_api_version
4374                           ,p_api_version   => p_api_version
4375                           ,p_api_type      => G_API_TYPE
4376                           ,x_return_status => l_return_status);
4377 
4378     -- check if activity started successfully
4379     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4380       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4381     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4382       RAISE OKL_API.G_EXCEPTION_ERROR;
4383     END IF;
4384 
4385     l_lapv_rec := p_lapv_rec;
4386     l_lsqv_rec := p_lsqv_rec;
4387 
4388     --Validate Lease Application Template
4389     IF(l_lapv_rec.leaseapp_template_id IS NOT NULL AND
4390        l_lapv_rec.leaseapp_template_id <> OKL_API.G_MISS_NUM)
4391     THEN
4392       FOR lat_dtls_rec IN lat_dtls_csr(l_lapv_rec.leaseapp_template_id
4393                                       ,l_lapv_rec.valid_from)
4394       LOOP
4395         l_return_status := OKL_API.G_RET_STS_ERROR;
4396         OKL_API.SET_MESSAGE(
4397             p_app_name      => G_APP_NAME,
4398             p_msg_name      => 'OKL_VAL_LEASEAPP_TEMPLATE',
4399             p_token1        => 'TEMPLATE_NUMBER',
4400             p_token1_value  => lat_dtls_rec.leaseapp_tmpl_name);
4401         RAISE OKL_API.G_EXCEPTION_ERROR;
4402       END LOOP;
4403 
4404       --Validate Eligibility Criteria for Lease Application Template
4405       l_return_status := is_valid_leaseapp_template(
4406                             l_lapv_rec.leaseapp_template_id
4407                            ,l_lapv_rec.id
4408                            ,l_lapv_rec.valid_from);
4409       IF(l_return_status = OKL_API.G_RET_STS_ERROR)
4410       THEN
4411         OKL_API.SET_MESSAGE(
4412             p_app_name      => G_APP_NAME,
4413             p_msg_name      => 'OKL_SO_LSEAPP_TMPL_EC_FAIL',
4414             p_token1        => 'TEXT',
4415             p_token1_value  => lat_dtls_rec.leaseapp_tmpl_name);
4416         RAISE OKL_API.G_EXCEPTION_ERROR;
4417       END IF;
4418     ELSE
4419       --Lease Application Template is required field.
4420       l_return_status := OKL_API.G_RET_STS_ERROR;
4421       OKL_API.SET_MESSAGE(
4422           p_app_name      => G_APP_NAME,
4423           p_msg_name      => 'OKL_SO_INVALID_LSEAPP_TMPL');
4424       RAISE OKL_API.G_EXCEPTION_ERROR;
4425     END IF; --Validate Lease Application Template
4426 
4427     --Validate Program Agreement and Associations
4428     IF(l_lapv_rec.program_agreement_id IS NOT NULL AND
4429        l_lapv_rec.program_agreement_id <> OKL_API.G_MISS_NUM)
4430     THEN
4431       OPEN pgm_agr_dtls_csr(l_lapv_rec.program_agreement_id);
4432       FETCH pgm_agr_dtls_csr INTO pgm_agr_dtls_rec;
4433         IF(pgm_agr_dtls_csr%NOTFOUND)
4434         THEN
4435           l_return_status := OKL_API.G_RET_STS_ERROR;
4436           OKL_API.SET_MESSAGE(
4437               p_app_name      => G_APP_NAME,
4438               p_msg_name      => 'OKL_SO_INVALID_PGM_AGR');
4439           RAISE OKL_API.G_EXCEPTION_ERROR;
4440         ELSIF(pgm_agr_dtls_rec.ste_code <> 'ACTIVE'
4441               OR pgm_agr_dtls_rec.START_DATE > l_lsqv_rec.expected_start_date
4442               OR NVL(pgm_agr_dtls_rec.END_DATE, TO_DATE('31-12-9999', 'dd-mm-yyyy')) < l_lsqv_rec.expected_start_date)
4443         THEN
4444           l_return_status := OKL_API.G_RET_STS_ERROR;
4445           OKL_API.SET_MESSAGE(
4446               p_app_name      => G_APP_NAME,
4447               p_msg_name      => 'OKL_SO_INACTIVE_PGM_AGR',
4448               p_token1        => 'TEXT',
4449               p_token1_value  => pgm_agr_dtls_rec.contract_number);
4450           RAISE OKL_API.G_EXCEPTION_ERROR;
4451         END IF;
4452       CLOSE pgm_agr_dtls_csr;
4453 
4454       --Validate Eligibility Criteria for Program Agreement
4455       l_return_status := is_valid_program_agreement(
4456                             l_lapv_rec.program_agreement_id
4457                            ,l_lapv_rec.id
4458                            ,l_lapv_rec.valid_from);
4459 
4460       IF(l_return_status = OKL_API.G_RET_STS_ERROR)
4461       THEN
4462         OKL_API.SET_MESSAGE(
4463             p_app_name      => G_APP_NAME,
4464             p_msg_name      => 'OKL_SO_PGM_AGR_EC_FAIL',
4465             p_token1        => 'TEXT',
4466             p_token1_value  => pgm_agr_dtls_rec.contract_number);
4467         RAISE OKL_API.G_EXCEPTION_ERROR;
4468       END IF;
4469 
4470       --Validate Lease Application Template and Program Agreement Association
4471       --Bug 4873205 PAGARG Passing Template Version id also to validate association
4472       --Bug abhsaxen 5158188 modified for VPA is not having LAT
4473       OPEN lat_pgm_exist_csr(l_lapv_rec.program_agreement_id);
4474       FETCH lat_pgm_exist_csr INTO lat_pgm_exist_rec;
4475       IF  lat_pgm_exist_csr%FOUND THEN
4476         OPEN lat_pgm_val_csr(l_lapv_rec.program_agreement_id, l_lapv_rec.leaseapp_template_id);
4477         FETCH lat_pgm_val_csr INTO lat_pgm_val_rec;
4478         IF lat_pgm_val_csr%NOTFOUND
4479             THEN
4480             l_return_status := OKL_API.G_RET_STS_ERROR;
4481             OKL_API.SET_MESSAGE(
4482                 p_app_name      => G_APP_NAME,
4483                 p_msg_name      => 'OKL_SO_NO_ASS_LAT_PAG',
4484                 p_token1        => 'LAP_TMP',
4485                 p_token1_value  => lat_dtls_rec.leaseapp_tmpl_name,
4486                 p_token2        => 'PGM_AGR',
4487                 p_token2_value  => pgm_agr_dtls_rec.contract_number);
4488             RAISE OKL_API.G_EXCEPTION_ERROR;
4489         END IF;
4490         CLOSE lat_pgm_val_csr;
4491       END IF;
4492       CLOSE lat_pgm_exist_csr;
4493     END IF; --Validate Program Agreement and Association
4494 
4495     --Validate Lease Quote
4496     IF(l_lapv_rec.lease_opportunity_id IS NOT NULL AND
4497        l_lapv_rec.lease_opportunity_id <> OKL_API.G_MISS_NUM)
4498     THEN
4499       OPEN lse_qte_dtls_csr(l_lapv_rec.lease_opportunity_id);
4500       FETCH lse_qte_dtls_csr INTO lse_qte_dtls_rec;
4501         IF(lse_qte_dtls_csr%NOTFOUND)
4502         THEN
4503           l_return_status := OKL_API.G_RET_STS_ERROR;
4504           OKL_API.SET_MESSAGE(
4505               p_app_name      => G_APP_NAME,
4506               p_msg_name      => 'OKL_SO_INVALID_LSE_QTE');
4507           RAISE OKL_API.G_EXCEPTION_ERROR;
4508         END IF;
4509       CLOSE lse_qte_dtls_csr;
4510 
4511       OPEN lap_lsq_uniq_csr(l_lapv_rec.lease_opportunity_id, l_lapv_rec.id);
4512       FETCH lap_lsq_uniq_csr INTO l_dummy;
4513         IF(lap_lsq_uniq_csr%FOUND)
4514         THEN
4515           l_return_status := OKL_API.G_RET_STS_ERROR;
4516           OKL_API.SET_MESSAGE(
4517               p_app_name      => G_APP_NAME,
4518               p_msg_name      => 'OKL_SO_LSE_APP_QTE_UNQ_ERR',
4519               p_token1        => 'TEXT',
4520               p_token1_value  => l_dummy,
4521               p_token2        => 'QUOTE',
4522               p_token2_value  => lse_qte_dtls_rec.reference_number);
4523           RAISE OKL_API.G_EXCEPTION_ERROR;
4524         END IF;
4525       CLOSE lap_lsq_uniq_csr;
4526     END IF; --Validate Lease Quote
4527 
4528     --Bug 4873205 PAGARG Validating Checklist and Contract Template
4529     --Validate whether Contract Template associated to the
4530     --Lease Application Template is still Active and effective
4531     FOR contract_tmpl_val_rec IN contract_tmpl_val_csr(l_lapv_rec.leaseapp_template_id
4532                                                       ,l_lapv_rec.valid_from)
4533     LOOP
4534       l_return_status := OKL_API.G_RET_STS_ERROR;
4535       OKL_API.SET_MESSAGE(
4536           p_app_name      => G_APP_NAME,
4537           p_msg_name      => 'OKL_VAL_CONTRACT_TEMPLATE',
4538           p_token1        => 'TEMPLATE_NUMBER',
4539           p_token1_value  => contract_tmpl_val_rec.template_number);
4540       RAISE OKL_API.G_EXCEPTION_ERROR;
4541     END LOOP;
4542 
4543     --Validate whether Checklist associated to the
4544     --Lease Application Template is still Active and effective
4545     FOR checklist_val_rec IN checklist_val_csr(l_lapv_rec.leaseapp_template_id
4546                                               ,l_lapv_rec.valid_from)
4547     LOOP
4548       l_return_status := OKL_API.G_RET_STS_ERROR;
4549       OKL_API.SET_MESSAGE(
4550           p_app_name      => G_APP_NAME,
4551           p_msg_name      => 'OKL_VAL_CHECKLIST_TEMPLATE',
4552           p_token1        => 'TEMPLATE_NUMBER',
4553           p_token1_value  => checklist_val_rec.template_number);
4554       RAISE OKL_API.G_EXCEPTION_ERROR;
4555     END LOOP;
4556 
4557     --Bug 4932155 PAGARG Validate Currency Conversion Attributes
4558     l_return_status := is_curr_conv_valid(
4559                           p_curr_code    => l_lapv_rec.currency_code
4560                          ,p_curr_type    => l_lapv_rec.currency_conversion_type
4561                          ,p_curr_rate    => l_lapv_rec.currency_conversion_rate
4562                          ,p_curr_date    => l_lapv_rec.currency_conversion_date);
4563 
4564     IF (l_return_status = OKL_API.G_RET_STS_ERROR)
4565     THEN
4566       RAISE OKL_API.G_EXCEPTION_ERROR;
4567     END IF;
4568 
4569     --Validate Expected Start Date against Valid From Date
4570     IF(TRUNC(l_lsqv_rec.expected_start_Date) < TRUNC(l_lapv_rec.valid_from))
4571     THEN
4572         l_return_status := OKL_API.G_RET_STS_ERROR;
4573         OKL_API.SET_MESSAGE(
4574             p_app_name      => G_APP_NAME,
4575             p_msg_name      => 'OKL_SO_LSE_APP_EXP_ST_DATE_ERR',
4576             p_token1        => 'VALID_FROM',
4577             p_token1_value  => l_lapv_rec.valid_from);
4578         RAISE OKL_API.G_EXCEPTION_ERROR;
4579     END IF;
4580 
4581     -- Bug#4741121 - viselvar  - Modified - Start
4582     -- raise the business event passing the Lease Application id added to the parameter list
4583     wf_event.addparametertolist('LAPP_ID'
4584                                ,l_lapv_rec.id
4585                                ,l_parameter_list);
4586     okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
4587                             ,p_init_msg_list =>            p_init_msg_list
4588                             ,x_return_status =>            l_return_status
4589                             ,x_msg_count     =>            x_msg_count
4590                             ,x_msg_data      =>            x_msg_data
4591                             ,p_event_name    =>            p_event_name
4592                             ,p_parameters    =>            l_parameter_list);
4593 
4594     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4595       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4596     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4597       RAISE OKL_API.G_EXCEPTION_ERROR;
4598     END IF;
4599     -- Bug#4741121 - viselvar  - Modified - End
4600 
4601     x_return_status := l_return_status;
4602     OKL_API.END_ACTIVITY(
4603          x_msg_count    => x_msg_count
4604         ,x_msg_data	    => x_msg_data);
4605   EXCEPTION
4606     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4607       --Lease Application Template Details Cursor
4608       IF lat_dtls_csr%ISOPEN
4609       THEN
4610         CLOSE lat_dtls_csr;
4611       END IF;
4612       --Program Agreement Details Cursor
4613       IF pgm_agr_dtls_csr%ISOPEN
4614       THEN
4615         CLOSE pgm_agr_dtls_csr;
4616       END IF;
4617       --Lease Quote Details Cursor
4618       IF lse_qte_dtls_csr%ISOPEN
4619       THEN
4620         CLOSE lse_qte_dtls_csr;
4621       END IF;
4622       --Lease Application Template and Program Agreement Association Cursor
4623       IF lat_pgm_val_csr%ISOPEN
4624       THEN
4625         CLOSE lat_pgm_val_csr;
4626       END IF;
4627       --Unique source for Active Lease Application
4628       IF lap_lsq_uniq_csr%ISOPEN
4629       THEN
4630         CLOSE lap_lsq_uniq_csr;
4631       END IF;
4632       --Contract Template Validate Cursor
4633       IF contract_tmpl_val_csr%ISOPEN
4634       THEN
4635         CLOSE contract_tmpl_val_csr;
4636       END IF;
4637       --Checklist Template Validate Cursor
4638       IF checklist_val_csr%ISOPEN
4639       THEN
4640         CLOSE checklist_val_csr;
4641       END IF;
4642       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4643                            p_api_name  => l_api_name,
4644                            p_pkg_name  => G_PKG_NAME,
4645                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
4646                            x_msg_count => x_msg_count,
4647                            x_msg_data  => x_msg_data,
4648                            p_api_type  => G_API_TYPE);
4649     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4650       --Lease Application Template Details Cursor
4651       IF lat_dtls_csr%ISOPEN
4652       THEN
4653         CLOSE lat_dtls_csr;
4654       END IF;
4655       --Program Agreement Details Cursor
4656       IF pgm_agr_dtls_csr%ISOPEN
4657       THEN
4658         CLOSE pgm_agr_dtls_csr;
4659       END IF;
4660       --Lease Quote Details Cursor
4661       IF lse_qte_dtls_csr%ISOPEN
4662       THEN
4663         CLOSE lse_qte_dtls_csr;
4664       END IF;
4665       --Lease Application Template and Program Agreement Association Cursor
4666       IF lat_pgm_val_csr%ISOPEN
4667       THEN
4668         CLOSE lat_pgm_val_csr;
4669       END IF;
4670       --Unique source for Active Lease Application
4671       IF lap_lsq_uniq_csr%ISOPEN
4672       THEN
4673         CLOSE lap_lsq_uniq_csr;
4674       END IF;
4675       --Contract Template Validate Cursor
4676       IF contract_tmpl_val_csr%ISOPEN
4677       THEN
4678         CLOSE contract_tmpl_val_csr;
4679       END IF;
4680       --Checklist Template Validate Cursor
4681       IF checklist_val_csr%ISOPEN
4682       THEN
4683         CLOSE checklist_val_csr;
4684       END IF;
4685       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4686                            p_api_name  => l_api_name,
4687                            p_pkg_name  => G_PKG_NAME,
4688                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
4689                            x_msg_count => x_msg_count,
4690                            x_msg_data  => x_msg_data,
4691                            p_api_type  => G_API_TYPE);
4692     WHEN OTHERS THEN
4693       --Lease Application Template Details Cursor
4694       IF lat_dtls_csr%ISOPEN
4695       THEN
4696         CLOSE lat_dtls_csr;
4697       END IF;
4698       --Program Agreement Details Cursor
4699       IF pgm_agr_dtls_csr%ISOPEN
4700       THEN
4701         CLOSE pgm_agr_dtls_csr;
4702       END IF;
4703       --Lease Quote Details Cursor
4704       IF lse_qte_dtls_csr%ISOPEN
4705       THEN
4706         CLOSE lse_qte_dtls_csr;
4707       END IF;
4708       --Lease Application Template and Program Agreement Association Cursor
4709       IF lat_pgm_val_csr%ISOPEN
4710       THEN
4711         CLOSE lat_pgm_val_csr;
4712       END IF;
4713       --Unique source for Active Lease Application
4714       IF lap_lsq_uniq_csr%ISOPEN
4715       THEN
4716         CLOSE lap_lsq_uniq_csr;
4717       END IF;
4718       --Contract Template Validate Cursor
4719       IF contract_tmpl_val_csr%ISOPEN
4720       THEN
4721         CLOSE contract_tmpl_val_csr;
4722       END IF;
4723       --Checklist Template Validate Cursor
4724       IF checklist_val_csr%ISOPEN
4725       THEN
4726         CLOSE checklist_val_csr;
4727       END IF;
4728       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4729                            p_api_name  => l_api_name,
4730                            p_pkg_name  => G_PKG_NAME,
4731                            p_exc_name  => 'OTHERS',
4732                            x_msg_count => x_msg_count,
4733                            x_msg_data  => x_msg_data,
4734                            p_api_type  => G_API_TYPE);
4735   END lease_app_val;
4736 
4737   ------------------------------------------------------------------------------
4738   -- PROCEDURE lease_app_accept
4739   ------------------------------------------------------------------------------
4740   -- Start of comments
4741   --
4742   -- Procedure Name  : lease_app_accept
4743   -- Description     : This procedure accepts lease application.
4744   -- Business Rules  : This procedure accepts lease application
4745   -- Parameters      :
4746   -- Version         : 1.0
4747   -- History         : 20-MAY-2005 PAGARG created
4748   --
4749   -- End of comments
4750   PROCEDURE lease_app_accept(
4751             p_api_version        IN  NUMBER,
4752             p_init_msg_list      IN  VARCHAR2,
4753             x_return_status      OUT NOCOPY VARCHAR2,
4754             x_msg_count          OUT NOCOPY NUMBER,
4755             x_msg_data           OUT NOCOPY VARCHAR2,
4756             p_lapv_rec           IN  lapv_rec_type,
4757             x_lapv_rec           OUT NOCOPY lapv_rec_type) IS
4758 
4759     -- Variables Declarations
4760     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
4761     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_ACCEPT';
4762     l_return_status            VARCHAR2(1);
4763 
4764     -- Record/Table Type Declarations
4765     l_lapv_rec		lapv_rec_type;
4766     l_lsqv_rec      lsqv_rec_type;
4767     x_lsqv_rec      lsqv_rec_type;
4768     -- Bug#4741121 - viselvar  - Modified - Start
4769     l_parameter_list  wf_parameter_list_t;
4770     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.submitted_for_acceptance';
4771     p_event_name1      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.quote_accepted';
4772     -- Bug#4741121 - viselvar  - Modified - End
4773   BEGIN
4774     l_return_status := OKL_API.G_RET_STS_SUCCESS;
4775     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_ACCEPT';
4776 
4777     -- check for logging on PROCEDURE level
4778     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
4779     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
4780     -- check for logging on STATEMENT level
4781     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
4782 
4783     -- call START_ACTIVITY to create savepoint, check compatibility
4784     -- and initialize message list
4785     l_return_status := OKL_API.START_ACTIVITY(
4786                            p_api_name      => l_api_name
4787                           ,p_pkg_name      => G_PKG_NAME
4788                           ,p_init_msg_list => p_init_msg_list
4789                           ,l_api_version   => l_api_version
4790                           ,p_api_version   => p_api_version
4791                           ,p_api_type      => G_API_TYPE
4792                           ,x_return_status => l_return_status);
4793 
4794     -- check if activity started successfully
4795     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4796       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4797     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4798       RAISE OKL_API.G_EXCEPTION_ERROR;
4799     END IF;
4800 
4801     l_lapv_rec := p_lapv_rec;
4802     -- Bug#4741121 - viselvar  - Modified - Start
4803     -- raise the business event passing the Lease Application id added to the parameter list
4804     wf_event.addparametertolist('LAPP_ID'
4805                                ,p_lapv_rec.id
4806                                ,l_parameter_list);
4807 
4808     okl_wf_pvt.raise_event(  p_api_version   =>            p_api_version
4809                             ,p_init_msg_list =>            p_init_msg_list
4810                             ,x_return_status =>            l_return_status
4811                             ,x_msg_count     =>            x_msg_count
4812                             ,x_msg_data      =>            x_msg_data
4813                             ,p_event_name    =>            p_event_name
4814                             ,p_parameters    =>            l_parameter_list);
4815 
4816 
4817     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4818       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4819     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4820       RAISE OKL_API.G_EXCEPTION_ERROR;
4821     END IF;
4822     -- Bug#4741121 - viselvar  - Modified - End
4823 
4824     --Populate Lease Application rec with the values from database.
4825     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4826     THEN
4827       OKL_DEBUG_PUB.LOG_DEBUG(
4828           FND_LOG.LEVEL_PROCEDURE
4829          ,L_MODULE
4830          ,'begin debug call POPULATE_LEASE_APP');
4831     END IF;
4832 
4833     POPULATE_LEASE_APP(
4834         p_api_version           => p_api_version
4835        ,p_init_msg_list         => OKL_API.G_FALSE
4836        ,x_return_status         => l_return_status
4837        ,x_msg_count             => x_msg_count
4838        ,x_msg_data              => x_msg_data
4839        ,p_lap_id                => l_lapv_rec.id
4840        ,x_lapv_rec              => x_lapv_rec
4841        ,x_lsqv_rec              => x_lsqv_rec);
4842 
4843     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4844     THEN
4845       OKL_DEBUG_PUB.LOG_DEBUG(
4846           FND_LOG.LEVEL_PROCEDURE
4847          ,L_MODULE
4848          ,'end debug call POPULATE_LEASE_APP');
4849     END IF;
4850 
4851     -- write to log
4852     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4853       OKL_DEBUG_PUB.LOG_DEBUG(
4854           FND_LOG.LEVEL_STATEMENT
4855          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
4856          ,'l_return_status ' || l_return_status);
4857     END IF; -- end of statement level debug
4858 
4859     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4860       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4861     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4862       RAISE OKL_API.G_EXCEPTION_ERROR;
4863     END IF;
4864 
4865     l_lapv_rec := x_lapv_rec;
4866     l_lsqv_rec := x_lsqv_rec;
4867     IF(l_lapv_rec.application_status = 'PR-APPROVED')
4868     THEN
4869       --Validate Lease Application and if valid then update the status to
4870       --Pricing Accepted
4871       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4872       THEN
4873         OKL_DEBUG_PUB.LOG_DEBUG(
4874             FND_LOG.LEVEL_PROCEDURE
4875            ,L_MODULE
4876            ,'begin debug call LEASE_APP_VAL');
4877       END IF;
4878 
4879       LEASE_APP_VAL(
4880           p_api_version           => p_api_version
4881          ,p_init_msg_list         => OKL_API.G_FALSE
4882          ,x_return_status         => l_return_status
4883          ,x_msg_count             => x_msg_count
4884          ,x_msg_data              => x_msg_data
4885          ,p_lapv_rec              => l_lapv_rec
4886          ,p_lsqv_rec              => l_lsqv_rec);
4887 
4888       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4889       THEN
4890         OKL_DEBUG_PUB.LOG_DEBUG(
4891             FND_LOG.LEVEL_PROCEDURE
4892            ,L_MODULE
4893            ,'end debug call LEASE_APP_VAL');
4894       END IF;
4895 
4896       -- write to log
4897       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4898         OKL_DEBUG_PUB.LOG_DEBUG(
4899             FND_LOG.LEVEL_STATEMENT
4900            ,L_MODULE || ' Result of LEASE_APP_VAL'
4901            ,'l_return_status ' || l_return_status);
4902       END IF; -- end of statement level debug
4903 
4904       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4905         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4906       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4907         RAISE OKL_API.G_EXCEPTION_ERROR;
4908       END IF;
4909 
4910       --Fixed added Bug 5647107 ssdeshpa start
4911       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4912       THEN
4913         OKL_DEBUG_PUB.LOG_DEBUG(
4914             FND_LOG.LEVEL_PROCEDURE
4915            ,L_MODULE
4916            ,'begin debug call VALIDATE_LE_ID');
4917       END IF;
4918 
4919       validate_le_id(l_lsqv_rec.legal_entity_id, l_return_status);
4920 
4921       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4922       THEN
4923         OKL_DEBUG_PUB.LOG_DEBUG(
4924             FND_LOG.LEVEL_PROCEDURE
4925            ,L_MODULE
4926            ,'end debug call VALIDATE_LE_ID');
4927       END IF;
4928 
4929       -- write to log
4930       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4931         OKL_DEBUG_PUB.LOG_DEBUG(
4932             FND_LOG.LEVEL_STATEMENT
4933            ,L_MODULE || ' Result of VALIDATE_LE_ID'
4934            ,'l_return_status ' || l_return_status);
4935       END IF; -- end of statement level debug
4936 
4937       IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
4938          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4939       ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
4940          RAISE OKL_API.G_EXCEPTION_ERROR;
4941       END IF;
4942       --Fixed added Bug 5647107 ssdeshpa end
4943 
4944       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4945       THEN
4946         OKL_DEBUG_PUB.LOG_DEBUG(
4947             FND_LOG.LEVEL_PROCEDURE
4948            ,L_MODULE
4949            ,'begin debug call SET_LEASE_APP_STATUS');
4950       END IF;
4951 
4952       SET_LEASE_APP_STATUS(
4953           p_api_version           => p_api_version
4954          ,p_init_msg_list         => OKL_API.G_FALSE
4955          ,p_lap_id                => l_lapv_rec.id
4956          ,p_lap_status            => 'PR-ACCEPTED'
4957          ,x_return_status         => l_return_status
4958          ,x_msg_count             => x_msg_count
4959          ,x_msg_data              => x_msg_data);
4960 
4961       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4962       THEN
4963         OKL_DEBUG_PUB.LOG_DEBUG(
4964             FND_LOG.LEVEL_PROCEDURE
4965            ,L_MODULE
4966            ,'end debug call SET_LEASE_APP_STATUS');
4967       END IF;
4968 
4969       -- write to log
4970       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
4971         OKL_DEBUG_PUB.LOG_DEBUG(
4972             FND_LOG.LEVEL_STATEMENT
4973            ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
4974            ,'l_return_status ' || l_return_status);
4975       END IF; -- end of statement level debug
4976 
4977       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
4978         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4979       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
4980         RAISE OKL_API.G_EXCEPTION_ERROR;
4981       END IF;
4982 
4983       --Update the lease quote to status pricing accepted
4984       l_lsqv_rec.status := 'CT-ACCEPTED';
4985 
4986       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
4987       THEN
4988         OKL_DEBUG_PUB.LOG_DEBUG(
4989             FND_LOG.LEVEL_PROCEDURE
4990            ,L_MODULE
4991            ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
4992       END IF;
4993 
4994       -- call the procedure to update lease quote line
4995       OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
4996           p_api_version                        => p_api_version
4997          ,p_init_msg_list                      => OKL_API.G_FALSE
4998          ,p_transaction_control                => OKL_API.G_TRUE
4999          ,p_lease_qte_rec                      => l_lsqv_rec
5000          ,x_lease_qte_rec                      => x_lsqv_rec
5001          ,x_return_status                      => l_return_status
5002          ,x_msg_count                          => x_msg_count
5003          ,x_msg_data                           => x_msg_data);
5004 
5005       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5006       THEN
5007         OKL_DEBUG_PUB.LOG_DEBUG(
5008             FND_LOG.LEVEL_PROCEDURE
5009            ,L_MODULE
5010            ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
5011       END IF;
5012 
5013       -- write to log
5014       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5015         OKL_DEBUG_PUB.LOG_DEBUG(
5016             FND_LOG.LEVEL_STATEMENT
5017            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
5018            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
5019             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
5020             ' result status ' || l_return_status ||
5021             ' x_msg_data ' || x_msg_data);
5022       END IF; -- end of statement level debug
5023 
5024       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5025         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5026       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5027         RAISE OKL_API.G_EXCEPTION_ERROR;
5028       END IF;
5029 
5030       -- Bug#4741121 - viselvar  - Modified - Start
5031       -- raise the business event passing the Lease Application id added to the parameter list
5032       -- this event is raised after the quote is accepted ie the quote status is changed
5033       wf_event.addparametertolist('LAPP_ID'
5034                                ,p_lapv_rec.id
5035                                ,l_parameter_list);
5036 
5037       okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
5038                             ,p_init_msg_list =>            p_init_msg_list
5039                             ,x_return_status =>            l_return_status
5040                             ,x_msg_count     =>            x_msg_count
5041                             ,x_msg_data      =>            x_msg_data
5042                             ,p_event_name    =>            p_event_name1
5043                             ,p_parameters    =>            l_parameter_list);
5044 
5045       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5046         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5047       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5048         RAISE OKL_API.G_EXCEPTION_ERROR;
5049       END IF;
5050       -- Bug#4741121 - viselvar  - Modified - End
5051     END IF;
5052 
5053     x_return_status := l_return_status;
5054     OKL_API.END_ACTIVITY(
5055          x_msg_count    => x_msg_count
5056         ,x_msg_data	    => x_msg_data);
5057   EXCEPTION
5058     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5059       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5060                            p_api_name  => l_api_name,
5061                            p_pkg_name  => G_PKG_NAME,
5062                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
5063                            x_msg_count => x_msg_count,
5064                            x_msg_data  => x_msg_data,
5065                            p_api_type  => G_API_TYPE);
5066     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5067       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5068                            p_api_name  => l_api_name,
5069                            p_pkg_name  => G_PKG_NAME,
5070                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5071                            x_msg_count => x_msg_count,
5072                            x_msg_data  => x_msg_data,
5073                            p_api_type  => G_API_TYPE);
5074     WHEN OTHERS THEN
5075       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5076                            p_api_name  => l_api_name,
5077                            p_pkg_name  => G_PKG_NAME,
5078                            p_exc_name  => 'OTHERS',
5079                            x_msg_count => x_msg_count,
5080                            x_msg_data  => x_msg_data,
5081                            p_api_type  => G_API_TYPE);
5082   END lease_app_accept;
5083 
5084   ------------------------------------------------------------------------------
5085   -- PROCEDURE lease_app_withdraw
5086   ------------------------------------------------------------------------------
5087   -- Start of comments
5088   --
5089   -- Procedure Name  : lease_app_withdraw
5090   -- Description     : This procedure withdraws lease application.
5091   -- Business Rules  : This procedure withdraws lease application
5092   -- Parameters      :
5093   -- Version         : 1.0
5094   -- History         : 20-MAY-2005 PAGARG created
5095   --
5096   -- End of comments
5097   PROCEDURE lease_app_withdraw(
5098             p_api_version        IN  NUMBER,
5099             p_init_msg_list      IN  VARCHAR2,
5100             x_return_status      OUT NOCOPY VARCHAR2,
5101             x_msg_count          OUT NOCOPY NUMBER,
5102             x_msg_data           OUT NOCOPY VARCHAR2,
5103             p_lapv_rec           IN  lapv_rec_type,
5104             x_lapv_rec           OUT NOCOPY lapv_rec_type) IS
5105 
5106     -- Variables Declarations
5107     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
5108     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_WITHDRAW';
5109     l_return_status            VARCHAR2(1);
5110 
5111     -- Record/Table Type Declarations
5112     l_lapv_rec		lapv_rec_type;
5113     l_lsqv_rec      lsqv_rec_type;
5114     x_lsqv_rec      lsqv_rec_type;
5115 
5116     -- Bug#4741121 - smadhava  - Added - Start
5117     l_parameter_list WF_PARAMETER_LIST_T;
5118     l_event_name     wf_events.name%TYPE;
5119     -- Bug#4741121 - smadhava  - Added - End
5120   BEGIN
5121     l_return_status := OKL_API.G_RET_STS_SUCCESS;
5122     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_WITHDRAW';
5123 
5124     -- check for logging on PROCEDURE level
5125     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
5126     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
5127     -- check for logging on STATEMENT level
5128     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
5129 
5130     -- call START_ACTIVITY to create savepoint, check compatibility
5131     -- and initialize message list
5132     l_return_status := OKL_API.START_ACTIVITY(
5133                            p_api_name      => l_api_name
5134                           ,p_pkg_name      => G_PKG_NAME
5135                           ,p_init_msg_list => p_init_msg_list
5136                           ,l_api_version   => l_api_version
5137                           ,p_api_version   => p_api_version
5138                           ,p_api_type      => G_API_TYPE
5139                           ,x_return_status => l_return_status);
5140 
5141     -- check if activity started successfully
5142     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5143       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5144     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5145       RAISE OKL_API.G_EXCEPTION_ERROR;
5146     END IF;
5147 
5148     l_lapv_rec := p_lapv_rec;
5149 
5150     --Check the status of Lease Application
5151     --If status not Credit submitted, credit rejected, credit approved, withdrawn
5152     -- then change the status to withdrawn
5153     --If status credit submitted then start workflow for withdrawn approval from
5154     --credit analyst and change the status to Withdraw Approval Pending
5155     --If approved from credit analyst then change the status to withdrawn
5156     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5157     THEN
5158       OKL_DEBUG_PUB.LOG_DEBUG(
5159           FND_LOG.LEVEL_PROCEDURE
5160          ,L_MODULE
5161          ,'begin debug call POPULATE_LEASE_APP');
5162     END IF;
5163 
5164     POPULATE_LEASE_APP(
5165         p_api_version           => p_api_version
5166        ,p_init_msg_list         => OKL_API.G_FALSE
5167        ,x_return_status         => l_return_status
5168        ,x_msg_count             => x_msg_count
5169        ,x_msg_data              => x_msg_data
5170        ,p_lap_id                => l_lapv_rec.id
5171        ,x_lapv_rec              => x_lapv_rec
5172        ,x_lsqv_rec              => x_lsqv_rec);
5173 
5174     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5175     THEN
5176       OKL_DEBUG_PUB.LOG_DEBUG(
5177           FND_LOG.LEVEL_PROCEDURE
5178          ,L_MODULE
5179          ,'end debug call POPULATE_LEASE_APP');
5180     END IF;
5181 
5182     -- write to log
5183     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5184       OKL_DEBUG_PUB.LOG_DEBUG(
5185           FND_LOG.LEVEL_STATEMENT
5186          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
5187          ,'l_return_status ' || l_return_status);
5188     END IF; -- end of statement level debug
5189 
5190     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5191       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5192     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5193       RAISE OKL_API.G_EXCEPTION_ERROR;
5194     END IF;
5195 
5196     l_lapv_rec := x_lapv_rec;
5197 
5198     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5199     THEN
5200       OKL_DEBUG_PUB.LOG_DEBUG(
5201           FND_LOG.LEVEL_PROCEDURE
5202          ,L_MODULE
5203          ,'begin debug call CHECK_ELIGIBILITY');
5204     END IF;
5205 
5206     --call the procedure to Validate Withdraw action on lease app
5207     CHECK_ELIGIBILITY(
5208         p_api_version     => p_api_version
5209        ,p_init_msg_list   => OKL_API.G_FALSE
5210        ,x_return_status   => l_return_status
5211        ,x_msg_count       => x_msg_count
5212        ,x_msg_data        => x_msg_data
5213        ,p_lap_id          => l_lapv_rec.id
5214        ,p_action          => 'WITHDRAW');
5215 
5216     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5217     THEN
5218       OKL_DEBUG_PUB.LOG_DEBUG(
5219           FND_LOG.LEVEL_PROCEDURE
5220          ,L_MODULE
5221          ,'end debug call CHECK_ELIGIBILITY');
5222     END IF;
5223 
5224     -- write to log
5225     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5226       OKL_DEBUG_PUB.LOG_DEBUG(
5227           FND_LOG.LEVEL_STATEMENT
5228          ,L_MODULE || ' Result of CHECK_ELIGIBILITY'
5229          ,'return status ' || l_return_status ||
5230           ' x_msg_data ' || x_msg_data);
5231     END IF; -- end of statement level debug
5232 
5233     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5234       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5235     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5236       RAISE OKL_API.G_EXCEPTION_ERROR;
5237     END IF;
5238 
5239     IF(l_lapv_rec.application_status NOT IN('CR-SUBMITTED'
5240                                            ,'CONV-K'
5241                                            ,'WITHDRAWN'))
5242     THEN
5243       l_lapv_rec.application_status := 'WITHDRAWN';
5244 
5245       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5246       THEN
5247         OKL_DEBUG_PUB.LOG_DEBUG(
5248             FND_LOG.LEVEL_PROCEDURE
5249            ,L_MODULE
5250            ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
5251       END IF;
5252 
5253       OKL_LAP_PVT.UPDATE_ROW(
5254           p_api_version           => p_api_version
5255          ,p_init_msg_list         => OKL_API.G_FALSE
5256          ,x_return_status         => l_return_status
5257          ,x_msg_count             => x_msg_count
5258          ,x_msg_data              => x_msg_data
5259          ,p_lapv_rec              => l_lapv_rec
5260          ,x_lapv_rec              => x_lapv_rec);
5261 
5262       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5263       THEN
5264         OKL_DEBUG_PUB.LOG_DEBUG(
5265             FND_LOG.LEVEL_PROCEDURE
5266            ,L_MODULE
5267            ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
5268       END IF;
5269 
5270       -- write to log
5271       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5272         OKL_DEBUG_PUB.LOG_DEBUG(
5273             FND_LOG.LEVEL_STATEMENT
5274            ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
5275            ,'l_return_status ' || l_return_status);
5276       END IF; -- end of statement level debug
5277 
5278       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5279         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5280       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5281         RAISE OKL_API.G_EXCEPTION_ERROR;
5282       END IF;
5283 
5284       --Check if lease quote line of Lease App is in status pricing approved or
5285       --accepted then only call the process subsidy pool api
5286       IF(x_lsqv_rec.status IN ('PR-APPROVED', 'CT-ACCEPTED'))
5287       THEN
5288         --Call the API to process the lease app subsidy pool
5289         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5290         THEN
5291           OKL_DEBUG_PUB.LOG_DEBUG(
5292               FND_LOG.LEVEL_PROCEDURE
5293              ,L_MODULE
5294              ,'begin debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
5295         END IF;
5296 
5297         OKL_LEASE_QUOTE_SUBPOOL_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL(
5298             p_api_version           => p_api_version
5299            ,p_init_msg_list         => OKL_API.G_FALSE
5300            ,p_transaction_control   => OKL_API.G_TRUE
5301            ,p_leaseapp_id           => l_lapv_rec.id
5302            ,p_transaction_reason    => 'WITHDRAW_LEASE_APP'
5303            ,p_quote_id              => null
5304            ,x_return_status         => l_return_status
5305            ,x_msg_count             => x_msg_count
5306            ,x_msg_data              => x_msg_data);
5307 
5308         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5309         THEN
5310           OKL_DEBUG_PUB.LOG_DEBUG(
5311               FND_LOG.LEVEL_PROCEDURE
5312              ,L_MODULE
5313              ,'end debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
5314         END IF;
5315 
5316         -- write to log
5317         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5318           OKL_DEBUG_PUB.LOG_DEBUG(
5319               FND_LOG.LEVEL_STATEMENT
5320              ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL'
5321              ,'l_return_status ' || l_return_status);
5322         END IF; -- end of statement level debug
5323 
5324         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5325           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5326         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5327           RAISE OKL_API.G_EXCEPTION_ERROR;
5328         END IF;
5329       END IF;-- Checking Lease Quote status for call to process subsidy pool api
5330 
5331       --Call the API which will check if there is any Parent to this Lease App
5332       --and in status Appeal/Resubmit in Progress. If yes then restore the status
5333       --of parent to original status
5334       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5335       THEN
5336         OKL_DEBUG_PUB.LOG_DEBUG(
5337             FND_LOG.LEVEL_PROCEDURE
5338            ,L_MODULE
5339            ,'begin debug call REVERT_TO_ORIG_STATUS');
5340       END IF;
5341 
5342       REVERT_TO_ORIG_STATUS(
5343           p_api_version           => l_api_version
5344          ,p_init_msg_list         => OKL_API.G_FALSE
5345          ,p_lap_id                => l_lapv_rec.id
5346          ,x_return_status         => l_return_status
5347          ,x_msg_count             => x_msg_count
5348          ,x_msg_data              => x_msg_data);
5349 
5350       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5351       THEN
5352         OKL_DEBUG_PUB.LOG_DEBUG(
5353             FND_LOG.LEVEL_PROCEDURE
5354            ,L_MODULE
5355            ,'end debug call REVERT_TO_ORIG_STATUS');
5356       END IF;
5357 
5358       -- write to log
5359       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5360         OKL_DEBUG_PUB.LOG_DEBUG(
5361             FND_LOG.LEVEL_STATEMENT
5362            ,L_MODULE || ' Result of REVERT_TO_ORIG_STATUS'
5363            ,'l_return_status ' || l_return_status);
5364       END IF; -- end of statement level debug
5365 
5366       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5367         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5368       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5369         RAISE OKL_API.G_EXCEPTION_ERROR;
5370       END IF;
5371     ELSIF(l_lapv_rec.application_status = 'CR-SUBMITTED')
5372     THEN
5373       --**** Instead of submitting any Withdraw Approval, need to call OCM API to Withdraw****--
5374       --Submit workflow for Withdraw approval
5375       --Bug#4741121 - smadhava  - Added - Start
5376       --raise workflow submit event
5377       l_event_name := G_WF_EVT_LEASE_APP_WDW_PENDING;
5378 
5379       -- Add the version id to the wf parameter list
5380       wf_event.AddParameterToList(G_WF_LEASE_APP_ID
5381                                  ,l_lapv_rec.ID
5382                                  ,l_parameter_list);
5383 	--added by akrangan
5384 	wf_event.AddParameterToList('ORG_ID',mo_global.get_current_org_id ,l_parameter_list);
5385 
5386 
5387       -- Raise the workflow event for Withdrawal of lease application
5388       OKL_WF_PVT.raise_event(p_api_version      => p_api_version,
5389                              p_init_msg_list  => p_init_msg_list,
5390                              x_return_status  => l_return_status,
5391                              x_msg_count      => x_msg_count,
5392                              x_msg_data       => x_msg_data,
5393                              p_event_name     => l_event_name,
5394                              p_parameters     => l_parameter_list);
5395 
5396       IF l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
5397         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5398       ELSIF l_return_status = OKL_API.G_RET_STS_ERROR THEN
5399         RAISE OKL_API.G_EXCEPTION_ERROR;
5400       END IF;
5401       -- Bug#4741121 - smadhava  - Added - End
5402     END IF;
5403 
5404     x_return_status := l_return_status;
5405     OKL_API.END_ACTIVITY(
5406          x_msg_count    => x_msg_count
5407         ,x_msg_data	    => x_msg_data);
5408   EXCEPTION
5409     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5410       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5411                            p_api_name  => l_api_name,
5412                            p_pkg_name  => G_PKG_NAME,
5413                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
5414                            x_msg_count => x_msg_count,
5415                            x_msg_data  => x_msg_data,
5416                            p_api_type  => G_API_TYPE);
5417     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5418       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5419                            p_api_name  => l_api_name,
5420                            p_pkg_name  => G_PKG_NAME,
5421                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
5422                            x_msg_count => x_msg_count,
5423                            x_msg_data  => x_msg_data,
5424                            p_api_type  => G_API_TYPE);
5425     WHEN OTHERS THEN
5426       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5427                            p_api_name  => l_api_name,
5428                            p_pkg_name  => G_PKG_NAME,
5429                            p_exc_name  => 'OTHERS',
5430                            x_msg_count => x_msg_count,
5431                            x_msg_data  => x_msg_data,
5432                            p_api_type  => G_API_TYPE);
5433   END lease_app_withdraw;
5434 
5435   ------------------------------------------------------------------------------
5436   -- PROCEDURE lease_app_dup
5437   ------------------------------------------------------------------------------
5438   -- Start of comments
5439   --
5440   -- Procedure Name  : lease_app_dup
5441   -- Description     : This procedure duplicates lease application.
5442   -- Business Rules  : This procedure duplicates lease application
5443   -- Parameters      :
5444   -- Version         : 1.0
5445   -- History         : 20-MAY-2005 PAGARG created
5446   --                 : 09 Feb 2006 PAGARG Bug 4960541 Added call to validations
5447   --                   API while creating Lease App from Lease Quote
5448   -- End of comments
5449   PROCEDURE lease_app_dup(
5450             p_api_version        IN  NUMBER,
5451             p_init_msg_list      IN  VARCHAR2,
5452             x_return_status      OUT NOCOPY VARCHAR2,
5453             x_msg_count          OUT NOCOPY NUMBER,
5454             x_msg_data           OUT NOCOPY VARCHAR2,
5455             p_source_lap_id      IN  NUMBER,
5456             p_lapv_rec           IN  lapv_rec_type,
5457             x_lapv_rec           OUT NOCOPY lapv_rec_type,
5458             p_lsqv_rec           IN  lsqv_rec_type,
5459             x_lsqv_rec           OUT NOCOPY lsqv_rec_type,
5460             p_origin             IN  VARCHAR2) IS
5461 
5462     -- Variables Declarations
5463     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
5464     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_DUP';
5465     l_return_status            VARCHAR2(1);
5466     l_source_quote_id          NUMBER;
5467     l_qa_result                VARCHAR2(1);
5468 
5469     -- Record/Table Type Declarations
5470     l_lapv_rec		lapv_rec_type;
5471     l_lsqv_rec      lsqv_rec_type;
5472     l_crr_rec       crr_rec_type;
5473     x_crr_rec       crr_rec_type;
5474 
5475     -- Bug#4741121 - viselvar  - Modified - Start
5476     l_parameter_list  wf_parameter_list_t;
5477     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.duplicated';
5478     -- Bug#4741121 - viselvar  - Modified - End
5479 
5480      --gboomina:bug 7110500 - Start
5481      CURSOR quote_oth_atrrib_csr(p_source_quote_id NUMBER) IS
5482      SELECT
5483       EXPECTED_FUNDING_DATE,
5484       EXPECTED_DELIVERY_DATE
5485       FROM okl_lease_quotes_v
5486       WHERE id = p_source_quote_id;
5487 
5488      quote_oth_atrrib_rec quote_oth_atrrib_csr%ROWTYPE;
5489      --gboomina:bug 7110500 End
5490 
5491     --Cursor to obtain Checklist Header Id
5492     CURSOR chk_hdr_dtls_csr(cp_lap_id NUMBER)
5493     IS
5494     SELECT LATV.CHECKLIST_ID
5495     FROM OKL_LEASE_APPLICATIONS_B LAP
5496         ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
5497     WHERE LAP.LEASEAPP_TEMPLATE_ID = LATV.ID
5498       AND LAP.ID = cp_lap_id;
5499     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
5500 
5501     --Cursor to obtain Source Lease App details
5502     CURSOR src_lse_app_dtls_csr(cp_lap_id NUMBER)
5503     IS
5504       SELECT LSQ.ID LSQ_ID
5505       FROM OKL_LEASE_QUOTES_B LSQ
5506          , OKL_LEASE_APPLICATIONS_B LAP
5507       WHERE LSQ.PARENT_OBJECT_ID = LAP.ID
5508         AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
5509         AND LSQ.PRIMARY_QUOTE = 'Y'
5510         AND LAP.ID = cp_lap_id;
5511     src_lse_app_dtls_rec src_lse_app_dtls_csr%ROWTYPE;
5512 
5513     --Begin-bug#4721142 - varangan- cursor to fetch quote details from opportunity id
5514      --Cursor to obtain Source Lease App details
5515     CURSOR src_lse_opp_dtls_csr(cp_lap_id NUMBER)
5516     IS
5517       SELECT LSQ.ID LSQ_ID
5518            , LOP.ID LOP_ID
5519       FROM OKL_LEASE_OPPORTUNITIES_B LOP
5520          , OKL_LEASE_QUOTES_B LSQ
5521       WHERE
5522       LSQ.PARENT_OBJECT_ID = LOP.ID
5523         AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
5524         AND LSQ.STATUS = 'CT-ACCEPTED'
5525         AND LOP.ID = cp_lap_id;
5526     src_lse_opp_dtls_rec src_lse_opp_dtls_csr%ROWTYPE;
5527    --End-bug#4721142 - varangan- cursor to fetch quote details from opportunity id
5528   BEGIN
5529     l_return_status := OKL_API.G_RET_STS_SUCCESS;
5530     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_DUP';
5531 
5532     -- check for logging on PROCEDURE level
5533     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
5534     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
5535     -- check for logging on STATEMENT level
5536     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
5537 
5538     -- call START_ACTIVITY to create savepoint, check compatibility
5539     -- and initialize message list
5540     l_return_status := OKL_API.START_ACTIVITY(
5541                            p_api_name      => l_api_name
5542                           ,p_pkg_name      => G_PKG_NAME
5543                           ,p_init_msg_list => p_init_msg_list
5544                           ,l_api_version   => l_api_version
5545                           ,p_api_version   => p_api_version
5546                           ,p_api_type      => G_API_TYPE
5547                           ,x_return_status => l_return_status);
5548 
5549     -- check if activity started successfully
5550     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5551       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5552     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5553       RAISE OKL_API.G_EXCEPTION_ERROR;
5554     END IF;
5555 
5556     l_lapv_rec := p_lapv_rec;
5557     l_lsqv_rec := p_lsqv_rec;
5558     IF p_source_lap_id IS NOT NULL
5559     THEN
5560       --set the status for lease application
5561       l_lapv_rec.application_status := G_INIT_APPL_STATUS;
5562       --Bug 4930634 PAGARG if source for duplicate is not Lease Opp then remove
5563       --the link with Lease Opp from duplicated Lease App
5564       IF p_origin <> 'LEASEOPP'
5565       THEN
5566         l_lapv_rec.lease_opportunity_id := NULL; --Commented by VARANGAN for bug#4721142 to fetch quote details
5567       END IF;
5568     ELSE
5569       --BUG 4951955 PAGARG Instead of Lease Opp id, pass source Lease Quote id
5570       --as parameter to check default values
5571       OPEN src_lse_opp_dtls_csr(l_lapv_rec.lease_opportunity_id);
5572       FETCH src_lse_opp_dtls_csr INTO src_lse_opp_dtls_rec;
5573       CLOSE src_lse_opp_dtls_csr;
5574 
5575       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5576       THEN
5577         OKL_DEBUG_PUB.LOG_DEBUG(
5578             FND_LOG.LEVEL_PROCEDURE
5579            ,L_MODULE
5580            ,'begin debug call CHECK_LEASE_QUOTE_DEFAULTS');
5581       END IF;
5582 
5583       CHECK_LEASE_QUOTE_DEFAULTS(
5584           p_api_version           => p_api_version
5585          ,p_init_msg_list         => OKL_API.G_FALSE
5586          ,x_return_status         => l_return_status
5587          ,x_msg_count             => x_msg_count
5588          ,x_msg_data              => x_msg_data
5589          ,p_source_lsq_id         => src_lse_opp_dtls_rec.lsq_id
5590          ,p_lapv_rec              => l_lapv_rec
5591          ,p_lsqv_rec              => l_lsqv_rec);
5592 
5593       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5594       THEN
5595         OKL_DEBUG_PUB.LOG_DEBUG(
5596             FND_LOG.LEVEL_PROCEDURE
5597            ,L_MODULE
5598            ,'end debug call CHECK_LEASE_QUOTE_DEFAULTS');
5599       END IF;
5600 
5601       -- write to log
5602       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON)
5603 	  THEN
5604         OKL_DEBUG_PUB.LOG_DEBUG(
5605             FND_LOG.LEVEL_STATEMENT
5606            ,L_MODULE || ' Result of CHECK_LEASE_QUOTE_DEFAULTS'
5607            ,'l_return_status ' || l_return_status);
5608       END IF; -- end of statement level debug
5609 
5610       -- Check the status and accordingly set the Lease Application Status
5611       IF(l_return_status = OKL_API.G_RET_STS_SUCCESS)THEN
5612         l_lapv_rec.application_status := 'PR-ACCEPTED';
5613       ELSE
5614         --set the status for lease application
5615         l_lapv_rec.application_status := G_INIT_APPL_STATUS;
5616       END IF;
5617     END IF;
5618 
5619     --Validate Lease Application Template
5620     --Validate Program Agreement
5621     --Validate VP and LAT association
5622     --Validate Lease Quote
5623     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5624     THEN
5625       OKL_DEBUG_PUB.LOG_DEBUG(
5626           FND_LOG.LEVEL_PROCEDURE
5627          ,L_MODULE
5628          ,'begin debug call LEASE_APP_VAL');
5629     END IF;
5630 
5631     LEASE_APP_VAL(
5632         p_api_version           => p_api_version
5633        ,p_init_msg_list         => OKL_API.G_FALSE
5634        ,x_return_status         => l_return_status
5635        ,x_msg_count             => x_msg_count
5636        ,x_msg_data              => x_msg_data
5637        ,p_lapv_rec              => l_lapv_rec
5638        ,p_lsqv_rec              => l_lsqv_rec);
5639 
5640     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5641     THEN
5642       OKL_DEBUG_PUB.LOG_DEBUG(
5643           FND_LOG.LEVEL_PROCEDURE
5644          ,L_MODULE
5645          ,'end debug call LEASE_APP_VAL');
5646     END IF;
5647 
5648     -- write to log
5649     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5650       OKL_DEBUG_PUB.LOG_DEBUG(
5651           FND_LOG.LEVEL_STATEMENT
5652          ,L_MODULE || ' Result of LEASE_APP_VAL'
5653          ,'l_return_status ' || l_return_status);
5654     END IF; -- end of statement level debug
5655 
5656     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5657       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5658     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5659       RAISE OKL_API.G_EXCEPTION_ERROR;
5660     END IF;
5661 
5662     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5663     THEN
5664       OKL_DEBUG_PUB.LOG_DEBUG(
5665           FND_LOG.LEVEL_PROCEDURE
5666          ,L_MODULE
5667          ,'begin debug call OKL_LAP_PVT.INSERT_ROW');
5668     END IF;
5669 
5670     -- call the TAPI insert_row to create a lease application
5671     OKL_LAP_PVT.INSERT_ROW(
5672         p_api_version                        => p_api_version
5673        ,p_init_msg_list                      => OKL_API.G_FALSE
5674        ,x_return_status                      => l_return_status
5675        ,x_msg_count                          => x_msg_count
5676        ,x_msg_data                           => x_msg_data
5677        ,p_lapv_rec                           => l_lapv_rec
5678        ,x_lapv_rec                           => x_lapv_rec);
5679 
5680     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5681     THEN
5682       OKL_DEBUG_PUB.LOG_DEBUG(
5683           FND_LOG.LEVEL_PROCEDURE
5684          ,L_MODULE
5685          ,'end debug call OKL_LAP_PVT.INSERT_ROW');
5686     END IF;
5687 
5688     -- write to log
5689     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5690       OKL_DEBUG_PUB.LOG_DEBUG(
5691           FND_LOG.LEVEL_STATEMENT
5692          ,L_MODULE || ' Result of OKL_LAP_PVT.INSERT_ROW'
5693          ,'l_lapv_rec.reference_number ' || to_char(l_lapv_rec.reference_number) ||
5694           ' l_lapv_rec.id '|| l_lapv_rec.id ||
5695           ' result status ' || l_return_status ||
5696           ' x_msg_data ' || x_msg_data);
5697     END IF; -- end of statement level debug
5698 
5699     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5700       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5701     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5702       RAISE OKL_API.G_EXCEPTION_ERROR;
5703     END IF;
5704 
5705     --Populate lease quote rec values
5706     l_lsqv_rec.parent_object_code := 'LEASEAPP';
5707     l_lsqv_rec.parent_object_id := x_lapv_rec.id;
5708     --Bug 4721142 PAGARG set the lease quote reference number form sequence
5709     --Bug 4867953 PAGARG instead of using the sequence directly use function
5710     l_lsqv_rec.reference_number := get_next_seq_num(
5711                                        'OKL_LSQ_REF_SEQ'
5712                                       ,'OKL_LEASE_QUOTES_B'
5713                                       ,'REFERENCE_NUMBER');
5714     --Bug Fix End
5715     l_lsqv_rec.primary_quote := 'Y';
5716     l_lsqv_rec.status := 'PR-INCOMPLETE';
5717 
5718     IF p_source_lap_id IS NULL
5719        AND l_lapv_rec.application_status = 'PR-ACCEPTED'
5720     THEN
5721       l_lsqv_rec.status := 'CT-ACCEPTED';
5722     END IF;
5723 
5724     --Obtain the lease quote id attached to lease application and pass it as
5725     --source to duplicate lease quote.
5726     --This way it will duplicate lease quote with header values from rec and
5727     --rest of configuration, adjustment, pricing data from the source lease quote id
5728 
5729 --Begin-bug#4721142 - varangan- cursor to fetch quote details from opportunity id
5730     IF p_source_lap_id IS NULL
5731     THEN
5732       IF x_lapv_rec.lease_opportunity_id IS NOT NULL
5733       THEN
5734         OPEN src_lse_opp_dtls_csr(x_lapv_rec.lease_opportunity_id);
5735         FETCH src_lse_opp_dtls_csr INTO src_lse_opp_dtls_rec;
5736         CLOSE src_lse_opp_dtls_csr;
5737         l_source_quote_id := src_lse_opp_dtls_rec.lsq_id;
5738 
5739         -- gboomina Bug 7110500: start
5740         OPEN quote_oth_atrrib_csr(l_source_quote_id);
5741         FETCH quote_oth_atrrib_csr INTO quote_oth_atrrib_rec;
5742         CLOSE quote_oth_atrrib_csr;
5743 
5744         l_lsqv_rec.EXPECTED_FUNDING_DATE:=quote_oth_atrrib_rec.EXPECTED_FUNDING_DATE;
5745         l_lsqv_rec.EXPECTED_DELIVERY_DATE:=quote_oth_atrrib_rec.EXPECTED_DELIVERY_DATE;
5746 
5747         -- gboomina Bug 7110500: End
5748 
5749       END IF;
5750     ELSE
5751         OPEN src_lse_app_dtls_csr(p_source_lap_id);
5752         FETCH src_lse_app_dtls_csr INTO src_lse_app_dtls_rec;
5753         CLOSE src_lse_app_dtls_csr;
5754         l_source_quote_id := src_lse_app_dtls_rec.lsq_id;
5755     END IF;
5756 --End-bug#4721142 - varangan- cursor to fetch quote details from opportunity id
5757 
5758     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5759     THEN
5760       OKL_DEBUG_PUB.LOG_DEBUG(
5761           FND_LOG.LEVEL_PROCEDURE
5762          ,L_MODULE
5763          ,'begin debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
5764     END IF;
5765 
5766     -- call the procedure to create lease quote line
5767     OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE(
5768         p_api_version                        => p_api_version
5769        ,p_init_msg_list                      => OKL_API.G_FALSE
5770        ,p_transaction_control                => OKL_API.G_TRUE
5771        ,p_source_quote_id                    => l_source_quote_id
5772        ,p_lease_qte_rec                      => l_lsqv_rec
5773        ,x_lease_qte_rec                      => x_lsqv_rec
5774        ,x_return_status                      => l_return_status
5775        ,x_msg_count                          => x_msg_count
5776        ,x_msg_data                           => x_msg_data);
5777 
5778 	IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5779     THEN
5780       OKL_DEBUG_PUB.LOG_DEBUG(
5781           FND_LOG.LEVEL_PROCEDURE
5782          ,L_MODULE
5783          ,'end debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
5784     END IF;
5785 
5786     -- write to log
5787     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5788       OKL_DEBUG_PUB.LOG_DEBUG(
5789           FND_LOG.LEVEL_STATEMENT
5790          ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE'
5791          ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
5792           ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
5793           ' result status ' || l_return_status ||
5794           ' x_msg_data ' || x_msg_data);
5795     END IF; -- end of statement level debug
5796 
5797     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5798       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5799     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5800       RAISE OKL_API.G_EXCEPTION_ERROR;
5801     END IF;
5802 
5803     --Bug 4960541 PAGARG Added call to validations API while creating Lease
5804     --App from Lease Quote. Based on qa result Lease App and Lease Quote status
5805     --are updated
5806     l_lsqv_rec := x_lsqv_rec;
5807     IF l_lsqv_rec.status = 'CT-ACCEPTED'
5808     THEN
5809       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5810       THEN
5811         OKL_DEBUG_PUB.LOG_DEBUG(
5812             FND_LOG.LEVEL_PROCEDURE
5813            ,L_MODULE
5814            ,'begin debug call LEASE_APP_QA_VAL');
5815       END IF;
5816 
5817       -- call the procedure to perform QA validations
5818       LEASE_APP_QA_VAL(
5819           p_api_version                => p_api_version
5820          ,p_init_msg_list              => OKL_API.G_FALSE
5821          ,p_lap_id                     => x_lapv_rec.id
5822          ,x_return_status              => l_return_status
5823          ,x_msg_count                  => x_msg_count
5824          ,x_msg_data                   => x_msg_data
5825          ,x_qa_result                  => l_qa_result);
5826 
5827       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5828       THEN
5829         OKL_DEBUG_PUB.LOG_DEBUG(
5830             FND_LOG.LEVEL_PROCEDURE
5831            ,L_MODULE
5832            ,'end debug call LEASE_APP_QA_VAL');
5833       END IF;
5834 
5835       -- write to log
5836       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5837         OKL_DEBUG_PUB.LOG_DEBUG(
5838             FND_LOG.LEVEL_STATEMENT
5839            ,L_MODULE
5840            ,' Result of LEASE_APP_QA_VAL' ||
5841             ' Result Status ' || l_return_status ||
5842             ' QA Result Status ' || l_qa_result);
5843       END IF; -- end of statement level debug
5844 
5845       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5846         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5847       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5848         RAISE OKL_API.G_EXCEPTION_ERROR;
5849       END IF;
5850 
5851       IF l_qa_result <> OKL_API.G_RET_STS_SUCCESS
5852       THEN
5853         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5854         THEN
5855           OKL_DEBUG_PUB.LOG_DEBUG(
5856               FND_LOG.LEVEL_PROCEDURE
5857              ,L_MODULE
5858              ,'begin debug call SET_LEASE_APP_STATUS');
5859         END IF;
5860 
5861         --call the procedure to update a lease application status
5862         SET_LEASE_APP_STATUS(
5863             p_api_version     => p_api_version
5864            ,p_init_msg_list   => OKL_API.G_FALSE
5865            ,p_lap_id          => x_lapv_rec.id
5866            ,p_lap_status      => G_INIT_APPL_STATUS
5867            ,x_return_status   => l_return_status
5868            ,x_msg_count       => x_msg_count
5869            ,x_msg_data        => x_msg_data);
5870 
5871         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5872         THEN
5873           OKL_DEBUG_PUB.LOG_DEBUG(
5874               FND_LOG.LEVEL_PROCEDURE
5875              ,L_MODULE
5876              ,'end debug call SET_LEASE_APP_STATUS');
5877         END IF;
5878 
5879         -- write to log
5880         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5881           OKL_DEBUG_PUB.LOG_DEBUG(
5882               FND_LOG.LEVEL_STATEMENT
5883              ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
5884              ,'return status ' || l_return_status ||
5885               ' x_msg_data ' || x_msg_data);
5886         END IF; -- end of statement level debug
5887 
5888         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5889           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5890         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5891           RAISE OKL_API.G_EXCEPTION_ERROR;
5892         END IF;
5893 
5894         l_lsqv_rec.status := 'PR-INCOMPLETE';
5895         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5896         THEN
5897           OKL_DEBUG_PUB.LOG_DEBUG(
5898               FND_LOG.LEVEL_PROCEDURE
5899              ,L_MODULE
5900              ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
5901         END IF;
5902 
5903         -- call the procedure to create lease quote line
5904         OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
5905             p_api_version               => p_api_version
5906            ,p_init_msg_list             => OKL_API.G_FALSE
5907            ,p_transaction_control       => OKL_API.G_TRUE
5908            ,p_lease_qte_rec             => l_lsqv_rec
5909            ,x_lease_qte_rec             => x_lsqv_rec
5910            ,x_return_status             => l_return_status
5911            ,x_msg_count                 => x_msg_count
5912            ,x_msg_data                  => x_msg_data);
5913 
5914         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5915         THEN
5916           OKL_DEBUG_PUB.LOG_DEBUG(
5917               FND_LOG.LEVEL_PROCEDURE
5918              ,L_MODULE
5919              ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
5920         END IF;
5921 
5922         -- write to log
5923         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5924           OKL_DEBUG_PUB.LOG_DEBUG(
5925               FND_LOG.LEVEL_STATEMENT
5926              ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
5927              ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
5928               ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
5929               ' result status ' || l_return_status ||
5930               ' x_msg_data ' || x_msg_data);
5931         END IF; -- end of statement level debug
5932 
5933         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5934           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5935         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5936           RAISE OKL_API.G_EXCEPTION_ERROR;
5937         END IF;
5938       -- Bug 7440199: Quote Streams ER: RGOOTY: Start
5939       ELSE
5940         --Making the pricing call to generate the streams
5941         --Start Pricing API call
5942         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5943         THEN
5944           OKL_DEBUG_PUB.LOG_DEBUG(
5945              FND_LOG.LEVEL_PROCEDURE
5946             ,L_MODULE
5947             ,'begin debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
5948         END IF;
5949 
5950         OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE(
5951            p_api_version            => p_api_version
5952           ,p_init_msg_list          => OKL_API.G_FALSE
5953           ,p_qte_id                 => x_lsqv_rec.id
5954           ,x_return_status          => l_return_status
5955           ,x_msg_count              => x_msg_count
5956           ,x_msg_data               => x_msg_data);
5957 
5958         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5959         THEN
5960           OKL_DEBUG_PUB.LOG_DEBUG(
5961               FND_LOG.LEVEL_PROCEDURE
5962              ,L_MODULE
5963              ,'end debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
5964         END IF;
5965 
5966         -- write to log
5967         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
5968            OKL_DEBUG_PUB.LOG_DEBUG(
5969               FND_LOG.LEVEL_STATEMENT
5970              ,L_MODULE || ' Result of OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE'
5971              ,'l_return_status ' || l_return_status);
5972         END IF; -- end of statement level debug
5973 
5974         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
5975           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5976         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
5977           RAISE OKL_API.G_EXCEPTION_ERROR;
5978         END IF;
5979         --End of Pricing API call
5980        -- Bug 7440199: Quote Streams ER: RGOOTY: End
5981       END IF; -- For QA Result Check
5982     END IF;-- Check for Lease Quote status to call QA validation
5983 
5984     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
5985     THEN
5986       OKL_DEBUG_PUB.LOG_DEBUG(
5987           FND_LOG.LEVEL_PROCEDURE
5988          ,L_MODULE
5989          ,'begin debug call CREATE_CREDIT_APP');
5990     END IF;
5991 
5992     --call to duplicate Credit Lease Application
5993     CREATE_CREDIT_APP(
5994         p_api_version        => p_api_version
5995        ,p_init_msg_list      => OKL_API.G_FALSE
5996        ,x_return_status      => l_return_status
5997        ,x_msg_count          => x_msg_count
5998        ,x_msg_data           => x_msg_data
5999        ,p_lapv_rec           => x_lapv_rec
6000        ,p_crr_rec            => l_crr_rec
6001        ,x_crr_rec            => x_crr_rec);
6002 
6003     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6004     THEN
6005       OKL_DEBUG_PUB.LOG_DEBUG(
6006           FND_LOG.LEVEL_PROCEDURE
6007          ,L_MODULE
6008          ,'end debug call CREATE_CREDIT_APP');
6009     END IF;
6010 
6011     -- write to log
6012     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6013       OKL_DEBUG_PUB.LOG_DEBUG(
6014           FND_LOG.LEVEL_STATEMENT
6015          ,L_MODULE || ' Result of CREATE_CREDIT_APP'
6016          ,' result status ' || l_return_status);
6017     END IF; -- end of statement level debug
6018 
6019     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6020       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6021     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6022       RAISE OKL_API.G_EXCEPTION_ERROR;
6023     END IF;
6024 
6025     OPEN chk_hdr_dtls_csr(x_lapv_rec.id);
6026     FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
6027     CLOSE chk_hdr_dtls_csr;
6028 
6029     IF(chk_hdr_dtls_rec.checklist_id IS NOT NULL)
6030     THEN
6031       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6032       THEN
6033         OKL_DEBUG_PUB.LOG_DEBUG(
6034             FND_LOG.LEVEL_PROCEDURE
6035            ,L_MODULE
6036            ,'begin debug call CHECKLIST_INST_CRE');
6037       END IF;
6038 
6039       --call to create Checklist Instance
6040       CHECKLIST_INST_CRE(
6041           p_api_version        => p_api_version
6042          ,p_init_msg_list      => OKL_API.G_FALSE
6043          ,x_return_status      => l_return_status
6044          ,x_msg_count          => x_msg_count
6045          ,x_msg_data           => x_msg_data
6046          ,p_lap_id             => x_lapv_rec.id
6047 		 ,p_chklst_tmpl_id     => chk_hdr_dtls_rec.checklist_id);
6048 
6049 	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6050       THEN
6051         OKL_DEBUG_PUB.LOG_DEBUG(
6052             FND_LOG.LEVEL_PROCEDURE
6053            ,L_MODULE
6054            ,'end debug call CHECKLIST_INST_CRE');
6055       END IF;
6056 
6057       -- write to log
6058       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6059         OKL_DEBUG_PUB.LOG_DEBUG(
6060             FND_LOG.LEVEL_STATEMENT
6061            ,L_MODULE || ' Result of CHECKLIST_INST_CRE'
6062            ,' result status ' || l_return_status);
6063       END IF; -- end of statement level debug
6064 
6065       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6066         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6067       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6068         RAISE OKL_API.G_EXCEPTION_ERROR;
6069       END IF;
6070     END IF; -- Condition to check for call to create checklist instance
6071 
6072     -- Bug#4741121 - viselvar  - Modified - Start
6073     -- raise the business event passing the Lease Application id added to the parameter list
6074     wf_event.addparametertolist('LAPP_ID'
6075                                ,x_lapv_rec.id
6076                                ,l_parameter_list);
6077     okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
6078                             ,p_init_msg_list =>            p_init_msg_list
6079                             ,x_return_status =>            l_return_status
6080                             ,x_msg_count     =>            x_msg_count
6081                             ,x_msg_data      =>            x_msg_data
6082                             ,p_event_name    =>            p_event_name
6083                             ,p_parameters    =>            l_parameter_list);
6084 
6085     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6086       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6087     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6088       RAISE OKL_API.G_EXCEPTION_ERROR;
6089     END IF;
6090     -- Bug#4741121 - viselvar  - Modified - End
6091 
6092     x_return_status := l_return_status;
6093     OKL_API.END_ACTIVITY(
6094         x_msg_count => x_msg_count
6095        ,x_msg_data  => x_msg_data);
6096   EXCEPTION
6097     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6098       --Checklist Header Details Cursor
6099       IF chk_hdr_dtls_csr%ISOPEN
6100       THEN
6101         CLOSE chk_hdr_dtls_csr;
6102       END IF;
6103       --Lease Application Source Details Cursor
6104       IF src_lse_app_dtls_csr%ISOPEN
6105       THEN
6106         CLOSE src_lse_app_dtls_csr;
6107       END IF;
6108       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6109                            p_api_name  => l_api_name,
6110                            p_pkg_name  => G_PKG_NAME,
6111                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
6112                            x_msg_count => x_msg_count,
6113                            x_msg_data  => x_msg_data,
6114                            p_api_type  => G_API_TYPE);
6115 
6116     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6117       --Checklist Header Details Cursor
6118       IF chk_hdr_dtls_csr%ISOPEN
6119       THEN
6120         CLOSE chk_hdr_dtls_csr;
6121       END IF;
6122       --Lease Application Source Details Cursor
6123       IF src_lse_app_dtls_csr%ISOPEN
6124       THEN
6125         CLOSE src_lse_app_dtls_csr;
6126       END IF;
6127       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6128                            p_api_name  => l_api_name,
6129                            p_pkg_name  => G_PKG_NAME,
6130                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6131                            x_msg_count => x_msg_count,
6132                            x_msg_data  => x_msg_data,
6133                            p_api_type  => G_API_TYPE);
6134 
6135     WHEN OTHERS THEN
6136       --Checklist Header Details Cursor
6137       IF chk_hdr_dtls_csr%ISOPEN
6138       THEN
6139         CLOSE chk_hdr_dtls_csr;
6140       END IF;
6141       --Lease Application Source Details Cursor
6142       IF src_lse_app_dtls_csr%ISOPEN
6143       THEN
6144         CLOSE src_lse_app_dtls_csr;
6145       END IF;
6146       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6147                            p_api_name  => l_api_name,
6148                            p_pkg_name  => G_PKG_NAME,
6149                            p_exc_name  => 'OTHERS',
6150                            x_msg_count => x_msg_count,
6151                            x_msg_data  => x_msg_data,
6152                            p_api_type  => G_API_TYPE);
6153   END lease_app_dup;
6154 
6155   ------------------------------------------------------------------------------
6156   -- PROCEDURE submit_for_pricing
6157   ------------------------------------------------------------------------------
6158   -- Start of comments
6159   --
6160   -- Procedure Name  : submit_for_pricing
6161   -- Description     : This procedure submits lease application for pricing.
6162   -- Business Rules  : This procedure submits lease application for pricing.
6163   -- Parameters      :
6164   -- Version         : 1.0
6165   -- History         : 20-MAY-2005 PAGARG created
6166   --
6167   -- End of comments
6168   PROCEDURE submit_for_pricing(
6169             p_api_version        IN  NUMBER,
6170             p_init_msg_list      IN  VARCHAR2,
6171             x_return_status      OUT NOCOPY VARCHAR2,
6172             x_msg_count          OUT NOCOPY NUMBER,
6173             x_msg_data           OUT NOCOPY VARCHAR2,
6174             p_lapv_rec           IN  lapv_rec_type,
6175             x_lapv_rec           OUT NOCOPY lapv_rec_type) IS
6176 
6177     -- Variables Declarations
6178     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
6179     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'SUBMIT_FOR_PRICING';
6180     l_return_status            VARCHAR2(1);
6181 
6182     -- Record/Table Type Declarations
6183     l_lapv_rec		lapv_rec_type;
6184     l_lsqv_rec      lsqv_rec_type;
6185     x_lsqv_rec      lsqv_rec_type;
6186     -- Bug#4741121 - viselvar  - Modified - Start
6187     l_parameter_list  wf_parameter_list_t;
6188     p_event_name1      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.sent_for_pricing_approval';
6189     p_event_name2      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.pricing_approved';
6190     -- Bug#4741121 - viselvar  - Modified - End
6191 
6192     --Cursor to obtain the details of lease quote line of Lease App
6193     CURSOR l_lsq_dtls_csr(p_lap_id NUMBER)
6194 	IS
6195       SELECT LSQ.ID LSQ_ID
6196            , LSQ.STATUS STATUS
6197       FROM OKL_LEASE_QUOTES_B LSQ
6198       WHERE LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
6199         AND LSQ.PRIMARY_QUOTE= 'Y'
6200         AND LSQ.PARENT_OBJECT_ID = p_lap_id;
6201     l_lsq_dtls_rec l_lsq_dtls_csr%ROWTYPE;
6202   BEGIN
6203     l_return_status := OKL_API.G_RET_STS_SUCCESS;
6204     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.SUBMIT_FOR_PRICING';
6205 
6206     -- check for logging on PROCEDURE level
6207     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
6208     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
6209     -- check for logging on STATEMENT level
6210     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
6211 
6212     -- call START_ACTIVITY to create savepoint, check compatibility
6213     -- and initialize message list
6214     l_return_status := OKL_API.START_ACTIVITY(
6215                            p_api_name      => l_api_name
6216                           ,p_pkg_name      => G_PKG_NAME
6217                           ,p_init_msg_list => p_init_msg_list
6218                           ,l_api_version   => l_api_version
6219                           ,p_api_version   => p_api_version
6220                           ,p_api_type      => G_API_TYPE
6221                           ,x_return_status => l_return_status);
6222 
6223     -- check if activity started successfully
6224     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6225       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6226     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6227       RAISE OKL_API.G_EXCEPTION_ERROR;
6228     END IF;
6229 
6230     l_lapv_rec := p_lapv_rec;
6231 
6232     -- Bug#4741121 - viselvar  - Modified - Start
6233     -- raise the business event passing the Lease Application id added to the parameter list
6234     wf_event.addparametertolist('LAPP_ID'
6235                                ,p_lapv_rec.id
6236                                ,l_parameter_list);
6237 
6238     okl_wf_pvt.raise_event(  p_api_version   =>            p_api_version
6239                             ,p_init_msg_list =>            p_init_msg_list
6240                             ,x_return_status =>            l_return_status
6241                             ,x_msg_count     =>            x_msg_count
6242                             ,x_msg_data      =>            x_msg_data
6243                             ,p_event_name    =>            p_event_name1
6244                             ,p_parameters    =>            l_parameter_list);
6245 
6246     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6247       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6248     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6249       RAISE OKL_API.G_EXCEPTION_ERROR;
6250     END IF;
6251     -- Bug#4741121 - viselvar  - Modified - End
6252 
6253     --Populate Lease Application rec with the values from database.
6254     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6255     THEN
6256       OKL_DEBUG_PUB.LOG_DEBUG(
6257           FND_LOG.LEVEL_PROCEDURE
6258          ,L_MODULE
6259          ,'begin debug call POPULATE_LEASE_APP');
6260     END IF;
6261 
6262     POPULATE_LEASE_APP(
6263         p_api_version           => p_api_version
6264        ,p_init_msg_list         => OKL_API.G_FALSE
6265        ,x_return_status         => l_return_status
6266        ,x_msg_count             => x_msg_count
6267        ,x_msg_data              => x_msg_data
6268        ,p_lap_id                => l_lapv_rec.id
6269        ,x_lapv_rec              => x_lapv_rec
6270        ,x_lsqv_rec              => x_lsqv_rec);
6271 
6272     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6273     THEN
6274       OKL_DEBUG_PUB.LOG_DEBUG(
6275           FND_LOG.LEVEL_PROCEDURE
6276          ,L_MODULE
6277          ,'end debug call POPULATE_LEASE_APP');
6278     END IF;
6279 
6280     -- write to log
6281     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6282       OKL_DEBUG_PUB.LOG_DEBUG(
6283           FND_LOG.LEVEL_STATEMENT
6284          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
6285          ,'l_return_status ' || l_return_status);
6286     END IF; -- end of statement level debug
6287 
6288     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6289       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6290     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6291       RAISE OKL_API.G_EXCEPTION_ERROR;
6292     END IF;
6293 
6294     l_lapv_rec := x_lapv_rec;
6295     l_lsqv_rec := x_lsqv_rec;
6296 
6297     IF(l_lapv_rec.application_status = 'PR-COMPLETE')
6298     THEN
6299       --Validate Lease Application and if valid then update the status to
6300       --Pricing Submitted
6301       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6302       THEN
6303         OKL_DEBUG_PUB.LOG_DEBUG(
6304             FND_LOG.LEVEL_PROCEDURE
6305            ,L_MODULE
6306            ,'begin debug call LEASE_APP_VAL');
6307       END IF;
6308 
6309       LEASE_APP_VAL(
6310           p_api_version           => p_api_version
6311          ,p_init_msg_list         => OKL_API.G_FALSE
6312          ,x_return_status         => l_return_status
6313          ,x_msg_count             => x_msg_count
6314          ,x_msg_data              => x_msg_data
6315          ,p_lapv_rec              => l_lapv_rec
6316          ,p_lsqv_rec              => l_lsqv_rec);
6317 
6318       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6319       THEN
6320         OKL_DEBUG_PUB.LOG_DEBUG(
6321             FND_LOG.LEVEL_PROCEDURE
6322            ,L_MODULE
6323            ,'end debug call LEASE_APP_VAL');
6324       END IF;
6325 
6326       -- write to log
6327       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6328         OKL_DEBUG_PUB.LOG_DEBUG(
6329             FND_LOG.LEVEL_STATEMENT
6330            ,L_MODULE || ' Result of LEASE_APP_VAL'
6331            ,'l_return_status ' || l_return_status);
6332       END IF; -- end of statement level debug
6333 
6334       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6335         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6336       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6337         RAISE OKL_API.G_EXCEPTION_ERROR;
6338       END IF;
6339 
6340       --set the status of Lease Application to Pricing Submitted
6341       l_lapv_rec.application_status := 'PR-SUBMITTED';
6342 
6343       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6344       THEN
6345         OKL_DEBUG_PUB.LOG_DEBUG(
6346             FND_LOG.LEVEL_PROCEDURE
6347            ,L_MODULE
6348            ,'begin debug call SET_LEASE_APP_STATUS');
6349       END IF;
6350 
6351       SET_LEASE_APP_STATUS(
6352           p_api_version           => p_api_version
6353          ,p_init_msg_list         => OKL_API.G_FALSE
6354          ,p_lap_id                => l_lapv_rec.id
6355          ,p_lap_status            => l_lapv_rec.application_status
6356          ,x_return_status         => l_return_status
6357          ,x_msg_count             => x_msg_count
6358          ,x_msg_data              => x_msg_data);
6359 
6360       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6361       THEN
6362         OKL_DEBUG_PUB.LOG_DEBUG(
6363             FND_LOG.LEVEL_PROCEDURE
6364            ,L_MODULE
6365            ,'end debug call SET_LEASE_APP_STATUS');
6366       END IF;
6367 
6368       -- write to log
6369       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6370         OKL_DEBUG_PUB.LOG_DEBUG(
6371             FND_LOG.LEVEL_STATEMENT
6372            ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
6373            ,'l_return_status ' || l_return_status);
6374       END IF; -- end of statement level debug
6375 
6376       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6377         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6378       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6379         RAISE OKL_API.G_EXCEPTION_ERROR;
6380       END IF;
6381 
6382       --Obtain the details of Lease Quote line of Lease App
6383       OPEN l_lsq_dtls_csr(l_lapv_rec.id);
6384       FETCH l_lsq_dtls_csr INTO l_lsq_dtls_rec;
6385       CLOSE l_lsq_dtls_csr;
6386 
6387       --Call the API to submit the lease quote for Pricing Approval
6388       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6389       THEN
6390         OKL_DEBUG_PUB.LOG_DEBUG(
6391             FND_LOG.LEVEL_PROCEDURE
6392            ,L_MODULE
6393            ,'begin debug call OKL_LEASE_QUOTE_PVT.SUBMIT_LEASE_QTE');
6394       END IF;
6395 
6396       OKL_LEASE_QUOTE_PVT.SUBMIT_LEASE_QTE(
6397           p_api_version           => p_api_version
6398          ,p_init_msg_list         => OKL_API.G_FALSE
6399          ,p_transaction_control   => OKL_API.G_TRUE
6400          ,p_quote_id		   	  => l_lsq_dtls_rec.lsq_id
6401          ,x_return_status         => l_return_status
6402          ,x_msg_count             => x_msg_count
6403          ,x_msg_data              => x_msg_data);
6404 
6405       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6406       THEN
6407         OKL_DEBUG_PUB.LOG_DEBUG(
6408             FND_LOG.LEVEL_PROCEDURE
6409            ,L_MODULE
6410            ,'end debug call OKL_LEASE_QUOTE_PVT.SUBMIT_LEASE_QTE');
6411       END IF;
6412 
6413       -- write to log
6414       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6415         OKL_DEBUG_PUB.LOG_DEBUG(
6416             FND_LOG.LEVEL_STATEMENT
6417            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.SUBMIT_LEASE_QTE'
6418            ,'l_return_status ' || l_return_status);
6419       END IF; -- end of statement level debug
6420 
6421       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6422         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6423       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6424         RAISE OKL_API.G_EXCEPTION_ERROR;
6425       END IF;
6426 
6427       --Check if lease quote line of Lease App is in status pricing complete
6428       --then only call the process subsidy pool api
6429       IF(l_lsq_dtls_rec.status = 'PR-COMPLETE')
6430       THEN
6431         --Call the API to process the lease app subsidy pool
6432         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6433         THEN
6434           OKL_DEBUG_PUB.LOG_DEBUG(
6435               FND_LOG.LEVEL_PROCEDURE
6436              ,L_MODULE
6437              ,'begin debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
6438         END IF;
6439 
6440         OKL_LEASE_QUOTE_SUBPOOL_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL(
6441             p_api_version           => p_api_version
6442            ,p_init_msg_list         => OKL_API.G_FALSE
6443            ,p_transaction_control   => OKL_API.G_TRUE
6444            ,p_leaseapp_id		   	=> l_lapv_rec.id
6445            ,p_transaction_reason    => 'APPROVE_LEASE_APP_PRICING'
6446            ,p_quote_id              => l_lsq_dtls_rec.lsq_id
6447            ,x_return_status         => l_return_status
6448            ,x_msg_count             => x_msg_count
6449            ,x_msg_data              => x_msg_data);
6450 
6451         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6452         THEN
6453           OKL_DEBUG_PUB.LOG_DEBUG(
6454               FND_LOG.LEVEL_PROCEDURE
6455              ,L_MODULE
6456              ,'end debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
6457         END IF;
6458 
6459         -- write to log
6460         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6461           OKL_DEBUG_PUB.LOG_DEBUG(
6462               FND_LOG.LEVEL_STATEMENT
6463              ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL'
6464              ,'l_return_status ' || l_return_status);
6465         END IF; -- end of statement level debug
6466 
6467         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6468           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6469         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6470           RAISE OKL_API.G_EXCEPTION_ERROR;
6471         END IF;
6472       END IF;-- Checking Lease Quote status for call to process subsidy pool api
6473     ELSE
6474       l_return_status := OKL_API.G_RET_STS_ERROR;
6475       OKL_API.SET_MESSAGE(
6476           p_app_name      => G_APP_NAME,
6477           p_msg_name      => 'OKL_SO_LSE_APP_PR_SUB_FAIL',
6478           p_token1        => 'TEXT',
6479           p_token1_value  => l_lapv_rec.reference_number);
6480     END IF;
6481 
6482     -- Bug#4741121 - viselvar  - Modified - Start
6483     -- raise the business event passing the Lease Application id added to the parameter list
6484 
6485     wf_event.addparametertolist('LAPP_ID'
6486                                ,p_lapv_rec.id
6487                                ,l_parameter_list);
6488 
6489     okl_wf_pvt.raise_event(  p_api_version   =>            p_api_version
6490                             ,p_init_msg_list =>            p_init_msg_list
6491                             ,x_return_status =>            l_return_status
6492                             ,x_msg_count     =>            x_msg_count
6493                             ,x_msg_data      =>            x_msg_data
6494                             ,p_event_name    =>            p_event_name2
6495                             ,p_parameters    =>            l_parameter_list);
6496 
6497 
6498     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6499       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6500     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6501       RAISE OKL_API.G_EXCEPTION_ERROR;
6502     END IF;
6503    -- Bug#4741121 - viselvar  - Modified - End
6504 
6505     x_return_status := l_return_status;
6506 
6507     OKL_API.END_ACTIVITY(
6508          x_msg_count    => x_msg_count
6509         ,x_msg_data	    => x_msg_data);
6510   EXCEPTION
6511     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6512       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6513                            p_api_name  => l_api_name,
6514                            p_pkg_name  => G_PKG_NAME,
6515                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
6516                            x_msg_count => x_msg_count,
6517                            x_msg_data  => x_msg_data,
6518                            p_api_type  => G_API_TYPE);
6519 
6520     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6521       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6522                            p_api_name  => l_api_name,
6523                            p_pkg_name  => G_PKG_NAME,
6524                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
6525                            x_msg_count => x_msg_count,
6526                            x_msg_data  => x_msg_data,
6527                            p_api_type  => G_API_TYPE);
6528 
6529     WHEN OTHERS THEN
6530       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6531                            p_api_name  => l_api_name,
6532                            p_pkg_name  => G_PKG_NAME,
6533                            p_exc_name  => 'OTHERS',
6534                            x_msg_count => x_msg_count,
6535                            x_msg_data  => x_msg_data,
6536                            p_api_type  => G_API_TYPE);
6537   END submit_for_pricing;
6538 
6539   ------------------------------------------------------------------------------
6540   -- PROCEDURE submit_for_credit
6541   ------------------------------------------------------------------------------
6542   -- Start of comments
6543   --
6544   -- Procedure Name  : submit_for_credit
6545   -- Description     : This procedure submits lease application for Credit Approval.
6546   -- Business Rules  : This procedure submits lease application for Credit Approval.
6547   -- Parameters      :
6548   -- Version         : 1.0
6549   -- History         : 20-MAY-2005 PAGARG created
6550   --                 : 23 Dec 2005 PAGARG Bug 4902717 Update the Requested Amount
6551   --                   on Credit Application before submitting it for approval
6552   --                 : 03 Apr 2006 PAGARG Bug 4872271 Added validation to check
6553   --                   appeal allowed period befor submitting for credit approval
6554   --                   This validation is needed for Lease App with action APPEAL
6555   -- End of comments
6556   PROCEDURE submit_for_credit(
6557             p_api_version        IN  NUMBER,
6558             p_init_msg_list      IN  VARCHAR2,
6559             x_return_status      OUT NOCOPY VARCHAR2,
6560             x_msg_count          OUT NOCOPY NUMBER,
6561             x_msg_data           OUT NOCOPY VARCHAR2,
6562             p_lapv_rec           IN  lapv_rec_type,
6563             x_lapv_rec           OUT NOCOPY lapv_rec_type) IS
6564 
6565     -- Variables Declarations
6566     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
6567     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'SUBMIT_FOR_CREDIT';
6568     l_return_status            VARCHAR2(1);
6569     l_req_amt                  NUMBER;
6570     l_meaning                  VARCHAR2(80);
6571 
6572     -- Record/Table Type Declarations
6573     l_lapv_rec		lapv_rec_type;
6574     l_lsqv_rec      lsqv_rec_type;
6575     x_lsqv_rec      lsqv_rec_type;
6576     l_crd_req_rec   OCM_CREDIT_REQUEST_UPDATE_PUB.credit_request_rec;
6577     -- Bug#4741121 - viselvar  - Modified - Start
6578     l_parameter_list  wf_parameter_list_t;
6579     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.submitted_for_credit_evaluation';
6580     -- Bug#4741121 - viselvar  - Modified - End
6581     l_count         NUMBER;
6582     l_exp_date      DATE;
6583 
6584     --Cursor to obtain Credit Request Details
6585     CURSOR acr_dtls_csr(cp_lap_id NUMBER) IS
6586       SELECT CREDIT_REQUEST_ID CREDIT_REQUEST_ID
6587         FROM AR_CMGT_CREDIT_REQUESTS ACR
6588        WHERE ACR.SOURCE_COLUMN3 = 'LEASEAPP' -- Fix for Bug 4749255
6589          AND ACR.SOURCE_COLUMN1 = cp_lap_id;
6590     acr_dtls_rec acr_dtls_csr%ROWTYPE;
6591 
6592     --Cursor to obtain the details of lease quote line of Lease App
6593     CURSOR l_lsq_dtls_csr(p_lap_id NUMBER)
6594 	IS
6595       SELECT LSQ.ID LSQ_ID
6596            , LSQ.REFERENCE_NUMBER REFERENCE_NUMBER
6597       FROM OKL_LEASE_QUOTES_B LSQ
6598       WHERE LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
6599         AND LSQ.PRIMARY_QUOTE= 'Y'
6600         AND LSQ.PARENT_OBJECT_ID = p_lap_id;
6601     l_lsq_dtls_rec l_lsq_dtls_csr%ROWTYPE;
6602 
6603     --Cursor to check whether a given recommendation is added to given Lease App
6604     CURSOR credit_recom_csr(p_lap_id NUMBER, p_recomm VARCHAR2, p_appeal VARCHAR2) IS
6605       SELECT COUNT(*)
6606       FROM AR_CMGT_CF_RECOMMENDS RCM
6607          , AR_CMGT_CREDIT_REQUESTS CCR
6608       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
6609         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
6610         AND RCM.CREDIT_RECOMMENDATION = NVL(p_recomm, RCM.CREDIT_RECOMMENDATION)
6611         AND NVL(RCM.APPEALED_FLAG, 'N') = NVL(p_appeal, NVL(RCM.APPEALED_FLAG, 'N'))
6612         AND CCR.SOURCE_COLUMN1 = p_lap_id;
6613 
6614     --Cursor to obtain appeal period expiration date for a given Lease App
6615     CURSOR appeal_exp_date_csr(p_lap_id NUMBER)
6616     IS
6617       SELECT RCM.RECOMMENDATION_VALUE1 + TRUNC(LAST_UPDATED) APPEAL_EXP_DATE
6618       FROM AR_CMGT_CASE_FOLDERS CCF
6619          , AR_CMGT_CREDIT_REQUESTS CCR
6620          , AR_CMGT_CF_RECOMMENDS RCM
6621       WHERE CCR.CREDIT_REQUEST_ID = CCF.CREDIT_REQUEST_ID
6622         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
6623         AND CCF.STATUS = 'CLOSED'
6624         AND RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
6625         AND RCM.CREDIT_RECOMMENDATION = 'AUTHORIZE_APPEAL'
6626         AND CCR.SOURCE_COLUMN1 = p_lap_id;
6627 
6628     --Cursor to obtain Lease Application Details
6629     CURSOR lse_app_dtls_csr(p_lap_id NUMBER) IS
6630       SELECT LAB.REFERENCE_NUMBER
6631         FROM OKL_LEASE_APPLICATIONS_B LAB
6632        WHERE LAB.ID = p_lap_id;
6633     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
6634   BEGIN
6635     l_return_status := OKL_API.G_RET_STS_SUCCESS;
6636     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.SUBMIT_FOR_CREDIT';
6637 
6638     -- check for logging on PROCEDURE level
6639     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
6640     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
6641     -- check for logging on STATEMENT level
6642     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
6643 
6644     -- call START_ACTIVITY to create savepoint, check compatibility
6645     -- and initialize message list
6646     l_return_status := OKL_API.START_ACTIVITY(
6647                            p_api_name      => l_api_name
6648                           ,p_pkg_name      => G_PKG_NAME
6649                           ,p_init_msg_list => p_init_msg_list
6650                           ,l_api_version   => l_api_version
6651                           ,p_api_version   => p_api_version
6652                           ,p_api_type      => G_API_TYPE
6653                           ,x_return_status => l_return_status);
6654 
6655     -- check if activity started successfully
6656     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6657       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6658     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
6659       RAISE OKL_API.G_EXCEPTION_ERROR;
6660     END IF;
6661 
6662     l_lapv_rec := p_lapv_rec;
6663 
6664     --Populate Lease Application rec with the values from database.
6665     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6666     THEN
6667       OKL_DEBUG_PUB.LOG_DEBUG(
6668           FND_LOG.LEVEL_PROCEDURE
6669          ,L_MODULE
6670          ,'begin debug call POPULATE_LEASE_APP');
6671     END IF;
6672 
6673     POPULATE_LEASE_APP(
6674         p_api_version           => p_api_version
6675        ,p_init_msg_list         => OKL_API.G_FALSE
6676        ,x_return_status         => l_return_status
6677        ,x_msg_count             => x_msg_count
6678        ,x_msg_data              => x_msg_data
6679        ,p_lap_id                => l_lapv_rec.id
6680        ,x_lapv_rec              => x_lapv_rec
6681        ,x_lsqv_rec              => x_lsqv_rec);
6682 
6683     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6684     THEN
6685       OKL_DEBUG_PUB.LOG_DEBUG(
6686           FND_LOG.LEVEL_PROCEDURE
6687          ,L_MODULE
6688          ,'end debug call POPULATE_LEASE_APP');
6689     END IF;
6690 
6691     -- write to log
6692     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6693       OKL_DEBUG_PUB.LOG_DEBUG(
6694           FND_LOG.LEVEL_STATEMENT
6695          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
6696          ,'l_return_status ' || l_return_status);
6697     END IF; -- end of statement level debug
6698 
6699     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6700       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6701     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6702       RAISE OKL_API.G_EXCEPTION_ERROR;
6703     END IF;
6704 
6705     l_lapv_rec := x_lapv_rec;
6706     l_lsqv_rec := x_lsqv_rec;
6707     --Validate if Lease App is appealed Lease Application then whether parent
6708     --Lease App is allowed for appeal and appeal period has not expired
6709     IF(l_lapv_rec.action = 'APPEAL')
6710     THEN
6711       OPEN lse_app_dtls_csr(l_lapv_rec.parent_leaseapp_id);
6712       FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
6713       CLOSE lse_app_dtls_csr;
6714       --Check if AUTHORIZE_APPEAL recommendation is added for parent lease app
6715       OPEN credit_recom_csr(l_lapv_rec.parent_leaseapp_id, 'AUTHORIZE_APPEAL', NULL);
6716       FETCH credit_recom_csr INTO l_count;
6717       CLOSE credit_recom_csr;
6718       IF(l_count = 1)
6719       THEN
6720         OPEN appeal_exp_date_csr(l_lapv_rec.parent_leaseapp_id);
6721         FETCH appeal_exp_date_csr INTO l_exp_date;
6722         CLOSE appeal_exp_date_csr;
6723         IF(l_exp_Date IS NULL OR l_exp_Date < TRUNC(SYSDATE))
6724         THEN
6725           l_return_status := OKL_API.G_RET_STS_ERROR;
6726           OKL_API.SET_MESSAGE(
6727               p_app_name     => G_APP_NAME,
6728               p_msg_name     => 'OKL_SO_LSE_APP_APPEAL_PRD_EXP',
6729               p_token1       => 'TEXT',
6730               p_token1_value => lse_app_dtls_rec.reference_number);
6731           RAISE OKL_API.G_EXCEPTION_ERROR;
6732         END IF;
6733       ELSE
6734         l_return_status := OKL_API.G_RET_STS_ERROR;
6735         OKL_API.SET_MESSAGE(
6736             p_app_name     => G_APP_NAME,
6737             p_msg_name     => 'OKL_SO_LSE_APP_APPEAL_AUTH_ERR',
6738             p_token1       => 'TEXT',
6739             p_token1_value => lse_app_dtls_rec.reference_number);
6740         RAISE OKL_API.G_EXCEPTION_ERROR;
6741       END IF;
6742       --Check if atleast one of the recommendations of parent lease app is marked
6743       --for appeal
6744       OPEN credit_recom_csr(l_lapv_rec.parent_leaseapp_id, NULL, 'Y');
6745       FETCH credit_recom_csr INTO l_count;
6746       CLOSE credit_recom_csr;
6747       IF(l_count = 0)
6748       THEN
6749         l_return_status := OKL_API.G_RET_STS_ERROR;
6750         OKL_API.SET_MESSAGE(
6751             p_app_name     => G_APP_NAME,
6752             p_msg_name     => 'OKL_SO_LSE_APP_APL_RECOM_ERR');
6753         RAISE OKL_API.G_EXCEPTION_ERROR;
6754       END IF;
6755     END IF;--Check for Appeal validity
6756 
6757     IF(l_lapv_rec.application_status IN ('PR-ACCEPTED'))
6758     THEN
6759       --Validate Lease Application and if valid then update the status to
6760       --Pricing Accepted
6761       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6762       THEN
6763         OKL_DEBUG_PUB.LOG_DEBUG(
6764             FND_LOG.LEVEL_PROCEDURE
6765            ,L_MODULE
6766            ,'begin debug call LEASE_APP_VAL');
6767       END IF;
6768 
6769       LEASE_APP_VAL(
6770           p_api_version           => p_api_version
6771          ,p_init_msg_list         => OKL_API.G_FALSE
6772          ,x_return_status         => l_return_status
6773          ,x_msg_count             => x_msg_count
6774          ,x_msg_data              => x_msg_data
6775          ,p_lapv_rec              => l_lapv_rec
6776          ,p_lsqv_rec              => l_lsqv_rec);
6777 
6778       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6779       THEN
6780         OKL_DEBUG_PUB.LOG_DEBUG(
6781             FND_LOG.LEVEL_PROCEDURE
6782            ,L_MODULE
6783            ,'end debug call LEASE_APP_VAL');
6784       END IF;
6785 
6786       -- write to log
6787       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6788         OKL_DEBUG_PUB.LOG_DEBUG(
6789             FND_LOG.LEVEL_STATEMENT
6790            ,L_MODULE || ' Result of LEASE_APP_VAL'
6791            ,'l_return_status ' || l_return_status);
6792       END IF; -- end of statement level debug
6793 
6794       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6795         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6796       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6797         RAISE OKL_API.G_EXCEPTION_ERROR;
6798       END IF;
6799 
6800       OPEN acr_dtls_csr(l_lapv_rec.id);
6801       FETCH acr_dtls_csr INTO acr_dtls_rec;
6802       CLOSE acr_dtls_csr;
6803 
6804       --Obtain the details of Lease Quote line of Lease App
6805       OPEN l_lsq_dtls_csr(l_lapv_rec.id);
6806       FETCH l_lsq_dtls_csr INTO l_lsq_dtls_rec;
6807       CLOSE l_lsq_dtls_csr;
6808 
6809       l_req_amt := get_financed_amount(l_lsq_dtls_rec.lsq_id);
6810       IF(l_req_amt <= 0)
6811       THEN
6812         l_return_status := OKL_API.G_RET_STS_ERROR;
6813         OKL_API.SET_MESSAGE(
6814             p_app_name      => G_APP_NAME,
6815             p_msg_name      => 'OKL_AMOUNT_GREATER_THAN_ZERO');
6816         RAISE OKL_API.G_EXCEPTION_ERROR;
6817       ELSE
6818         -- Bug 4902717 PAGARG Update the Requested Amount on Credit Application
6819 	    --before submitting it for approval
6820         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6821         THEN
6822           OKL_DEBUG_PUB.LOG_DEBUG(
6823               FND_LOG.LEVEL_PROCEDURE
6824              ,L_MODULE
6825              ,'begin debug call OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC');
6826         END IF;
6827         --get the existing credit request data
6828         OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC(
6829             p_credit_request_id  => acr_dtls_rec.credit_request_id
6830            ,p_return_status      => l_return_status
6831            ,p_error_msg          => x_msg_data
6832            ,p_credit_request_rec => l_crd_req_rec);
6833 
6834         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6835         THEN
6836           OKL_DEBUG_PUB.LOG_DEBUG(
6837               FND_LOG.LEVEL_PROCEDURE
6838              ,L_MODULE
6839              ,'end debug call OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC');
6840         END IF;
6841 
6842         -- write to log
6843         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6844           OKL_DEBUG_PUB.LOG_DEBUG(
6845               FND_LOG.LEVEL_STATEMENT
6846              ,L_MODULE || ' Result of OCM_CREDIT_REQUEST_UPDATE_PUB.GET_CREDIT_REQUEST_REC'
6847              ,' result status ' || l_return_status);
6848         END IF; -- end of statement level debug
6849 
6850         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6851           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6852         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6853           RAISE OKL_API.G_EXCEPTION_ERROR;
6854         END IF;
6855 
6856         --assign the new values
6857         l_crd_req_rec.requested_amount := l_req_amt;
6858         l_crd_req_rec.trx_amount := l_req_amt; -- added for bug 6596860
6859 
6860         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6861         THEN
6862           OKL_DEBUG_PUB.LOG_DEBUG(
6863               FND_LOG.LEVEL_PROCEDURE
6864              ,L_MODULE
6865              ,'begin debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST');
6866         END IF;
6867         --update the credit application data
6868         OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST(
6869             p_api_version           => l_api_version,
6870             p_init_msg_list         => OKL_API.G_FALSE,
6871             p_commit                => NULL,
6872             p_validation_level      => NULL,
6873             x_return_status         => l_return_status,
6874             x_msg_count             => x_msg_count,
6875             x_msg_data              => x_msg_data,
6876             p_credit_request_rec    => l_crd_req_rec);
6877 
6878         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6879         THEN
6880           OKL_DEBUG_PUB.LOG_DEBUG(
6881               FND_LOG.LEVEL_PROCEDURE
6882              ,L_MODULE
6883              ,'end debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST');
6884         END IF;
6885 
6886         -- write to log
6887         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6888           OKL_DEBUG_PUB.LOG_DEBUG(
6889               FND_LOG.LEVEL_STATEMENT
6890              ,L_MODULE || ' Result of OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST'
6891              ,' result status ' || l_return_status);
6892         END IF; -- end of statement level debug
6893 
6894         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6895           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6896         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6897           RAISE OKL_API.G_EXCEPTION_ERROR;
6898         END IF;
6899       END IF;
6900 
6901       --Trigger the Credit Approval workflow
6902       --Bug#4741121 - viselvar  - Modified - Start
6903       --raise the business event passing the Lease Application id added to the parameter list
6904       wf_event.addparametertolist('LAPP_ID'
6905                                ,x_lapv_rec.id
6906                                ,l_parameter_list);
6907       okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
6908                             ,p_init_msg_list =>            p_init_msg_list
6909                             ,x_return_status =>            l_return_status
6910                             ,x_msg_count     =>            x_msg_count
6911                             ,x_msg_data      =>            x_msg_data
6912                             ,p_event_name    =>            p_event_name
6913                             ,p_parameters    =>            l_parameter_list);
6914 
6915       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6916         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6917       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6918         RAISE OKL_API.G_EXCEPTION_ERROR;
6919       END IF;
6920       -- Bug#4741121 - viselvar  - Modified - End
6921 
6922       --11/05/05 SNAMBIAR - we should not update other teams table like this
6923       --changing the update statement and calling the API.
6924       --This API will take care of the business event also.
6925       /*  UPDATE AR_CMGT_CREDIT_REQUESTS
6926         SET status = 'SUBMIT'
6927         WHERE credit_request_id= acr_dtls_rec.credit_request_id;
6928 
6929         AR_CMGT_WF_ENGINE.START_WORKFLOW(
6930            acr_dtls_rec.credit_request_id
6931           ,'SUBMIT');
6932       */
6933       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6934       THEN
6935         OKL_DEBUG_PUB.LOG_DEBUG(
6936             FND_LOG.LEVEL_PROCEDURE
6937            ,L_MODULE
6938            ,'begin debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST_STATUS');
6939       END IF;
6940 
6941       OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST_STATUS(
6942           p_api_version           => l_api_version
6943          ,p_init_msg_list         => OKL_API.G_FALSE
6944          ,p_commit                => OKL_API.G_FALSE
6945          ,p_validation_level      => FND_API.G_VALID_LEVEL_FULL
6946          ,x_return_status         => l_return_status
6947          ,x_msg_count             => x_msg_count
6948          ,x_msg_data              => x_msg_data
6949          ,p_credit_request_id     => acr_dtls_rec.credit_request_id
6950          ,p_credit_request_status => 'SUBMIT');
6951 
6952 	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6953       THEN
6954         OKL_DEBUG_PUB.LOG_DEBUG(
6955             FND_LOG.LEVEL_PROCEDURE
6956            ,L_MODULE
6957            ,'end debug call OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST_STATUS');
6958       END IF;
6959 
6960       -- write to log
6961       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
6962         OKL_DEBUG_PUB.LOG_DEBUG(
6963             FND_LOG.LEVEL_STATEMENT
6964            ,L_MODULE || ' Result of OCM_CREDIT_REQUEST_UPDATE_PUB.UPDATE_CREDIT_REQUEST_STATUS'
6965            ,'l_return_status ' || l_return_status);
6966       END IF; -- end of statement level debug
6967 
6968       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
6969         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6970       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
6971         RAISE OKL_API.G_EXCEPTION_ERROR;
6972       END IF;
6973 
6974       l_lapv_rec.application_status := 'CR-SUBMITTED';
6975 
6976       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6977       THEN
6978         OKL_DEBUG_PUB.LOG_DEBUG(
6979             FND_LOG.LEVEL_PROCEDURE
6980            ,L_MODULE
6981            ,'begin debug call SET_LEASE_APP_STATUS');
6982       END IF;
6983 
6984       SET_LEASE_APP_STATUS(
6985           p_api_version           => p_api_version
6986          ,p_init_msg_list         => OKL_API.G_FALSE
6987          ,p_lap_id                => l_lapv_rec.id
6988          ,p_lap_status            => l_lapv_rec.application_status
6989          ,x_return_status         => l_return_status
6990          ,x_msg_count             => x_msg_count
6991          ,x_msg_data              => x_msg_data);
6992 
6993       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
6994       THEN
6995         OKL_DEBUG_PUB.LOG_DEBUG(
6996             FND_LOG.LEVEL_PROCEDURE
6997            ,L_MODULE
6998            ,'end debug call SET_LEASE_APP_STATUS');
6999       END IF;
7000 
7001       -- write to log
7002       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7003         OKL_DEBUG_PUB.LOG_DEBUG(
7004             FND_LOG.LEVEL_STATEMENT
7005            ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
7006            ,'l_return_status ' || l_return_status);
7007       END IF; -- end of statement level debug
7008 
7009       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7010         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7011       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7012         RAISE OKL_API.G_EXCEPTION_ERROR;
7013       END IF;
7014     ELSE
7015       l_return_status := OKL_API.G_RET_STS_ERROR;
7016       l_meaning := get_lookup_meaning('OKL_LEASE_APP_STATUS', 'CR-SUBMITTED');
7017       OKL_API.SET_MESSAGE(
7018           p_app_name      => G_APP_NAME,
7019           p_msg_name      => 'OKL_SO_LSE_APP_ACTION_ERR',
7020           p_token1        => 'TEXT',
7021           p_token1_value  => l_lapv_rec.reference_number,
7022           p_token2        => 'STATUS',
7023           p_token2_value  => l_lapv_rec.application_status,
7024           p_token3        => 'ACTION',
7025           p_token3_value  => l_meaning);
7026       RAISE OKL_API.G_EXCEPTION_ERROR;
7027     END IF;
7028 
7029     x_return_status := l_return_status;
7030 
7031     OKL_API.END_ACTIVITY(
7032          x_msg_count    => x_msg_count
7033         ,x_msg_data	    => x_msg_data);
7034   EXCEPTION
7035     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7036       --Credit Request Details Cursor
7037       IF acr_dtls_csr%ISOPEN
7038       THEN
7039         CLOSE acr_dtls_csr;
7040       END IF;
7041       --Lease Quote Details Cursor
7042       IF l_lsq_dtls_csr%ISOPEN
7043       THEN
7044         CLOSE l_lsq_dtls_csr;
7045       END IF;
7046       --Check if Credit Recommendation cursor is open
7047       IF credit_recom_csr%ISOPEN
7048       THEN
7049         CLOSE credit_recom_csr;
7050       END IF;
7051       --Check if Appeal Exp Date cursor is open
7052       IF appeal_exp_date_csr%ISOPEN
7053       THEN
7054         CLOSE appeal_exp_date_csr;
7055       END IF;
7056       --Check if Lease App details cursor is open
7057       IF lse_app_dtls_csr%ISOPEN
7058       THEN
7059         CLOSE lse_app_dtls_csr;
7060       END IF;
7061       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7062                            p_api_name  => l_api_name,
7063                            p_pkg_name  => G_PKG_NAME,
7064                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
7065                            x_msg_count => x_msg_count,
7066                            x_msg_data  => x_msg_data,
7067                            p_api_type  => G_API_TYPE);
7068 
7069     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7070       --Credit Request Details Cursor
7071       IF acr_dtls_csr%ISOPEN
7072       THEN
7073         CLOSE acr_dtls_csr;
7074       END IF;
7075       --Lease Quote Details Cursor
7076       IF l_lsq_dtls_csr%ISOPEN
7077       THEN
7078         CLOSE l_lsq_dtls_csr;
7079       END IF;
7080       --Check if Credit Recommendation cursor is open
7081       IF credit_recom_csr%ISOPEN
7082       THEN
7083         CLOSE credit_recom_csr;
7084       END IF;
7085       --Check if Appeal Exp Date cursor is open
7086       IF appeal_exp_date_csr%ISOPEN
7087       THEN
7088         CLOSE appeal_exp_date_csr;
7089       END IF;
7090       --Check if Lease App details cursor is open
7091       IF lse_app_dtls_csr%ISOPEN
7092       THEN
7093         CLOSE lse_app_dtls_csr;
7094       END IF;
7095       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7096                            p_api_name  => l_api_name,
7097                            p_pkg_name  => G_PKG_NAME,
7098                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7099                            x_msg_count => x_msg_count,
7100                            x_msg_data  => x_msg_data,
7101                            p_api_type  => G_API_TYPE);
7102 
7103     WHEN OTHERS THEN
7104       --Credit Request Details Cursor
7105       IF acr_dtls_csr%ISOPEN
7106       THEN
7107         CLOSE acr_dtls_csr;
7108       END IF;
7109       --Lease Quote Details Cursor
7110       IF l_lsq_dtls_csr%ISOPEN
7111       THEN
7112         CLOSE l_lsq_dtls_csr;
7113       END IF;
7114       --Check if Credit Recommendation cursor is open
7115       IF credit_recom_csr%ISOPEN
7116       THEN
7117         CLOSE credit_recom_csr;
7118       END IF;
7119       --Check if Appeal Exp Date cursor is open
7120       IF appeal_exp_date_csr%ISOPEN
7121       THEN
7122         CLOSE appeal_exp_date_csr;
7123       END IF;
7124       --Check if Lease App details cursor is open
7125       IF lse_app_dtls_csr%ISOPEN
7126       THEN
7127         CLOSE lse_app_dtls_csr;
7128       END IF;
7129       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7130                            p_api_name  => l_api_name,
7131                            p_pkg_name  => G_PKG_NAME,
7132                            p_exc_name  => 'OTHERS',
7133                            x_msg_count => x_msg_count,
7134                            x_msg_data  => x_msg_data,
7135                            p_api_type  => G_API_TYPE);
7136   END submit_for_credit;
7137 
7138   ------------------------------------------------------------------------------
7139   -- FUNCTION is_valid_program_agreement
7140   ------------------------------------------------------------------------------
7141   -- Start of comments
7142   --
7143   -- Function Name   : is_valid_program_agreement
7144   -- Description     : This function returns whether Program Agreement fulfills
7145   --                   all eligibility criteria on Lease Application
7146   -- Business Rules  : This function returns whether Program Agreement fulfills
7147   --                   all eligibility criteria on Lease Application
7148   -- Parameters      :
7149   -- Version         : 1.0
7150   -- History         : 08-JUNE-2005 PAGARG created
7151   --
7152   -- End of comments
7153   FUNCTION is_valid_program_agreement(
7154            p_pgm_agr_id          IN NUMBER,
7155            p_lap_id              IN NUMBER,
7156            p_eff_from            IN DATE)
7157     RETURN VARCHAR2
7158   IS
7159     -- Variables Declarations
7160     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
7161     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'IS_VALID_PROGRAM_AGREEMENT';
7162     l_return_status            VARCHAR2(1);
7163     l_eligible                 BOOLEAN;
7164     x_msg_count                NUMBER;
7165     x_msg_data                 VARCHAR2(32767);
7166 
7167     -- Record/Table Type Declarations
7168     l_okl_ec_rec		OKL_ECC_PUB.okl_ec_rec_type;
7169 
7170     --Cursor to obtain Program Agreement Details
7171     CURSOR pgm_agr_dtls_csr(cp_pgm_agr_id NUMBER) IS
7172       SELECT CONTRACT_NUMBER PROGRAM_AGREEMENT
7173         FROM OKC_K_HEADERS_B CHR
7174        WHERE CHR.ID = cp_pgm_agr_id
7175          AND CHR.SCS_CODE = 'PROGRAM';
7176     pgm_agr_dtls_rec pgm_agr_dtls_csr%ROWTYPE;
7177 
7178   BEGIN
7179     l_return_status := OKL_API.G_RET_STS_ERROR;
7180     l_eligible := false;
7181     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.IS_VALID_PROGRAM_AGREEMENT';
7182 
7183     -- check for logging on PROCEDURE level
7184     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
7185     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
7186     -- check for logging on STATEMENT level
7187     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
7188 
7189     OPEN pgm_agr_dtls_csr(p_pgm_agr_id);
7190     FETCH pgm_agr_dtls_csr INTO pgm_agr_dtls_rec;
7191     CLOSE pgm_agr_dtls_csr;
7192 
7193     l_okl_ec_rec.src_id := p_pgm_agr_id;
7194     l_okl_ec_rec.src_type := 'VENDOR_PROGRAM';
7195     l_okl_ec_rec.validation_mode := 'LOV';
7196     l_okl_ec_rec.source_name := pgm_agr_dtls_rec.program_agreement;
7197 
7198     IF(p_lap_id IS NOT NULL AND p_lap_id <> OKL_API.G_MISS_NUM)
7199     THEN
7200       --Populate the EC rec
7201       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7202       THEN
7203         OKL_DEBUG_PUB.LOG_DEBUG(
7204             FND_LOG.LEVEL_PROCEDURE
7205            ,L_MODULE
7206            ,'begin debug call POPULATE_EC_REC');
7207       END IF;
7208 
7209       POPULATE_EC_REC(
7210           p_api_version           => l_api_version
7211          ,p_init_msg_list         => OKL_API.G_FALSE
7212          ,p_lap_id                => p_lap_id
7213          ,x_return_status         => l_return_status
7214          ,x_msg_count             => x_msg_count
7215          ,x_msg_data              => x_msg_data
7216          ,lx_okl_ec_rec           => l_okl_ec_rec);
7217 
7218       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7219       THEN
7220         OKL_DEBUG_PUB.LOG_DEBUG(
7221             FND_LOG.LEVEL_PROCEDURE
7222            ,L_MODULE
7223            ,'end debug call POPULATE_EC_REC');
7224       END IF;
7225 
7226       -- write to log
7227       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7228         OKL_DEBUG_PUB.LOG_DEBUG(
7229             FND_LOG.LEVEL_STATEMENT
7230            ,L_MODULE || ' Result of POPULATE_EC_REC'
7231            ,'l_return_status ' || l_return_status);
7232       END IF; -- end of statement level debug
7233 
7234       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7235         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7236       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7237         RAISE OKL_API.G_EXCEPTION_ERROR;
7238       END IF;
7239     ELSE
7240       l_okl_ec_rec.target_eff_from := p_eff_from;
7241     END IF;
7242 
7243     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7244     THEN
7245       OKL_DEBUG_PUB.LOG_DEBUG(
7246           FND_LOG.LEVEL_PROCEDURE
7247          ,L_MODULE
7248          ,'begin debug call OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA');
7249     END IF;
7250 
7251     OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA(
7252         p_api_version           => l_api_version
7253        ,p_init_msg_list         => OKL_API.G_FALSE
7254        ,x_return_status         => l_return_status
7255        ,x_msg_count             => x_msg_count
7256        ,x_msg_data              => x_msg_data
7257        ,p_okl_ec_rec            => l_okl_ec_rec
7258        ,x_eligible              => l_eligible);
7259 
7260     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7261     THEN
7262       OKL_DEBUG_PUB.LOG_DEBUG(
7263           FND_LOG.LEVEL_PROCEDURE
7264          ,L_MODULE
7265          ,'end debug call OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA');
7266     END IF;
7267 
7268     -- write to log
7269     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7270       OKL_DEBUG_PUB.LOG_DEBUG(
7271           FND_LOG.LEVEL_STATEMENT
7272          ,L_MODULE || ' Result of OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA'
7273          ,'l_return_status ' || l_return_status);
7274     END IF; -- end of statement level debug
7275 
7276     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7277       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7278     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7279       RAISE OKL_API.G_EXCEPTION_ERROR;
7280     END IF;
7281 
7282     IF(l_return_status = OKL_API.G_RET_STS_SUCCESS AND l_eligible)
7283     THEN
7284       l_return_status := OKL_API.G_RET_STS_SUCCESS;
7285     ELSE
7286       l_return_status := OKL_API.G_RET_STS_ERROR;
7287     END IF;
7288 
7289     RETURN l_return_status;
7290   EXCEPTION
7291     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7292       --Program Agreement Details Cursor
7293       IF pgm_agr_dtls_csr%ISOPEN
7294       THEN
7295         CLOSE pgm_agr_dtls_csr;
7296       END IF;
7297       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7298                            p_api_name  => l_api_name,
7299                            p_pkg_name  => G_PKG_NAME,
7300                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
7301                            x_msg_count => x_msg_count,
7302                            x_msg_data  => x_msg_data,
7303                            p_api_type  => G_API_TYPE);
7304 
7305     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7306       --Program Agreement Details Cursor
7307       IF pgm_agr_dtls_csr%ISOPEN
7308       THEN
7309         CLOSE pgm_agr_dtls_csr;
7310       END IF;
7311       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7312                            p_api_name  => l_api_name,
7313                            p_pkg_name  => G_PKG_NAME,
7314                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7315                            x_msg_count => x_msg_count,
7316                            x_msg_data  => x_msg_data,
7317                            p_api_type  => G_API_TYPE);
7318 
7319     WHEN OTHERS THEN
7320       --Program Agreement Details Cursor
7321       IF pgm_agr_dtls_csr%ISOPEN
7322       THEN
7323         CLOSE pgm_agr_dtls_csr;
7324       END IF;
7325       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7326                            p_api_name  => l_api_name,
7327                            p_pkg_name  => G_PKG_NAME,
7328                            p_exc_name  => 'OTHERS',
7329                            x_msg_count => x_msg_count,
7330                            x_msg_data  => x_msg_data,
7331                            p_api_type  => G_API_TYPE);
7332   END is_valid_program_agreement;
7333 
7334   ------------------------------------------------------------------------------
7335   -- FUNCTION is_valid_leaseapp_template
7336   ------------------------------------------------------------------------------
7337   -- Start of comments
7338   --
7339   -- Function Name   : is_valid_leaseapp_template
7340   -- Description     : This function returns whether Lease Application Template
7341   --                   fulfills all eligibility criteria on Lease Application
7342   -- Business Rules  : This function returns whether Program Agreement fulfills
7343   --                   all eligibility criteria on Lease Application
7344   -- Parameters      :
7345   -- Version         : 1.0
7346   -- History         : 08-JUNE-2005 PAGARG created
7347   --
7348   -- End of comments
7349   FUNCTION is_valid_leaseapp_template(
7350            p_lat_id              IN NUMBER,
7351            p_lap_id              IN NUMBER,
7352            p_eff_from            IN DATE)
7353     RETURN VARCHAR2
7354   IS
7355     -- Variables Declarations
7356     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
7357     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'IS_VALID_LEASEAPP_TEMPLATE';
7358     l_return_status            VARCHAR2(1);
7359     l_eligible                 BOOLEAN;
7360     x_msg_count                NUMBER;
7361     x_msg_data                 VARCHAR2(32767);
7362 
7363     -- Record/Table Type Declarations
7364     l_okl_ec_rec		OKL_ECC_PUB.okl_ec_rec_type;
7365 
7366     --Cursor to obtain Lease Application Template Details
7367     CURSOR lat_dtls_csr(cp_lat_id NUMBER) IS
7368       SELECT LAT.NAME LAT_NUMBER
7369         FROM OKL_LEASEAPP_TEMPLATES LAT
7370             ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
7371        WHERE LATV.LEASEAPP_TEMPLATE_ID = LAT.ID
7372 	     AND LATV.ID = cp_lat_id;
7373     lat_dtls_rec lat_dtls_csr%ROWTYPE;
7374 
7375   BEGIN
7376     l_return_status := OKL_API.G_RET_STS_ERROR;
7377     l_eligible := false;
7378     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.IS_VALID_LEASEAPP_TEMPLATE';
7379 
7380     -- check for logging on PROCEDURE level
7381     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
7382     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
7383     -- check for logging on STATEMENT level
7384     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
7385 
7386     IF(p_lat_id IS NOT NULL
7387 	   AND p_lat_id <> OKL_API.G_MISS_NUM)
7388     THEN
7389       OPEN lat_dtls_csr(p_lat_id);
7390       FETCH lat_dtls_csr INTO lat_dtls_rec;
7391       CLOSE lat_dtls_csr;
7392       l_okl_ec_rec.src_id := p_lat_id;
7393       l_okl_ec_rec.src_type := 'LEASE_APPL_TEMPLATE';
7394       l_okl_ec_rec.validation_mode := 'LOV';
7395       l_okl_ec_rec.source_name := lat_dtls_rec.lat_number;
7396     END IF;
7397 
7398     IF(p_lap_id IS NOT NULL
7399 	   AND p_lap_id <> OKL_API.G_MISS_NUM)
7400     THEN
7401       --Populate the EC rec
7402       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7403       THEN
7404         OKL_DEBUG_PUB.LOG_DEBUG(
7405             FND_LOG.LEVEL_PROCEDURE
7406            ,L_MODULE
7407            ,'begin debug call POPULATE_EC_REC');
7408       END IF;
7409 
7410       POPULATE_EC_REC(
7411           p_api_version           => l_api_version
7412          ,p_init_msg_list         => OKL_API.G_FALSE
7413          ,p_lap_id                => p_lap_id
7414          ,x_return_status         => l_return_status
7415          ,x_msg_count             => x_msg_count
7416          ,x_msg_data              => x_msg_data
7417          ,lx_okl_ec_rec           => l_okl_ec_rec);
7418 
7419       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7420       THEN
7421         OKL_DEBUG_PUB.LOG_DEBUG(
7422             FND_LOG.LEVEL_PROCEDURE
7423            ,L_MODULE
7424            ,'end debug call POPULATE_EC_REC');
7425       END IF;
7426 
7427       -- write to log
7428       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7429         OKL_DEBUG_PUB.LOG_DEBUG(
7430             FND_LOG.LEVEL_STATEMENT
7431            ,L_MODULE || ' Result of POPULATE_EC_REC'
7432            ,'l_return_status ' || l_return_status);
7433       END IF; -- end of statement level debug
7434 
7435       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7436         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7437       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7438         RAISE OKL_API.G_EXCEPTION_ERROR;
7439       END IF;
7440     ELSE
7441       l_okl_ec_rec.target_eff_from := p_eff_from;
7442     END IF;
7443 
7444     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7445     THEN
7446       OKL_DEBUG_PUB.LOG_DEBUG(
7447           FND_LOG.LEVEL_PROCEDURE
7448          ,L_MODULE
7449          ,'begin debug call OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA');
7450     END IF;
7451 
7452     OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA(
7453         p_api_version           => l_api_version
7454        ,p_init_msg_list         => OKL_API.G_FALSE
7455        ,x_return_status         => l_return_status
7456        ,x_msg_count             => x_msg_count
7457        ,x_msg_data              => x_msg_data
7458        ,p_okl_ec_rec            => l_okl_ec_rec
7459        ,x_eligible              => l_eligible);
7460 
7461     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7462     THEN
7463       OKL_DEBUG_PUB.LOG_DEBUG(
7464           FND_LOG.LEVEL_PROCEDURE
7465          ,L_MODULE
7466          ,'end debug call OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA');
7467     END IF;
7468 
7469     -- write to log
7470     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7471       OKL_DEBUG_PUB.LOG_DEBUG(
7472           FND_LOG.LEVEL_STATEMENT
7473          ,L_MODULE || ' Result of OKL_ECC_PUB.EVALUATE_ELIGIBILITY_CRITERIA'
7474          ,'l_return_status ' || l_return_status);
7475     END IF; -- end of statement level debug
7476 
7477     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7478       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7479     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7480       RAISE OKL_API.G_EXCEPTION_ERROR;
7481     END IF;
7482 
7483     IF(l_return_status = OKL_API.G_RET_STS_SUCCESS AND l_eligible)
7484     THEN
7485       l_return_status := OKL_API.G_RET_STS_SUCCESS;
7486     ELSE
7487       l_return_status := OKL_API.G_RET_STS_ERROR;
7488     END IF;
7489 
7490     RETURN l_return_status;
7491   EXCEPTION
7492     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7493       --Lease Application Template Details Cursor
7494       IF lat_dtls_csr%ISOPEN
7495       THEN
7496         CLOSE lat_dtls_csr;
7497       END IF;
7498       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7499                            p_api_name  => l_api_name,
7500                            p_pkg_name  => G_PKG_NAME,
7501                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
7502                            x_msg_count => x_msg_count,
7503                            x_msg_data  => x_msg_data,
7504                            p_api_type  => G_API_TYPE);
7505 
7506     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7507       --Lease Application Template Details Cursor
7508       IF lat_dtls_csr%ISOPEN
7509       THEN
7510         CLOSE lat_dtls_csr;
7511       END IF;
7512       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7513                            p_api_name  => l_api_name,
7514                            p_pkg_name  => G_PKG_NAME,
7515                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7516                            x_msg_count => x_msg_count,
7517                            x_msg_data  => x_msg_data,
7518                            p_api_type  => G_API_TYPE);
7519 
7520     WHEN OTHERS THEN
7521       --Lease Application Template Details Cursor
7522       IF lat_dtls_csr%ISOPEN
7523       THEN
7524         CLOSE lat_dtls_csr;
7525       END IF;
7526       l_return_status := OKL_API.HANDLE_EXCEPTIONS(
7527                            p_api_name  => l_api_name,
7528                            p_pkg_name  => G_PKG_NAME,
7529                            p_exc_name  => 'OTHERS',
7530                            x_msg_count => x_msg_count,
7531                            x_msg_data  => x_msg_data,
7532                            p_api_type  => G_API_TYPE);
7533   END is_valid_leaseapp_template;
7534 
7535   ------------------------------------------------------------------------------
7536   -- FUNCTION get_credit_classfication
7537   ------------------------------------------------------------------------------
7538   -- Start of comments
7539   --
7540   -- Function Name   : get_credit_classfication
7541   -- Description     : This function returns credit classification for given
7542   --                   party, customer account or customer account site use.
7543   -- Business Rules  : This function returns credit classification for given
7544   --                   party, customer account or customer account site use.
7545   -- Parameters      :
7546   -- Version         : 1.0
7547   -- History         : 20-JUNE-2005 PAGARG created
7548   --
7549   -- End of comments
7550   FUNCTION get_credit_classfication(
7551            p_party_id            IN NUMBER,
7552            p_cust_acct_id        IN NUMBER,
7553            p_site_use_id         IN NUMBER)
7554     RETURN VARCHAR2
7555   IS
7556     -- Variables Declarations
7557     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'GET_CREDIT_CLASSFICATION';
7558     l_cr_class                 ar_cmgt_credit_requests.credit_classification%type;
7559     l_party_id                 NUMBER;
7560     l_cust_acct_id             NUMBER;
7561     l_site_use_id              NUMBER;
7562 
7563   BEGIN
7564     l_cr_class := NULL;
7565     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.GET_CREDIT_CLASSFICATION';
7566 
7567     -- check for logging on PROCEDURE level
7568     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
7569     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
7570     -- check for logging on STATEMENT level
7571     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
7572 
7573     l_party_id     := p_party_id;
7574     l_cust_acct_id := p_cust_acct_id;
7575     l_site_use_id  := p_site_use_id;
7576 
7577     --Begin viselvar bug#4740946
7578 --Begin-varangan-bug#4723072-getting site level risk
7579    /*If (p_site_use_id IS NOT NULL AND p_site_use_id  <> OKL_API.G_MISS_NUM) Then
7580 	  Begin
7581 		  select a.site_use_id site_use_id
7582 		  Into l_site_use_id
7583 		   from Hz_cust_site_uses a,
7584 			Hz_cust_acct_sites b
7585 		   Where a.CUST_ACCT_SITE_ID=B.CUST_ACCT_SITE_ID
7586 		   AND A.SITE_USE_CODE='BILL_TO'
7587 		   AND B.PARTY_SITE_ID=p_site_use_id;
7588 
7589 	  Exception
7590 		when others then
7591 		l_site_use_id:=NULL;
7592 	  End;
7593      End If;*/
7594 --End-varangan-bug#4723072-getting site level risk
7595 -- End viselvar Bug#4723072
7596 
7597     IF(l_party_id IS NULL OR l_party_id = OKL_API.G_MISS_NUM)
7598     THEN
7599       l_party_id := -99;
7600     END IF;
7601     IF(l_cust_acct_id IS NULL OR l_cust_acct_id = OKL_API.G_MISS_NUM)
7602     THEN
7603       l_cust_acct_id := -99;
7604     END IF;
7605     IF(l_site_use_id IS NULL OR l_site_use_id = OKL_API.G_MISS_NUM)
7606     THEN
7607       l_site_use_id := -99;
7608     END IF;
7609 
7610     l_cr_class := AR_CMGT_UTIL.get_credit_classification(
7611                        p_party_id         => l_party_id,
7612                        p_cust_account_id  => l_cust_acct_id,
7613                        p_site_use_id      => l_site_use_id);
7614     IF(l_cr_class IS NULL OR l_cr_class = 'NULL')
7615     THEN
7616       SELECT DEFAULT_CREDIT_CLASSIFICATION
7617         INTO l_cr_class
7618         FROM AR_CMGT_SETUP_OPTIONS;
7619     END IF;
7620 
7621     RETURN l_cr_class;
7622   EXCEPTION
7623     WHEN OTHERS THEN
7624       l_cr_class := NULL;
7625   END get_credit_classfication;
7626 
7627   ------------------------------------------------------------------------------
7628   -- PROCEDURE accept_counter_offer
7629   ------------------------------------------------------------------------------
7630   -- Start of comments
7631   --
7632   -- Procedure Name  : accept_counter_offer
7633   -- Description     : This procedure accepts counter offers for Lease Application.
7634   -- Business Rules  : This procedure accepts counter offers for Lease Application.
7635   -- Parameters      :
7636   -- Version         : 1.0
7637   -- History         : 20-MAY-2005 PAGARG created
7638   --                 : 04-Jan-2006 PAGARG Bug 4897098 Make accepted offer as
7639   --                   in-play quote
7640   -- End of comments
7641   PROCEDURE accept_counter_offer(
7642             p_api_version        IN  NUMBER,
7643             p_init_msg_list      IN  VARCHAR2,
7644             x_return_status      OUT NOCOPY VARCHAR2,
7645             x_msg_count          OUT NOCOPY NUMBER,
7646             x_msg_data           OUT NOCOPY VARCHAR2,
7647             p_lap_id             IN  NUMBER,
7648             p_cntr_offr          IN  NUMBER,
7649             x_lapv_rec           OUT NOCOPY lapv_rec_type,
7650             x_lsqv_rec           OUT NOCOPY lsqv_rec_type)
7651   IS
7652     -- Variables Declarations
7653     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
7654     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'ACCEPT_COUNTER_OFFER';
7655     l_return_status            VARCHAR2(1);
7656 
7657     l_lapv_rec         lapv_rec_type;
7658     l_lsqv_rec         lsqv_rec_type;
7659 
7660     -- Bug#4741121 - viselvar  - Modified - Start
7661     l_parameter_list  wf_parameter_list_t;
7662     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.reco_alt_offers_acpt';
7663     -- Bug#4741121 - viselvar  - Modified - End
7664 
7665     --Cursor to obtain the in play quote id
7666     CURSOR in_play_qte_dtls_csr(cp_lap_id NUMBER)
7667     IS
7668       SELECT LSQ.ID LSQ_ID
7669            , LAP.APPLICATION_STATUS LAP_STATUS
7670            , LAP.REFERENCE_NUMBER LAP_NUMBER
7671       FROM OKL_LEASE_QUOTES_B LSQ
7672          , OKL_LEASE_APPLICATIONS_B LAP
7673       WHERE LSQ.PARENT_OBJECT_ID = LAP.ID
7674         AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
7675         AND LSQ.PRIMARY_QUOTE = 'Y'
7676         AND LAP.ID = cp_lap_id;
7677     in_play_qte_dtls_rec in_play_qte_dtls_csr%ROWTYPE;
7678 
7679   BEGIN
7680     l_return_status := OKL_API.G_RET_STS_SUCCESS;
7681     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.ACCEPT_COUNTER_OFFER';
7682 
7683     -- check for logging on PROCEDURE level
7684     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
7685     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
7686     -- check for logging on STATEMENT level
7687     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
7688 
7689     -- call START_ACTIVITY to create savepoint, check compatibility
7690     -- and initialize message list
7691     l_return_status := OKL_API.START_ACTIVITY(
7692                            p_api_name      => l_api_name
7693                           ,p_pkg_name      => G_PKG_NAME
7694                           ,p_init_msg_list => p_init_msg_list
7695                           ,l_api_version   => l_api_version
7696                           ,p_api_version   => p_api_version
7697                           ,p_api_type      => G_API_TYPE
7698                           ,x_return_status => l_return_status);
7699 
7700     -- check if activity started successfully
7701     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7702       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7703     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
7704       RAISE OKL_API.G_EXCEPTION_ERROR;
7705     END IF;
7706 
7707     IF(p_lap_id IS NULL OR
7708        p_lap_id = OKL_API.G_MISS_NUM)
7709     THEN
7710       l_return_status := OKL_API.G_RET_STS_ERROR;
7711       OKL_API.SET_MESSAGE(
7712           p_app_name      => G_APP_NAME,
7713           p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
7714       RAISE OKL_API.G_EXCEPTION_ERROR;
7715     END IF;
7716 
7717     OPEN in_play_qte_dtls_csr(p_lap_id);
7718     FETCH in_play_qte_dtls_csr INTO in_play_qte_dtls_rec;
7719       IF in_play_qte_dtls_csr%NOTFOUND
7720       THEN
7721         l_return_status := OKL_API.G_RET_STS_ERROR;
7722         OKL_API.SET_MESSAGE(
7723             p_app_name      => G_APP_NAME,
7724             p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
7725         RAISE OKL_API.G_EXCEPTION_ERROR;
7726       END IF;
7727     CLOSE in_play_qte_dtls_csr;
7728     IF in_play_qte_dtls_rec.lap_status IN ('CR-REJECTED', 'CR-APPROVED', 'RECOM_NOT_APPROVED')
7729 	THEN --[1]
7730 	  --Update the in play quote
7731 	  l_lsqv_rec.id := in_play_qte_dtls_rec.lsq_id;
7732 	  l_lsqv_rec.primary_quote := 'N';
7733 
7734       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7735       THEN
7736         OKL_DEBUG_PUB.LOG_DEBUG(
7737             FND_LOG.LEVEL_PROCEDURE
7738            ,L_MODULE
7739            ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
7740       END IF;
7741 
7742       -- call the procedure to create lease quote line
7743       OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
7744           p_api_version                        => p_api_version
7745          ,p_init_msg_list                      => OKL_API.G_FALSE
7746          ,p_transaction_control                => OKL_API.G_TRUE
7747          ,p_lease_qte_rec                      => l_lsqv_rec
7748          ,x_lease_qte_rec                      => x_lsqv_rec
7749          ,x_return_status                      => l_return_status
7750          ,x_msg_count                          => x_msg_count
7751          ,x_msg_data                           => x_msg_data);
7752 
7753       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7754       THEN
7755         OKL_DEBUG_PUB.LOG_DEBUG(
7756             FND_LOG.LEVEL_PROCEDURE
7757            ,L_MODULE
7758            ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
7759       END IF;
7760 
7761       -- write to log
7762       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7763         OKL_DEBUG_PUB.LOG_DEBUG(
7764             FND_LOG.LEVEL_STATEMENT
7765            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
7766            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
7767             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
7768             ' result status ' || l_return_status ||
7769             ' x_msg_data ' || x_msg_data);
7770       END IF; -- end of statement level debug
7771 
7772       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7773         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7774       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7775         RAISE OKL_API.G_EXCEPTION_ERROR;
7776       END IF;
7777 
7778       --Update counter offer
7779 	  l_lsqv_rec.id := p_cntr_offr;
7780 	  l_lsqv_rec.primary_quote := 'Y';
7781 
7782       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7783       THEN
7784         OKL_DEBUG_PUB.LOG_DEBUG(
7785             FND_LOG.LEVEL_PROCEDURE
7786            ,L_MODULE
7787            ,'begin debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
7788       END IF;
7789 
7790       -- call the procedure to create lease quote line
7791       OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE(
7792           p_api_version                        => p_api_version
7793          ,p_init_msg_list                      => OKL_API.G_FALSE
7794          ,p_transaction_control                => OKL_API.G_TRUE
7795          ,p_lease_qte_rec                      => l_lsqv_rec
7796          ,x_lease_qte_rec                      => x_lsqv_rec
7797          ,x_return_status                      => l_return_status
7798          ,x_msg_count                          => x_msg_count
7799          ,x_msg_data                           => x_msg_data);
7800 
7801       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
7802       THEN
7803         OKL_DEBUG_PUB.LOG_DEBUG(
7804             FND_LOG.LEVEL_PROCEDURE
7805            ,L_MODULE
7806            ,'end debug call OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE');
7807       END IF;
7808 
7809       -- write to log
7810       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
7811         OKL_DEBUG_PUB.LOG_DEBUG(
7812             FND_LOG.LEVEL_STATEMENT
7813            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UPDATE_LEASE_QTE'
7814            ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
7815             ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
7816             ' result status ' || l_return_status ||
7817             ' x_msg_data ' || x_msg_data);
7818       END IF; -- end of statement level debug
7819 
7820       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7821         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7822       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7823         RAISE OKL_API.G_EXCEPTION_ERROR;
7824       END IF;
7825       -- Bug#4741121 - viselvar  - Modified - Start
7826       -- raise the business event passing the Lease Application id added to the parameter list
7827 
7828       wf_event.addparametertolist('LAPP_ID'
7829                                ,p_lap_id
7830                                ,l_parameter_list);
7831 
7832       okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
7833                             ,p_init_msg_list =>            p_init_msg_list
7834                             ,x_return_status =>            l_return_status
7835                             ,x_msg_count     =>            x_msg_count
7836                             ,x_msg_data      =>            x_msg_data
7837                             ,p_event_name    =>            p_event_name
7838                             ,p_parameters    =>            l_parameter_list);
7839 
7840 
7841       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
7842         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7843       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
7844         RAISE OKL_API.G_EXCEPTION_ERROR;
7845       END IF;
7846       -- Bug#4741121 - viselvar  - Modified - End
7847       x_lapv_rec := l_lapv_rec;
7848     ELSE
7849       -- Accept counter offer is applicable only for CR-ACCEPTED or CR-REJECTED
7850 	  -- RECOM_NOT_APPROVED Lease Applications only
7851       l_return_status := OKL_API.G_RET_STS_ERROR;
7852       OKL_API.SET_MESSAGE(
7853           p_app_name      => G_APP_NAME,
7854           p_msg_name      => 'OKL_SO_ALT_OFFER_ACC_ERR',
7855           p_token1        => 'TEXT',
7856           p_token1_value  => in_play_qte_dtls_rec.lap_number,
7857           p_token2        => 'STATUS',
7858           p_token2_value  => in_play_qte_dtls_rec.lap_status);
7859       RAISE OKL_API.G_EXCEPTION_ERROR;
7860     END IF; -- [1]
7861 
7862     x_return_status := l_return_status;
7863     OKL_API.END_ACTIVITY(
7864         x_msg_count => x_msg_count
7865        ,x_msg_data  => x_msg_data);
7866   EXCEPTION
7867     WHEN OKL_API.G_EXCEPTION_ERROR
7868 	THEN
7869       IF in_play_qte_dtls_csr%ISOPEN
7870       THEN
7871         CLOSE in_play_qte_dtls_csr;
7872       END IF;
7873       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7874                            p_api_name  => l_api_name,
7875                            p_pkg_name  => G_PKG_NAME,
7876                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
7877                            x_msg_count => x_msg_count,
7878                            x_msg_data  => x_msg_data,
7879                            p_api_type  => G_API_TYPE);
7880 
7881     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR
7882 	THEN
7883       IF in_play_qte_dtls_csr%ISOPEN
7884       THEN
7885         CLOSE in_play_qte_dtls_csr;
7886       END IF;
7887       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7888                            p_api_name  => l_api_name,
7889                            p_pkg_name  => G_PKG_NAME,
7890                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
7891                            x_msg_count => x_msg_count,
7892                            x_msg_data  => x_msg_data,
7893                            p_api_type  => G_API_TYPE);
7894 
7895     WHEN OTHERS
7896 	THEN
7897       IF in_play_qte_dtls_csr%ISOPEN
7898       THEN
7899         CLOSE in_play_qte_dtls_csr;
7900       END IF;
7901       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7902                            p_api_name  => l_api_name,
7903                            p_pkg_name  => G_PKG_NAME,
7904                            p_exc_name  => 'OTHERS',
7905                            x_msg_count => x_msg_count,
7906                            x_msg_data  => x_msg_data,
7907                            p_api_type  => G_API_TYPE);
7908   END accept_counter_offer;
7909 
7910   -------------------------------------------------------------------------------
7911   -- PROCEDURE revert_leaseapp
7912   -------------------------------------------------------------------------------
7913   -- Start of comments
7914   --
7915   -- Procedure Name  : revert_leaseapp
7916   -- Description     : This procedure reverts the status from CONV-K to CR-APPROVED
7917   --                 : This procedure is called when Contract created from
7918   --                 : Lease Application is cancelled
7919   -- Business Rules  : This procedure reverts the status from CONV-K to CR-APPROVED
7920   --                 : This procedure is called when Contract created from
7921   --                 : Lease Application is cancelled
7922   -- Parameters      :
7923   -- Version         : 1.0
7924   -- History         : 14-SEP-2005 PAGARG created
7925   --
7926   -- End of comments
7927   PROCEDURE revert_leaseapp (
7928             p_api_version        IN  NUMBER
7929            ,p_init_msg_list      IN  VARCHAR2
7930            ,p_leaseapp_id        IN  NUMBER
7931            ,x_return_status      OUT NOCOPY VARCHAR2
7932            ,x_msg_count          OUT NOCOPY NUMBER
7933            ,x_msg_data           OUT NOCOPY VARCHAR2)
7934   IS
7935     -- Variables Declarations
7936     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
7937     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'REVERT_LEASEAPP';
7938     l_return_status          VARCHAR2(1);
7939     l_meaning                VARCHAR2(80);
7940 
7941     --Cursor to populate Lease Application details from database
7942     CURSOR lap_db_val_csr(cp_lap_id NUMBER) IS
7943       SELECT LAB.REFERENCE_NUMBER LEASE_APPL_NUMBER
7944            , LAB.APPLICATION_STATUS APPLICATION_STATUS
7945            , LAB.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER
7946       FROM OKL_LEASE_APPLICATIONS_B LAB
7947       WHERE LAB.ID = cp_lap_id;
7948     lap_db_val_rec lap_db_val_csr%ROWTYPE;
7949 
7950   BEGIN
7951     l_return_status := OKL_API.G_RET_STS_SUCCESS;
7952     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.REVERT_LEASEAPP';
7953 
7954     -- check for logging on PROCEDURE level
7955     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
7956     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
7957     -- check for logging on STATEMENT level
7958     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
7959 
7960     -- call START_ACTIVITY to create savepoint, check compatibility
7961     -- and initialize message list
7962     l_return_status := OKL_API.START_ACTIVITY(
7963                            p_api_name      => l_api_name
7964                           ,p_pkg_name      => G_PKG_NAME
7965                           ,p_init_msg_list => p_init_msg_list
7966                           ,l_api_version   => l_api_version
7967                           ,p_api_version   => p_api_version
7968                           ,p_api_type      => G_API_TYPE
7969                           ,x_return_status => l_return_status);
7970 
7971     -- check if activity started successfully
7972     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7973       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7974     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
7975       RAISE OKL_API.G_EXCEPTION_ERROR;
7976     END IF;
7977 
7978     --Populate lease application rec with database values
7979     IF(p_leaseapp_id IS NOT NULL OR
7980        p_leaseapp_id <> OKL_API.G_MISS_NUM)
7981     THEN
7982       OPEN lap_db_val_csr(p_leaseapp_id);
7983       FETCH lap_db_val_csr INTO lap_db_val_rec;
7984         IF(lap_db_val_csr%NOTFOUND)
7985         THEN
7986           l_return_status := OKL_API.G_RET_STS_ERROR;
7987           OKL_API.SET_MESSAGE(
7988               p_app_name      => G_APP_NAME,
7989               p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
7990           RAISE OKL_API.G_EXCEPTION_ERROR;
7991         ELSIF(lap_db_val_rec.application_status <> 'CONV-K')
7992         THEN
7993           --Lease Application not in status CONV-K, can not be reverted
7994           l_return_status := OKL_API.G_RET_STS_ERROR;
7995           l_meaning := get_lookup_meaning('OKL_LEASE_APP_STATUS' ,'CONV-K');
7996           OKL_API.SET_MESSAGE(
7997               p_app_name      => G_APP_NAME,
7998               p_msg_name      => 'OKL_SO_LSE_APP_INVALID_STS',
7999               p_token1        => 'TEXT',
8000               p_token1_value  => lap_db_val_rec.lease_appl_number,
8001               p_token2        => 'STATUS',
8002               p_token2_value  => l_meaning);
8003           RAISE OKL_API.G_EXCEPTION_ERROR;
8004         END IF;
8005       CLOSE lap_db_val_csr;
8006     ELSE
8007       l_return_status := OKL_API.G_RET_STS_ERROR;
8008       OKL_API.SET_MESSAGE(
8009           p_app_name      => G_APP_NAME,
8010           p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
8011       RAISE OKL_API.G_EXCEPTION_ERROR;
8012     END IF; --Lease Application Id is null or G_MISS_NUM
8013 
8014     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8015     THEN
8016       OKL_DEBUG_PUB.LOG_DEBUG(
8017           FND_LOG.LEVEL_PROCEDURE
8018          ,L_MODULE
8019          ,'begin debug call SET_LEASE_APP_STATUS');
8020     END IF;
8021 
8022     -- call the procedure to update a lease application status
8023     SET_LEASE_APP_STATUS(
8024         p_api_version              => p_api_version
8025        ,p_init_msg_list            => OKL_API.G_FALSE
8026        ,p_lap_id                   => p_leaseapp_id
8027        ,p_lap_status               => 'CR-APPROVED'
8028        ,x_return_status            => l_return_status
8029        ,x_msg_count                => x_msg_count
8030        ,x_msg_data                 => x_msg_data);
8031 
8032     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8033     THEN
8034       OKL_DEBUG_PUB.LOG_DEBUG(
8035           FND_LOG.LEVEL_PROCEDURE
8036          ,L_MODULE
8037          ,'end debug call SET_LEASE_APP_STATUS');
8038     END IF;
8039 
8040     -- write to log
8041     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8042       OKL_DEBUG_PUB.LOG_DEBUG(
8043           FND_LOG.LEVEL_STATEMENT
8044          ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
8045          ,'return status ' || l_return_status ||
8046           ' x_msg_data ' || x_msg_data);
8047     END IF; -- end of statement level debug
8048 
8049     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8050       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8051     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8052       RAISE OKL_API.G_EXCEPTION_ERROR;
8053     END IF;
8054 
8055     x_return_status := l_return_status;
8056 
8057     OKL_API.END_ACTIVITY(
8058         x_msg_count => x_msg_count
8059        ,x_msg_data  => x_msg_data);
8060   EXCEPTION
8061     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8062       --Lease Application Details Cusrsor
8063       IF lap_db_val_csr%ISOPEN
8064       THEN
8065         CLOSE lap_db_val_csr;
8066       END IF;
8067       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8068                            p_api_name  => l_api_name,
8069                            p_pkg_name  => G_PKG_NAME,
8070                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
8071                            x_msg_count => x_msg_count,
8072                            x_msg_data  => x_msg_data,
8073                            p_api_type  => G_API_TYPE);
8074 
8075     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8076       --Lease Application Details Cusrsor
8077       IF lap_db_val_csr%ISOPEN
8078       THEN
8079         CLOSE lap_db_val_csr;
8080       END IF;
8081       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8082                            p_api_name  => l_api_name,
8083                            p_pkg_name  => G_PKG_NAME,
8084                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8085                            x_msg_count => x_msg_count,
8086                            x_msg_data  => x_msg_data,
8087                            p_api_type  => G_API_TYPE);
8088 
8089     WHEN OTHERS THEN
8090       --Lease Application Details Cusrsor
8091       IF lap_db_val_csr%ISOPEN
8092       THEN
8093         CLOSE lap_db_val_csr;
8094       END IF;
8095       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8096                            p_api_name  => l_api_name,
8097                            p_pkg_name  => G_PKG_NAME,
8098                            p_exc_name  => 'OTHERS',
8099                            x_msg_count => x_msg_count,
8100                            x_msg_data  => x_msg_data,
8101                            p_api_type  => G_API_TYPE);
8102   END revert_leaseapp;
8103 
8104   -------------------------------------------------------------------------------
8105   -- PROCEDURE validate_credit_results
8106   -------------------------------------------------------------------------------
8107   -- Start of comments
8108   --
8109   -- Procedure Name  : validate_credit_results
8110   -- Description     : This procedure validates credit results
8111   -- Business Rules  : This procedure validates credit results
8112   -- Parameters      :
8113   -- Version         : 1.0
8114   -- History         : 22-SEP-2005 PAGARG created
8115   --                 : 02-Dec-2005 PAGARG Bug 4753078 validate whether either
8116   --                   approve or reject recommendation is created or not
8117   --                 : 06 Jan 2006 PAGARG Bug 4931564 Added check for Multiple
8118   --                   recommendations of Checklist and Expiration Days
8119   --                 : 02 Feb 2006 PAGARG BUG 4931146 Validate number of Counter
8120   --                   Offers created as credit recommendations against those
8121   --                   linked to Lease App, break the link for those for which
8122   --                   credit recommendations are not commited.
8123   -- End of comments
8124   PROCEDURE validate_credit_results (
8125             p_api_version        IN  NUMBER
8126            ,p_init_msg_list      IN  VARCHAR2
8127            ,p_leaseapp_id        IN NUMBER
8128            ,x_return_status      OUT NOCOPY VARCHAR2
8129            ,x_msg_count          OUT NOCOPY NUMBER
8130            ,x_msg_data           OUT NOCOPY VARCHAR2)
8131   IS
8132     -- Variables Declarations
8133     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
8134     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'VALIDATE_CREDIT_RESULTS';
8135     l_return_status          VARCHAR2(1);
8136 
8137     --Local variables
8138     l_leaseapp_id           NUMBER;
8139     l_approve_count         NUMBER;
8140     l_reject_count          NUMBER;
8141     l_recom_count           NUMBER;
8142     l_recom_mean            VARCHAR2(80);
8143 
8144     l_lsqv_rec         lsqv_rec_type;
8145     x_lsqv_rec         lsqv_rec_type;
8146 
8147     --Bug 4753078 Cursor to check for Approve or Reject recommendation for a
8148     --given Lease Application
8149     CURSOR credit_recom_csr(cp_lap_id NUMBER, p_recom VARCHAR2) IS
8150       SELECT COUNT(*)
8151       FROM AR_CMGT_CF_RECOMMENDS RCM
8152          , AR_CMGT_CREDIT_REQUESTS CCR
8153       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
8154         AND RCM.CREDIT_RECOMMENDATION = p_recom
8155         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
8156         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
8157 
8158     --BUG 4931146 PAGARG Cursor to query Counter offers for the given Lease App
8159     CURSOR okl_counter_offer_csr(cp_lap_id NUMBER)
8160     IS
8161       SELECT ID
8162            , REFERENCE_NUMBER
8163            , STATUS
8164       FROM OKL_LEASE_QUOTES_B LSQ
8165       WHERE PARENT_OBJECT_CODE = 'LEASEAPP'
8166         AND STATUS IN ('CR-RECOMMENDATION', 'CR-INCOMPLETE')
8167         AND PARENT_OBJECT_ID = cp_lap_id;
8168 
8169     --BUG 4931146 PAGARG Cursor to query Counter offer recommendations for given
8170     --Lease App
8171     CURSOR ocm_counter_offer_csr(cp_lap_id NUMBER, cp_co_id NUMBER)
8172     IS
8173       SELECT 'X'
8174       FROM AR_CMGT_CF_RECOMMENDS CCRM
8175          , AR_CMGT_CREDIT_REQUESTS CCR
8176       WHERE CCRM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
8177         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
8178         AND CCRM.CREDIT_RECOMMENDATION = 'COUNTER_OFFER'
8179         AND CCR.SOURCE_COLUMN1 = cp_lap_id
8180 		AND CCRM.RECOMMENDATION_VALUE1 = cp_co_id;
8181   BEGIN
8182     l_return_status := OKL_API.G_RET_STS_SUCCESS;
8183     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.VALIDATE_CREDIT_RESULTS';
8184 
8185     -- check for logging on PROCEDURE level
8186     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
8187     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
8188     -- check for logging on STATEMENT level
8189     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
8190 
8191     -- call START_ACTIVITY to create savepoint, check compatibility
8192     -- and initialize message list
8193     l_return_status := OKL_API.START_ACTIVITY(
8194                            p_api_name      => l_api_name
8195                           ,p_pkg_name      => G_PKG_NAME
8196                           ,p_init_msg_list => p_init_msg_list
8197                           ,l_api_version   => l_api_version
8198                           ,p_api_version   => p_api_version
8199                           ,p_api_type      => G_API_TYPE
8200                           ,x_return_status => l_return_status);
8201 
8202     -- check if activity started successfully
8203     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8204       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8205     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
8206       RAISE OKL_API.G_EXCEPTION_ERROR;
8207     END IF;
8208 
8209     --Logic for the procedures goes here
8210     l_leaseapp_id := p_leaseapp_id;
8211 
8212     --Bug 4753078 Open the cursor and check for number of approve or reject
8213     --recommendation and accordingly throw error.
8214     OPEN credit_recom_csr(l_leaseapp_id, 'APPROVE');
8215     FETCH credit_recom_csr INTO l_approve_count;
8216     CLOSE credit_recom_csr;
8217     OPEN credit_recom_csr(l_leaseapp_id, 'REJECT');
8218     FETCH credit_recom_csr INTO l_reject_count;
8219     CLOSE credit_recom_csr;
8220     l_recom_count := l_approve_count + l_reject_count;
8221     IF(l_recom_count > 1) --changed from <> to > for bug 6945703
8222     THEN
8223       l_return_status := OKL_API.G_RET_STS_ERROR;
8224       OKL_API.SET_MESSAGE(
8225           p_app_name      => G_APP_NAME,
8226           p_msg_name      => 'OKL_SO_LSE_APP_CRE_REC_ERR');
8227       RAISE OKL_API.G_EXCEPTION_ERROR;
8228     END IF;
8229 
8230     OPEN credit_recom_csr(l_leaseapp_id, 'CHECKLIST');
8231     FETCH credit_recom_csr INTO l_recom_count;
8232     CLOSE credit_recom_csr;
8233     IF(l_recom_count > 1)
8234     THEN
8235       l_return_status := OKL_API.G_RET_STS_ERROR;
8236       l_recom_mean := get_lookup_meaning('OKL_CR_MGMT_RECOMMENDATION', 'CHECKLIST');
8237       OKL_API.SET_MESSAGE(
8238           p_app_name      => G_APP_NAME,
8239           p_msg_name      => 'OKL_SO_LSE_APP_MUL_RECOM',
8240           p_token1        => 'TEXT',
8241           p_token1_value  => l_recom_mean);
8242       RAISE OKL_API.G_EXCEPTION_ERROR;
8243     END IF;
8244 
8245     OPEN credit_recom_csr(l_leaseapp_id, 'EXPIRATION_DATE');
8246     FETCH credit_recom_csr INTO l_recom_count;
8247     CLOSE credit_recom_csr;
8248     IF(l_recom_count > 1)
8249     THEN
8250       l_return_status := OKL_API.G_RET_STS_ERROR;
8251       l_recom_mean := get_lookup_meaning('OKL_CR_MGMT_RECOMMENDATION', 'EXPIRATION_DATE');
8252       OKL_API.SET_MESSAGE(
8253           p_app_name      => G_APP_NAME,
8254           p_msg_name      => 'OKL_SO_LSE_APP_MUL_RECOM',
8255           p_token1        => 'TEXT',
8256           p_token1_value  => l_recom_mean);
8257       RAISE OKL_API.G_EXCEPTION_ERROR;
8258     ELSIF(l_recom_count = 0)
8259     THEN
8260       --If there is no recommendation for Expiration Days then set the expiration
8261       --days value as NULL
8262       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8263       THEN
8264         OKL_DEBUG_PUB.LOG_DEBUG(
8265             FND_LOG.LEVEL_PROCEDURE
8266            ,L_MODULE
8267            ,'begin debug call SET_LEASE_APP_EXPDAYS');
8268       END IF;
8269 
8270       SET_LEASE_APP_EXPDAYS(
8271           p_api_version           => p_api_version
8272          ,p_init_msg_list         => OKL_API.G_FALSE
8273          ,p_lap_id                => l_leaseapp_id
8274          ,p_lap_expdays           => NULL
8275          ,x_return_status         => l_return_status
8276          ,x_msg_count             => x_msg_count
8277          ,x_msg_data              => x_msg_data);
8278 
8279       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8280       THEN
8281         OKL_DEBUG_PUB.LOG_DEBUG(
8282             FND_LOG.LEVEL_PROCEDURE
8283            ,L_MODULE
8284            ,'end debug call SET_LEASE_APP_EXPDAYS');
8285       END IF;
8286 
8287       -- write to log
8288       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8289         OKL_DEBUG_PUB.LOG_DEBUG(
8290             FND_LOG.LEVEL_STATEMENT
8291            ,L_MODULE || ' Result of SET_LEASE_APP_EXPDAYS'
8292            ,'return status ' || l_return_status);
8293       END IF; -- end of statement level debug
8294 
8295       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8296         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8297       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8298         RAISE OKL_API.G_EXCEPTION_ERROR;
8299       END IF;
8300     END IF;--For Expiration Date recommendation check
8301 
8302     --BUG 4931146 PAGARG Loop through the Counter Offers linked to given Lease App
8303     --if there is no recommendation for the given Counter Offer then remove the link
8304     --by setting the parent_object_code as -1
8305     FOR okl_counter_offer_rec IN okl_counter_offer_csr(l_leaseapp_id)
8306     LOOP
8307       OPEN ocm_counter_offer_csr(l_leaseapp_id, okl_counter_offer_rec.id);
8308       FETCH ocm_counter_offer_csr INTO l_recom_mean;
8309         IF ocm_counter_offer_csr%NOTFOUND
8310         THEN
8311           SELECT OBJECT_VERSION_NUMBER INTO l_lsqv_rec.object_version_number
8312           FROM OKL_LEASE_QUOTES_B
8313           WHERE ID = okl_counter_offer_rec.id;
8314 
8315           l_lsqv_rec.id := okl_counter_offer_rec.id;
8316           l_lsqv_rec.parent_object_id := -1;
8317 
8318           IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8319           THEN
8320             OKL_DEBUG_PUB.LOG_DEBUG(
8321                 FND_LOG.LEVEL_PROCEDURE
8322                ,L_MODULE
8323                ,'begin debug call OKL_LSQ_PVT.UPDATE_ROW');
8324           END IF;
8325 
8326           -- call the procedure to update lease quote
8327           OKL_LSQ_PVT.UPDATE_ROW(
8328               p_api_version        => p_api_version
8329              ,p_init_msg_list      => OKL_API.G_FALSE
8330              ,p_lsqv_rec           => l_lsqv_rec
8331              ,x_lsqv_rec           => x_lsqv_rec
8332              ,x_return_status      => l_return_status
8333              ,x_msg_count          => x_msg_count
8334              ,x_msg_data           => x_msg_data);
8335 
8336           IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8337           THEN
8338             OKL_DEBUG_PUB.LOG_DEBUG(
8339                 FND_LOG.LEVEL_PROCEDURE
8340                ,L_MODULE
8341                ,'end debug call OKL_LSQ_PVT.UPDATE_ROW');
8342           END IF;
8343 
8344           -- write to log
8345           IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8346             OKL_DEBUG_PUB.LOG_DEBUG(
8347                 FND_LOG.LEVEL_STATEMENT
8348                ,L_MODULE || ' Result of OKL_LSQ_PVT.UPDATE_ROW'
8349                ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
8350                 ' result status ' || l_return_status);
8351           END IF; -- end of statement level debug
8352 
8353           IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8354             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8355           ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8356             RAISE OKL_API.G_EXCEPTION_ERROR;
8357           END IF;
8358         ELSE
8359           --If Counter offer is found as recommendation in OCM then validate
8360           --whether pricing is completed for Counter Offer or not
8361           IF(okl_counter_offer_rec.status = 'CR-INCOMPLETE')
8362           THEN
8363             l_return_status := OKL_API.G_RET_STS_ERROR;
8364             OKL_API.SET_MESSAGE(
8365                 p_app_name     => G_APP_NAME,
8366                 p_msg_name     => 'OKL_SO_LSE_APP_COUN_OFFER_ERR',
8367                 p_token1       => 'TEXT',
8368                 p_token1_value => okl_counter_offer_rec.reference_number);
8369             RAISE OKL_API.G_EXCEPTION_ERROR;
8370           END IF;
8371         END IF;--For counter offer not found as credit recommendations in OCM
8372       CLOSE ocm_counter_offer_csr;
8373     END LOOP;
8374     --BUG 4931146 PAGARG Fix End
8375 
8376     x_return_status := l_return_status;
8377     OKL_API.END_ACTIVITY(
8378         x_msg_count => x_msg_count
8379        ,x_msg_data  => x_msg_data);
8380   EXCEPTION
8381     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8382       --Credit Recommendations Cursor
8383       IF credit_recom_csr%ISOPEN
8384       THEN
8385         CLOSE credit_recom_csr;
8386       END IF;
8387       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8388                            p_api_name  => l_api_name,
8389                            p_pkg_name  => G_PKG_NAME,
8390                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
8391                            x_msg_count => x_msg_count,
8392                            x_msg_data  => x_msg_data,
8393                            p_api_type  => G_API_TYPE);
8394 
8395     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8396       --Credit Recommendations Cursor
8397       IF credit_recom_csr%ISOPEN
8398       THEN
8399         CLOSE credit_recom_csr;
8400       END IF;
8401       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8402                            p_api_name  => l_api_name,
8403                            p_pkg_name  => G_PKG_NAME,
8404                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8405                            x_msg_count => x_msg_count,
8406                            x_msg_data  => x_msg_data,
8407                            p_api_type  => G_API_TYPE);
8408 
8409     WHEN OTHERS THEN
8410       --Credit Recommendations Cursor
8411       IF credit_recom_csr%ISOPEN
8412       THEN
8413         CLOSE credit_recom_csr;
8414       END IF;
8415       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8416                            p_api_name  => l_api_name,
8417                            p_pkg_name  => G_PKG_NAME,
8418                            p_exc_name  => 'OTHERS',
8419                            x_msg_count => x_msg_count,
8420                            x_msg_data  => x_msg_data,
8421                            p_api_type  => G_API_TYPE);
8422   END validate_credit_results;
8423 
8424   -------------------------------------------------------------------------------
8425   -- PROCEDURE lease_app_resubmit
8426   -------------------------------------------------------------------------------
8427   -- Start of comments
8428   --
8429   -- Procedure Name  : lease_app_resubmit
8430   -- Description     : This procedure resubmits the lease application.
8431   -- Business Rules  : This procedure resubmits the lease application.
8432   -- Parameters      :
8433   -- Version         : 1.0
8434   -- History         : 26-SEP-2005 PAGARG created
8435   --
8436   -- End of comments
8437   PROCEDURE lease_app_resubmit(
8438             p_api_version        IN  NUMBER,
8439             p_init_msg_list      IN  VARCHAR2,
8440             x_return_status      OUT NOCOPY VARCHAR2,
8441             x_msg_count          OUT NOCOPY NUMBER,
8442             x_msg_data           OUT NOCOPY VARCHAR2,
8443             p_source_lap_id      IN  NUMBER,
8444             p_lapv_rec           IN  lapv_rec_type,
8445             x_lapv_rec           OUT NOCOPY lapv_rec_type,
8446             p_lsqv_rec           IN  lsqv_rec_type,
8447             x_lsqv_rec           OUT NOCOPY lsqv_rec_type) IS
8448 
8449     -- Variables Declarations
8450     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
8451     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_RESUBMIT';
8452     l_return_status          VARCHAR2(1);
8453 
8454     -- Record/Table Type Declarations
8455     l_lapv_rec		lapv_rec_type;
8456     l_lsqv_rec      lsqv_rec_type;
8457     l_crr_rec       crr_rec_type;
8458     x_crr_rec       crr_rec_type;
8459     l_parameter_list  wf_parameter_list_t;
8460     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.resubmitted';
8461 
8462     --Cursor to obtain Checklist Header Id
8463     CURSOR chk_hdr_dtls_csr(cp_lap_id NUMBER)
8464     IS
8465     --changing the query for bug 5167776
8466     SELECT LATV.CHECKLIST_ID
8467     FROM OKL_LEASE_APPLICATIONS_B LAP
8468         ,OKL_LEASEAPP_TEMPL_VERSIONS_V LATV
8469     WHERE LAP.LEASEAPP_TEMPLATE_ID = LATV.ID
8470       AND LAP.ID = cp_lap_id;
8471     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
8472 
8473     --Cursor to obtain Source Lease App details
8474     CURSOR src_lse_app_dtls_csr(cp_lap_id NUMBER)
8475     IS
8476       SELECT LSQ.ID LSQ_ID
8477            , CRR.CREDIT_REQUEST_ID
8478       FROM OKL_LEASE_QUOTES_B LSQ
8479          , OKL_LEASE_APPLICATIONS_B LAP
8480          , AR_CMGT_CREDIT_REQUESTS CRR
8481       WHERE LSQ.PARENT_OBJECT_ID = LAP.ID
8482         AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
8483         AND LSQ.PRIMARY_QUOTE = 'Y'
8484         AND CRR.SOURCE_COLUMN1 = LAP.ID
8485         AND CRR.SOURCE_COLUMN3 = 'LEASEAPP'
8486 		AND LAP.ID = cp_lap_id;
8487     src_lse_app_dtls_rec src_lse_app_dtls_csr%ROWTYPE;
8488   BEGIN
8489     l_return_status := OKL_API.G_RET_STS_SUCCESS;
8490     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_RESUBMIT';
8491 
8492     -- check for logging on PROCEDURE level
8493     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
8494     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
8495     -- check for logging on STATEMENT level
8496     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
8497 
8498     -- call START_ACTIVITY to create savepoint, check compatibility
8499     -- and initialize message list
8500     l_return_status := OKL_API.START_ACTIVITY(
8501                            p_api_name      => l_api_name
8502                           ,p_pkg_name      => G_PKG_NAME
8503                           ,p_init_msg_list => p_init_msg_list
8504                           ,l_api_version   => l_api_version
8505                           ,p_api_version   => p_api_version
8506                           ,p_api_type      => G_API_TYPE
8507                           ,x_return_status => l_return_status);
8508 
8509     -- check if activity started successfully
8510     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8511       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8512     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
8513       RAISE OKL_API.G_EXCEPTION_ERROR;
8514     END IF;
8515 
8516     l_lapv_rec := p_lapv_rec;
8517     l_lsqv_rec := p_lsqv_rec;
8518     --set the status and parent for lease application
8519     l_lapv_rec.application_status := G_INIT_APPL_STATUS;
8520     l_lapv_rec.parent_leaseapp_id := p_source_lap_id;
8521     l_lapv_rec.action := 'RESUBMIT';
8522 
8523     --Validate Lease Application Template
8524     --Validate Program Agreement
8525     --Validate VP and LAT association
8526     --Validate Lease Quote
8527     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8528     THEN
8529       OKL_DEBUG_PUB.LOG_DEBUG(
8530           FND_LOG.LEVEL_PROCEDURE
8531          ,L_MODULE
8532          ,'begin debug call LEASE_APP_VAL');
8533     END IF;
8534 
8535     LEASE_APP_VAL(
8536         p_api_version           => p_api_version
8537        ,p_init_msg_list         => OKL_API.G_FALSE
8538        ,x_return_status         => l_return_status
8539        ,x_msg_count             => x_msg_count
8540        ,x_msg_data              => x_msg_data
8541        ,p_lapv_rec              => l_lapv_rec
8542        ,p_lsqv_rec              => l_lsqv_rec);
8543 
8544     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8545     THEN
8546       OKL_DEBUG_PUB.LOG_DEBUG(
8547           FND_LOG.LEVEL_PROCEDURE
8548          ,L_MODULE
8549          ,'end debug call LEASE_APP_VAL');
8550     END IF;
8551 
8552     -- write to log
8553     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8554       OKL_DEBUG_PUB.LOG_DEBUG(
8555           FND_LOG.LEVEL_STATEMENT
8556          ,L_MODULE || ' Result of LEASE_APP_VAL'
8557          ,'l_return_status ' || l_return_status);
8558     END IF; -- end of statement level debug
8559 
8560     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8561       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8562     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8563       RAISE OKL_API.G_EXCEPTION_ERROR;
8564     END IF;
8565 
8566     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8567     THEN
8568       OKL_DEBUG_PUB.LOG_DEBUG(
8569           FND_LOG.LEVEL_PROCEDURE
8570          ,L_MODULE
8571          ,'begin debug call OKL_LAP_PVT.INSERT_ROW');
8572     END IF;
8573 
8574     -- call the TAPI insert_row to create a lease application
8575     OKL_LAP_PVT.INSERT_ROW(
8576         p_api_version                        => p_api_version
8577        ,p_init_msg_list                      => OKL_API.G_FALSE
8578        ,x_return_status                      => l_return_status
8579        ,x_msg_count                          => x_msg_count
8580        ,x_msg_data                           => x_msg_data
8581        ,p_lapv_rec                           => l_lapv_rec
8582        ,x_lapv_rec                           => x_lapv_rec);
8583 
8584     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8585     THEN
8586       OKL_DEBUG_PUB.LOG_DEBUG(
8587           FND_LOG.LEVEL_PROCEDURE
8588          ,L_MODULE
8589          ,'end debug call OKL_LAP_PVT.INSERT_ROW');
8590     END IF;
8591 
8592     -- write to log
8593     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8594       OKL_DEBUG_PUB.LOG_DEBUG(
8595           FND_LOG.LEVEL_STATEMENT
8596          ,L_MODULE || ' Result of OKL_LAP_PVT.INSERT_ROW'
8597          ,'l_lapv_rec.reference_number ' || to_char(l_lapv_rec.reference_number) ||
8598           ' l_lapv_rec.id '|| l_lapv_rec.id ||
8599           ' result status ' || l_return_status ||
8600           ' x_msg_data ' || x_msg_data);
8601     END IF; -- end of statement level debug
8602 
8603     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8604       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8605     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8606       RAISE OKL_API.G_EXCEPTION_ERROR;
8607     END IF;
8608 
8609     --Populate lease quote rec values
8610     l_lsqv_rec.parent_object_code := 'LEASEAPP';
8611     l_lsqv_rec.parent_object_id := x_lapv_rec.id;
8612     l_lsqv_rec.reference_number := get_next_seq_num(
8613                                        'OKL_LSQ_REF_SEQ'
8614                                       ,'OKL_LEASE_QUOTES_B'
8615                                       ,'REFERENCE_NUMBER');
8616     l_lsqv_rec.status := 'PR-INCOMPLETE';
8617     l_lsqv_rec.primary_quote := 'Y';
8618 
8619     --Obtain the lease quote id attached to lease application and pass it as
8620     --source to duplicate lease quote.
8621     --This way it will duplicate lease quote with header values from rec and
8622     --rest of configuration, adjustment, pricing data from the source lease quote id
8623     OPEN src_lse_app_dtls_csr(p_source_lap_id);
8624     FETCH src_lse_app_dtls_csr INTO src_lse_app_dtls_rec;
8625     CLOSE src_lse_app_dtls_csr;
8626 
8627     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8628     THEN
8629       OKL_DEBUG_PUB.LOG_DEBUG(
8630           FND_LOG.LEVEL_PROCEDURE
8631          ,L_MODULE
8632          ,'begin debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
8633     END IF;
8634 
8635     -- call the procedure to create lease quote line
8636     OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE(
8637         p_api_version                        => p_api_version
8638        ,p_init_msg_list                      => OKL_API.G_FALSE
8639        ,p_transaction_control                => OKL_API.G_TRUE
8640        ,p_source_quote_id                    => src_lse_app_dtls_rec.lsq_id
8641        ,p_lease_qte_rec                      => l_lsqv_rec
8642        ,x_lease_qte_rec                      => x_lsqv_rec
8643        ,x_return_status                      => l_return_status
8644        ,x_msg_count                          => x_msg_count
8645        ,x_msg_data                           => x_msg_data);
8646 
8647 	IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8648     THEN
8649       OKL_DEBUG_PUB.LOG_DEBUG(
8650           FND_LOG.LEVEL_PROCEDURE
8651          ,L_MODULE
8652          ,'end debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
8653     END IF;
8654 
8655     -- write to log
8656     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8657       OKL_DEBUG_PUB.LOG_DEBUG(
8658           FND_LOG.LEVEL_STATEMENT
8659          ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE'
8660          ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
8661           ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
8662           ' result status ' || l_return_status ||
8663           ' x_msg_data ' || x_msg_data);
8664     END IF; -- end of statement level debug
8665 
8666     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8667       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8668     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8669       RAISE OKL_API.G_EXCEPTION_ERROR;
8670     END IF;
8671 
8672     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8673     THEN
8674       OKL_DEBUG_PUB.LOG_DEBUG(
8675           FND_LOG.LEVEL_PROCEDURE
8676          ,L_MODULE
8677          ,'begin debug call CREATE_CREDIT_APP');
8678     END IF;
8679 
8680     l_crr_rec.credit_request_type := 'RESUBMISSION';
8681     l_crr_rec.parent_credit_request_id := src_lse_app_dtls_rec.credit_request_id;
8682     --call to duplicate Credit Lease Application
8683     CREATE_CREDIT_APP(
8684         p_api_version        => p_api_version
8685        ,p_init_msg_list      => OKL_API.G_FALSE
8686        ,x_return_status      => l_return_status
8687        ,x_msg_count          => x_msg_count
8688        ,x_msg_data           => x_msg_data
8689        ,p_lapv_rec           => x_lapv_rec
8690        ,p_crr_rec            => l_crr_rec
8691        ,x_crr_rec            => x_crr_rec);
8692 
8693     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8694     THEN
8695       OKL_DEBUG_PUB.LOG_DEBUG(
8696           FND_LOG.LEVEL_PROCEDURE
8697          ,L_MODULE
8698          ,'end debug call CREATE_CREDIT_APP');
8699     END IF;
8700 
8701     -- write to log
8702     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8703       OKL_DEBUG_PUB.LOG_DEBUG(
8704           FND_LOG.LEVEL_STATEMENT
8705          ,L_MODULE || ' Result of CREATE_CREDIT_APP'
8706          ,' result status ' || l_return_status);
8707     END IF; -- end of statement level debug
8708 
8709     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8710       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8711     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8712       RAISE OKL_API.G_EXCEPTION_ERROR;
8713     END IF;
8714     --asawanka. for bug 5169964
8715     OPEN chk_hdr_dtls_csr(x_lapv_rec.id);
8716     FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
8717     CLOSE chk_hdr_dtls_csr;
8718 
8719     IF(chk_hdr_dtls_rec.checklist_id IS NOT NULL)
8720     THEN
8721       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8722       THEN
8723         OKL_DEBUG_PUB.LOG_DEBUG(
8724             FND_LOG.LEVEL_PROCEDURE
8725            ,L_MODULE
8726            ,'begin debug call CHECKLIST_INST_CRE');
8727       END IF;
8728 
8729       --call to create Checklist Instance
8730       CHECKLIST_INST_CRE(
8731           p_api_version        => p_api_version
8732          ,p_init_msg_list      => OKL_API.G_FALSE
8733          ,x_return_status      => l_return_status
8734          ,x_msg_count          => x_msg_count
8735          ,x_msg_data           => x_msg_data
8736          ,p_lap_id             => x_lapv_rec.id
8737 		 ,p_chklst_tmpl_id     => chk_hdr_dtls_rec.checklist_id);
8738 
8739 	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8740       THEN
8741         OKL_DEBUG_PUB.LOG_DEBUG(
8742             FND_LOG.LEVEL_PROCEDURE
8743            ,L_MODULE
8744            ,'end debug call CHECKLIST_INST_CRE');
8745       END IF;
8746 
8747       -- write to log
8748       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8749         OKL_DEBUG_PUB.LOG_DEBUG(
8750             FND_LOG.LEVEL_STATEMENT
8751            ,L_MODULE || ' Result of CHECKLIST_INST_CRE'
8752            ,' result status ' || l_return_status);
8753       END IF; -- end of statement level debug
8754 
8755       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8756         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8757       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8758         RAISE OKL_API.G_EXCEPTION_ERROR;
8759       END IF;
8760     END IF; -- Condition to check for call to create checklist instance
8761 
8762     --Update the status of Parent Lease Application as in Progress
8763     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8764     THEN
8765       OKL_DEBUG_PUB.LOG_DEBUG(
8766           FND_LOG.LEVEL_PROCEDURE
8767          ,L_MODULE
8768          ,'begin debug call SET_IN_PROGRESS_STATUS');
8769     END IF;
8770 
8771     --call the procedure to update a lease application status
8772     SET_IN_PROGRESS_STATUS(
8773         p_api_version              => p_api_version
8774        ,p_init_msg_list            => OKL_API.G_FALSE
8775        ,p_lap_id                   => p_source_lap_id
8776        ,p_action                   => 'RESUBMIT'
8777        ,x_return_status            => l_return_status
8778        ,x_msg_count                => x_msg_count
8779        ,x_msg_data                 => x_msg_data);
8780 
8781     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8782     THEN
8783       OKL_DEBUG_PUB.LOG_DEBUG(
8784           FND_LOG.LEVEL_PROCEDURE
8785          ,L_MODULE
8786          ,'end debug call SET_IN_PROGRESS_STATUS');
8787     END IF;
8788 
8789     -- write to log
8790     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
8791       OKL_DEBUG_PUB.LOG_DEBUG(
8792           FND_LOG.LEVEL_STATEMENT
8793          ,L_MODULE || ' Result of SET_IN_PROGRESS_STATUS'
8794          ,'return status ' || l_return_status ||
8795           ' x_msg_data ' || x_msg_data);
8796     END IF; -- end of statement level debug
8797 
8798     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8799       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8800     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8801       RAISE OKL_API.G_EXCEPTION_ERROR;
8802     END IF;
8803 
8804     -- raise the business event passing the Lease Application id added to the parameter list
8805     wf_event.addparametertolist('LAPP_ID'
8806                                ,x_lapv_rec.id
8807                                ,l_parameter_list);
8808 
8809     okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
8810                             ,p_init_msg_list =>            p_init_msg_list
8811                             ,x_return_status =>            l_return_status
8812                             ,x_msg_count     =>            x_msg_count
8813                             ,x_msg_data      =>            x_msg_data
8814                             ,p_event_name    =>            p_event_name
8815                             ,p_parameters    =>            l_parameter_list);
8816 
8817     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
8818       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8819     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
8820       RAISE OKL_API.G_EXCEPTION_ERROR;
8821     END IF;
8822 
8823     x_return_status := l_return_status;
8824     OKL_API.END_ACTIVITY(
8825         x_msg_count => x_msg_count
8826        ,x_msg_data  => x_msg_data);
8827   EXCEPTION
8828     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8829       --Checklist Header Details Cursor
8830       IF chk_hdr_dtls_csr%ISOPEN
8831       THEN
8832         CLOSE chk_hdr_dtls_csr;
8833       END IF;
8834       --Lease Application Source Details Cursor
8835       IF src_lse_app_dtls_csr%ISOPEN
8836       THEN
8837         CLOSE src_lse_app_dtls_csr;
8838       END IF;
8839       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8840                            p_api_name  => l_api_name,
8841                            p_pkg_name  => G_PKG_NAME,
8842                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
8843                            x_msg_count => x_msg_count,
8844                            x_msg_data  => x_msg_data,
8845                            p_api_type  => G_API_TYPE);
8846 
8847     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8848       --Checklist Header Details Cursor
8849       IF chk_hdr_dtls_csr%ISOPEN
8850       THEN
8851         CLOSE chk_hdr_dtls_csr;
8852       END IF;
8853       --Lease Application Source Details Cursor
8854       IF src_lse_app_dtls_csr%ISOPEN
8855       THEN
8856         CLOSE src_lse_app_dtls_csr;
8857       END IF;
8858       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8859                            p_api_name  => l_api_name,
8860                            p_pkg_name  => G_PKG_NAME,
8861                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
8862                            x_msg_count => x_msg_count,
8863                            x_msg_data  => x_msg_data,
8864                            p_api_type  => G_API_TYPE);
8865 
8866     WHEN OTHERS THEN
8867       --Checklist Header Details Cursor
8868       IF chk_hdr_dtls_csr%ISOPEN
8869       THEN
8870         CLOSE chk_hdr_dtls_csr;
8871       END IF;
8872       --Lease Application Source Details Cursor
8873       IF src_lse_app_dtls_csr%ISOPEN
8874       THEN
8875         CLOSE src_lse_app_dtls_csr;
8876       END IF;
8877       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8878                            p_api_name  => l_api_name,
8879                            p_pkg_name  => G_PKG_NAME,
8880                            p_exc_name  => 'OTHERS',
8881                            x_msg_count => x_msg_count,
8882                            x_msg_data  => x_msg_data,
8883                            p_api_type  => G_API_TYPE);
8884   END lease_app_resubmit;
8885 
8886   -------------------------------------------------------------------------------
8887   -- PROCEDURE lease_app_cancel
8888   -------------------------------------------------------------------------------
8889   -- Start of comments
8890   --
8891   -- Procedure Name  : lease_app_cancel
8892   -- Description     : This procedure cancels the lease application.
8893   -- Business Rules  : This procedure cancels the lease application.
8894   -- Parameters      :
8895   -- Version         : 1.0
8896   -- History         : 26-SEP-2005 PAGARG created
8897   --
8898   -- End of comments
8899   PROCEDURE lease_app_cancel(
8900             p_api_version        IN  NUMBER,
8901             p_init_msg_list      IN  VARCHAR2,
8902             x_return_status      OUT NOCOPY VARCHAR2,
8903             x_msg_count          OUT NOCOPY NUMBER,
8904             x_msg_data           OUT NOCOPY VARCHAR2,
8905             p_lease_app_id       IN  NUMBER,
8906             x_lapv_rec		     OUT NOCOPY lapv_rec_type)
8907   IS
8908     -- Variables Declarations
8909     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
8910     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_CANCEL';
8911     l_return_status          VARCHAR2(1);
8912     l_meaning                VARCHAR2(80);
8913 
8914     -- Bug#4741121 - viselvar  - Modified - Start
8915     l_parameter_list  wf_parameter_list_t;
8916     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.cancelled';
8917     -- Bug#4741121 - viselvar  - Modified - End
8918 
8919     --Cursor to populate Lease Application details from database
8920     CURSOR lap_db_val_csr(cp_lap_id NUMBER) IS
8921       SELECT LAB.REFERENCE_NUMBER LEASE_APPL_NUMBER
8922            , LAB.APPLICATION_STATUS APPLICATION_STATUS
8923       FROM OKL_LEASE_APPLICATIONS_B LAB
8924       WHERE LAB.ID = cp_lap_id;
8925     lap_db_val_rec lap_db_val_csr%ROWTYPE;
8926   BEGIN
8927     l_return_status := OKL_API.G_RET_STS_SUCCESS;
8928     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_CANCEL';
8929 
8930     -- check for logging on PROCEDURE level
8931     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
8932     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
8933     -- check for logging on STATEMENT level
8934     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
8935 
8936     -- call START_ACTIVITY to create savepoint, check compatibility
8937     -- and initialize message list
8938     l_return_status := OKL_API.START_ACTIVITY(
8939                            p_api_name      => l_api_name
8940                           ,p_pkg_name      => G_PKG_NAME
8941                           ,p_init_msg_list => p_init_msg_list
8942                           ,l_api_version   => l_api_version
8943                           ,p_api_version   => p_api_version
8944                           ,p_api_type      => G_API_TYPE
8945                           ,x_return_status => l_return_status);
8946 
8947     -- check if activity started successfully
8948     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8949       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8950     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
8951       RAISE OKL_API.G_EXCEPTION_ERROR;
8952     END IF;
8953 
8954     IF(p_lease_app_id IS NOT NULL OR
8955        p_lease_app_id <> OKL_API.G_MISS_NUM)
8956     THEN
8957       OPEN lap_db_val_csr(p_lease_app_id);
8958       FETCH lap_db_val_csr INTO lap_db_val_rec;
8959         IF(lap_db_val_csr%NOTFOUND)
8960         THEN
8961           l_return_status := OKL_API.G_RET_STS_ERROR;
8962           OKL_API.SET_MESSAGE(
8963               p_app_name      => G_APP_NAME,
8964               p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
8965           RAISE OKL_API.G_EXCEPTION_ERROR;
8966         END IF;
8967       CLOSE lap_db_val_csr;
8968     ELSE
8969       l_return_status := OKL_API.G_RET_STS_ERROR;
8970       OKL_API.SET_MESSAGE(
8971           p_app_name      => G_APP_NAME,
8972           p_msg_name      => 'OKL_SO_LSE_APP_INVALID');
8973       RAISE OKL_API.G_EXCEPTION_ERROR;
8974     END IF; --Lease Application Id is null or G_MISS_NUM
8975 
8976 /*  Due to data integrity concerns, users would not be able to cancel applications
8977     that are in any of the following statuses:
8978 	Submitted to Credit,Credit Rejected,Credit Approved,Converted to Contract
8979 	Submitted for Pricing Approval, Receommendation Not Approved
8980 */
8981     IF(lap_db_val_rec.application_status IN
8982 	   ('CR-SUBMITTED', 'CR-REJECTED', 'CR-APPROVED','CONV-K', 'PR-SUBMITTED', 'RECOM_NOT_APPROVED') )
8983     THEN
8984       l_return_status := OKL_API.G_RET_STS_ERROR;
8985       l_meaning := get_lookup_meaning('OKL_LEASE_APP_STATUS', 'CANCELED');
8986       OKL_API.SET_MESSAGE(
8987           p_app_name      => G_APP_NAME,
8988           p_msg_name      => 'OKL_SO_LSE_APP_ACTION_ERR',
8989           p_token1        => 'TEXT',
8990           p_token1_value  => lap_db_val_rec.lease_appl_number,
8991           p_token2        => 'STATUS',
8992           p_token2_value  => lap_db_val_rec.application_status,
8993           p_token3        => 'ACTION',
8994           p_token3_value  => l_meaning);
8995       RAISE OKL_API.G_EXCEPTION_ERROR;
8996     ELSE
8997       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
8998       THEN
8999         OKL_DEBUG_PUB.LOG_DEBUG(
9000             FND_LOG.LEVEL_PROCEDURE
9001            ,L_MODULE
9002            ,'begin debug call CHECK_ELIGIBILITY');
9003       END IF;
9004 
9005       --call the procedure to Validate Cancel action on lease app
9006       CHECK_ELIGIBILITY(
9007           p_api_version     => p_api_version
9008          ,p_init_msg_list   => OKL_API.G_FALSE
9009          ,x_return_status   => l_return_status
9010          ,x_msg_count       => x_msg_count
9011          ,x_msg_data        => x_msg_data
9012          ,p_lap_id          => p_lease_app_id
9013          ,p_action          => 'CANCEL');
9014 
9015       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9016       THEN
9017         OKL_DEBUG_PUB.LOG_DEBUG(
9018             FND_LOG.LEVEL_PROCEDURE
9019            ,L_MODULE
9020            ,'end debug call CHECK_ELIGIBILITY');
9021       END IF;
9022 
9023       -- write to log
9024       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9025         OKL_DEBUG_PUB.LOG_DEBUG(
9026             FND_LOG.LEVEL_STATEMENT
9027            ,L_MODULE || ' Result of CHECK_ELIGIBILITY'
9028            ,'return status ' || l_return_status ||
9029             ' x_msg_data ' || x_msg_data);
9030       END IF; -- end of statement level debug
9031 
9032       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9033         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9034       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
9035         RAISE OKL_API.G_EXCEPTION_ERROR;
9036       END IF;
9037 
9038       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9039       THEN
9040         OKL_DEBUG_PUB.LOG_DEBUG(
9041             FND_LOG.LEVEL_PROCEDURE
9042            ,L_MODULE
9043            ,'begin debug call SET_LEASE_APP_STATUS');
9044       END IF;
9045 
9046       --call the procedure to update a lease application status
9047       SET_LEASE_APP_STATUS(
9048           p_api_version     => p_api_version
9049          ,p_init_msg_list   => OKL_API.G_FALSE
9050          ,p_lap_id          => p_lease_app_id
9051          ,p_lap_status      => 'CANCELED'
9052          ,x_return_status   => l_return_status
9053          ,x_msg_count       => x_msg_count
9054          ,x_msg_data        => x_msg_data);
9055 
9056       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9057       THEN
9058         OKL_DEBUG_PUB.LOG_DEBUG(
9059             FND_LOG.LEVEL_PROCEDURE
9060            ,L_MODULE
9061            ,'end debug call SET_LEASE_APP_STATUS');
9062       END IF;
9063 
9064       -- write to log
9065       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9066         OKL_DEBUG_PUB.LOG_DEBUG(
9067             FND_LOG.LEVEL_STATEMENT
9068            ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
9069            ,'return status ' || l_return_status ||
9070             ' x_msg_data ' || x_msg_data);
9071       END IF; -- end of statement level debug
9072 
9073       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9074         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9075       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
9076         RAISE OKL_API.G_EXCEPTION_ERROR;
9077       END IF;
9078 
9079 	  -- Added by rravikir for Bug 5001802
9080       -- Call the API to process the lease app subsidy pool
9081       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9082       THEN
9083         OKL_DEBUG_PUB.LOG_DEBUG(
9084             FND_LOG.LEVEL_PROCEDURE
9085            ,L_MODULE
9086            ,'begin debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
9087       END IF;
9088 
9089       OKL_LEASE_QUOTE_SUBPOOL_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL(
9090             p_api_version           => p_api_version
9091            ,p_init_msg_list         => OKL_API.G_FALSE
9092            ,p_transaction_control   => OKL_API.G_TRUE
9093            ,p_leaseapp_id           => p_lease_app_id
9094            ,p_transaction_reason    => 'CANCEL_LEASE_APP'
9095            ,p_quote_id              => null
9096            ,x_return_status         => l_return_status
9097            ,x_msg_count             => x_msg_count
9098            ,x_msg_data              => x_msg_data);
9099 
9100       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9101       THEN
9102         OKL_DEBUG_PUB.LOG_DEBUG(
9103             FND_LOG.LEVEL_PROCEDURE
9104            ,L_MODULE
9105            ,'end debug call OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL');
9106       END IF;
9107 
9108       -- write to log
9109       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9110         OKL_DEBUG_PUB.LOG_DEBUG(
9111             FND_LOG.LEVEL_STATEMENT
9112            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.PROCESS_LEASEAPP_SUBSIDY_POOL'
9113            ,'l_return_status ' || l_return_status);
9114       END IF; -- end of statement level debug
9115 
9116       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9117         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9118       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9119         RAISE OKL_API.G_EXCEPTION_ERROR;
9120       END IF;
9121       -- End changes for Bug 5001802
9122 
9123       --Call the API which will check if there is any Parent to this Lease App
9124       --and in status Appeal/Resubmit in Progress. If yes then restore the status
9125       --of parent to original status
9126       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9127       THEN
9128         OKL_DEBUG_PUB.LOG_DEBUG(
9129             FND_LOG.LEVEL_PROCEDURE
9130            ,L_MODULE
9131            ,'begin debug call REVERT_TO_ORIG_STATUS');
9132       END IF;
9133 
9134       REVERT_TO_ORIG_STATUS(
9135           p_api_version           => l_api_version
9136          ,p_init_msg_list         => OKL_API.G_FALSE
9137          ,p_lap_id                => p_lease_app_id
9138          ,x_return_status         => l_return_status
9139          ,x_msg_count             => x_msg_count
9140          ,x_msg_data              => x_msg_data);
9141 
9142       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9143       THEN
9144         OKL_DEBUG_PUB.LOG_DEBUG(
9145             FND_LOG.LEVEL_PROCEDURE
9146            ,L_MODULE
9147            ,'end debug call REVERT_TO_ORIG_STATUS');
9148       END IF;
9149 
9150       -- write to log
9151       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9152         OKL_DEBUG_PUB.LOG_DEBUG(
9153             FND_LOG.LEVEL_STATEMENT
9154            ,L_MODULE || ' Result of REVERT_TO_ORIG_STATUS'
9155            ,'l_return_status ' || l_return_status);
9156       END IF; -- end of statement level debug
9157 
9158       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9159         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9160       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9161         RAISE OKL_API.G_EXCEPTION_ERROR;
9162       END IF;
9163 
9164       -- Bug#4741121 - viselvar  - Modified - Start
9165       -- raise the business event passing the Lease Application id added to the parameter list
9166       wf_event.addparametertolist('LAPP_ID'
9167                                  ,p_lease_app_id
9168                                  ,l_parameter_list);
9169 
9170       okl_wf_pvt.raise_event(p_api_version   =>            p_api_version
9171                             ,p_init_msg_list =>            p_init_msg_list
9172                             ,x_return_status =>            l_return_status
9173                             ,x_msg_count     =>            x_msg_count
9174                             ,x_msg_data      =>            x_msg_data
9175                             ,p_event_name    =>            p_event_name
9176                             ,p_parameters    =>            l_parameter_list);
9177 
9178       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9179         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9180       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9181         RAISE OKL_API.G_EXCEPTION_ERROR;
9182       END IF;
9183       -- Bug#4741121 - viselvar  - Modified - End
9184     END IF;
9185 
9186     x_return_status := l_return_status;
9187     OKL_API.END_ACTIVITY(
9188         x_msg_count => x_msg_count
9189        ,x_msg_data  => x_msg_data);
9190   EXCEPTION
9191     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9192       --Lease App Details Cursor
9193       IF lap_db_val_csr%ISOPEN
9194       THEN
9195         CLOSE lap_db_val_csr;
9196       END IF;
9197       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9198                            p_api_name  => l_api_name,
9199                            p_pkg_name  => G_PKG_NAME,
9200                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
9201                            x_msg_count => x_msg_count,
9202                            x_msg_data  => x_msg_data,
9203                            p_api_type  => G_API_TYPE);
9204     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9205       --Lease App Details Cursor
9206       IF lap_db_val_csr%ISOPEN
9207       THEN
9208         CLOSE lap_db_val_csr;
9209       END IF;
9210       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9211                            p_api_name  => l_api_name,
9212                            p_pkg_name  => G_PKG_NAME,
9213                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9214                            x_msg_count => x_msg_count,
9215                            x_msg_data  => x_msg_data,
9216                            p_api_type  => G_API_TYPE);
9217     WHEN OTHERS THEN
9218       --Lease App Details Cursor
9219       IF lap_db_val_csr%ISOPEN
9220       THEN
9221         CLOSE lap_db_val_csr;
9222       END IF;
9223       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9224                            p_api_name  => l_api_name,
9225                            p_pkg_name  => G_PKG_NAME,
9226                            p_exc_name  => 'OTHERS',
9227                            x_msg_count => x_msg_count,
9228                            x_msg_data  => x_msg_data,
9229                            p_api_type  => G_API_TYPE);
9230   END lease_app_cancel;
9231 
9232   -------------------------------------------------------------------------------
9233   -- PROCEDURE lease_app_appeal
9234   -------------------------------------------------------------------------------
9235   -- Start of comments
9236   --
9237   -- Procedure Name  : lease_app_appeal
9238   -- Description     : This procedure appeals the lease application.
9239   -- Business Rules  : This procedure appeals the lease application.
9240   -- Parameters      :
9241   -- Version         : 1.0
9242   -- History         : 26-SEP-2005 PAGARG created
9243   --
9244   -- End of comments
9245   PROCEDURE lease_app_appeal(
9246             p_api_version        IN  NUMBER,
9247             p_init_msg_list      IN  VARCHAR2,
9248             x_return_status      OUT NOCOPY VARCHAR2,
9249             x_msg_count          OUT NOCOPY NUMBER,
9250             x_msg_data           OUT NOCOPY VARCHAR2,
9251             p_source_lap_id      IN  NUMBER,
9252             p_lapv_rec           IN  lapv_rec_type,
9253             x_lapv_rec           OUT NOCOPY lapv_rec_type,
9254             p_lsqv_rec           IN  lsqv_rec_type,
9255             x_lsqv_rec           OUT NOCOPY lsqv_rec_type)
9256   IS
9257     -- Variables Declarations
9258     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
9259     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_APPEAL';
9260     l_return_status          VARCHAR2(1);
9261 
9262     -- Record/Table Type Declarations
9263     l_lapv_rec		lapv_rec_type;
9264     l_lsqv_rec      lsqv_rec_type;
9265     l_crr_rec       crr_rec_type;
9266     x_crr_rec       crr_rec_type;
9267     l_parameter_list  wf_parameter_list_t;
9268     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.appeal';
9269 
9270     --Cursor to obtain Checklist Header Id
9271     CURSOR chk_hdr_dtls_csr(cp_lap_id NUMBER)
9272     IS
9273       SELECT CHK.ID CHECKLIST_ID
9274       FROM OKL_LEASE_APPLICATIONS_B LAP
9275          , OKL_CHECKLISTS CHK
9276       WHERE CHK.CHECKLIST_OBJ_TYPE_CODE = 'LEASE_APPL'
9277         AND CHK.CHECKLIST_OBJ_ID = LAP.ID
9278         AND LAP.ID = cp_lap_id;
9279     chk_hdr_dtls_rec chk_hdr_dtls_csr%ROWTYPE;
9280 
9281     --Cursor to obtain Source Lease App details
9282     CURSOR src_lse_app_dtls_csr(cp_lap_id NUMBER)
9283     IS
9284       SELECT LSQ.ID LSQ_ID
9285            , CRR.CREDIT_REQUEST_ID
9286            , LAP.APPLICATION_STATUS
9287            , LAP.APPLICATION_STATUS APPEAL_SCOPE
9288       FROM OKL_LEASE_QUOTES_B LSQ
9289          , OKL_LEASE_APPLICATIONS_B LAP
9290          , AR_CMGT_CREDIT_REQUESTS CRR
9291       WHERE LSQ.PARENT_OBJECT_ID = LAP.ID
9292         AND LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
9293         AND LSQ.PRIMARY_QUOTE = 'Y'
9294         AND CRR.SOURCE_COLUMN1 = LAP.ID
9295         AND CRR.SOURCE_COLUMN3 = 'LEASEAPP'
9296 		AND LAP.ID = cp_lap_id;
9297     src_lse_app_dtls_rec src_lse_app_dtls_csr%ROWTYPE;
9298   BEGIN
9299     l_return_status := OKL_API.G_RET_STS_SUCCESS;
9300     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_APPEAL';
9301 
9302     -- check for logging on PROCEDURE level
9303     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
9304     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
9305     -- check for logging on STATEMENT level
9306     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
9307 
9308     -- call START_ACTIVITY to create savepoint, check compatibility
9309     -- and initialize message list
9310     l_return_status := OKL_API.START_ACTIVITY(
9311                            p_api_name      => l_api_name
9312                           ,p_pkg_name      => G_PKG_NAME
9313                           ,p_init_msg_list => p_init_msg_list
9314                           ,l_api_version   => l_api_version
9315                           ,p_api_version   => p_api_version
9316                           ,p_api_type      => G_API_TYPE
9317                           ,x_return_status => l_return_status);
9318 
9319     -- check if activity started successfully
9320     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9321       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9322     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
9323       RAISE OKL_API.G_EXCEPTION_ERROR;
9324     END IF;
9325 
9326     l_lapv_rec := p_lapv_rec;
9327     l_lsqv_rec := p_lsqv_rec;
9328     l_lapv_rec.application_status := 'PR-ACCEPTED';
9329     l_lapv_rec.parent_leaseapp_id := p_source_lap_id;
9330     l_lapv_rec.action := 'APPEAL';
9331 
9332     --Validate Lease Application Template
9333     --Validate Program Agreement
9334     --Validate VP and LAT association
9335     --Validate Lease Quote
9336     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9337     THEN
9338       OKL_DEBUG_PUB.LOG_DEBUG(
9339           FND_LOG.LEVEL_PROCEDURE
9340          ,L_MODULE
9341          ,'begin debug call LEASE_APP_VAL');
9342     END IF;
9343 
9344     LEASE_APP_VAL(
9345         p_api_version           => p_api_version
9346        ,p_init_msg_list         => OKL_API.G_FALSE
9347        ,x_return_status         => l_return_status
9348        ,x_msg_count             => x_msg_count
9349        ,x_msg_data              => x_msg_data
9350        ,p_lapv_rec              => l_lapv_rec
9351        ,p_lsqv_rec              => l_lsqv_rec);
9352 
9353     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9354     THEN
9355       OKL_DEBUG_PUB.LOG_DEBUG(
9356           FND_LOG.LEVEL_PROCEDURE
9357          ,L_MODULE
9358          ,'end debug call LEASE_APP_VAL');
9359     END IF;
9360 
9361     -- write to log
9362     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9363       OKL_DEBUG_PUB.LOG_DEBUG(
9364           FND_LOG.LEVEL_STATEMENT
9365          ,L_MODULE || ' Result of LEASE_APP_VAL'
9366          ,'l_return_status ' || l_return_status);
9367     END IF; -- end of statement level debug
9368 
9369     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9370       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9371     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9372       RAISE OKL_API.G_EXCEPTION_ERROR;
9373     END IF;
9374 
9375     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9376     THEN
9377       OKL_DEBUG_PUB.LOG_DEBUG(
9378           FND_LOG.LEVEL_PROCEDURE
9379          ,L_MODULE
9380          ,'begin debug call OKL_LAP_PVT.INSERT_ROW');
9381     END IF;
9382 
9383     -- call the TAPI insert_row to create a lease application
9384     OKL_LAP_PVT.INSERT_ROW(
9385         p_api_version                        => p_api_version
9386        ,p_init_msg_list                      => OKL_API.G_FALSE
9387        ,x_return_status                      => l_return_status
9388        ,x_msg_count                          => x_msg_count
9389        ,x_msg_data                           => x_msg_data
9390        ,p_lapv_rec                           => l_lapv_rec
9391        ,x_lapv_rec                           => x_lapv_rec);
9392 
9393     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9394     THEN
9395       OKL_DEBUG_PUB.LOG_DEBUG(
9396           FND_LOG.LEVEL_PROCEDURE
9397          ,L_MODULE
9398          ,'end debug call OKL_LAP_PVT.INSERT_ROW');
9399     END IF;
9400 
9401     -- write to log
9402     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9403       OKL_DEBUG_PUB.LOG_DEBUG(
9404           FND_LOG.LEVEL_STATEMENT
9405          ,L_MODULE || ' Result of OKL_LAP_PVT.INSERT_ROW'
9406          ,'l_lapv_rec.reference_number ' || to_char(l_lapv_rec.reference_number) ||
9407           ' l_lapv_rec.id '|| l_lapv_rec.id ||
9408           ' result status ' || l_return_status ||
9409           ' x_msg_data ' || x_msg_data);
9410     END IF; -- end of statement level debug
9411 
9412     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9413       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9414     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9415       RAISE OKL_API.G_EXCEPTION_ERROR;
9416     END IF;
9417 
9418     --Populate lease quote rec values
9419     l_lsqv_rec.parent_object_code := 'LEASEAPP';
9420     l_lsqv_rec.parent_object_id := x_lapv_rec.id;
9421     l_lsqv_rec.reference_number := get_next_seq_num(
9422                                        'OKL_LSQ_REF_SEQ'
9423                                       ,'OKL_LEASE_QUOTES_B'
9424                                       ,'REFERENCE_NUMBER');
9425     l_lsqv_rec.status := 'CT-ACCEPTED';
9426     l_lsqv_rec.primary_quote := 'Y';
9427 
9428     --Obtain the details of Source Lease Application
9429     --Obtain the lease quote id attached to lease application and pass it as
9430     --source to duplicate lease quote.
9431     --This way it will duplicate lease quote with header values from rec and
9432     --rest of configuration, adjustment, pricing data from the source lease quote id
9433     OPEN src_lse_app_dtls_csr(p_source_lap_id);
9434     FETCH src_lse_app_dtls_csr INTO src_lse_app_dtls_rec;
9435     CLOSE src_lse_app_dtls_csr;
9436 
9437     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9438     THEN
9439       OKL_DEBUG_PUB.LOG_DEBUG(
9440           FND_LOG.LEVEL_PROCEDURE
9441          ,L_MODULE
9442          ,'begin debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
9443     END IF;
9444 
9445     -- call the procedure to create lease quote line
9446     OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE(
9447         p_api_version                        => p_api_version
9448        ,p_init_msg_list                      => OKL_API.G_FALSE
9449        ,p_transaction_control                => OKL_API.G_TRUE
9450        ,p_source_quote_id                    => src_lse_app_dtls_rec.lsq_id
9451        ,p_lease_qte_rec                      => l_lsqv_rec
9452        ,x_lease_qte_rec                      => x_lsqv_rec
9453        ,x_return_status                      => l_return_status
9454        ,x_msg_count                          => x_msg_count
9455        ,x_msg_data                           => x_msg_data);
9456 
9457 	IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9458     THEN
9459       OKL_DEBUG_PUB.LOG_DEBUG(
9460           FND_LOG.LEVEL_PROCEDURE
9461          ,L_MODULE
9462          ,'end debug call OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE');
9463     END IF;
9464 
9465     -- write to log
9466     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9467       OKL_DEBUG_PUB.LOG_DEBUG(
9468           FND_LOG.LEVEL_STATEMENT
9469          ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.DUPLICATE_LEASE_QTE'
9470          ,'l_lsqv_rec.reference_number ' || to_char(l_lsqv_rec.reference_number) ||
9471           ' l_lsqv_rec.id '|| l_lsqv_rec.id ||
9472           ' result status ' || l_return_status ||
9473           ' x_msg_data ' || x_msg_data);
9474     END IF; -- end of statement level debug
9475 
9476     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9477       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9478     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9479       RAISE OKL_API.G_EXCEPTION_ERROR;
9480     END IF;
9481 
9482     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9483     THEN
9484       OKL_DEBUG_PUB.LOG_DEBUG(
9485           FND_LOG.LEVEL_PROCEDURE
9486          ,L_MODULE
9487          ,'begin debug call CREATE_CREDIT_APP');
9488     END IF;
9489 
9490     IF(src_lse_app_dtls_rec.application_status = 'CR-APPROVED')
9491     THEN
9492       l_crr_rec.credit_request_type := 'APPEAL';
9493     ELSIF(src_lse_app_dtls_rec.application_status IN ('CR-REJECTED', 'RECOM_NOT_APPROVED'))
9494     THEN
9495       l_crr_rec.credit_request_type := 'APPEAL_REJECTION';
9496     END IF;
9497     l_crr_rec.parent_credit_request_id := src_lse_app_dtls_rec.credit_request_id;
9498     --call to duplicate Credit Lease Application
9499     CREATE_CREDIT_APP(
9500         p_api_version        => p_api_version
9501        ,p_init_msg_list      => OKL_API.G_FALSE
9502        ,x_return_status      => l_return_status
9503        ,x_msg_count          => x_msg_count
9504        ,x_msg_data           => x_msg_data
9505        ,p_lapv_rec           => x_lapv_rec
9506        ,p_crr_rec            => l_crr_rec
9507        ,x_crr_rec            => x_crr_rec);
9508 
9509     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9510     THEN
9511       OKL_DEBUG_PUB.LOG_DEBUG(
9512           FND_LOG.LEVEL_PROCEDURE
9513          ,L_MODULE
9514          ,'end debug call CREATE_CREDIT_APP');
9515     END IF;
9516 
9517     -- write to log
9518     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9519       OKL_DEBUG_PUB.LOG_DEBUG(
9520           FND_LOG.LEVEL_STATEMENT
9521          ,L_MODULE || ' Result of CREATE_CREDIT_APP'
9522          ,' result status ' || l_return_status);
9523     END IF; -- end of statement level debug
9524 
9525     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9526       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9527     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9528       RAISE OKL_API.G_EXCEPTION_ERROR;
9529     END IF;
9530 
9531     OPEN chk_hdr_dtls_csr(p_source_lap_id);
9532     FETCH chk_hdr_dtls_csr INTO chk_hdr_dtls_rec;
9533     CLOSE chk_hdr_dtls_csr;
9534 
9535     IF(chk_hdr_dtls_rec.checklist_id IS NOT NULL)
9536     THEN
9537       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9538       THEN
9539         OKL_DEBUG_PUB.LOG_DEBUG(
9540             FND_LOG.LEVEL_PROCEDURE
9541            ,L_MODULE
9542            ,'begin debug call CHECKLIST_INST_CRE');
9543       END IF;
9544 
9545       --call to create Checklist Instance
9546       CHECKLIST_INST_CRE(
9547           p_api_version        => p_api_version
9548          ,p_init_msg_list      => OKL_API.G_FALSE
9549          ,x_return_status      => l_return_status
9550          ,x_msg_count          => x_msg_count
9551          ,x_msg_data           => x_msg_data
9552          ,p_lap_id             => x_lapv_rec.id
9553 		 ,p_chklst_tmpl_id     => chk_hdr_dtls_rec.checklist_id);
9554 
9555 	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9556       THEN
9557         OKL_DEBUG_PUB.LOG_DEBUG(
9558             FND_LOG.LEVEL_PROCEDURE
9559            ,L_MODULE
9560            ,'end debug call CHECKLIST_INST_CRE');
9561       END IF;
9562 
9563       -- write to log
9564       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9565         OKL_DEBUG_PUB.LOG_DEBUG(
9566             FND_LOG.LEVEL_STATEMENT
9567            ,L_MODULE || ' Result of CHECKLIST_INST_CRE'
9568            ,' result status ' || l_return_status);
9569       END IF; -- end of statement level debug
9570 
9571       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9572         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9573       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9574         RAISE OKL_API.G_EXCEPTION_ERROR;
9575       END IF;
9576     END IF; -- Condition to check for call to create checklist instance
9577 
9578     --Update the status of Parent Lease Application as in Progress
9579     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9580     THEN
9581       OKL_DEBUG_PUB.LOG_DEBUG(
9582           FND_LOG.LEVEL_PROCEDURE
9583          ,L_MODULE
9584          ,'begin debug call SET_IN_PROGRESS_STATUS');
9585     END IF;
9586 
9587     --call the procedure to update a lease application status
9588     SET_IN_PROGRESS_STATUS(
9589         p_api_version              => p_api_version
9590        ,p_init_msg_list            => OKL_API.G_FALSE
9591        ,p_lap_id                   => p_source_lap_id
9592        ,p_action                   => 'APPEAL'
9593        ,x_return_status            => l_return_status
9594        ,x_msg_count                => x_msg_count
9595        ,x_msg_data                 => x_msg_data);
9596 
9597     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
9598     THEN
9599       OKL_DEBUG_PUB.LOG_DEBUG(
9600           FND_LOG.LEVEL_PROCEDURE
9601          ,L_MODULE
9602          ,'end debug call SET_IN_PROGRESS_STATUS');
9603     END IF;
9604 
9605     -- write to log
9606     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
9607       OKL_DEBUG_PUB.LOG_DEBUG(
9608           FND_LOG.LEVEL_STATEMENT
9609          ,L_MODULE || ' Result of SET_IN_PROGRESS_STATUS'
9610          ,'return status ' || l_return_status ||
9611           ' x_msg_data ' || x_msg_data);
9612     END IF; -- end of statement level debug
9613 
9614     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9615       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9616     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9617       RAISE OKL_API.G_EXCEPTION_ERROR;
9618     END IF;
9619 
9620     -- raise the business event passing the Lease Application id added to the parameter list
9621     wf_event.addparametertolist('LAPP_ID'
9622                                ,x_lapv_rec.id
9623                                ,l_parameter_list);
9624     okl_wf_pvt.raise_event(p_api_version       => p_api_version
9625                           ,p_init_msg_list     => p_init_msg_list
9626                           ,x_return_status     => l_return_status
9627                           ,x_msg_count         => x_msg_count
9628                           ,x_msg_data          => x_msg_data
9629                           ,p_event_name        => p_event_name
9630                           ,p_parameters        => l_parameter_list);
9631 
9632     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
9633       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9634     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
9635       RAISE OKL_API.G_EXCEPTION_ERROR;
9636     END IF;
9637 
9638     x_return_status := l_return_status;
9639     OKL_API.END_ACTIVITY(
9640         x_msg_count => x_msg_count
9641        ,x_msg_data  => x_msg_data);
9642   EXCEPTION
9643     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9644       --Checklist Header Details Cursor
9645       IF chk_hdr_dtls_csr%ISOPEN
9646       THEN
9647         CLOSE chk_hdr_dtls_csr;
9648       END IF;
9649       --Source Lease Application Details Cursor
9650       IF src_lse_app_dtls_csr%ISOPEN
9651       THEN
9652         CLOSE src_lse_app_dtls_csr;
9653       END IF;
9654       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9655                            p_api_name  => l_api_name,
9656                            p_pkg_name  => G_PKG_NAME,
9657                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
9658                            x_msg_count => x_msg_count,
9659                            x_msg_data  => x_msg_data,
9660                            p_api_type  => G_API_TYPE);
9661     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9662       --Checklist Header Details Cursor
9663       IF chk_hdr_dtls_csr%ISOPEN
9664       THEN
9665         CLOSE chk_hdr_dtls_csr;
9666       END IF;
9667       --Source Lease Application Details Cursor
9668       IF src_lse_app_dtls_csr%ISOPEN
9669       THEN
9670         CLOSE src_lse_app_dtls_csr;
9671       END IF;
9672       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9673                            p_api_name  => l_api_name,
9674                            p_pkg_name  => G_PKG_NAME,
9675                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
9676                            x_msg_count => x_msg_count,
9677                            x_msg_data  => x_msg_data,
9678                            p_api_type  => G_API_TYPE);
9679     WHEN OTHERS THEN
9680       --Checklist Header Details Cursor
9681       IF chk_hdr_dtls_csr%ISOPEN
9682       THEN
9683         CLOSE chk_hdr_dtls_csr;
9684       END IF;
9685       --Source Lease Application Details Cursor
9686       IF src_lse_app_dtls_csr%ISOPEN
9687       THEN
9688         CLOSE src_lse_app_dtls_csr;
9689       END IF;
9690       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9691                            p_api_name  => l_api_name,
9692                            p_pkg_name  => G_PKG_NAME,
9693                            p_exc_name  => 'OTHERS',
9694                            x_msg_count => x_msg_count,
9695                            x_msg_data  => x_msg_data,
9696                            p_api_type  => G_API_TYPE);
9697   END lease_app_appeal;
9698 
9699   -------------------------------------------------------------------------------
9700   -- PROCEDURE check_eligibility
9701   -------------------------------------------------------------------------------
9702   -- Start of comments
9703   --
9704   -- Procedure Name  : check_eligibility
9705   -- Description     : This procedure checks whether lease app is eligible for
9706   --                   given action or not.
9707   -- Business Rules  : This procedure checks whether lease app is eligible for
9708   --                   given action or not.
9709   -- Parameters      :
9710   -- Version         : 1.0
9711   -- History         : 06-OCT-2005 PAGARG created
9712   --
9713   -- End of comments
9714   PROCEDURE check_eligibility(
9715             p_api_version        IN  NUMBER,
9716             p_init_msg_list      IN  VARCHAR2,
9717             x_return_status      OUT NOCOPY VARCHAR2,
9718             x_msg_count          OUT NOCOPY NUMBER,
9719             x_msg_data           OUT NOCOPY VARCHAR2,
9720             p_lap_id             IN  NUMBER,
9721 			p_action             IN  VARCHAR2)
9722   IS
9723     -- Variables Declarations
9724     l_api_version   CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
9725     l_api_name      CONSTANT VARCHAR2(30) DEFAULT 'CHECK_ELIGIBILITY';
9726     l_return_status          VARCHAR2(1);
9727 
9728     -- Record/Table Type Declarations
9729     flag             BOOLEAN;
9730     l_count          NUMBER;
9731     l_exp_date       DATE;
9732     l_meaning        VARCHAR2(80);
9733 
9734     CURSOR child_lse_app_csr(cp_lap_id IN NUMBER)
9735     IS
9736       SELECT ID
9737            , REFERENCE_NUMBER
9738            , APPLICATION_STATUS
9739       FROM OKL_LEASE_APPLICATIONS_B
9740       WHERE ID <> cp_lap_id
9741       CONNECT BY PARENT_LEASEAPP_ID = PRIOR ID
9742       START WITH ID = cp_lap_id;
9743     child_lse_app_rec child_lse_app_csr%ROWTYPE;
9744 
9745     CURSOR parent_lse_app_csr(cp_lap_id IN NUMBER)
9746     IS
9747       SELECT ID
9748            , REFERENCE_NUMBER
9749            , APPLICATION_STATUS
9750       FROM OKL_LEASE_APPLICATIONS_B
9751       WHERE ID <> cp_lap_id
9752       CONNECT BY PRIOR PARENT_LEASEAPP_ID = ID
9753       START WITH ID = cp_lap_id;
9754     parent_lse_app_rec parent_lse_app_csr%ROWTYPE;
9755 
9756     --Cursor to check whether a given recommendation is added to given Lease App
9757     CURSOR credit_recom_csr(p_lap_id NUMBER, p_recomm VARCHAR2) IS
9758       SELECT COUNT(*)
9759       FROM AR_CMGT_CF_RECOMMENDS RCM
9760          , AR_CMGT_CREDIT_REQUESTS CCR
9761       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
9762         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
9763         AND RCM.CREDIT_RECOMMENDATION = p_recomm
9764         AND CCR.SOURCE_COLUMN1 = p_lap_id;
9765 
9766     --Cursor to obtain appeal period expiration date for a given Lease App
9767     CURSOR appeal_exp_date_csr(p_lap_id NUMBER)
9768     IS
9769       SELECT RCM.RECOMMENDATION_VALUE1 + TRUNC(LAST_UPDATED) APPEAL_EXP_DATE
9770       FROM AR_CMGT_CASE_FOLDERS CCF
9771          , AR_CMGT_CREDIT_REQUESTS CCR
9772          , AR_CMGT_CF_RECOMMENDS RCM
9773       WHERE CCR.CREDIT_REQUEST_ID = CCF.CREDIT_REQUEST_ID
9774         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
9775         AND CCF.STATUS = 'CLOSED'
9776         AND RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
9777         AND RCM.CREDIT_RECOMMENDATION = 'AUTHORIZE_APPEAL'
9778         AND CCR.SOURCE_COLUMN1 = p_lap_id;
9779 
9780     --Cursor to Obtain Contract Number created from given lease app
9781     CURSOR contract_dtls_csr(p_lap_id NUMBER)
9782 	IS
9783       SELECT CHR.CONTRACT_NUMBER CONTRACT_NUMBER
9784       FROM OKC_K_HEADERS_B CHR
9785          , OKC_STATUSES_V CSTS
9786       WHERE CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_LEASE_APP'
9787         AND CHR.STS_CODE = CSTS.CODE
9788         AND CSTS.STE_CODE <> 'CANCELLED'
9789         AND CHR.ORIG_SYSTEM_ID1 = p_lap_id;
9790     contract_dtls_rec contract_dtls_csr%ROWTYPE;
9791 
9792     --Cursor to obtain Lease Application Details
9793     CURSOR lse_app_dtls_csr(p_lap_id NUMBER) IS
9794       SELECT LAB.REFERENCE_NUMBER
9795         FROM OKL_LEASE_APPLICATIONS_B LAB
9796        WHERE LAB.ID = p_lap_id;
9797     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
9798   BEGIN
9799     l_return_status := OKL_API.G_RET_STS_SUCCESS;
9800     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CHECK_ELIGIBILITY';
9801 
9802     -- check for logging on PROCEDURE level
9803     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
9804     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
9805     -- check for logging on STATEMENT level
9806     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
9807 
9808     -- call START_ACTIVITY to create savepoint, check compatibility
9809     -- and initialize message list
9810     l_return_status := OKL_API.START_ACTIVITY(
9811                            p_api_name      => l_api_name
9812                           ,p_pkg_name      => G_PKG_NAME
9813                           ,p_init_msg_list => p_init_msg_list
9814                           ,l_api_version   => l_api_version
9815                           ,p_api_version   => p_api_version
9816                           ,p_api_type      => G_API_TYPE
9817                           ,x_return_status => l_return_status);
9818 
9819     -- check if activity started successfully
9820     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9821       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9822     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
9823       RAISE OKL_API.G_EXCEPTION_ERROR;
9824     END IF;
9825 
9826     OPEN lse_app_dtls_csr(p_lap_id);
9827     FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
9828     CLOSE lse_app_dtls_csr;
9829 
9830     IF(p_action = 'APPEAL')
9831     THEN
9832       FOR child_lse_app_rec IN child_lse_app_csr(p_lap_id)
9833       LOOP
9834         IF child_lse_app_rec.application_status NOT IN ('CANCELED', 'WITHDRAWN')
9835         THEN
9836           l_return_status := OKL_API.G_RET_STS_ERROR;
9837           l_meaning := get_lookup_meaning('OKL_LEASE_APP_ACTION', 'APPEAL');
9838           OKL_API.SET_MESSAGE(
9839               p_app_name     => G_APP_NAME,
9840               p_msg_name     => 'OKL_SO_LSE_APP_APP_RESUB_ERR',
9841               p_token1       => 'ACTION',
9842               p_token1_value => l_meaning,
9843               p_token2       => 'TEXT',
9844               p_token2_value => lse_app_dtls_rec.reference_number);
9845           RAISE OKL_API.G_EXCEPTION_ERROR;
9846         END IF;
9847       END LOOP;
9848       OPEN credit_recom_csr(p_lap_id, 'AUTHORIZE_APPEAL');
9849       FETCH credit_recom_csr INTO l_count;
9850       CLOSE credit_recom_csr;
9851       IF(l_count = 1)
9852       THEN
9853         OPEN appeal_exp_date_csr(p_lap_id);
9854         FETCH appeal_exp_date_csr INTO l_exp_date;
9855         CLOSE appeal_exp_date_csr;
9856         IF(l_exp_Date < TRUNC(SYSDATE))
9857         THEN
9858           l_return_status := OKL_API.G_RET_STS_ERROR;
9859           OKL_API.SET_MESSAGE(
9860               p_app_name     => G_APP_NAME,
9861               p_msg_name     => 'OKL_SO_LSE_APP_APPEAL_PRD_EXP',
9862               p_token1       => 'TEXT',
9863               p_token1_value => lse_app_dtls_rec.reference_number);
9864           RAISE OKL_API.G_EXCEPTION_ERROR;
9865         END IF;
9866       ELSE
9867         l_return_status := OKL_API.G_RET_STS_ERROR;
9868         OKL_API.SET_MESSAGE(
9869             p_app_name     => G_APP_NAME,
9870             p_msg_name     => 'OKL_SO_LSE_APP_APPEAL_AUTH_ERR',
9871             p_token1       => 'TEXT',
9872             p_token1_value => lse_app_dtls_rec.reference_number);
9873         RAISE OKL_API.G_EXCEPTION_ERROR;
9874       END IF;
9875     END IF;
9876 
9877     IF(p_action = 'RESUBMIT' )
9878     THEN
9879            -- Bug# 7140398 - Start
9880            -- Donot allow resubmit in case the primary quote is Credit Declined.
9881        IF (is_primary_quote_declined(p_lap_id)) THEN
9882          l_return_status := OKL_API.G_RET_STS_ERROR;
9883          OKL_API.SET_MESSAGE(
9884              p_app_name      => G_APP_NAME,
9885              p_msg_name      => 'OKL_SO_DEC_OFFER_RESUBM_ERR');
9886          RAISE OKL_API.G_EXCEPTION_ERROR;
9887        END IF;
9888            -- Bug# 7140398 - End
9889       FOR child_lse_app_rec IN child_lse_app_csr(p_lap_id)
9890       LOOP
9891         IF child_lse_app_rec.application_status NOT IN ('CANCELED', 'WITHDRAWN')
9892         THEN
9893           l_return_status := OKL_API.G_RET_STS_ERROR;
9894           l_meaning := get_lookup_meaning('OKL_LEASE_APP_ACTION', 'RESUBMIT');
9895           OKL_API.SET_MESSAGE(
9896               p_app_name     => G_APP_NAME,
9897               p_msg_name     => 'OKL_SO_LSE_APP_APP_RESUB_ERR',
9898               p_token1       => 'ACTION',
9899               p_token1_value => l_meaning,
9900               p_token2       => 'TEXT',
9901               p_token2_value => lse_app_dtls_rec.reference_number);
9902           RAISE OKL_API.G_EXCEPTION_ERROR;
9903           RAISE OKL_API.G_EXCEPTION_ERROR;
9904         END IF;
9905       END LOOP;
9906     END IF;
9907 
9908     IF(p_action = 'CANCEL')
9909     THEN
9910       FOR child_lse_app_rec IN child_lse_app_csr(p_lap_id)
9911       LOOP
9912         IF child_lse_app_rec.application_status <> 'CANCELED'
9913         THEN
9914           l_return_status := OKL_API.G_RET_STS_ERROR;
9915           OKL_API.SET_MESSAGE(
9916               p_app_name     => G_APP_NAME,
9917               p_msg_name     => 'OKL_SO_LSE_APP_CANCEL_ERR',
9918               p_token1       => 'TEXT',
9919               p_token1_value => lse_app_dtls_rec.reference_number);
9920           RAISE OKL_API.G_EXCEPTION_ERROR;
9921         END IF;
9922       END LOOP;
9923     END IF;
9924 
9925     IF(p_action = 'WITHDRAW')
9926     THEN
9927       FOR child_lse_app_rec IN child_lse_app_csr(p_lap_id)
9928       LOOP
9929         IF child_lse_app_rec.application_status IN ('APPEALINPROG', 'RESUBMITINPROG')
9930         THEN
9931           l_return_status := OKL_API.G_RET_STS_ERROR;
9932           l_meaning := get_lookup_meaning('OKL_LEASE_APP_ACTION', 'WITHDRAW');
9933           OKL_API.SET_MESSAGE(
9934               p_app_name     => G_APP_NAME,
9935               p_msg_name     => 'OKL_SO_LSE_APP_IN_PROG_ERR',
9936               p_token1       => 'ACTION',
9937               p_token1_value => l_meaning,
9938               p_token2       => 'TEXT',
9939               p_token2_value => lse_app_dtls_rec.reference_number);
9940           RAISE OKL_API.G_EXCEPTION_ERROR;
9941         END IF;
9942       END LOOP;
9943     END IF;
9944 
9945     IF(p_action = 'CRECON')
9946     THEN
9947            -- Bug# 7140398 - Start
9948            -- Donot allow convertion to contract in case the primary quote is Credit Declined.
9949            IF (is_primary_quote_declined(p_lap_id)) THEN
9950          l_return_status := OKL_API.G_RET_STS_ERROR;
9951          OKL_API.SET_MESSAGE(
9952              p_app_name      => G_APP_NAME,
9953              p_msg_name      => 'OKL_SO_DEC_OFFER_TO_CHR_ERR');
9954          RAISE OKL_API.G_EXCEPTION_ERROR;
9955            END IF;
9956            -- Bug# 7140398 - End
9957 
9958       FOR child_lse_app_rec IN child_lse_app_csr(p_lap_id)
9959       LOOP
9960         IF child_lse_app_rec.application_status IN ('APPEALINPROG', 'RESUBMITINPROG')
9961         THEN
9962           l_return_status := OKL_API.G_RET_STS_ERROR;
9963           l_meaning := get_lookup_meaning('OKL_LEASE_APP_ACTION', 'CRECON');
9964           OKL_API.SET_MESSAGE(
9965               p_app_name     => G_APP_NAME,
9966               p_msg_name     => 'OKL_SO_LSE_APP_IN_PROG_ERR',
9967               p_token1       => 'ACTION',
9968               p_token1_value => l_meaning,
9969               p_token2       => 'TEXT',
9970               p_token2_value => lse_app_dtls_rec.reference_number);
9971           RAISE OKL_API.G_EXCEPTION_ERROR;
9972         END IF;
9973         IF child_lse_app_rec.application_status = 'CONV-K'
9974         THEN
9975           OPEN contract_dtls_csr(child_lse_app_rec.id);
9976           FETCH contract_dtls_csr INTO contract_dtls_rec;
9977           CLOSE contract_dtls_csr;
9978           l_return_status := OKL_API.G_RET_STS_ERROR;
9979           OKL_API.SET_MESSAGE(
9980               p_app_name     => G_APP_NAME,
9981               p_msg_name     => 'OKL_SO_LSE_APP_CRE_CON_ERR',
9982               p_token1       => 'CONTRACT_NUM',
9983               p_token1_value => contract_dtls_rec.contract_number,
9984               p_token2       => 'TEXT',
9985               p_token2_value => child_lse_app_rec.reference_number);
9986           RAISE OKL_API.G_EXCEPTION_ERROR;
9987         END IF;
9988       END LOOP;
9989       FOR parent_lse_app_rec IN parent_lse_app_csr(p_lap_id)
9990       LOOP
9991         IF parent_lse_app_rec.application_status = 'CONV-K'
9992         THEN
9993           OPEN contract_dtls_csr(parent_lse_app_rec.id);
9994           FETCH contract_dtls_csr INTO contract_dtls_rec;
9995           CLOSE contract_dtls_csr;
9996           l_return_status := OKL_API.G_RET_STS_ERROR;
9997           OKL_API.SET_MESSAGE(
9998               p_app_name     => G_APP_NAME,
9999               p_msg_name     => 'OKL_SO_LSE_APP_CRE_CON_ERR',
10000               p_token1       => 'CONTRACT_NUM',
10001               p_token1_value => contract_dtls_rec.contract_number,
10002               p_token2       => 'TEXT',
10003               p_token2_value => parent_lse_app_rec.reference_number);
10004           RAISE OKL_API.G_EXCEPTION_ERROR;
10005         END IF;
10006       END LOOP;
10007     END IF;
10008 
10009     x_return_status := l_return_status;
10010     OKL_API.END_ACTIVITY(
10011         x_msg_count => x_msg_count
10012        ,x_msg_data  => x_msg_data);
10013   EXCEPTION
10014     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10015       --Check if Child Lease App cursor is open
10016       IF child_lse_app_csr%ISOPEN
10017       THEN
10018         CLOSE child_lse_app_csr;
10019       END IF;
10020       --Check if Parent Lease App cursor is open
10021       IF parent_lse_app_csr%ISOPEN
10022       THEN
10023         CLOSE parent_lse_app_csr;
10024       END IF;
10025       --Check if Credit Recommendation cursor is open
10026       IF credit_recom_csr%ISOPEN
10027       THEN
10028         CLOSE credit_recom_csr;
10029       END IF;
10030       --Check if Appeal Exp Date cursor is open
10031       IF appeal_exp_date_csr%ISOPEN
10032       THEN
10033         CLOSE appeal_exp_date_csr;
10034       END IF;
10035       --Check if Contract Details cursor is open
10036       IF contract_dtls_csr%ISOPEN
10037       THEN
10038         CLOSE contract_dtls_csr;
10039       END IF;
10040       --Check if Lease App details cursor is open
10041       IF lse_app_dtls_csr%ISOPEN
10042       THEN
10043         CLOSE lse_app_dtls_csr;
10044       END IF;
10045       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10046                            p_api_name  => l_api_name,
10047                            p_pkg_name  => G_PKG_NAME,
10048                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
10049                            x_msg_count => x_msg_count,
10050                            x_msg_data  => x_msg_data,
10051                            p_api_type  => G_API_TYPE);
10052     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10053       --Check if Child Lease App cursor is open
10054       IF child_lse_app_csr%ISOPEN
10055       THEN
10056         CLOSE child_lse_app_csr;
10057       END IF;
10058       --Check if Parent Lease App cursor is open
10059       IF parent_lse_app_csr%ISOPEN
10060       THEN
10061         CLOSE parent_lse_app_csr;
10062       END IF;
10063       --Check if Credit Recommendation cursor is open
10064       IF credit_recom_csr%ISOPEN
10065       THEN
10066         CLOSE credit_recom_csr;
10067       END IF;
10068       --Check if Appeal Exp Date cursor is open
10069       IF appeal_exp_date_csr%ISOPEN
10070       THEN
10071         CLOSE appeal_exp_date_csr;
10072       END IF;
10073       --Check if Contract Details cursor is open
10074       IF contract_dtls_csr%ISOPEN
10075       THEN
10076         CLOSE contract_dtls_csr;
10077       END IF;
10078       --Check if Lease App details cursor is open
10079       IF lse_app_dtls_csr%ISOPEN
10080       THEN
10081         CLOSE lse_app_dtls_csr;
10082       END IF;
10083       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10084                            p_api_name  => l_api_name,
10085                            p_pkg_name  => G_PKG_NAME,
10086                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10087                            x_msg_count => x_msg_count,
10088                            x_msg_data  => x_msg_data,
10089                            p_api_type  => G_API_TYPE);
10090     WHEN OTHERS THEN
10091       --Check if Child Lease App cursor is open
10092       IF child_lse_app_csr%ISOPEN
10093       THEN
10094         CLOSE child_lse_app_csr;
10095       END IF;
10096       --Check if Parent Lease App cursor is open
10097       IF parent_lse_app_csr%ISOPEN
10098       THEN
10099         CLOSE parent_lse_app_csr;
10100       END IF;
10101       --Check if Credit Recommendation cursor is open
10102       IF credit_recom_csr%ISOPEN
10103       THEN
10104         CLOSE credit_recom_csr;
10105       END IF;
10106       --Check if Appeal Exp Date cursor is open
10107       IF appeal_exp_date_csr%ISOPEN
10108       THEN
10109         CLOSE appeal_exp_date_csr;
10110       END IF;
10111       --Check if Contract Details cursor is open
10112       IF contract_dtls_csr%ISOPEN
10113       THEN
10114         CLOSE contract_dtls_csr;
10115       END IF;
10116       --Check if Lease App details cursor is open
10117       IF lse_app_dtls_csr%ISOPEN
10118       THEN
10119         CLOSE lse_app_dtls_csr;
10120       END IF;
10121       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10122                            p_api_name  => l_api_name,
10123                            p_pkg_name  => G_PKG_NAME,
10124                            p_exc_name  => 'OTHERS',
10125                            x_msg_count => x_msg_count,
10126                            x_msg_data  => x_msg_data,
10127                            p_api_type  => G_API_TYPE);
10128   END check_eligibility;
10129 
10130   ------------------------------------------------------------------------------
10131   -- PROCEDURE lease_app_qa_val
10132   ------------------------------------------------------------------------------
10133   -- Start of comments
10134   --
10135   -- Procedure Name  : lease_app_qa_val
10136   -- Description     : This procedure calls qa validation for lease application.
10137   -- Business Rules  : This procedure calls qa validation for lease application.
10138   -- Parameters      :
10139   -- Version         : 1.0
10140   -- History         : 26-Oct-2005 PAGARG created
10141   --
10142   -- End of comments
10143   PROCEDURE lease_app_qa_val(
10144             p_api_version        IN  NUMBER,
10145             p_init_msg_list      IN  VARCHAR2,
10146             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
10147 			x_return_status      OUT NOCOPY VARCHAR2,
10148             x_msg_count          OUT NOCOPY NUMBER,
10149             x_msg_data           OUT NOCOPY VARCHAR2,
10150             x_qa_result          OUT NOCOPY VARCHAR2)
10151   IS
10152     -- Variables Declarations
10153     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
10154     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_QA_VAL';
10155     l_return_status            VARCHAR2(1);
10156   BEGIN
10157     l_return_status := OKL_API.G_RET_STS_SUCCESS;
10158     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_QA_VAL';
10159 
10160     -- check for logging on PROCEDURE level
10161     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
10162     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
10163     -- check for logging on STATEMENT level
10164     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
10165 
10166     -- call START_ACTIVITY to create savepoint, check compatibility
10167     -- and initialize message list
10168     l_return_status := OKL_API.START_ACTIVITY(
10169                            p_api_name      => l_api_name
10170                           ,p_pkg_name      => G_PKG_NAME
10171                           ,p_init_msg_list => p_init_msg_list
10172                           ,l_api_version   => l_api_version
10173                           ,p_api_version   => p_api_version
10174                           ,p_api_type      => G_API_TYPE
10175                           ,x_return_status => l_return_status);
10176 
10177     -- check if activity started successfully
10178     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10179       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10180     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
10181       RAISE OKL_API.G_EXCEPTION_ERROR;
10182     END IF;
10183 
10184     --QA Checker integration
10185     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10186     THEN
10187       OKL_DEBUG_PUB.LOG_DEBUG(
10188           FND_LOG.LEVEL_PROCEDURE
10189          ,L_MODULE
10190          ,'begin debug call OKL_SALES_QUOTE_QA_PVT.RUN_QA_CHECKER');
10191     END IF;
10192 
10193     OKL_SALES_QUOTE_QA_PVT.RUN_QA_CHECKER(
10194         p_api_version            => p_api_version
10195        ,p_init_msg_list          => OKL_API.G_FALSE
10196        ,p_object_type            => 'LEASEAPP'
10197        ,p_object_id              => p_lap_id
10198        ,x_qa_result              => x_qa_result
10199        ,x_return_status          => l_return_status
10200        ,x_msg_count              => x_msg_count
10201        ,x_msg_data               => x_msg_data);
10202 
10203     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10204     THEN
10205       OKL_DEBUG_PUB.LOG_DEBUG(
10206           FND_LOG.LEVEL_PROCEDURE
10207          ,L_MODULE
10208          ,'end debug call OKL_SALES_QUOTE_QA_PVT.RUN_QA_CHECKER');
10209     END IF;
10210 
10211     -- write to log
10212     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10213       OKL_DEBUG_PUB.LOG_DEBUG(
10214           FND_LOG.LEVEL_STATEMENT
10215          ,L_MODULE || ' Result of OKL_SALES_QUOTE_QA_PVT.RUN_QA_CHECKER'
10216          ,'l_return_status ' || l_return_status);
10217     END IF; -- end of statement level debug
10218 
10219     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10220       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10221     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10222       RAISE OKL_API.G_EXCEPTION_ERROR;
10223     END IF;
10224     --End of Validatation API call
10225 
10226     x_return_status := l_return_status;
10227 
10228     OKL_API.END_ACTIVITY(
10229          x_msg_count    => x_msg_count
10230         ,x_msg_data	    => x_msg_data);
10231   EXCEPTION
10232     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10233       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10234                            p_api_name  => l_api_name,
10235                            p_pkg_name  => G_PKG_NAME,
10236                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
10237                            x_msg_count => x_msg_count,
10238                            x_msg_data  => x_msg_data,
10239                            p_api_type  => G_API_TYPE);
10240 
10241     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10242       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10243                            p_api_name  => l_api_name,
10244                            p_pkg_name  => G_PKG_NAME,
10245                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10246                            x_msg_count => x_msg_count,
10247                            x_msg_data  => x_msg_data,
10248                            p_api_type  => G_API_TYPE);
10249 
10250     WHEN OTHERS THEN
10251       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10252                            p_api_name  => l_api_name,
10253                            p_pkg_name  => G_PKG_NAME,
10254                            p_exc_name  => 'OTHERS',
10255                            x_msg_count => x_msg_count,
10256                            x_msg_data  => x_msg_data,
10257                            p_api_type  => G_API_TYPE);
10258   END lease_app_qa_val;
10259 
10260   ------------------------------------------------------------------------------
10261   -- PROCEDURE lease_app_price
10262   ------------------------------------------------------------------------------
10263   -- Start of comments
10264   --
10265   -- Procedure Name  : lease_app_price
10266   -- Description     : This procedure calls api to price lease application.
10267   -- Business Rules  : This procedure calls api to price lease application.
10268   -- Parameters      :
10269   -- Version         : 1.0
10270   -- History         : 26-Oct-2005 PAGARG created
10271   --
10272   -- End of comments
10273   PROCEDURE lease_app_price(
10274             p_api_version        IN  NUMBER,
10275             p_init_msg_list      IN  VARCHAR2,
10276             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
10277 			x_return_status      OUT NOCOPY VARCHAR2,
10278             x_msg_count          OUT NOCOPY NUMBER,
10279             x_msg_data           OUT NOCOPY VARCHAR2)
10280   IS
10281     -- Variables Declarations
10282     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
10283     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_PRICE';
10284     l_return_status            VARCHAR2(1);
10285 
10286     -- Bug#4741121 - viselvar  - Modified - Start
10287     l_parameter_list  wf_parameter_list_t;
10288     p_event_name      VARCHAR2(240) :='oracle.apps.okl.sales.leaseapplication.priced';
10289     -- Bug#4741121 - viselvar  - Modified - End
10290 
10291     --Cursor to obtain the details of lease quote line of Lease App
10292     CURSOR l_lsq_dtls_csr(p_lap_id NUMBER)
10293 	IS
10294       SELECT LSQ.ID LSQ_ID
10295            , LSQ.STATUS STATUS
10296       FROM OKL_LEASE_QUOTES_B LSQ
10297       WHERE LSQ.PARENT_OBJECT_CODE = 'LEASEAPP'
10298         AND LSQ.PRIMARY_QUOTE= 'Y'
10299         AND LSQ.PARENT_OBJECT_ID = p_lap_id;
10300     l_lsq_dtls_rec l_lsq_dtls_csr%ROWTYPE;
10301 
10302   BEGIN
10303     l_return_status := OKL_API.G_RET_STS_SUCCESS;
10304     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_PRICE';
10305 
10306     -- check for logging on PROCEDURE level
10307     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
10308     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
10309     -- check for logging on STATEMENT level
10310     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
10311 
10312     -- call START_ACTIVITY to create savepoint, check compatibility
10313     -- and initialize message list
10314     l_return_status := OKL_API.START_ACTIVITY(
10315                            p_api_name      => l_api_name
10316                           ,p_pkg_name      => G_PKG_NAME
10317                           ,p_init_msg_list => p_init_msg_list
10318                           ,l_api_version   => l_api_version
10319                           ,p_api_version   => p_api_version
10320                           ,p_api_type      => G_API_TYPE
10321                           ,x_return_status => l_return_status);
10322 
10323     -- check if activity started successfully
10324     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10325       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10326     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
10327       RAISE OKL_API.G_EXCEPTION_ERROR;
10328     END IF;
10329 
10330     --Obtain the details of Lease Quote line of Lease App
10331     OPEN l_lsq_dtls_csr(p_lap_id);
10332     FETCH l_lsq_dtls_csr INTO l_lsq_dtls_rec;
10333     CLOSE l_lsq_dtls_csr;
10334 
10335     --Pricing Validation
10336     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10337     THEN
10338       OKL_DEBUG_PUB.LOG_DEBUG(
10339           FND_LOG.LEVEL_PROCEDURE
10340          ,L_MODULE
10341          ,'begin debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
10342     END IF;
10343 
10344     OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE(
10345         p_api_version            => p_api_version
10346        ,p_init_msg_list          => OKL_API.G_FALSE
10347        ,p_qte_id                 => l_lsq_dtls_rec.lsq_id
10348        ,x_return_status          => l_return_status
10349        ,x_msg_count              => x_msg_count
10350        ,x_msg_data               => x_msg_data);
10351 
10352     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10353     THEN
10354       OKL_DEBUG_PUB.LOG_DEBUG(
10355           FND_LOG.LEVEL_PROCEDURE
10356          ,L_MODULE
10357          ,'end debug call OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE');
10358     END IF;
10359 
10360     -- write to log
10361     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10362       OKL_DEBUG_PUB.LOG_DEBUG(
10363           FND_LOG.LEVEL_STATEMENT
10364          ,L_MODULE || ' Result of OKL_PRICING_UTILS_PVT.PRICE_STANDARD_QUOTE'
10365          ,'l_return_status ' || l_return_status);
10366     END IF; -- end of statement level debug
10367 
10368     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10369       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10370     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10371       RAISE OKL_API.G_EXCEPTION_ERROR;
10372     END IF;
10373     --End of Pricing API call
10374 
10375     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10376     THEN
10377       OKL_DEBUG_PUB.LOG_DEBUG(
10378           FND_LOG.LEVEL_PROCEDURE
10379          ,L_MODULE
10380          ,'begin debug call SET_LEASE_APP_STATUS');
10381     END IF;
10382 
10383     SET_LEASE_APP_STATUS(
10384         p_api_version           => p_api_version
10385        ,p_init_msg_list         => OKL_API.G_FALSE
10386        ,p_lap_id                => p_lap_id
10387        ,p_lap_status            => 'PR-COMPLETE'
10388        ,x_return_status         => l_return_status
10389        ,x_msg_count             => x_msg_count
10390        ,x_msg_data              => x_msg_data);
10391 
10392     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10393     THEN
10394       OKL_DEBUG_PUB.LOG_DEBUG(
10395           FND_LOG.LEVEL_PROCEDURE
10396          ,L_MODULE
10397          ,'end debug call SET_LEASE_APP_STATUS');
10398     END IF;
10399 
10400     -- write to log
10401     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10402       OKL_DEBUG_PUB.LOG_DEBUG(
10403           FND_LOG.LEVEL_STATEMENT
10404          ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
10405          ,'l_return_status ' || l_return_status);
10406     END IF; -- end of statement level debug
10407 
10408     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10409       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10410     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10411       RAISE OKL_API.G_EXCEPTION_ERROR;
10412     END IF;
10413 
10414     -- Bug#4741121 - viselvar  - Modified - Start
10415     -- raise the business event passing the Lease Application id added to the parameter list
10416     wf_event.addparametertolist('LAPP_ID'
10417                                ,p_lap_id
10418                                ,l_parameter_list);
10419 
10420     okl_wf_pvt.raise_event(  p_api_version   =>            p_api_version
10421                             ,p_init_msg_list =>            p_init_msg_list
10422                             ,x_return_status =>            l_return_status
10423                             ,x_msg_count     =>            x_msg_count
10424                             ,x_msg_data      =>            x_msg_data
10425                             ,p_event_name    =>            p_event_name
10426                             ,p_parameters    =>            l_parameter_list);
10427 
10428 
10429     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10430       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10431     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10432       RAISE OKL_API.G_EXCEPTION_ERROR;
10433     END IF;
10434 
10435     -- Bug#4741121 - viselvar  - Modified - End
10436     x_return_status := l_return_status;
10437 
10438     OKL_API.END_ACTIVITY(
10439          x_msg_count    => x_msg_count
10440         ,x_msg_data	    => x_msg_data);
10441   EXCEPTION
10442     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10443       --Check if Lease Quote cursor is open
10444       IF l_lsq_dtls_csr%ISOPEN
10445       THEN
10446         CLOSE l_lsq_dtls_csr;
10447       END IF;
10448       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10449                            p_api_name  => l_api_name,
10450                            p_pkg_name  => G_PKG_NAME,
10451                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
10452                            x_msg_count => x_msg_count,
10453                            x_msg_data  => x_msg_data,
10454                            p_api_type  => G_API_TYPE);
10455 
10456     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10457       --Check if Lease Quote cursor is open
10458       IF l_lsq_dtls_csr%ISOPEN
10459       THEN
10460         CLOSE l_lsq_dtls_csr;
10461       END IF;
10462       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10463                            p_api_name  => l_api_name,
10464                            p_pkg_name  => G_PKG_NAME,
10465                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10466                            x_msg_count => x_msg_count,
10467                            x_msg_data  => x_msg_data,
10468                            p_api_type  => G_API_TYPE);
10469     WHEN OTHERS THEN
10470       --Check if Lease Quote cursor is open
10471       IF l_lsq_dtls_csr%ISOPEN
10472       THEN
10473         CLOSE l_lsq_dtls_csr;
10474       END IF;
10475       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10476                            p_api_name  => l_api_name,
10477                            p_pkg_name  => G_PKG_NAME,
10478                            p_exc_name  => 'OTHERS',
10479                            x_msg_count => x_msg_count,
10480                            x_msg_data  => x_msg_data,
10481                            p_api_type  => G_API_TYPE);
10482   END lease_app_price;
10483 
10484   ------------------------------------------------------------------------------
10485   -- PROCEDURE set_lease_app_status
10486   ------------------------------------------------------------------------------
10487   -- Start of comments
10488   --
10489   -- Procedure Name  : set_lease_app_status
10490   -- Description     : This procedure sets the required lease application status.
10491   --                   THIS PROCEDURE IS ONLY FOR OKL INTERNAL DEVELOPMENT PURPOSE
10492   -- Business Rules  : This procedure sets the required lease application status.
10493   -- Parameters      :
10494   -- Version         : 1.0
10495   -- History         : 15-Nov-2005 PAGARG created Bug 4721142
10496   --
10497   -- End of comments
10498   PROCEDURE set_lease_app_status(
10499             p_api_version        IN  NUMBER,
10500             p_init_msg_list      IN  VARCHAR2,
10501             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
10502             p_lap_status         IN  VARCHAR2,
10503 			x_return_status      OUT NOCOPY VARCHAR2,
10504             x_msg_count          OUT NOCOPY NUMBER,
10505             x_msg_data           OUT NOCOPY VARCHAR2)
10506   IS
10507     -- Variables Declarations
10508     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
10509     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'SET_LEASE_APP_STATUS';
10510     l_return_status            VARCHAR2(1);
10511 
10512     -- Record/Table Type Declarations
10513     l_lapv_rec		lapv_rec_type;
10514     x_lapv_rec		lapv_rec_type;
10515     x_lsqv_rec      lsqv_rec_type;
10516 
10517   BEGIN
10518     l_return_status := OKL_API.G_RET_STS_SUCCESS;
10519     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.SET_LEASE_APP_STATUS';
10520 
10521     -- check for logging on PROCEDURE level
10522     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
10523     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
10524     -- check for logging on STATEMENT level
10525     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
10526 
10527     -- call START_ACTIVITY to create savepoint, check compatibility
10528     -- and initialize message list
10529     l_return_status := OKL_API.START_ACTIVITY(
10530                            p_api_name      => l_api_name
10531                           ,p_pkg_name      => G_PKG_NAME
10532                           ,p_init_msg_list => p_init_msg_list
10533                           ,l_api_version   => l_api_version
10534                           ,p_api_version   => p_api_version
10535                           ,p_api_type      => G_API_TYPE
10536                           ,x_return_status => l_return_status);
10537 
10538     -- check if activity started successfully
10539     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10540       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10541     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
10542       RAISE OKL_API.G_EXCEPTION_ERROR;
10543     END IF;
10544 
10545     --Populate Lease Application rec with the values from database.
10546     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10547     THEN
10548       OKL_DEBUG_PUB.LOG_DEBUG(
10549           FND_LOG.LEVEL_PROCEDURE
10550          ,L_MODULE
10551          ,'begin debug call POPULATE_LEASE_APP');
10552     END IF;
10553 
10554     POPULATE_LEASE_APP(
10555         p_api_version           => p_api_version
10556        ,p_init_msg_list         => OKL_API.G_FALSE
10557        ,x_return_status         => l_return_status
10558        ,x_msg_count             => x_msg_count
10559        ,x_msg_data              => x_msg_data
10560        ,p_lap_id                => p_lap_id
10561        ,x_lapv_rec              => x_lapv_rec
10562        ,x_lsqv_rec              => x_lsqv_rec);
10563 
10564     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10565     THEN
10566       OKL_DEBUG_PUB.LOG_DEBUG(
10567           FND_LOG.LEVEL_PROCEDURE
10568          ,L_MODULE
10569          ,'end debug call POPULATE_LEASE_APP');
10570     END IF;
10571 
10572     -- write to log
10573     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10574       OKL_DEBUG_PUB.LOG_DEBUG(
10575           FND_LOG.LEVEL_STATEMENT
10576          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
10577          ,'l_return_status ' || l_return_status);
10578     END IF; -- end of statement level debug
10579 
10580     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10581       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10582     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10583       RAISE OKL_API.G_EXCEPTION_ERROR;
10584     END IF;
10585 
10586     l_lapv_rec := x_lapv_rec;
10587     l_lapv_rec.application_status := p_lap_status;
10588 
10589     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10590     THEN
10591       OKL_DEBUG_PUB.LOG_DEBUG(
10592           FND_LOG.LEVEL_PROCEDURE
10593          ,L_MODULE
10594          ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
10595     END IF;
10596 
10597     OKL_LAP_PVT.UPDATE_ROW(
10598         p_api_version           => p_api_version
10599        ,p_init_msg_list         => OKL_API.G_FALSE
10600        ,x_return_status         => l_return_status
10601        ,x_msg_count             => x_msg_count
10602        ,x_msg_data              => x_msg_data
10603        ,p_lapv_rec              => l_lapv_rec
10604        ,x_lapv_rec              => x_lapv_rec);
10605 
10606     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10607     THEN
10608       OKL_DEBUG_PUB.LOG_DEBUG(
10609           FND_LOG.LEVEL_PROCEDURE
10610          ,L_MODULE
10611          ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
10612     END IF;
10613 
10614     -- write to log
10615     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10616       OKL_DEBUG_PUB.LOG_DEBUG(
10617           FND_LOG.LEVEL_STATEMENT
10618          ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
10619          ,'l_return_status ' || l_return_status);
10620     END IF; -- end of statement level debug
10621 
10622     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10623       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10624     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10625       RAISE OKL_API.G_EXCEPTION_ERROR;
10626     END IF;
10627 
10628     x_return_status := l_return_status;
10629 
10630     OKL_API.END_ACTIVITY(
10631          x_msg_count    => x_msg_count
10632         ,x_msg_data	    => x_msg_data);
10633   EXCEPTION
10634     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10635       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10636                            p_api_name  => l_api_name,
10637                            p_pkg_name  => G_PKG_NAME,
10638                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
10639                            x_msg_count => x_msg_count,
10640                            x_msg_data  => x_msg_data,
10641                            p_api_type  => G_API_TYPE);
10642 
10643     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10644       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10645                            p_api_name  => l_api_name,
10646                            p_pkg_name  => G_PKG_NAME,
10647                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10648                            x_msg_count => x_msg_count,
10649                            x_msg_data  => x_msg_data,
10650                            p_api_type  => G_API_TYPE);
10651 
10652     WHEN OTHERS THEN
10653       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10654                            p_api_name  => l_api_name,
10655                            p_pkg_name  => G_PKG_NAME,
10656                            p_exc_name  => 'OTHERS',
10657                            x_msg_count => x_msg_count,
10658                            x_msg_data  => x_msg_data,
10659                            p_api_type  => G_API_TYPE);
10660   END set_lease_app_status;
10661 
10662   --BEGIN-VARANGAN-for bug4747179
10663   ------------------------------------------------------------------------------
10664   -- PROCEDURE set_lease_app_expdays
10665   ------------------------------------------------------------------------------
10666   -- Start of comments
10667   --
10668   -- Procedure Name  : set_lease_app_expdays
10669   -- Description     : This procedure sets the required lease application expiration status
10670   --                   THIS PROCEDURE IS ONLY FOR OKL INTERNAL DEVELOPMENT PURPOSE
10671   -- Business Rules  : This procedure sets the required credit expiration date.
10672   -- Parameters      :
10673   -- Version         : 1.0
10674   -- History         : 18-Nov-2005 VARANGAN created Bug#4747179
10675   --
10676   -- End of comments
10677   PROCEDURE set_lease_app_expdays(
10678             p_api_version        IN  NUMBER,
10679             p_init_msg_list      IN  VARCHAR2,
10680             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
10681             p_lap_expdays        IN  NUMBER,
10682 			x_return_status      OUT NOCOPY VARCHAR2,
10683             x_msg_count          OUT NOCOPY NUMBER,
10684             x_msg_data           OUT NOCOPY VARCHAR2)
10685   IS
10686     -- Variables Declarations
10687     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
10688     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'SET_LEASE_APP_EXPDAYS';
10689     l_return_status            VARCHAR2(1);
10690 
10691     -- Record/Table Type Declarations
10692     l_lapv_rec		lapv_rec_type;
10693     x_lapv_rec		lapv_rec_type;
10694     x_lsqv_rec      lsqv_rec_type;
10695 
10696   BEGIN
10697     l_return_status := OKL_API.G_RET_STS_SUCCESS;
10698     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.SET_LEASE_APP_EXPDAYS';
10699 
10700     -- check for logging on PROCEDURE level
10701     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
10702     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
10703     -- check for logging on STATEMENT level
10704     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
10705 
10706     -- call START_ACTIVITY to create savepoint, check compatibility
10707     -- and initialize message list
10708     l_return_status := OKL_API.START_ACTIVITY(
10709                            p_api_name      => l_api_name
10710                           ,p_pkg_name      => G_PKG_NAME
10711                           ,p_init_msg_list => p_init_msg_list
10712                           ,l_api_version   => l_api_version
10713                           ,p_api_version   => p_api_version
10714                           ,p_api_type      => G_API_TYPE
10715                           ,x_return_status => l_return_status);
10716 
10717     -- check if activity started successfully
10718     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10719       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10720     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
10721       RAISE OKL_API.G_EXCEPTION_ERROR;
10722     END IF;
10723 
10724     --Populate Lease Application rec with the values from database.
10725     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10726     THEN
10727       OKL_DEBUG_PUB.LOG_DEBUG(
10728           FND_LOG.LEVEL_PROCEDURE
10729          ,L_MODULE
10730          ,'begin debug call POPULATE_LEASE_APP');
10731     END IF;
10732 
10733     POPULATE_LEASE_APP(
10734         p_api_version           => p_api_version
10735        ,p_init_msg_list         => OKL_API.G_FALSE
10736        ,x_return_status         => l_return_status
10737        ,x_msg_count             => x_msg_count
10738        ,x_msg_data              => x_msg_data
10739        ,p_lap_id                => p_lap_id
10740        ,x_lapv_rec              => x_lapv_rec
10741        ,x_lsqv_rec              => x_lsqv_rec);
10742 
10743     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10744     THEN
10745       OKL_DEBUG_PUB.LOG_DEBUG(
10746           FND_LOG.LEVEL_PROCEDURE
10747          ,L_MODULE
10748          ,'end debug call POPULATE_LEASE_APP');
10749     END IF;
10750 
10751     -- write to log
10752     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10753       OKL_DEBUG_PUB.LOG_DEBUG(
10754           FND_LOG.LEVEL_STATEMENT
10755          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
10756          ,'l_return_status ' || l_return_status);
10757     END IF; -- end of statement level debug
10758 
10759     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10760       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10761     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10762       RAISE OKL_API.G_EXCEPTION_ERROR;
10763     END IF;
10764 
10765     l_lapv_rec := x_lapv_rec;
10766     l_lapv_rec.cr_exp_days := p_lap_expdays;
10767 
10768     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10769     THEN
10770       OKL_DEBUG_PUB.LOG_DEBUG(
10771           FND_LOG.LEVEL_PROCEDURE
10772          ,L_MODULE
10773          ,'begin debug call OKL_LAP_PVT.UPDATE_ROW');
10774     END IF;
10775 
10776     OKL_LAP_PVT.UPDATE_ROW(
10777         p_api_version           => p_api_version
10778        ,p_init_msg_list         => OKL_API.G_FALSE
10779        ,x_return_status         => l_return_status
10780        ,x_msg_count             => x_msg_count
10781        ,x_msg_data              => x_msg_data
10782        ,p_lapv_rec              => l_lapv_rec
10783        ,x_lapv_rec              => x_lapv_rec);
10784 
10785     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
10786     THEN
10787       OKL_DEBUG_PUB.LOG_DEBUG(
10788           FND_LOG.LEVEL_PROCEDURE
10789          ,L_MODULE
10790          ,'end debug call OKL_LAP_PVT.UPDATE_ROW');
10791     END IF;
10792 
10793     -- write to log
10794     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
10795       OKL_DEBUG_PUB.LOG_DEBUG(
10796           FND_LOG.LEVEL_STATEMENT
10797          ,L_MODULE || ' Result of OKL_LAP_PVT.UPDATE_ROW'
10798          ,'l_return_status ' || l_return_status);
10799     END IF; -- end of statement level debug
10800 
10801     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
10802       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10803     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
10804       RAISE OKL_API.G_EXCEPTION_ERROR;
10805     END IF;
10806 
10807     x_return_status := l_return_status;
10808 
10809     OKL_API.END_ACTIVITY(
10810          x_msg_count    => x_msg_count
10811         ,x_msg_data	    => x_msg_data);
10812   EXCEPTION
10813     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10814       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10815                            p_api_name  => l_api_name,
10816                            p_pkg_name  => G_PKG_NAME,
10817                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
10818                            x_msg_count => x_msg_count,
10819                            x_msg_data  => x_msg_data,
10820                            p_api_type  => G_API_TYPE);
10821 
10822     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10823       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10824                            p_api_name  => l_api_name,
10825                            p_pkg_name  => G_PKG_NAME,
10826                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
10827                            x_msg_count => x_msg_count,
10828                            x_msg_data  => x_msg_data,
10829                            p_api_type  => G_API_TYPE);
10830 
10831     WHEN OTHERS THEN
10832       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10833                            p_api_name  => l_api_name,
10834                            p_pkg_name  => G_PKG_NAME,
10835                            p_exc_name  => 'OTHERS',
10836                            x_msg_count => x_msg_count,
10837                            x_msg_data  => x_msg_data,
10838                            p_api_type  => G_API_TYPE);
10839   END set_lease_app_expdays;
10840   --END-VARANGAN-for bug4747179
10841 
10842   ------------------------------------------------------------------------------
10843   -- FUNCTION is_curr_conv_valid
10844   ------------------------------------------------------------------------------
10845   -- Start of comments
10846   --
10847   -- Function Name   : is_curr_conv_valid
10848   -- Description     : This function validates Currency Conversion values and
10849   --                   returns Success or Error
10850   -- Business Rules  : This function validates Currency Conversion values and
10851   --                   returns Success or Error
10852   -- Parameters      :
10853   -- Version         : 1.0
10854   -- History         : 02-Feb-2006 PAGARG created Bug 4932155
10855   --
10856   -- End of comments
10857   FUNCTION is_curr_conv_valid(
10858            p_curr_code           IN VARCHAR2,
10859            p_curr_type           IN VARCHAR2,
10860            p_curr_rate           IN NUMBER,
10861            p_curr_date           IN DATE)
10862     RETURN VARCHAR2
10863   IS
10864     -- Variables Declarations
10865     l_func_curr_code        VARCHAR2(15);
10866     l_return_status         VARCHAR2(1);
10867     l_meaning               VARCHAR2(80);
10868   BEGIN
10869     l_return_status := OKL_API.G_RET_STS_SUCCESS;
10870     SELECT OKL_ACCOUNTING_UTIL.GET_FUNC_CURR_CODE INTO l_func_curr_code
10871     FROM DUAL;
10872 
10873     IF(p_curr_code IS NULL
10874        OR p_curr_code = OKL_API.G_MISS_CHAR)
10875     THEN
10876       l_return_status := OKL_API.G_RET_STS_ERROR;
10877       OKL_API.SET_MESSAGE(
10878           p_app_name      => G_APP_NAME,
10879           p_msg_name      => 'OKL_INVALID_CURRENCY');
10880       RETURN l_return_status;
10881     END IF;
10882 
10883     IF(l_func_curr_code IS NULL
10884        OR l_func_curr_code = OKL_API.G_MISS_CHAR)
10885     THEN
10886       l_return_status := OKL_API.G_RET_STS_ERROR;
10887       OKL_API.SET_MESSAGE(
10888           p_app_name      => G_APP_NAME,
10889           p_msg_name      => 'OKL_FUNC_CURR_NOT_FOUND');
10890       RETURN l_return_status;
10891     END IF;
10892 
10893     IF(p_curr_code <> l_func_curr_code)
10894     THEN
10895       IF(p_curr_type IS NULL
10896          OR p_curr_type = OKL_API.G_MISS_CHAR
10897 		 OR p_curr_type = 'NONE')
10898       THEN
10899         l_return_status := OKL_API.G_RET_STS_ERROR;
10900         OKL_API.SET_MESSAGE(
10901             p_app_name      => G_APP_NAME,
10902             p_msg_name      => 'OKL_BPD_PLS_ENT_CUR_TYPE');
10903         RETURN l_return_status;
10904       ELSE
10905         SELECT  USER_CONVERSION_TYPE
10906         INTO l_meaning
10907         FROM GL_DAILY_CONVERSION_TYPES
10908         WHERE CONVERSION_TYPE = p_curr_type;
10909 
10910         IF(l_meaning IS NULL)
10911         THEN
10912           l_return_status := OKL_API.G_RET_STS_ERROR;
10913           OKL_API.SET_MESSAGE(
10914               p_app_name      => G_APP_NAME,
10915               p_msg_name      => 'OKL_INVALID_CURR_CONV');
10916           RETURN l_return_status;
10917         END IF;
10918       END IF;-- Currency Conversion type check
10919       IF(p_curr_type IS  NOT NULL AND UPPER(p_curr_type) <> 'USER' )
10920       THEN
10921       -- bug 5148581 abhsaxen modify checking condition
10922       --replace or with and
10923         IF(p_curr_rate IS NOT NULL
10924            AND p_curr_rate <> OKL_API.G_MISS_NUM)
10925         THEN
10926           l_return_status := OKL_API.G_RET_STS_ERROR;
10927           OKL_API.SET_MESSAGE(
10928               p_app_name      => G_APP_NAME,
10929               p_msg_name      => 'OKL_LA_CONV_RATE_CHK');
10930           RETURN l_return_status;
10931         END IF;
10932         IF(p_curr_date IS NULL
10933            OR p_curr_date = OKL_API.G_MISS_DATE)
10934         THEN
10935           l_return_status := OKL_API.G_RET_STS_ERROR;
10936           OKL_API.SET_MESSAGE(
10937               p_app_name      => G_APP_NAME,
10938               p_msg_name      => 'OKL_CONVERSION_DATE_INVALID');
10939           RETURN l_return_status;
10940         END IF;
10941       ELSIF(UPPER(p_curr_type) = 'USER')
10942       THEN
10943         IF(p_curr_rate IS NULL
10944            OR p_curr_rate = OKL_API.G_MISS_NUM)
10945         THEN
10946           l_return_status := OKL_API.G_RET_STS_ERROR;
10947           OKL_API.SET_MESSAGE(
10948               p_app_name      => G_APP_NAME,
10949               p_msg_name      => 'OKL_BPD_USR_RTE_SUPPLIED');
10950           RETURN l_return_status;
10951         END IF;
10952         IF(p_curr_date IS NULL
10953            OR p_curr_date = OKL_API.G_MISS_DATE)
10954         THEN
10955           l_return_status := OKL_API.G_RET_STS_ERROR;
10956           OKL_API.SET_MESSAGE(
10957               p_app_name      => G_APP_NAME,
10958               p_msg_name      => 'OKL_CONVERSION_DATE_INVALID');
10959           RETURN l_return_status;
10960         END IF;
10961       END IF;--Check for different values for Conversion Type
10962     ELSE
10963       --Currency Conversion columns must not be populated
10964       IF((p_curr_type IS NOT NULL AND p_curr_type <> OKL_API.G_MISS_CHAR AND p_curr_type <> 'NONE') OR
10965          (p_curr_rate IS NOT NULL AND p_curr_rate <> OKL_API.G_MISS_NUM) OR
10966          (p_curr_date IS NOT NULL AND p_curr_date <> OKL_API.G_MISS_DATE))
10967       THEN
10968         l_return_status := OKL_API.G_RET_STS_ERROR;
10969         OKL_API.SET_MESSAGE(
10970             p_app_name      => G_APP_NAME,
10971             p_msg_name      => 'OKL_CURR_FUNC_CURR_SAME');
10972         RETURN l_return_status;
10973       END IF;
10974     END IF;--Functional Currency and Currency is same or not
10975 
10976     RETURN l_return_status;
10977   EXCEPTION
10978     WHEN OTHERS
10979     THEN
10980       OKL_API.SET_MESSAGE(
10981           p_app_name     => G_APP_NAME,
10982           p_msg_name     => G_UNEXPECTED_ERROR,
10983           p_token1       => G_SQLCODE_TOKEN,
10984           p_token1_value => SQLCODE,
10985           p_token2       => G_SQLERRM_TOKEN,
10986           p_token2_value => SQLERRM);
10987       RETURN OKL_API.G_RET_STS_ERROR;
10988   END is_curr_conv_valid;
10989 
10990   ------------------------------------------------------------------------------
10991   -- PROCEDURE lease_app_unaccept
10992   ------------------------------------------------------------------------------
10993   -- Start of comments
10994   --
10995   -- Procedure Name  : lease_app_unaccept
10996   -- Description     : This procedure unaccepts lease application.
10997   -- Business Rules  : This procedure unaccepts lease application
10998   -- Parameters      :
10999   -- Version         : 1.0
11000   -- History         : 07-Feb-2006 PAGARG created Bug 4905274
11001   --
11002   -- End of comments
11003   PROCEDURE lease_app_unaccept(
11004             p_api_version        IN  NUMBER,
11005             p_init_msg_list      IN  VARCHAR2,
11006             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
11007             x_return_status      OUT NOCOPY VARCHAR2,
11008             x_msg_count          OUT NOCOPY NUMBER,
11009             x_msg_data           OUT NOCOPY VARCHAR2)
11010   IS
11011     -- Variables Declarations
11012     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
11013     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'LEASE_APP_UNACCEPT';
11014     l_return_status            VARCHAR2(1);
11015 
11016     -- Record/Table Type Declarations
11017     l_lapv_rec		lapv_rec_type;
11018     l_lsqv_rec      lsqv_rec_type;
11019 
11020     --Cursor to obtain Lease Application Details
11021     CURSOR lse_app_dtls_csr(p_lse_app_id NUMBER)
11022     IS
11023       SELECT REFERENCE_NUMBER
11024         FROM OKL_LEASE_APPLICATIONS_B LAB
11025        WHERE LAB.ID = p_lse_app_id;
11026     lse_app_dtls_rec lse_app_dtls_csr%ROWTYPE;
11027   BEGIN
11028     l_return_status := OKL_API.G_RET_STS_SUCCESS;
11029     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.LEASE_APP_UNACCEPT';
11030 
11031     -- check for logging on PROCEDURE level
11032     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
11033     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
11034     -- check for logging on STATEMENT level
11035     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
11036 
11037     -- call START_ACTIVITY to create savepoint, check compatibility
11038     -- and initialize message list
11039     l_return_status := OKL_API.START_ACTIVITY(
11040                            p_api_name      => l_api_name
11041                           ,p_pkg_name      => G_PKG_NAME
11042                           ,p_init_msg_list => p_init_msg_list
11043                           ,l_api_version   => l_api_version
11044                           ,p_api_version   => p_api_version
11045                           ,p_api_type      => G_API_TYPE
11046                           ,x_return_status => l_return_status);
11047 
11048     -- check if activity started successfully
11049     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11050       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11051     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11052       RAISE OKL_API.G_EXCEPTION_ERROR;
11053     END IF;
11054 
11055     --Populate Lease Application rec with the values from database.
11056     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11057     THEN
11058       OKL_DEBUG_PUB.LOG_DEBUG(
11059           FND_LOG.LEVEL_PROCEDURE
11060          ,L_MODULE
11061          ,'begin debug call POPULATE_LEASE_APP');
11062     END IF;
11063 
11064     POPULATE_LEASE_APP(
11065         p_api_version           => p_api_version
11066        ,p_init_msg_list         => OKL_API.G_FALSE
11067        ,x_return_status         => l_return_status
11068        ,x_msg_count             => x_msg_count
11069        ,x_msg_data              => x_msg_data
11070        ,p_lap_id                => p_lap_id
11071        ,x_lapv_rec              => l_lapv_rec
11072        ,x_lsqv_rec              => l_lsqv_rec);
11073 
11074     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11075     THEN
11076       OKL_DEBUG_PUB.LOG_DEBUG(
11077           FND_LOG.LEVEL_PROCEDURE
11078          ,L_MODULE
11079          ,'end debug call POPULATE_LEASE_APP');
11080     END IF;
11081 
11082     -- write to log
11083     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11084       OKL_DEBUG_PUB.LOG_DEBUG(
11085           FND_LOG.LEVEL_STATEMENT
11086          ,L_MODULE || ' Result of POPULATE_LEASE_APP'
11087          ,'l_return_status ' || l_return_status);
11088     END IF; -- end of statement level debug
11089 
11090     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11091       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11092     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11093       RAISE OKL_API.G_EXCEPTION_ERROR;
11094     END IF;
11095 
11096     --Validate if Lease App is appealed lease app then unaccept is not allowed
11097     IF(l_lapv_rec.action = 'APPEAL')
11098     THEN
11099       OPEN lse_app_dtls_csr(l_lapv_rec.parent_leaseapp_id);
11100       FETCH lse_app_dtls_csr INTO lse_app_dtls_rec;
11101       CLOSE lse_app_dtls_csr;
11102 
11103       l_return_status := OKL_API.G_RET_STS_ERROR;
11104       OKL_API.SET_MESSAGE(
11105           p_app_name     => G_APP_NAME,
11106           p_msg_name     => 'OKL_SO_LSE_APP_UNACCEPT_ERR',
11107           p_token1       => 'LEASE_APP',
11108           p_token1_value => l_lapv_rec.reference_number,
11109           p_token2       => 'APL_LEASE_APP',
11110           p_token2_value => lse_app_dtls_rec.reference_number);
11111       RAISE OKL_API.G_EXCEPTION_ERROR;
11112     END IF;
11113 
11114     IF(l_lapv_rec.application_status = 'PR-ACCEPTED')
11115     THEN
11116       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11117       THEN
11118         OKL_DEBUG_PUB.LOG_DEBUG(
11119             FND_LOG.LEVEL_PROCEDURE
11120            ,L_MODULE
11121            ,'begin debug call SET_LEASE_APP_STATUS');
11122       END IF;
11123 
11124       SET_LEASE_APP_STATUS(
11125           p_api_version           => p_api_version
11126          ,p_init_msg_list         => OKL_API.G_FALSE
11127          ,p_lap_id                => p_lap_id
11128          ,p_lap_status            => 'PR-APPROVED'
11129          ,x_return_status         => l_return_status
11130          ,x_msg_count             => x_msg_count
11131          ,x_msg_data              => x_msg_data);
11132 
11133       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11134       THEN
11135         OKL_DEBUG_PUB.LOG_DEBUG(
11136             FND_LOG.LEVEL_PROCEDURE
11137            ,L_MODULE
11138            ,'end debug call SET_LEASE_APP_STATUS');
11139       END IF;
11140 
11141       -- write to log
11142       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11143         OKL_DEBUG_PUB.LOG_DEBUG(
11144             FND_LOG.LEVEL_STATEMENT
11145            ,L_MODULE || ' Result of SET_LEASE_APP_STATUS'
11146            ,'l_return_status ' || l_return_status);
11147       END IF; -- end of statement level debug
11148 
11149       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11150         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11151       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11152         RAISE OKL_API.G_EXCEPTION_ERROR;
11153       END IF;
11154 
11155       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11156       THEN
11157         OKL_DEBUG_PUB.LOG_DEBUG(
11158             FND_LOG.LEVEL_PROCEDURE
11159            ,L_MODULE
11160            ,'begin debug call OKL_LEASE_QUOTE_PVT.UNACCEPT_LEASE_QTE');
11161       END IF;
11162 
11163       -- call the procedure to unaccept lease quote
11164       OKL_LEASE_QUOTE_PVT.UNACCEPT_LEASE_QTE(
11165           p_api_version                => p_api_version
11166          ,p_init_msg_list              => OKL_API.G_FALSE
11167          ,p_transaction_control        => OKL_API.G_TRUE
11168          ,p_quote_id                   => l_lsqv_rec.id
11169          ,x_return_status              => l_return_status
11170          ,x_msg_count                  => x_msg_count
11171          ,x_msg_data                   => x_msg_data);
11172 
11173       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11174       THEN
11175         OKL_DEBUG_PUB.LOG_DEBUG(
11176             FND_LOG.LEVEL_PROCEDURE
11177            ,L_MODULE
11178            ,'end debug call OKL_LEASE_QUOTE_PVT.UNACCEPT_LEASE_QTE');
11179       END IF;
11180 
11181       -- write to log
11182       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11183         OKL_DEBUG_PUB.LOG_DEBUG(
11184             FND_LOG.LEVEL_STATEMENT
11185            ,L_MODULE || ' Result of OKL_LEASE_QUOTE_PVT.UNACCEPT_LEASE_QTE'
11186            ,' result status ' || l_return_status);
11187       END IF; -- end of statement level debug
11188 
11189       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11190         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11191       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11192         RAISE OKL_API.G_EXCEPTION_ERROR;
11193       END IF;
11194     END IF;
11195 
11196     x_return_status := l_return_status;
11197     OKL_API.END_ACTIVITY(
11198          x_msg_count    => x_msg_count
11199         ,x_msg_data	    => x_msg_data);
11200   EXCEPTION
11201     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11202       --Lease Application Details cursor
11203       IF lse_app_dtls_csr%ISOPEN
11204       THEN
11205         CLOSE lse_app_dtls_csr;
11206       END IF;
11207       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11208                            p_api_name  => l_api_name,
11209                            p_pkg_name  => G_PKG_NAME,
11210                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
11211                            x_msg_count => x_msg_count,
11212                            x_msg_data  => x_msg_data,
11213                            p_api_type  => G_API_TYPE);
11214     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11215       --Lease Application Details cursor
11216       IF lse_app_dtls_csr%ISOPEN
11217       THEN
11218         CLOSE lse_app_dtls_csr;
11219       END IF;
11220       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11221                            p_api_name  => l_api_name,
11222                            p_pkg_name  => G_PKG_NAME,
11223                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
11224                            x_msg_count => x_msg_count,
11225                            x_msg_data  => x_msg_data,
11226                            p_api_type  => G_API_TYPE);
11227     WHEN OTHERS THEN
11228       --Lease Application Details cursor
11229       IF lse_app_dtls_csr%ISOPEN
11230       THEN
11231         CLOSE lse_app_dtls_csr;
11232       END IF;
11233       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11234                            p_api_name  => l_api_name,
11235                            p_pkg_name  => G_PKG_NAME,
11236                            p_exc_name  => 'OTHERS',
11237                            x_msg_count => x_msg_count,
11238                            x_msg_data  => x_msg_data,
11239                            p_api_type  => G_API_TYPE);
11240   END lease_app_unaccept;
11241 
11242   ------------------------------------------------------------------------------
11243   -- PROCEDURE create_contract
11244   ------------------------------------------------------------------------------
11245   -- Start of comments
11246   --
11247   -- Procedure Name  : create_contract
11248   -- Description     : This procedure calls api to create contract from lease app.
11249   -- Business Rules  : This procedure calls api to create contract from lease app.
11250   -- Parameters      :
11251   -- Version         : 1.0
11252   -- History         : 15-Feb-2006 PAGARG created Bug 4930634
11253   --                 : This wrapper is created to perform validations before
11254   --                   converting Lease App to Contract
11255   -- End of comments
11256   PROCEDURE create_contract(
11257             p_api_version        IN  NUMBER,
11258             p_init_msg_list      IN  VARCHAR2,
11259             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
11260             x_return_status      OUT NOCOPY VARCHAR2,
11261             x_msg_count          OUT NOCOPY NUMBER,
11262             x_msg_data           OUT NOCOPY VARCHAR2,
11263             x_chr_id             OUT NOCOPY NUMBER,
11264             x_chr_number         OUT NOCOPY VARCHAR2)
11265   IS
11266     -- Variables Declarations
11267     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
11268     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'CREATE_CONTRACT';
11269     l_return_status            VARCHAR2(1);
11270 
11271     --Cursor to obtain the details of lease quote line of Lease App
11272     CURSOR l_lap_dtls_csr(p_lap_id NUMBER)
11273 	IS
11274       SELECT LAB.REFERENCE_NUMBER REFERENCE_NUMBER
11275            , LAB.LEASE_OPPORTUNITY_ID LEASE_OPPORTUNITY_ID
11276       FROM OKL_LEASE_APPLICATIONS_B LAB
11277       WHERE LAB.ID  = p_lap_id;
11278     l_lap_dtls_rec l_lap_dtls_csr%ROWTYPE;
11279 
11280   BEGIN
11281     l_return_status := OKL_API.G_RET_STS_SUCCESS;
11282     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CREATE_CONTRACT';
11283 
11284     -- check for logging on PROCEDURE level
11285     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
11286     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
11287     -- check for logging on STATEMENT level
11288     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
11289 
11290     -- call START_ACTIVITY to create savepoint, check compatibility
11291     -- and initialize message list
11292     l_return_status := OKL_API.START_ACTIVITY(
11293                            p_api_name      => l_api_name
11294                           ,p_pkg_name      => G_PKG_NAME
11295                           ,p_init_msg_list => p_init_msg_list
11296                           ,l_api_version   => l_api_version
11297                           ,p_api_version   => p_api_version
11298                           ,p_api_type      => G_API_TYPE
11299                           ,x_return_status => l_return_status);
11300 
11301     -- check if activity started successfully
11302     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11303       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11304     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11305       RAISE OKL_API.G_EXCEPTION_ERROR;
11306     END IF;
11307 
11308     --Obtain the details of Lease App
11309     OPEN l_lap_dtls_csr(p_lap_id);
11310     FETCH l_lap_dtls_csr INTO l_lap_dtls_rec;
11311     CLOSE l_lap_dtls_csr;
11312 
11313     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11314     THEN
11315       OKL_DEBUG_PUB.LOG_DEBUG(
11316           FND_LOG.LEVEL_PROCEDURE
11317          ,L_MODULE
11318          ,'begin debug call OKL_QUOTE_TO_CONTRACT_PVT.CREATE_CONTRACT');
11319     END IF;
11320 
11321     OKL_QUOTE_TO_CONTRACT_PVT.CREATE_CONTRACT(
11322         p_api_version            => p_api_version
11323        ,p_init_msg_list          => OKL_API.G_FALSE
11324        ,x_return_status          => l_return_status
11325        ,x_msg_count              => x_msg_count
11326        ,x_msg_data               => x_msg_data
11327        ,p_contract_number        => NULL -- Bug#9356216 - null passed so that OKC Autonumbering would be used
11328        ,p_parent_object_code     => 'LEASEAPP'
11329        ,p_parent_object_id       => p_lap_id
11330        ,x_chr_id                 => x_chr_id
11331        ,x_contract_number	     => x_chr_number);
11332 
11333     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11334     THEN
11335       OKL_DEBUG_PUB.LOG_DEBUG(
11336           FND_LOG.LEVEL_PROCEDURE
11337          ,L_MODULE
11338          ,'end debug call OKL_QUOTE_TO_CONTRACT_PVT.CREATE_CONTRACT');
11339     END IF;
11340 
11341     -- write to log
11342     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11343       OKL_DEBUG_PUB.LOG_DEBUG(
11344           FND_LOG.LEVEL_STATEMENT
11345          ,L_MODULE || ' Result of OKL_QUOTE_TO_CONTRACT_PVT.CREATE_CONTRACT'
11346          ,' return status ' || l_return_status);
11347     END IF; -- end of statement level debug
11348 
11349     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11350       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11351     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11352       RAISE OKL_API.G_EXCEPTION_ERROR;
11353     END IF;
11354     --End of create contract API call
11355 
11356     x_return_status := l_return_status;
11357     OKL_API.END_ACTIVITY(
11358          x_msg_count    => x_msg_count
11359         ,x_msg_data	    => x_msg_data);
11360   EXCEPTION
11361     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11362       --Check if Lease App cursor is open
11363       IF l_lap_dtls_csr%ISOPEN
11364       THEN
11365         CLOSE l_lap_dtls_csr;
11366       END IF;
11367       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11368                            p_api_name  => l_api_name,
11369                            p_pkg_name  => G_PKG_NAME,
11370                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
11371                            x_msg_count => x_msg_count,
11372                            x_msg_data  => x_msg_data,
11373                            p_api_type  => G_API_TYPE);
11374     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11375       --Check if Lease App cursor is open
11376       IF l_lap_dtls_csr%ISOPEN
11377       THEN
11378         CLOSE l_lap_dtls_csr;
11379       END IF;
11380       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11381                            p_api_name  => l_api_name,
11382                            p_pkg_name  => G_PKG_NAME,
11383                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
11384                            x_msg_count => x_msg_count,
11385                            x_msg_data  => x_msg_data,
11386                            p_api_type  => G_API_TYPE);
11387     WHEN OTHERS THEN
11388       --Check if Lease App cursor is open
11389       IF l_lap_dtls_csr%ISOPEN
11390       THEN
11391         CLOSE l_lap_dtls_csr;
11392       END IF;
11393       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11394                            p_api_name  => l_api_name,
11395                            p_pkg_name  => G_PKG_NAME,
11396                            p_exc_name  => 'OTHERS',
11397                            x_msg_count => x_msg_count,
11398                            x_msg_data  => x_msg_data,
11399                            p_api_type  => G_API_TYPE);
11400   END create_contract;
11401 
11402   --Bug 4872271 PAGARG Added function to set Appeal Flag for recommendations
11403   ------------------------------------------------------------------------------
11404   -- PROCEDURE appeal_recommendations
11405   ------------------------------------------------------------------------------
11406   -- Start of comments
11407   --
11408   -- Procedure Name  : appeal_recommendations
11409   -- Description     : This procedure sets the appeal flag for credit recommendations
11410   --                   of parent lease app of given lease application
11411   -- Business Rules  : This procedure sets the appeal flag for credit recommendations
11412   --                   of parent lease app of given lease application
11413   -- Parameters      :
11414   -- Version         : 1.0
11415   -- History         : 28-Mar-2006 PAGARG created Bug 4872271
11416   --
11417   -- End of comments
11418   PROCEDURE appeal_recommendations(
11419             p_api_version        IN  NUMBER,
11420             p_init_msg_list      IN  VARCHAR2,
11421             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
11422             p_cr_dec_apl_flag    IN  VARCHAR2,
11423             p_exp_date_apl_flag  IN  VARCHAR2,
11424             p_cr_conds           IN  NAME_VAL_TBL_TYPE,
11425             p_addl_rcmnds        IN  NAME_VAL_TBL_TYPE,
11426             x_return_status      OUT NOCOPY VARCHAR2,
11427             x_msg_count          OUT NOCOPY NUMBER,
11428             x_msg_data           OUT NOCOPY VARCHAR2)
11429   IS
11430     -- Variables Declarations
11431     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
11432     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'APPEAL_RECOMMENDATIONS';
11433     l_return_status            VARCHAR2(1);
11434     i                          NUMBER;
11435     recom_count                NUMBER;
11436     process_chklst             BOOLEAN;
11437     approve                    BOOLEAN;
11438 
11439     -- Record/Table Type Declarations
11440     l_cldv_tbl OKL_CLD_PVT.CLDV_TBL_TYPE;
11441     x_cldv_tbl OKL_CLD_PVT.CLDV_TBL_TYPE;
11442     l_appealing_reco_tbl OCM_RECOMMENDATIONS_PUB.APPEALING_RECO_TBL;
11443 
11444     --Cursor to obtain Credit Recommendation details
11445     CURSOR credit_recom_csr(cp_lap_id NUMBER, cp_recom_id NUMBER, cp_cr_recom VARCHAR2)
11446     IS
11447       SELECT RCM.RECOMMENDATION_ID
11448            , RCM.CASE_FOLDER_ID
11449            , RCM.CREDIT_REQUEST_ID
11450            , RCM.CREDIT_RECOMMENDATION
11451            , RCM.RECOMMENDATION_NAME
11452            , RCM.APPEALED_FLAG
11453       FROM AR_CMGT_CF_RECOMMENDS RCM
11454          , AR_CMGT_CREDIT_REQUESTS CCR
11455       WHERE RCM.CREDIT_REQUEST_ID = CCR.CREDIT_REQUEST_ID
11456         AND RCM.CREDIT_RECOMMENDATION = NVL(cp_cr_recom, RCM.CREDIT_RECOMMENDATION)
11457         AND RCM.RECOMMENDATION_ID = NVL(cp_recom_id, RCM.RECOMMENDATION_ID)
11458         AND CCR.SOURCE_COLUMN3 = 'LEASEAPP'
11459         AND CCR.SOURCE_COLUMN1 = cp_lap_id;
11460     credit_recom_rec credit_recom_csr%ROWTYPE;
11461 
11462     --Cursor to obtain Credit Request details of Parent Lease Application
11463     CURSOR crd_app_data_csr(cp_lap_id NUMBER)
11464     IS
11465       SELECT CCR.CREDIT_REQUEST_ID
11466            , CCR.APPLICATION_NUMBER
11467            , CCR.TRX_AMOUNT
11468            , CCR.TRX_CURRENCY
11469            , CCR.STATUS
11470            , CCR.RECOMMENDATION_NAME
11471            , CCR.SOURCE_COLUMN1
11472            , CCR.SOURCE_COLUMN2
11473            , CCR.REVIEW_TYPE
11474            , CCR.CREDIT_CLASSIFICATION
11475            , CCR.CUST_ACCOUNT_ID
11476            , LAB.PARENT_LEASEAPP_ID PARENT_LEASEAPP_ID
11477       FROM AR_CMGT_CREDIT_REQUESTS CCR
11478          , OKL_LEASE_APPLICATIONS_B LAB
11479       WHERE SOURCE_COLUMN3 = 'LEASEAPP'
11480         AND SOURCE_COLUMN1 = LAB.PARENT_LEASEAPP_ID
11481         AND LAB.ID = cp_lap_id;
11482     crd_app_data_rec crd_app_data_csr%ROWTYPE;
11483   BEGIN
11484     l_return_status := OKL_API.G_RET_STS_SUCCESS;
11485     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.APPEAL_RECOMMENDATIONS';
11486 
11487     -- check for logging on PROCEDURE level
11488     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
11489     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
11490     -- check for logging on STATEMENT level
11491     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
11492 
11493     -- call START_ACTIVITY to create savepoint, check compatibility
11494     -- and initialize message list
11495     l_return_status := OKL_API.START_ACTIVITY(
11496                            p_api_name      => l_api_name
11497                           ,p_pkg_name      => G_PKG_NAME
11498                           ,p_init_msg_list => p_init_msg_list
11499                           ,l_api_version   => l_api_version
11500                           ,p_api_version   => p_api_version
11501                           ,p_api_type      => G_API_TYPE
11502                           ,x_return_status => l_return_status);
11503 
11504     -- check if activity started successfully
11505     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11506       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11507     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11508       RAISE OKL_API.G_EXCEPTION_ERROR;
11509     END IF;
11510 
11511     OPEN crd_app_data_csr(p_lap_id);
11512     FETCH crd_app_data_csr INTO crd_app_data_rec;
11513     CLOSE crd_app_data_csr;
11514 
11515     process_chklst := FALSE;
11516     IF(p_cr_conds.COUNT > 0)
11517     THEN
11518       i := p_cr_conds.FIRST;
11519       LOOP
11520         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11521         THEN
11522           OKL_DEBUG_PUB.LOG_DEBUG(
11523               FND_LOG.LEVEL_PROCEDURE
11524              ,L_MODULE
11525              ,'begin debug call POP_CHECKLIST_ITEM');
11526         END IF;
11527 
11528         POP_CHECKLIST_ITEM(
11529             p_api_version           => p_api_version
11530            ,p_init_msg_list         => OKL_API.G_FALSE
11531            ,p_cld_id                => p_cr_conds(i).itm_name
11532            ,x_cldv_rec              => l_cldv_tbl(i)
11533            ,x_return_status         => l_return_status
11534            ,x_msg_count             => x_msg_count
11535            ,x_msg_data              => x_msg_data);
11536 
11537         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11538         THEN
11539           OKL_DEBUG_PUB.LOG_DEBUG(
11540               FND_LOG.LEVEL_PROCEDURE
11541              ,L_MODULE
11542              ,'end debug call POP_CHECKLIST_ITEM');
11543         END IF;
11544 
11545         -- write to log
11546         IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11547           OKL_DEBUG_PUB.LOG_DEBUG(
11548               FND_LOG.LEVEL_STATEMENT
11549              ,L_MODULE || ' Result of POP_CHECKLIST_ITEM'
11550              ,'l_return_status ' || l_return_status);
11551         END IF; -- end of statement level debug
11552 
11553         IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11554           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11555         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11556           RAISE OKL_API.G_EXCEPTION_ERROR;
11557         END IF;
11558 
11559         l_cldv_tbl(i).appeal_flag := p_cr_conds(i).itm_value;
11560         IF(l_cldv_tbl(i).appeal_flag = 'Y')
11561         THEN
11562           process_chklst := TRUE;
11563         END IF;
11564 
11565         EXIT WHEN (i = p_cr_conds.LAST);
11566         i := p_cr_conds.NEXT(i);
11567       END LOOP;
11568 
11569       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11570       THEN
11571         OKL_DEBUG_PUB.LOG_DEBUG(
11572             FND_LOG.LEVEL_PROCEDURE
11573            ,L_MODULE
11574            ,'begin debug call OKL_CHECKLIST_PVT.UPD_CHKLST_DTL_APL_FLAG');
11575       END IF;
11576 
11577       OKL_CHECKLIST_PVT.UPD_CHKLST_DTL_APL_FLAG(
11578           p_api_version           => p_api_version
11579          ,p_init_msg_list         => OKL_API.G_FALSE
11580          ,x_return_status         => l_return_status
11581          ,x_msg_count             => x_msg_count
11582          ,x_msg_data              => x_msg_data
11583          ,p_cldv_tbl              => l_cldv_tbl
11584          ,x_cldv_tbl              => x_cldv_tbl);
11585 
11586    	  IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11587       THEN
11588         OKL_DEBUG_PUB.LOG_DEBUG(
11589             FND_LOG.LEVEL_PROCEDURE
11590            ,L_MODULE
11591            ,'end debug call OKL_CHECKLIST_PVT.UPD_CHKLST_DTL_APL_FLAG');
11592       END IF;
11593 
11594       -- write to log
11595       IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11596         OKL_DEBUG_PUB.LOG_DEBUG(
11597             FND_LOG.LEVEL_STATEMENT
11598            ,L_MODULE || ' Result of OKL_CHECKLIST_PVT.UPD_CHKLST_DTL_APL_FLAG'
11599            ,'l_return_status ' || l_return_status);
11600       END IF; -- end of statement level debug
11601 
11602       IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11603         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11604       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11605         RAISE OKL_API.G_EXCEPTION_ERROR;
11606       END IF;
11607     END IF;--If check for credit conditions table count check
11608 
11609     recom_count := 1;
11610     --Process Credit Decision Recommendation
11611     IF(p_cr_dec_apl_flag = 'Y')
11612     THEN
11613       approve := TRUE;
11614       --Fetch the details for the given recommendation id and populate
11615       --appealing recommendation table
11616       OPEN credit_recom_csr(crd_app_data_rec.parent_leaseapp_id, NULL, 'APPROVE');
11617       FETCH credit_recom_csr INTO credit_recom_rec;
11618         IF(credit_recom_csr%NOTFOUND)
11619         THEN
11620           approve := FALSE;
11621         END IF;
11622       CLOSE credit_recom_csr;
11623       IF(NOT approve)
11624       THEN
11625         OPEN credit_recom_csr(crd_app_data_rec.parent_leaseapp_id, NULL, 'REJECT');
11626         FETCH credit_recom_csr INTO credit_recom_rec;
11627         CLOSE credit_recom_csr;
11628       END IF;
11629       l_appealing_reco_tbl(recom_count).recommendation_id := credit_recom_rec.recommendation_id;
11630       l_appealing_reco_tbl(recom_count).credit_recommendation := credit_recom_rec.credit_recommendation;
11631       l_appealing_reco_tbl(recom_count).recommendation_name := credit_recom_rec.recommendation_name;
11632       recom_count := recom_count + 1;
11633     END IF;
11634     --Process Expiration Days Recommendation
11635     IF(p_exp_date_apl_flag = 'Y')
11636     THEN
11637       --Fetch the details for the given recommendation id and populate
11638       --appealing recommendation table
11639       OPEN credit_recom_csr(crd_app_data_rec.parent_leaseapp_id, NULL, 'EXPIRATION_DATE');
11640       FETCH credit_recom_csr INTO credit_recom_rec;
11641         IF(credit_recom_csr%FOUND)
11642         THEN
11643           l_appealing_reco_tbl(recom_count).recommendation_id := credit_recom_rec.recommendation_id;
11644           l_appealing_reco_tbl(recom_count).credit_recommendation := credit_recom_rec.credit_recommendation;
11645           l_appealing_reco_tbl(recom_count).recommendation_name := credit_recom_rec.recommendation_name;
11646           recom_count := recom_count + 1;
11647         END IF;
11648       CLOSE credit_recom_csr;
11649     END IF;
11650     --Process Checklist Recommendation
11651     IF(process_chklst)
11652     THEN
11653       --Fetch the details for the given recommendation id and populate
11654       --appealing recommendation table
11655       OPEN credit_recom_csr(crd_app_data_rec.parent_leaseapp_id, NULL, 'CHECKLIST');
11656       FETCH credit_recom_csr INTO credit_recom_rec;
11657         IF(credit_recom_csr%FOUND)
11658         THEN
11659           l_appealing_reco_tbl(recom_count).recommendation_id := credit_recom_rec.recommendation_id;
11660           l_appealing_reco_tbl(recom_count).credit_recommendation := credit_recom_rec.credit_recommendation;
11661           l_appealing_reco_tbl(recom_count).recommendation_name := credit_recom_rec.recommendation_name;
11662           recom_count := recom_count + 1;
11663         END IF;
11664       CLOSE credit_recom_csr;
11665     END IF;
11666 
11667     --Loop through the additional recommends flag and populate the recommendations
11668     --table to be passed to OCM
11669     IF(p_addl_rcmnds.COUNT > 0)
11670     THEN
11671       i := p_addl_rcmnds.FIRST;
11672       LOOP
11673         IF(p_addl_rcmnds(i).itm_value = 'Y')
11674         THEN
11675           --Fetch the details for the given recommendation id and populate
11676           --appealing recommendation table
11677           OPEN credit_recom_csr(crd_app_data_rec.parent_leaseapp_id, p_addl_rcmnds(i).itm_name, NULL);
11678           FETCH credit_recom_csr INTO credit_recom_rec;
11679             IF(credit_recom_csr%FOUND)
11680             THEN
11681               l_appealing_reco_tbl(recom_count).recommendation_id := credit_recom_rec.recommendation_id;
11682               l_appealing_reco_tbl(recom_count).credit_recommendation := credit_recom_rec.credit_recommendation;
11683               l_appealing_reco_tbl(recom_count).recommendation_name := credit_recom_rec.recommendation_name;
11684               recom_count := recom_count + 1;
11685             END IF;
11686           CLOSE credit_recom_csr;
11687         END IF;
11688         EXIT WHEN (i = p_addl_rcmnds.LAST);
11689         i := p_addl_rcmnds.NEXT(i);
11690       END LOOP;
11691     END IF;--If check for additional recommendations table count
11692 
11693     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11694     THEN
11695       OKL_DEBUG_PUB.LOG_DEBUG(
11696           FND_LOG.LEVEL_PROCEDURE
11697          ,L_MODULE
11698          ,'begin debug call OCM_RECOMMENDATIONS_PUB.MARK_APPEAL');
11699     END IF;
11700 
11701     OCM_RECOMMENDATIONS_PUB.MARK_APPEAL(
11702         p_api_version           => p_api_version
11703        ,p_init_msg_list         => OKL_API.G_FALSE
11704        ,p_commit                => NULL
11705        ,p_validation_level      => NULL
11706        ,p_credit_request_id     => crd_app_data_rec.credit_request_id
11707        ,p_case_folder_id        => NULL
11708        ,p_appealing_reco_tbl    => l_appealing_reco_tbl
11709        ,x_return_status         => l_return_status
11710        ,x_msg_count             => x_msg_count
11711        ,x_msg_data              => x_msg_data);
11712 
11713    	IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11714     THEN
11715       OKL_DEBUG_PUB.LOG_DEBUG(
11716           FND_LOG.LEVEL_PROCEDURE
11717          ,L_MODULE
11718          ,'end debug call OCM_RECOMMENDATIONS_PUB.MARK_APPEAL');
11719     END IF;
11720 
11721     -- write to log
11722     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11723       OKL_DEBUG_PUB.LOG_DEBUG(
11724           FND_LOG.LEVEL_STATEMENT
11725          ,L_MODULE || ' Result of OCM_RECOMMENDATIONS_PUB.MARK_APPEAL'
11726          ,'l_return_status ' || l_return_status);
11727     END IF; -- end of statement level debug
11728 
11729     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)THEN
11730       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11731     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)THEN
11732       RAISE OKL_API.G_EXCEPTION_ERROR;
11733     END IF;
11734 
11735     x_return_status := l_return_status;
11736     OKL_API.END_ACTIVITY(
11737          x_msg_count    => x_msg_count
11738         ,x_msg_data	    => x_msg_data);
11739   EXCEPTION
11740     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11741       --Credit Recommendation Details Cursor
11742       IF credit_recom_csr%ISOPEN
11743       THEN
11744         CLOSE credit_recom_csr;
11745       END IF;
11746       --Credit Request Details Cursor
11747       IF crd_app_data_csr%ISOPEN
11748       THEN
11749         CLOSE crd_app_data_csr;
11750       END IF;
11751       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11752                            p_api_name  => l_api_name,
11753                            p_pkg_name  => G_PKG_NAME,
11754                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
11755                            x_msg_count => x_msg_count,
11756                            x_msg_data  => x_msg_data,
11757                            p_api_type  => G_API_TYPE);
11758 
11759     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11760       --Credit Recommendation Details Cursor
11761       IF credit_recom_csr%ISOPEN
11762       THEN
11763         CLOSE credit_recom_csr;
11764       END IF;
11765       --Credit Request Details Cursor
11766       IF crd_app_data_csr%ISOPEN
11767       THEN
11768         CLOSE crd_app_data_csr;
11769       END IF;
11770       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11771                            p_api_name  => l_api_name,
11772                            p_pkg_name  => G_PKG_NAME,
11773                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
11774                            x_msg_count => x_msg_count,
11775                            x_msg_data  => x_msg_data,
11776                            p_api_type  => G_API_TYPE);
11777     WHEN OTHERS THEN
11778       --Credit Recommendation Details Cursor
11779       IF credit_recom_csr%ISOPEN
11780       THEN
11781         CLOSE credit_recom_csr;
11782       END IF;
11783       --Credit Request Details Cursor
11784       IF crd_app_data_csr%ISOPEN
11785       THEN
11786         CLOSE crd_app_data_csr;
11787       END IF;
11788       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11789                            p_api_name  => l_api_name,
11790                            p_pkg_name  => G_PKG_NAME,
11791                            p_exc_name  => 'OTHERS',
11792                            x_msg_count => x_msg_count,
11793                            x_msg_data  => x_msg_data,
11794                            p_api_type  => G_API_TYPE);
11795   END appeal_recommendations;
11796 
11797   ------------------------------------------------------------------------------
11798   -- PROCEDURE create_contract_val
11799   ------------------------------------------------------------------------------
11800   -- Start of comments
11801   --
11802   -- Procedure Name  : create_contract_val
11803   -- Description     : This procedure validates the contract creation from given
11804   --                   lease app.
11805   -- Business Rules  : This procedure validates the contract creation from given
11806   --                   lease app.
11807   -- Parameters      :
11808   -- Version         : 1.0
11809   -- History         : 06-Apr-2006 PAGARG created Bug 5115741
11810    --                   24-Apr-2009 nikshah Bug 7140398
11811   -- End of comments
11812   PROCEDURE create_contract_val(
11813             p_api_version        IN  NUMBER,
11814             p_init_msg_list      IN  VARCHAR2,
11815             p_lap_id             IN  OKL_LEASE_APPLICATIONS_B.ID%TYPE,
11816             x_return_status      OUT NOCOPY VARCHAR2,
11817             x_msg_count          OUT NOCOPY NUMBER,
11818             x_msg_data           OUT NOCOPY VARCHAR2)
11819   IS
11820     -- Variables Declarations
11821     l_api_version     CONSTANT NUMBER       DEFAULT G_INIT_VERSION;
11822     l_api_name        CONSTANT VARCHAR2(30) DEFAULT 'CREATE_CONTRACT_VAL';
11823     l_return_status            VARCHAR2(1);
11824 
11825     --Cursor to obtain the details of lease quote line of Lease App
11826     CURSOR l_lap_dtls_csr(p_lap_id NUMBER)
11827 	IS
11828       SELECT LAB.REFERENCE_NUMBER REFERENCE_NUMBER
11829            , LAB.LEASE_OPPORTUNITY_ID LEASE_OPPORTUNITY_ID
11830       FROM OKL_LEASE_APPLICATIONS_B LAB
11831       WHERE LAB.ID  = p_lap_id;
11832     l_lap_dtls_rec l_lap_dtls_csr%ROWTYPE;
11833 
11834     --Cursor to check if contract already created from lease opp linked to lease app
11835     --through another Lease App
11836     CURSOR l_uniq_contract_csr(p_lap_id NUMBER)
11837 	IS
11838       SELECT LAB.REFERENCE_NUMBER LSE_APP
11839            , LOP.REFERENCE_NUMBER LSE_OPP
11840            , CHR.CONTRACT_NUMBER CONTRACT_NUMBER
11841       FROM OKL_LEASE_APPLICATIONS_B LAB
11842          , OKL_LEASE_APPLICATIONS_B CLAB
11843          , OKL_LEASE_OPPORTUNITIES_B LOP
11844          , OKC_K_HEADERS_B CHR
11845          , OKC_STATUSES_V CSTS
11846       WHERE LAB.LEASE_OPPORTUNITY_ID = CLAB.LEASE_OPPORTUNITY_ID
11847         AND LOP.ID = LAB.LEASE_OPPORTUNITY_ID
11848         AND LAB.ID <> CLAB.ID
11849         AND LAB.APPLICATION_STATUS = 'CONV-K'
11850         AND LAB.ID = CHR.ORIG_SYSTEM_ID1
11851         AND CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_LEASE_APP'
11852         AND CHR.STS_CODE = CSTS.CODE
11853         AND CSTS.STE_CODE <> 'CANCELLED'
11854         AND CLAB.ID = p_lap_id;
11855     l_uniq_contract_rec l_uniq_contract_csr%ROWTYPE;
11856 
11857     --Cursor to check if contract already created directly from lease opp which
11858 	--is linked to lease app
11859     CURSOR l_uniq_qte_contract_csr(p_lap_id NUMBER)
11860 	IS
11861       SELECT LSQ.REFERENCE_NUMBER LSE_QTE
11862            , LOP.REFERENCE_NUMBER LSE_OPP
11863            , CHR.CONTRACT_NUMBER CONTRACT_NUMBER
11864       FROM OKL_LEASE_QUOTES_B LSQ
11865          , OKL_LEASE_APPLICATIONS_B CLAB
11866          , OKL_LEASE_OPPORTUNITIES_B LOP
11867          , OKC_K_HEADERS_B CHR
11868          , OKC_STATUSES_V CSTS
11869       WHERE LOP.ID = CLAB.LEASE_OPPORTUNITY_ID
11870         AND CHR.ORIG_SYSTEM_ID1 = LOP.ID
11871         AND CHR.ORIG_SYSTEM_SOURCE_CODE = 'OKL_QUOTE'
11872         AND CSTS.CODE = CHR.STS_CODE
11873         AND CSTS.STE_CODE <> 'CANCELLED'
11874         AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
11875         AND LSQ.PARENT_OBJECT_ID = LOP.ID
11876         AND LSQ.STATUS = 'CT-ACCEPTED'
11877         AND CLAB.ID = p_lap_id;
11878     l_uniq_qte_contract_rec l_uniq_qte_contract_csr%ROWTYPE;
11879   BEGIN
11880     l_return_status := OKL_API.G_RET_STS_SUCCESS;
11881     L_MODULE := 'OKL.PLSQL.OKL_LEASE_APP_PVT.CREATE_CONTRACT_VAL';
11882 
11883     -- check for logging on PROCEDURE level
11884     L_DEBUG_ENABLED := NVL(OKL_DEBUG_PUB.CHECK_LOG_ENABLED, 'N');
11885     IS_DEBUG_PROCEDURE_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_PROCEDURE), FALSE);
11886     -- check for logging on STATEMENT level
11887     IS_DEBUG_STATEMENT_ON := NVL(OKL_DEBUG_PUB.CHECK_LOG_ON(L_MODULE, FND_LOG.LEVEL_STATEMENT), FALSE);
11888 
11889     -- call START_ACTIVITY to create savepoint, check compatibility
11890     -- and initialize message list
11891     l_return_status := OKL_API.START_ACTIVITY(
11892                            p_api_name      => l_api_name
11893                           ,p_pkg_name      => G_PKG_NAME
11894                           ,p_init_msg_list => p_init_msg_list
11895                           ,l_api_version   => l_api_version
11896                           ,p_api_version   => p_api_version
11897                           ,p_api_type      => G_API_TYPE
11898                           ,x_return_status => l_return_status);
11899 
11900     -- check if activity started successfully
11901     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11902       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11903     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
11904       RAISE OKL_API.G_EXCEPTION_ERROR;
11905     END IF;
11906 
11907          -- ER# 7140398 - Start
11908          -- Do not allow conversion to contract in case the primary quote is Credit Declined.
11909          IF (is_primary_quote_declined(p_lap_id)) THEN
11910        l_return_status := OKL_API.G_RET_STS_ERROR;
11911        OKL_API.SET_MESSAGE(
11912              p_app_name      => G_APP_NAME,
11913              p_msg_name      => 'OKL_SO_DEC_OFFER_TO_CHR_ERR');
11914        RAISE OKL_API.G_EXCEPTION_ERROR;
11915          END IF;
11916          -- Bug# 7140398 - End
11917 
11918     --Obtain the details of Lease App
11919     OPEN l_lap_dtls_csr(p_lap_id);
11920     FETCH l_lap_dtls_csr INTO l_lap_dtls_rec;
11921     CLOSE l_lap_dtls_csr;
11922 
11923     --Validate that only one contract being created from source Lease Opp through
11924     --any Lease App
11925     OPEN l_uniq_contract_csr(p_lap_id);
11926     FETCH l_uniq_contract_csr INTO l_uniq_contract_rec;
11927       IF l_uniq_contract_csr%FOUND
11928       THEN
11929         l_return_status := OKL_API.G_RET_STS_ERROR;
11930         OKL_API.SET_MESSAGE(
11931             p_app_name      => G_APP_NAME,
11932             p_msg_name      => 'OKL_SO_LSE_APP_DUP_CRE_CON_ERR',
11933             p_token1        => 'LSE_OPP',
11934             p_token1_value  => l_uniq_contract_rec.lse_opp,
11935             p_token2        => 'CONTRACT',
11936             p_token2_value  => l_uniq_contract_rec.contract_number,
11937             p_token3        => 'LSE_APP',
11938             p_token3_value  => l_uniq_contract_rec.lse_app);
11939         RAISE OKL_API.G_EXCEPTION_ERROR;
11940       END IF;
11941     CLOSE l_uniq_contract_csr;
11942 
11943     --Validate that only one contract being created from source Lease Opp through
11944     --accepted Lease Quote
11945     OPEN l_uniq_qte_contract_csr(p_lap_id);
11946     FETCH l_uniq_qte_contract_csr INTO l_uniq_qte_contract_rec;
11947       IF l_uniq_qte_contract_csr%FOUND
11948       THEN
11949         l_return_status := OKL_API.G_RET_STS_ERROR;
11950         OKL_API.SET_MESSAGE(
11951             p_app_name      => G_APP_NAME,
11952             p_msg_name      => 'OKL_SO_LSE_QTE_DUP_CRE_CON_ERR',
11953             p_token1        => 'LSE_OPP',
11954             p_token1_value  => l_uniq_qte_contract_rec.lse_opp,
11955             p_token2        => 'CONTRACT',
11956             p_token2_value  => l_uniq_qte_contract_rec.contract_number,
11957             p_token3        => 'LSE_QTE',
11958             p_token3_value  => l_uniq_qte_contract_rec.lse_qte);
11959         RAISE OKL_API.G_EXCEPTION_ERROR;
11960       END IF;
11961     CLOSE l_uniq_qte_contract_csr;
11962 
11963     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11964     THEN
11965       OKL_DEBUG_PUB.LOG_DEBUG(
11966           FND_LOG.LEVEL_PROCEDURE
11967          ,L_MODULE
11968          ,'begin debug call CHECK_ELIGIBILITY');
11969     END IF;
11970 
11971     --call the procedure to Validate Create Contract action on lease app
11972     CHECK_ELIGIBILITY(
11973         p_api_version     => p_api_version
11974        ,p_init_msg_list   => OKL_API.G_FALSE
11975        ,x_return_status   => l_return_status
11976        ,x_msg_count       => x_msg_count
11977        ,x_msg_data        => x_msg_data
11978        ,p_lap_id          => p_lap_id
11979        ,p_action          => 'CRECON');
11980 
11981     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_PROCEDURE_ON)
11982     THEN
11983       OKL_DEBUG_PUB.LOG_DEBUG(
11984           FND_LOG.LEVEL_PROCEDURE
11985          ,L_MODULE
11986          ,'end debug call CHECK_ELIGIBILITY');
11987     END IF;
11988 
11989     -- write to log
11990     IF(L_DEBUG_ENABLED = 'Y' AND IS_DEBUG_STATEMENT_ON) THEN
11991       OKL_DEBUG_PUB.LOG_DEBUG(
11992           FND_LOG.LEVEL_STATEMENT
11993          ,L_MODULE || ' Result of CHECK_ELIGIBILITY'
11994          ,'return status ' || l_return_status ||
11995           ' x_msg_data ' || x_msg_data);
11996     END IF; -- end of statement level debug
11997 
11998     IF(l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11999       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12000     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12001       RAISE OKL_API.G_EXCEPTION_ERROR;
12002     END IF;
12003 
12004     x_return_status := l_return_status;
12005     OKL_API.END_ACTIVITY(
12006          x_msg_count    => x_msg_count
12007         ,x_msg_data	    => x_msg_data);
12008   EXCEPTION
12009     WHEN OKL_API.G_EXCEPTION_ERROR THEN
12010       --Check if Lease App cursor is open
12011       IF l_lap_dtls_csr%ISOPEN
12012       THEN
12013         CLOSE l_lap_dtls_csr;
12014       END IF;
12015       --Check if Unique Contract cursor is open
12016       IF l_uniq_contract_csr%ISOPEN
12017       THEN
12018         CLOSE l_uniq_contract_csr;
12019       END IF;
12020       --Check if Unique Contract from quote cursor is open
12021       IF l_uniq_qte_contract_csr%ISOPEN
12022       THEN
12023         CLOSE l_uniq_qte_contract_csr;
12024       END IF;
12025       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12026                            p_api_name  => l_api_name,
12027                            p_pkg_name  => G_PKG_NAME,
12028                            p_exc_name  => 'OKL_API.G_RET_STS_ERROR',
12029                            x_msg_count => x_msg_count,
12030                            x_msg_data  => x_msg_data,
12031                            p_api_type  => G_API_TYPE);
12032     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12033       --Check if Lease App cursor is open
12034       IF l_lap_dtls_csr%ISOPEN
12035       THEN
12036         CLOSE l_lap_dtls_csr;
12037       END IF;
12038       --Check if Unique Contract cursor is open
12039       IF l_uniq_contract_csr%ISOPEN
12040       THEN
12041         CLOSE l_uniq_contract_csr;
12042       END IF;
12043       --Check if Unique Contract from quote cursor is open
12044       IF l_uniq_qte_contract_csr%ISOPEN
12045       THEN
12046         CLOSE l_uniq_qte_contract_csr;
12047       END IF;
12048       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12049                            p_api_name  => l_api_name,
12050                            p_pkg_name  => G_PKG_NAME,
12051                            p_exc_name  => 'OKL_API.G_RET_STS_UNEXP_ERROR',
12052                            x_msg_count => x_msg_count,
12053                            x_msg_data  => x_msg_data,
12054                            p_api_type  => G_API_TYPE);
12055     WHEN OTHERS THEN
12056       --Check if Lease App cursor is open
12057       IF l_lap_dtls_csr%ISOPEN
12058       THEN
12059         CLOSE l_lap_dtls_csr;
12060       END IF;
12061       --Check if Unique Contract cursor is open
12062       IF l_uniq_contract_csr%ISOPEN
12063       THEN
12064         CLOSE l_uniq_contract_csr;
12065       END IF;
12066       --Check if Unique Contract from quote cursor is open
12067       IF l_uniq_qte_contract_csr%ISOPEN
12068       THEN
12069         CLOSE l_uniq_qte_contract_csr;
12070       END IF;
12071       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12072                            p_api_name  => l_api_name,
12073                            p_pkg_name  => G_PKG_NAME,
12074                            p_exc_name  => 'OTHERS',
12075                            x_msg_count => x_msg_count,
12076                            x_msg_data  => x_msg_data,
12077                            p_api_type  => G_API_TYPE);
12078   END create_contract_val;
12079 
12080 END OKL_LEASE_APP_PVT;