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